OSDN Git Service

* config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-12-09  Ben Elliston  <bje@au.ibm.com>
2
3         * config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
4
5 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
6
7         * config/ia64/ia64.md (UNSPECV_GOTO_RECEIVER): New constant.
8         (nonlocal_goto_receiver): New instruction.
9
10 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
11
12         PR c/35443
13         * c-pretty-print.c (pp_c_expression): Handle BIND_EXPR.
14
15         PR c/35442
16         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
17         VIEW_CONVERT_EXPR the same as CASE_CONVERT.
18
19 2008-12-08  Richard Henderson  <rth@redhat.com>
20
21         PR 38240
22         * tree.h (TYPE_MODE): Invoke vector_type_mode when needed.
23         (SET_TYPE_MODE): New.
24         * c-decl.c (parser_xref_tag): Use it.
25         (finish_enum): Likewise.
26         * tree.c (build_pointer_type_for_mode): Likewise.
27         (build_reference_type_for_mode, build_index_type): Likewise.
28         (build_range_type, make_vector_type): Likewise.
29         (build_common_tree_nodes_2): Likewise.
30         * stor-layout.c (compute_record_mode): Likewise.
31         (finalize_type_size, layout_type, make_fract_type): Likewise.
32         (make_accum_type, initialize_sizetypes): Likewise.
33         (vector_type_mode): New.
34         * function.c (allocate_struct_function): Call
35         invoke_set_current_function_hook before querying anything else.
36
37         * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Add avx.
38
39 2008-12-08  Luis Machado  <luisgpm@br.ibm.com>
40
41         * alias.c (find_base_term): Synch LO_SUM handling with what
42         find_base_value does.
43
44 2008-12-08  Andrew Haley  <aph@redhat.com>
45             Kamaraju Kusumanchi <raju.mailinglists@gmail.com>
46
47         * gimple.h (gimple_build_try): Fix declaration.
48
49         * builtins.c (fold_builtin_sqrt): Don't use a conditional operator.
50         * fixed-value.c (do_fixed_add): Likewise.
51         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
52
53 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
54
55         PR middle-end/36802
56         * omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
57         on parallel and task contexts.
58
59 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
60
61         * gimple.c (recalculate_side_effects) <tcc_constant>: New case.
62
63 2008-12-07  Richard Guenther  <rguenther@suse.de>
64
65         PR tree-optimization/38405
66         * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
67         not sign-extend truth values.
68
69 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
70
71         * tree-sra.c (scalarize_use): Create another temporary with the proper
72         type for signed types in the use_all && !is_output bitfield case.
73
74 2008-12-06  Steven Bosscher  <steven@gcc.gnu.org>
75
76         PR rtl-optimization/36365
77         * df-core.c (df_worklist_dataflow_overeager): Remove.
78         (df_worklist_dataflow): Don't call it, use double-queue only.
79         * params.def (PARAM_DF_DOUBLE_QUQUQ_THRESHOLD_FACTOR): Remove.
80
81 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
82
83         PR middle-end/38428
84         * tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
85         gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
86
87 2008-12-07  Ben Elliston  <bje@au.ibm.com>
88
89         * gthr-single.h (__gthread_once): Adjust prototype to match all
90         other gthreads models.
91
92 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
93
94         * config/i386/i386.c (override_options): Use CPU_AMDFAM10
95         instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
96
97         PR middle-end/38422
98         * fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
99         operands to mult_type if it isn't narrower than op0's type.
100
101 2008-12-06  Jan Hubicka  <jh@suse.cz>
102             Jakub Jelinek <jakub@redhat.com>
103
104         PR tree-optimization/38074
105         * cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
106         entry frequency.
107         * predict.c (combine_predictions_for_bb): Ignore predictor predicting
108         in both dirrection for first match heuristics.
109         (tree_bb_level_predictions): Disable noreturn heuristic when there
110         is no returning path.
111
112 2008-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
113
114         PR rtl-optimization/38272
115         * reload1.c (choose_reload_regs): Keep reload_spill_index correct
116         in all cases.
117
118 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
119
120         PR c++/35336
121         * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
122         (pp_c_expression): Likewise.
123
124 2008-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
125
126         PR c/38416
127         * c-parser.c (struct c_token): Make pragma_kind 8 bits.
128
129 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
130
131         PR middle-end/37248
132         * fold-const.c (make_bit_field_ref): Change bitpos and bitsize
133         arguments to HOST_WIDE_INT.  If type has different signedness
134         than unsignedp or different precision from bitsize, create
135         the right type for BIT_FIELD_REF and cast to type.
136         (fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
137
138         Revert:
139         2008-03-05  Richard Guenther  <rguenther@suse.de>
140         PR c++/35336
141         * fold-const.c (fold_truthop): Remove code generating
142         BIT_FIELD_REFs of structure bases.
143         (fold_binary): Likewise.
144         (make_bit_field_ref): Remove.
145         (optimize_bit_field_compare): Remove.
146         (all_ones_mask_p): Remove.
147
148 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
149
150         * tree-sra.c (sra_explode_bitfield_assignment): Always
151         call unsigned_type_for, if the precision is higher than
152         needed, call build_nonstandard_integer_type.
153
154         PR debug/38367
155         * function.c (assign_parm_find_stack_rtl): If promoted_mode
156         is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
157         big endian.
158
159         PR middle-end/38338
160         * builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
161         only if internal_arg_pointer is a non-virtual pseudo.
162
163 2008-12-05  Joseph Myers  <joseph@codesourcery.com>
164
165         * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for
166         TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500.
167         * config/rs6000/spe.md (e500_cr_ior_compare): Likewise.
168
169 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
170
171         PR tree-optimization/37716
172         * gimplify.c (gimplify_expr): Allow COND_EXPR if
173         gimplify_ctxp->allow_rhs_cond_expr.
174
175 2008-12-05  Uros Bizjak  <ubizjak@gmail.com>
176
177         * config/alpha/alpha.c (alpha_fold_vector_minmax): Create
178         VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
179
180         (alpha_emit_conditional_branch): Do not generate direct branch
181         for UNORDERED comparisons.
182
183 2008-12-05  Andreas Schwab  <schwab@suse.de>
184
185         * config/rs6000/linux-unwind.h (frob_update_context): Check for
186         NULL lr.
187
188 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
189
190         PR c/38408
191         * fold-const.c (fold_checksum_tree): Change buf type to union
192         tree_node.
193
194 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
195
196         PR bootstrap/38262
197         * Makefile.in (LIBS): Remove GMPLIBS, CLOOGLIBS and PPLLIBS.
198         (BACKENDLIBS): New.
199         (cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
200
201 2008-12-05  Ben Elliston  <bje@au.ibm.com>
202
203         * c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
204         comma_loc.
205         (c_parser_initelt): Initialise des_loc and ellipsis_loc.
206
207 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
208             Gary Funck  <gary@intrepid.com>
209
210         * cse.c (lookup_as_function): Delete mode frobbing code.
211         (equiv_constant): Re-implement it there for SUBREGs.
212
213 2008-12-04  Richard Guenther  <rguenther@suse.de>
214
215         PR middle-end/36509
216         * Makefile.in (tree-ssa-alias-warnings.o): Remove.
217         (tree-ssa-structalias.o): Remove errors.h dependency.
218         (tree-ssa-reassoc.o): Likewise.
219         * tree-ssa-reassoc.c: Do not include errors.h.
220         * tree-ssa-alias-warnings.c: Remove.
221         * tree-ssa-alias.c (compute_may_aliases): Remove call to
222         strict_aliasing_warning_backend.
223         * tree-ssa-structalias.c (emit_pointer_definition): New function.
224         (emit_alias_warning): Likewise.
225         (set_uids_in_ptset): Warn for clear cases of type-punning.
226         * tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
227         on INDIRECT_REFs.
228
229 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
230
231         * cse.c (equiv_constant): Fix pasto.
232
233 2008-12-04  Nick Clifton  <nickc@redhat.com>
234
235         * config/stormy16/stormy16.md: Remove extraneous spaces and quotes.
236         * config/stormy16/stormy16.c: Remove extraneous spaces and fix up
237         formatting of quotes.
238
239 2008-12-04  Jakub Jelinek  <jakub@redhat.com>
240
241         PR middle-end/38371
242         * fold-const.c (fold_checksum_tree): Allow modification of
243         TYPE_NEXT_VARIANT.
244
245 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
246
247         PR middle-end/38360
248         * tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
249         have the right number of arguments.
250
251 2008-12-03  Richard Guenther  <rguenther@suse.de>
252
253         PR middle-end/36326
254         * gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
255         non-BLKmode types.
256
257 2008-12-03  Tomas Bily  <tbily@suse.cz>
258
259         PR middle-end/38250
260         * tree-loop-distribution.c (build_size_arg): New function.
261         (generate_memset_zero): Checks if dr_analyze_innermost succeed.
262         Reorganized generating of stmts.
263         * testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
264         * tree-data-ref.c (dr_analyze_innermost): Returns bool.
265         Indicate if analysis succeed.
266         * tree-data-ref.h (dr_analyze_innermost): Returns bool.
267         * tree-predcom.c (valid_initializer_p, find_looparound_phi):
268         Uses new definition of dr_analyze_innermost.
269
270 2008-12-03  Ben Elliston  <bje@au.ibm.com>
271
272         * tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
273
274 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
275
276         PR tree-optimization/37716
277         * tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
278         all the needed operations as trees and gimplify_assign it to dst.
279
280         PR target/37610
281         * configure.ac (gcc_cv_readelf): Look for readelf.
282         (gcc_cv_as_cfi_advance_working): Check for working
283         cfi advances with code alignment factor > 1.
284         (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
285         don't work properly.
286         * configure: Regenerated.
287
288 2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
289             Jakub Jelinek  <jakub@redhat.com>
290             Andrew Pinski  <andrew_pinski@playstation.sony.com>
291
292         PR rtl-optimization/38281
293         * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
294         set it to NULL_RTX afterwards.
295
296         * emit-rtl.c (set_insn_deleted): Fix formatting.
297
298 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
299
300         * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
301         error return value.
302         * config/mips/mips.md (IMOVE32): New mode iterator.
303         (movsi): Generalize with IMOVE32.
304         (*movsi_internal): Likewise.
305         (*mov<mode>_mips16): Likewise.
306         (*lwxs): Likewise.
307
308 2008-12-02  Nathan Sidwell  <nathan@codesourcery.com>
309             Maxim Kuvyrkov  <maxim@codesourcery.com>
310
311         * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
312         PC-relative addressing when compiling for uclinux PIC.
313         (__cmpdf_internal, __cmpsf_internal): Hide.
314         (__cmpdf, __cmpsf): Use PIC call sequence.
315
316 2008-12-02  Andreas Tobler  <a.tobler@schweiz.org>
317             Jack Howarth <howarth@bromo.med.uc.edu>
318
319         * config/i386/t-darwin64: Add m32 multilib support.
320
321 2008-12-02  Jack Howarth  <howarth@bromo.med.uc.edu>
322
323         * testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
324
325 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
326
327         PR middle-end/38343
328         * builtins.c (fold_builtin_memory_op): Convert len to sizetype
329         before using it in POINTER_PLUS_EXPR.
330
331 2008-12-02  Richard Guenther  <rguenther@suse.de>
332
333         PR tree-optimization/38359
334         * fold-const.c (fold_binary): Fold -1 >> x to -1 only for
335         non-negative x.
336
337 2008-12-02  Martin Jambor  <mjambor@suse.cz>
338
339         PR middle-end/37861
340         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
341         for INDIRECT_REFs.
342         (forward_propagate_addr_into_variable_array_index): Check that the
343         offset is not computed from a MULT_EXPR, use is_gimple_assign rather
344         than the gimple code directly.
345
346 2008-12-02  Ben Elliston  <bje@au.ibm.com>
347
348         * config/spu/float_disf.c (__floatdisf): Prototype.
349         * config/spu/float_unsdisf.c (__float_undisf): Likewise.
350         * config/spu/float_unssidf.c (__float_unssidf): Constify cast.
351         * config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
352
353 2008-12-02  DJ Delorie  <dj@redhat.com>
354
355         * config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
356         (DWARF_CIE_DATA_ALIGNMENT): Define.
357
358         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
359         Invert add/sub for INCOMING_FRAME_SP_OFFSET.
360         (xstormy16_expand_prologue): Likewise.
361         (xstormy16_expand_builtin_va_start): Likewise.
362         (xstormy16_gimplify_va_arg_expr): Likewise.
363
364 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
365
366         PR middle-end/38343
367         * builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
368         potentially returned from folding memcpy.
369         (expand_builtin_stpcpy_args): Similarly for folding strcpy.
370         (fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
371
372 2008-12-02  Danny Smith  <dannysmith@users.sourceforge.net>
373
374         PR target/38054
375         * config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
376         decoration of function RTL names here on Ada language.
377
378 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
379
380         PR rtl-optimization/38280
381         * ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
382         ira_rebuild_regno_allocno_list): New functions.
383         (regno_allocnos): New static variable.
384         (remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
385         Call ira_rebuild_regno_allocno_list.
386
387 2008-12-01  David Daney  <ddaney@caviumnetworks.com>
388             Adam Nemet  <anemet@caviumnetworks.com>
389
390         * config/mips/linux64.h (DRIVER_SELF_SPECS): Add
391         LINUX_DRIVER_SELF_SPECS.
392
393 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
394
395         PR rtl-optimization/37514
396         * reload1.c (reload_as_needed): Invalidate reg_last_reload
397         from previous insns.
398
399 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
400
401         PR c++/38348
402         * c-omp.c (c_finish_omp_for): Only transform pointer
403         ++ or -- into MODIFY_EXPR if second argument is non-NULL.
404
405         PR rtl-optimization/38245
406         * tree-vrp.c (abs_extent_range): New function.
407         (extract_range_from_binary_expr): Compute range
408         for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
409         or includes zero or if vr1 is VR_RANGE and op0 has some
410         other range.
411
412 2008-12-01  Uros Bizjak  <ubizjak@gmail.com>
413
414         PR middle-end/37908
415         * config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
416         case by calculating ~(new_reg & val) instead of (~new_reg & val).
417         * config/alpha/sync.md (sync_nand<mode>): Change insn RTX
418         to (not:I48MODE (and:I48MODE (...))).
419         (sync_old_nand<mode>): Ditto.
420         (sync_new_nand<mode>): Ditto.
421
422 2008-12-01  Nick Clifton  <nickc@redhat.com>
423
424         * config/stormy16/stormy16.md (CARRY_REG): New constant.
425         Replace uses of the "y" register class with direct references to
426         the CARRY_REG register.
427         * config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
428         register with clobbers of the carry register.
429         (xstormy16_secondary_reload_class): Do not return CARRY_REGS.
430         (xstormy16_split_cbranch): Remove redundant carry parameter.
431         (xstormy16_expand_arith): Likewise.
432         * config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
433         (IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
434         REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
435         (CARRY_REGNUM): Define.
436         * config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
437         Update prototype.
438         (xstormy16_expand_arith): Likewise.
439
440 2008-12-01  Chen Liqin  <liqin.chen@sunplusct.com>
441
442         * config/score/score.h (IRA_COVER_CLASSES): Define.
443
444 2008-11-30  Eric Botcazou  <ebotcazou@adacore.com>
445
446         PR target/38287
447         * config/sparc/sparc.md (divsi3 expander): Remove constraints.
448         (divsi3_sp32): Add new alternative with 'K' for operand #2.
449         (cmp_sdiv_cc_set): Factor common string.
450         (udivsi3_sp32): Add new alternative with 'K' for operand #2.
451         Add TARGET_V9 case.
452         (cmp_udiv_cc_set): Factor common string.
453
454 2008-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
455
456         PR middle-end/38283
457         * varasm.c (emutls_finish): Fix common registration.
458
459 2008-11-29  Jakub Jelinek  <jakub@redhat.com>
460
461         PR target/29987
462         * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
463
464 2008-11-29  David Edelsohn  <edelsohn@gnu.org>
465
466         * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
467         operand wrapped in NOT.  Emit NAND as (ior (not X) (not Y)).
468         (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
469         * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL.
470         Call rs6000_emit_sync with CODE=NOT and unmodified operands.
471         Ignore sub-word case for now.
472         (sync_nand<mode>_internal): Represent NAND in RTL.
473         (sync_old_nand<mode): Same.
474         (sync_old_name<mode>_internal): Same.
475         (sync_new_nand<mode>): Same.
476         (sync_new_nand<mode>_internal): Same.
477         (sync_boolcshort_internal): Expect NAND.
478
479 2008-11-28  Richard Guenther  <rguenther@suse.de>
480
481         PR tree-optimization/37955
482         PR tree-optimization/37742
483         * tree-vect-transform.c (vectorizable_store): Remove assert for
484         compatible aliases.
485         (vectorizable_load): Likewise.
486
487 2008-11-27  Richard Guenther  <rguenther@suse.de>
488
489         * tree-ssa-structalias.c (intra_create_variable_infos): Make
490         a constraint for the static chain parameter.
491
492 2008-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
493
494         * config/bfin/bfin.opt (micplb): New option.
495         * config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
496         * config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
497         ENABLE_WA_INDIRECT_CALLS): New macros.
498         * config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
499         all 54x CPUs.
500         (indirect_call_p): New function.
501         (workaround_speculation): Handle anomaly 05-00-0426 when
502         ENABLE_WA_INDIRECT_CALLS is true.
503         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
504         __WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
505         * doc/invoke.texi (Blackfin Options): Document -micplb.
506
507 2008-11-26  DJ Delorie  <dj@redhat.com>
508
509         * config/m32c/mov.md ("extendhipsi2"): New.
510
511         * config/m32c/bitops.md (bset_qi): Add memsym_operand predicate.
512
513         * config/m32c/bitops.md (andhi3_24, iorhi3_24): Don't prefer HL class.
514         * config/m32c/mov.md (zero_extendqihi2): Likewise.
515
516 2008-11-26  Adam Nemet  <anemet@caviumnetworks.com>
517
518         * config/mips/mips.md (clear_hazard): Rename to
519         clear_hazard_<mode>.  Use mode-specific addition.
520         (clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
521         or gen_clear_hazard_di depending on the size of Pmode.
522
523 2008-11-26  DJ Delorie  <dj@redhat.com>
524
525         * configure.ac: Test m32c-elf-gas for .loc.
526         * configure: Likewise.
527
528 2008-11-26  Janis Johnson  <janis187@us.ibm.com>
529
530         PR testsuite/28870
531         * doc/sourcebuild.texi (Test Directives): Add dg-timeout and
532         dg-timeout-factor.
533
534 2008-11-26  Uros Bizjak  <ubizjak@gmail.com>
535
536         * config/i386/sync.md (memory_barrier_nosse): Disable also for
537         TARGET_64BIT.  Remove special asm template for TARGET_64BIT case.
538         (memory_barrier): Do not generate memory_barrier_nosse instruction
539         for TARGET_64BIT.
540         * config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
541
542 2008-11-26  Fredrik Unger  <fred@tree.se>
543
544         * config/soft-fp/floatuntisf.c (__floatuntisf): Correct
545         function name from __floatundisf.
546         * config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
547         DFtype.
548
549 2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
550             Richard Guenther  <rguenther@suse.de>
551
552         PR tree-optimization/37869
553         * tree-ssa-structalias.c (struct constraint_graph): Remove
554         pt_used and number_incoming members.
555         (build_pred_graph): Do not allocate them.
556         (condense_visit): Do not use them.
557         (label_visit): Likewise.
558         (free_var_substitution_info): Do not free them.
559
560 2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
561
562         * doc/invoke.texi (ira-max-loops-num): Change semantics.
563
564         * ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
565
566         * ira-color.c (allocno_spill_priority): New function.
567         (remove_allocno_from_bucket_and_push, push_allocno_to_spill):
568         Print more info about the spilled allocno.
569         (push_allocnos_to_stack): Use allocno_spill_priority.  Add more
570         checks on bad spill.
571
572         * ira-build.c (loop_node_to_be_removed_p): Remove.
573         (loop_compare_func, mark_loops_for_removal): New functions.
574         (remove_uneccesary_loop_nodes_from_loop_t): Use member
575         to_remove_p.
576         (remove_unnecessary_allocnos): Call mark_loops_for_removal.
577
578         * ira.c (ira): Don't change flag_ira_algorithm.
579
580         * params.def (ira-max-loops-num): Change the value.
581
582 2008-11-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
583
584         * config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
585         Disable unsupported alternative for ColdFire,
586         add new alternative that ColdFire can handle.
587
588 2008-11-25  Eric Botcazou  <ebotcazou@adacore.com>
589
590         * regrename.c (merge_overlapping_regs): Add registers artificially
591         defined at the top of the basic block to the set of live ones just
592         before the first insn.
593
594 2008-11-25  H.J. Lu  <hongjiu.lu@intel.com>
595             Joey Ye  <joey.ye@intel.com>
596
597         PR middle-end/37843
598         * config/i386/i386.c (ix86_function_ok_for_sibcall): Return
599         false if we need to align the outgoing stack.
600         (ix86_update_stack_boundary): Check parm_stack_boundary.
601
602 2008-11-25  Richard Guenther  <rguenther@suse.de>
603
604         PR middle-end/38151
605         PR middle-end/38236
606         * tree-ssa-alias.c (struct alias_info): Remove written_vars.
607         Remove dereferenced_ptrs_store and dereferenced_ptrs_load
608         in favor of dereferenced_ptrs.
609         (init_alias_info): Adjust.
610         (delete_alias_info): Likewise.
611         (compute_flow_insensitive_aliasing): Properly
612         include all aliased variables.
613         (update_alias_info_1): Use dereferenced_ptrs.
614         (setup_pointers_and_addressables): Likewise.
615         (get_smt_for): Honor ref-all pointers and pointers with known alias
616         set properly.
617         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
618
619 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
620
621         PR target/38254
622         * config/i386/sync.md (memory_barrier_nosse): New insn pattern.
623         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
624
625 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
626
627         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
628
629 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
630
631         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
632
633 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
634
635         PR target/35018
636         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
637         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
638
639 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
640
641         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
642         UNSPECV_CMPXCHG_[12].
643         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
644         UNSPECV_CMPXCHG_[12].
645
646         PR target/36793
647         * config/i386/sync.md (memory_barrier): New expander.
648
649 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
650
651         PR middle-end/37135
652         * dse.c (find_shift_sequence): Optimize extraction from a constant.
653
654 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
655
656         * pa.c (function_arg): Revert 2008-10-26 change.
657
658 2008-11-23  Helge Deller  <deller@gmx.de>
659
660         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
661         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
662         succeeded and lws_ret is not equal to oldval.
663
664 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
665
666         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
667
668 2008-11-22  Andreas Schwab  <schwab@suse.de>
669
670         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
671         -dA and -dP.
672
673 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
674
675         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
676         Use constant 1 as the operand.
677         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
678         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
679         gen_rdhwr_synci_step_di depending on the size of Pmode.
680
681 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
682
683         PR target/38222
684         * config/i386/i386.md (SWI248): New mode iterator.
685         (SWI32): Remove mode iterator.
686         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
687         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
688         iterator.  Generate popcnt mnemonic without mode extensions
689         for Darwin x86 targets.
690         (*popcount<mode>2_cmp): Ditto.
691         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
692         extensions for Darwin x86 targets.
693
694 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
695
696         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
697         only if HAVE_AS_SPARC_UA_PCREL is defined.
698
699 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
700
701         * ira-costs.c (find_allocno_class_costs): Work out the maximum
702         allocno_costs value of the classees with the lowest total_costs
703         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
704         (setup_allocno_cover_class_and_costs): ...rather than here.
705         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
706         preferred class.
707
708 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
709
710         PR middle-end/37323
711         * builtins.c (expand_builtin_apply_args): Emit sequence before
712         parm_birth_insn instead of after entry_of_function's first insn.
713
714         PR middle-end/37316
715         * function.c (assign_parm_remove_parallels): Pass
716         data->passed_type as third argument to emit_group_store.
717
718         PR target/37170
719         * final.c (mark_symbol_refs_as_used): New function.
720         * output.h (mark_symbol_refs_as_used): New prototype.
721         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
722         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
723         * config/arm/arm.md (consttable_4): Likewise.
724
725         PR target/37880
726         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
727
728 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
729
730         PR middle-end/38200
731         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
732         propagate x = &a into *x = b if conversion from b to a's type is
733         useless.
734
735 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
736
737         * caller-save.c (insert_one_insn): Take into account REG_INC notes
738         for the liveness computation of the new insn.
739
740 2008-11-21  DJ Delorie  <dj@redhat.com>
741
742         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
743         Moves to/from below100 space (W) can only use r0-r7.
744
745 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
746
747         PR other/38214
748         * doc/invoke.texi (Optimization Options): Fix typo.
749
750 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
751             Xuepeng Guo  <xuepeng.guo@intel.com>
752
753         * config.gcc (extra_headers): For x86 and x86-64, remove
754         gmmintrin.h, add immintrin.h and avxintrin.h.
755
756         * config/i386/gmmintrin.h: Renamed to ...
757         * config/i386/avxintrin.h: This.  Issue an error if
758         _IMMINTRIN_H_INCLUDED is undedined.
759
760         * config/i386/immintrin.h: New.
761
762 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
763
764         PR target/38208
765         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
766         mode of PLUS, not mode of the eliminated register.
767
768 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
769
770         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
771         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
772         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
773         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
774         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
775         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
776         (*nand<mode>3): Rename to *andnot<mode>3.
777         (*nandtf3): rename to *andnottf3.
778         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
779         Use CODE_FOR_mmx_andnotv2si3.
780         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
781         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
782         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
783         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
784         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
785
786 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
787
788         PR middle-end/37908
789         * config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
790         case by calculating ~(new_reg & val) instead of (~new_reg & val).
791         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
792         to (not:IMODE (and:IMODE (...))).
793         (sync_old_nand<mode>): Ditto.
794         (sync_new_nand<mode>): Ditto.
795
796 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
797
798         * config/arm/thumb2.md (thumb2_casesi_internal,
799         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
800
801 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
802
803         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
804         nand to the changed 4.4 semantic.
805
806 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
807
808         PR middle-end/29215
809         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
810         (fold_builtin_memory_op): Handle even the case where just one
811         of src and dest is an address of a var decl component, using
812         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
813         and readonly_data_expr src check.
814         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
815         up warnings.
816
817         PR rtl-optimization/36998
818         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
819         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
820         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
821         stack_adjust_offset callers.
822         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
823         branches properly.
824         (compute_barrier_args_size): Handle insns in annulled branches
825         properly.
826
827 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
828
829         PR target/38151
830         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
831         Handle cases when integer argument crosses argument register boundary.
832
833 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
834
835         PR bootstrap/33100
836         * config.gcc (i[34567]86-*-solaris2*): Don't include
837         i386/t-crtstuff here.
838         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
839         * config/i386/t-sol2: Move to libgcc/config/i386.
840
841 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
842
843         PR driver/21706
844         * tlink.c: Include "libiberty.h".
845         (initial_cwd): Change type into char *.
846         (tlink_init): Call getpwd instead of getcwd.
847
848 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
849
850         PR rtl-optimization/32283
851         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
852         of the induction variable to decide whether it may wrap.
853         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
854         initialization of the bound before the loop.
855         * simplify-rtx.c (simplify_binary_operation_1): Add two
856         simplifications regarding AND.
857         (simplify_plus_minus): Only fail if no simplification is possible.
858         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
859
860 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
861
862         PR c++/36631
863         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
864         checking until GIMPLE lowering.
865         * gimple-low.c (check_call_args): New function.
866         (lower_stmt) <case GIMPLE_CALL>: Call it.
867
868 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
869
870         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
871         with the same type as the first operand of the AND expression.
872
873 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
874
875         PR bootstrap/37859
876         * ira-int.h (struct ira_loop_tree_node): New member
877         entered_from_non_parent_p.
878
879         * ira-color.c (print_loop_title): Print loop bbs.
880
881         * ira-emit.c (entered_from_non_parent_p,
882         setup_entered_from_non_parent_p): New functions.
883         (not_modified_p): Rename to store_can_be_removed_p.  Check there
884         is no side entries.
885         (generate_edge_moves): Use store_can_be_removed_p instead of
886         not_modified_p.
887         (ira_emit): Call setup_entered_from_non_parent_p.
888
889         * ira-build.c (copy_info_to_removed_store_destinations):
890         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
891         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
892         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
893         update all accumulated attributes.
894
895 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
896
897         PR bootstrap/37790
898         * ira-int.h (ira_copy_allocno_live_range_list,
899         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
900         ira_finish_allocno_live_range_list): New prototypes.
901         (ira_allocno_live_ranges_intersect_p,
902         ira_pseudo_live_ranges_intersect_p): Remove.
903
904         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
905         ira_pseudo_live_ranges_intersect_p): Rename to
906         allocnos_have_intersected_live_ranges_p and
907         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
908
909         * ira-color.c: ... here
910         (coalesced_allocno_conflict_p): Use
911         allocnos_have_intersected_live_ranges_p.
912         (coalesced_allocnos_living_at_program_points,
913         coalesced_allocnos_live_at_points_p,
914         set_coalesced_allocnos_live_points): Remove.
915         (slot_coalesced_allocnos_live_ranges,
916         slot_coalesced_allocno_live_ranges_intersect_p,
917         setup_slot_coalesced_allocno_live_ranges): New.
918         (coalesce_spill_slots): Use ranges of coalesced allocnos.
919         (ira_sort_regnos_for_alter_reg): Use
920         allocnos_have_intersected_live_ranges_p.
921         (ira_reuse_stack_slot): Use
922         pseudos_have_intersected_live_ranges_p.
923
924         * global.c (pseudo_for_reload_consideration_p): Check
925         flag_ira_share_spill_slots too.
926
927         * ira-build.c (copy_allocno_live_range_list): Rename to
928         ira_copy_allocno_live_range_list.  Make it external.
929         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
930         external.
931         (ira_allocno_live_ranges_intersect_p): New.
932         (ira_finish_allocno_live_range_list): New.
933         (finish_allocno): Use it.
934         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
935         (copy_info_to_removed_store_destinations): Ditto.  Use
936         ira_copy_allocno_live_range_list.
937         (ira_flattening): Use ira_merge_allocno_live_ranges.
938
939         * ira.c (too_high_register_pressure_p): New function.
940         (ira): Switch off sharing spill slots if the pressure is too high.
941
942 2008-11-19  Richard Guenther  <rguenther@suse.de>
943
944         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
945         non-sizetype offsets if their precision matches that of the pointer.
946         * expr.c (expand_expr_real_1): Always sign-extend the offset
947         operand of a POINTER_PLUS_EXPR.
948
949 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
950
951         * config.gcc: Unobsolete mips-sgi-irix[56]*.
952         (mips-sgi-irix[56]*): No need to use fixproto.
953
954 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
955             Paul Brook  <paul@codesourcery.com>
956
957         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
958         executable stack.
959
960 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
961
962         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
963
964 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
965
966         PR target/38156
967         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
968         (separate_decls_in_region): Create shared struct even when there
969         are only reductions.
970
971 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
972
973         * config/picochip/picochip.c (headers): Remove an unnecessary
974         header file.
975
976 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
977
978         PR target/36133
979         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
980         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
981         shift instructions.
982         * config/m68k/m68k.md: Adjust all conditional branches that use the
983         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
984
985 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
986
987         PR target/37362
988         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
989         is a register or zero operand in the correct mode before generating
990         mtch1 insn or a register operand in the correct mode before generating
991         mfch1 insn.
992         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
993
994 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
995
996         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
997         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
998         mipsisa*-*-elf*.  Handle mipsisa64r2*.
999         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
1000         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1001         mips64r2.
1002         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
1003         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1004         mips64r2.
1005         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
1006         Fix mips16 if mips64 or mips64r2 are multilib defaults.
1007         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1008         mips64r2.
1009
1010 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
1011
1012         PR target/38130
1013         * config/i386/i386.md (allocate_stack_worker_32,
1014         allocate_stack_worker_64): Don't use match_dup between input and
1015         output operand.
1016         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
1017         * config/i386/i386.c (ix86_expand_prologue): Likewise.
1018
1019 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
1020
1021         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
1022         is forced when trying to do a symbol link for it.
1023
1024 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
1025
1026         * expmed.c (extract_bit_field_1): Also use a temporary and
1027         convert_extracted_bit_field when the conversion from ext_mode to
1028         the target mode requires explicit truncation.
1029
1030 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1031
1032         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
1033         Tweak formatting.
1034         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
1035         registers when not optimizing.
1036
1037 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1038
1039         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
1040         and its associated define_split.  Expose the all-d alternative
1041         to the register allocator, but mark it with "?".  Mark the first
1042         alternative with "*?*?".
1043         (*mul_sub_si): Likewise.
1044         (*mul_acc_si_r3900): New pattern.
1045
1046 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
1047
1048         PR middle-end/38140
1049         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
1050         propagating x = &a into *x = b, add a cast if not useless
1051         type conversion or don't optimize if another stmt would be
1052         needed.
1053
1054 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
1055
1056         PR middle-end/37908
1057         * optabs.c (expand_sync_operation): Properly handle NAND case
1058         by calculating ~(t1 & val) instead of (~t1 & val).
1059         * builtins.c (expand_builtin_sync_operation): Warn for changed
1060         semantics in NAND builtins.
1061         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
1062
1063         * doc/invoke.texi (Warning options): Add Wsync-nand.
1064         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
1065         __sync_fetch_and_nand builtin operation in the example.  Add a note
1066         about changed semantics in GCC 4.4.
1067         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
1068         operation in the example.  Add a note about changed semantics in
1069         GCC 4.4.
1070
1071 2008-11-16  Jan Hubicka  <jh@suse.cz>
1072
1073         * cgraph.c (cgraph_function_body_availability): Fix test of externally
1074         visible.
1075
1076 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
1077
1078         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
1079         to -mips4.
1080
1081 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1082
1083         PR target/38052
1084         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
1085         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
1086         split out from...
1087         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
1088         rather than call_really_used_regs when handling $gp.
1089
1090 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1091
1092         PR target/38052
1093         * config/mips/mips.c (machine_function): Update the comment
1094         above global_pointer.
1095         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
1096         that a function doesn't need a global pointer.
1097         (mips_current_loadgp_style): Update accordingly.
1098         (mips_restore_gp): Likewise.
1099         (mips_output_cplocal): Likewise.
1100         (mips_expand_prologue): Likewise.
1101
1102 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1103
1104         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
1105         parameter.  Use DImode for computing the number of registers.
1106         (function_arg): Adjust for above change.
1107         (function_value): Likewise.
1108
1109 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
1110
1111         PR tree-optimization/37950
1112         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
1113         not computed for the current function.
1114
1115 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1116
1117         PR target/38123
1118         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
1119         gpr and other COMPONENT_REFs.
1120
1121 2008-11-15  Richard Guenther  <rguenther@suse.de>
1122
1123         PR tree-optimization/38051
1124         * tree-ssa-alias.c (update_alias_info_1): Manually find
1125         written variables.
1126
1127 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
1128
1129         * doc/invoke.texi (-mfix-r10000): Document.
1130         * config/mips/mips.opt (mfix-r10000): New option.
1131         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
1132         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
1133         (MIPS_COMPARE_AND_SWAP_12): Likewise.
1134         (MIPS_SYNC_OP): Likewise.
1135         (MIPS_SYNC_OP_12): Likewise.
1136         (MIPS_SYNC_OLD_OP_12): Likewise.
1137         (MIPS_SYNC_NEW_OP_12): Likewise.
1138         (MIPS_SYNC_OLD_OP): Likewise.
1139         (MIPS_SYNC_NAND): Likewise.
1140         (MIPS_SYNC_OLD_NAND): Likewise.
1141         (MIPS_SYNC_EXCHANGE): Likewise.
1142         (MIPS_SYNC_EXCHANGE_12): Likewise.
1143         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
1144         delay slots.
1145         (MIPS_SYNC_NEW_NAND): Likewise.
1146         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
1147         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
1148         (mips_output_sync_loop): New function.
1149         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
1150         Make -mfix-r10000 require branch-likely instructions.
1151         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
1152         mips_output_sync_loop.
1153         (compare_and_swap_12): Likewise.
1154         (sync_add<mode>): Likewise.
1155         (sync_<optab>_12): Likewise.
1156         (sync_old_<optab>_12): Likewise.
1157         (sync_new_<optab>_12): Likewise.
1158         (sync_nand_12): Likewise.
1159         (sync_old_nand_12): Likewise.
1160         (sync_new_nand_12): Likewise.
1161         (sync_sub<mode>): Likewise.
1162         (sync_old_add<mode>): Likewise.
1163         (sync_old_sub<mode>): Likewise.
1164         (sync_new_add<mode>): Likewise.
1165         (sync_new_sub<mode>): Likewise.
1166         (sync_<optab><mode>): Likewise.
1167         (sync_old_<optab><mode>): Likewise.
1168         (sync_new_<optab><mode>): Likewise.
1169         (sync_nand<mode>): Likewise.
1170         (sync_old_nand<mode>): Likewise.
1171         (sync_new_nand<mode>): Likewise.
1172         (sync_lock_test_and_set<mode>): Likewise.
1173         (test_and_set_12): Likewise.
1174
1175 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
1176
1177         * gcc.c (cc1_options): Fix comment.
1178
1179 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1180
1181         PR c++/37561
1182         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
1183         argtype instead of result_type.
1184
1185 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
1186
1187         * ira-int.h (struct ira_loop_tree_node): Improve comments for
1188         subloop_next/next and subloops/childen fields.
1189
1190 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1191
1192         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
1193         (STANDARD_INCLUDE_DIR): Redefine to "/include".
1194         (LOCAL_INCLUDE_DIR): Undefine.
1195         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
1196
1197 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
1198
1199         PR rtl-optimization/37397
1200         * ira-int.h (struct ira_allocno): New member bad_spill_p.
1201         (ALLOCNO_BAD_SPILL_P): New macro.
1202
1203         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
1204
1205         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
1206         (create_cap_allocno, propagate_allocno_info,
1207         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
1208         (update_bad_spill_attribute): New function.
1209         (ira_build): Call it.
1210
1211         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
1212
1213 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1214
1215         PR tree-optimization/38104
1216         * gimplify.c (gimple_regimplify_operands): Add referenced vars
1217         before calling mark_symbols_for_renaming, not after it.
1218
1219 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
1220
1221         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
1222         (OVERRIDE_OPTIONS): Likewise.
1223
1224 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1225             Andrew Stubbs  <ams@codesourcery.com>
1226             Gunnar Von Boehn  <gunnar@genesi-usa.com>
1227
1228         PR target/36134
1229         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
1230         the shorter LEA insn over ADD.L where possible.
1231
1232 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
1233
1234         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
1235         systems, which are assumend to always provide SSP-support in glibc.
1236         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
1237         case.
1238         * configure: Regenerate.
1239
1240 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1241
1242         PR middle-end/36125
1243         * function.c (gimplify_parameters): For callee copies parameters,
1244         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
1245
1246 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
1247
1248         PR target/28102
1249         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
1250         x86 parts into the `i[34567]86-*-linux*' and parts that are
1251         independent of the processor architecture into the `*-*-linux*' cases.
1252         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
1253         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
1254         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
1255         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
1256         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
1257         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
1258         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
1259
1260 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
1261
1262         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
1263         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
1264         (ls2_idiv): Likewise idiv3.
1265         (ls2_prefetch): New reservation.
1266         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
1267         * config/mips/mips.md (type): Add imul3nc and idiv3.
1268         (length): Handle idiv3.
1269         (any_mod): New code_iterator.
1270         (u): Handle MOD and UMOD.
1271         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
1272         (prefetch): Handle TARGET_LOONGSON_2EF.
1273
1274 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1275
1276         PR c++/27017
1277         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
1278         (prune_unused_types_walk): Call it for non-perennial local classes.
1279         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
1280         entry, just set it to 2 and recurse on children, don't walk attributes
1281         again.
1282
1283 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
1284
1285         * c-common.c (warn_about_parentheses): Add missing whitespace
1286         in warning.
1287
1288 2008-11-13  Paul Brook  <paul@codesourcery.com>
1289
1290         * doc/invoke.texi: Document --fix-cortex-m3.
1291         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
1292         Cortex-M3 cpu is selected.
1293         (output_move_double): Avoid overlapping base register and first
1294         destination register when fix_cm3_ldrd.
1295         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
1296
1297 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1298
1299         PR bootstrap/38100
1300         * gimple.h (gimple_range_check_failed): Remove prototype.
1301         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
1302         in guarding #if.
1303         (gimple_range_check_failed): Removed.
1304
1305 2008-11-13  Andrew Haley  <aph@redhat.com>
1306
1307         PR bootstrap/38088
1308         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
1309         __LONG_LONG_MAX__.
1310
1311 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1312
1313         PR c++/36478
1314         Revert:
1315         2007-05-07  Mike Stump  <mrs@apple.com>
1316         * doc/invoke.texi (Warning Options): Document that -Wempty-body
1317         also checks for and while statements in C++.
1318
1319 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
1320
1321         PR debug/27574
1322         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
1323         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
1324         - which clones are reachable - as "abstract and needed".
1325         * cgraph.c (cgraph_release_function_body):  If a node is
1326         "abstract and needed", do not release its DECL_INITIAL() content
1327         that will be needed to emit debug info.
1328
1329 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
1330
1331         PR target/27880
1332         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
1333         to set HAVE_GETIPINFO.
1334         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
1335         * configure: Regenerate.
1336         * config.in: Regenerate.
1337
1338 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
1339
1340         PR bootstrap/38010
1341         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
1342
1343 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1344
1345         Revert:
1346         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1347         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1348
1349 2008-11-12  Jason Merrill  <jason@redhat.com>
1350
1351         PR c++/38007
1352         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
1353         special casing.
1354
1355 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
1356
1357         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
1358         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
1359         atmega32u6 devices.
1360         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1361         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1362
1363 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1364
1365         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
1366         packed-stack special handling.
1367         (FRAME_ADDR_RTX): Add definition.
1368
1369 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1370
1371         PR target/35366
1372         * fold-const.c (native_encode_string): New function.
1373         (native_encode_expr): Use it for STRING_CST.
1374
1375 2008-11-12  DJ Delorie  <dj@redhat.com>
1376
1377         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
1378         insns if the intermediate value will be used later.
1379
1380 2008-11-12  Andreas Schwab  <schwab@suse.de>
1381
1382         * config/m68k/m68k.c (print_operand): Mask off extra extension
1383         bits when writing out the representation of real values.
1384
1385 2008-11-12  Ira Rosen  <irar@il.ibm.com>
1386
1387         PR tree-optimization/38079
1388         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
1389         with vect_dump.
1390
1391 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1392
1393         PR c++/35334
1394         * c-pretty-print.c (pp_c_complex_expr): New function.
1395         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
1396
1397         PR target/35366
1398         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
1399         than INNER and INNER is a constant, forcibly align INNER as much
1400         as needed.
1401
1402 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1403
1404         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
1405
1406 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1407
1408         PR rtl-optimization/37363
1409         * simplify-rtx.c (simplify_plus_minus): Don't create
1410         (const (minus ...)) expresisons.
1411
1412 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
1413
1414         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
1415         handling.
1416
1417 2008-11-10  Catherine Moore  <clm@codesourcery.com>
1418
1419         * config.gcc (mips64vrel-*-elf*): Include the tm_file
1420         prior to vr.h.
1421         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
1422         (BASE_DRIVER_SELF_SPECS): Remove.
1423         (DRIVER_SELF_SPECS): New definition.
1424         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
1425         BASE_DRIVER_SELF_SPECS.
1426         * config/mips/sde.h: Likewise.
1427         * config/mips/iris6.h: Likewise.
1428         * config/mips/vr.h: Likewise.
1429         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
1430
1431 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
1432
1433         PR rtl-optimizations/37948
1434         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
1435         (ira_create_copy, ira_add_allocno_copy): New parameter.
1436
1437         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
1438         to ira_add_allocno_copy.
1439         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
1440         parameter to process_regs_for_copy.
1441         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
1442         Fix typo in passing second allocno to ira_add_allocno_copy.
1443
1444         * ira-color.c (update_conflict_hard_regno_costs): Use head of
1445         coalesced allocnos list.
1446         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
1447         the graph.
1448         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
1449         (add_ira_allocno_to_ordered_bucket): Rename to
1450         add_allocno_to_ordered_bucket.
1451         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
1452         head of coalesced allocnos list.
1453         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
1454         Check that it is aready calculated.
1455         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
1456         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
1457         list.
1458         (coalesce_allocnos): Do extended coalescing too.
1459
1460         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
1461         parameter to ira_add_allocno_copy.
1462
1463         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
1464         parameter.
1465         (print_copy): Print copy origination too.
1466
1467         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
1468         equivalent memory.
1469
1470 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1471
1472         PR rtl-optimization/37514
1473         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
1474         flag_ira_share_spill_slots to 2 if it's already non-zero.
1475         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
1476         flag_ira_share_spill_slots is 2.
1477
1478 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
1479
1480         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
1481         (prologue_enter_32): Set FB to SP - 4.
1482
1483 2008-11-10  DJ Delorie  <dj@redhat.com>
1484
1485         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
1486         constraint for single-bit-clear in lower byte of HI constant, vs
1487         Imb which just ignores the upper byte.
1488         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
1489         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
1490         (iorhi3_16): Check for single bit set, not single bit clear.
1491
1492 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
1493
1494         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
1495
1496         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
1497
1498 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1499
1500         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
1501         values living in memory and use more precise alignment information.
1502
1503 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
1504
1505         PR middle-end/35314
1506         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
1507         after __mf_check call if the call must end a bb.
1508
1509 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
1510
1511         PR middle-end/37807
1512         PR middle-end/37809
1513         * combine.c (force_to_mode): Do not process vector types.
1514
1515         * rtlanal.c (nonzero_bits1): Do not process vector types.
1516         (num_sign_bit_copies1): Likewise.
1517
1518 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
1519
1520         * config/i386/gnu.h: Add copyright and licensing header.
1521         * config/gnu.h: Likewise.
1522
1523 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1524
1525         * fwprop.c (fwprop_done): Call df_remove_problem.
1526
1527 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
1528
1529         PR middle-end/37379
1530         * tree-scalar-evolution.c (instantiate_scev_1): Return
1531         chrec_dont_know for VL_EXP_CLASS_P.
1532
1533 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1534
1535         * reg-stack.c (reg_to_stack): Add missing braces in memset
1536         size calculation.
1537
1538 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
1539
1540         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
1541         (NO_PROFILE_COUNTERS): New define.
1542
1543 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
1544
1545         PR target/26397
1546         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
1547
1548 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
1549
1550         PR target/35574
1551         * config/sparc/constraints.md (D): New.
1552         * config/sparc/predicates.md (const_double_or_vector_operand): New.
1553         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
1554         'D' constraint.
1555         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
1556         Use the 'D' constraint in addition to 'F' in some alternatives.
1557         (DF splitter): Generalize for V64mode.
1558         * doc/md.texi (SPARC): Document the 'D' constraint.
1559
1560 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1561
1562         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
1563
1564 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1565
1566         * gcc.c: Remove ancient comment about a bug in Sun cc.
1567
1568 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
1569
1570         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
1571
1572 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1573
1574         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
1575
1576 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1577
1578         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
1579         description.
1580
1581 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
1582
1583         PR target/38016
1584         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
1585         just MEM_P.
1586
1587 2008-11-05  Martin Jambor  <mjambor@suse.cz>
1588
1589         PR middle-end/37861
1590         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
1591         pointer arithmetics into array_ref if the array is accessed
1592         through an indirect_ref.
1593
1594 2008-11-05  Richard Guenther  <rguenther@suse.de>
1595
1596         PR middle-end/37742
1597         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
1598         qualified pointer conversion before stripping qualifiers.
1599         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
1600         * tree-flow.h (may_propagate_address_into_dereference): Declare.
1601         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
1602         function.
1603         (ccp_fold): Use it.
1604         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
1605         properly canonicalize binary ops.
1606         (forward_propagate_addr_expr_1): Use
1607         may_propagate_address_into_dereference.
1608
1609 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
1610
1611         PR middle-end/37286
1612         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
1613         Initialize uninitialized input registers with a NaN.
1614
1615 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1616
1617         PR middle-end/37833
1618
1619         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
1620
1621 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1622
1623         PR middle-end/37943
1624
1625         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
1626         exits and conditions.
1627         * testsuite/gcc.dg/graphite/pr37943.c: New.
1628
1629 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
1630             Andrew Pinski  <andrew_pinski@playstation.sony.com>
1631
1632         PR c/35430
1633         * c-common.c (warn_for_sign_compare): For complex result_type
1634         use component's type.
1635
1636 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
1637
1638         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
1639
1640         * print-tree.c (print_node): Don't print DECL_INITIAL
1641         for PARM_DECL.
1642
1643         PR c/37106
1644         * c-common.c (parse_optimize_options): Save and restore
1645         flag_strict_aliasing around decode_options call.
1646
1647 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
1648
1649         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
1650         (host_detect_local_cpu): Use it instead of casted strings to
1651         compare vendor signatures.
1652
1653 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
1654
1655         PR target/37989
1656         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
1657         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
1658
1659 2008-11-03  Catherine Moore  <clm@codesourcery.com>
1660
1661         * config/mips.c (mips_conditional_register_usage):  Handle the
1662         DSP control register.
1663         * doc/extend.texi: Document the DSP control register.
1664
1665 2008-11-03  Steve Ellcey <sje@cup.hp.com>
1666             Jakub Jelinek  <jakub@redhat.com>
1667
1668         * omp-low.c (expand_omp_for_generic): If iter_type has different
1669         precision than type and type is a pointer type, cast n1 and n2
1670         first to an integer type with the same precision as pointers
1671         and only afterwards to iter_type.
1672
1673 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1674
1675         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
1676         (UNSPEC_GOTSYM_OFF): New unspec.
1677         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
1678         (pic_add_dot_plus_eight): Likewise.
1679         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
1680         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
1681         UNSPEC_PIC_BASE operands.
1682         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
1683         (arm_output_addr_const_extra): Handle it.
1684
1685 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1686
1687         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
1688         integer class to full integer class if the offset is not word-aligned.
1689
1690 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1691
1692         PR rtl-opt/37782
1693         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1694         mode count is in.
1695         (doloop_optimize): Update call to doloop_modify.
1696
1697 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1698
1699         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
1700
1701 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1702
1703         PR other/37463
1704         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
1705         gcc_cv_as_cfi_directive.
1706         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
1707         merging read-only and read-write sections or assembler emits
1708         read-write .eh_frame sections.
1709         * configure: Regenerate.
1710
1711 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
1712
1713         Revert:
1714         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1715
1716         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1717         problem.
1718         (rs6000_emit_prologue): Invert logic.
1719         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1720         (reg:P 11) instead of match_operand.
1721         (*save_fpregs_<mode>): Likewise.
1722         (*restore_gpregs_<mode>): Likewise.
1723         (*return_and_restore_gpregs_<mode>): Likewise.
1724         (*return_and_restore_fpregs_<mode>): Likewise.
1725         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1726         (reg:P 11) insted of match_operand.
1727         (*restore_gpregs_spe): Likewise.
1728         (*return_and_restore_gpregs_spe): Likewise.
1729
1730 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
1731
1732         PR tree-optimization/37684
1733         * gcc.dg/graphite/pr37684.c: New.
1734         * graphite.c (exclude_component_ref): New.
1735         (is_simple_operand): Call exclude_component_ref.
1736
1737 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1738
1739         PR tree-optimization/36908
1740         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
1741         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
1742         (number_of_rw_in_partition): New.
1743         (partition_contains_all_rw): New.
1744         (ldist_gen): Do not distribute when one of the partitions
1745         contains all the memory operations.
1746
1747 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1748
1749         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
1750         EDGE_IRREDUCIBLE_LOOP.
1751
1752 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1753
1754         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
1755         where we have one entry point in the loop which isn't the head.
1756
1757 2008-11-03  Richard Guenther  <rguenther@suse.de>
1758
1759         PR middle-end/37573
1760         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
1761
1762 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
1763
1764         PR middle-end/37858
1765         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
1766         for ipa and simple ipa passes.
1767
1768 2008-11-02  Richard Guenther  <rguenther@suse.de>
1769
1770         PR tree-optimization/37542
1771         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
1772         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
1773         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
1774         (vn_nary_op_insert_stmt): Likewise.
1775         (visit_use): Likewise.
1776
1777 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
1778
1779         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
1780         (*swap): Remove.
1781         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
1782         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
1783         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
1784         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
1785         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
1786         peephole2's): Replace unspec with rotate.
1787         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
1788
1789 2008-11-02  Richard Guenther  <rguenther@suse.de>
1790
1791         PR tree-optimization/37991
1792         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
1793         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
1794         (set_ssa_val_to): Print if the value changed.
1795         (simplify_binary_expression): Strip useless conversions.
1796
1797 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
1798
1799         PR target/37939
1800         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
1801         operand.
1802
1803 2008-11-01  Richard Guenther  <rguenther@suse.de>
1804
1805         PR middle-end/37976
1806         * builtins.c (fold_builtin_strspn): Return a size_t.
1807         (fold_builtin_strcspn): Likewise.
1808
1809 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1810
1811         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
1812         attribute for struct return convention.
1813
1814 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1815
1816         * config/rs6000/crtsavres.asm: Really, really delete.
1817
1818 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1819
1820         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1821         problem.
1822         (rs6000_emit_prologue): Invert logic.
1823         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1824         (reg:P 11) instead of match_operand.
1825         (*save_fpregs_<mode>): Likewise.
1826         (*restore_gpregs_<mode>): Likewise.
1827         (*return_and_restore_gpregs_<mode>): Likewise.
1828         (*return_and_restore_fpregs_<mode>): Likewise.
1829         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1830         (reg:P 11) insted of match_operand.
1831         (*restore_gpregs_spe): Likewise.
1832         (*return_and_restore_gpregs_spe): Likewise.
1833
1834 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
1835
1836         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
1837         list of word switches that take args.
1838
1839 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
1840
1841         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
1842         (s390_output_pool_entry): Call it through for_each_rtx.
1843
1844         PR middle-end/37730
1845         * expr.c (store_constructor): For vectors, if target is a MEM, use
1846         target's MEM_ALIAS_SET instead of elttype alias set.
1847
1848 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
1849
1850         PR target/37909
1851         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
1852         no address.
1853
1854 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
1855
1856         PR target/37878
1857         * config/rs6000/predicates.md (word_offset_memref_operand):
1858         Restructure code and look inside auto-inc/dec addresses.
1859
1860 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
1861
1862         PR target/32277
1863         * libgcov.c ( __gcov_indirect_call_profiler): Check
1864         TARGET_VTABLE_USES_DESCRIPTORS.
1865
1866 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
1867
1868         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
1869         (INITIAL_FRAME_POINTER_OFFSET): Remove.
1870         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
1871         offset if eliminating soft frame pointer.
1872         * config/spu/spu.md (stack_protect_set, stack_protect_test)
1873         (stack_protect_test_si): Add initial machine description
1874         for Stack Smashing Protector
1875
1876 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1877
1878         PR 11492
1879         * c-common.c (min_precision): Move to...
1880         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
1881         * tree.h (tree_int_cst_min_precision): Declare.
1882         * c-common.h (min_precision): Delete declaration.
1883         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
1884         multiplication of non-negative integer constants.
1885         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
1886         tree_int_cst_min_precision.
1887         (finish_enum): Likewise.
1888
1889 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
1890
1891         PR middle-end/36578
1892         * convert.c (convert_to_real): Do not optimize conversions of
1893         binary arithmetic operations between binary and decimal
1894         floating-point types.  Consider mode of target type in determining
1895         decimal type for arithmetic.  Unless
1896         flag_unsafe_math_optimizations, do not optimize binary conversions
1897         where this may change rounding behavior.
1898         * real.c (real_can_shorten_arithmetic): New.
1899         * real.h (real_can_shorten_arithmetic): Declare.
1900
1901 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1902
1903         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
1904         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
1905         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
1906         appropriate.
1907         (must_save_p): For some workarounds, interrupts need to clobber a
1908         P register.
1909         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
1910         and LC1 for WA_05000257.
1911         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
1912         WA_05000283 and WA_05000315.
1913         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
1914         (movbi): Add alternative to set CC to 1; improve code for setting
1915         CC to 0.
1916         (dummy_load): New pattern.
1917
1918 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
1919
1920         PR middle-end/37870
1921         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
1922         BLKmode for non-memory, convert using a wider MODE_INT mode
1923         or through memory.
1924
1925         PR middle-end/37913
1926         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
1927         that haven't been removed yet.
1928
1929 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1930
1931         * config/bfin/bfin.c (struct machine_function): New member
1932         has_loopreg_clobber.
1933         (bfin_expand_movmem): Set it when generating memcpy insns.
1934         (n_regs_saved_by_prologue, expand_prologue_reg_save,
1935         expand_epilogue_reg_restore): If we have hardware loops,
1936         memcpy insns (indicated by has_loopreg_clobber) or function
1937         calls, we need to save the loop registers.
1938
1939 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
1940
1941         * config/i386/i386.c (core2_cost): Fix typos in comments.
1942
1943 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1944
1945         PR c/37924
1946         * combine.c (make_compound_operation): Don't call make_extraction with
1947         non-positive length.
1948         (simplify_shift_const_1): Canonicalize count even if complement_p.
1949
1950 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
1951
1952         * convert.c (strip_float_extensions): Do not remove or introduce
1953         conversions between binary and decimal floating-point types.
1954
1955 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1956
1957         PR middle-end/37931
1958         * fold-const.c (distribute_bit_expr): Convert common, left and
1959         right arguments to type.
1960
1961 2008-10-28  Nick Clifton  <nickc@redhat.com>
1962
1963         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
1964         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
1965         call_really_used_regs array rather than the call_used_regs array.
1966         (mn10300_get_live_callee_saved_regs, expand_prologue,
1967         expand_epilogue, output_tst): Likewise.
1968
1969 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
1970
1971         PR target/37378
1972         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
1973         (df_get_entry_block_def_set): Neither here.
1974         (df_get_regular_block_artificial_uses): Add EH_USES registers.
1975
1976         PR tree-optimization/37879
1977         * predict.c (tree_estimate_probability): Check if last_stmt is
1978         non-NULL before dereferencing it.
1979
1980 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1981
1982         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
1983         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
1984         (ira_fast_allocation): Remove the prototype.
1985
1986         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
1987         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
1988         (color_pass): Modify the updated costs.
1989         (ira_color): Rename to color.  Make it static.
1990         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
1991         (ira_color): New function.
1992
1993         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
1994         change.
1995
1996         * ira-lives.c (last_call_num, allocno_saved_at_call): New
1997         variables.
1998         (set_allocno_live, clear_allocno_live, mark_ref_live,
1999         mark_ref_dead): Invalidate corresponding element of
2000         allocno_saved_at_call.
2001         (process_bb_node_lives): Increment last_call_num.  Setup
2002         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
2003         allocno was already saved.
2004         (ira_create_allocno_live_ranges): Initiate last_call_num and
2005         allocno_saved_at_call.
2006
2007         * ira-build.c (ira_create_allocno): Initiate
2008         ALLOCNO_UPDATED_COVER_CLASS_COST.
2009         (create_cap_allocno, propagate_allocno_info,
2010         remove_unnecessary_allocnos): Remove setting updated costs.
2011         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
2012
2013         * ira.c (ira):  Don't call ira_fast_allocation.
2014
2015         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
2016         updated costs.
2017
2018 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2019
2020         PR middle-end/37813
2021         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
2022
2023         * ira-int.h (ira_hard_regno_cover_class): New.
2024
2025         * ira-lives.c (mark_reg_live, mark_reg_dead,
2026         process_bb_node_lives): Use ira_hard_regno_cover_class.
2027
2028         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
2029         (setup_hard_regno_cover_class): New function.
2030         (ira_init): Call setup_hard_regno_cover_class.
2031
2032         * ira-costs.c (cost_class_nums): Add comment.
2033         (find_allocno_class_costs): Initiate cost_class_nums.
2034         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
2035
2036 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2037
2038         PR middle-end/37884
2039         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
2040         Rename to copy_info_to_removed_store_destinations.  Propagate
2041         conflict hard regs and register stack attribute.
2042
2043 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2044
2045         PR middle-end/37316
2046         * pa.c (function_arg_padding):  Pad complex and vector types
2047         upward in 64-bit runtime.
2048         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2049
2050 2008-10-26  Matthias Klose  <doko@ubuntu.com>
2051
2052         * doc/install.texi: Document requirements on antlr.
2053
2054 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2055
2056         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2057         first.
2058
2059 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2060
2061         PR target/37841
2062         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
2063         is defined, use it to modify the constant offset.
2064
2065         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
2066
2067         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
2068         and short arguments to the correct location as mandated by the ABI.
2069
2070 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2071
2072         PR rtl-optimization/37769
2073         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2074
2075 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2076
2077         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2078         unwind-dw2-Os-4-200.o.
2079
2080 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
2081
2082         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
2083         (convert_for_assignment): Remove ic_argpass_nonproto cases.
2084
2085 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2086
2087         PR tree-optimization/36038
2088         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
2089         add sizetype IV with initial value zero instead of pointer type.
2090
2091 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2092
2093         PR c/7543
2094         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
2095         around bit operation.
2096         * profile.c (is_edge_inconsistent): Likewise.
2097         * fold-const.c (truth_value_p): Move from here...
2098         * tree.h (truth_value_p): ... to here.
2099         * c-tree.h (c_expr): Update description of original_code.
2100         * c-typeck.c (parser_build_unary_op): Set original_code.
2101         (parser_build_binary_op): Update call to warn_about_parentheses.
2102         * c-common.c (warn_about_parentheses): Take two additional
2103         arguments of the operands. Use a switch. Quote operators
2104         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
2105         Add warning about !x | y and !x & y.
2106         * c-common.h (warn_about_parentheses): Update declaration.
2107
2108 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2109
2110         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
2111         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
2112         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
2113         New variables.
2114         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
2115         (check-%): For test targets listed in lang_checks_parallelized
2116         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
2117         run the testing in multiple make goals, possibly parallel, and
2118         afterwards run dg-extract-results.sh to merge the sum and log files.
2119
2120 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
2121
2122         * config/mips/mips.c (mips_canonicalize_move_class): New function.
2123         (mips_move_to_gpr_cost): Likewise.
2124         (mips_move_from_gpr_cost): Likewise.
2125         (mips_register_move_cost): Make more fine-grained.
2126
2127 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
2128
2129         * graphite.c (graphite_apply_transformations): Check for
2130         -fgraphite-identity.
2131         * toplev.c (process_options): Add graphite_identity.
2132         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2133
2134 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2135
2136         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
2137         mulhisihl and mulhisihh builtins.
2138
2139         From Jie Zhang  <jie.zhang@analog.com>
2140         * config/bfin/bfin.md (composev2hi): Put operands into vector
2141         with correct order.
2142
2143 2008-10-22  Chao-ying Fu  <fu@mips.com>
2144
2145         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2146
2147 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
2148
2149         From Mike Frysinger  <michael.frysinger@analog.com>
2150         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
2151         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
2152         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
2153         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
2154         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
2155         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
2156         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
2157         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
2158         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
2159         __ADSPBF51x__ for all of them.
2160         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
2161         -mcpu bf512, bf514, bf516, and bf518.
2162         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2163         bf512-none, bf514-none, bf516-none, and bf518-none.
2164         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2165         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2166         * doc/invoke.texi (Blackfin Options): Document that
2167         -mcpu now accepts bf512, bf514, bf516, and bf518.
2168
2169 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2170
2171         PR middle-end/37882
2172         * fold-const.c (build_range_type): For 1 .. signed_max
2173         range call build_nonstandard_inter_type if signed_type_for
2174         returned a type with bigger precision.
2175
2176 2008-10-22  Richard Guenther  <rguenther@suse.de>
2177
2178         * tree.def (COMPLEX_TYPE): Constrain element type.
2179         * tree.c (build_complex_type): Assert that.
2180         * tree-ssa-structalias.c (could_have_pointers): Complex types
2181         cannot have pointers.
2182
2183 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2184
2185         PR c/30949
2186         * c-typeck.c (convert_for_assignment): Do not give declaration's
2187         location for builtins. Spell out which type was expected and which
2188         was given.
2189
2190 2008-10-22  Nick Clifton  <nickc@redhat.com>
2191
2192         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
2193         the fdpic register to be a target when running in fdpic mode.
2194
2195 2008-10-22 Rafael Espindola  <espindola@google.com>
2196
2197         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
2198         newly created statements.
2199
2200 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
2201
2202         PR target/37633
2203         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
2204         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
2205         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
2206
2207 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2208
2209         PR target/37880
2210         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
2211         Adjust -mcmodel=medium description for 2005-07-31 changes.
2212
2213 2008-10-22  Jan Hubicka  <jh@suse.cz>
2214             Jakub Jelinek  <jakub@redhat.com>
2215
2216         PR middle-end/35853
2217         * doc/invoke.texi: Remove references to obsoleted -d dumps.
2218
2219 2008-10-21  Richard Henderson  <rth@redhat.com>
2220
2221         PR 37815
2222         * emit-rtl.c (get_spill_slot_decl): Export.
2223         * emit-rtl.h (get_spill_slot_decl): Declare.
2224         * var-tracking.c (vt_add_function_parameters): Relax assertion
2225         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
2226
2227 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
2228
2229         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
2230         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
2231         of from insn.
2232
2233 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
2234
2235         PR middle-end/37669
2236         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
2237         processed by get_maxval_strlen.
2238
2239 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
2240
2241         PR target/35485
2242         * tree.c (get_file_function_name): Copy first_global_object_name.
2243         Centralize call to clean_symbol_name.
2244
2245 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
2246
2247         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
2248         * config/svr4.h (SVR4_ASM_SPEC): New.
2249         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2250         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2251
2252         * doc/invoke.texi (Option Summary): Add -T to linker options.
2253         (Link Options): Document -T.
2254
2255 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
2256
2257         * tree-inline.c (tree_inlinable_function_p): Remove tuples
2258         debugging hack.
2259
2260         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2261
2262         PR debug/37020
2263         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
2264
2265 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
2266
2267         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
2268         part of expression.
2269
2270 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
2271
2272         * doc/install.texi: Fix typos in previous patch.
2273
2274 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
2275
2276         * doc/install.texi: Document in-tree building of gcc and mpfr.
2277
2278 2008-10-19  Richard Guenther  <rguenther@suse.de>
2279
2280         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
2281
2282 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2283
2284         PR c/30260
2285         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
2286         (build_enumerator): Convert enumerators that fit in integer to
2287         integer type.
2288
2289 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
2290
2291         * config/i386/i386.md (unnamed peephole2): Do not force memory
2292         operands of arith or logical instructions into registers for
2293         non-TARGET_READ_MODIFY targets.
2294
2295         (ffs_cmove): Change operand 0 predicate to register_operand.
2296         Change operand 1 predicate to nonimmediate_operand.
2297         (ffsdi2): Ditto.
2298         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
2299
2300 2008-10-18  Richard Guenther  <rguenther@suse.de>
2301
2302         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
2303         VIEW_CONVERT_EXPR case against invalid gimple.
2304
2305 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2306
2307         * c-parser.c (c_parser_binary_expression): Silence the
2308         uninitialized variable warning emitted for binary_loc.
2309
2310 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
2311
2312         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
2313         translation cache.
2314
2315 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
2316
2317         PR c/33192
2318         * c-typeck.c (build_unary_op): Use omit_one_operand for
2319         IMAGPART_EXPR of real argument.
2320
2321 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2322
2323         PR tree-optimization/37664
2324         * fold-const.c (fold_binary): When optimizing comparison with
2325         highest or lowest type's value, don't consider TREE_OVERFLOW.
2326
2327 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
2328
2329         PR target/35483
2330         * Makefile.in (coverage.o): Depend on $(TM_P_H).
2331         * coverage.c: Include tm_p.h.
2332         * config/rs6000/x-aix (jc1): Override LDFLAGS.
2333         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
2334         dollar signs from PREFIX.
2335         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
2336         instead of manual strip_name_encoding.
2337
2338 2008-10-16  Richard Guenther  <rguenther@suse.de>
2339
2340         PR middle-end/37418
2341         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
2342         volatile qualified functions or methods as relevant.
2343
2344 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2345
2346         PR tree-optimization/37525
2347         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
2348         sizetype unsigned constants, both in the case of C and bounds.
2349
2350 2008-10-15  Jan Hubicka  <jh@suse.cz>
2351
2352         * ira-emit.c (change_regs): Return false when replacing reg by itself.
2353
2354 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
2355
2356         PR target/37633
2357         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
2358         HARD_REGNO_CALL_PART_CLOBBERED.
2359
2360 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2361
2362         PR middle-end/37535
2363         * ira-lives.c (mark_early_clobbers): Remove.
2364         (make_pseudo_conflict, check_and_make_def_use_conflicts,
2365         check_and_make_def_conflicts,
2366         make_early_clobber_and_input_conflicts,
2367         mark_hard_reg_early_clobbers): New functions.
2368         (process_bb_node_lives): Call
2369         make_early_clobber_and_input_conflicts and
2370         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
2371
2372         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
2373         early clobbers of pseudo-registers.
2374
2375 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2376
2377         PR middle-end/37674
2378         * ira-build.c (ira_flattening): Recalculate
2379         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
2380         from the scratch instead of the propagation.
2381
2382 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2383
2384         * doc/rtl.texi (const_double): Remove the "addr" operand.
2385         Describe CONST_DOUBLE_* macros under const_double rather
2386         than const_vector.
2387         (const_fixed): Fix the operand description.
2388         (const): Add an @findex directive.
2389         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
2390         after the constant rtl table.
2391         (fix): Combine floating-point and fixed-point descriptions.
2392         Fix hyphenation.
2393         * sched-deps.c (sched_analyze_2): Remove reference to
2394         CONST_DOUBLE_CHAIN.
2395
2396 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2397
2398         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
2399         UNSPEC_GOTSYM_OFFs.
2400         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
2401         for UNSPEC_GOTSYM_OFFs.
2402         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
2403         (add_GOT_to_pic_reg): Use it.
2404         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
2405
2406 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
2407             Harsha Jagasia  <harsha.jagasia@amd.com>
2408
2409         PR tree-optimization/37485
2410         * graphite.c (gmp_cst_to_tree): Moved.
2411         (iv_stack_entry_is_constant): New.
2412         (iv_stack_entry_is_iv): New.
2413         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
2414         (loop_iv_stack_insert_constant): New.
2415         (loop_iv_stack_pop): Use new datatpype.
2416         (loop_iv_stack_get_iv): Same.
2417         (loop_iv_stack_get_iv_from_name): Same.
2418         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
2419         (loop_iv_stack_patch_for_consts): New.
2420         (loop_iv_stack_remove_constants): New.
2421         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
2422         (translate_clast): Call loop_iv_stack_patch_for_consts and
2423         loop_iv_stack_remove_constants.
2424         (gloog): Use new datatype.  Redirect construction edge to end
2425         block to avoid accidental deletion.
2426         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
2427         iv stack entry.
2428         (union iv_stack_entry_data): New.  Data in iv stack entry.
2429         (struct iv_stack_entry): New.  Datatype for iv stack entries.
2430
2431 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2432
2433         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
2434         * graphite.c (free_scop): Same.
2435         (build_scops): Same.
2436         (free_scattering): New.
2437         (build_cloog_prog): Call free_scattering.
2438         (patch_phis_for_virtual_defs): Fix memleak.
2439         (graphite_trans_bb_strip_mine): Same.
2440         (limit_scops): Same.
2441
2442 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2443             Harsha Jagasia  <harsha.jagasia@amd.com>
2444
2445         PR tree-optimization/37828
2446         * graphite.c (graphite_trans_loop_block): Do not loop block
2447         single nested loops.
2448
2449 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2450
2451         PR tree-optimization/37686
2452         * tree-loop-linear.c (linear_transform_loops): Build a
2453         loop nest vector.  Pass it to lambda_compute_access_matrices.
2454         * tree-data-ref.h (struct access_matrix): Store the loop nest
2455         relative to which it encodes the information.
2456         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
2457         (am_vector_index_for_loop): Reimplemented: iterate over the
2458         loop nest for finding the loop index in the access matrix.
2459         (lambda_compute_access_matrices): Update declaration.
2460         * lambda-code.c (build_access_matrix): Pass the loop nest and
2461         record it.
2462         (lambda_compute_access_matrices): Same.
2463
2464 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
2465
2466         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
2467         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
2468         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
2469         already implies hard float.  Also fix several insn condition
2470         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
2471
2472 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
2473
2474         PR target/35483
2475         Based on patches by Laurent Vivier.
2476         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
2477         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
2478         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
2479         dollar sign to underscore.
2480         (ASM_OUTPUT_EXTERNAL): Same.
2481         (ASM_OUTPUT_LABELREF): New.
2482         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
2483
2484         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
2485         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
2486         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
2487         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
2488
2489 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
2490
2491         PR tree-optimization/36881
2492         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
2493         that each value doesn't need runtime relocations, for !flag_pic
2494         check that each value is just a valid initializer constant.
2495
2496 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
2497
2498         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
2499         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
2500         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
2501         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
2502         GR_AND_ACC_REGS.
2503         (REG_CLASS_NAMES): Update accordingly.
2504         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
2505         rather than an unpredictable descriptive string.
2506         * config/mips/mips.c (mips_register_move_cost): Remove comment.
2507         (mips_register_move_cost): Check for specific COP*_REGS classes,
2508         instead of ALL_COP_AND_GR_REGS.
2509         (mips_ira_cover_classes): New function.
2510         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
2511         (TARGET_IRA_COVER_CLASSES): Define.
2512
2513 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
2514
2515         PR c++/37553
2516         * tree.c (build_type_attribute_qual_variant): Hash on the
2517         unqualified type, and don't overwrite an existing
2518         (type_hash_eq): Make the TYPE_NAME of the types significant, to
2519         allow distinguishing between wchar_t and its underlying type. This
2520         also means that we'll retain a little more typedef information.
2521
2522 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
2523             Dmitry Melnik  <dm@ispras.ru>
2524             Dmitry Zhurikhin  <zhur@ispras.ru>
2525             Alexander Monakov  <amonakov@ispras.ru>
2526             Maxim Kuvyrkov  <maxim@codesourcery.com>
2527
2528         * target.h (struct gcc_target): Update prototypes of needs_block_p
2529         and gen_spec_check.
2530         * haifa-sched.c (create_check_block_twin): Update calls to the above.
2531         * sel-sched.c (create_speculation_check): Likewise.
2532         * doc/tm.texi: Provide documentation for new target hooks.
2533
2534         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
2535         (ia64_gen_spec_insn): Removed.
2536         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
2537         ia64_gen_spec_check): New static functions.
2538         (ia64_alloc_sched_context, ia64_init_sched_context,
2539         ia64_set_sched_context, ia64_clear_sched_context,
2540         ia64_free_sched_context, ia64_get_insn_spec_ds,
2541         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
2542         (ia64_needs_block_p): Change prototype.
2543         (ia64_gen_check): Rename to ia64_gen_spec_check.
2544         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
2545         into declaration, add special memory dependencies handling.
2546         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
2547         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
2548         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
2549         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
2550         Define new target hooks.
2551         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
2552         (ia64_optimization_options): Turn on selective scheduling with -O3,
2553         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
2554         default with selective scheduling.
2555         (ia64_override_options): Initialize align_loops and align_functions
2556         to 32 and 64, respectively.  Set global selective scheduling flags
2557         according to target-dependent flags.
2558         (rtx_needs_barrier): Support UNSPEC_LDS_A.
2559         (group_barrier_needed): Use new mstop-bit-before-check flag.
2560         Add heuristic.
2561         (dfa_state_size): Make global.
2562         (spec_check_no, max_uid): Remove.
2563         (mem_ops_in_group, current_cycle): New variables.
2564         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
2565         Initialize new variables.
2566         (is_load_p, record_memory_reference): New functions.
2567         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
2568         reached.
2569         (ia64_variable_issue): Change use of current_sched_info to
2570         sched_deps_info.  Update comment.  Note if a load or a store is issued.
2571         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
2572         advance if maximal number of loads or stores was issued on current
2573         cycle.
2574         (scheduled_good_insn): New static helper function.
2575         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
2576         a group barrier is needed.  Fix vertical spacing.  Guard the code
2577         doing state transition with last_scheduled_insn check.
2578         Mark that a stop bit should be before current insn if there was a
2579         cycle advance.  Update current_cycle and mem_ops_in_group.
2580         (ia64_h_i_d_extended): Change use of current_sched_info to
2581         sched_deps_info. Reallocate stops_p by larger chunks.
2582         (struct _ia64_sched_context): New structure.
2583         (ia64_sched_context_t): New typedef.
2584         (ia64_alloc_sched_context, ia64_init_sched_context,
2585         ia64_set_sched_context, ia64_clear_sched_context,
2586         ia64_free_sched_context): New static functions.
2587         (gen_func_t): New typedef.
2588         (get_spec_load_gen_function): New function.
2589         (SPEC_GEN_EXTEND_OFFSET): Declare.
2590         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
2591         (get_mode_no_for_insn): Change the condition that prevents use of
2592         special hardware registers so it can now handle pseudos.
2593         (get_spec_unspec_code): New function.
2594         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
2595         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
2596         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
2597         during selective scheduling.
2598         (ia64_speculate_insn): Use ds_get_speculation_types when
2599         determining whether we need to change the pattern.
2600         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
2601         (ia64_spec_check_src_p): Support new speculation/check codes.
2602         (struct bundle_state): New field.
2603         (issue_nops_and_insn): Initialize it.
2604         (insert_bundle_state): Minimize mid-bundle stop bits.
2605         (important_for_bundling_p): New function.
2606         (get_next_important_insn): Use important_for_bundling_p.
2607         (bundling): When shifting TImode from unimportant insns, ignore
2608         also group barriers.  Assert that best state is found before
2609         the backward bundling pass.  Print number of mid-bundle stop bits.
2610         Minimize mid-bundle stop bits.  Check correct calculation of
2611         mid-bundle stop bits.
2612         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
2613         (final_emit_insn_group_barriers): Emit stop bits before insns starting
2614         a new cycle.
2615         (sel2_run): New variable.
2616         (ia64_reorg): When flag_selective_scheduling2 is set, run the
2617         selective scheduling pass instead of schedule_ebbs.
2618
2619         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
2620         (UNSPEC_LDS_A): New UNSPEC.
2621         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
2622         movti_internal, movsf_internal, movdf_internal,
2623         movxf_internal): Make visible.  Add speculable* attributes.
2624         (output_c_nc): New mode attribute.
2625         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
2626         mov<mode>_nc, zero_extend<mode>di2_nc,
2627         advanced_load_check_nc_<mode>): New insns.
2628         (zero_extend*): Add speculable* attributes.
2629
2630         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
2631         (msched-stop-bits-after-every-cycle): Likewise.
2632         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
2633         Likewise.
2634         (msched-spec-verbose): Remove.
2635         (msched-prefer-non-data-spec-insns,
2636         msched-prefer-non-control-spec-insns,
2637         msched-count-spec-in-critical-path,
2638         msel-sched-dont-check-control-spec): Use Target  Report Var
2639         instead of Common Report Var.
2640
2641         * config/ia64/itanium2.md: Remove incorrect bypass.
2642
2643         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
2644
2645 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
2646
2647         PR middle-end/37805
2648         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
2649         and -fhelp=separate.
2650
2651 2008-10-14  Ben Elliston  <bje@au.ibm.com>
2652
2653         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
2654
2655 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
2656
2657         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
2658         non-integer modes.
2659
2660 2008-10-13  Matthias Klose  <doko@ubuntu.com>
2661
2662         * config/pa/linux-atomic.c: Work around missing header file
2663         for hppa64-linux-gnu targets.
2664
2665 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2666             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
2667             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2668             Grace Cao  <grace_cao@playstation.sony.com>
2669
2670         * doc/invoke.texi (-mgen-cell-microcode): Document.
2671         (-mwarn-cell-microcode): Document.
2672         * cfglayout.c (locator_location): Export.
2673         * rtl.h (locator_location): Define prototype.
2674         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
2675         New predicate.
2676         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
2677         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
2678         (mwarn-cell-microcode): New option.
2679         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
2680         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
2681         cell and not already set.
2682         Turn off string instructions if not generating cell microcode.
2683         (rs6000_final_prescan_insn): New function that warns about microcoded
2684         instructions.
2685         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
2686         * config/rs6000/rs6000.md
2687         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
2688         the instruction would have been microcoded on the Cell.  Set
2689         cell_micro to always on unnamed patterns for the string instructions.
2690         (cell_micro): Update definition, remove load/store conditional
2691         microcoded.
2692         (sign_extend:DI): Define new pattern for non microcoded version.
2693         (sign_extend:SI): Likewise.
2694         (compare (div:P)): Set cell_micro to not.
2695         (andsi3): Define as an expand.
2696         (andsi3_mc): New pattern.
2697         (andsi3_nomc): New pattern.
2698         (andsi3_internal0_nomc): New pattern.
2699         (andsi3_internal2): Rename to ...
2700         (andsi3_internal2_mc): this and enable iff generating microcode.
2701         (andsi3_internal3): Rename to ...
2702         (andsi3_internal3_mc): this and enable iff generating microcode.
2703         (andsi3_internal4): Enable iif generating microcode.
2704         (andsi3_internal5): Rename to ..
2705         (andsi3_internal5_mc): this and enable iff generating microcode.
2706         (andsi3_internal5_nomc): New pattern.
2707         (extzvdi_internal1): Enable iff generating microcode.
2708         (extzvdi_internal2): Likewise.
2709         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
2710         (anddi3): Change to expand.
2711         (anddi3_mc): Rename from anddi3.
2712         (anddi3_no_mc): New pattern.
2713         (anddi3_internal2): Rename to ..
2714         (anddi3_internal2_mc): this and enable iff generating microcode.
2715         (anddi3_internal2_nomc): New pattern.
2716         (anddi3_internal3): Rename to ..
2717         (anddi3_internal3_mc): this and enable iff generating microcode.
2718         (anddi3_internal3_nomc): New pattern.
2719         (movti_string): Set cell_micro to always if TARGET_STRING.
2720         (stmsi8): Set cell_micro to always.
2721         (stmsi7): Likewise.
2722         (stmsi6): Likewise.
2723         (stmsi5): Likewise.
2724         (stmsi4): Likewise.
2725         (stmsi3): Likewise.
2726         (stmsi8_power): Likewise.
2727         (stmsi7_power): Likewise.
2728         (stmsi6_power): Likewise.
2729         (stmsi5_power): Likewise.
2730         (stmsi4_power): Likewise.
2731         (stmsi3_power): Likewise.
2732         (movsi_update2): Enable iff generating microcode.
2733         (movhi_update3): Likewise.
2734         (lmw): Set cell_micro to always.
2735
2736 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
2737
2738         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
2739         * config/s390/s390.c (machine_function): Remove
2740         decomposed_literal_pool_addresses_ok_p.
2741         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
2742         the difference of two labels.
2743         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
2744         (s390_pool_offset): New function.
2745         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
2746         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
2747
2748 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
2749
2750         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
2751         (powerpc*-*-linux-gnu*): Describe.
2752         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
2753         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
2754         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
2755         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
2756         config/rs6000/e500crtres32gpr.asm,
2757         config/rs6000/e500crtres64gpr.asm,
2758         config/rs6000/e500crtres64gprctr.asm,
2759         config/rs6000/e500crtrest32gpr.asm,
2760         config/rs6000/e500crtrest64gpr.asm,
2761         config/rs6000/e500crtresx32gpr.asm,
2762         config/rs6000/e500crtresx64gpr.asm,
2763         config/rs6000/e500crtsav32gpr.asm,
2764         config/rs6000/e500crtsav64gpr.asm,
2765         config/rs6000/e500crtsav64gprctr.asm,
2766         config/rs6000/e500crtsavg32gpr.asm,
2767         config/rs6000/e500crtsavg64gpr.asm,
2768         config/rs6000/e500crtsavg64gprctr.asm: Use it.
2769         * config/rs6000/crtsavres.asm: Really remove.
2770
2771 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
2772
2773         Fix PR/25502
2774         * c-format.c (convert_format_name_to_system_name): Use
2775         TARGET_OVERRIDES_FORMAT_INIT.
2776         * config.gcc (extra_options): Add for mingw targets mingw.opt.
2777         * config/i386/mingw.opt: New.
2778         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
2779         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
2780         (ms_printf_length_specs): Removed const specifier.
2781         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
2782         * doc/invoke.texi (Wno-pedantic-ms-format): New.
2783
2784 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2785
2786         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
2787         * doc/install.texi: Bump recommended MPFR to 2.3.2.
2788
2789 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2790
2791         PR middle-end/37808
2792         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
2793         sure that ref has valid bb.
2794
2795 2008-10-12  Richard Henderson  <rth@redhat.com>
2796
2797         PR middle-end/37447
2798         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
2799         * alias.c (value_addr_p, stack_addr_p): Remove.
2800         (nonoverlapping_memrefs_p): Remove IRA special case.
2801         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
2802         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
2803         * reload1.c (alter_reg): Use it.
2804
2805 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
2806
2807         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
2808         of registers instead of eax, ebx, ecx and edx.  Use for loop
2809         and check register for non-zero value before the call
2810         to decode_caches_intel.
2811
2812 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2813
2814         PR rtl-optimization/37448
2815         * df.h: (df_ref_class): New enum.
2816         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
2817         (struct df_ref): Replaced with union df_ref_d.
2818         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
2819         New members of df_ref_d union.
2820         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
2821         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
2822         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
2823         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
2824         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
2825         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
2826         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
2827         (df_scan_bb_info, df_bb_regno_first_def_find,
2828         df_bb_regno_last_def_find, df_find_def, df_find_use,
2829         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2830         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
2831         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
2832         df_get_artificial_defs, df_get_artificial_uses, union_defs)
2833         Replaced struct df_ref * with df_ref.
2834         * df-scan.c (df_collection_rec, df_null_ref_rec,
2835         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
2836         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
2837         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
2838         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
2839         df_reorganize_refs_by_reg_by_reg,
2840         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
2841         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
2842         df_sort_and_compress_refs, df_install_ref, df_install_refs,
2843         df_ref_record, df_get_conditional_uses, df_get_call_refs,
2844         df_bb_refs_record, df_exit_block_uses_collect,
2845         df_record_exit_block_uses, df_reg_chain_mark,
2846         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
2847         df_ref * with df_ref.
2848         (df_ref_record, df_uses_record, df_ref_create_structure): Added
2849         df_ref_class parameter.
2850         (df_scan_problem_data): Added new pools for different types of refs.
2851         (df_scan_free_internal, df_scan_alloc, df_free_ref,
2852         df_ref_create_structure): Processed new ref pools.
2853         (df_scan_start_dump): Added counts of refs and insns.
2854         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
2855         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
2856         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
2857         code to pass df_ref_class down to ref creation functions.
2858         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
2859         df_reg_chain_mark): Use macros to hide references to df_refs.
2860         (df_ref_chain_change_bb): Removed.
2861         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
2862         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
2863         Enhanced to understand df_ref union structure.
2864         * fwprop.c (local_ref_killed_between_p, use_killed_between,
2865         all_uses_available_at, update_df, try_fwprop_subst,
2866         forward_propagate_subreg, forward_propagate_and_simplify,
2867         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
2868         df_ref * with df_ref.
2869         (use_killed_between, all_uses_available_at): Use macros to hide
2870         references to df_refs.
2871         * regstat.c (regstat_bb_compute_ri,
2872         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
2873         df_ref.
2874         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
2875         see_handle_relevant_refs, see_analyze_one_def,
2876         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
2877         struct df_ref * with df_ref.
2878         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
2879         global_conflicts): Replaced struct df_ref * with df_ref.
2880         * ddg.c (create_ddg_dep_from_intra_loop_link,
2881         add_cross_iteration_register_deps, build_inter_loop_deps):
2882         Replaced struct df_ref * with df_ref.
2883         (create_ddg_dep_from_intra_loop_link,
2884         add_cross_iteration_register_deps): Use macros to hide references
2885         to df_refs.
2886         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
2887         df_ref * with df_ref.
2888         * df-core.c (df_bb_regno_first_def_find,
2889         df_bb_regno_last_def_find, df_find_def, df_find_use,
2890         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2891         debug_df_ref): Replaced struct df_ref * with df_ref.
2892         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
2893         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
2894         df_ref.
2895         * web.c (union_defs, entry_register, replace_ref, web_main):
2896         Replaced struct df_ref * with df_ref.
2897         (union_defs, replace_ref): Use macros to hide references to df_refs.
2898         * global.c (compute_regs_asm_clobbered, build_insn_chain):
2899         Replaced struct df_ref * with df_ref.
2900         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
2901         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
2902         Replaced struct df_ref * with df_ref.
2903         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
2904         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
2905         with df_ref.
2906         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
2907         * df-byte-scan.c (df_compute_accessed_bytes_extract,
2908         df_compute_accessed_bytes_strict_low_part,
2909         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
2910         Replaced struct df_ref * with df_ref.
2911         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
2912         * init-regs.c (initialize_uninitialized_regs): Replaced struct
2913         df_ref * with df_ref.
2914         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
2915         check_dependency, check_dependencies, record_uses): Replaced
2916         struct df_ref * with df_ref.
2917         (invariant_for_use, check_dependency): Use macros to hide
2918         references to df_refs.
2919         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
2920         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
2921         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
2922         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
2923         references to df_refs.
2924         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
2925         with df_ref.
2926         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
2927         * df-problems.c (df_rd_bb_local_compute_process_def,
2928         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
2929         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
2930         df_chain_remove_problem, df_chain_create_bb_process_use,
2931         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
2932         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
2933         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
2934         df_byte_lr_simulate_artificial_refs_at_top,
2935         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
2936         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
2937         df_simulate_uses, df_simulate_artificial_refs_at_end,
2938         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
2939         df_ref.
2940         (df_chain_dump): Use macros to hide references to df_refs.
2941         * config/mips/mips.c (r10k_simplify_address): Replaced struct
2942         df_ref * with df_ref.
2943         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
2944         mark_artificial_uses, mark_reg_dependencies,
2945         byte_dce_process_block): Replaced struct df_ref * with df_ref.
2946
2947 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2948
2949         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
2950         head comment.
2951         (array_ref_element_size): Likewise.
2952         (array_ref_low_bound): Likewise.
2953         (array_ref_up_bound): Likewise.
2954         * expr.c (contains_packed_reference): Likewise.
2955         (array_ref_element_size): Likewise.
2956         (array_ref_low_bound): Likewise.
2957         (array_ref_up_bound): Likewise.
2958         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
2959         with ARRAY_RANGE_REF.
2960         (idx_find_step): Likewise.
2961         (idx_record_use): Likewise.
2962         (strip_offset_1): Likewise.
2963         (idx_remove_ssa_names): Likewise.
2964
2965 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
2966             Andi Kleen  <ak@linux.intel.com>
2967
2968         * config/i386/cpuid.h (__cpuid_count): New defines.
2969         * config/i386/driver-i386.c (struct cache_desc): New structure.
2970         (describe_cache): Use struct cache_desc to pass cache descriptions.
2971         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
2972         (detect_caches_amd): Use struct cache_desc to describe caches.
2973         (decode_caches_intel): Use struct cache_desc to pass cache
2974         descriptions.  Update descriptions to match latest (rev -032,
2975         December 2007) CPUID documentation.  Do not check valid bit here.
2976         Check for Xeon MP value 0x49 problems.
2977         (detect_caches_cpuid2): New function, split from detect_caches_intel.
2978         Check valid bit before calling decode_caches_intel.  Detect number
2979         of times to repeat CPUID instruction.
2980         (detect_caches_cpuid4): New function.
2981         (detect_caches_intel): Depending on max_level, call
2982         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
2983         only when other methods fail to provide valid L2 cache description.
2984
2985 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2986
2987         PR middle-end/37608
2988         * pa.md (call, call_value): Generate an rtx for register r4 and pass
2989         it to PIC call patterns.
2990         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
2991         code generation and attributes from pattern.  Change peephole2 to
2992         split for noreturn case.  Revise split pattern for non noreturn case.
2993         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
2994         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
2995         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
2996         asserts.
2997
2998 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
2999
3000         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
3001         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
3002         and fp_type.
3003         (divdf3): Reformat long line.
3004
3005 2008-10-11  Michael J. Eager  <eager@eagercon.com>
3006
3007         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
3008         -mfpu options.
3009         (rs6000_handle_option): Process -mfpu options.
3010         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
3011         (enum fpu_type_t): New.
3012         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
3013         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
3014         fp_type.
3015         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
3016         (floatdidf2): Add TARGET_SINGLE_FPU condition.
3017         * config/rs6000/rs6000.opt (-mfpu): New.
3018         (-mxilinx-fpu): New.
3019         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
3020         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
3021         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
3022         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
3023         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
3024
3025 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
3026
3027         PR target/35760
3028         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
3029         LO_SUM on Darwin if mode has just one unit.
3030
3031 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
3032
3033         PR debug/37002
3034         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
3035         has been optimized out.
3036
3037 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
3038
3039         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
3040         instead of PIC_DIRECT_ADDR_P.
3041         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3042         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
3043         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
3044         (PIC_OFFSET_P): Rename to...
3045         (PCREL_SYMOFF_P): ...this.
3046         (PIC_DIRECT_ADDR_P): Delete.
3047         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
3048         PIC_OFFSET_P.
3049         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
3050         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
3051         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
3052         * config/sh/sh.c (print_operand): Remove CONST handling.
3053         (unspec_caller_rtx_p): Rewrite to use split_const and check
3054         the operands of UNSPEC bases.
3055         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
3056         with (unspec [A B] UNSPEC_SYMOFF).
3057         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
3058         UNSPEC_PCREL_SYMOFF.
3059         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3060         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
3061         (UNSPEC_EXTRACT_U16): Likewise.
3062         (UNSPEC_SYMOFF): Likewise.
3063         (UNSPEC_PCREL_SYMOFF): Likewise.
3064         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
3065         of constants.
3066         (movsi_const_16bit): Likewise.
3067         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
3068         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
3069         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
3070         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
3071         with (unspec [A B] UNSPEC_SYMOFF).
3072         (symPLT_label2reg): Replace (minus A (minus B pc)) with
3073          (unspec [A B] PCREL_UNSPEC_SYMOFF).
3074         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
3075         (Csu): Likewise UNSPEC_EXTRACT_U16.
3076         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3077         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
3078
3079 2008-10-10  Stepan Kasal  <skasal@redhat.com>
3080
3081         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
3082         for loop strip mining and loop blocking.
3083
3084 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3085
3086         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
3087         vary types depending on debug info.
3088
3089 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3090
3091         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
3092         before ensuring it's already computed.
3093
3094 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
3095
3096         * rtl.h (locator_eq): New decl.
3097         * cfglayout.c (locator_scope): New function.
3098         (insn_scope): Use it.
3099         (locator_eq): New function.
3100         (fixup_reorder_chain): Search for last insn in src bb
3101         that has locator set or first insn in dest bb.  Use
3102         locator_eq instead of == to compare locators.
3103         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
3104         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
3105         == to compare locators.
3106
3107         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
3108         as used.
3109         * gimple-low.c (lower_function_body, lower_gimple_return,
3110         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
3111         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
3112         goto_block on edges if goto_locus is known.
3113
3114         PR middle-end/37774
3115         * tree.h (get_object_alignment): Declare.
3116         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
3117         get_object_alignment if needed.
3118         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
3119         handling to ...
3120         (get_object_alignment): ... here.  New function.  Try harder to
3121         determine alignment from get_inner_reference returned offset.
3122
3123 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3124
3125         * graphite.c (gloog): Don't call find_unreachable_blocks
3126         before delte_unreachable_blocks.
3127
3128         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
3129         goto_locus of true_edge into RTL locator.
3130
3131 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
3132
3133         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
3134         (*jcc_btdi_mask_rex64): Ditto.
3135         (*jcc_btsi): Ditto.
3136         (*jcc_btsi_mask): Ditto.
3137         (*jcc_btsi_1): Ditto.
3138         (*jcc_btsi_mask_1): Ditto.
3139
3140 2008-10-08  Paul Brook  <paul@codesourcery.com>
3141
3142         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
3143         compatible profiler (__gnu_mcount_nc).
3144         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3145
3146 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3147
3148         * config/i386/i386.c (initial_ix86_tune_features): Add
3149         X86_TUNE_USE_VECTOR_FP_CONVERTS.
3150         * config/i386/i386.h (ix86_tune_indices): Likewise.
3151         (TARGET_USE_VECTOR_FP_CONVERTS): New.
3152
3153         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
3154         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
3155         for FP to FP splitters.
3156
3157 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3158
3159         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
3160         splitter.
3161
3162 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3163
3164         PR target/36635
3165         PR target/37290
3166         PR rtl-optimization/37341
3167         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
3168         to ORIG_BB, pass through ORIG_BB recursively.
3169         (cse_condition_code_reg): Adjust caller.
3170
3171 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
3172
3173         * sdbout.c (sdbout_one_type): Treat the value type
3174         CONST_DECL for enumerals.
3175
3176 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3177
3178         * config/i386/i386.md: Remove trailing white spaces.
3179
3180 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3181
3182         PR rtl-optimization/37448
3183         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
3184         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
3185         Make unsigned long.
3186         (struct output_info) [count]: Renamed total_created and made
3187         unsigned long.
3188         (struct output_info) [size]: Renamed total_allocated and made
3189         unsigned long.
3190         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
3191         Properly keep track of desc->size.
3192         (print_statistics, dump_alloc_pool_statistics): Enhance the
3193         printing of statistics to print the number of elements and to use
3194         unsigned longs.
3195
3196 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3197
3198         PR middle-end/37576
3199         * opts.h (CL_SAVE): Move up to flags range.
3200         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
3201         CL_COMMON): Renumber.
3202         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
3203         * opts.c (common_handle_option): Revert last change.
3204
3205 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3206
3207         * config/i386/i386-protos.h (ix86_schedule): New.
3208
3209         * config/i386/i386.c (ix86_schedule): New.
3210         (override_options): Add schedule to processor_alias_table.  Set
3211         ix86_schedule from the schedule field in processor_alias_table.
3212         (ix86_function_specific_save): Save ix86_schedule.
3213         (ix86_function_specific_restore): Restore ix86_schedule.
3214
3215         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
3216         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
3217         and generic32.
3218
3219         * config/i386/i386.opt: Add schedule.
3220
3221         * config/i386/ppro.md: Remove generic32.
3222
3223 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
3224
3225         PR c/35437
3226         * expr.c (count_type_elements): Handle ERROR_MARK.
3227
3228 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3229
3230         PR debug/29609
3231         PR debug/36690
3232         PR debug/37616
3233         * basic-block.h (struct edge_def): Add goto_block field.
3234         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
3235         one insn with locus corresponding to edge's goto_locus if !optimize.
3236         * profile.c (branch_prob): Copy edge's goto_block.
3237         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
3238         emitted jumps.
3239         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
3240         locator in between the merged basic blocks if !optimize and needed.
3241         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
3242         goto_locus into RTL locator.  For unconditional jump use that
3243         locator for the jump insn.
3244         (expand_gimple_cond): Convert goto_block and goto_locus into
3245         RTL locator for all remaining edges.  For unconditional jump
3246         use that locator for the jump insn.
3247         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
3248         there is more than one edge or insn locator along the forwarding
3249         edges and !optimize.  If there is just one, set e->goto_locus.
3250         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
3251         edge's goto_block.
3252         (move_block_to_fn): Adjust edge's goto_block.
3253
3254 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3255
3256         PR middle-end/37731
3257         * expmed.c (expand_mult): Properly check DImode constant in
3258         CONST_DOUBLE.
3259
3260 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3261
3262         PR debug/37738
3263         * dwarf2out.c (common_block_die_table): New variable.
3264         (common_block_die_table_hash, common_block_die_table_eq): New
3265         functions.
3266         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
3267         COMMON block in the current scope rather than globally.  Optimize
3268         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
3269         DW_OP_addr SYMBOL_REF+off.
3270
3271 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
3272
3273         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
3274         Return true for non-addressable GIMPLE operands.
3275
3276 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3277
3278         PR target/24765
3279         * config/i386/i386.c (initial_ix86_tune_features): Remove
3280         X86_TUNE_USE_BIT_TEST.
3281         * config/i386/i386.h (ix86_tune_indices): Likewise.
3282         (TARGET_USE_BIT_TEST): Removed.
3283
3284 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3285
3286         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
3287
3288 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
3289
3290         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
3291         (mul<mode>3_mul3): ... into this new template.
3292
3293 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3294
3295         * gimplify.c (gimplify_arg): Add location argument.  Use it.
3296         (gimplify_call_expr): Pass location to gimplify_arg.
3297         (gimplify_modify_expr_to_memcpy): Same.
3298         (gimplify_modify_expr_to_memset): Same.
3299
3300 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3301
3302         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3303         Update calls to build_unary_op and build_indirect_ref for location
3304         changes.
3305
3306 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3307
3308         build_modify_expr.
3309         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
3310         * c-typeck.c (array_to_pointer_conversion): Pass location to
3311         build_unary_op.
3312         (function_to_pointer_conversion): Use error_at and warning_at.
3313         (build_indirect_ref): Same.
3314         (build_array_ref): Pass location to build_binary_op.
3315         (parser_build_unary_op): Do not set location after calling
3316         build_unary_op.
3317         (build_unary_op): Add location argument.  Use it throughout.  Set
3318         EXPR_LOCATION before returning new tree.
3319         (build_modify_expr): Same.
3320         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
3321         returning node.
3322         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
3323         build_indirect_ref, build_modify_expr.
3324         (c_finish_omp_for): Same.  Use error_at instead of error.
3325         * c-common.c (c_common_truthvalue_conversion): Pass location to
3326         build_unary_op.
3327         (warn_for_div_by_zero): Add location argument.
3328         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
3329         build_unary_op, warn_for_div_by_zero.
3330         * c-parser.c (c_parser_typeof_specifier): Use
3331         protected_set_expr_location.
3332         (c_parser_statement_after_labels): Same.
3333         (c_parser_condition): Same.
3334         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
3335         (c_parser_conditional_expression): Use protected_set_expr_location.
3336         (c_parser_unary_expression): Pass location to build_indirect_ref.
3337         (c_parser_postfix_expression_after_primary): Pass location to
3338         build_indirect_ref, build_unary_op.
3339         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
3340
3341 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
3342
3343         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
3344         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
3345         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
3346         r14000 and r16000.
3347         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
3348         (mips_issue_rate): Handle PROCESSOR_R10000.
3349         * config/mips/mips.md (cpu): Add r10000.
3350         Include r10000.md.
3351         * config/mips/10000.md: New file.
3352
3353 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3354
3355         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
3356         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
3357         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
3358
3359 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3360
3361         * config/darwin-protos.h (machopic_function_base_name): Delete.
3362         (machopic_function_base_sym): Likewise.
3363         (machopic_gen_offset): Declare.
3364         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
3365         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
3366         * config/darwin.c (machopic_function_base_name): Delete.
3367         (machopic_function_base_sym): Likewise.
3368         (gen_pic_offset): Rename to...
3369         (machopic_gen_offset): ...this and remove the pic_base argument.
3370         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
3371         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
3372         crtl->uses_pic_offset_table.
3373         (machopic_indirect_data_reference): Use new machopic_gen_offset
3374         interface.
3375         (machopic_legitimize_pic_address): Likewise.
3376         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
3377
3378         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
3379         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
3380         * config/i386/i386.c (output_set_got): Likewise.
3381         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
3382         instead of a MINUS.
3383         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
3384         (legitimate_address_p): Likewise.
3385         (output_pic_addr_const): Likewise.
3386         (output_addr_const_extra): Likewise.
3387         (ix86_delegitimize_address): Expect darwin_local_data_pic to
3388         match an UNSPEC rather than a MINUS.
3389         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
3390         (builtin_setjmp_receiver): Use machopic_gen_offset.
3391         * config/i386/predicates.md (pic_symbolic_operand): Handle
3392         UNSPEC_MACHOPIC_OFFSET.
3393
3394         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3395         Use machopic_gen_offset and machopic_operand_p.
3396         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
3397         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
3398         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
3399         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
3400         Set crtl->uses_pic_offset_table.
3401
3402 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3403
3404         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
3405         Declare.
3406         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
3407         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
3408         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
3409         (constant_pool_expr_p): Use split_const and check the base.
3410         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
3411         instead of a MINUS.
3412         (legitimate_constant_pool_address_p): Check toc_relative_p
3413         instead of constant_pool_expr_p.
3414         (print_operand_address): Always use output_addr_const for
3415         constant pool addresses.
3416         (rs6000_output_addr_const_extra): New function.
3417         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
3418
3419 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
3420
3421         PR middle-end/37535
3422
3423         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3424         (mark_ref_live, mark_ref_dead): Use them.
3425         (def_conflicts_with_inputs_p): Remove.
3426         (mark_early_clobbers): New function.
3427         (process_bb_node_lives): Call preprocess_constraints and
3428         mark_early_clobbers.
3429
3430         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
3431
3432 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
3433
3434         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
3435         lib with -mthread switch.
3436
3437 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
3438
3439         PR c++/37410
3440         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
3441         function in two, making it call a new and reusable
3442         dwarf2out_imported_module_or_decl() that takes the containing
3443         BLOCK of the declaration in argument.
3444         (dwarf2out_imported_module_or_decl_real): New function.
3445         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
3446         IMPORTED_DECL in account.
3447         * tree.def: Added IMPORTED_DECL node type.
3448         * tree.h: Added accessors for IMPORTED_DECL nodes.
3449         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
3450
3451 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3452
3453         * doc/gimple.texi: Fix some typos, wrap some long lines,
3454         fix some broken wraps with continuations.
3455         * tree-ssa-reassoc.c: Fix comment typos.
3456
3457 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3458
3459         PR target/37603
3460         * pa.c (legitimize_pic_address): Force function labels to memory in
3461         word mode.
3462
3463 2008-10-04  Anton Blanchard  <anton@samba.org>
3464
3465         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
3466         (rs6000_split_atomic_op): Same.
3467         (rs6000_split_compare_and_swap): Same.
3468         (rs6000_split_compare_and_swapqhi): Same.
3469
3470 2008-10-04  Richard Guenther  <rguenther@suse.de>
3471
3472         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
3473         instead of pointer equality.
3474         (vn_nary_op_eq): Likewise.
3475
3476 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3477
3478         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
3479         condition.
3480         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
3481         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
3482
3483 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
3484
3485         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3486         Revert previous change.
3487
3488 2008-10-03  Tom Tromey  <tromey@redhat.com>
3489
3490         * stringpool.c (ggc_alloc_string): Terminate string.
3491
3492 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
3493
3494         * gimplify.c (gimplify_function_tree): For -finstrument-functions
3495         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
3496         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
3497
3498         PR debug/37726
3499         * gimplify.c (declare_vars): Use gimple_bind_block instead of
3500         gimple_block.
3501
3502 2008-10-03  Pascal Obry  <obry@adacore.com>
3503
3504         * gcov.c (create_file_names): Properly handle UNIX and DOS
3505         directory separators.
3506         (make_gcov_file_name): Likewise + convert the ':' DOS drive
3507         separator to '~' to ensure clean filenames on Windows.
3508
3509 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3510
3511         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3512         Add a null terminator to the stripped name.
3513
3514 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
3515
3516         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
3517         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3518         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
3519         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
3520         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3521         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
3522         TARGET_SINGLE_FLOAT.
3523
3524 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
3525
3526         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
3527
3528 2008-10-02  Richard Guenther  <rguenther@suse.de>
3529
3530         PR middle-end/37713
3531         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
3532         and VECTOR_TYPE recurse with useless_type_conversion_p which
3533         properly handles void pointer conversion.
3534
3535 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3536
3537         PR target/37528
3538         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
3539         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
3540
3541 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3542
3543         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3544         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
3545         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
3546         they translate to non builtins.
3547         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
3548         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
3549         __builtin_vec_promote, __builtin_vec_extract, and
3550         __builtin_vec_insert.
3551         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
3552         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
3553         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
3554         * config/rs6000/altivec.h (vec_extract): Define
3555         (vec_insert): Define.
3556         (vec_splats): Define.
3557         (vec_promote): Define.
3558
3559 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3560             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
3561             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
3562
3563         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
3564         Altivec intrinsics.
3565         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
3566         prototype.  Add new parameter, blk.
3567         Use BLKmode for the MEM if blk is true.
3568         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
3569         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
3570         ALTIVEC_BUILTIN_STVRXL.
3571         Update usage of altivec_expand_lv_builtin.
3572         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
3573         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
3574         (altivec_init_builtins): If compiling for the Cell, also define the
3575         cell VMX builtins.
3576         * config/rs6000/rs6000.h (rs6000_builtins): Define
3577         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
3578         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
3579         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
3580         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
3581         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
3582         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
3583         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
3584         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
3585         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
3586         UNSPEC_STVRX, and UNSPEC_STVRXL.
3587         (altivec_lvlx): New pattern.
3588         (altivec_lvlxl): New pattern.
3589         (altivec_lvrx): New pattern.
3590         (altivec_lvrxl): New pattern.
3591         (altivec_stvlx): New pattern.
3592         (altivec_stvlxl): New pattern.
3593         (altivec_stvrx): New pattern.
3594         (altivec_stvrxl): New pattern.
3595         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
3596         (vec_lvlxl): Likewise.
3597         (vec_lvrx): Define if PPU is defined.
3598         (vec_lvrxl): Likewise.
3599         (vec_stvlx): Define if PPU is defined.
3600         (vec_stvlxl): Likewise.
3601         (vec_stvrx): Define if PPU is defined.
3602         (vec_stvrxl): Likewise.
3603
3604 2008-10-01  Geert Bosch  <bosch@adacore.com>
3605
3606         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
3607
3608 2008-10-01  Richard Guenther  <rguenther@suse.de>
3609
3610         PR tree-optimization/37617
3611         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
3612         do not add to the NEW_SETS.
3613
3614 2008-10-01  Richard Guenther  <rguenther@suse.de>
3615
3616         PR middle-end/37285
3617         * tree-vrp.c (execute_vrp): If we optimized away the default
3618         case make sure to promote the label that got in place of it
3619         to a default case label.
3620
3621 2008-10-01  Richard Henderson  <rth@redhat.com>
3622
3623         PR tree-opt/35737
3624         * tree-complex.c (set_component_ssa_name): Don't optimize
3625         is_gimple_min_invariant values with ssa_names in abnormal phis.
3626
3627 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3628
3629         PR tree-optimization/37662
3630         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
3631         commutative binary operation if they are in the wrong order and
3632         fold_build2 produces non-GIMPLE.
3633
3634 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
3635
3636         PR tree-optimization/37662
3637         PR tree-optimization/37663
3638         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
3639         get_value_range with non-SSA_NAME.  Don't assert operands have been
3640         folded, instead just bail out.
3641
3642 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3643
3644         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
3645
3646 2008-09-30  Richard Guenther  <rguenther@suse.de>
3647
3648         PR middle-end/37491
3649         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
3650         build restrict-qualified pointers.
3651         (vectorizable_store): Move alias check later.
3652         (vectorizable_load): Likewise.
3653
3654 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3655
3656         * c-common.c (empty_if_body_warning): Remove.
3657         * c-common.h (empty_if_body_warning): Remove.
3658         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
3659         here the -Wempty-body warning for `if' and `else' statements.
3660         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
3661
3662 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
3663
3664         * config/i386/i386.opt: Add msse2avx.
3665
3666         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
3667         * config/i386/linux64.h (ASM_SPEC): Likewise.
3668
3669         * doc/invoke.texi: Document -msse2avx.
3670
3671 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3672
3673         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
3674
3675 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
3676
3677         * ifcvt.c (noce_emit_store_flag): If using condition from original
3678         jump, reverse it if if_info->cond was reversed.
3679
3680 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3681
3682         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
3683         non-constant memory if it cannot be forced to constant memory.
3684         Overhaul surrounding code and factor out common condition.
3685
3686 2008-09-29  Jeff Law <law@redhat.com>
3687
3688         * reload1.c (alter_reg): Add missing curly braces.
3689
3690 2008-09-29  Michael J. Eager  <eager@eagercon.com>
3691
3692         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3693         are easy.
3694         * config/rs6000/rs6000.c (rs6000_override_options): Move
3695         rs6000_init_hard_regno_mode_ok after all options changed.
3696         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3697         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3698         -msimple-fpu flags.  Add warning messages if single FP not configured.
3699         (rs6000_file_start): Output gnu_attribute for single-float.
3700         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3701         (rs6000_legitimize_address): Likewise.
3702         (rs6000_legitimize_reload_address): Likewise.
3703         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3704         TARGET_SINGLE_FLOAT.
3705         (function_arg_advance): Likewise (partial conversion).
3706         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3707         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3708         TARGET_SINGLE_FLOAT.
3709         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3710         (rs6000_emit_prologue): Likewise.
3711         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3712         TARGET_SINGLE_FLOAT.
3713         (rs6000_libcall_value): Likewise.
3714         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3715         (TARGET_DOUBLE_FLOAT): New default to 1
3716         (TARGET_SIMPLE_FPU): New default to 0
3717         (TARGET_SINGLE_FPU): New default to 0
3718         (TARGET_SINGLE_FLOAT_MODE): New.
3719         (TARGET_DOUBLE_FLOAT_MODE): New.
3720         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3721         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3722         UNITS_PER_FP_WORD
3723         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3724         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3725         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3726         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3727         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3728         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3729         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3730         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3731         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3732         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3733         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3734         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3735         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3736         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3737         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3738         cmptf_internal1, *cmptf_internal2): Condition on
3739         TARGET_DOUBLE_FLOAT.
3740         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3741         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3742         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3743         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3744         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3745         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3746         TARGET_SINGLE_FLOAT.
3747         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3748         * config/rs6000/rs6000.opt (-msingle-float): New.
3749         (-mdouble-float): New.
3750         (-msimple-fpu): New.
3751         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
3752         -msingle-float, -mdouble-float, -msimple-fpu options.
3753         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
3754         _SOFT_DOUBLE for -msingle-float.
3755         * config.gcc: New config for target=powerpc-xilinx-eabi.
3756
3757 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
3758
3759         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
3760         have exit and entry.
3761         (new_scop): Take entry and exit edge to define new SCoP.
3762         (sd_region_p): New structure used during SCoP detection.
3763         (move_scops): Delete.
3764         (move_sd_regions): New.
3765         (scopdet_info): Change the definition from edges back to basic_blocks.
3766         (scopdet_edge_info):  Work on basic_blocks and rename to
3767         scopdet_basic_block_info.
3768         (split_difficult_bb): At the moment removed. We should later
3769         add it at another place.
3770         (build_scops_1): Work on basic_blocks.
3771         (bb_in_sd_region): New.
3772         (find_single_entry_edge): New.
3773         (find_single_exit_edge): New.
3774         (create_single_entry_edge): New.
3775         (sd_region_without_exit): New.
3776         (create_single_exit_edge): New.
3777         (unmark_exit_edges): New.
3778         (mark_exit_edges): New.
3779         (create_sese_edges): New.
3780         (build_graphite_scops): New.
3781         (build_scops): Make SCoPs SESE.
3782         (limit_scops): Use the new functions.
3783
3784 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
3785
3786         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
3787
3788 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3789
3790         PR target/37640
3791         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
3792         address to a register before taking the lower part.
3793
3794 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3795
3796         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
3797         for SHmedia.
3798
3799 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3800             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
3801
3802         PR tree-opt/36891
3803         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
3804         the newly created variable.
3805         Create a VECTOR_CST of all 1s for vector types.
3806
3807 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3808
3809         PR middle-end/36575
3810         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
3811
3812 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3813
3814         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
3815         order to convert between modes.
3816         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
3817
3818 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3819
3820         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
3821         if needed.
3822
3823 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3824
3825         Revert:
3826         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3827         * ira-lives.c:...
3828         * doc/rtl.texi:...
3829
3830 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
3831
3832         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
3833         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
3834         them to yield false with MIPS16.
3835
3836 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
3837
3838         PR middle-end/37275
3839         * dwarf2out.c (tls_mem_loc_descriptor): New function.
3840         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
3841         mem_loc_descriptor failed.  Accept UNSPEC.
3842         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
3843         fail if one of the loc_descriptor calls for pieces failed.
3844         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
3845         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
3846         if loc_descriptor_from_tree_1 on offset failed.
3847
3848         PR middle-end/37576
3849         * opts.c (common_handle_option): Don't call print_specific_help with
3850         CL_SAVE as first argument.
3851
3852 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
3853             Steve Ellcey  <sje@cup.hp.com>
3854
3855         * configure: Regenerate for new libtool.
3856         * aclocal.m4: Ditto.
3857
3858 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
3859
3860         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
3861         alias set on MEM when saving stack pointer.
3862         * config/rs6000/rs6000.md (allocate_stack): Likewise
3863
3864 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
3865
3866         PR tree-optimization/37574
3867         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
3868         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
3869         instead of vector_type for constants. Take computation out of loop.
3870         (vect_get_vec_def_for_operand): Use only vectype for constant case,
3871         and use only vector_type for invariant case.
3872         (get_initial_def_for_reduction): Use vectype instead of vector_type.
3873
3874 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
3875
3876         PR c/37645
3877         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
3878         the decl is a VAR_DECL or FUNCTION_DECL.
3879
3880 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3881
3882         PR middle-end/37535
3883         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3884         (mark_ref_live, mark_ref_dead): Use them.
3885         (def_conflicts_with_inputs_p): Remove.
3886         (mark_early_clobbers): New function.
3887         (process_bb_node_lives): Call preprocess_constraints and
3888         mark_early_clobbers.
3889
3890         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
3891
3892 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3893
3894         PR middle-end/37448
3895         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
3896         (ira_compress_allocno_live_ranges): New prototype.
3897
3898         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
3899         (coalesced_allocnos_living_at_program_points): New.
3900         (coalesced_allocnos_live_at_points_p,
3901         set_coalesced_allocnos_live_points): New functions.
3902         (coalesce_spill_slots): Rewrite.
3903
3904         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
3905         ira_compress_allocno_live_ranges): New functions.
3906
3907         * ira-build.c (ira_flattening): Call
3908         ira_compress_allocno_live_ranges.
3909         (ira_build): Ditto.
3910
3911 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
3912
3913         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
3914         optimization.
3915
3916 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
3917
3918         * combine.c (make_compound_operation): Handle the 'E' format.
3919         (count_rtxs): Likewise.
3920         (update_table_tick): Likewise.
3921         (get_last_value_validate): Likewise.
3922
3923 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3924
3925         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
3926
3927 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
3928
3929         * matrix-reorg.c (transform_allocation_sites): Initializers
3930         added to avoid the warning.
3931
3932 2008-09-25  Martin Jambor  <mjambor@suse.cz>
3933
3934         * cgraph.c (free_nodes): New variable.
3935         (NEXT_FREE_NODE): New macro.
3936         (cgraph_create_node): Reuse nodes from the free list.  Do not
3937         update uid if doing so.
3938         (cgraph_remove_node): Add the node to the free list.
3939
3940 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
3941
3942         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
3943
3944 2008-09-24  Richard Henderson  <rth@redhat.com>
3945
3946         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
3947         * unwind-dw2.c (execute_stack_op): Handle it.
3948
3949 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
3950
3951         Revert:
3952         2008-09-24  Michael J. Eager  <eager@eagercon.com>
3953
3954 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
3955
3956         * c-common.c (fname_decl): New location argument.
3957         * c-common.h (fname_decl): Same.
3958         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
3959         {warning,error}.
3960         (c_parser_typeof_specifier): Same.
3961         (c_parser_parms_list_declarator): Same.
3962         (c_parser_asm_string_literal): Same.
3963         (c_parser_compound_statement_nostart): Same.
3964         (c_parser_label): Same.
3965         (c_parser_do_statement): Same.
3966         (c_parser_asm_statement): Same.
3967         (c_parser_unary_expression): Same.
3968         (c_parser_sizeof_expression): Same.
3969         (c_parser_postfix_expression): Same.
3970         (c_parser_pragma): Same.
3971         (c_parser_omp_clause_collapse): Same.
3972         (c_parser_omp_clause_num_threads): Same.
3973         (c_parser_omp_clause_schedule): Same.
3974         (c_parser_omp_all_clauses): Same.
3975         (c_parser_omp_sections_scope): Same.
3976         (c_parser_omp_for_loop): Same.  Pass condition's location to
3977         c_objc_common_truthvalue_conversion.
3978         (c_parser_enum_specifier): Remove comment.
3979
3980 2008-09-24  Michael J. Eager  <eager@eagercon.com>
3981
3982         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3983         are easy.
3984         * config/rs6000/rs6000.c (rs6000_override_options): Move
3985         rs6000_init_hard_regno_mode_ok after all options changed.
3986         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3987         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3988         -msimple-fpu flags.  Add warning messages if single FP not configured.
3989         (rs6000_file_start): Output gnu_attribute for single-float.
3990         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3991         (rs6000_legitimize_address): Likewise.
3992         (rs6000_legitimize_reload_address): Likewise.
3993         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3994         TARGET_SINGLE_FLOAT.
3995         (function_arg_advance): Likewise.
3996         (function_arg): Likewise.
3997         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3998         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3999         TARGET_SINGLE_FLOAT.
4000         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4001         (rs6000_emit_prologue): Likewise.
4002         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4003         TARGET_SINGLE_FLOAT.
4004         (rs6000_libcall_value): Likewise.
4005         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4006         (TARGET_DOUBLE_FLOAT): New default to 1
4007         (TARGET_SIMPLE_FPU): New default to 0
4008         (TARGET_SINGLE_FPU): New default to 0
4009         (TARGET_SINGLE_FLOAT_MODE): New.
4010         (TARGET_DOUBLE_FLOAT_MODE): New.
4011         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4012         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4013         UNITS_PER_FP_WORD
4014         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4015         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4016         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4017         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4018         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4019         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4020         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4021         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4022         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4023         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4024         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4025         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4026         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4027         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4028         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4029         cmptf_internal1, *cmptf_internal2): Condition on
4030         TARGET_DOUBLE_FLOAT.
4031         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4032         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4033         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4034         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4035         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4036         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4037         TARGET_SINGLE_FLOAT.
4038         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4039         * config/rs6000/rs6000.opt (-msingle-float): New.
4040         (-mdouble-float): New.
4041         (-msimple-fpu): New.
4042         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4043         -msingle-float, -mdouble-float, -msimple-fpu options.
4044         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4045         _SOFT_DOUBLE for -msingle-float.
4046         * config.gcc: New config for target=powerpc-xilinx-eabi.
4047
4048 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4049
4050         * config/sparc/constraints.md: New file.
4051         * config/sparc/sparc.md: Include it.
4052         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
4053         (sparc_extra_constraint_check): Delete.
4054         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
4055         (memory_ok_for_ldd): New predicate.
4056         (sparc_extra_constraint_check): Delete.
4057         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
4058         (CONST_OK_FOR_LETTER_P): Likewise.
4059         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4060         (EXTRA_CONSTRAINT): Likewise.
4061
4062 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
4063
4064         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
4065
4066 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4067
4068         * alias.c (find_base_value): Use FIND_BASE_TERM.
4069         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
4070
4071 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4072
4073         * config/i386/i386.c: Include cselib.h.
4074         (ix86_pic_register_p): New function.
4075         (ix86_delegitimize_address): Use it to check for the PIC register.
4076
4077 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4078
4079         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
4080         * config/i386/i386.c (ix86_find_base_term): Don't check for
4081         SYMBOL_REF and LABEL_REF.
4082
4083 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4084
4085         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
4086         constant PLUS in a CONST.
4087
4088 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
4089
4090         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
4091         check for sibcall support for w64.
4092
4093 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4094
4095         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
4096
4097 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
4098
4099         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
4100         parser_build_binary_op.
4101         * c-decl.c (build_enumerator): Pass location to build_binary_op.
4102         * c-typeck.c (build_array_ref): Same.
4103         (parser_build_unary_op): New location argument.
4104         (pointer_diff): Pass location to build_binary_op,
4105         c_objc_common_truthvalue_conversion.
4106         (build_modify_expr): Same.
4107         (build_unary_op): New location argument.
4108         (build_binary_op): New location argument.
4109         (c_objc_common_truthvalue_conversion): Pass location to
4110         c_*common_truthvalue_conversion.
4111         * c-convert.c (convert): Same.
4112         * c-common.c (binary_op_error): New location argument.
4113         (pointer_int_sum): Pass location to build_binary_op.
4114         (c_common_truthvalue_conversion): New location argument.
4115         (warn_for_sign_compare): Same.
4116         * c-common.h: Add location argument to c_common_truthvalue_conversion,
4117         binary_op_error, build_binary_op, warn_for_sign_compare.
4118         * c-parser.c (c_parser_condition): Pass location to
4119         c_*common_truthvalue_conversion.
4120         (c_parser_conditional_expression): Save condition's location and pass
4121         it on down.
4122         (c_parser_binary_expression): Same, but for the binary operator's
4123         location.
4124         (c_parser_omp_for_loop): Pass location to
4125         c_objc_common_truthvalue_conversion.
4126
4127 2008-09-23  Martin Jambor  <mjambor@suse.cz>
4128
4129         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
4130         (cgraph_node_remove_callees): New temporary f.  Hold the next item
4131         in f when looping.
4132         (cgraph_node_remove_callers): Likewise.
4133
4134         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
4135         (ipa_node_removal_hook): Likewise.
4136
4137         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
4138         gimple_call_copy_skip_args and moved to the gimple_call section.
4139         * gimple.c (gimple_copy_call_skip_args): Renamed to
4140         gimple_call_copy_skip_args.  Changed al users.
4141
4142 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
4143
4144         * ira-color.c (start_allocno_priorities): Rename to
4145         setup_allocno_priorities.  Use costs and
4146         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
4147         range lengths.  Get rid off doubles.
4148         (ira_fast_allocations): Call start_allocno_priorities.
4149
4150 2008-09-22  David Daney  <ddaney@avtrex.com>
4151
4152         PR target/37593
4153         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
4154         register if TARGET_LONG_CALLS.
4155
4156 2008-09-22  Richard Guenther  <rguenther@suse.de>
4157
4158         PR tree-optimization/37145
4159         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
4160         value-numbering union accesses with their offset and size only.
4161         (visit_reference_op_load): Fix simplification of inserted conversions.
4162         * tree-ssa-pre.c (find_or_generate_expression): Do not
4163         recursively generate expressions if running FRE.
4164
4165 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
4166
4167         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
4168         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
4169         New patterns.
4170
4171 2008-09-22  Richard Guenther  <rguenther@suse.de>
4172
4173         PR tree-optimization/37145
4174         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
4175         (phi_translate_1): Constant fold references.
4176
4177 2008-09-22  Ira Rosen  <irar@il.ibm.com>
4178
4179         PR tree-optimization/37482
4180         * tree-vectorizer.h (struct _slp_instance): Add new field.
4181         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
4182         (get_earlier_stmt): New function.
4183         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
4184         function.
4185         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
4186         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
4187         asserts that GSI points to the scalar statement being vectorized.
4188         Set new statement location according to GSI.
4189         (vect_schedule_slp_instance): Use GSI of
4190         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
4191
4192 2008-09-21  Jan Hubicka  <jh@suse.cz>
4193
4194         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
4195         (ipcp_insert_stage): Update dead_nodes bitmap.
4196
4197 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
4198
4199         PR target/37528
4200         * config/i386/t-cygming (SHLIB_LC): Remove.
4201         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
4202         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
4203
4204 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
4205
4206         PR middle-end/37170
4207         PR middle-end/37280
4208         * final.c (mark_symbol_ref_as_used): New helper function.
4209         (output_operand): Instead of just looking inside MEMs for
4210         SYMBOL_REFs, use new helper function and for_each_rtx.
4211         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
4212         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
4213         Make head comment more general.
4214         * config/darwin.c (machopic_output_indirection): Handle weak
4215         references here, like in assemble_external.
4216
4217 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
4218
4219         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
4220         (sparc_emit_float_lib_cmp): Change return type.
4221         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
4222         (gen_compare_operator): New function.
4223         (sparc_emit_float_lib_cmp): Return the new operator to be used in
4224         the comparison sequence.  Minor tweaks.
4225         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
4226         that the final operator and the result of sparc_emit_float_lib_cmp
4227         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
4228         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
4229         buneq, bunge, bunle, bltgt): Assert that the final operator and the
4230         result of sparc_emit_float_lib_cmp match for software TFmode.
4231         (movqicc, movhicc, movsicc, movdicc): Merge into...
4232         (mov<I:mode>cc): ...this.
4233         (movsfcc, movdfcc, movtfcc): Merge into...
4234         (mov<F:mode>cc): ...this.
4235         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
4236         into...
4237         (mov<I:mode>_cc_v9): ...this.
4238         (movdi_cc_sp64_trunc): Delete.
4239         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
4240         movdi_cc_reg_sp64): Merge into...
4241         (mov<I:mode>_cc_reg_sp64): ...this.
4242         (movsf_cc_sp64): Rename into...
4243         (movsf_cc_v9): ...this.
4244         (movdf_cc_sp64): Rename into...
4245         (movdf_cc_v9): ...this.
4246         (movtf_cc_hq_sp64): Rename into...
4247         (movtf_cc_hq_v9): ...this.
4248         (movtf_cc_sp64): Rename into...
4249         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
4250
4251 2008-09-21  Diego Novillo  <dnovillo@google.com>
4252
4253         * doc/gccint.texi: Include generic.texi and gimple.texi.
4254         Re-order index.
4255         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
4256         (GIMPLE): Move to gimple.texi.
4257         (Annotations): Remove references to to stmt_ann_t and
4258         ssa_name_ann_t.
4259         (SSA Operands): Rename from 'Statement Operands'.
4260         * doc/generic.texi: New.
4261         * doc/gimple.texi: New.
4262         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
4263         * Makefile.in (TEXI_GCCINT_FILES):
4264         * gimple.c (gimple_copy_call_skip_args): Rename from
4265         giple_copy_call_skip_args.  Update all users.
4266         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
4267
4268 2008-09-21  Ira Rosen  <irar@il.ibm.com>
4269
4270         PR tree-optimization/37539
4271         * tree-vect-transform.c (vect_transform_strided_load): Save vector
4272         statement in related statement field only for the first load of the
4273         group of loads with the same data reference.
4274
4275 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
4276
4277         * config/mips/mips.h (TUNE_OCTEON): New macro.
4278         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
4279         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
4280         * config/mips/octeon.md: New file.
4281         * config/mips/mips.md: Include octeon.md.  Restore
4282         semi-alphabetical order of include files.
4283
4284 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
4285
4286         PR target/37571
4287         * config/i386/i386.md (*jcc_fused_1): Removed.
4288         (*jcc_fused_2): Likewise.
4289         (*jcc_fused_3): Likewise.
4290         (*jcc_fused_4): Likewise.
4291
4292 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
4293
4294         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
4295         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
4296         * target.h (gcc_target): Add ira_cover_classes.
4297         * ira.c: Remove IRA_COVER_CLASSES guards.
4298         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
4299         instead of IRA_COVER_CLASSES.
4300         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
4301         (setup_class_translate): Likewise.
4302         (setup_reg_class_intersect_union): Likewise.
4303         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
4304         test of targetm.ira_cover_classes.
4305         * opts.c (decode_options): Use targetm.ira_cover_classes instead
4306         of IRA_COVER_CLASSES.
4307         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
4308         (TARGET_INITIALIZER): Include it.
4309         * targhooks.h (default_ira_cover_classes): Declare.
4310         * targhooks.c (default_ira_cover_classes): New function.
4311
4312 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
4313
4314         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
4315
4316 2008-09-19  Ian Lance Taylor  <iant@google.com>
4317
4318         * varasm.c (narrowing_initializer_constant_valid_p): Return
4319         NULL_TREE if ENDTYPE is not an integer.
4320
4321 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4322
4323         PR tree-opt/30930
4324         * tree-ssa.c (execute_update_addresses_taken): Also update
4325         DECL_GIMPLE_REG_P for vector and complex types.
4326
4327 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
4328             Jan Hubicka  <jh@suse.cz>
4329
4330         PR middle-end/37567
4331         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
4332         empty before freeing them.
4333         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
4334
4335 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
4336
4337         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
4338         * config/xtensa/predicates.md (tls_symbol_operand): New.
4339         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
4340         (TARGET_CANNOT_FORCE_MEM): Define.
4341         (xtensa_tls_symbol_p): New.
4342         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
4343         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
4344         (xtensa_tls_module_base): New.
4345         (xtensa_call_tls_desc): New.
4346         (xtensa_legitimize_tls_address): New.
4347         (xtensa_legitimize_address): Handle TLS symbols.
4348         (xtensa_tls_referenced_p_1): New.
4349         (xtensa_tls_referenced_p): New.
4350         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
4351         UNSPEC_DTPOFF.
4352         (XTENSA_BUILTIN_THREAD_POINTER): New.
4353         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
4354         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
4355         builtin.  Add declarations for __builtin_thread_pointer and
4356         __builtin_set_thread_pointer.
4357         (xtensa_fold_builtin): Recognize new builtins.
4358         (xtensa_expand_builtin): Expand new builtins.
4359         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
4360         (TARGET_THREADPTR): Define.
4361         (HAVE_AS_TLS): Define default value.
4362         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
4363         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
4364         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
4365         (UNSPECV_SET_TP): New.
4366         (sym_TPOFF, sym_DTPOFF): New.
4367         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
4368         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
4369         * configure: Regenerated.
4370
4371 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
4372
4373         PR target/37394
4374         * config/ia64/ia64.c (ia64_optimization_options): Move
4375         checking and setting flag_schedule_insns_after_reload and
4376         ia64_flag_schedule_insns2 back to ...
4377         (ia64_override_options): Here.
4378
4379 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4380
4381         PR rtl-opt/37451
4382         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
4383         zero extend count after the correction to it is done.
4384         (doloop_optimize): Update call to doloop_modify, don't zero extend
4385         count before call.
4386
4387 2008-09-18  Martin Jambor  <mjambor@suse.cz>
4388
4389         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
4390
4391         * ipa-prop.c: Correct comments.
4392         * ipa-prop.h: Likewise.
4393
4394 2008-09-18  Jan Hubicka  <jh@suse.cz>
4395
4396         PR middle-end/37448
4397         * ipa-reference.c (ipa_reference_local_vars_info_d,
4398         ipa_reference_global_vars_info_d,
4399         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4400         ipa_reference_vars_info_t): Move here from ipa-reference.h
4401         (node_duplication_hook_holder, node_removal_hook_holder): New.
4402         (get_reference_vars_info_from_cgraph): Rename to ...
4403         (get_reference_vars_info): ... this one, use cgraph uids.
4404         (get_local_reference_vars_info, get_global_reference_vars_info):
4405         Use cgraph instead of decl.
4406         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4407         Remove.
4408         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
4409         ipa_reference_get_written_global,
4410         ipa_reference_get_not_written_global): Use cgraph argument.
4411         (check_call): Simplify avail check.
4412         (scan_stmt_for_static_refs): Update.
4413         (propagate_bits): Update.
4414         (merge_callee_local_info): Remove.
4415         (init_function_info): Use cgraph nodes.
4416         (clean_function_local_data): Break out from ...
4417         (clean_function): ... here.
4418         (copy_local_bitmap, copy_global_bitmap): New functions.
4419         (duplicate_node_data, remove_node_data): New functions.
4420         (generate_summary): Register hooks; use visibility instead of
4421         master clones.
4422         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
4423         * ipa-reference.h (ipa_reference_local_vars_info_d,
4424         ipa_reference_global_vars_info_d,
4425         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4426         ipa_reference_vars_info_t): Move to ipa-reference.c
4427         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4428         Remove.
4429         (ipa_reference_get_read_global, ipa_reference_get_written_global,
4430         ipa_reference_get_not_read_global,
4431         ipa_reference_get_not_written_global): Update prototype.
4432         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
4433         (init_state): Remove.
4434         (node_duplication_hook_holder, node_removal_hook_holder): New.
4435         (get_function_state, set_function_state): Use VECtor.
4436         (analyze_function): Check body availability.
4437         (add_new_function): Likewise.
4438         (duplicate_node_data, remove_node_data): New.
4439         (generate_summary): Register hooks; do not care about clones.
4440         (propafate): Do not care about clones; recursive functions are
4441         not looping.
4442         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
4443         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
4444         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
4445         static.
4446         * tree-flow.h (function_ann_d): Remove reference_vars_info.
4447         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
4448         Update call of ipa-reference accesors.
4449
4450 2008-09-18  Simon Baldwin  <simonb@google.com>
4451
4452         * c-opts.c (c_common_handle_option): Add handling for
4453         -Wbuiltin-macro-redefined command line option.
4454         * c.opt: Added builtin-macro-redefined option.
4455         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
4456         documentation.
4457
4458 2008-09-18  Richard Guenther  <rguenther@suse.de>
4459
4460         PR tree-optimization/37258
4461         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
4462         and signedness for integral types.
4463         (vn_phi_eq): Require compatible types.
4464
4465 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
4466
4467         PR debug/34037
4468         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
4469         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
4470         VAR_DECL.
4471         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
4472         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
4473         ggc_free other TREE_LIST nodes from that chain.
4474         * function.c (instantiate_decls): Instantiate also DECL_RTL
4475         of vars in cfun->local_decls, free that list afterwards.
4476
4477 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
4478
4479         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
4480         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
4481
4482 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4483
4484         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
4485         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
4486
4487 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4488
4489         PR tree-optimization/37102
4490         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
4491         from a node. Check to see if another PHI is dead.
4492         (eliminate_useless_phis): Rename from eliminate_virtual_phis and
4493         remove real PHIs which have no uses.
4494         (rewrite_out_of_ssa): Call eliminate_useless_phis.
4495
4496 2008-09-18  Richard Guenther  <rguenther@suse.de>
4497
4498         PR middle-end/37284
4499         * tree-cfg.c (remove_useless_stmts_1): Remove
4500         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
4501
4502 2008-09-18  Nick Clifton  <nickc@redhat.com>
4503
4504         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
4505         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
4506         to frv_secondary_reload_class.
4507         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
4508         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
4509         (frv_secondary_reload_class): Omit unused parameter.
4510         (frv_secondary_reload): New function.  Handle the case when
4511         secondary_reload_class() is called before the reload_(in|out)
4512         _optabs have been initialised.
4513         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
4514         unused parameter.
4515         * config/frv/frv.md: Define an exclusion set between fr550_m0
4516         and fr550_f0.
4517
4518 2008-09-18  Richard Guenther  <rguenther@suse.de>
4519
4520         PR tree-optimization/37456
4521         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
4522         want to insert after ends a BB insert on the single fallthru
4523         outgoing edge.
4524
4525 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
4526
4527         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
4528         Mention -march=z9-109, z9-ec and z10.
4529
4530 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
4531
4532         PR rtl-optimization/37544
4533         * regrename.c (maybe_mode_change): Exit early when copy_mode
4534         is narrower than orig_mode and narrower than new_mode.
4535
4536 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
4537
4538         PR middle-end/37499
4539         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
4540
4541         * sched-rgn.c (ref_counts): Remove.
4542         (insn_referenced): New static variable.
4543         (INSN_REF_COUNT): Remove.
4544         (sched_run_compute_dependencies): Use insn_referenced instead of
4545         INSN_REF_COUNT.
4546         (add_branch_dependences): Likewise.  Delete dead assignment.
4547
4548 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
4549
4550         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
4551         consumer is an asm.  Add comment why this is important.
4552         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
4553         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
4554
4555 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
4556
4557         * expr.c (emit_group_store): Do not shift before moving via a
4558         stack slot.
4559
4560 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4561
4562         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
4563         from aggregate to non-aggregate type if the bit pattern is not fully
4564         preserved afterwards.
4565
4566 2008-09-17  Richard Guenther  <rguenther@suse.de>
4567
4568         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
4569         (verify_gimple_assign): ... this.  Split into ...
4570         (verify_gimple_assign_unary): ... this,
4571         (verify_gimple_assign_binary): ... that,
4572         (verify_gimple_assign_single): ... and this.
4573         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
4574         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
4575         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
4576         (verify_types_in_gimple_reference): Be forgiving with
4577         VIEW_CONVERT_EXPRs.
4578         (verify_gimple_phi): Deal with virtual operands.
4579
4580         * tree.def (PREDICT_EXPR): Change to tcc_expression.
4581
4582 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4583
4584         * tree.c (get_callee_fndecl): Don't call the language hook.
4585         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
4586         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
4587         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
4588
4589 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4590
4591         * tree.c (protected_set_expr_location): Don't unnecessarily
4592         check for error_mark_node.
4593
4594 2008-09-17  Art Haas  <ahaas@impactweather.com>
4595
4596         * ipa-reference.c (analyze_function): Declare step only if
4597         ENABLE_CHECKING is defined.
4598
4599 2008-09-17  Jan Hubicka  <jh@suse.cz>
4600
4601         PR c++/18071
4602         * tree.h (DECL_INLINE): remove.
4603         (DECL_DECLARED_INLINE_P): Update docs.
4604         (DECL_NO_INLINE_WARNING_P): new.
4605         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
4606         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
4607
4608 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4609             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4610
4611         PR bootstrap/37441
4612         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
4613         false.
4614
4615 2008-09-17  Jan Hubicka  <jh@suse.cz>
4616
4617         * ipa-reference.c (ipa_obstack): Remove.
4618         (local_info_obstack, global_info_obstack): New.
4619         (add_static_var): We now handle variables only.
4620         (mark_address_taken, mark_load, mark_store): New functions based on ...
4621         (check_operand): ... remove.
4622         (get_asm_stmt_operands): Rename to ...
4623         (check_asm_memory_clobber): ... this. Look only for memory clobber.
4624         (scan_stmt_for_static_refs): Rewrite.
4625         (scan_op_for_static_refs): Rename to ...
4626         (scan_initializer_for_static_refs): do not look for VAR_DECL
4627         initializers; stop recursion on types and decls.
4628         (ipa_init): Use proper obstacks.
4629         (analyze_variable): Use scan_initializer_for_static_refs.
4630         (init_function_info): Use local obstack.
4631         (analyze_function): Simplify.
4632         (add_new_function): We don't need visited_nodes obstack.
4633         (generate_summary): Use proper obstacks; cleanup after propagation.
4634
4635 2008-09-17  Richard Guenther  <rguenther@suse.de>
4636
4637         PR middle-end/37385
4638         PR tree-optimization/37491
4639         * alias.c (get_alias_set): Use the canonical type.
4640         * tree-vect-transform.c (vectorizable_store): Use the type of
4641         the lhs for the vector type.  Adjust checking.
4642         (vectorizable_load): Adjust checking.
4643
4644 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4645             Adam Nemet  <anemet@caviumnetworks.com>
4646
4647         PR rtl-optimization/37483
4648         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
4649         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
4650         Rearrange code to better match the original comment.  Check
4651         t_unconditional first.  Improve comment.
4652
4653 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4654
4655         PR c/37529
4656         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
4657         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
4658
4659         PR c++/37530
4660         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
4661         GIMPLE_TRY if cleanup sequence is empty.
4662
4663 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4664
4665         PR middle-end/37263
4666         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
4667         eliminate IV if the cost are the same.
4668
4669 2008-09-16  Richard Guenther  <rguenther@suse.de>
4670
4671         PR middle-end/37380
4672         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
4673         if not necessary.
4674
4675 2008-09-16  Richard Guenther  <rguenther@suse.de>
4676
4677         PR tree-optimization/37508
4678         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
4679
4680 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
4681
4682         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
4683
4684 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4685
4686         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
4687         use gen_floatdidf2 directly.
4688         (floatunssidf2): Likewise.
4689         (floatsidf_ppc64_mfpgpr): Remove.
4690         (floatsidf_ppc64): Remove.
4691         (floatunssidf_ppc64): Remove.
4692
4693 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
4694
4695         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
4696         rather than update_cost_queue.
4697
4698         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
4699         in every call starting with the second one, instead of only when
4700         alias_bitmap_obstack.elements != NULL.
4701
4702         * tree-predcom.c (filter_suitable_components): Free all refs in
4703         act->refs vector before calling release_component.
4704         (add_ref_to_chain): Free ref if not adding it to chain->refs.
4705
4706         * tree-data-ref.c (free_subscripts): Free all subscript objects.
4707
4708         * tree-loop-linear.c (linear_transform_loops): Initialize
4709         lambda_obstack only after calling perfect_loop_nest_depth.
4710         Goto free_and_continue instead of just continue for later failures.
4711
4712         PR middle-end/37479
4713         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
4714
4715         PR libmudflap/36397
4716         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
4717
4718 2008-09-14  Andreas Schwab  <schwab@suse.de>
4719
4720         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
4721
4722 2008-09-14  Jan Hubicka  <jh@suse.cz>
4723
4724         * invoke.texi (-fconserve-stack): Document.
4725         * opts.c (decode_options): Handle conserve_stack.
4726         * common.opt (fconvserve_stack): New.
4727
4728 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
4729
4730         * config.host: Add x-aix to host_xmake_file.
4731         * config/rs6000/t-aix52: Do not override LDFLAGS.
4732         * config/rs6000/x-aix: New file.
4733
4734 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
4735
4736         PR target/19636
4737         PR target/24894
4738         PR target/31644
4739         PR target/31786
4740         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
4741         is not recognized as a valid register usage. Allow REG_X to be used
4742         as a base pointer.
4743         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
4744         forces a reload when using a base register.
4745
4746 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
4747
4748         * config/i386/cygming-crtend.c (register_frame_ctor): If
4749         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
4750         directly with atexit.
4751         (deregister_frame_ctor): Rename to ...
4752         (deregister_frame_dtor): Use to call __gcc_deregister_frame
4753         if !DEFAULT_USE_CXA_ATEXIT.
4754
4755 2008-09-13  Jan Hubicka  <jh@suse.cz>
4756
4757         * cgraph.c: Include value-prof.h
4758         * Makefile.in (cgraph.o): Add value-prof.h dependency.
4759
4760 2008-09-13  Jan Hubicka  <jh@suse.cz>
4761
4762         PR middle-end/32581
4763         * tree-profile.c (add_abnormal_goto_call_edges): New function.
4764         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
4765         tree_gen_one_value_profiler, tree_gen_average_profiler,
4766         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
4767
4768 2008-09-13  Jan Hubicka  <jh@suse.cz>
4769
4770         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
4771         too many bytes on misalligned blocks.
4772
4773 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4774
4775         * doc/cfg.texi: Fix some typos.
4776         * doc/extend.texi: Likewise.
4777         * doc/install.texi: Likewise.
4778         * doc/invoke.texi: Likewise.
4779         * doc/rtl.texi: Likewise.
4780         * doc/tree-ssa.texi: Likewise.
4781
4782 2008-09-13  Richard Guenther  <rguenther@suse.de>
4783
4784         PR middle-end/30141
4785         * tree-nested.c (finalize_nesting_tree_1): Generate valid
4786         gimple stores for memory rhs.
4787
4788 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4789
4790         PR rtl-optimization/37489
4791         * cse.c (fold_rtx): Don't return const_true_rtx for float
4792         compare if FLOAT_STORE_FLAG_VALUE is undefined.
4793
4794 2008-09-13  Jan Hubicka  <jh@suse.cz>
4795
4796         PR tree-optimization/37392
4797         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
4798
4799 2008-09-13  Martin Jambor  <mjambor@suse.cz>
4800             Jan Hubicka  <jh@suse.cz>
4801
4802         * cgraph.c (free_edges): New variable.
4803         (NEXT_FREE_EDGE): New macro.
4804         (cgraph_free_edge): New function.
4805         (cgraph_remove_edge): Call cgraph_remove_edge_1.
4806         (cgraph_node_remove_callees): Likewise.
4807         (cgraph_node_remove_callers): Likewise.
4808         (cgraph_create_edge): Reuse edges from the free list.  Do not
4809         update uid if doing so.
4810         (cgraph_remove_*_hook): Add free call.
4811
4812 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
4813
4814         * ira-color.c (conflict_allocno_vec): Delete.
4815         (update_cost_queue_elem): New structure.
4816         (update_cost_queue): New variable.
4817         (update_cost_queue_tail): Likewise.
4818         (update_cost_queue_elems): Likewise.
4819         (allocno_update_cost_check): Delete.
4820         (initiate_cost_update): Allocate update_cost_queue_elems
4821         instead of allocno_update_cost_check.
4822         (finish_cost_update): Update the free()s accordingly.
4823         (start_update_cost): New function.
4824         (queue_update_cost): Likewise.
4825         (get_next_update_cost): Likewise.
4826         (update_copy_costs_1): Inline into...
4827         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
4828         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
4829         once we've established they are equal.  Don't allocate update
4830         costs if there is nothing to add to them.
4831         (update_conflict_hard_regno_costs): Remove ALLOCNO and
4832         DIVISOR arguments.  Use a queue instead of recursive calls;
4833         process all the allocnos in the initial queue, rather than
4834         a single allocno.
4835         (assign_hard_reg): Use queue_update_cost instead of
4836         conflict_allocno_vec.  Queue coalesced allocnos instead
4837         of calling update_conflict_hard_regno_costs for each one.
4838         Just call update_conflict_hard_regno_costs once for the
4839         entire queue.
4840         (ira_color): Remove conflict_allocno_vec handling.
4841
4842 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4843
4844         PR tree-optimization/37484
4845         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
4846         (save_var_name): Same.
4847         (initialize_cloog_names): Same.
4848         (initialize_cloog_names): Same.
4849
4850 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4851
4852         * tree-scalar-evolution.c (set_instantiated_value): Set
4853         instantiated_below.
4854
4855 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
4856
4857         PR rtl-opt/37377
4858
4859         * ira-build.c (common_loop_tree_node_dominator): Remove.
4860         (copy_live_ranges_to_removed_store_destinations): New function.
4861         (regno_top_level_allocno_map): Move to top level from ...
4862         (ira_flattening): ... here.  Use
4863         copy_live_ranges_to_removed_store_destinations.
4864
4865         * ira-emit.c (generate_edge_moves): Fix a comment.
4866
4867 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
4868
4869         PR target/37466
4870         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
4871         scratch register after 'set' pattern.
4872
4873 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4874
4875         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
4876         information passed to mark_reg_pointer.
4877         * explow.c (force_reg): Likewise.
4878
4879 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4880
4881         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
4882         when building for the celledp architecture.
4883
4884 2008-09-12  Richard Guenther  <rguenther@suse.de>
4885
4886         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
4887
4888 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
4889
4890         PR rtl-optimization/37424
4891         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
4892         the regnos instead of the addresses.
4893
4894 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
4895
4896         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
4897
4898 2008-09-11  Richard Guenther  <rguenther@suse.de>
4899
4900         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
4901         entering the weaker equivalence recording.
4902
4903         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
4904
4905 2008-09-11  Jeff Law <law@redhat.com>
4906
4907         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
4908         by assign_stack_local on the IRA path for stack slot sharing
4909         as well as the non-IRA path.
4910
4911 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
4912
4913         * config/i386/i386.h: Fix whitespace issues.
4914
4915 2008-09-11  Martin Jambor  <mjambor@suse.cz>
4916
4917         * ipa-prop.h (struct ipa_param_flags): Removed.
4918         (struct ipa_param_descriptor): New structure.
4919         (struct ipa_node_params): ipcp_lattices, param_decls and
4920         param_flags moved to ipa_param_description.
4921         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
4922         descriptors.  Renamed all users.
4923         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
4924         changed to access descriptors.  Renamed all users.
4925         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
4926         to access descriptors. Renamed all users.
4927         * ipa-cp.c (ipcp_init_cloned_node): Call
4928         ipa_initialize_node_params instead of ipa_count_formal_params and
4929         ipa_create_param_decls_array.
4930         (ipcp_analyze_node): Likewise.
4931         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
4932         descriptors.  Renamed all users.
4933         (ipcp_initialize_node_lattices): Remove allocation.
4934         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4935         ipa_initialize_node_params instead of ipa_count_formal_params and
4936         ipa_create_param_decls_array.
4937         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
4938         ipa_populate_param_decls, made static, added parameter info,
4939         renamed mt to node, removed allocation, changed to use
4940         descriptors.
4941         (ipa_count_formal_params): Made static, added parameter info,
4942         renamed mt to node.
4943         (ipa_initialize_node_params): New function.
4944         (ipa_check_stmt_modifications): Changed to use descriptors.
4945         (ipa_detect_param_modifications): Removed allocation, changed to
4946         use descriptors.
4947         (ipa_note_param_call): Changed to use descriptors.
4948         (ipa_analyze_params_uses): Removed allocation.
4949         (ipa_free_node_params_substructures): Changed to use descriptors.
4950         (ipa_edge_duplication_hook): Use the unused attribute.
4951         (ipa_node_duplication_hook): Use the unused attribute, changed to
4952         use descriptors, changed to duplicate descriptors.
4953
4954         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
4955         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
4956         indirect inlining.  Made static.
4957         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
4958         functions called only once.
4959         (cgraph_decide_recursive_inlining): Don't call
4960         ipa_propagate_indirect_call_infos, pass new_edges to
4961         cgraph_mark_inline_edge instead.
4962         (cgraph_decide_inlining_of_small_functions): Don't call
4963         ipa_propagate_indirect_call_infos, pass new_edges to
4964         cgraph_mark_inline_edge instead.
4965         (cgraph_decide_inlining): Don't call
4966         ipa_propagate_indirect_call_infos.
4967         * ipa-prop.c: Check that vectors are allocated.
4968
4969         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
4970         iff a new cgraph edges have been created.
4971         (cgraph_decide_inlining): New variable redo_always_inline.
4972         Flattening and always_inlining loop until callgraph stabilizes.
4973         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
4974         true iff new cgraph edges have been created.
4975         (propagate_info_to_inlined_callees): Likewise.
4976         (ipa_propagate_indirect_call_infos): Likewise.
4977
4978 2008-09-11  Richard Guenther  <rguenther@suse.de>
4979
4980         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
4981         (set_prologue_iterations): Likewise.
4982         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
4983         Likewise.
4984         (vect_update_init_of_dr): Likewise.
4985         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
4986         type verification.
4987         * fold-const.c (fold_unary): Do not generate calculations
4988         in sub-types.
4989
4990 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
4991
4992         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
4993         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
4994         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
4995
4996         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
4997         a bool.
4998         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
4999         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
5000         before finalizing the changes.
5001         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
5002         for BIT_IOR_EXPR.
5003         (simplify_truth_ops_using_ranges): New.
5004         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
5005         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
5006         whether a simplification was made.
5007         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
5008         use a switch statement and also call simplify_truth_ops_using_ranges.
5009
5010 2008-09-11  Jan Hubicka  <jh@suse.cz>
5011
5012         * ggc-common.c (loc_array): Make static.
5013         * dce.c (rest_of_handle_ud_dce): Free worklist.
5014
5015 2008-09-11  Jan Hubicka  <jh@suse.cz>
5016
5017         * cgraph.c (cgraph_release_function_body): Plug memory leak on
5018         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
5019         function so we are sure we do not dangle it forever.
5020         * function.c (outer_function_chain, find_function_data): Remove.
5021         (function_context_stack): New.
5022         (push_function_context, pop_function_context): Update.
5023         * function.h (struct function): Remove pointer outer.
5024         (outer_function_chain, find_function_data): Remove.
5025         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
5026
5027 2008-09-11  Jan Hubicka  <jh@suse.cz>
5028
5029         PR middle-end/37448
5030         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
5031
5032 2008-09-11  Jan Hubicka  <jh@suse.cz>
5033
5034         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
5035
5036 2008-09-11  Jan Hubicka  <jh@suse.cz>
5037
5038         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
5039         (free_var_map_entry): New function.
5040         (redirect_edge_var_map_destroy): Use it.
5041
5042 2008-09-11  Jan Hubicka  <jh@suse.cz>
5043
5044         PR middle-end/37448
5045         * tree-inline.c (add_lexical_block): Replace with ...
5046         (prepend_lexical_block): ... prepend at begginig.
5047         (remap_blocks): Use it and reverse later.
5048         (expand_call_inline): Use prepend_lexical_block.
5049
5050 2008-09-11  Jan Hubicka  <jh@suse.cz>
5051
5052         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
5053
5054 2008-09-11  Jan Hubicka  <jh@suse.cz>
5055
5056         * function.c (free_after_compilation): Call insn_locators_free.
5057         * cfglayout.c (insn_locators_free): New function.
5058         * rtl.h (insn_locators_free): Declare.
5059
5060 2008-09-11  Jan Hubicka  <jh@suse.cz>
5061
5062         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
5063         vector pointer.
5064         (cond_move_process_if_block): Update call.
5065
5066 2008-09-11  Jan Hubicka  <jh@suse.cz>
5067
5068         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
5069         * vec.c: Include hashtab.h
5070         (vec_descriptor, ptr_hash_entry): New structures.
5071         (vec_desc_hash, vec_ptr_map): New static variables.
5072         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
5073         register_overhead, free_overhead, vec_heap_free): New functions.
5074         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
5075         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
5076         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
5077         New functions.
5078
5079 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5080
5081         PR tree-optimization/37474
5082         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
5083         length of load permutation.
5084
5085 2008-09-11  Andreas Schwab  <schwab@suse.de>
5086
5087         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
5088
5089 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
5090
5091         PR target/37382
5092         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
5093         * dse.c (find_shift_sequence): Use extract_low_bits instead of
5094         simplify_gen_subreg.
5095
5096 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5097
5098         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
5099         for alias check.
5100
5101 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5102
5103         PR middle-end/37338
5104         * gimplify.c (gimplify_body): Call default_rtl_profile.
5105
5106         PR target/36904
5107         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
5108         instead of tok->val.node if not expanding to something else.  Handle
5109         intervening CPP_PADDING tokens.
5110         (altivec_categorize_keyword): Remove unneeded comparisons.
5111
5112 2008-09-10  Richard Guenther  <rguenther@suse.de>
5113
5114         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
5115
5116 2008-09-10  Richard Guenther  <rguenther@suse.de>
5117
5118         PR middle-end/37432
5119         * tree-inline.c (insert_init_stmt): Make sure to not
5120         insert invalid gimple stores.
5121
5122 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
5123
5124         PR tree-optimization/37388
5125         * toplev.c (process_options): Fail and warn when graphite
5126         flags are used, but the compiler has not been configured
5127         with graphite libraries.
5128         * graphite.c (graphite_transform_loops): Remove printfs
5129         to dump_file for the case when graphite is not available.
5130
5131 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
5132
5133         PR target/37434:
5134         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
5135         the even element into register.
5136         (ix86_expand_vector_init_general): Don't use
5137         ix86_expand_vector_init_interleave on V16QImode and V8HImode
5138         if we can't move from GPR to SSE register directly.
5139
5140 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
5141
5142         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
5143         not lose track of the number of NOPs needed.  Number of NOPs needed
5144         for sync vs. loads workaround was switched; corrected.  Run second
5145         pass for all workarounds.  No NOPs needed after call insns.  Change
5146         second pass to use find_next_insn_start and find_load helpers in order
5147         to properly detect parallel insns.
5148         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
5149
5150 2008-09-10  Jan Hubicka  <jh@suse.cz>
5151
5152         * value-prof.c (gimple_ic): Fix tuplification bug.
5153         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
5154         var warning.
5155
5156 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5157
5158         PR tree-optimization/37353
5159         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
5160         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
5161         calls instead of cond_dead_built_in_calls.
5162         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
5163         initalize the vector only before adding first entry.  Use VEC_safe_push
5164         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
5165         shrink_wrap_conditional_dead_built_in_calls call.
5166
5167 2008-09-10  Ira Rosen  <irar@il.ibm.com>
5168
5169         PR tree-optimization/37385
5170         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
5171         argument, and use it as a vector type if not NULL.
5172         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
5173         vectorized rhs.
5174         (vect_setup_realignment): Call vect_create_data_ref_ptr with
5175         additional argument.
5176         (vectorizable_load): Likewise.
5177
5178 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5179
5180         * config/i386/i386.md (SWI32): New mode iterator.
5181         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
5182         of SWI.
5183
5184 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5185
5186         PR rtl-optimization/37435
5187         * caller-save.c (insert_restore, insert_save): Check the mode by
5188         reg_save_code.
5189
5190 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5191
5192         PR other/37265
5193         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
5194         splay tree lookup.
5195         (dw2_output_indirect_constant_1): Use unstripped name in symbol
5196         reference.
5197
5198 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5199
5200         * doc/invoke.texi (ARM Options): Correct errors in discussion
5201         of -mfloat-abi, -mhard-float, and -msoft-float.
5202
5203 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5204             Jan Hubicka  <jh@suse.cz>
5205
5206         PR middle-end/37356
5207         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
5208         calling gimple_regimplify_operands on it.  Iterate over all newly
5209         added statements, not just the last one.
5210         (insert_init_stmt): Insert stmt into seq first, then call
5211         gimple_regimplify_operands on it.  Don't create new gimplification
5212         context, nor find referenced vars.
5213
5214 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5215
5216         PR other/37419
5217         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
5218         to pointer to vector pointer.
5219         * ipa-prop.c (ipa_propagate_indirect_call_infos,
5220         propagate_info_to_inlined_callees): Likewise.
5221         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
5222         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
5223         ipa_check_create_edge_args.
5224         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
5225         argument to pointer to vector pointer.
5226         (cgraph_decide_inlining_of_small_function): Adjust
5227         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
5228         calls.
5229
5230         PR target/37438
5231         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
5232         optimizing for size, not speed.
5233
5234         PR rtl-optimization/37408
5235         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
5236         if parm is promoted.
5237
5238 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
5239
5240         PR tree-optimization/37375
5241         * tree-scalar-evolution.c (scev_info_str): Add field
5242         instantiated_below.
5243         (new_scev_info_str, eq_scev_info, find_var_scev_info,
5244         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
5245         set_instantiated_value): Pass instantiated_below.
5246         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
5247         to above functions.
5248         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
5249         the definitions are not instantiated.
5250
5251         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
5252         (block_before_loop): New.
5253         * tree-data-ref.c (dr_analyze_indices): Update uses of
5254         instantiate_scev.
5255         * graphite.c (block_before_scop): New.
5256         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
5257         basic block, not a loop for determining the parameters.
5258         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
5259         scop.
5260         (idx_record_params, find_params_in_bb, find_scop_parameters,
5261         build_loop_iteration_domains, add_conditions_to_domain): Update calls
5262         to instantiate_scev.
5263
5264         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
5265
5266 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5267
5268         PR rtl-opt/37333
5269
5270         * ira-build.c (ira_create_allocno): Setup frequency to 0.
5271
5272         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
5273         Check zero freq and increase if necessary.
5274
5275 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5276
5277         * ira-conflicts.c (process_regs_for_copy): Check that the hard
5278         regno is in the right range.  Add comments.
5279
5280 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5281
5282         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
5283         warnings.
5284         * mips-tfile.c (copy_object): Cast alloca result to int *.
5285         * mips-tdump.c (print_symbol): Cast xmalloc return values to
5286         proper types.
5287         Rename class to sclass.
5288         (read_tfile): Cast read_seek return values to proper types.
5289         Cast xcalloc return value to proper type.
5290
5291 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5292
5293         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
5294         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
5295         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
5296
5297 2008-09-09  Jan Hubicka  <jh@suse.cz>
5298
5299         * profile.c (is_edge_inconsistent): Add debug output; ignore
5300         negative count on fake edges.
5301         (is_inconsistent): Add debug output.
5302
5303 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5304
5305         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
5306         dump message.
5307         (choose_ready): When first insn is chosen from the ready list, also
5308         dump it.
5309
5310 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5311
5312         PR rtl-optimization/37360
5313         * haifa-sched.c (max_issue): Do not assert that we never issue more
5314         insns than issue_rate.  Add comment.
5315
5316 2008-09-09  Richard Guenther  <rguenther@suse.de>
5317
5318         * tree-cfg.c (verify_types_in_gimple_op): Remove.
5319         (verify_types_in_gimple_call): Rename to ...
5320         (verify_gimple_call): ... this.  Enhance.
5321         (verify_types_in_gimple_cond): Remove.
5322         (verify_gimple_comparison): New function ...
5323         (verify_types_in_gimple_assign): ... split out from here.
5324         (verify_types_in_gimple_return): Rename to ...
5325         (verify_gimple_return): ... this.  Enhance.
5326         (verify_types_in_gimple_switch): Rename to ...
5327         (verify_gimple_switch): ... this.  Enhance.
5328         (verify_gimple_goto): New function.
5329         (verify_types_in_gimple_phi): Rename to ...
5330         (verify_gimple_phi): ... this.  Enhance.
5331         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
5332         Fold in single-statement cases from verify_types_in_gimple_seq_2.
5333         (verify_types_in_gimple_seq_2): Remove cases handled in
5334         verify_types_in_gimple_stmt.
5335
5336 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5337
5338         * config/bfin/bfin.c (n_regs_to_save): New static variable.
5339         (push_multiple_operation, pop_multiple_operation): Set it.
5340         (workaround_rts_anomaly): New function.
5341         (workaround_speculation): New function, broken out of bfin_reorg.
5342         (bfin_reorg): Call the new functions.
5343
5344 2008-09-09  Richard Guenther  <rguenther@suse.de>
5345
5346         PR middle-end/37354
5347         PR middle-end/30165
5348         * gimplify.c (gimplify_conversion): Change conversions of
5349         non-register type to VIEW_CONVERT_EXPRs.
5350         (gimplify_addr_expr): If we need to make the operand
5351         addressable make sure to use a properly initialized
5352         temporary for that so it gets a valid gimple store.
5353
5354 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
5355
5356         * function.h (struct function): Add function_start_locus.
5357         * cfgexpand.c (gimple_expand_cfg): Use it.
5358         * c-parser.c (c_parser_declaration_or_fndef): Set it.
5359
5360 2008-09-09  Richard Guenther  <rguenther@suse.de>
5361
5362         PR tree-optimization/37433
5363         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
5364         function calls.
5365
5366 2008-09-09  Richard Guenther  <rguenther@suse.de>
5367
5368         PR tree-optimization/37387
5369         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
5370         and bits to a common type.
5371
5372 2008-09-09  Nick Clifton  <nickc@redhat.com>
5373
5374         * config/v850/v850.md (return): Restore frame size restriction.
5375
5376 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
5377
5378         * c-common.c (c_expand_decl): Remove.
5379         * c-common.h (anon_aggr_type_p): Remove prototype.
5380         (DECL_ANON_UNION_ELEMS): Remove.
5381         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
5382         * c-decl.c (anon_aggr_type_p): Remove.
5383         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
5384         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
5385         * langhooks.h (struct lang_hooks): Remove expand_decl.
5386         * langhooks.c (lhd_expand_decl): Remove.
5387         * stmt.c (expand_anon_union_decl): Remove.
5388         * tree.h (expand_anon_union_decl): Remove prototype.
5389
5390 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
5391
5392         PR target/36609
5393         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
5394         zero.
5395         * config/avr/avr.md  (QISI) : Define mode iterator.
5396         (negated_tst<mode>) : Redefine as split using mode macro.
5397         (reversed_tstqi): Define insn as reversed compare with zero.
5398         (reversed_tsthi): Ditto.
5399         (reversed_tstsi): Ditto.
5400
5401 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5402
5403         PR middle-end/37393
5404         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
5405         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
5406
5407         PR middle-end/37414
5408         * predict.c (optimize_function_for_size_p): Don't segfault if
5409         FUN is NULL.
5410         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
5411         tree_swap_operands_p): Don't test cfun != NULL before calling
5412         optimize_function_for_s*_p.
5413
5414 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
5415
5416         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
5417         end of the search.
5418
5419 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
5420
5421         * crx/crx.h (IRA_COVER_CLASSES): Define.
5422
5423 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5424
5425         PR middle-end/37337
5426         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
5427         even when a stmt has been gimple_modified_p, but after fold_stmt is
5428         not any longer.  Remove unneeded may_have_exposed_new_symbols
5429         initializations.
5430
5431 2008-09-08  Richard Guenther  <rguenther@suse.de>
5432
5433         PR tree-optimization/37421
5434         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
5435         valueize the RHS.
5436
5437 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5438
5439         PR middle-end/37415
5440         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
5441
5442 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5443
5444         PR driver/37409
5445         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
5446         * pa-hpux10.h (LINK_SPEC): Likewise.
5447         * pa-hpux11.h (LINK_SPEC): Likewise.
5448
5449 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5450
5451         * pa32-regs.h (IRA_COVER_CLASSES): Define.
5452         * pa64-regs.h (IRA_COVER_CLASSES): Define.
5453
5454 2008-09-07  Helge Deller  <deller@gmx.de>
5455
5456         * pa/linux-atomic.c: New file.
5457         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
5458         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
5459
5460 2008-09-07  Richard Guenther  <rguenther@suse.de>
5461             Ira Rosen  <irar@il.ibm.com>
5462
5463         PR tree-optimization/36630
5464         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
5465         Call STRIP_NOPS before calling evolution_part_in_loop_num.
5466
5467 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
5468             Ira Rosen  <irar@il.ibm.com>
5469
5470         PR tree-optimization/35642
5471         * config/rs6000/altivec.md (mulv8hi3): Implement.
5472
5473 2008-09-06  Jeff Law <law@redhat.com>
5474
5475         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
5476
5477 2008-09-06  Jan Hubicka  <jh@suse.cz>
5478
5479         PR tree-optimization/14703
5480         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
5481         declarations.
5482         * passes.c (init_optimization_passes): Recompute inline parameters.
5483
5484 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5485
5486         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
5487         DECL being null.
5488
5489 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
5490             Peter Fuerst  <post@pfrst.de>
5491
5492         * doc/invoke.texi: Document -mr10k-cache-barrier=.
5493         * doc/extend.texi: Document __builtin_mips_cache.
5494         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
5495         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
5496         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
5497         __GCC_HAVE_BUILTIN_MIPS_CACHE.
5498         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
5499         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
5500         (set_push_mips_isas): New variable.
5501         (mips_r10k_cache_barrier): New variable.
5502         (cache): New availability predicate.
5503         (mips_builtins): Add an entry for __builtin_mips_cache.
5504         (mips_build_cvpointer_type): New function.
5505         (MIPS_ATYPE_CVPOINTER): New macro.
5506         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
5507         mode is VOIDmode.
5508         (r10k_simplified_address_p, r10k_simplify_address)
5509         (r10k_uncached_address_p, r10k_safe_address_p)
5510         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
5511         (r10k_needs_protection_p_call, r10k_needs_protection_p)
5512         (r10k_insert_cache_barriers): New functions.
5513         (mips_reorg_process_insns): Delete cache barriers after a
5514         branch-likely instruction.
5515         (mips_reorg): Call r10k_insert_cache_barriers.
5516         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
5517         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
5518         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
5519         (mips_cache, r10k_cache_barrier): New define_insns.
5520
5521 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5522
5523         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5524         * ira-color.c (setup_allocno_left_conflicts_num): Use
5525         hard_reg_set_equal_p instead of a comparison with
5526         ira_zero_hard_reg_set.
5527         * ira.c (setup_reg_subclasses): Likewise.
5528         (setup_cover_and_important_classes): Likewise.
5529         (setup_class_translate): Likewise.
5530         (setup_reg_class_intersect_union): Likewise.
5531         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5532         (ira_init_once): Don't initialize them.
5533
5534 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5535
5536         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
5537
5538 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5539
5540         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
5541
5542 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
5543
5544         Improved branch hints, safe hints, and scheduling.
5545
5546         * haifa-sched.c (sched_emit_insn) : Define.
5547         * sched-int.h (sched_emit_insn) : Add prototype.
5548         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
5549         -mhint-max-distance -msafe-hints) : Document.
5550         * config/spu/spu.c (spu_flag_var_tracking): New.
5551         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
5552         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
5553         TARGET_ASM_FILE_START): Define.
5554         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
5555         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
5556         (spu_emit_branch_hint): Add blocks argument.
5557         (insert_branch_hints, insert_nops): Remove.
5558         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
5559         uses_ls_unit, spu_sched_init_global, spu_sched_init,
5560         spu_sched_reorder, asm_file_start): New functions.
5561         (clock_var, spu_sched_length, pipe0_clock,
5562         pipe1_clock, prev_clock_var, prev_priority,
5563         spu_ls_first, prev_ls_clock): New static variables.
5564         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
5565         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
5566         (nopn_nv): Add a non-volatile version of nop.
5567         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
5568         -mhint-max-distance, -msafe-hints): New options.
5569
5570 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
5571             Samuel Tardieu  <sam@rfc1149.net>
5572
5573         * opts.c (decode_options): Combine nested if statements.
5574
5575         PR target/37283
5576         * opts.c (decode_options): Handle more relationships among
5577         unit-at-a-time, toplevel-reorder, and section-anchors.
5578
5579 2008-09-05  David Daney  <ddaney@avtrex.com>
5580
5581         * doc/install.texi (--enable-reduced-reflection): Document new option.
5582
5583 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
5584
5585         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
5586         constantpool_mem_p.
5587         (constantpool_operand): New.
5588         (move_operand): Disallow sub-word modes for the constant pool.
5589         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
5590         (xtensa_secondary_reload_class): Replace with....
5591         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
5592         Set icode for sub-word reloads from the constant pool.
5593         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
5594         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
5595         * config/xtensa/xtensa.md (reload<mode>_literal): New.
5596         * config/xtensa/xtensa-protos.h: Update prototypes.
5597
5598 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
5599
5600         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
5601         (REG_CLASS_NAMES): Update.
5602         (REG_CLASS_CONTENTS): Update.
5603         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
5604         of ALL_REGS for regs 77 and 78.
5605         * function.c (instantiate_virtual_regs_in_insn): Assert that
5606         return value of simplify_gen_subreg is not NULL.
5607
5608 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
5609
5610         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
5611         (gen_rtvec_v): Fix coding standards.
5612
5613 2008-09-04  Jan Hubicka  <jh@suse.cz>
5614
5615         * i386.c (decide_alg): Be more conservative about optimizing for size.
5616
5617 2008-09-04  Ian Lance Taylor  <iant@google.com>
5618
5619         * varasm.c (narrowing_initializer_constant_valid_p): New
5620         static function.
5621         (initializer_constant_valid_p): Call it.
5622
5623 2008-09-04  Jeff Law  <law@redhat.com>
5624
5625         * fold-const.c (native_encode_real): Fix computation of WORDS.
5626         (native_interpret_real): Likewise.
5627
5628 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
5629
5630         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
5631
5632 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5633
5634         * ira-conflicts.c (process_regs_for_copy): Check insn to check
5635         that the cost is already taken into account in ira-costs.c
5636
5637         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
5638
5639         * ira-build.c (print_copy, print_copies, ira_debug_copy,
5640         ira_debug_copies): New.
5641         (ira_bulid): Call print_copies.
5642
5643         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
5644
5645 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
5646
5647         PR target/32783
5648         * config/rs6000/rs6000.c (optimization_options): Remove check of
5649         flag_toplevel_order.
5650
5651 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5652
5653         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
5654         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
5655         second operand is a reg_imm10_operand.
5656         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
5657         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
5658         (*seq_<GPR:mode><GPR2:mode>): Rename to
5659         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
5660         ISA_HAS_SEQ_SNE.
5661         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
5662         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
5663         ISA_HAS_SEQ_SNE.
5664         (*sne_<GPR:mode><GPR2:mode>): Rename to
5665         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
5666         ISA_HAS_SEQ_SNE.
5667
5668 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5669
5670         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
5671         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
5672         combining an arithmetic right shift by more than 31 and a
5673         trunction.  Don't match for out-of-range shift amounts.  Set
5674         attribute mode to <MODE>.
5675         (*lshr32_trunc<mode>): Name the pattern combining a logical right
5676         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
5677         (*<optab>_trunc<mode>_exts): New pattern for truncated right
5678         shifts by less than 32.
5679         (extv): Change predicate on first operand to accept registers.
5680         Change predicate of the other operands from immediate_operand to
5681         const_int_operand.  Expand exts when source is a register.
5682         (extzv): Change predicate of the constant operands from
5683         immediate_operand to const_int_operand.
5684         (extzv<mode>): Change predicate of the constant operands from
5685         immediate_operand to const_int_operand and no constraint. Also
5686         remove mode.
5687         (*extzv_trunc<mode>_exts): New pattern.
5688
5689 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5690
5691         * config/mips/mips.h (ISA_HAS_CINS): New macro.
5692         * config/mips/mips-protos.h (mask_low_and_shift_p,
5693         mask_low_and_shift_len): Declare.
5694         * config/mips/mips.c (mask_low_and_shift_p,
5695         mask_low_and_shift_len): New functions.
5696         (mips_print_operand): Handle new operand prefix "m".
5697         * config/mips/mips.md (*cins<mode>): New pattern.
5698
5699 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5700
5701         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
5702         optimizing for size.
5703
5704 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5705
5706         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
5707         regardless of epilogue_completed.
5708
5709 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5710
5711         PR middle-end/37359
5712         * ira-lives.c (process_bb_node_lives): Check setjmp.
5713
5714 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5715
5716         PR middle-end/37243
5717         * ira-build.c (form_loop_tree): Reverse BB walk.
5718         (create_bb_allocnos): Likewise.
5719         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
5720         (mark_reg_store): Rename to...
5721         (mark_ref_live): ...this and take a df_ref argument instead of
5722         note_stores arguments.  Assert that we have a register.
5723         (mark_reg_clobber): Delete.
5724         (def_conflicts_with_inputs_p): New function.
5725         (mark_reg_conflicts): Delete.
5726         (mark_reg_death): Rename to...
5727         (mark_ref_dead): ...this and take a df_ref argument instead of
5728         a register.  Assert that we have a register.
5729         (process_bb_node_lives): Hoist frequency calculation out of
5730         instruction walk.  Convert from a forwards scan to a backwards scan.
5731         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
5732         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
5733         (create_allocno_live_ranges): Don't create regs_set.
5734
5735 2008-09-04  Ian Lance Taylor  <iant@google.com>
5736
5737         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
5738         or REG_LABEL_TARGET.
5739         * calls.c (emit_library_call_value_1): Use MEM_P rather than
5740         comparing MODE with MEM.
5741         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
5742         comparing with GF_PREDICT_TAKEN.
5743         (gimple_get_lhs): Change code to enum gimple_code.
5744         (gimple_set_lhs): Likewise.
5745         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
5746         * omp-low.c (find_omp_clause): Change kind parameter to enum
5747         omp_clause_code.
5748         * tree-flow.h (find_omp_clause): Update declaration.
5749         * regrename.c (clear_dead_regs): Change kind parameter to enum
5750         reg_note.
5751         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
5752         GET_MODE.
5753         * see.c (see_get_extension_data): Change return type to enum
5754         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
5755         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
5756         (see_gen_normalized_extension): Change extension_code parameter to
5757         enum entry_type.
5758         (see_seek_pre_extension_expr): Change extension_code to enum
5759         entry_type.
5760         (see_merge_one_def_extension): Likewise.
5761         (see_handle_relevant_defs): Likewise.
5762         (see_handle_relevant_uses): Likewise.
5763         (see_analyze_one_def): Likewise.
5764         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
5765         GIMPLE_ASM rather than ASM_EXPR.
5766         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
5767         GIMPLE_RETURN rather than RETURN_EXPR.
5768         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
5769         (evaluate_stmt): Likewise.
5770         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
5771         to enum vect_relevant.
5772         (vect_mark_stmts_to_be_vectorized): Change assertion to not
5773         compare gimple codes with tree codes.
5774
5775 2008-09-04  Paul Brook  <paul@codesourcery.com>
5776
5777         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
5778
5779 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5780
5781         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
5782         pointer check lost in the recent no-unit-at-a-time patch.
5783
5784 2008-09-04  Jan Hubicka  <jh@suse.cz>
5785
5786         PR middle-end/37343
5787         * tree-switch-conversion.c (check_final_bb): Accept only IP
5788         invariants.
5789
5790 2008-09-04  Jan Hubicka  <jh@suse.cz>
5791
5792         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
5793         Break out from ...
5794         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
5795         using_ranges argument.
5796         (vrp_evaluate_conditional): Avoid bogus warning for type range.
5797         (vrp_visit_cond_stmt): Update call of
5798         vrp_evaluate_conditional_warnv_with_ops
5799
5800 2008-09-04  Jan Hubicka  <jh@suse.cz>
5801
5802         PR tree-optimization/37345
5803         PR tree-optimization/37358
5804         PR tree-optimization/37357
5805         * tree.c (build_function_type_skip_args): Build distinct type copy;
5806         set TYPE_CONTEXT.
5807         (build_function_decl_skip_args): Set type of new decl not orig decl;
5808         clear DECL_VINDEX for methods turned into functions.
5809
5810 2008-09-04  Nick Clifton  <nickc@redhat.com>
5811
5812         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
5813         * configure: Regenerate.
5814         * config.in: Regenerate.
5815         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
5816         alignment field, if it is supported.
5817
5818 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
5819
5820         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
5821         libraries.
5822
5823 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
5824
5825         * config/rs6000/rs6000.c (processor_target_table): Do not
5826         enable VMX for POWER6.
5827
5828 2008-09-03  Anton Blanchard  <anton@samba.org>
5829
5830         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
5831         emit memory barrier before operation.
5832
5833 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
5834
5835         PR testsuite/37325
5836         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
5837         default_elf_asm_output_external.
5838
5839 2008-09-03  Jeff Law  <law@redhat.com>
5840
5841         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
5842
5843 2008-09-03  Richard Henderson  <rth@redhat.com>
5844
5845         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
5846         memory barrier to below the test-and-set.
5847         (alpha_split_lock_test_and_set_12): Likewise.
5848
5849 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5850
5851         PR rtl-opt/37243
5852
5853         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
5854         all_allocnos.
5855
5856         * ira-color.c (print_loop_title): Use all_allocnos.
5857         (color_pass): Ditto.  Don't add border_allocnos.  Check that
5858         subloop allocno in the correspdoning bitmap all_allocnos.
5859
5860         * ira-emit.c (change_loop): Use all_allocnos.
5861
5862         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
5863         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
5864         (create_cap_allocno): Remove setting mentioned_allocnos.
5865         (create_insn_allocnos): Ditto.
5866         (remove_unnecessary_allocnos): Use all_allocnos.
5867         (check_allocno_creation): Check that allocnos are in the
5868         corresponding bitmap all_allocnos.
5869
5870 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5871
5872         PR rtl-opt/37243
5873
5874         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
5875         (process_regs_for_copy): Process subregs.  Refine check when cost
5876         is taken into account in ira-costs.c.
5877         (process_reg_shuffles): Use REG_SUBREG_P.
5878         (add_insn_allocno_copies): Ditto.  Ignore modes.
5879
5880         * ira-color.c (conflict_allocno_vec): New.
5881         (COST_HOP_DIVISOR): New macro.
5882         (update_copy_costs_1): Use it.
5883         (update_conflict_hard_regno_costs): New function.
5884         (assign_hard_reg): Use it.
5885         (ira_color): Allocate and free conflict_allocno_vec.
5886
5887 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5888
5889         PR rtl-opt/37296
5890
5891         * ira-int.h (ira_sort_insn_chain): Remove.
5892
5893         * ira.c (basic_block_order_nums, chain_insn_order,
5894         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
5895         (ira): Don't call ira_sort_insn_chain.
5896
5897         * reload1.c (reload): Don't call ira_sort_insn_chain.
5898
5899 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5900
5901         PR middle-end/37293
5902         * cgraphunit.c (update_call_expr): Remove eh regions from statements
5903         which become non throw.
5904         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
5905         update_call_expr after updating the flags on the decl.
5906
5907 2008-09-03  Jan Hubicka  <jh@suse.cz>
5908
5909         PR tree-optimization/37315
5910         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
5911         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
5912         (cgraph_analyze_functions): Use node->analyzed
5913         (cgraph_mark_functions_to_output): Likewise.
5914         (cgraph_expand_function): All functions can be released after
5915         expanding.
5916         (cgraph_optimize): Use gimple_has_body_p.
5917         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
5918         (cgraph_decide_inlining_incrementally): Likewise.
5919         (inline_transform): Inline transform.
5920         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
5921         copy fields needed.
5922         (inlinable_function_p): Drop gimple_body check.
5923         (expand_call_inline): Use gimple_has_body_p.
5924         * gimple.c (gimple_has_body_p): New.
5925         * gimple.h (gimple_has_body_p): Add prototype.
5926         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
5927         (dump_function_to_file): Use gimple_has_body_p check.
5928
5929 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
5930
5931         PR c++/37346
5932         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
5933         substatements.
5934         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
5935
5936 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5937
5938         From Michael Frysinger  <michael.frysinger@analog.com>
5939         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
5940         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
5941         for bf538.
5942
5943 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
5944
5945         Add picoChip port.
5946         * doc/extend.texi: Document picoChip builtin functions.
5947         * doc/invoke.texi: Document picoChip options.
5948         * doc/contrib.texi: Add picoChip contribution.
5949         * doc/md.texi: Document picoChip constraints.
5950         * config.gcc: Add picochip-*-*.
5951         * config/picochip/: Add new port.
5952
5953 2008-09-03  Richard Guenther  <rguenther@suse.de>
5954
5955         PR tree-optimization/37328
5956         * tree-sra.c (sra_build_assignment): Gimplify properly.
5957         (generate_copy_inout): Take the correct stmt as definition,
5958         remove bogus assert.
5959
5960 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5961
5962         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
5963         attributes.
5964
5965         From Michael Frysinger  <michael.frysinger@analog.com>
5966         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
5967
5968 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
5969
5970         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
5971         (__gthread_setspecific): Revert 2008-08-31 change to
5972         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
5973
5974 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
5975
5976         * diagnostic.c (error_at): New.
5977         * toplev.h (error_at): New prototype.
5978         * c-typeck.c (build_array_ref): Call error_at instead of error.
5979         Pass location to pedwarn.
5980
5981 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
5982
5983         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
5984
5985 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5986
5987         * dwarf2out.c (tree_add_const_value_attribute): Only handle
5988         VAR_DECL and CONST_DECL.
5989
5990 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5991             Jakub Jelinek  <jakub@redhat.com>
5992
5993         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
5994         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
5995         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
5996         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
5997         Don't set ix86_save_varrargs_registers.
5998         (ix86_setup_incoming_varargs): Assume cum != NULL.
5999         (ix86_va_start): Check ix86_varargs_gpr_size and
6000         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
6001         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
6002         from frame pointer if ix86_varargs_gpr_size == 0.
6003         (ix86_compute_frame_layout): Updated.
6004         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
6005         (ix86_varargs_gpr_size): Define.
6006         (ix86_varargs_fpr_size): Likewise.
6007         (machine_function): Remove save_varrargs_registers.
6008         Add varargs_gpr_size and varargs_fpr_size.
6009
6010 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6011
6012         * config/alpha/alpha.c (va_list_skip_additions,
6013         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
6014         (alpha_gimplify_va_arg): Call unshare_expr on second use of
6015         offset_field.
6016
6017         PR tree-optimization/36766
6018         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
6019         for already removed basic blocks.
6020
6021         PR target/36332
6022         * real.c (real_maxval): Clear a lower bit to make real_maxval
6023         match get_max_float for IBM long double format.
6024
6025 2008-09-02  Andreas Schwab  <schwab@suse.de>
6026
6027         * configure.ac: Use m4_quote to quote the expansion of m4_do.
6028         * configure: Regenerate.
6029
6030 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
6031
6032         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
6033         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
6034         checking for a non-VOID CONSTANT_P.
6035
6036 2008-09-02  Jan Hubicka  <jh@suse.cz>
6037
6038         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
6039         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
6040         sdiv_pow2_cheap
6041
6042 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6043
6044         * expr.c (emit_group_store): Don't assert stack temp mode size.
6045
6046 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
6047             Tobias Grosser  <grosser@fim.uni-passau.de>
6048             Jan Sjodin  <jan.sjodin@amd.com>
6049             Harsha Jagasia  <harsha.jagasia@amd.com>
6050             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6051             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
6052             Adrien Eliche  <aeliche@isty.uvsq.fr>
6053
6054         Merge from graphite branch.
6055         * graphite.c: New.
6056         * graphite.h: New.
6057         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
6058         * doc/invoke.texi (-floop-block, -floop-interchange,
6059         -floop-strip-mine): Document new flags.
6060         * tree-into-ssa.c (gimple_vec): Moved...
6061         * tree-loop-distribution.c (rdg_component): Moved...
6062         * cfgloopmanip.c: Include tree-flow.h.
6063         (update_dominators_in_loop): New.
6064         (create_empty_if_region_on_edge): New.
6065         (create_empty_loop_on_edge): New.
6066         (loopify): Use update_dominators_in_loop.
6067         * tree-pass.h (pass_graphite_transforms): Declared.
6068         * configure: Regenerate.
6069         * tree-phinodes.c (make_phi_node): Export.
6070         (add_phi_node_to_bb): New, split from create_phi_node.
6071         * tree-chrec.c (for_each_scev_op): New.
6072         * tree-chrec.h (for_each_scev_op): Declared.
6073         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
6074         (remove_statement): Call get_phi_with_result.
6075         * config.in (HAVE_cloog): Undef.
6076         * gdbinit.in (pgg): New.
6077         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
6078         * tree-ssa-loop.c (graphite_transforms): New.
6079         (gate_graphite_transforms): New.
6080         (pass_graphite_transforms): New.
6081         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
6082         HAVE_cloog): Defined.
6083         * tree-vectorizer.c (rename_variables_in_bb): Export.
6084         * tree-data-ref.c (dr_may_alias_p): Export.
6085         (stmt_simple_memref_p): New.
6086         (find_data_references_in_stmt): Export.
6087         (find_data_references_in_loop): Export.
6088         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
6089         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
6090         (create_rdg_vertices): Export.
6091         (build_empty_rdg): New.
6092         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
6093         * tree-data-ref.h (rdg_component): ... here.
6094         (scop_p): New.
6095         (struct data_reference): Add a field scop.
6096         (DR_SCOP): New.
6097         (find_data_references_in_loop): Declared.
6098         (find_data_references_in_stmt): Declared.
6099         (create_rdg_vertices): Declared.
6100         (dr_may_alias_p): Declared.
6101         (stmt_simple_memref_p): Declared.
6102         (struct rdg_edge): Add a field ddr_p relation.
6103         (build_empty_rdg): Declared.
6104         * lambda.h (lambda_matrix): Declare a VEC of.
6105         (find_induction_var_from_exit_cond): Declared.
6106         (lambda_vector_compare): New.
6107         * common.opt (fgraphite, floop-strip-mine,
6108         floop-interchange, floop-block): New flags.
6109         * lambda-code.c (find_induction_var_from_exit_cond): Export.
6110         * cfgloop.c (is_loop_exit): New.
6111         * cfgloop.h (is_loop_exit): Declared.
6112         (create_empty_if_region_on_edge): Declared.
6113         (create_empty_loop_on_edge): Declared.
6114         * tree-flow.h (add_phi_node_to_bb): Declared.
6115         (make_phi_node): Declared.
6116         (rename_variables_in_bb): Declared.
6117         (perfect_loop_nest_depth): Declared.
6118         (graphite_transform_loops): Declared.
6119         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
6120         (graphite.o-warn): Add -Wno-error.
6121         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
6122         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
6123         (INCLUDES): Add PPLINC, CLOOGINC.
6124         (OBJS-common): Add graphite.o.
6125         (graphite.o): Add rule.
6126         * gimple.h (gimple_vec): ... here.
6127         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
6128         * passes.c (init_optimization_passes): Schedule
6129         pass_graphite_transforms.
6130
6131 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
6132
6133         PR target/37283
6134         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
6135         and -fno-toplevel-reorder after handle_options.
6136
6137 2008-09-02  Paul Brook  <paul@codesourcery.com>
6138
6139         * config/arm/arm.c (arm_tune_cortex_a9): Define.
6140         (arm_override_options): Set arm_tune_cortex_a9.
6141         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
6142         (arm_issue_rate): Handle cortexa9.
6143         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
6144         * config/arm/arm-cores.def: Add cortex-a9.
6145         * config/arm/arm-tune.md: Regenerate.
6146         * config/arm/arm.md: Include cortex-a9.md.
6147         (generic_sched, generic_vfp): Add cortexa9.
6148         * config/arm/cortex-a9.md: New file.
6149
6150 2008-09-02  Richard Guenther  <rguenther@suse.de>
6151
6152         PR tree-optimization/37327
6153         * tree-vrp.c (register_new_assert_for): Make sure to not have
6154         TREE_OVERFLOW set on the bound.
6155
6156 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
6157
6158         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
6159
6160         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
6161         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
6162         spec_info->mask.
6163
6164 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
6165
6166         * gcc/config/spu/spu.md (divdf3): Removed.
6167
6168 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6169
6170         PR tree-optimization/37095
6171         * cgraph.c (cgraph_node): When creating new cgraph node after
6172         assembler_name_hash has been populated, record it in the hash
6173         table.
6174
6175 2008-09-01  Paul Brook  <paul@codesourcery.com>
6176
6177         * doc/invoke.texi: Document -mword-relocations.
6178         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6179         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6180         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6181         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
6182         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
6183         (arm_emit_movpair): New function.
6184         (arm_print_operand <c>): Handle sybolic addresses.
6185         * config/arm/arm.h (TARGET_USE_MOVT): Define.
6186         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6187         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
6188         * config/arm/arm.opt: Add -mword-relocations.
6189         * config/arm/arm.md (movsi): Use arm_emit_movpair.
6190         (arm_movt, arm_movw): New.
6191
6192 2008-09-01  Paul Brook  <paul@codesourcery.com>
6193
6194         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
6195         Allow Interworking on ARMv4 EABI based targets.
6196         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
6197         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
6198
6199 2008-09-01  Paul Brook  <paul@codesourcery.com>
6200
6201         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
6202         optimized LT0 test.  Remove optimization for GT.
6203
6204 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6205
6206         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
6207         openmp applications.
6208         * pa-hpux11.h (LIB_SPEC): Likewise.
6209
6210         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
6211         is defined.
6212
6213 2008-09-01  Jan Hubicka  <jh@suse.cz>
6214
6215         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
6216         present, use only counts; when guessed use only frequencies.
6217         (estimate_bb_frequencies): Use function_frequency.
6218         * profile.c (compute_branch_probabilities): Exit early when
6219         profile reading failed. Set profile_status.
6220         (branch_prob): Do not set profile_status.
6221
6222 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
6223
6224         * tree.c (protected_set_expr_location): New.
6225         * tree.h (protected_set_expr_location): New prototype.
6226         * c-tree.h (build_array_ref): Add argument.
6227         (parser_build_unary_op): Same.
6228         * c-typeck.c (build_indirect_ref): Handle new location argument.
6229         (build_array_ref): Same.
6230         (parser_build_unary_op): Same.
6231         * gimplify.c (gimplify_asm_expr): Set input_location before calling
6232         error.
6233         * c-omp.c (c_finish_omp_atomic): Pass location when calling
6234         build_indirect_ref.
6235         * c-common.c (finish_label_address_expr): Handle new location argument.
6236         * c-common.h (build_indirect_ref): Add argument.
6237         (finish_label_address_expr): Same.
6238         * c-parser.c (c_parser_unary_expression): Pass location to build
6239         functions.
6240         (c_parser_postfix_expression): Same.
6241
6242 2008-09-01  Paul Brook  <paul@codesourcery.com>
6243
6244         * config/arm/arm.md: Include cortex-r4f.md.
6245         (attr fpu): Update type list.
6246         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
6247         fconstd, fcmps and fcmpd.
6248         (attr tune_cortexr4): Define.
6249         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
6250         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
6251         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
6252         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
6253         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
6254         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
6255         cortex_a8_vfp_farith: Ditto.
6256         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
6257         * config/arm/cortex-r4.md: Use tune_cortexr4.
6258         * config/arm/cortex-r4f.md: New file.
6259
6260 2008-09-01  Richard Guenther  <rguenther@suse.de>
6261
6262         PR tree-optimization/37305
6263         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
6264         the result of constant conversions.
6265         (fold_gimple_assign): Likewise.
6266
6267 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6268
6269         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
6270         #ifdef ENABLE_CHECKING.
6271
6272 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6273
6274         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
6275         * sched-int.h (print_insn, print_pattern, print_value): Declare also
6276         when !INSN_SCHEDULING.
6277
6278 2008-09-01  Andreas Schwab  <schwab@suse.de>
6279
6280         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
6281
6282 2008-09-01  Paul Brook  <paul@codesourcery.com>
6283
6284         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
6285
6286 2008-09-01  Jan Hubicka  <jh@suse.cz>
6287
6288         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
6289
6290         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
6291         Pass speed operand.
6292         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
6293         * gimplify.c (gimplify_init_constructor): Add speed operand.
6294         * tree-sra.c (decide_block_copy): Likewise.
6295         * tree-inline.c (estimate_move_cost): Likewise.
6296         * config/alpha/alpha.h (MOVE_RATIO): Update.
6297         * config/frv/frv.c (MOVE_RATIO): Update.
6298         * config/spu/spu.h (MOVE_RATIO): Update.
6299         * config/sparc/sparc.h (MOVE_RATIO): Update.
6300         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
6301         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
6302         * config/cris/cris.h (MOVE_RATIO): Update.
6303         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
6304         * config/arm/arm.h (MOVE_RATIO): Update.
6305         * config/pa/pa.md: Update uses of MOVE_RATIO
6306         * config/pa/pa.h (MOVE_RATIO): Update.
6307         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
6308         CLEAR_RATIO, SET_RATIO): Update.
6309         * config/h8300/h8300.h (MOVE_RATIO): Update.
6310         * config/v850/v850.h (MOVE_RATIO): Update.
6311         * config/bfin/bfin.h (MOVE_RATIO): Update.
6312
6313 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
6314             Dmitry Melnik  <dm@ispras.ru>
6315             Dmitry Zhurikhin  <zhur@ispras.ru>
6316             Alexander Monakov  <amonakov@ispras.ru>
6317             Maxim Kuvyrkov  <maxim@codesourcery.com>
6318
6319         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
6320         sel-sched-dump.c, sel-sched-ir.c: New files.
6321         * Makefile.in (OBJS-common): Add selective scheduling object files.
6322         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
6323         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
6324         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
6325         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
6326         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
6327         (make_forwarder_block): Update loop latch if we have redirected
6328         the loop latch edge.
6329         * cfgloop.c (get_loop_body_in_custom_order): New function.
6330         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
6331         (CP_FALLTHRU_PREHEADERS): Likewise.
6332         (get_loop_body_in_custom_order): Declare.
6333         * cfgloopmanip.c (has_preds_from_loop): New.
6334         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
6335         Assert that the preheader edge will be fall thru when it is set.
6336         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
6337         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
6338         fsel-sched-substitution, fselective-scheduling): New flags.
6339         * cse.c (hash_rtx_cb): New.
6340         (hash_rtx): Use it.
6341         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
6342         sel_sched_insn_cnt): New counters.
6343         * final.c (compute_alignments): Export.  Free dominance
6344         info after loop_optimizer_finalize.
6345         * genattr.c (main): Output maximal_insn_latency prototype.
6346         * genautomata.c (output_default_latencies): New.
6347         Factor its code from ...
6348         (output_internal_insn_latency_func): ... here.
6349         (output_internal_maximal_insn_latency_func): New.
6350         (output_maximal_insn_latency_func): New.
6351         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
6352         (struct hard_reg_set_iterator): New.
6353         (hard_reg_set_iter_init, hard_reg_set_iter_set,
6354         hard_reg_set_iter_next): New functions.
6355         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
6356         * lists.c (remove_free_INSN_LIST_node,
6357         remove_free_EXPR_LIST_node): New functions.
6358         * loop-init.c (loop_optimizer_init): When
6359         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
6360         calling create_preheaders.
6361         (loop_optimizer_finalize): Do not verify flow info after reload.
6362         * recog.c (validate_replace_rtx_1): New parameter simplify.
6363         Default it to true.  Update all uses.  Factor out simplifying
6364         code to ...
6365         (simplify_while_replacing): ... this new function.
6366         (validate_replace_rtx_part,
6367         validate_replace_rtx_part_nosimplify): New.
6368         * recog.h (validate_replace_rtx_part,
6369         validate_replace_rtx_part_nosimplify): Declare.
6370         * rtl.c (rtx_equal_p_cb): New.
6371         (rtx_equal_p): Use it.
6372         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
6373         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
6374         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
6375         * vecprim.h: Add a vector type for unsigned int.
6376         * haifa-sched.c: Include vecprim.h and cfgloop.h.
6377         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
6378         ready_try, cycle_issued_insns, spec_info): Make global.
6379         (readyp): Initialize.
6380         (dfa_lookahead): New global variable.
6381         (old_max_uid, old_last_basic_block): Remove.
6382         (h_i_d): Make it a vector.
6383         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
6384         through HID macro.
6385         (after_recovery, adding_bb_to_current_region_p):
6386         New variables to handle correct insertion of the recovery code.
6387         (struct ready_list): Move declaration to sched-int.h.
6388         (rgn_n_insns): Removed.
6389         (rtx_vec_t): Move to sched-int.h.
6390         (find_insn_reg_weight): Remove.
6391         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
6392         (haifa_init_h_i_d, haifa_finish_h_i_d):
6393         New functions to initialize / finalize haifa instruction data.
6394         (extend_h_i_d, init_h_i_d): Rewrite.
6395         (unlink_other_notes): Move logic to add_to_note_list.  Handle
6396         selective scheduler.
6397         (ready_lastpos, ready_element, ready_sort, reemit_notes,
6398         find_fallthru_edge): Make global, remove static prototypes.
6399         (max_issue): Make global.  Add privileged_n and state parameters.  Use
6400         them.
6401         (extend_global, extend_all): Removed.
6402         (init_before_recovery): Add new param.  Fix the handling of the case
6403         when we insert a recovery code before the EXIT which has a predecessor
6404         with a fallthrough edge to it.
6405         (create_recovery_block): Make global.  Rename to
6406         sched_create_recovery_block.  Update.
6407         (change_pattern): Rename to sched_change_pattern.  Make global.
6408         (speculate_insn): Rename to sched_speculate_insn.  Make global.
6409         Split haifa-specific functionality into ...
6410         (haifa_change_pattern): New static function.
6411         (sched_extend_bb): New static function.
6412         (sched_init_bbs): New function.
6413         (current_sched_info): Change type to struct haifa_sched_info.
6414         (insn_cost): Adjust for selective scheduling.
6415         (dep_cost_1): New function.  Move logic from ...
6416         (dep_cost): ... here.
6417         (dep_cost): Use dep_cost_1.
6418         (contributes_to_priority_p): Use sched_deps_info instead of
6419         current_sched_info.
6420         (priority): Adjust to work with selective scheduling.  Process the
6421         corner case when all dependencies don't contribute to priority.
6422         (rank_for_schedule): Use ds_weak instead of dep_weak.
6423         (advance_state): New function.  Move logic from ...
6424         (advance_one_cycle): ... here.
6425         (add_to_note_list, concat_note_lists): New functions.
6426         (rm_other_notes): Make static.  Adjust for selective scheduling.
6427         (remove_notes, restore_other_notes): New functions.
6428         (move_insn): Add two arguments.  Update assert.  Don't call
6429         reemit_notes.
6430         (choose_ready): Remove lookahead variable, use dfa_lookahead.
6431         Remove more_issue, max_points.  Move the code to initialize
6432         max_lookahead_tries to max_issue.
6433         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
6434         ready.  Adjust use of move_insn.  Call restore_other_notes.
6435         (luid): Remove.
6436         (sched_init, sched_finish): Move Haifa-specific initialization/
6437         finalization to ...
6438         (haifa_sched_init, haifa_sched_finish): ... respectively.
6439         New functions.
6440         (setup_sched_dump): New function.
6441         (haifa_init_only_bb): New static function.
6442         (haifa_speculate_insn): New static function.
6443         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
6444         (extend_ready, extend_all): Remove.
6445         (sched_extend_ready_list, sched_finish_ready_list): New functions.
6446         (create_check_block_twin, add_to_speculative_block): Use
6447         haifa_insns_init instead of extend_global.  Update to use new
6448         initialization functions.  Change parameter.  Factor out code from
6449         create_check_block_twin to ...
6450         (sched_create_recovery_edges) ... this new function.
6451         (add_block): Remove.
6452         (sched_scan_info): New.
6453         (extend_bb): Use sched_scan_info.
6454         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
6455         static functions for walking through scheduling region.
6456         (sched_luids): New vector variable to replace uid_to_luid.
6457         (luids_extend_insn): New function.
6458         (sched_max_luid): New variable.
6459         (luids_init_insn): New function.
6460         (sched_init_luids, sched_finish_luids): New functions.
6461         (insn_luid): New debug function.
6462         (sched_extend_target): New function.
6463         (haifa_init_insn): New static function.
6464         (sched_init_only_bb): New hook.
6465         (sched_split_block): New hook.
6466         (sched_split_block_1): New function.
6467         (sched_create_empty_bb): New hook.
6468         (sched_create_empty_bb_1): New function.
6469         (common_sched_info, ready): New global variables.
6470         (current_sched_info_var): Remove.
6471         (move_block_after_check): Use common_sched_info.
6472         (haifa_luid_for_non_insn): New static function.
6473         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
6474         (increase_insn_priority): New.
6475         * modulo-sched.c: (issue_rate): Remove static declaration.
6476         (sms_sched_info): Change type to haifa_sched_info.
6477         (sms_sched_deps_info, sms_common_sched_info): New variables.
6478         (setup_sched_infos): New.
6479         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
6480         Do not call regstat_free_calls_crossed.
6481         (sms_print_insn): Use const_rtx.
6482         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
6483         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
6484         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
6485         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
6486         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
6487         current_sched_info to use it.
6488         (enum reg_pending_barrier_mode): Move to sched-int.h.
6489         (h_d_i_d): New variable. Initialize to NULL.
6490         ({true, output, anti, spec, forward}_dependency_cache): Initialize
6491         to NULL.
6492         (estimate_dep_weak): Remove static declaration.
6493         (sched_has_condition_p): New function.  Adjust users of
6494         sched_get_condition to use it instead.
6495         (conditions_mutex_p): Add arguments indicating which conditions are
6496         reversed.  Use them.
6497         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
6498         argument to indicate whether returned condition is reversed.  Do not
6499         generate new rtx when condition should be reversed; indicate it by
6500         setting new argument instead.
6501         (add_dependence_list_and_free): Add deps parameter.
6502         Update all users.  Do not free dependence list when
6503         deps context is readonly.
6504         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
6505         contexts.
6506         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
6507         (remove_from_deps): New. Use the above functions.
6508         (cur_insn, can_start_lhs_rhs_p): New static variables.
6509         (add_or_update_back_dep_1): Initialize present_dep_type.
6510         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
6511         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
6512         haifa_note_dep): New functions implementing dependence hooks for
6513         the Haifa scheduler.
6514         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
6515         note_dep): New functions.
6516         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
6517         functions.
6518         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
6519         (free_deps): Initialize deps->reg_last.
6520         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
6521         sched_analyze_insn): Update to use dependency hooks infrastructure
6522         and readonly contexts.
6523         (deps_analyze_insn): New function.  Move part of logic from ...
6524         (sched_analyze): ... here.  Also move some logic to ...
6525         (deps_start_bb): ... here.  New function.
6526         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
6527         sel_sched_p.
6528         (sched_deps_init): New function.  Move code from ...
6529         (init_dependency_caches): ... here.  Remove.
6530         (init_deps_data_vector): New.
6531         (sched_deps_finish): New function.  Move code from ...
6532         (free_dependency_caches): ... here.  Remove.
6533         (init_deps_global, finish_deps_global): Adjust for use with
6534         selective scheduling.
6535         (get_dep_weak): Move logic to ...
6536         (get_dep_weak_1): New function.
6537         (ds_merge): Move logic to ...
6538         (ds_merge_1): New static function.
6539         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
6540         (ds_get_max_dep_weak): New function.
6541         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
6542         (n_insns): Rename to rgn_n_insns.
6543         (debug_ebb_dependencies): New function.
6544         (init_ready_list): Use it.
6545         (begin_schedule_ready): Use sched_init_only_bb.
6546         (ebb_print_insn): Indicate when an insn starts a new cycle.
6547         (contributes_to_priority, compute_jump_reg_dependencies,
6548         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
6549         (add_block1): Remove to ebb_add_block.
6550         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
6551         (schedule_ebb): Initialize them.  Use remove_notes instead of
6552         rm_other_notes.  Use haifa_local_init/finish.
6553         (schedule_ebbs): Use haifa_sched_init/finish.
6554         * sched-int.h: Include vecprim.h, remove rtl.h.
6555         (struct ready_list): Delete declaration.
6556         (sched_verbose_param, enum sched_pass_id_t,
6557         bb_vec_t, insn_vec_t, rtx_vec_t): New.
6558         (struct sched_scan_info_def): New structure.
6559         (sched_scan_info, sched_scan, sched_init_bbs,
6560         sched_init_luids, sched_finish_luids, sched_extend_target,
6561         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
6562         (struct common_sched_info_def): New.
6563         (common_sched_info, haifa_common_sched_info,
6564         sched_emulate_haifa_p): Declare.
6565         (sel_sched_p): New.
6566         (sched_luids): Declare.
6567         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
6568         (sched_max_luid, insn_luid): Declare.
6569         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
6570         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
6571         print_insn, print_pattern, print_value, haifa_classify_insn,
6572         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
6573         setup_sched_dump, sched_init, sched_finish,
6574         sel_insn_is_speculation_check): Export.
6575         (struct ready_list): Move from haifa-sched.c.
6576         (ready_try, ready, max_issue): Export.
6577         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
6578         sched_init_only_bb, sched_split_block, sched_split_block_1,
6579         sched_create_empty_bb, sched_create_empty_bb_1,
6580         sched_create_recovery_block, sched_create_recovery_edges): Export.
6581         (enum reg_pending_barrier_mode): Export.
6582         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
6583         (deps_t): New.
6584         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
6585         print_insn field.  Move add_block and fix_recovery_cfg to
6586         common_sched_info_def.  Move compute_jump_reg_dependencies,
6587         use_cselib  ...
6588         (struct sched_deps_info_def): ... this new structure.
6589         (sched_deps_info): Declare.
6590         (struct spec_info_def): Remove weakness_cutoff, add
6591         data_weakness_cutoff and control_weakness_cutoff.
6592         (spec_info): Declare.
6593         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
6594         dep_count field.
6595         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
6596         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
6597         (current_sched_info): Change type to struct haifa_sched_info.
6598         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
6599         (h_d_i_d): New variable.
6600         (HDID): New accessor macro.
6601         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
6602         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
6603         and HDID.
6604         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
6605         (enum SCHED_FLAGS): Update for selective scheduler.
6606         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
6607         (init_dependency_caches, free_dependency_caches): Delete declarations.
6608         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
6609         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
6610         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
6611         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
6612         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
6613         ds_to_dt): Export.
6614         (rm_other_notes): Delete declaration.
6615         (schedule_block): Remove one argument.
6616         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
6617         ready_element, ready_lastpos, sched_extend_ready_list,
6618         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
6619         concat_note_lists): Export.
6620         (struct region): Move from sched-rgn.h.
6621         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6622         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6623         BLOCK_TO_BB, CONTAINING_RGN): Export.
6624         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
6625         (current_nr_blocks, current_blocks, target_bb): Likewise.
6626         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
6627         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
6628         sched_rgn_local_init, extend_regions,
6629         rgn_make_new_region_out_of_new_block, compute_priorities,
6630         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
6631         extend_rgns, deps_join rgn_setup_common_sched_info,
6632         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
6633         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
6634         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
6635         increase_insn_priority): Likewise.
6636         * sched-rgn.c: Include sel-sched.h.
6637         (ref_counts): New static variable.  Use it ...
6638         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
6639         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
6640         (sched_is_disabled_for_current_region_p): Delete static declaration.
6641         (struct region): Move to sched-int.h.
6642         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6643         ebb_head): Define and initialize.
6644         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6645         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
6646         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
6647         sched-int.h.
6648         (find_single_block_region): Add new argument to indicate that EBB
6649         regions should be constructed.
6650         (debug_live): Delete declaration.
6651         (current_nr_blocks, current_blocks, target_bb):
6652         Remove static qualifiers.
6653         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
6654         declaration.
6655         (init_regions): Delete declaration.
6656         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
6657         rgn_estimate_number_of_insns): New.
6658         (too_large): Use estimate_number_of_insns.
6659         (haifa_find_rgns): New. Move the code from ...
6660         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
6661         (free_trg_info): New.
6662         (compute_trg_info): Allocate candidate tables here instead of ...
6663         (init_ready_list): ... here.
6664         (rgn_print_insn): Use const_rtx.
6665         (contributes_to_priority, extend_regions): Delete static declaration.
6666         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
6667         (add_block1): Rename to rgn_add_block.
6668         (debug_rgn_dependencies): Delete static qualifier.
6669         (new_ready): Use sched_deps_info.  Simplify.
6670         (rgn_common_sched_info, rgn_const_sched_deps_info,
6671         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
6672         New.
6673         (region_sched_info): Rename to rgn_const_sched_info.
6674         (deps_join): New, extracted from ...
6675         (propagate_deps): ... here.
6676         (compute_block_dependences, debug_dependencies): Update for selective
6677         scheduling.
6678         (free_rgn_deps, compute_priorities): New functions.
6679         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
6680         sched_rgn_compute_dependencies): New functions.
6681         (schedule_region): Use them.
6682         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
6683         rgn_setup_common_sched_info, rgn_setup_sched_infos):
6684         New functions.
6685         (schedule_insns): Call new functions that were split out.
6686         (rgn_make_new_region_out_of_new_block): New.
6687         (get_rgn_sched_max_insns_priority): New.
6688         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
6689         scheduling when appropriate.
6690         * sched-vis.c: Include insn-attr.h.
6691         (print_value, print_pattern): Make global.
6692         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
6693         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
6694         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
6695         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
6696         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
6697         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
6698         hooks.  Initialize them to 0.
6699         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
6700         * target.h (struct gcc_target): Add them.  Rename gen_check field to
6701         gen_spec_check.
6702         * flags.h (sel_sched_switch_set): Declare.
6703         * opts.c (sel_sched_switch_set): New variable.
6704         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
6705         pipelining is disabled from command line.
6706         (common_handle_option): Record whether selective scheduling is
6707         requested from command line.
6708         * doc/invoke.texi: Document new flags and parameters.
6709         * doc/tm.texi: Document new target hooks.
6710         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
6711         ia64_gen_check.
6712         (dfa_state_size): Do not declare locally.
6713         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
6714         * config/rs6000/rs6000.c (rs6000_init_sched_context,
6715         rs6000_alloc_sched_context, rs6000_set_sched_context,
6716         rs6000_free_sched_context): New functions.
6717         (struct _rs6000_sched_context): New.
6718         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
6719         scheduling.
6720         (rs6000_sched_finish): Do not run for selective scheduling.
6721
6722 2008-08-31  Jan Hubicka  <jh@suse.cz>
6723
6724         * frv.c (frv_rtx_costs): Update forward declaration.
6725         * spu.c (spu_rtx_costs): Likewise.
6726         * pdp11.c: Include df.h
6727         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
6728         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
6729         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
6730         * iq2000.c (iq2000_address_cost): Add speed argument.
6731         (iq2000_rtx_costs): Likewise.
6732         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
6733         update call of mn10300_address_cost.
6734         * mcore.c: Include df.h
6735         (mcore_rtx_costs): Update prototype.
6736         * score3.c: Include df.h
6737         (score3_rtx_costs): Remove speed argument.
6738         * score7.c: Include df.h
6739         (score7_address_cost): Remove speed argument.
6740         * score-protos.h (score_address_cost): Update prototype.
6741         * score.c: Include df.h
6742         (score_rtx_costs): Update call of costs functions.
6743         * v850.c (v850_rtx_costs): Add bool argument.
6744
6745 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
6746
6747         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
6748
6749 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6750
6751         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
6752         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
6753
6754 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6755
6756         * mkmap-flat.awk: Add option pe_dll.
6757         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
6758         * config/i386/t-cygwin (SHLIB_LC): Add.
6759         * config/i386/t-mingw32 (SHLIB_LC): Add.
6760         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
6761         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
6762         (LINK_SPEC): Support libgcc_s.
6763         (LIBGCC_SPEC): Support libgcc_s.
6764         (LIBGCC_SONAME): New.
6765
6766 2008-08-31  Jan Hubicka  <jh@suse.cz>
6767
6768         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
6769         mistakely had old version of patch.
6770
6771         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
6772         (ipcp_estimate_growth): New.
6773         (ipcp_insert_stage): Use ipcp_estimate_growth.
6774         * profile.c (branch_prob): When reading failed, do not consider
6775         profile as read.
6776
6777 2008-08-31  Jan Hubicka  <jh@suse.cz>
6778
6779         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
6780         loop is optimized for speed.
6781
6782 2008-08-31  Richard Guenther  <rguenther@suse.de>
6783
6784         PR middle-end/37289
6785         * fold-const.c (fold_binary): Retain conversions in folding
6786         ~A + 1 to -A.
6787
6788 2008-08-31  Jan Hubicka  <jh@suse.cz>
6789
6790         * postreload-gcse.c (eliminate_partially_redundant_loads):
6791         Use optimize_bb_for_size_p.
6792         * predict.c (maybe_hot_frequency_p): Make inline.
6793         (maybe_hot_count_p): Break out from ...
6794         (maybe_hot_bb_p): ... this one.
6795         (maybe_hot_edge_p): Simplify.
6796         * basic-block.h (probably_cold_bb_p): Remove.
6797
6798 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6799
6800         PR target/37168
6801         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
6802         prototype.
6803         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
6804         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
6805         Also split V4SFmode.
6806         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
6807         vector float modes.
6808
6809 2008-08-31  Jan Hubicka  <jh@suse.cz>
6810
6811         * predict.c (PROB_VERY_LIKELY): Make small enough so things
6812         become cold.
6813         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
6814
6815 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6816
6817         PR debug/37287
6818         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
6819         add source coords.
6820
6821         * dwarf2out.c (native_encode_initializer): Subtract min_index for
6822         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
6823
6824 2008-08-31  Jan Hubicka  <jh@suse.cz>
6825
6826         * sparc.h (BRANCH_COST): Fix macro definition.
6827         * avr.c (avr_operand_rtx_cost): Add speed argument.
6828         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
6829
6830 2008-08-31  Richard Guenther  <rguenther@suse.de>
6831
6832         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
6833         types instead of operands.  Re-instantiate verifying of
6834         binary expression operands.
6835
6836 2008-08-30  Jan Hubicka  <jh@suse.cz>
6837
6838         * fwprop.c (should_replace_address): Add speed attribute.
6839         (PR_OPTIMIZE_FOR_SPEED): New flag.
6840         (propagate_rtx_1): Use it.
6841         (propagate_rtx): Set it.
6842         (try_fwprop_subst): Update call of rtx_costs.
6843         (forward_propagate_and_simplify): LIkewise.
6844         * hooks.c (hook_int_rtx_bool_0): New
6845         (hook_bool_rtx_int_int_intp_false): Replace by ...
6846         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6847         * hooks.h (hook_int_rtx_bool_0): New
6848         (hook_bool_rtx_int_int_intp_false): Replace by ...
6849         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6850         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
6851         (prepare_cmp_insn): UPdate call of rtx_cost.
6852         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
6853         (reload_cse_simplify_operands): Update call of rtx_cost.
6854         (reload_cse_move2add): call of rtx_cost.
6855         * target.h (struct gcc_target): Update rtx_costs and address_costs.
6856         * rtlanal.c (rtx_cost): Add speed argument.
6857         (address_cost): Add speed argument
6858         (default_address_cost): Likewise.
6859         (insn_rtx_cost): Likewise.
6860         * cfgloopanal.c (seq_cost): Add speed argument.
6861         (target_reg_cost, target_spill_cost): Turn to array.
6862         (init_set_costs): Update for speed.
6863         (estimate_reg_pressure_cost): Add speed argument.
6864         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
6865         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
6866         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
6867         (seq_cost): Add speed argument.
6868         (computation_cost): Add speed arugment.
6869         (add_cost, multiply_by_const, get_address_cost): add speed argument.
6870         (force_expr_to_var_cost): Update for profile info.
6871         (force_var_cost): Likewise.
6872         (split_address_cost): Likewise.
6873         (ptr_difference_cost): Likewise.
6874         (difference_cost): Likewise.
6875         (get_computation_cost_at): Likewise.
6876         (determine_iv_cost): Likewise.
6877         (ivopts_global_cost_for_size): Likewise.
6878         (rewrite_use_address): Likewise.
6879         (tree_ssa_iv_optimize_loop): Initialize speed field.
6880         * cse.c (optimize_this_for_speed_p): New static var.
6881         (notreg_cost): Update call of rtx_cost.
6882         (cse_extended_basic_block): set optimize_this_for_speed_p.
6883         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
6884         (noce_try_cmove_arith): Likewise.
6885         (noce_try_sign_mask): LIkewise.
6886         * expr.c (compress_float_constant): Update rtx_cost calls.
6887         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
6888         argument.
6889         (addr_to_parts): Likewise.
6890         (create_mem_ref): Likewise.
6891         * dse.c (find_shift_sequence): Add speed argument.
6892         (replace_read): Update call.
6893         * calls.c (precompute_register_parameters): Update call of rtx_cost.
6894         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
6895         * neg_cost, shift_cost, shiftadd_cost,
6896         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
6897         mul_highpart_cost): Increase dimension.
6898         (init_expmed): Initialize for both size and speed.
6899         (expand_shift): Use profile.
6900         (synth_mult): Use profile.
6901         (choose_mult_variant): Use profile.
6902         (expand_mult): Use profile.
6903         (expand_mult_highpart_optab): Use profile.
6904         (expand_mult_highpart): Use profile.
6905         (expand_smod_pow2): Use profile.
6906         (expand_divmod): Use profile.
6907         * simplify-rtx.c (simplify_binary_operation_1): Update call of
6908         rtx_cost.
6909         * loop-invariant.c (create_new_invariant): Use profile.
6910         (gain_for_invariant): Add speed parameter.
6911         (best_gain_for_invariant): Likewise.
6912         (find_invariants_to_move): Likewise.
6913         (move_single_loop_invariants): Set it.
6914         * target-def.h (TARGET_RTX_COSTS): Use hook.
6915         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
6916         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
6917         * output.h (default_address_cost): Update prototype.
6918         * combine.c (optimize_this_for_speed_p): New static var.
6919         (combine_validate_cost): Update call of rtx_cost.
6920         (combine_instructions): Set optimize_this_for_speed_p.
6921         (expand_compound_operation): Update call of rtx_cost.
6922         (make_extraction):Update call of rtx_cost.
6923         (force_to_mode):Update call of rtx_cost.
6924         (distribute_and_simplify_rtx):Update call of rtx_cost.
6925         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
6926         (estimate_reg_pressure_cost): Update prototype.
6927         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
6928         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
6929         Remove.
6930         * config/alpha/alpha.c (alpha_rtx_costs): Update.
6931         (alpha_rtx_costs): Update.
6932         * config/frv/frv.c (frv_rtx_costs): Update.
6933         * config/s390/s390.c (s390_rtx_costs): Update.
6934         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
6935         (m32c_rtx_costs): Update.
6936         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
6937         (spu_rtx_costs): Update.
6938         * config/sparc/sparc.c (sparc_rtx_costs): Update.
6939         * config/m32r/m32r.c (m32r_rtx_costs): Update.
6940         * config/i386/i386.c (:ix86_address_cost): Update.
6941         (ix86_rtx_costs): Update.
6942         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
6943         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
6944         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
6945         * config/crx/crx.c (crx_address_cost): Update.
6946         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
6947         * config/stormy16/stormy16.c
6948         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
6949         * config/m68hc11/m68hc11.c
6950         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
6951         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
6952         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
6953         Update.
6954         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
6955         Update
6956         * config/ia64/ia64.c (ia64_rtx_costs): Update.
6957         * config/m68k/m68k.c (m68k_rtx_costs): Update.
6958         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
6959         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
6960         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
6961         (mcore_rtx_costs): update.
6962         * config/score/score3.c (score3_rtx_costs): Update.
6963         * config/score/score7.c (score7_rtx_costs): Update.
6964         * config/score/score3.h (score3_rtx_costs):Update.
6965         * config/score/score7.h (score7_rtx_costs): Update.
6966         * config/score/score.c (score_rtx_costs): Update.
6967         * config/arm/arm.c (arm_address_cost): Update.
6968         (arm_rtx_costs_1): Update.
6969         (arm_rtx_costs_1): Update.
6970         (arm_size_rtx_costs): Update.
6971         (arm_size_rtx_costs): Update.
6972         (arm_size_rtx_costs): Update.
6973         (arm_xscale_rtx_costs): Update.
6974         (arm_thumb_address_cost): Update.
6975         * config/pa/pa.c (hppa_address_cost): Update.
6976         * config/mips/mips.c (mips_rtx_costs): Update.
6977         * config/vax/vax.c (vax_address_cost): Update.
6978         * config/h8300/h8300.c (h8300_shift_costs): Update.
6979         (h8300_rtx_costs): Update.
6980         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
6981         (v850_rtx_costs): Update.
6982         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
6983         * config/bfin/bfin.c
6984         (bfin_address_cost): Update.
6985         (bfin_rtx_costs): Update.
6986         * stmt.c (lshift_cheap_p): Update.
6987
6988 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6989
6990         PR middle-end/36444
6991         * expmed.c (extract_bit_field_1): Check the mode size to make
6992         sure the vector modes have the same size.
6993
6994 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
6995
6996         * dojump.c (top level): Include basic-block.h to declare
6997         optimize_insn_for_speed_p
6998
6999         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
7000
7001         * opts.h (CL_SAVE): New option class for marking options that are
7002         target specific options usable in the target attribute.
7003         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
7004
7005         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
7006         can easily find the target specific options that are safe to use
7007         in the attribute or pragma.
7008
7009         * attribs.c (decl_attributes): Change #pragma GCC option to
7010         #pragma GCC target, and attribute((option(...))) to
7011         attribute((target(...))).
7012
7013         * doc/extend.texi (target attribute): Change from option
7014         attribute.  Delete push/pop/reset.
7015         (#pragma GCC target): Change from #pragma GCC option.  Delete
7016         push/pop/reset.
7017         (#pragma GCC push_options): Document new pragma.
7018         (#pragma GCC pop_options): Document new pragma.
7019         (#pragma GCC reset_options): Document new pragma.
7020
7021         * targhooks.c (default_target_option_valid_attribute_p): Add
7022         warning about port not supporting target attributes.
7023         (default_target_option_pragma_parse): New function, warn about
7024         #pragma GCC target not being supported.
7025
7026         * targhooks.h (default_target_option_pragma_parse): Add
7027         declaration.
7028
7029         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
7030         TI_CURRENT_OPTION_PRAGMA.
7031         (current_target_pragma): Rename from current_option_pragma.
7032
7033         * target.h: (struct target_option): Delete booleans for changing
7034         the optimization level on hot/cold functions.  Change signature of
7035         pragma_parse hook to take a second tree.
7036
7037         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
7038
7039         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
7040         that the declaration is done at global scope.
7041
7042         * langhooks.c (add_builtin_function_common): Move most of the code
7043         from add_builtin_function here, calling the hook passed in.
7044         (add_builtin_function): Call add_builtin_function_common with
7045         standard builtin hook.
7046         (add_builtin_function_ext_scope): New function to add builtins to
7047         global scope.
7048
7049         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
7050         hook.
7051         (add_builtin_function_ext_scope): Add declaration.
7052
7053         * c-pragma.c (handle_pragma_target): Rename from
7054         handle_pragma_option, #pragma GCC option is now #pragma GCC
7055         target.  Move warning about port not supporting target options to
7056         default pragma parse hook.  Remove push/pop/reset from this
7057         pragma.
7058         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
7059         (option_stack): Delete static variable.
7060         (optimize_stack): Ditto.
7061         (optons_stack): New stack of saved target and optimization
7062         options.
7063         (handle_pragma_push_options): New function to handle pushing both
7064         target and optimization options.
7065         (handle_pragma_pop_options): New function to handle popping both
7066         target and optimization options.
7067         (handle_pragma_reset_options): New function to handle resetting
7068         both target and optimization options to their initial state.
7069         (init_pragma): Rename handle_pragma_option to
7070         handle_pragma_target.  Add support for push_options, pop_options,
7071         and reset_options pragmas.
7072
7073         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
7074         default_target_option_pragma_parse.
7075         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
7076         default_target_option_valid_attribute_p.
7077         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7078         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7079         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
7080         optimization level on hot/cold functions.
7081
7082         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
7083         if the caller and callee have different optimization levels.
7084
7085         * c-common.c (handle_target_attribute): Rename from
7086         handle_option_attribute, attribute((option(...))) is now
7087         attribute((target(...))).  Move warning if the port does not
7088         support target attributes to the default hook.
7089         (handle_hot_attribute): Delete code to change the optimization
7090         level of hot functions.
7091         (handle_cold_attribute): Ditto.
7092
7093         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
7094         argument that is the binary tree options to use if there are no
7095         arguments.  Call ix86_valid_target_attribute_tree instead of
7096         ix86_valid_option_attribute_tree.
7097         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
7098         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
7099         ix86_pragma_option_parse.
7100
7101         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
7102         Rename from ix86_valid_option_attribute_tree.
7103
7104         * config/i386/i386.c (ix86_add_new_builtins): New function to add
7105         new builtins when the ISA changes.
7106         (ix86_valid_target_attribute_tree): Rename from
7107         ix86_valid_option_attribute_tree.  Change callers.  If the
7108         function specified optimization options, use those as the starting
7109         point before setting up the target attributes.  If the
7110         optimization options were changed in the course of setting the
7111         target attributes, record the new optimization options.
7112         (ix86_valid_target_attribute_tree_inner_p): Rename from
7113         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
7114         ix86_add_new_builtins if the ISA changed.
7115         (ix86_valid_target_attribute_p): Rename from
7116         ix86_valid_option_attribute_p.  Change callers.
7117         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
7118         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
7119         as delayed builtin functions.
7120         (struct builtin_isa): New structure to record builtin functions
7121         that should be delayed until the ISA for that function is used.
7122         (ix86_builtins_isa): Change from int to struct to track builtin
7123         functions we want to declare at some point.
7124         (def_builtin): If the front end can delay defining the builtin
7125         functions, don't create builtins for ISAs not part of the default
7126         options.
7127         (def_builtin_const): Ditto.
7128         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
7129         __builtin_ia32_pcmov_v2di to be different builtin functions.
7130         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
7131         a structure instead of an int.
7132         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
7133         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
7134         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7135         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7136
7137         * config/ia64/ia64.h
7138         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7139         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7140
7141         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
7142         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
7143         (LANG_HOOKS_INITIALIZER): Add
7144         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
7145
7146 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
7147
7148         PR target/37270
7149         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
7150         the reload address with the index register for SFmode
7151         access with a displacement.
7152
7153 2008-08-30  Jan Hubicka  <jh@suse.cz>
7154
7155         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
7156         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
7157         * dojump.c (do_jump): Likewise.
7158         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
7159         (note-if_info): Add BRANCH_COST.
7160         (noce_try_store_flag_constants, noce_try_addcc,
7161         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
7162         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
7163         find_if_case_2): Use computed branch cost.
7164         * expr.h (BRANCH_COST): Update default.
7165         * predict.c (predictable_edge_p): New function.
7166         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
7167         Update BRANCH_COST call.
7168         * basic-block.h (predictable_edge_p): Declare.
7169         * config/alpha/alpha.h (BRANCH_COST): Update.
7170         * config/frv/frv.h (BRANCH_COST): Update.
7171         * config/s390/s390.h (BRANCH_COST): Update.
7172         * config/spu/spu.h (BRANCH_COST): Update.
7173         * config/sparc/sparc.h (BRANCH_COST): Update.
7174         * config/m32r/m32r.h (BRANCH_COST): Update.
7175         * config/i386/i386.h (BRANCH_COST): Update.
7176         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
7177         BRANCH_COST.
7178         * config/sh/sh.h (BRANCH_COST): Update.
7179         * config/pdp11/pdp11.h (BRANCH_COST): Update.
7180         * config/avr/avr.h (BRANCH_COST): Update.
7181         * config/crx/crx.h (BRANCH_COST): Update.
7182         * config/xtensa/xtensa.h (BRANCH_COST): Update.
7183         * config/stormy16/stormy16.h (BRANCH_COST): Update.
7184         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
7185         * config/iq2000/iq2000.h (BRANCH_COST): Update.
7186         * config/ia64/ia64.h (BRANCH_COST): Update.
7187         * config/rs6000/rs6000.h (BRANCH_COST): Update.
7188         * config/arc/arc.h (BRANCH_COST): Update.
7189         * config/score/score.h (BRANCH_COST): Update.
7190         * config/arm/arm.h (BRANCH_COST): Update.
7191         * config/pa/pa.h (BRANCH_COST): Update.
7192         * config/mips/mips.h (BRANCH_COST): Update.
7193         * config/vax/vax.h (BRANCH_COST): Update.
7194         * config/h8300/h8300.h (BRANCH_COST): Update.
7195         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
7196         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
7197         * doc/tm.texi (BRANCH_COST): Update.
7198
7199 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
7200
7201         PR target/37283
7202         * config/arm/arm.c (arm_optimization_options): Set
7203         flag_section_anchors to 2 instead of 1 to distinguish it from
7204         -fsection-anchors given explicitely on the command line.
7205
7206 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
7207
7208         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
7209         final insn of a split.
7210
7211 2008-08-30  Jan Hubicka  <jh@suse.cz>
7212
7213         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
7214         optimized for speed.
7215         * final.c (compute_alignments): Use optimize_bb_for_size_p.
7216         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
7217         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
7218         flag_gcse_after_reload_set): New static vars.
7219         (common_handle_option): Enable those flags for profile-use.
7220         (decode_options): Remove optimize_size flags that are handled
7221         on higher granuality.
7222         * tree-vectorizer.c (vectorize_loops): Use
7223         optimize_loop_nest_for_speed_p.
7224         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
7225         * tree-predcom.c (tree_predictive_commoning): Use
7226         optimize_loop_for_speed_p.
7227         * varasm.c (assemble_start_function): Use
7228         optimize_function_for_speed_p.
7229         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
7230         * predict.c (optimize_loop_for_speed_p): Fix walk.
7231
7232 2008-08-30  Jan Hubicka  <jh@suse.cz>
7233
7234         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
7235         functions.
7236         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
7237         profile presence locally.
7238
7239 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
7240
7241         PR bootstrap/37086
7242         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
7243         versions before 4.0.
7244
7245 2008-08-29  Jan Hubicka  <jh@suse.cz>
7246
7247         * tree-inline.c (insert_init_stmt): Insert sequence even when
7248         not in SSA form.
7249
7250 2008-08-29  Jeff Law  <law@redhat.com>
7251
7252         * mn10300.c (mn10300_secondary_reload_class): We need secondary
7253         reloads for AM33-2 if IN is a pseudo with an equivalent memory
7254         location and class is an FP register.
7255
7256 2008-08-29  Jan Hubicka  <jh@suse.cz>
7257
7258         * see.c (see_merge_one_def_extension): Silence used uninitialized
7259         warning.
7260         * matrix-reorg.c (check_allocation_function): Likewise.
7261         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
7262
7263 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
7264
7265         PR c/37261
7266         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
7267         compute new & and | in type rather than TREE_TYPE (arg0).
7268
7269         * dwarf2out.c (fortran_common): Update comment.
7270         (gen_variable_die): Swap com_die and var_die variables in Fortran
7271         COMMON block handling code.
7272
7273         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
7274
7275         * dwarf2out.c (gen_const_die): New function.
7276         (size_of_die, value_format, output_die): Output larger
7277         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
7278         (native_encode_initializer): New function.
7279         (tree_add_const_value_attribute): Call it.
7280         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
7281
7282         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
7283         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
7284         TREE_THIS_VOLATILE to add_type_attribute.
7285
7286         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
7287         types.
7288         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
7289         types.
7290
7291         * dwarf2out.c (loc_by_reference): New function.
7292         (add_location_or_const_value_attribute): Use it.
7293
7294         PR fortran/23057
7295         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
7296         as DW_TAG_variable children of DW_TAG_common_block rather than
7297         DW_TAG_member children.  Put DW_AT_external to individual
7298         DW_TAG_variable DIEs, not to DW_TAG_common_block.
7299
7300         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
7301         loc_descriptor_from_tree_1.
7302
7303         PR fortran/29635
7304         PR fortran/23057
7305         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
7306         arguments to imported_module_or_decl.
7307         (debug_nothing_tree_tree): Removed.
7308         (debug_nothing_tree_tree_tree_bool): New prototype.
7309         * debug.c (do_nothing_debug_hooks): Adjust.
7310         (debug_nothing_tree_tree): Removed.
7311         (debug_nothing_tree_tree_tree_bool): New function.
7312         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
7313         (gen_variable_die): Put all common vars for the
7314         same COMMON block under one DW_TAG_common_block.
7315         (declare_in_namespace): Return new context_die, for Fortran
7316         return the module DIE instead of adding extra declarations into
7317         the namespace.
7318         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
7319         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
7320         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
7321         DW_AT_declaration.
7322         (dwarf2out_global_decl): Don't skip Fortran global vars.
7323         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
7324         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
7325         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
7326         DW_TAG_imported_declaration as child of previous
7327         DW_TAG_imported_module.
7328         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
7329         * sdbout.c (sdb_debug_hooks): Likewise.
7330         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
7331
7332 2008-08-29  Jan Hubicka  <jh@suse.cz>
7333
7334         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
7335
7336         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
7337         * ipa-cp.c (n_cloning_candidates): New static variable.
7338         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
7339         (ipcp_print_all_lattices): Improve debug output.
7340         (ipcp_cloning_candidate_p): New function.
7341         (ipcp_initialize_node_lattices): Use it.
7342         (ipcp_init_stage): Do only analyzis here; prettier debug output.
7343         (ipcp_propagate_stage): Prettier debug output.
7344         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
7345         (ipcp_print_all_structures): Remove.
7346         (ipcp_need_redirect_p): Test !n_cloning_candidates.
7347         (ipcp_insert_stage): Prettier debug output; call
7348         cgraph_remove_unreachable_nodes before propagating.
7349         (pass_ipa_cp): Schedule function removal pass.
7350         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
7351         debug output.
7352         (cgraph_maybe_hot_edge_p): Move to ...
7353         * predict.c (cgraph_maybe_hot_edge_p) ... here.
7354         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
7355         (common_handle_option): Set them; enable ipa-cp when profiling.
7356         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
7357         (ipa_print_all_jump_functions): Likewise.
7358         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
7359         (ipa_print_node_params, ipa_print_all_params): New.
7360         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
7361         ipa_print_all_param_flags): Remove.
7362         (ipa_print_node_params, ipa_print_all_params): New.
7363
7364 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
7365
7366         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
7367         change from 2008-04-03.
7368         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
7369
7370 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7371
7372         PR rtl-opt/37251
7373         * ira-color.c (push_allocnos_to_stack): Truncate
7374         removed_splay_allocno_vec.
7375
7376 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7377
7378         PR rtl-opt/37243
7379         * ira-color (ira_fast_allocation): Don't assign hard registers to
7380         global allocnos.
7381
7382 2008-08-29  Jan Hubicka  <jh@suse.cz>
7383
7384         PR middle-end/37278
7385         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
7386         for cold internal loops.
7387
7388 2008-08-29  Richard Guenther  <rguenther@suse.de>
7389
7390         * tree-ssa-structalias.c (create_variable_info_for): Do not
7391         create fields for heap vars or vars with a noalias state.
7392         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
7393         from ESCAPED.
7394
7395 2008-08-29  Richard Guenther  <rguenther@suse.de>
7396
7397         * common.opt (ftree-store-ccp): Mark as preserved for
7398         backward compatibility.
7399         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
7400         * tree-pass.h (pass_store_ccp): Remove.
7401         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
7402         (first_vdef): Remove declaration.
7403         (get_value_loaded_by): Likewise.
7404         * tree-ssa-ccp.c (do_store_ccp): Remove.
7405         (get_default_value): Simplify as do_store_ccp is always false
7406         now.  Do not initialize mem_ref.
7407         (set_value_varying): Likewise.
7408         (canonicalize_float_value): Likewise.
7409         (set_lattice_value): Likewise.
7410         (likely_value): Likewise.
7411         (surely_varying_stmt_p): Likewise.
7412         (ccp_initialize): Likewise.
7413         (ccp_lattice_meet): Likewise.
7414         (ccp_visit_phi_node): Likewise.
7415         (ccp_fold): Likewise.
7416         (evaluate_stmt): Likewise.
7417         (visit_assignment): Likewise.
7418         (ccp_visit_stmt): Likewise.
7419         (execute_ssa_ccp): Fold into ...
7420         (do_ssa_ccp): ... this.
7421         (do_ssa_store_ccp): Remove.
7422         (gate_store_ccp): Likewise.
7423         (pass_store_ccp): Likewise.
7424         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
7425         initialize mem_ref.
7426         * tree-ssa-propagate.c (first_vdef): Remove.
7427         (get_value_loaded_by): Likewise.
7428         (replace_vuses_in): Likewise.
7429         (substitute_and_fold): Do not call replace_vuses_in.
7430         * opts.c (decode_options): Do not set flag_tree_store_ccp.
7431
7432 2008-08-29  Richard Guenther  <rguenther@suse.de>
7433
7434         PR middle-end/37236
7435         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
7436         PARAM_NOALIAS tags with is_heapvar.
7437         * tree-ssa-operands.c (access_can_touch_variable): Offset
7438         based tests do not apply for heapvars.  Fix offset test.
7439
7440 2008-08-29  Jan Hubicka  <jh@suse.cz>
7441
7442         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
7443         (-fipa-cp-clone): Enabled by default at -O3.
7444         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
7445         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
7446
7447 2008-08-29  Jan Hubicka  <jh@suse.cz>
7448
7449         * tree.c (build_function_type_skip_args,
7450         build_function_decl_skip_args): New functions.
7451         * tree.h (build_function_type_skip_args,
7452         build_function_decl_skip_args): Declare.
7453         * gimple.c (giple_copy_call_skip_args): New function.
7454         (giple_copy_call_skip_args): Declare.
7455
7456         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
7457         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
7458         (ipcp_node_modifiable_p): ... this one; use
7459         tree_versionable_function_p.
7460         (ipcp_create_replace_map): Improve debug output.
7461         (ipcp_need_redirect_p): Return false when not clonning.
7462         (ipcp_update_callgraph): Skip args.
7463         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
7464         skip args.
7465         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
7466         (save_inline_function_body): Update call of tree_function_versioning.
7467         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
7468         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
7469         argument.
7470         (tree_function_versioning): Likewise.
7471         * tree-inline.h (tree_function_versioning): Update prototype.
7472
7473 2008-08-29  Jan Hubicka  <jh@suse.cz>
7474
7475         * loop-unswitch.c (unswitch_single_loop): Use
7476         optimize_loop_for_speed_p.
7477         * tree-ssa-threadupdate.c (mark_threaded_blocks):
7478         Use optimize_function_for_size_p.
7479         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
7480         * postreload-gcse.c (eliminate_partially_redundant_load):
7481         Use optimize_bb_for_size_p.
7482         * value-prof.c (gimple_divmod_fixed_value_transform,
7483         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
7484         gimple_stringops_transform): Use optimize_bb_for_size_p.
7485         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
7486         * final.c (compute_alignments): Use optimize_function_for_size_p.
7487         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
7488         (fold_builtin_strcpy, fold_builtin_fputs): Use
7489         optimize_function_for_size_p.
7490         * fold-const.c (tree_swap_operands_p): Use
7491         optimize_function_for_size_p.
7492         * recog.c (relax_delay_slots): Likewise.
7493         * tree-ssa-math-opts.c (replace_reciprocal):
7494         Use optimize_bb_for_speed_p.
7495         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
7496         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
7497         optimize_function_for_size_p.
7498         (cgraph_decide_inlining_of_small_function): Use
7499         optimize_function_for_size_p.
7500         * global.c (find_reg): Use optimize_function_for_size_p.
7501         * opts.c (decode_options): Do not clear flag_tree_ch,
7502         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
7503         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
7504         work it out from profile.
7505         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
7506         optimize_loop_for_speed_p.
7507         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7508         Constify argument.
7509         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
7510         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
7511         * tree-eh.c (decide_copy_try_finally): Use
7512         optimize_function_for_size_p.
7513         * local-alloc.c (block_alloc): Pass BB pointer.
7514         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
7515         * gcse.c (gcse_main): Use optimize_function_for_size_p.
7516         * loop-unroll.c (decide_unrolling_and_peeling):
7517         Use optimize_loop_for_size_p.
7518         (decide_peel_completely): Likewise.
7519         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
7520         optimize_loop_for_size_p.
7521         (vect_enhance_data_refs_alignment): Likewise.
7522         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
7523         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
7524         Update call.
7525         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
7526         (try_crossjump_bb): Use optimize_bb_for_size_p.
7527         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
7528         optimize_loop_for_speed_p.
7529         * bb-reorder.c (find_traces_1_round): Likewise.
7530         (copy_bb): Use optimize_bb_for_speed_p.
7531         (duplicate_computed_gotos): Likewise.
7532         * basic-block.h (optimize_loop_nest_for_size_p,
7533         optimize_loop_nest_for_speed_p): New.
7534         * stmt.c (expand_case): Use optimize_insn_for_size_p.
7535
7536 2008-08-29  Tristan Gingold  <gingold@adacore.com>
7537
7538         * gcov.c (main): Call expandargv.
7539
7540 2008-08-29  Jan Hubicka  <jh@suse.cz>
7541
7542         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
7543         is not cold.
7544         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7545         Constify arguments.
7546         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
7547         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7548         Constify.
7549         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
7550
7551 2008-08-29  Jan Hubicka  <jh@suse.cz>
7552
7553         * tree-pass.h (pass_strip_predict_hints): Declare.
7554         * predict.c (strip_builtin_expect): Rename to ...
7555         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
7556         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
7557         (tree_estimate_probability): Do not strip builtin_expect.
7558         (pass_strip_predict_hints): New pass.
7559         * tree-inline.c (expand_call_inline): When inlining cold function,
7560         predict it as unlikely.
7561         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
7562
7563 2008-08-29  Richard Guenther  <rguenther@suse.de>
7564
7565         PR tree-optimization/37207
7566         * tree-vrp.c (extract_range_from_binary_expr): Also try
7567         to constant fold if only one of the operands is a constant.
7568
7569 2008-08-29  Nick Clifton  <nickc@redhat.com>
7570
7571         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
7572         the same way as SYMBOL_REFs.
7573
7574 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
7575
7576         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
7577
7578 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7579
7580         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
7581         * config/mips/mips.md (branch_likely): Remove const.  Fix
7582         comment formatting.
7583         (define_delay for type "branch"): Change to only apply for branch
7584         with likely variant.
7585         (define_delay for type "branch" and "branch_likely" no).  New delay
7586         definition.
7587         (equality_op): New code iterator.
7588         (bbv, bbinv): New code attributes.
7589         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
7590         patterns.
7591
7592 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7593             Andrew Pinski  <pinskia@gcc.gnu.org>
7594
7595         PR 18050
7596         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
7597
7598 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
7599
7600         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
7601         rule that a symbolic constant must be defined and >= 0 for the
7602         corresponding facility to be present at compile-time.
7603         * gthr-posix.c: Likewise.
7604
7605 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7606
7607         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
7608         * config/mips/mips.md (D): New mode attribute.
7609         (mulsi3, muldi3): Merge it into ...
7610         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
7611         (muldi3_mul3): New pattern.
7612         (mulsi3_mult3): Rename to mulsi3_mul3.
7613
7614 2008-08-28  Jan Hubicka  <jh@suse.cz>
7615
7616         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
7617         to fail.
7618         * predict.c (always_optimize_for_size_p): Rename to ...
7619         (optimize_function_for_size): ... this one; make extern.
7620         (optimize_function_for_speed_p): New.
7621         (optimize_bb_for_size_p, optimize_bb_for_size_p,
7622         optimize_edge_for_size_p,optimize_edge_for_size_p,
7623         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
7624         * basic-block.h (optimize_function_for_size_p,
7625         optimize_function_for_speed_p): Declare.
7626         * i386.md (optimize_size checks): Replace them by appropriate
7627         predicate.
7628         (standard_80387_constant_p, ix86_compute_frame_layout,
7629         ix86_expand_epilogue, ix86_decompose_address,
7630         print_operand, emit_i387_cw_initialization,
7631         inline_memory_move_cost, ix86_pad_returns,
7632         ix86_reorg): Replace optimize_size checks.
7633
7634 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
7635
7636         * rtl.h (simplify_subreg_regno): Declare.
7637         * rtlanal.c (simplify_subreg_regno): New function, split out from...
7638         * simplify-rtx.c (simplify_subreg): ...here.
7639         * reload.c (find_reloads): Use simplify_subreg_regno instead of
7640         subreg_offset_representable_p.
7641
7642 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7643
7644         PR c/30949
7645         * c-typeck.c (convert_for_assignment): Give a note describing what
7646         was passed and what was expected.
7647
7648 2008-08-28  Joey Ye  <joey.ye@intel.com>
7649
7650         * doc/extend.texi: Document AVX built-in functions.
7651         * doc/invoke.texi: Document -mavx.
7652
7653 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
7654             Joey Ye  <joey.ye@intel.com>
7655             Xuepeng Guo  <xuepeng.guo@intel.com>
7656
7657         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
7658
7659         * config/i386/cpuid.h (bit_FMA): New.
7660         (bit_XSAVE): Likewise.
7661         (bit_OSXSAVE): Likewise.
7662         (bit_AVX): Likewise.
7663
7664         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
7665         define.  Use ASM_OUTPUT_AVX_PREFIX.
7666
7667         * config/i386/gmmintrin.h: New.
7668
7669         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
7670         (OPTION_MASK_ISA_AVX_SET): New.
7671         (OPTION_MASK_ISA_FMA_SET): Likewise.
7672         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
7673         (OPTION_MASK_ISA_FMA_SET): Likewise.
7674         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
7675         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
7676         (pta_flags): Add PTA_AVX and PTA_FMA.
7677         (override_options): Handle PTA_AVX and PTA_FMA.
7678         (init_cumulative_args): Handle warn_avx.
7679         (classify_argument): Return 0 for COImode and OImode.  Return
7680         1 and X86_64_AVX_CLASS for 256bit vector types.
7681         (examine_argument): Handle X86_64_AVX_CLASS.
7682         (construct_container): Likewise.
7683         (function_arg_advance_32): Pass OImode and 256bit vector types
7684         in AVX register.
7685         (function_arg_advance_64): Take a new argument to indicate if a
7686         parameter is named.  Handle 256bit vector types.  Return
7687         immediately for unnamed 256bit vector mode parameters.
7688         (function_arg_advance): Updated.
7689         (function_arg_32): Add comments for TImode.  Handle OImode
7690         and 256bit vector types.
7691         (function_arg_64): Take a new argument to indicate if a
7692         parameter is named.  Handle 256bit vector types.  Return NULL
7693         for unnamed 256bit vector mode parameters.
7694         (function_arg): Updated.
7695         (setup_incoming_varargs_64): Support
7696         AVX encoding for *sse_prologue_save_insn.
7697         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
7698         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
7699         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
7700         enabled, otherwise return -3.
7701         (standard_sse_constant_opcode): Handle AVX and 256bit vector
7702         modes.
7703         (print_reg): Support AVX registers.  Handle 'x' and 't'.
7704         Handle 'd' to duplicate the operand.
7705         (print_operand): Likewise.  Also support AVX vector compare
7706         instructions.
7707         (output_387_binary_op): Support AVX.
7708         (output_fp_compare): Likewise.
7709         (ix86_expand_vector_move_misalign): Likewise.
7710         (ix86_attr_length_vex_default): New.
7711         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7712         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7713         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7714         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7715         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
7716         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7717         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
7718         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
7719         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
7720         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
7721         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
7722         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
7723         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
7724         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
7725         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7726         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
7727         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
7728         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7729         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
7730         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
7731         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7732         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7733         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7734         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
7735         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
7736         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
7737         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
7738         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7739         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
7740         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
7741         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
7742         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
7743         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
7744         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7745         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7746         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7747         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
7748         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
7749         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
7750         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
7751         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
7752         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
7753         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
7754         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
7755         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
7756         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
7757         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7758         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7759         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7760         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7761         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7762         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7763         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7764         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7765         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7766         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7767         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7768         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7769         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7770         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7771         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7772         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7773         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7774         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
7775         and IX86_BUILTIN_MOVMSKPS256,
7776         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
7777         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
7778         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
7779         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
7780         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
7781         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
7782         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
7783         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
7784         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
7785         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
7786         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
7787         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
7788         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
7789         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
7790         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
7791         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
7792         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
7793         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
7794         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
7795         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
7796         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
7797         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
7798         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
7799         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
7800         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
7801         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
7802         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
7803         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
7804         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7805         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7806         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
7807         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
7808         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
7809         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
7810         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
7811         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
7812         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
7813         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
7814         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7815         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7816         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7817         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7818         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
7819         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
7820         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
7821         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
7822         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
7823         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
7824         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
7825         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
7826         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
7827         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
7828         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7829         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
7830         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7831         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
7832         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7833         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7834         IX86_BUILTIN_CMPPS,
7835         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
7836         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
7837         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
7838         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7839         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7840         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7841         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
7842         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7843         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
7844         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7845         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
7846         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7847         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
7848         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
7849         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
7850         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
7851         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7852         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7853         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7854         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7855         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7856         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7857         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7858         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7859         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7860         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7861         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7862         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7863         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7864         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7865         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7866         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7867         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7868         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
7869         IX86_BUILTIN_MOVMSKPS256.
7870         (ix86_init_mmx_sse_builtins): Support AVX builtins.
7871         (ix86_expand_args_builtin): Likewise.
7872         (ix86_expand_special_args_builtin): Likewise.
7873         (ix86_hard_regno_mode_ok): Handle AVX modes.
7874         (ix86_expand_vector_init_duplicate): Likewise.
7875         (ix86_expand_vector_init_one_nonzero): Likewise.
7876         (ix86_expand_vector_init_one_var): Likewise.
7877         (ix86_expand_vector_init_concat): Likewise.
7878         (ix86_expand_vector_init_general): Likewise.
7879         (ix86_expand_vector_set): Likewise.
7880         (ix86_vector_mode_supported_p): Likewise.
7881         (x86_extended_reg_mentioned_p): Check INSN_P before using
7882         PATTERN.
7883
7884         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
7885         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
7886
7887         * config/i386/i386.h (TARGET_AVX): New.
7888         (TARGET_FMA): Likewise.
7889         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
7890         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
7891         (VALID_AVX256_REG_MODE): New.
7892         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7893         (AVX_FLOAT_MODE_P): Likewise.
7894         (AVX128_VEC_FLOAT_MODE_P): Likewise.
7895         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7896         (AVX_VEC_FLOAT_MODE_P): Likewise.
7897         (ASM_OUTPUT_AVX_PREFIX): Likewise.
7898         (ASM_OUTPUT_OPCODE): Likewise.
7899         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
7900         support.
7901         (SSE_REG_MODE_P): Allow 256bit vector modes.
7902         (ix86_args): Add a warn_avx field.
7903
7904         * config/i386/i386.md (UNSPEC_PCMP): New.
7905         (UNSPEC_VPERMIL): Likewise.
7906         (UNSPEC_VPERMIL2): Likewise.
7907         (UNSPEC_VPERMIL2F128): Likewise.
7908         (UNSPEC_MASKLOAD): Likewise.
7909         (UNSPEC_MASKSTORE): Likewise.
7910         (UNSPEC_CAST): Likewise.
7911         (UNSPEC_VTESTP): Likewise.
7912         (UNSPECV_VZEROALL): Likewise.
7913         (UNSPECV_VZEROUPPER): Likewise.
7914         (XMM0_REG): Likewise.
7915         (XMM1_REG): Likewise.
7916         (XMM2_REG): Likewise.
7917         (XMM3_REG): Likewise.
7918         (XMM4_REG): Likewise.
7919         (XMM5_REG): Likewise.
7920         (XMM6_REG): Likewise.
7921         (XMM8_REG): Likewise.
7922         (XMM9_REG): Likewise.
7923         (XMM10_REG): Likewise.
7924         (XMM11_REG): Likewise.
7925         (XMM12_REG): Likewise.
7926         (XMM13_REG): Likewise.
7927         (XMM14_REG): Likewise.
7928         (XMM15_REG): Likewise.
7929         (prefix): Likewise.
7930         (prefix_vex_imm8): Likewise.
7931         (prefix_vex_w): Likewise.
7932         (length_vex): Likewise.
7933         (maxmin): Likewise.
7934         (movoi): Likewise.
7935         (*avx_ashlti3): Likewise.
7936         (*avx_lshrti3): Likewise.
7937         (*avx_setcc<mode>): Likewise.
7938         (*fop_<mode>_comm_mixed_avx): Likewise.
7939         (*fop_<mode>_comm_avx): Likewise.
7940         (*fop_<mode>_1_mixed_avx): Likewise.
7941         (*fop_<mode>_1_avx): Likewise.
7942         (*avx_<code><mode>3): Likewise.
7943         (*avx_ieee_smin<mode>3): Likewise.
7944         (*avx_ieee_smax<mode>3): Likewise.
7945         (mode): Add OI, V8SF and V4DF.
7946         (length): Support VEX prefix.
7947         (*cmpfp_i_mixed): Set prefix attribute.
7948         (*cmpfp_i_sse): Likewise.
7949         (*cmpfp_iu_mixed): Likewise.
7950         (*cmpfp_iu_sse): Likewise.
7951         (*movsi_1): Support AVX.
7952         (*movdi_2): Likewise.
7953         (*movdi_1_rex64): Likewise.
7954         (*movti_internal): Likewise.
7955         (*movti_rex64): Likewise.
7956         (*movsf_1): Likewise.
7957         (*movdf_nointeger): Likewise.
7958         (*movdf_integer_rex64): Likewise.
7959         (*movtf_internal): Likewise.
7960         (zero_extendsidi2_32): Likewise.
7961         (zero_extendsidi2_rex64): Likewise.
7962         (*extendsfdf2_mixed): Likewise.
7963         (*extendsfdf2_sse): Likewise.
7964         (*truncdfsf_fast_mixed): Likewise.
7965         (*truncdfsf_fast_sse): Likewise.
7966         (*truncdfsf_mixed): Likewise.
7967         (fix_trunc<mode>di_sse): Likewise.
7968         (fix_trunc<mode>si_sse): Likewise.
7969         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
7970         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
7971         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
7972         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
7973         (*rcpsf2_sse): Likewise.
7974         (*rsqrtsf2_sse): Likewise.
7975         (*sqrt<mode>2_sse): Likewise.
7976         (sse4_1_round<mode>2): Likewise.
7977         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
7978         Support AVX.  Set length attribute properly for AVX.
7979
7980         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
7981         (VECTOR_MODES (FLOAT, 32)): Likewise.
7982         (VECTOR_MODE (INT, DI, 8)): Likewise.
7983         (VECTOR_MODE (INT, HI, 32)): Likewise.
7984         (VECTOR_MODE (INT, QI, 64)): Likewise.
7985         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
7986         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
7987         (VECTOR_MODE (INT, DI, 4)): Removed.
7988         (VECTOR_MODE (INT, SI, 8)): Likewise.
7989         (VECTOR_MODE (INT, HI, 16)): Likewise.
7990         (VECTOR_MODE (INT, QI, 32)): Likewise.
7991         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
7992         (INT_MODE (OI, 32)): Likewise.
7993
7994         * config/i386/i386.opt (mavx): New.
7995         (mfma): Likewise.
7996
7997         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
7998
7999         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
8000         (*mov<mode>_internal_avx): New.
8001         (*movv2sf_internal_rex64_avx): Likewise.
8002         (*movv2sf_internal_avx): Likewise.
8003
8004         * config/i386/predicates.md (const_4_to_5_operand): New.
8005         (const_6_to_7_operand): Likewise.
8006         (const_8_to_11_operand): Likewise.
8007         (const_12_to_15_operand): Likewise.
8008         (avx_comparison_float_operator): Likewise.
8009
8010         * config/i386/sse.md (AVX256MODEI): New.
8011         (AVX256MODE): Likewise.
8012         (AVXMODEQI): Likewise.
8013         (AVXMODE): Likewise.
8014         (AVX256MODEF2P): Likewise.
8015         (AVX256MODE2P): Likewise.
8016         (AVX256MODE4P): Likewise.
8017         (AVX256MODE8P): Likewise.
8018         (AVXMODEF2P): Likewise.
8019         (AVXMODEF4P): Likewise.
8020         (AVXMODEDCVTDQ2PS): Likewise.
8021         (AVXMODEDCVTPS2DQ): Likewise.
8022         (avxvecmode): Likewise.
8023         (avxvecpsmode): Likewise.
8024         (avxhalfvecmode): Likewise.
8025         (avxscalarmode): Likewise.
8026         (avxcvtvecmode): Likewise.
8027         (avxpermvecmode): Likewise.
8028         (avxmodesuffixf2c): Likewise.
8029         (avxmodesuffixp): Likewise.
8030         (avxmodesuffixs): Likewise.
8031         (avxmodesuffix): Likewise.
8032         (vpermilbits): Likewise.
8033         (pinsrbits): Likewise.
8034         (mov<mode>): Likewise.
8035         (*mov<mode>_internal): Likewise.
8036         (push<mode>1): Likewise.
8037         (movmisalign<mode>): Likewise.
8038         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8039         (avx_movdqu<avxmodesuffix>): Likewise.
8040         (avx_lddqu<avxmodesuffix>): Likewise.
8041         (<plusminus_insn><mode>3): Likewise.
8042         (*avx_<plusminus_insn><mode>3): Likewise.
8043         (*avx_vm<plusminus_insn><mode>3): Likewise.
8044         (mul<mode>3): Likewise.
8045         (*avx_mul<mode>3): Likewise.
8046         (*avx_vmmul<mode>3): Likewise.
8047         (divv8sf3): Likewise.
8048         (divv4df3): Likewise.
8049         (avx_div<mode>3): Likewise.
8050         (*avx_div<mode>3): Likewise.
8051         (*avx_vmdiv<mode>3): Likewise.
8052         (avx_rcpv8sf2): Likewise.
8053         (*avx_vmrcpv4sf2): Likewise.
8054         (sqrtv8sf2): Likewise.
8055         (avx_sqrtv8sf2): Likewise.
8056         (*avx_vmsqrt<mode>2): Likewise.
8057         (rsqrtv8sf2): Likewise.
8058         (avx_rsqrtv8sf2): Likewise.
8059         (*avx_vmrsqrtv4sf2): Likewise.
8060         (<code><mode>3): Likewise.
8061         (*avx_<code><mode>3_finite): Likewise.
8062         (*avx_<code><mode>3): Likewise.
8063         (*avx_vm<code><mode>3): Likewise.
8064         (*avx_ieee_smin<mode>3): Likewise.
8065         (*avx_ieee_smax<mode>3): Likewise.
8066         (avx_addsubv8sf3): Likewise.
8067         (avx_addsubv4df3): Likewise.
8068         (*avx_addsubv4sf3): Likewise.
8069         (*avx_addsubv2df3): Likewise.
8070         (avx_h<plusminus_insn>v4df3): Likewise.
8071         (avx_h<plusminus_insn>v8sf3): Likewise.
8072         (*avx_h<plusminus_insn>v4sf3): Likewise.
8073         (*avx_h<plusminus_insn>v2df3): Likewise.
8074         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
8075         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
8076         (*avx_maskcmp<mode>3): Likewise.
8077         (avx_nand<mode>3): Likewise.
8078         (*avx_<code><mode>3): Likewise.
8079         (*avx_nand<mode>3): Likewise.
8080         (*avx_<code><mode>3): Likewise.
8081         (*avx_cvtsi2ss): Likewise.
8082         (*avx_cvtsi2ssq): Likewise.
8083         (*avx_cvtsi2sd): Likewise.
8084         (*avx_cvtsi2sdq): Likewise.
8085         (*avx_cvtsd2ss): Likewise.
8086         (avx_cvtss2sd): Likewise.
8087         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
8088         (avx_cvtps2dq<avxmodesuffix>): Likewise.
8089         (avx_cvttps2dq<avxmodesuffix>): Likewise.
8090         (*avx_cvtsi2sd): Likewise.
8091         (*avx_cvtsi2sdq): Likewise.
8092         (avx_cvtdq2pd256): Likewise.
8093         (avx_cvtpd2dq256): Likewise.
8094         (avx_cvttpd2dq256): Likewise.
8095         (*avx_cvtsd2ss): Likewise.
8096         (*avx_cvtss2sd): Likewise.
8097         (avx_cvtpd2ps256): Likewise.
8098         (avx_cvtps2pd256): Likewise.
8099         (*avx_movhlps): Likewise.
8100         (*avx_movlhps): Likewise.
8101         (avx_unpckhps256): Likewise.
8102         (*avx_unpckhps): Likewise.
8103         (avx_unpcklps256): Likewise.
8104         (*avx_unpcklps): Likewise.
8105         (avx_movshdup256): Likewise.
8106         (avx_movsldup256): Likewise.
8107         (avx_shufps256): Likewise.
8108         (avx_shufps256_1): Likewise.
8109         (*avx_shufps_<mode>): Likewise.
8110         (*avx_loadhps): Likewise.
8111         (*avx_storelps): Likewise.
8112         (*avx_loadlps): Likewise.
8113         (*avx_movss): Likewise.
8114         (*vec_dupv4sf_avx): Likewise.
8115         (*vec_concatv2sf_avx): Likewise.
8116         (*vec_concatv4sf_avx): Likewise.
8117         (*vec_setv4sf_0_avx): Likewise.
8118         (*vec_setv4sf_avx): Likewise.
8119         (*avx_insertps): Likewise.
8120         (avx_vextractf128<mode>): Likewise.
8121         (vec_extract_lo_<mode>): Likewise.
8122         (vec_extract_hi_<mode>): Likewise.
8123         (vec_extract_lo_<mode>): Likewise.
8124         (vec_extract_hi_<mode>): Likewise.
8125         (vec_extract_lo_v16hi): Likewise.
8126         (vec_extract_hi_v16hi): Likewise.
8127         (vec_extract_lo_v32qi): Likewise.
8128         (vec_extract_hi_v32qi): Likewise.
8129         (avx_unpckhpd256): Likewise.
8130         (*avx_unpckhpd): Likewise.
8131         (avx_movddup256): Likewise.
8132         (*avx_movddup): Likewise.
8133         (avx_unpcklpd256): Likewise.
8134         (*avx_unpcklpd): Likewise.
8135         (avx_shufpd256): Likewise.
8136         (avx_shufpd256_1): Likewise.
8137         (*avx_punpckhqdq): Likewise.
8138         (*avx_punpcklqdq): Likewise.
8139         (*avx_shufpd_<mode>): Likewise.
8140         (*avx_storehpd): Likewise.
8141         (*avx_loadhpd): Likewise.
8142         (*avx_loadlpd): Likewise.
8143         (*avx_movsd): Likewise.
8144         (*vec_concatv2df_avx): Likewise.
8145         (*avx_<plusminus_insn><mode>3): Likewise.
8146         (*avx_<plusminus_insn><mode>3): Likewise.
8147         (*avx_mulv8hi3): Likewise.
8148         (*avxv8hi3_highpart): Likewise.
8149         (*avx_umulv8hi3_highpart): Likewise.
8150         (*avx_umulv2siv2di3): Likewise.
8151         (*avx_mulv2siv2di3): Likewise.
8152         (*avx_pmaddwd): Likewise.
8153         (*avx_mulv4si3): Likewise.
8154         (*avx_ashr<mode>3): Likewise.
8155         (*avx_lshr<mode>3): Likewise.
8156         (*avx_ashl<mode>3): Likewise.
8157         (*avx_<code><mode>3): Likewise.
8158         (*avx_eq<mode>3): Likewise.
8159         (*avx_gt<mode>3): Likewise.
8160         (*avx_nand<mode>3): Likewise.
8161         (*avx_nand<mode>3): Likewise.
8162         (*avx_<code><mode>3): Likewise.
8163         (*avx_<code><mode>3): Likewise.
8164         (*avx_packsswb): Likewise.
8165         (*avx_packssdw): Likewise.
8166         (*avx_packuswb): Likewise.
8167         (*avx_punpckhbw): Likewise.
8168         (*avx_punpcklbw): Likewise.
8169         (*avx_punpckhwd): Likewise.
8170         (*avx_punpcklwd): Likewise.
8171         (*avx_punpckhdq): Likewise.
8172         (*avx_punpckldq): Likewise.
8173         (*avx_pinsr<avxmodesuffixs>): Likewise.
8174         (*avx_pinsrq): Likewise.
8175         (*avx_loadld): Likewise.
8176         (*vec_extractv2di_1_rex64_avx): Likewise.
8177         (*vec_extractv2di_1_avx): Likewise.
8178         (*vec_dupv2di_avx): Likewise.
8179         (*vec_concatv2si_avx): Likewise.
8180         (*vec_concatv4si_1_avx): Likewise.
8181         (*vec_concatv2di_avx): Likewise.
8182         (*vec_concatv2di_rex64_avx): Likewise.
8183         (*avx_uavgv16qi3): Likewise.
8184         (*avx_uavgv8hi3): Likewise.
8185         (*avx_psadbw): Likewise.
8186         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
8187         (*avx_phaddwv8hi3): Likewise.
8188         (*avx_phadddv4si3): Likewise.
8189         (*avx_phaddswv8hi3): Likewise.
8190         (*avx_phsubwv8hi3): Likewise.
8191         (*avx_phsubdv4si3): Likewise.
8192         (*avx_phsubswv8hi3): Likewise.
8193         (*avx_pmaddubsw128): Likewise.
8194         (*avx_pmulhrswv8hi3): Likewise.
8195         (*avx_pshufbv16qi3): Likewise.
8196         (*avx_psign<mode>3): Likewise.
8197         (*avx_palignrti): Likewise.
8198         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8199         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8200         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8201         (*avx_mpsadbw): Likewise.
8202         (*avx_packusdw): Likewise.
8203         (*avx_pblendvb): Likewise.
8204         (*avx_pblendw): Likewise.
8205         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8206         (avx_ptest256): Likewise.
8207         (avx_roundp<avxmodesuffixf2c>256): Likewise.
8208         (*avx_rounds<ssemodesuffixf2c>): Likewise.
8209         (*avx_aesenc): Likewise.
8210         (*avx_aesenclast): Likewise.
8211         (*avx_aesdec): Likewise.
8212         (*avx_aesdeclast): Likewise.
8213         (avx_vzeroupper): Likewise.
8214         (avx_vzeroupper_rex64): Likewise.
8215         (avx_vpermil<mode>): Likewise.
8216         (avx_vpermilvar<mode>3): Likewise.
8217         (avx_vpermil2<mode>3): Likewise.
8218         (avx_vperm2f128<mode>3): Likewise.
8219         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8220         (avx_vbroadcastss256): Likewise.
8221         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
8222         (avx_vinsertf128<mode>): Likewise.
8223         (vec_set_lo_<mode>): Likewise.
8224         (vec_set_hi_<mode>): Likewise.
8225         (vec_set_lo_<mode>): Likewise.
8226         (vec_set_hi_<mode>): Likewise.
8227         (vec_set_lo_v16hi): Likewise.
8228         (vec_set_hi_v16hi): Likewise.
8229         (vec_set_lo_v32qi): Likewise.
8230         (vec_set_hi_v32qi): Likewise.
8231         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8232         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8233         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
8234         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
8235         (vec_init<mode>): Likewise.
8236         (*vec_concat<mode>_avx): Likewise.
8237         (blendbits): Support V8SF and V4DF.
8238         (sse2_movq128): Support AVX.
8239         (<sse>_movnt<mode>): Likewise.
8240         (sse2_movntv2di): Likewise.
8241         (sse_rcpv4sf2): Likewise.
8242         (sse_sqrtv4sf2): Likewise.
8243         (sse_rsqrtv4sf2): Likewise.
8244         (<sse>_comi): Likewise.
8245         (<sse>_ucomi): Likewise.
8246         (sse_cvtss2si): Likewise.
8247         (sse_cvtss2si_2): Likewise.
8248         (sse_cvtss2siq): Likewise.
8249         (sse_cvtss2siq_2): Likewise.
8250         (sse_cvttss2si): Likewise.
8251         (sse_cvttss2siq): Likewise.
8252         (sse2_cvtsd2si): Likewise.
8253         (sse2_cvtsd2si_2): Likewise.
8254         (sse2_cvtsd2siq): Likewise.
8255         (sse2_cvtsd2siq_2): Likewise.
8256         (sse2_cvttsd2si): Likewise.
8257         (sse2_cvttsd2siq): Likewise.
8258         (sse2_cvtdq2pd): Likewise.
8259         (*sse2_cvtpd2dq): Likewise.
8260         (*sse2_cvttpd2dq): Likewise.
8261         (*sse2_cvtpd2ps): Likewise.
8262         (sse2_cvtps2pd): Likewise.
8263         (sse3_movshdup): Likewise.
8264         (sse3_movsldup): Likewise.
8265         (sse_storehps): Likewise.
8266         (*sse4_1_extractps): Likewise.
8267         (sse2_storelpd): Likewise.
8268         (vec_dupv2df_sse3): Likewise.
8269         (*vec_concatv2df_sse3): Likewise.
8270         (*sse4_1_pextrb): Likewise.
8271         (*sse4_1_pextrb_memory): Likewise.
8272         (*sse2_pextrw): Likewise.
8273         (*sse4_1_pextrw_memory): Likewise.
8274         (*sse4_1_pextrd): Likewise.
8275         (*sse4_1_pextrq): Likewise.
8276         (sse2_pshufd_1): Likewise.
8277         (sse2_pshuflw_1): Likewise.
8278         (sse2_pshufhw_1): Likewise.
8279         (*sse2_storeq_rex64): Likewise.
8280         (*vec_dupv4si): Likewise.
8281         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
8282         (sse2_pmovmskb): Likewise.
8283         (*sse2_maskmovdqu): Likewise.
8284         (*sse2_maskmovdqu_rex64): Likewise.
8285         (sse_ldmxcsr): Likewise.
8286         (sse_stmxcsr): Likewise.
8287         (abs<mode>2): Likewise.
8288         (sse4_1_movntdqa): Likewise.
8289         (sse4_1_phminposuw): Likewise.
8290         (sse4_1_extendv8qiv8hi2): Likewise.
8291         (*sse4_1_extendv8qiv8hi2): Likewise.
8292         (sse4_1_extendv4qiv4si2): Likewise.
8293         (*sse4_1_extendv4qiv4si2): Likewise.
8294         (sse4_1_extendv2qiv2di2): Likewise.
8295         (*sse4_1_extendv2qiv2di2): Likewise.
8296         (sse4_1_extendv4hiv4si2): Likewise.
8297         (*sse4_1_extendv4hiv4si2): Likewise.
8298         (sse4_1_extendv2hiv2di2): Likewise.
8299         (*sse4_1_extendv2hiv2di2): Likewise.
8300         (sse4_1_extendv2siv2di2): Likewise.
8301         (*sse4_1_extendv2siv2di2): Likewise.
8302         (sse4_1_zero_extendv8qiv8hi2): Likewise.
8303         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
8304         (sse4_1_zero_extendv4qiv4si2): Likewise.
8305         (*sse4_1_zero_extendv4qiv4si2): Likewise.
8306         (sse4_1_zero_extendv2qiv2di2): Likewise.
8307         (*sse4_1_zero_extendv2qiv2di2): Likewise.
8308         (sse4_1_zero_extendv4hiv4si2): Likewise.
8309         (*sse4_1_zero_extendv4hiv4si2): Likewise.
8310         (sse4_1_zero_extendv2hiv2di2): Likewise.
8311         (*sse4_1_zero_extendv2hiv2di2): Likewise.
8312         (sse4_1_zero_extendv2siv2di2): Likewise.
8313         (*sse4_1_zero_extendv2siv2di2): Likewise.
8314         (sse4_1_ptest): Likewise.
8315         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
8316         (sse4_2_pcmpestri): Likewise.
8317         (sse4_2_pcmpestrm): Likewise.
8318         (sse4_2_pcmpistri): Likewise.
8319         (sse4_2_pcmpistrm): Likewise.
8320         (aesimc): Likewise.
8321         (aeskeygenassist): Likewise.
8322
8323 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
8324
8325         * config/i386/predicates.md (vzeroall_operation): New.
8326
8327         * config/i386/sse.md (avx_vzeroall): New.
8328         (*avx_vzeroall): Likewise.
8329
8330 2008-08-28  Paul Brook  <paul@codesourcery.com>
8331             Mark Shinwell  <shinwell@codesourcery.com>
8332             Richard Earnshaw  <richard.earnshaw@arm.com>
8333
8334         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
8335         (TARGET_MIN_ANCHOR_OFFSET): New.
8336         (arm_override_options): Set correct anchor ranges for Thumb-1
8337         and Thumb-2 if required.
8338         (legitimize_pic_address): Handle case involving a TLS symbol
8339         reference with an addend.
8340         (arm_optimization_options): Enable section anchors at -O1 and
8341         above.
8342         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
8343         * config/arm/arm-protos.h (arm_optimization_options): New.
8344
8345 2008-08-28  Nick Clifton  <nickc@redhat.com>
8346
8347         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
8348         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
8349         attribute.
8350
8351         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
8352         * config/v850/v850.md (return): Remove frame size restriction.
8353
8354         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
8355
8356         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
8357
8358         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
8359
8360         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
8361
8362 2008-08-28  Paul Brook  <paul@codesourcery.com>
8363
8364         * config/arm/vfp11.md: Update license notice.
8365         * config/arm/cortex-r4.md: Ditto.
8366
8367 2008-08-28  Richard Guenther  <rguenther@suse.de>
8368
8369         PR tree-optimization/37207
8370         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
8371         tuplification bug.
8372
8373 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
8374
8375         PR c++/36741
8376         * tree.c (int_fits_type_p): Don't forget unsigned integers
8377           of type sizetype which higher end word equals -1.
8378
8379 2008-08-28  Ira Rosen  <irar@il.ibm.com>
8380
8381         * target.h (struct vectorize): Add new target builtin.
8382         * tree-vectorizer.c (destroy_loop_vec_info): Call
8383         vect_free_slp_instance instead of vect_free_slp_node.
8384         * tree-vectorizer.h (enum slp_load_perm_type): New.
8385         (struct _slp_instance): Add new fields.
8386         (SLP_INSTANCE_LOAD_PERMUTATION): New.
8387         (SLP_INSTANCE_LOADS): New.
8388         (vect_free_slp_tree): Remove.
8389         (vect_free_slp_instance): Declare.
8390         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
8391         (vectorizable_load): Add argument.
8392         (vect_transform_slp_perm_load): New.
8393         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
8394         vectorizable_load.
8395         (vect_get_place_in_interleaving_chain): New function.
8396         (vect_free_slp_tree): Make static.
8397         (vect_free_slp_instance): New function.
8398         (vect_build_slp_tree): Add new arguments. Allow load permutations and
8399         collect the load location in the interleaving chain.
8400         (vect_supported_slp_permutation_p): New function.
8401         (vect_supported_load_permutation_p): Likewise.
8402         (vect_analyze_slp_instance): In case of loads permutation, call
8403         vect_supported_load_permutation_p to check that the permutation is
8404         supported.
8405         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
8406         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
8407         (vect_create_mask_and_perm): New function.
8408         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
8409         (vectorizable_load): Add an argument. Don't keep the created vectors
8410         statements in the node if permutation is required. Call
8411         vect_transform_slp_perm_load to generate the permutation.
8412         (vect_transform_stmt): Add new argument. Call vectorizable_load with
8413         additional argument.
8414         (vect_schedule_slp_instance): In case of loads permutation, allocate
8415         vectorized statements structure for all the related SLP nodes. Call
8416         vect_transform_stmt with addditional argument.
8417         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
8418         * config/spu/spu.c (spu_builtin_vec_perm): New.
8419         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8420         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
8421         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
8422         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8423
8424 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
8425
8426         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
8427         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
8428         __gthread_cond_signal, __gthread_cond_timedwait,
8429         __gthread_cond_timedwait_recursive): New functions.
8430         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
8431         Likewise.
8432         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
8433         thread interfaces.
8434
8435 2008-08-28  Richard Guenther  <rguenther@suse.de>
8436
8437         PR middle-end/37005
8438         * fold-const.c (maybe_canonicalize_comparison_1): Require
8439         undefined overflow only for canonicalizing A +- CST cmp CST.
8440         Make sure to not generate new constants that are not inside
8441         their TYPE_MIN/MAX_VALUE range.
8442         (maybe_canonicalize_comparison): Remove undefined overflow
8443         checking from here.
8444         (fold_binary): Remove now duplicate folding.
8445
8446 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8447
8448         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
8449         use not updated in the last change.
8450
8451 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8452
8453         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
8454         (IRA_COVER_CLASSES): Add FPUL_REGS.
8455
8456 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8457
8458         PR 37217
8459         * c-common.c (conversion_warning): Check for null operands.
8460
8461 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8462
8463         PR c/31673
8464         * c-decl.c (check_for_loop_decls): Improve error message. Give
8465         hint.
8466
8467 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8468
8469         PR c/37186
8470         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
8471         (convert_for_assignment): Pass corrent OPT_W* parameter to
8472         WARN_FOR_ASSIGNMENT.
8473
8474 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8475
8476         PR c++/35321
8477         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
8478
8479 2008-08-27  Paul Brook  <paul@codesourcery.com>
8480
8481         * config.gcc: Loosen checks for arm uclinux eabi targets.
8482
8483 2008-08-27  Paul Brook  <paul@codesourcery.com>
8484
8485         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
8486         _clzsi2.
8487         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
8488
8489 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
8490
8491         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
8492         the enumerators of an ENUMERAL_TYPE.
8493         * dbxout.c (dbxout_type): Ditto.
8494
8495 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8496
8497         PR rtl-opt/37219
8498         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
8499         (fwprop_addr): Check that the loop_father is not the outer loop.
8500
8501 2008-08-26  Paul Brook  <paul@codesourcery.com>
8502
8503         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
8504         Remove documentation entry for fmul type.
8505         Use fmuls to annotate single-precision multiplication patterns,
8506         fmuld to annotate double-precision multiplication patterns,
8507         fmacs to annotate single-precision multiply-accumulate patterns
8508         and fmacd to annotate double-precision multiply-accumulate patterns.
8509         * config/arm/vfp11.md: Update reservations accordingly.
8510         * config/arm/arm.md: Note that certain values of the "type"
8511         attribute are documented in vfp.md.
8512         * config/arm/arm1020e.md: Remove out of date duplicate comment.
8513         (v10_cvt): Use new fmul types.
8514
8515 2008-08-26  Paul Brook  <paul@codesourcery.com>
8516
8517         * config/arm/vfp.md: Move pipeline description for VFP11 to...
8518         * config/arm/vfp11.md: ...here.  New.
8519         * config/arm/arm.md: Include vfp11.md.
8520
8521 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
8522
8523         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
8524         parameter to inform call.
8525
8526 2008-08-26  Jeff Law  <law@redhat.com>
8527
8528         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
8529         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
8530         preferred class when copying a constant into a partial word register.
8531
8532 2008-08-26  Ben Elliston  <bje@au.ibm.com>
8533
8534         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
8535         * cp/typeck.c: Likewise.
8536         * cp/tree.c: Likewise.
8537         * gimple-low.c: Likewise.
8538         * jump.c: Likewise.
8539
8540 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
8541
8542         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
8543         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
8544
8545         * doc/passes.texi: Describe IRA.
8546
8547         * doc/tm.texi (IRA_COVER_CLASSES,
8548         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
8549
8550         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
8551         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
8552         -fira-propagate-cost, -fno-ira-share-save-slots,
8553         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
8554
8555         * flags.h (ira_algorithm): New enumeration.
8556         (flag_ira_algorithm, flag_ira_verbose): New external variable
8557         declarations.
8558
8559         * postreload.c (gate_handle_postreload): Don't do post reload
8560         optimizations unless the reload is completed.
8561
8562         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
8563         IRA.
8564
8565         * tree-pass.h (pass_ira): New external variable declaration.
8566
8567         * reload.h: Add 2008 to the Copyright.
8568
8569         * cfgloopanal.c: Include params.h.
8570         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
8571         mode.
8572
8573         * params.h (IRA_MAX_LOOPS_NUM): New macro.
8574
8575         * toplev.c (ira.h): New include.
8576         (flag_ira_algorithm, flag_ira_verbose): New external variables.
8577         (backend_init_target): Call ira_init.
8578         (backend_init): Call ira_init_once.
8579         (finalize): Call finish_ira_once.
8580
8581         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
8582         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
8583         external variables.
8584
8585         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
8586         may_move_out_cost): New external variable declarations.
8587         (move_table): New typedef.
8588
8589         * caller-save.c: Include headers output.h and ira.h.
8590         (no_caller_save_reg_set): New global variable.
8591         (save_slots_num, save_slots): New variables.
8592         (reg_save_code, reg_restore_code, add_stored_regs): Add
8593         prototypes.
8594         (init_caller_save): Set up no_caller_save_reg_set.
8595         (init_save_areas): Reset save_slots_num.
8596         (saved_hard_reg): New structure.
8597         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
8598         (initiate_saved_hard_regs, new_saved_hard_reg,
8599         finish_saved_hard_regs, saved_hard_reg_compare_func): New
8600         functions.
8601         (setup_save_areas): Add code for sharing stack slots.
8602         (all_blocks): New variable.
8603         (save_call_clobbered_regs): Process pseudo-register too.
8604         (mark_set_regs): Process pseudo-register too.
8605         (insert_one_insn): Put the insn after bb note in a empty basic
8606         block.  Add insn check.
8607
8608         * global.c (eliminable_regset): Make it external.
8609         (mark_elimination): Use DF_LR_IN for IRA.
8610         (pseudo_for_reload_consideration_p): New.
8611         (build_insn_chain): Make it external.  Don't ignore spilled
8612         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
8613         (gate_handle_global_alloc): New function.
8614         (pass_global_alloc): Add the gate function.
8615
8616         * opts.c (decode_options): Set up flag_ira.  Print the warning for
8617         -fira.
8618         (common_handle_option): Process -fira-algorithm and -fira-verbose.
8619
8620         * timevar.def (TV_IRA, TV_RELOAD): New passes.
8621
8622         * regmove.c (regmove_optimize): Don't do replacement of output for
8623         IRA.
8624
8625         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
8626         New external variable declarations.
8627
8628         * local-alloc.c (update_equiv_regs): Make it external.  Return
8629         true if jump label rebuilding should be done.  Rescan new_insn for
8630         notes.
8631         (gate_handle_local_alloc): New function.
8632         (pass_local_alloc): Add the gate function.
8633
8634         * alias.c (value_addr_p, stack_addr_p): New functions.
8635         (nonoverlapping_memrefs_p): Use them for IRA.
8636
8637         * common.opt (fira, fira-algorithm, fira-coalesce,
8638         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
8639         fira-verbose): New options.
8640
8641         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
8642         move_cost, may_move_in_cost, may_move_out_cost): Make the
8643         variables external.
8644         (move_table): Remove typedef.
8645         (init_move_cost): Make it external.
8646         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
8647         functions.
8648
8649         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
8650         setup_reg_classes): New function prototypes.
8651         (eliminable_regset): New external variable declaration.
8652         (build_insn_chain, update_equiv_regs): New function prototypes.
8653
8654         * Makefile.in (IRA_INT_H): New definition.
8655         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
8656         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
8657         (reload1.o, toplev.o): Add dependence on ira.h.
8658         (cfgloopanal.o): Add PARAMS_H.
8659         (caller-save.o): Add dependence on output.h and ira.h.
8660         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
8661         ira-emit.o, ira-lives.o): New entries.
8662
8663         * passes.c (pass_ira): New pass.
8664
8665         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
8666
8667         * reload1.c (ira.h): Include the header.
8668         (changed_allocation_pseudos): New bitmap.
8669         (init_reload): Initiate the bitmap.
8670         (compute_use_by_pseudos): Permits spilled registers in FROM.
8671         (temp_pseudo_reg_arr): New variable.
8672         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
8673         IRA.  Call alter_reg with the additional parameter.  Don't clear
8674         spilled_pseudos for IRA.  Restore original insn chain for IRA.
8675         Clear changed_allocation_pseudos at the end of reload.
8676         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
8677         (hard_regno_to_pseudo_regno): New variable.
8678         (count_pseudo): Check spilled pseudos.  Set up
8679         hard_regno_to_pseudo_regno.
8680         (count_spilled_pseudo): Check spilled pseudos. Update
8681         hard_regno_to_pseudo_regno.
8682         (find_reg): Use better_spill_reload_regno_p.  Check
8683         hard_regno_to_pseudo_regno.
8684         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
8685         code for IRA.
8686         (eliminate_regs_1): Use additional parameter for alter_reg.
8687         (finish_spills): Set up pseudo_previous_regs only for spilled
8688         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
8689         more arguments.  Don't clear live_throughout and dead_or_set for
8690         spilled pseudos.  Use additional parameter for alter_reg.  Call
8691         mark_allocation_change.  Set up changed_allocation_pseudos.
8692         Remove sanity check.
8693         (emit_input_reload_insns, delete_output_reload): Use additional
8694         parameter for alter_reg.  Call mark_allocation_change.
8695         (substitute, gen_reload_chain_without_interm_reg_p): New
8696         functions.
8697         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
8698
8699         * testsuite/gcc.dg/20080410-1.c: New file.
8700
8701         * config/s390/s390.h (IRA_COVER_CLASSES,
8702         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
8703
8704         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
8705
8706         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
8707
8708         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
8709
8710         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
8711
8712         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
8713
8714         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
8715
8716         2008-08-24  Jeff Law  <law@redhat.com>
8717         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
8718         when ignoring unavailable registers.
8719
8720         2008-08-24  Jeff Law  <law@redhat.com>
8721         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
8722         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
8723         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
8724         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
8725
8726         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
8727         * ira-build.c (allocno_range_compare_func): Stabilize sort.
8728
8729         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
8730         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
8731         * reload1.c (find_reg): Process registers in register allocation order.
8732
8733         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8734         * toplev.c (backend_init_target): Move ira_init call from
8735         here...
8736         (lang_dependent_init_target): ...to here.
8737
8738         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8739         * ira.c (setup_class_subset_and_memory_move_costs): Don't
8740         calculate memory move costs for NO_REGS.
8741
8742         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
8743         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
8744         STACK_REGS is defined.
8745
8746         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
8747         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
8748
8749         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
8750         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
8751
8752         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
8753         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
8754         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
8755         barrier.
8756
8757 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
8758             Dorit Nuzman  <dorit@il.ibm.com>
8759
8760         * gcc/config/spu/spu.md (vec_extract_evenv4si,
8761         vec_extract_evenv4sf, vec_extract_evenv8hi,
8762         vec_extract_evenv16qi, vec_extract_oddv4si,
8763         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
8764         vec_interleave_highv4sf, vec_interleave_lowv4sf,
8765         vec_interleave_highv4si, vec_interleave_lowv4si,
8766         vec_interleave_highv8hi, vec_interleave_lowv8hi,
8767         vec_interleave_highv16qi, vec_interleave_lowv16qi,
8768         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
8769
8770 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
8771
8772         PR target/36756
8773         * config/rs6000/rs6000.c (optimization_options): Don't default to
8774         section anchors without toplevel reorder.
8775
8776 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8777
8778         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
8779         (mfc_end_critical_section): Likewise.
8780
8781 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8782
8783         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
8784         all type qualifiers from element type to vector type.
8785
8786 2008-08-25  David Daney  <ddaney@avtrex.com>
8787
8788         * config/mips/mips.md (immediate_insn): Move up in file, fix
8789         comment typo, reformat.
8790         (fetchop_bit, atomic_hiqi_op memory_barrier,
8791         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
8792         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
8793         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
8794         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
8795         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
8796         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
8797         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
8798         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
8799         sync_old_nand<mode>, sync_new_nand<mode>,
8800         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
8801         test_and_set_12): Moved to sync.md.
8802         (sync.md): Include.
8803         * config/mips/sync.md: New file.
8804
8805 2008-08-25  Richard Henderson  <rth@redhat.com>
8806
8807         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
8808         (regsave): Likewise.
8809         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
8810         (output_cfi_directive): Likewise.
8811         (div_data_align): New.
8812         (output_cfi): Use it.
8813
8814 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
8815
8816         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
8817         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
8818         (TARGET_OCTEON): New macro.
8819         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
8820         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
8821         (ISA_HAS_POP): New macro.
8822         * config/mips/driver-native.c (host_detect_local_cpu): Handle
8823         Octeon.
8824         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8825         Handle Octeon.
8826         * config/mips/mips.md (cpu): Add octeon.
8827         (type): Add pop attribute value.
8828         (popcount<mode>2): New pattern.
8829         * doc/invoke.texi (-march=@var{arch}): Add octeon.
8830
8831 2008-08-24  Jan Hubicka  <jh@suse.cz>
8832
8833         * doc/invoke.texi (-fipa-cp-clone): New option.
8834         (-fipa-cp): Update docs.
8835         (--param ipcp-unit-growth):New.
8836         * ipa-cp.c: Include fibheap.h, params.h
8837         (ipcp_initialize_node_lattices): When not cloning, all externally
8838         visible functions are bottom.
8839         (ipcp_need_redirect_p): Accept clones.
8840         (ipcp_insert_stage): Use cost driven heuristics.
8841         (max_count, dead_nodes): New static vars.
8842         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
8843         ipcp_const_param_count): New functions.
8844         * common.opt (ipa-cp-clone): New command line option.
8845         * params.def (ipcp-unit-growth): New.
8846
8847 2008-08-24  Jan Hubicka  <jh@suse.cz>
8848
8849         * tree-inline.c (tree_function_versioning): Look harder
8850         for referenced vars.
8851
8852 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
8853
8854         PR tree-optimization/37185
8855         * matrix-reorg.c (transform_access_sites): Update changed stmt.
8856
8857 2008-08-23  Jan Hubicka  <jh@suse.cz>
8858
8859         * ipa-cp.c (ipcp_analyze_node): New function.
8860         (ipcp_update_cloned_node): Use it.
8861         (ipcp_init_stage): Likewise.
8862         * ipa-inline.c (function_insertion_hook_holder): New static var.
8863         (analyze_function): Break out from ....
8864         (inline_generate_summary): Here; register insertion hook.
8865         (cgraph_decide_inlining): Remove hook.
8866         (add_new_function): New function.
8867
8868 2008-08-23  Jan Hubicka  <jh@suse.cz>
8869
8870         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
8871
8872 2008-08-23  Jan Hubicka  <jh@suse.cz>
8873
8874         * ipa-cp.c (constant_val_insert): Remove.
8875         (ipcp_propagate_one_const): Remove.
8876         (ipcp_create_replace_map): Always insert replacements to the map.
8877         (ipcp_insert_stage): Do not try to insert statements by hand.
8878         * tree-inline.c (insert_init_stmt): Break out from ...
8879         (setup_one_parameter): ... here; allow NULL BB pointer.
8880         (tree_function_versioning): Use setup_one_parameter to process
8881         replacement map.
8882
8883 2008-08-23  Jan Hubicka  <jh@suse.cz>
8884
8885         * tree.c (decl_address_ip_invariant_p): New function.
8886         * tree.h (decl_address_ip_invariant_p): Declare.
8887         * gimple.c (strip_invariant_refs): Break out from ...
8888         (is_gimple_invariant_address): ... here
8889         (is_gimple_ip_invariant_address): New function.
8890         (is_gimple_ip_invariant): New function.
8891         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
8892         Declare.
8893
8894         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
8895         (ipcp_lat_is_insertable): All constants are insertable.
8896         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
8897         IPA_CONST_VALUE_REF.
8898         (ipcp_initialize_node_lattices): Propagate all types of operands.
8899         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
8900         (ipcp_create_replace_map): Reformat.
8901         (ipcp_need_redirect_p): Simplify.
8902         (ipcp_insert_stage): Check that argument is used before clonning.
8903         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
8904         IPA_CONST_REF.
8905         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
8906         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
8907         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
8908         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
8909         (jump_func_type): Remove IPA_CONST_VALUE_REF.
8910         * tree-inline.c (tree_function_versioning): Add variables referenced
8911         by replacing trees.
8912
8913 2008-08-23  Jan Hubicka  <jh@suse.cz>
8914
8915         PR target/37094
8916         * i386.c (standard_80387_constant_p): Use optimize_size.
8917
8918 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8919
8920         PR tree-optimization/37161
8921         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
8922         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
8923         (vect_determine_vectorization_factor): Move the scalar type
8924         retrieval to vect_get_smallest_scalar_type.
8925         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
8926         scalar type. Remove redundant computation.
8927         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
8928         (vect_get_slp_defs): Take the type of RHS into account if
8929         necessary by calling vect_get_smallest_scalar_type. Call
8930         vect_get_constant_vectors with additional argument.
8931
8932 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8933
8934         PR 35648
8935         * doc/invoke.texi (Wwrite-strings): Clarify description.
8936
8937 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8938
8939         PR tree-optimization/37174
8940         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
8941         def stmt is a part of the loop before accessing its stmt_vec_info.
8942
8943 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
8944
8945         PR target/11259
8946         * config/avr/avr.md (UNSPEC_SWAP): New constants.
8947         (*swap): New insn pattern.
8948         (*ashlqi3): Rename from ashlqi3 insn pattern.
8949         (ashlqi3): New expanders.
8950         (*lshrqi3): Rename from lshrqi3 insn pattern.
8951         (lshrqi3): New expanders.
8952         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
8953         lshrqi3_const5, lshrqi3_const6): New splitters.
8954         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
8955         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
8956         peephole2 patterns.
8957
8958 2008-08-22  Richard Guenther  <rguenther@suse.de>
8959
8960         PR tree-optimization/37078
8961         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
8962         [+INF, +INF] ranges.
8963
8964 2008-08-22  Richard Guenther  <rguenther@suse.de>
8965
8966         PR tree-optimization/37143
8967         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
8968         a conversion statement instead of a copy.
8969
8970 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
8971
8972         PR target/37184
8973         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
8974         CCCmode, CCOmode and CCSmode destination modes.
8975
8976         PR target/37191
8977         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
8978         from different units in a single alternative.
8979         (*vec_extractv2sf_1): Ditto.
8980         (*vec_extractv2si_0): Ditto.
8981         (*vec_extractv2si_1): Ditto.
8982         * config/i386/sse.md (sse2_storehpd): Ditto.
8983         (sse2_storelpd): Ditto.
8984         (sse2_loadhpd): Ditto.
8985         (sse2_loadlpd): Ditto.
8986
8987         PR target/37197
8988         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
8989         (popcountsi2): Ditto.
8990         (clzdi2_abm): Ditto.
8991         (popcountdi2): Ditto.
8992         (clzhi2_abm): Ditto.
8993         (popcounthi2): Ditto.
8994
8995 2008-08-22  Richard Guenther  <rguenther@suse.de>
8996
8997         PR middle-end/36548
8998         PR middle-end/37125
8999         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
9000         if the multiplication does not overflow.
9001
9002 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
9003
9004         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
9005
9006 2008-08-21  Richard Henderson  <rth@redhat.com>
9007
9008         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
9009         spurrious comma from test.
9010         * configure: Rebuild.
9011
9012 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9013
9014         PR 30457
9015         * builtins.c (fold_builtin_next_arg): Add warning about undefined
9016         behaviour.
9017
9018 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
9019
9020         * c-tree.h (grokfield): New argument.
9021         * c-decl.c (grokfield): Handle new location argument.
9022         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
9023
9024 2008-08-21  Richard Guenther  <rguenther@suse.de>
9025
9026         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
9027
9028 2008-08-21  Jan Hubicka  <jh@suse.cz>
9029
9030         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
9031         (cgraph_add_function_insertion_hook,
9032         cgraph_remove_function_insertion_hook,
9033         cgraph_call_function_insertion_hooks): New functions.
9034         * cgraph.h (cgraph_add_function_insertion_hook,
9035         cgraph_remove_function_insertion_hook,
9036         cgraph_call_function_insertion_hooks): Declare.
9037         * ipa-reference.c (function_insertion_hook_holder): New variable.
9038         (check_operand, look_for_address_of): When checking late, do not care
9039         about module bitmaps.
9040         (add_new_function): New function.
9041         (generate_summary): Register hooks; zero module bitmaps.
9042         (propagate): Unregister hooks.
9043         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
9044         (add_new_function): New function.
9045         (generate_summary): Register hook.
9046         (propagate): Remove hook.
9047
9048         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
9049
9050         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
9051         * ipa-cp.c (ipcp_update_cloned_node): New function.
9052         (build_const_val): Handle functions correctly; bring type logic
9053         into sync with tree-inline.c
9054         (ipcp_init_stage):  Take care of computing stuff needed by
9055         indirect inlining; update clones.
9056         (ipcp_generate_summary): Break out of ipcp_driver.
9057         (ipcp_driver): Do only execution and transformation.
9058         (pass_ipa_cp): Make IPA_PASS.
9059         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
9060         offset to address.
9061         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
9062         ipcp, some info is already available.
9063         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
9064         * tree-inline.c (remap_ssa_name): Unshare expression.
9065
9066 2008-08-21  Richard Guenther  <rguenther@suse.de>
9067
9068         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
9069         a PHI ask VN if it is already available.
9070         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
9071         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
9072
9073 2008-08-21  Richard Guenther  <rguenther@suse.de>
9074
9075         PR middle-end/36817
9076         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
9077         makes sure to produce a result of the correct type.
9078
9079 2008-08-21  Jan Hubicka  <jh@suse.cz>
9080         Backport from LTO branch:
9081
9082         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
9083                     Jan Hubicka  <jh@suse.cz>
9084
9085         * ipa-pure-const.c
9086         (init_state, finish_state, set_function_state, generate_summary):
9087         New functions.
9088         (scan_stmt): Renamed from scan_function.  Changed to keep state in
9089         local static vars rather than cgraph aux field.
9090         (propagate): Renamed from static_execute. Changed to keep state in
9091         local static vars rather than cgraph aux field.
9092         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
9093         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
9094
9095         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
9096
9097         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
9098         * ipa-reference.c (init_function_info, generate_summary,
9099         propagate): New functions.
9100         (analyze_function):  Call init_function_info.
9101         (static_execute): Stripped into generate_summary and propagate.
9102         (pass_ipa_reference): Made into ipa_opt_pass.
9103
9104 2008-08-21  Richard Guenther  <rguenther@suse.de>
9105
9106         PR tree-optimization/37181
9107         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
9108         folding result.
9109         (extract_range_from_unary_expr): Likewise.
9110
9111 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9112
9113         * diagnostic.c (pedwarn_at): Rename as pedwarn.
9114         (pedwarn): Delete.
9115         * toplev.h (pedwarn_at): Likewise.
9116         * builtins.c: Update all calls to pedwarn.
9117         * c-lex.c: Likewise.
9118         * toplev.c: Likewise.
9119         * c-tree.h: Likewise.
9120         * c-decl.c: Likewise.
9121         * c-errors.c: Likewise.
9122         * c-typeck.c: Likewise.
9123         * c-common.c: Likewise.
9124         * c-parser.c: Likewise.
9125
9126 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
9127
9128         PR target/31070
9129         * config/sparc/sparc.c (function_arg_slotno): Handle structure
9130         with MODE_VECTOR_INT mode.
9131
9132 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9133
9134         PR middle-end/179
9135         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
9136         initialized outside the current module.
9137         (warn_uninitialized_var): Ignore left-hand side when walking the
9138         trees. Ignore address expressions. Examine VUSE operands in gimple
9139         statements with a variable declaration on the right-hand side.
9140
9141 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
9142
9143         PR bootstrap/37155
9144         * rtlanal.c (subreg_offset_representable_p): Revert last change.
9145
9146 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9147
9148         PR 35701
9149         * c-common.c (conversion_warning): Do not warn if applying bit-and
9150         operator to unsigned constant that fits in the target type.
9151
9152 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9153
9154         PR c++/35602
9155         * c-common.c (conversion_warning): Do not warn for artificial
9156         expressions.
9157
9158 2008-08-20  Richard Guenther  <rguenther@suse.de>
9159
9160         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
9161         (extract_range_from_binary_expr): Fall back to constant propagation.
9162         (extract_range_from_unary_expr): Likewise.
9163
9164 2008-08-20  Richard Guenther  <rguenther@suse.de>
9165
9166         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
9167         with TREE_THIS_VOLATILE on shared nodes.
9168         (fold_stmt_r): Likewise.
9169
9170 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
9171
9172         PR c/37171
9173         * c-parser.c (c_parser_attributes): For keywords use canonical
9174         spelling for attr_name.
9175
9176 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9177
9178         * value-prof.c (check_counter): Revert wrong call to error.
9179
9180 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9181
9182         * profile.c: Update calls to inform.
9183         * value-prof.c: Update calls to inform.
9184
9185 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9186
9187         * diagnostic.c (inform): Add an explicit location_t parameter.
9188         * toplev.h (inform): Update declaration.
9189         * builtins.c: Update all calls to inform.
9190         * c-common.c: Likewise.
9191         * c-decl.c: Likewise.
9192         * c-opts.c: Likewise.
9193         * c-pch.c: Likewise.
9194         * c-pragma.c: Likewise.
9195         * c-typeck.c: Likewise.
9196         * coverage.c: Likewise.
9197         * opts.c: Likewise.
9198         * toplev.c: Likewise.
9199         * tree-cfg.c: Likewise.
9200         * tree-ssa.c: Likewise.
9201
9202 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
9203
9204         PR target/37169
9205         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
9206         V2DI mode, for SSE4.1, use movq instead of vector set if the
9207         second element is zero and inter-unit moves are OK.
9208
9209 2008-08-20  Richard Guenther  <rguenther@suse.de>
9210
9211         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
9212         properly handle conversion/copy chains after tuplification.
9213
9214 2008-08-20  Richard Guenther  <rguenther@suse.de>
9215
9216         * passes.c (init_optimization_passes): Move the second
9217         forwprop pass before alias computation.  Remove the second
9218         DCE pass.  Remove the first dominator and phi copy/const
9219         prop passes.
9220
9221 2008-08-20  Nick Clifton  <nickc@redhat.com>
9222
9223         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
9224         support of this feature.  Do not assume that a sufficiently new
9225         assembler will support the feature regardless of the target type.
9226         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
9227         * configure: Regenerate.
9228
9229 2008-08-20  Richard Guenther  <rguenther@suse.de>
9230
9231         * tree-vrp.c (found_in_subgraph): Remove.
9232         (live): New global static.
9233         (live_on_edge): New function.
9234         (blocks_visited): Remove.
9235         (register_edge_assert_for_2): Use live_on_edge.
9236         (find_conditional_asserts): Remove code dealing with
9237         found_in_subgraph.  Do not walk the CFG.
9238         (find_switch_asserts): Likewise.
9239         (find_assert_locations_1): Renamed from find_assert_locations.
9240         Move finding assert locations for conditional and switch
9241         statements first.  Update live bitmap.  Do not walk the CFG.
9242         (find_assert_locations): New function.
9243         (insert_range_assertions): Remove entry of CFG walk.
9244         Adjust call to find_assert_locations.
9245         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
9246         that only can appear because of fake exit edges but assert we
9247         never try to insert on those.
9248         (fini_pre): Do not remove fake exit edges here...
9249         (execute_pre): ...but here, before committing edge inserts.
9250
9251 2008-08-19  Richard Guenther  <rguenther@suse.de>
9252
9253         * passes.c (init_optimization_passes): Exchange store-ccp
9254         with a ccp pass.
9255
9256 2008-08-19  Rafael Espíndola  <espindola@google.com>
9257
9258         * varasm.c (weak_decls): Move earlier in the file.
9259         (assemble_external): Add weak decls to the weak_decls list.
9260         (declare_weak): Don't add decls to the weak_decls list.
9261
9262 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
9263
9264         PR target/37157
9265         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
9266         before (sse2_shufpd_<mode>).
9267
9268 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
9269
9270         PR debug/37156
9271         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
9272         * tree.c (block_nonartificial_location): Likewise.
9273
9274 2008-08-19  Richard Guenther  <rguenther@suse.de>
9275
9276         PR tree-optimization/35972
9277         PR tree-optimization/23094
9278         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
9279         parameter.
9280         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
9281         handle MISALIGNED_INDIRECT_REF.
9282         (get_ref_from_reference_ops): New helper.
9283         (vn_reference_lookup_pieces): Walk the use-def chain using the
9284         alias-oracle if requested.
9285         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
9286         walking the use-def chain.
9287         (compute_avail): But not here.
9288         (create_component_ref_by_pieces_1): Properly handle
9289         MISALIGNED_INDIRECT_REF.
9290         (do_regular_insertion): Handle fully redundant
9291         expressions after PHI-translation also for SSA_NAME values, not
9292         only constants.  Correctly use edoubleprime for that.
9293
9294 2008-08-19  Ira Rosen  <irar@il.ibm.com>
9295
9296         * tree-vectorizer.c (supportable_widening_operation): Support
9297         multi-step conversion, return the number of steps in such conversion
9298         and the required intermediate types.
9299         (supportable_narrowing_operation): Likewise.
9300         * tree-vectorizer.h (vect_pow2): New function.
9301         (supportable_widening_operation): Change argument types.
9302         (supportable_narrowing_operation): Likewise.
9303         (vectorizable_type_promotion): Add an argument.
9304         (vectorizable_type_demotion): Likewise.
9305         * tree-vect-analyze.c (vect_analyze_operations): Call
9306         vectorizable_type_promotion and vectorizable_type_demotion with
9307         additional argument.
9308         (vect_get_and_check_slp_defs): Detect patterns.
9309         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
9310         types.
9311         (vect_analyze_slp_instance): Don't fail in case of multiple types.
9312         Call vect_build_slp_tree with correct arguments. Calculate unrolling
9313         factor according to the smallest type in the loop.
9314         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
9315         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
9316         supportable_widening_operation with correct arguments.
9317         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
9318         operands lists according to the number of vector statements in left
9319         or right node, if exists.
9320         (vect_gen_widened_results_half): Remove unused argument.
9321         (vectorizable_conversion): Call supportable_widening_operation,
9322         supportable_narrowing_operation, and vect_gen_widened_results_half
9323         with correct arguments.
9324         (vectorizable_assignment): Change documentation, support multiple
9325         types in SLP.
9326         (vectorizable_operation): Likewise.
9327         (vect_get_loop_based_defs): New function.
9328         (vect_create_vectorized_demotion_stmts): Likewise.
9329         (vectorizable_type_demotion): Support loop-aware SLP and general
9330         multi-step conversion. Call vect_get_loop_based_defs and
9331         vect_create_vectorized_demotion_stmts for transformation.
9332         (vect_create_vectorized_promotion_stmts): New function.
9333         (vectorizable_type_promotion): Support loop-aware SLP and general
9334         multi-step conversion. Call vect_create_vectorized_promotion_stmts
9335         for transformation.
9336         (vectorizable_store): Change documentation, support multiple
9337         types in SLP.
9338         (vectorizable_load): Likewise.
9339         (vect_transform_stmt): Pass SLP_NODE to
9340         vectorizable_type_promotion and vectorizable_type_demotion.
9341         (vect_schedule_slp_instance): Move here the calculation of number
9342         of vectorized statements for each node from...
9343         (vect_schedule_slp): ... here.
9344         (vect_transform_loop): Call vect_schedule_slp without the last
9345         argument.
9346
9347 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9348
9349         PR bootstrap/37152
9350         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
9351         to == in assert statement.
9352         (vectorizable_reduction): Fix typo.
9353
9354 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9355
9356         PR bootstrap/37153
9357         * value-prof.c (check_counter): Dereference pointer to overall
9358         count when printing it.
9359
9360 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9361
9362         * profile.h: Really add it.
9363
9364 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9365
9366         * mcf.c: Really add it.
9367
9368 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
9369             Vinodha Ramasamy  <vinodha@google.com>
9370
9371         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
9372         count_scale.
9373         * value-prof.c (check_counter): Fix the counter if
9374         flag_profile_correction is true.
9375         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
9376         tree_mod_subtract_transform):
9377         Follow check_counter parameter change.
9378         * common.opt (fprofile-correction): New option.
9379         * mcf.c: New file.
9380         * profile.h: Likewise.
9381         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
9382         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
9383         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
9384         functions.
9385         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
9386         flag_profile_correction is set.
9387
9388 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
9389
9390         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
9391
9392 2008-08-18  Tomas Bily  <tbily@suse.cz>
9393
9394         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
9395         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
9396         CONVERT_EXPR_P.
9397         * tree-data-ref.c (split_constant_offset_1): Likewise.
9398         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
9399         * tree-sra.c (sra_walk_expr): Likewise.
9400         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
9401         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
9402         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
9403         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
9404         Likewise.
9405         * gimple.c (gimple_assign_unary_nop_p): Likewise.
9406         * tree-vect-transform.c (vectorizable_type_demotion)
9407         (vectorizable_type_promotion): Likewise.
9408         * tree-inline.c (expand_call_inline):
9409         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
9410         (forward_propagate_addr_expr_1, forward_propagate_comparison)
9411         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9412         * expr.c (expand_expr_real_1): Likewise.
9413         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
9414         (gimple_assign_unary_useless_conversion_p): Likewise.
9415         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9416         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
9417         * fold-const.c (fold_unary): Likewise.
9418         * tree.h (CONVERT_EXPR_P): Likewise.
9419         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
9420         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
9421         * tree-vrp.c:
9422         (register_edge_assert_for_2, extract_range_from_unary_expr)
9423         (register_edge_assert_for_1): Likewise.
9424
9425 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9426
9427         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
9428         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
9429         (enum real_value_const): Delete.
9430         (get_real_const): Delete.
9431         * real.c (get_real_const): Delete.
9432         (dconst_e_ptr): Define.
9433         (dconst_third_ptr): Define.
9434         (dconst_sqrt2_ptr): Define.
9435         * builtins.c: Update all callers.
9436
9437 2008-08-18  Richard Guenther  <rguenther@suse.de>
9438
9439         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
9440         statement iterator after statement removal.
9441
9442 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
9443
9444         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
9445         (detect_processor_freebsd): Likewise.
9446         (host_detect_local_cpu): Call newly added functions for FreeBSD.
9447
9448 2008-08-18  Richard Guenther  <rguenther@suse.de>
9449
9450         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
9451         and loads have the correct types.
9452
9453 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9454
9455         PR cpp/7263
9456         * c-opts.c (cpp_opts): Remove static.
9457         * c-parser.c (cpp_opts): Declare it extern.
9458         (disable_extension_diagnostics): Handle cpp options.
9459         (enable_extension_diagnostics): Likewise.
9460
9461 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9462
9463         * diagnostics.c (permerror_at): Rename as permerror.
9464         (permerror): Delete.
9465         * toplev.h: Likewise.
9466
9467 2008-08-18  Richard Guenther  <rguenther@suse.de>
9468
9469         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
9470         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
9471         Move call_cdce before build_alias.  Move copyrename2,
9472         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
9473         right after final inlining.
9474         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
9475         (pass_build_cfg): But instead via TODO_dump_func.
9476
9477 2008-08-18  Richard Guenther  <rguenther@suse.de>
9478
9479         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
9480         element index.
9481         (scalarize_init): If we failed to generate some initializers
9482         do not generate zeros for not instantiated members.  Instead
9483         rely on the copy out.
9484         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
9485         about missing flow-sensitive alias info only if we have
9486         aliases computed.
9487
9488 2008-08-17  Nick Clifton  <nickc@redhat.com>
9489
9490         * doc/extend.texi (Function Attributes): Fix typo in description
9491         if hot function attribute.
9492
9493 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
9494             Richard Sandiford  <rdsandiford@googlemail.com>
9495
9496         * doc/install.texi (--with-mips-plt): Document.
9497         * doc/invoke.texi (-mplt, -mno-plt): Document.
9498         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
9499         and handle ${with_mips_plt}.
9500         * config/mips/mips.opt (mplt): New option.
9501         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
9502         (TARGET_ABICALLS_PIC2): Likewise.
9503         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
9504         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
9505         (ASM_SPEC): Use !mabi=* instead of !mabi*.
9506         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
9507         to decide whether to output ".option picX" directives.
9508         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
9509         Pass -call_nonpic rather than -KPIC for -mplt.
9510         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
9511         on the command line.  Also remove it when -mabi=64 is used without
9512         -msym32.
9513         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
9514         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
9515         TARGET_ABICALLS_PIC0.
9516         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
9517         TARGET_ABICALLS.
9518         (mips16_build_function_stub): Only output ".option pic" directives
9519         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
9520         (mips16_build_call_stub): Fix comment and remove redundant
9521         ".set at"/"set .noat" directives.
9522         (mips_function_rodata_section): Use the default behaviour for
9523         TARGET_ABSOLUTE_ABICALLS.
9524         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
9525         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
9526         (mips_restore_gp): Do nothing if the current function doesn't use
9527         a global pointer.
9528         (mips_expand_prologue): Only save $gp if the current function uses it.
9529         Use a normal move for TARGET_ABICALLS_PIC0.
9530         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
9531
9532 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
9533
9534         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
9535         of function when handling GLOBAL_POINTER_REGNUM.
9536
9537 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
9538
9539         PR ada/20548
9540         * common.opt (-fstack-check): Do not declare the variable here.
9541         (-fstack-check=): New option variant.
9542         * doc/invoke.texi (Code Gen Options): Document it.
9543         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
9544         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
9545         (STACK_CHECK_STATIC_BUILTIN): New macro.
9546         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
9547         * opts.c: Include expr.h.
9548         (common_handle_option) <OPT_fold_stack_check_>: New case.
9549         <OPT_fstack_check>: Likewise.
9550         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
9551         consistently in the test for variable-sized types.  Adjust for
9552         new behaviour of flag_stack_check.
9553         * explow.c: Include except.h.
9554         (allocate_dynamic_stack_space): Do not take into account
9555         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
9556         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
9557         for variable-sized parameters.  Treat all parameters whose size is
9558         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
9559         stack checking is enabled.
9560         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
9561         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
9562         if generic stack checking is enabled.
9563         (expand_function_end): Adjust for new behaviour of flag_stack_check.
9564         * reload1.c (reload): Likewise.
9565         * stmt.c (expand_decl): Assert that all automatic variables have
9566         fixed size at this point and remove dead code.
9567         * flags.h (stack_check_type): New enumeration type.
9568         (flag_stack_check): Declare.
9569         * toplev.c (flag_stack_check): New global variable.
9570         * Makefile.in (opts.o): Add dependency on EXPR_H.
9571         (explow.o): Add dependency on except.h.
9572
9573 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
9574
9575         * config/avr/avr.c (avr_override_options): Reduce value of
9576         PARAM_INLINE_CALL_COST.
9577
9578 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
9579
9580         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
9581         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
9582         lieu of TYPE_MODE (type) throughout.
9583
9584 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
9585
9586         * config/arm/arm.c (add_minipool_backward_ref): Check for
9587         8-byte-aligned entries in second case of forcing insertion after a
9588         particular entry.  Change third case to avoid inserting
9589         non-8-byte-aligned entries before 8-byte-aligned ones.
9590
9591 2008-08-15  Richard Guenther  <rguenther@suse.de>
9592
9593         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
9594         strip components for unknown size accesses.
9595
9596 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
9597
9598         * config/s390/2097.md New file.
9599         * config/s390/s390.md ("z10prop" attribute): Define none,
9600         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
9601         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
9602         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
9603         possible values and apply them to insns as appropriate.
9604         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
9605         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
9606         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
9607         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
9608         ("bfp" mode attribute): Removed.  Every occurence replaced
9609         with <mode>.
9610         * config/s390/s390.c (struct "z10_cost"): Updated entries.
9611         * config/s390/2084.md (insn_reservation "x_itof"): Updated
9612         type attribute.
9613
9614 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9615
9616         PR c/28152
9617         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
9618         for keywords.
9619
9620 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
9621
9622         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
9623         additional argument. Support reduction when duplication is needed due
9624         to data-types of different sizes in the loop.
9625         (get_initial_def_for_induction): Fix printout.
9626         (vect_get_vec_def_for_stmt_copy): Support case where the
9627         vec_stmt_for_operand is a phi node.
9628         (vectorizable_reduction): Support reduction when duplication is needed
9629         due to data-types of different sizes in the loop.
9630         (vectorizable_call): Remove restriction to not vectorize in case we
9631         have data-types of different sizes in the loop.
9632         (vectorizable_conversion): Likewise.
9633         (vectorizable_operation): Likewise.
9634         (vectorizable_type_demotion): Likewise.
9635         (vectorizable_type_promotion): Likewise.
9636         (vectorizable_induction): Add restriction to not vectorize in case
9637         we have data-types of different sizes in the loop.
9638
9639 2008-08-14  Christophe Saout  <christophe@saout.de>
9640             Uros Bizjak  <ubizjak@gmail.com>
9641
9642         PR target/37101
9643         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
9644         (*vec_concatv2di_rex64_sse4_1): Ditto.
9645         (*vec_concatv2di_rex64_sse): Ditto.
9646
9647 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
9648
9649         PR middle-end/37103
9650         * fold-const.c (fold_widened_comparison): Do not allow
9651         sign changes that change the result even if shorter type
9652         is wider than arg1_unw's type.
9653
9654 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
9655
9656         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
9657         Skip if the multilib testing specifies -march that does not
9658         agree with the one specified in the testcase.
9659
9660 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9661
9662         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
9663         zero extend SImode values being converted to TFmode before passing
9664         to libcalls.
9665
9666 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9667
9668         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
9669         __PPU__ when targeting the Cell/B.E. PPU processor.
9670
9671 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
9672
9673         * gimple.h (gimple_call_set_chain): Accept SSA variables.
9674         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
9675         Rematerialize the static chain, if any.
9676         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
9677         static chain.
9678
9679 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9680
9681         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
9682         (new_loc_descr): Likewise.
9683         (add_loc_descr): Likewise.
9684         (size_of_loc_descr): Likewise.
9685         (size_of_locs): Likewise.
9686         (output_loc_operands): Likewise.
9687         (output_loc_sequence): Likewise.
9688         (new_reg_loc_descr): New.
9689         (build_cfa_loc): Use it.
9690         (build_cfa_aligned_loc): Likewise.
9691         (one_reg_loc_descriptor): Likewise.
9692         (based_loc_descr): Likewise.
9693
9694 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9695
9696         PR 30551
9697         * doc/invoke.texi (Wmain): Update.
9698         * c-decl.c (start_decl): warn_main is only 0 or 1.
9699         (start_function): Likewise. Fix formatting.
9700         (finish_function): Delete redundant warning.
9701         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
9702         * c-opts (c_common_handle_option): -Wall only has effect if
9703         warn_main is uninitialized. OPT_Wmain is automatically
9704         handled. -pedantic also enables Wmain.
9705         (c_common_post_options): Handle all logic for Wmain here.
9706         * c-common.c (warn_main): Delete.
9707         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
9708         * c-common.h (warn_main): Delete.
9709
9710 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9711
9712         PR middle-end/36701
9713         * expr.c (emit_group_store): Allocate stack temp with the
9714         largest alignment when copying from register to stack.
9715
9716 2008-08-13  Richard Guenther  <rguenther@suse.de>
9717
9718         * tree.h (maybe_fold_offset_to_address): Declare.
9719         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
9720         (ccp_fold): Handle pointer conversions the same as fold_stmt.
9721         Likewise for POINTER_PLUS_EXPR.
9722         (maybe_fold_offset_to_reference): Enable disabled code.
9723         (maybe_fold_offset_to_address): New function.
9724         (fold_stmt_r): Use it.
9725         (fold_gimple_assign): Likewise.
9726         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
9727         (gimplify_expr): Likewise.
9728
9729 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9730
9731         * toplev.h (pedwarn_at): Fix declaration.
9732
9733 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9734
9735         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
9736         LINK_SPEC): Use %R in -Y P argument.
9737
9738 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9739
9740         PR c/15236
9741         * diagnostic.c (pedwarn_at): New.
9742         * toplev.h (pedwarn_at): Declare.
9743         * c-tree.h (build_enumerator): Update declaration.
9744         * c-decl.c (finish_enum): Update comment.
9745         (build_enumerator): Take a location parameter. Give a pedwarn but do
9746         not perform any conversion.
9747         * c-parser.c (c_parser_enum_specifier): Set correct location for
9748         enumerator.
9749
9750 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9751
9752         PR 35635
9753         * c-common.c (conversion_warning): Use a switch. Ignore boolean
9754         expressions except for conversions to signed:1 bitfields. Handle
9755         COND_EXPR with constant operands.
9756
9757 2008-08-13  Richard Guenther  <rguenther@suse.de>
9758
9759         PR tree-optimization/15255
9760         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
9761         (struct oecount_s): New struct and VEC types.
9762         (cvec): New global.
9763         (oecount_hash): New function.
9764         (oecount_eq): Likewise.
9765         (oecount_cmp): Likewise.
9766         (zero_one_operation): New function.
9767         (build_and_add_sum): Likewise.
9768         (undistribute_ops_list): Perform un-distribution of multiplication
9769         and division on the chain of summands.
9770         (should_break_up_subtract): Also break up subtracts for factors.
9771         (reassociate_bb): Delete dead visited statements.
9772         Call undistribute_ops_list.  Re-sort and optimize if it did something.
9773         * passes.c (init_optimization_passes): Move DSE before
9774         reassociation.
9775         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
9776         PHI nodes.
9777
9778 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
9779
9780         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
9781
9782         * doc/invoke.texi: Revert unintended checkin.
9783
9784 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
9785
9786         PR libgomp/26165
9787         * gcc.c (include_spec_function): Tweak call to find_a_file.
9788
9789 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9790
9791         PR middle-end/37014
9792         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
9793         and TRUTH_ORIF_EXPR.
9794         * dojump.c (do_jump): Likewise.
9795
9796         PR tree-optimization/37084
9797         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
9798         if id->regimplify, don't assume stmt is a cast assignment.
9799
9800 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
9801
9802         * final.c (final_scan_insn): Use app_enable/app_disable functions.
9803
9804 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9805
9806         PR bootstrap/37097
9807         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
9808         by last change.
9809
9810 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9811
9812         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
9813         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
9814
9815         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
9816         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
9817         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
9818         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
9819         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
9820
9821         * doc/tm.texi (Storage Layout): Remove documentation for
9822         TARGET_FLOAT_FORMAT.
9823
9824         * simplify-rtx.c (simplify_binary_operation_1): Replace
9825         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
9826
9827 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9828
9829         * real.h (struct real_format): New member has_sign_dependent_rounding.
9830         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
9831         spu_single_format, ieee_double_format, mips_double_format,
9832         motorola_double_format, ieee_extended_motorola_format,
9833         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9834         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9835         mips_extended_format, ieee_quad_format, mips_quad_format,
9836         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9837         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9838
9839         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9840         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9841         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9842         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9843         (ROUND_TOWARDS_ZERO): Likewise.
9844
9845         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
9846         (FLOAT_MODE_FORMAT): New macro.
9847         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
9848         (MODE_COMPOSITE_P): ... this new macro.
9849         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9850         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
9851         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
9852
9853         * flags.h: Include "real.h".
9854
9855         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
9856         REAL_MODE_FORMAT_COMPOSITE_P.
9857         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
9858
9859         * doc/tm.texi (Storage Layout): Remove documentation of
9860         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9861         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
9862         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
9863         they only apply to libgcc2.a.
9864
9865 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9866
9867         * config/spu/float_disf.c: New file.
9868         * config/spu/float_unsdisf.c: New file.
9869         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
9870         (LIB2FUNCS_EXCLUDE): Define.
9871
9872 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9873             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9874
9875         * real.h (struct real_format): New member round_towards_zero.
9876         * real.c (round_for_format): Respect fmt->round_towards_zero.
9877         (ieee_single_format, mips_single_format, motorola_single_format,
9878         spu_single_format, ieee_double_format, mips_double_format,
9879         motorola_double_format, ieee_extended_motorola_format,
9880         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9881         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9882         mips_extended_format, ieee_quad_format, mips_quad_format,
9883         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9884         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9885
9886         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
9887         real_format to choose rounding mode when calling MPFR functions.
9888         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
9889         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
9890
9891         * real.h (real_to_decimal_for_mode): Add prototype.
9892         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
9893         Respect target rounding mode when generating decimal representation.
9894         (real_to_decimal): New stub for backwards compatibility.
9895         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
9896         real_to_decimal_for_mode instead of real_to_decimal.
9897
9898         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
9899
9900 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9901             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9902
9903         * real.c (spu_single_format): New variable.
9904         * real.h (spu_single_format): Declare.
9905
9906         * config/spu/spu.c (spu_override_options): Install SFmode format.
9907         (spu_split_immediate): Use integer mode to operate on pieces of
9908         floating-point values in all cases.
9909
9910         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
9911         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
9912         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
9913
9914 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9915
9916         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
9917
9918 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9919
9920         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
9921
9922 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9923
9924         PR c++/36688
9925         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
9926         on the VAR_DECL instead of TYPE_READONLY on its type.
9927
9928 2008-08-12  Ira Rosen  <irar@il.ibm.com>
9929
9930         * tree-vectorizer.c: Depend on langhooks.h.
9931         (supportable_widening_operation): Add two arguments. Support double
9932         type conversions.
9933         (supportable_narrowing_operation): Likewise.
9934         * tree-vectorizer.h (supportable_widening_operation): Add two
9935         arguments.
9936         (supportable_narrowing_operation): Likewise.
9937         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
9938         supportable_widening_operation with correct arguments.
9939         * tree-vect-transform.c (vectorizable_conversion): Likewise.
9940         (vectorizable_type_demotion): Support double type conversions.
9941         (vectorizable_type_promotion): Likewise.
9942         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
9943
9944 2008-08-11  Michael Matz  <matz@suse.de>
9945
9946         * i386/i386.c (override_options): Move initialisation from
9947         flag_schedule_insns_after_reload to here from ...
9948         (optimization_options): ... here.
9949
9950 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
9951
9952         PR rtl-optimization/36998
9953         * dwarf2out.c (compute_barrier_args_size_1,
9954         compute_barrier_args_size): Temporarily remove assertions.
9955
9956 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9957
9958         PR middle-end/20644
9959         * tree-ssa.c (struct walk_data): Add new flag
9960         warn_possibly_uninitialized.
9961         (warn_uninitialized_var): Use it.
9962         (warn_uninitialized_vars): New.
9963         (execute_early_warn_uninitialized): Call it.
9964         (execute_late_warn_uninitialized): Likewise.
9965
9966 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9967
9968         PR middle-end/36238
9969         * reload1.c (gen_reload): Guard calls to get_secondary_mem
9970         for memory subregs.
9971
9972 2008-08-09  Jan Hubicka  <jh@suse.cz>
9973
9974         PR target/37055
9975         * optabs.c (maybe_emit_unop_insn): Remove produced code if
9976         expansion failed.
9977         (expand_fix): Be prepared for expansion to fail.
9978         (expand_sfix_optab): Remove instructions if expansion failed.
9979
9980 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
9981
9982         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
9983         avr31 architecture.
9984         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
9985         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9986
9987 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9988
9989         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
9990         mips/t-libgcc-mips16 to tmake_file.
9991         * config/mips/mips-protos.h (mips_call_type): New enum.
9992         (mips_pic_base_register, mips_got_load): Declare.
9993         (mips_restore_gp): Take an rtx argument.
9994         (mips_use_pic_fn_addr_reg_p): Declare.
9995         (mips_expand_call): Replace the sibcall_p argument with
9996         a mips_call_type argument.  Add a lazy_p parameter.
9997         (mips_split_call): Declare.
9998         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
9999         (MIPS16_PIC_TEMP): Likewise.
10000         (reg_class): Delete M16_NA_REGS.
10001         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
10002         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
10003         (mips_split_hi_p): Declare.
10004         * config/mips/mips.c (mips_split_hi_p): New array.
10005         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
10006         (mips_got_symbol_type_p): New function.
10007         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
10008         (mips16_stub_function_p): New function.
10009         (mips16_local_function_p): Likewise.
10010         (mips_use_pic_fn_addr_reg_p): Likewise.
10011         (mips_cannot_force_const_mem): Return false for HIGHs.
10012         Extend CONST_INT and symbolic handling to MIPS16, using
10013         mips_symbol_insns to check that the base symbol type is a
10014         legitimate constant.  Reject GOT-based constants if
10015         TARGET_MIPS16_PCREL_LOADS.
10016         (mips_const_insns): Check targetm.cannot_force_const_mem when
10017         decomposing a symbolic base and a large offset.
10018         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
10019         When calling a function that needs $25 from MIPS16 code,
10020         move the target address into $25 separately and add a USE
10021         to the call insn.
10022         (mips16_gp_pseudo_reg): Insert the initializer immediately
10023         before the first real insn.
10024         (mips_pic_base_register, mips_got_load): New functions.
10025         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
10026         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
10027         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
10028         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
10029         (mips_call_tls_get_addr): Update the call to mips_expand_call,
10030         also passing NULL_RTX rather than const0_rtx as the aux argument.
10031         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
10032         instead of TARGET_EXPLICIT_RELOCS.
10033         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
10034         (mips_load_call_address): Replace the sibcall_p argument with
10035         a mips_call_type argument.  Use mips_got_load.
10036         (mips16_local_alias): New structure.
10037         (mips16_local_aliases): New variable.
10038         (mips16_local_aliases_hash): New function.
10039         (mips16_local_aliases_eq): Likewise.
10040         (mips16_local_alias): Likewise.
10041         (mips16_stub_function): Likewise.
10042         (mips16_build_function_stub): Create a local alias for the target
10043         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
10044         .cpload directive and an R_MIPS_NONE relocation for the target
10045         function, then load the alias rather than the function itself.
10046         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
10047         (mips16_copy_fpr_return_value): Use mips16_stub_function and
10048         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
10049         (mips16_build_call_stub): Replace the FN parameter with an
10050         FN_PTR parameter.  Force the address into a register if it
10051         isn't a call_insn_operand; don't rely on the caller to do this.
10052         If a call to a locally-defined and locally-binding MIPS16
10053         function must be made indirectly, redirect the call to the
10054         function's local alias.  Use mips16_stub_function_p,
10055         mips16_stub_function, mips_expand_call and use_reg.
10056         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
10057         Use explicit %hi and %lo accesses where possible.
10058         Use MIPS_CALL to generate the correct code form of a
10059         jal instruction.  Add clobbers of $18 instead of uses.
10060         Update the call to mips_emit_call_insn.
10061         (mips_expand_call): Replace the SIBCALL_P argument with a
10062         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
10063         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
10064         allowing it to modify the call address.  Update the calls to
10065         mips_load_call_address and mips_emit_call_insn.
10066         (mips_split_call): New function.
10067         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
10068         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
10069         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
10070         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
10071         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
10072         if TARGET_MIPS16.
10073         (mips_cprestore_slot): New function.
10074         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
10075         and use mips_cprestore_slot.
10076         (mips_output_function_prologue): Handle TARGET_MIPS16 for
10077         LOADGP_OLDABI.
10078         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
10079         then use a copygp_mips16 instruction to set up $28.
10080         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
10081         (mips16_lay_out_constants): Call split_all_insns_noflow.
10082         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
10083         false if TARGET_MIPS16.
10084         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
10085         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
10086         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
10087         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
10088         MIPS16 code.  Allow MIPS16 o32 PIC.
10089         (mips_override_options): Allow MIPS16 o32 PIC.
10090         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
10091         after reload if TARGET_USE_GOT.
10092         (UNSPEC_COPYGP): New constant.
10093         (length): Use a default length of 8 for MIPS16 GOT loads.
10094         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
10095         (*got_page<mode>): Check mips_split_hi_p.
10096         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
10097         (unspec_got<mode>, unspec_call<mode>): New expanders.
10098         (load_got<mode>, load_call<mode>): Remove the length attributes.
10099         Use a got attribute instead of a type attribute.
10100         (copygp_mips16): New insn.
10101         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
10102         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
10103         (sibcall, sibcall_value, call, call_value): Update the calls
10104         to mips_expand_call.
10105         (call_internal, call_value_internal): Use mips_split_call.
10106         (call_value_multiple_internal): Likewise.
10107         (call_split): Move after call_internal (the insn it is split from).
10108         (call_internal_direct, call_value_internal_direct): Turn into
10109         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
10110         (call_direct_split, call_value_direct_split): New patterns.
10111         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
10112         and use M16_REGS instead of M16_NA_REGS.
10113         * config/mips/predicates.md (const_call_insn_operand): Replace
10114         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
10115         mips_use_pic_fn_addr_reg_p check.
10116         (move_operand): Reject HIGHs if mips_split_hi_p.
10117         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
10118         (__mips16_floatunsisf): Inline __mips16_floatsisf.
10119         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
10120         * config/mips/libgcc-mips16.ver: New file.
10121         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
10122         $(srcdir)/config/mips/libgcc-mips16.ver.
10123
10124 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10125
10126         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
10127         in file.
10128         (mips_unspec_address, mips_unspec_offset_high): Likewise.
10129         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
10130         (mips16_cfun_returns_in_fpr_p): Likewise.
10131
10132 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10133
10134         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
10135         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
10136         rather than 4 to PC.
10137
10138 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10139
10140         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
10141         (FUNCTION_PROFILER): Save the static chain pointer into $2
10142         beforehand and restore it aftewards.
10143         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
10144         address directly into $25 and call the function through $25;
10145         do not clobber $3.  Pad the DImode version to cover the space
10146         left by the deleted $25 <- $3 move.
10147         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
10148         the removal of the $25 <- $3 move.
10149         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
10150         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10151
10152 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10153             Daniel Jacobowitz  <dan@codesourcery.com>
10154
10155         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
10156         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
10157         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
10158         * config/mips/mips.c (mips_start_function_definition): New function.
10159         (mips_end_function_definition): Likewise.
10160         (mips_output_function_prologue): Use mips_start_function_definition.
10161         (mips_output_function_epilogue): Use mips_end_function_definition.
10162         (build_mips16_function_stub): Use mips_start_function_definition
10163         and mips_end_function_definition.
10164         (build_mips16_call_stub): Likewise.
10165
10166 2008-08-09  Richard Guenther  <rguenther@suse.de>
10167
10168         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
10169         * gimple.h (gimple_call_fn): Adjust comment.
10170         (gimple_call_set_fndecl): New function.
10171         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
10172         longer having bare FUNCTION_DECL operand.
10173         (gimple_call_return_type): Likewise.
10174         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
10175
10176         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
10177         (gimple_mod_pow2): Likewise.
10178         (gimple_mod_subtract): Likewise.
10179         (gimple_ic): Likewise.
10180         (gimple_stringop_fixed_value): Likewise.
10181         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
10182         longer having bare FUNCTION_DECL operand.
10183         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
10184         * omp-low.c (optimize_omp_library_calls): Likewise.
10185         * cgraphunit.c (update_call_expr): Likewise.
10186         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
10187         (execute_convert_to_rsqrt): Likewise.
10188         * cfgexpand.c (gimple_to_tree): Simplify.
10189         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
10190         bare FUNCTION_DECL operand.
10191         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
10192         (convert_gimple_call): Use gimple_call_fndecl.
10193         * c-common.c (c_warn_unused_result): Likewise.
10194
10195 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10196
10197         PR c/17880
10198         * c-typeck.c (digest_init): Call verify_sequence_points from here.
10199         (c_finish_return): Likewise.
10200         (c_start_case): Likewise.
10201         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
10202         * c-parser.c (c_parser_condition): New. Call
10203         verify_sequence_points.
10204         (c_parser_paren_condition): Call c_parser_condition.
10205         (c_parser_for_statement): Call c_parser_condition.
10206
10207 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10208
10209         PR 36901
10210         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
10211         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
10212         Moved from diagnostic.h
10213         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
10214         DK_PERMERROR.
10215         (emit_diagnostic): New.
10216         (warning0, pedwarn0): Delete.
10217         (warning, warning_at, pedwarn, permerror): Return bool.
10218         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
10219         Moved to diagnostic.c.
10220         (struct diagnostic_context): Use correct type for
10221         classify_diagnostic.
10222         (diagnostic_report_diagnostic): Update declaration.
10223         (emit_diagnostic): Declare.
10224         * errors.c (warning): Return bool.
10225         * errors.h (warning): Update declaration.
10226         * toplev.h (warning0, pedwarn0): Delete.
10227         (warning, warning_at, pedwarn, permerror): Return bool.
10228         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
10229         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
10230         inform. Update all calls.
10231         (diagnose_mismatched_decls): Check return value of warning/pedwarn
10232         before giving informative note.
10233         (implicit_decl_warning): Likewise.
10234         * c-typeck.c (build_function_call): Likewise.
10235         * tree-sssa.c (warn_uninit): Likewise.
10236         * builtins.c (gimplify_va_arg_expr): Likewise.
10237
10238 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10239
10240         PR 7651
10241         * doc/invoke.texi (-Wextra): Move warning from here...
10242         (-Wuninitialized): ... to here.
10243
10244 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10245
10246         PR 28875
10247         * flags.h (set_Wunused): Delete
10248         * toplev.c (process_options): Handle Wunused flags here.
10249         * opts.c (maybe_warn_unused_parameter): Delete.
10250         (common_handle_option): Replace set_Wunused by warn_unused.
10251         (set_Wextra): Do not handle Wunused-parameter here.
10252         (set_Wunused): Delete.
10253         * c-opts.c (c_common_handle_option): Replace set_Wunused by
10254         warn_unused.
10255         * common.opt (Wunused): Add Var and Init.
10256         (Wunused-function): Likewise.
10257         (Wunused-label): Likewise.
10258         (Wunused-parameter): Likewise.
10259         (Wunused-value): Likewise.
10260         (Wunused-variable): Likewise.
10261
10262 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
10263
10264         * doc/invoke.texi: Add cpu_type power7.
10265         * config.in (HAVE_AS_VSX): New.
10266         * config.gcc: Add cpu_type power7.
10267         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
10268         VSX instructions.
10269         * configure: Regenerate.
10270         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
10271         power5.
10272         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
10273         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
10274         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
10275
10276 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
10277
10278         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
10279         type to vectorize.builtin_conversion.
10280         (vectorizable_conversion): Likewise.
10281         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
10282         integral type as input.
10283         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
10284         FIX_TRUNC_EXPR.
10285         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
10286         and ALTIVEC_BUILTIN_VCTSXS.
10287         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
10288         formatting.
10289
10290 2008-08-08  Richard Guenther  <rguenther@suse.de>
10291
10292         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
10293         (surely_varying_stmt_p): Calls are varying only if they are
10294         non-builtin and not indirect or have no result.
10295         (ccp_fold): Re-instantiate code before the tuples merge.
10296
10297 2008-08-08  Richard Guenther  <rguenther@suse.de>
10298
10299         PR tree-optimization/37056
10300         * gimple.h (gimple_assign_rhs_class): New helper function.
10301         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
10302         unary operations properly.
10303
10304 2008-08-07  Jan Hubicka  <jh@suse.cz>
10305
10306         * i386.h (ix86_size_cost): Declare.
10307         (ix86_cur_cost): New function macro.
10308         * i386.md (peepholes expanding size and splitters): Predicate by
10309         optimize_insn_for_speed_p.
10310         (peepholes reduce size and splitters): Predicate by
10311         optimize_insn_for_size_p.
10312         * i386.c (ix86_size_cost): Rename from ...
10313         (size_cost): This one.
10314         (override_options): Update.
10315         (decide_alg): Likewise.
10316         (ix86_expand_clear): Use RTL profile.
10317         (ix86_pad_returns): Use RTL profile.
10318
10319 2008-08-07  Jan Hubicka  <jh@suse.cz>
10320
10321         * recog.c (split_all_insns): Set RTL profile
10322         (peephole2_optimize): Likewise.
10323         * function.c (thread_prologue_and_epilogue_insns): Likewise.
10324         * combine.c (combine_instructions): Likewise.
10325
10326 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10327
10328         * c-common.c (c_common_reswords): Also warn about keyword "bool".
10329
10330 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
10331
10332         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
10333         value in a6 after the set_frame_ptr insn.
10334
10335 2008-08-07  Richard Henderson  <rth@redhat.com>
10336
10337         PR debug/37033
10338         * gcc.c (cpp_options): Pass along -g*.
10339
10340 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10341
10342         * config/arm/arm.c (output_move_neon): Update comment describing
10343         big-endian vector layout.
10344         (arm_assemble_integer): Do not handle big-endian NEON vectors
10345         specially.
10346         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
10347         neon_vget_lane<mode>_sext_internal,
10348         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
10349         element indices for big-endian.
10350
10351 2008-08-07  Richard Henderson  <rth@redhat.com>
10352
10353         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
10354         * configure, config.in: Rebuild.
10355         * debug.h (dwarf2out_do_cfi_asm): Declare.
10356         * c-cppbuiltin.c (c_cpp_builtins): Use it.
10357         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
10358         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
10359         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
10360
10361 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10362
10363         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10364         movv2si_internal): Combine into mov<mode>_internal.
10365         (movv2si_internal_2): Remove.
10366
10367 2008-08-07  Jan Hubicka  <jh@suse.cz>
10368
10369         PR target/37048
10370         * i386.md (single stringop patterns): Enable unconditionally.
10371
10372 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
10373
10374         PR target/36992
10375         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
10376
10377         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
10378         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
10379
10380         * config/i386/sse.md (sse2_movq128): New.
10381
10382         * doc/extend.texi: Document __builtin_ia32_movq128.
10383
10384 2008-08-07  Richard Guenther  <rguenther@suse.de>
10385
10386         PR middle-end/37042
10387         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
10388         pointers can access anything.
10389
10390 2008-08-06  Jan Hubicka  <jh@suse.cz>
10391
10392         * optabs.c (emit_unop_insn): Break out to ...
10393         (maybe_emit_unop_insn): ... this one.
10394         (expand_sfix_optab): Use maybe variant.
10395         * optabs.h (maybe_emit_unop_insn): Declare.
10396
10397         * i386.md (mov0 patterns): Enable by default.
10398         (FP conversion expanders): Disable expansion of code expanding
10399         sequences when instruction should be optimized for size.
10400         (single strinop patterns): Enable when optimizing for size.
10401         (string expanders): Disable expanding of code expanding sequences
10402         when optimizning instruction for size.
10403         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
10404         per BB basis.
10405         (ix86_fp_comparison_sahf_cost): Likewise.
10406         (ix86_expand_branch): Likewise.
10407         (ix86_expand_ashl_const): Likewise.
10408         (ix86_split_ashl): Likewise.
10409         (ix86_expand_strlen): Likewise.
10410         (ix86_emit_fp_unordered_jump): Likewie.
10411
10412 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10413
10414         * c-common.c: Fix typo.
10415         (c_common_reswords): Activate more C++ keyword warnings.
10416
10417         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
10418
10419 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10420
10421         PR 26785
10422         * diagnostic.c (permerror_at): New.
10423         * toplev.h (permerror_at): Declare.
10424
10425 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
10426             Ira Rosen  <irar@il.ibm.com>
10427
10428         * tree-vect-transform.c (vect_model_simple_cost): Return
10429         immediately if stmt is pure SLP.
10430         (vect_model_store_cost): Ditto.
10431         (vect_model_load_cost): Ditto.
10432         (vectorizable_store): Remove PURE_SLP check before call
10433         to vect_model_store_cost.
10434         (vect_model_store_cost): When checking whether stmt describe
10435         strided access, add a check that it is not slp_node.
10436
10437 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10438
10439         PR 8715
10440         * c-common.c (warn_for_sign_compare): New. Handle separately the
10441         case that 'constant' is zero.
10442         * c-typeck.c (build_binary_op): Move code to c-common.c
10443
10444 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10445
10446         * config/alpha/alpha.c (alpha_preferred_reload_class,
10447         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
10448         alpha_output_mi_thunk_osf): Avoid C++ keywords.
10449         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
10450         * config/arm/arm.md: Likewise.
10451         * config/avr/avr-protos.h (preferred_reload_class,
10452         test_hard_reg_class, avr_simplify_comparison_p,
10453         out_shift_with_cnt, class_max_nregs): Likewise.
10454         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
10455         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
10456         preferred_reload_class, test_hard_reg_class): Likewise.
10457         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
10458         bfin_memory_move_cost, bfin_secondary_reload,
10459         bfin_output_mi_thunk): Likewise.
10460         * config/crx/crx.c (crx_secondary_reload_class,
10461         crx_memory_move_cost): Likewise.
10462         * config/frv/frv-protos.h (frv_secondary_reload_class,
10463         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
10464         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
10465         frv_secondary_reload_class, frv_class_likely_spilled_p,
10466         frv_class_max_nregs): Likewise.
10467         * config/h8300/h8300.c (h8300_classify_operand,
10468         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
10469         Likewise.
10470         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
10471         * config/ia64/ia64.c (ia64_preferred_reload_class,
10472         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
10473         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
10474         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
10475         Likewise.
10476         * config/m68hc11/m68hc11.c (preferred_reload_class,
10477         m68hc11_memory_move_cost): Likewise.
10478         * config/mcore/mcore.c (mcore_secondary_reload_class,
10479         mcore_reload_class): Likewise.
10480         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
10481         mips_class_max_nregs, mips_cannot_change_mode_class,
10482         mips_preferred_reload_class, mips_secondary_reload_class,
10483         mips_output_mi_thunk): Likewise.
10484         * config/mmix/mmix.c (mmix_preferred_reload_class,
10485         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
10486         Likewise.
10487         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
10488         Likewise.
10489         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
10490         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
10491         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10492         * config/rs6000/rs6000.c (paired_expand_vector_init,
10493         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
10494         compare_section_name, rs6000_memory_move_cost): Likewise.
10495         * config/s390/s390.c (s390_emit_compare_and_swap,
10496         s390_preferred_reload_class, s390_secondary_reload,
10497         legitimize_pic_address, legitimize_tls_address,
10498         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
10499         s390_class_max_nregs): Likewise.
10500         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10501         * config/s390/s390.md: Likewise.
10502         * config/score/score-protos.h (score_secondary_reload_class,
10503         score_preferred_reload_class): Likewise.
10504         * config/score/score.c (score_preferred_reload_class,
10505         score_secondary_reload_class): Likewise.
10506         * config/score/score3.c (score3_output_mi_thunk,
10507         score3_preferred_reload_class, score3_secondary_reload_class,
10508         score3_hard_regno_mode_ok): Likewise.
10509         * config/score/score3.h (score3_preferred_reload_class,
10510         score3_secondary_reload_class): Likewise.
10511         * config/score/score7.c (score7_output_mi_thunk,
10512         score7_preferred_reload_class, score7_secondary_reload_class,
10513         score7_hard_regno_mode_ok): Likewise.
10514         * config/score/score7.h (score7_preferred_reload_class,
10515         score7_secondary_reload_class): Likewise.
10516         * config/sh/sh.c (prepare_move_operands, output_far_jump,
10517         output_branchy_insn, add_constant, gen_block_redirect,
10518         sh_insn_length_adjustment, sh_cannot_change_mode_class,
10519         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
10520         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10521         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
10522         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
10523         xstormy16_preferred_reload_class): Likewise.
10524         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
10525         xtensa_expand_atomic, override_options,
10526         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
10527         Likewise.
10528         * reorg.c (try_merge_delay_insns): Likewise.
10529         * tree.c (merge_dllimport_decl_attributes): Likewise.
10530
10531         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
10532
10533 2008-08-06  Michael Matz  <matz@suse.de>
10534
10535         * Makefile.in (write_entries_to_file): Quote words.
10536         * gengtype.c: (read_input_line): Skip over leading white-space.
10537
10538 2008-08-06  Marc Gauthier  <marc@tensilica.com>
10539
10540         * config.gcc: Match more processor names for Xtensa.
10541         * configure.ac: Likewise.
10542         * doc/install.texi (Specific): Likewise.
10543         * configure: Regenerate.
10544
10545 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10546
10547         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
10548         * calls.c (avoid_likely_spilled_reg): Likewise.
10549         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
10550         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
10551         * config/i386/i386.c (ix86_expand_special_args_builtin,
10552         ix86_secondary_reload): Likewise.
10553         * except.c (struct eh_region, gen_eh_region_catch,
10554         remove_unreachable_regions, duplicate_eh_regions,
10555         assign_filter_values, build_post_landing_pads,
10556         sjlj_find_directly_reachable_regions, remove_eh_handler,
10557         reachable_next_level, foreach_reachable_handler,
10558         can_throw_internal_1, can_throw_external_1,
10559         collect_one_action_chain): Likewise.
10560         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
10561         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
10562         * function.c (update_temp_slot_address, instantiate_new_reg,
10563         instantiate_virtual_regs_in_rtx,
10564         instantiate_virtual_regs_in_insn): Likewise.
10565         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
10566         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
10567         gimplify_cleanup_point_expr): Likewise.
10568         * ipa-cp.c (ipcp_lattice_changed): Likewise.
10569         * passes.c (next_pass_1): Likewise.
10570         * print-tree.c (print_node_brief, print_node): Likewise.
10571         * profile.c (branch_prob): Likewise.
10572         * tree-dump.c (dump_register): Likewise.
10573         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
10574         Likewise.
10575         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
10576         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
10577         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
10578         copy_arguments_for_versioning, copy_static_chain): Likewise.
10579         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
10580         add_new_name_mapping, register_new_name_mapping): Likewise.
10581         * tree-mudflap.c (mf_xform_derefs): Likewise.
10582         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
10583         get_init_expr, combine_chains): Likewise.
10584         * tree-pretty-print.c (dump_generic_node): Likewise.
10585         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
10586         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
10587         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
10588         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
10589
10590 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10591
10592         PR middle-end/37010
10593         * calls.c (expand_call): Use the biggest preferred stack
10594         boundary.
10595
10596 2008-08-06  Michael Matz  <matz@suse.de>
10597
10598         PR target/36613
10599         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
10600         for reused reload, instead of overwriting them.
10601
10602 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10603
10604         PR middle-end/37009
10605         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
10606         for incoming stack boundary.
10607
10608         * function.c (assign_parm_find_entry_rtl): Update
10609         parm_stack_boundary.
10610
10611         * function.h (rtl_data): Add parm_stack_boundary.
10612
10613         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
10614         parm_stack_boundary for incoming stack boundary.
10615
10616 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
10617
10618         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
10619         for unrepresentable subregs or treat them as equal to other regs
10620         or subregs with the same register number.
10621
10622 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
10623
10624         PR middle-end/35432
10625         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
10626         if want_value.
10627
10628 2008-08-06  Jan Hubicka  <jh@suse.cz>
10629
10630         * predict.c (maybe_hot_frequency_p): When profile is absent, all
10631         frequencies might be hot.
10632
10633 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
10634
10635         * reload.c (find_reloads): Force constants into literal pool
10636         also if they are wrapped in a SUBREG.
10637
10638 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10639
10640         PR target/35659
10641         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
10642         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
10643         Don't allow predicated instructions for data speculation.
10644         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
10645         declaration.
10646
10647 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10648
10649         * haifa-sched.c (extend_global): Split to extend_global_data and
10650         extend_region_data.  Update all uses.
10651         (extend_all): Rename to extend_block_data.
10652
10653 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10654
10655         * sched-rgn.c (new_ready): Check if instruction can be
10656         speculatively scheduled before attempting speculation.
10657         (debug_rgn_dependencies): Remove wrongful assert.
10658
10659 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10660
10661         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
10662
10663 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10664
10665         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
10666         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
10667         va_size, and type_size.
10668
10669 2008-08-04  Jason Merrill  <jason@redhat.com>
10670
10671         PR c++/37016
10672         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
10673         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
10674
10675 2008-08-05  Richard Henderson  <rth@redhat.com>
10676
10677         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
10678         * configure: Rebuild.
10679
10680 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10681
10682         PR tree-opt/37024
10683         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
10684         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
10685         is a conversion.
10686
10687 2008-08-05  Richard Henderson  <rth@redhat.com>
10688
10689         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
10690         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
10691         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
10692         * common.opt (fdwarf2-cfi-asm): New.
10693         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
10694         * config.in, configure: Rebuild.
10695         * dwarf2asm.c (dw2_asm_output_data_raw): New.
10696         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
10697         New.
10698         (dw2_force_const_mem): Externalize.
10699         * dwarf2asm.h: Update.
10700         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
10701         generate a real label.
10702         (output_cfi_directive): New.
10703         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
10704         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
10705         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
10706         and .cfi_lsda.
10707         (dwarf2out_end_epilogue): Emit .cfi_endproc.
10708         (output_loc_operands_raw, output_loc_sequence_raw): New.
10709         (output_cfa_loc_raw): New.
10710
10711 2008-08-05  Paul Brook  <paul@codesourcery.com>
10712
10713         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
10714         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
10715         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
10716         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
10717         * config/arm/arm.h (TARGET_VFPD32): Define.
10718         (TARGET_VFP3): Use TARGET_VFPD32.
10719         (fputype): Add FPUTYPE_VFP3D16.
10720         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
10721         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
10722         * config/arm/arm-cores.def: Add cortex-r4f.
10723         * config/arm/arm-tune.md: Regenerate.
10724
10725 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10726
10727         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
10728         Reword some comments throughout the file.
10729
10730         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
10731         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
10732         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
10733         MFC_MIN_DMA_LIST_ELEMENTS.
10734         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
10735         MFC_MAX_DMA_LIST_ELEMENTS.
10736
10737         (MFC_START_ENABLE): Remove PPU-only define.
10738         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
10739         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
10740
10741         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
10742         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
10743         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
10744         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
10745         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
10746         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
10747         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
10748
10749         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
10750         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
10751         (mfc_sdcrt, mfc_sdcrtst): Likewise.
10752         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
10753
10754         (spu_read_machine_status): Fix typo.
10755
10756 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10757
10758         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
10759         SUBREG of multi-word hard register.
10760         * config/spu/spu.c (valid_subreg): Likewise.
10761         (adjust_operand): Handle SUBREGs of multi-word hard registers.
10762
10763 2008-08-04  Richard Guenther  <rguenther@suse.de>
10764
10765         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
10766         the candidate with the stripped base if that base is different
10767         from the original base even for offset zero.
10768
10769 2008-08-04  Richard Guenther  <rguenther@suse.de>
10770
10771         PR middle-end/36691
10772         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
10773         check for no_overflow.
10774
10775 2008-08-04  Richard Guenther  <rguenther@suse.de>
10776
10777         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
10778
10779 2008-08-04  Paul Brook  <paul@codesourcery.com>
10780
10781         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
10782         (arm_order_regs_for_local_alloc): New function.
10783         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
10784         prototype.
10785         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
10786
10787 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10788
10789         PR target/37012
10790         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
10791         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
10792         (ix86_expand_epilogue): Likewise.
10793
10794 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10795
10796         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
10797         in comments.
10798
10799 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10800
10801         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
10802         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
10803         (*movv2sf_internal_rex64): Ditto.
10804
10805 2008-08-03  Jan Hubicka  <jh@suse.cz>
10806
10807         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
10808         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
10809         * expmed.c (expand_smod_pow2): Likewise.
10810
10811 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10812
10813         PR target/36992
10814         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
10815         alternative 0 of operand 1.
10816         (*vec_concatv2di_rex64_sse): Ditto.
10817         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
10818         of operand 1.
10819         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
10820         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
10821         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
10822         (*movv2sf_internal_rex64): Ditto.
10823
10824 2008-08-02  Richard Guenther  <rguenther@suse.de>
10825
10826         PR target/35252
10827         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
10828         (ssedoublesizemode): New mode attribute.
10829         (sse_shufps): Call gen_sse_shufps_v4sf.
10830         (sse_shufps_1): Macroize.
10831         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
10832         (sse2_shufpd_1): Macroize.
10833         (vec_extract_odd, vec_extract_even): New expanders.
10834         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
10835         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
10836         * i386.c (ix86_expand_vector_init_one_nonzero): Call
10837         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
10838         (ix86_expand_vector_set): Likewise.
10839         (ix86_expand_reduc_v4sf): Likewise.
10840
10841 2008-08-01  Doug Kwan  <dougkwan@google.com>
10842
10843         * matrix-reorg.c: Re-enable all code.
10844         (struct malloc_call_data): Change CALL_STMT to gimple type.
10845         (collect_data_for_malloc_call): Tuplify.
10846         (struct access_site_info): Change STMT to gimple type.
10847         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
10848         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
10849         (struct free_info): Change STMT to gimple type.
10850         (struct matrix_access_phi_node):  Change PHI to gimple type.
10851         (get_inner_of_cast_expr): Remove.
10852         (may_flatten_matrices_1): Tuplify.
10853         (may_flatten_matrices): Ditto.
10854         (mark_min_matrix_escape_level): Ditto.
10855         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
10856         (ssa_accessed_in_call_rhs): New
10857         (ssa_accessed_in_assign_rhs): New
10858         (record_access_alloc_site_info): Tuplify.
10859         (add_allocation_site): Ditto.
10860         (analyze_matrix_allocation_site): Ditto.
10861         (analyze_transpose): Ditto.
10862         (get_index_from_offset): Ditto.
10863         (update_type_size): Ditto.
10864         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
10865         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
10866         (analyze_accesses_for_phi_node): Tuplify.
10867         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
10868         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
10869         (analyze_matrix_accesses): Tuplify.
10870         (check_var_data): New call-back type for check_var_notmodified_p.
10871         (check_var_notmodified_p): Tuplify and use call-back struct to
10872         return statement found.
10873         (can_calculate_expr_before_stmt): Factor out statement related code
10874         into ...
10875         (can_calculate_stmt_before_stmt): New.
10876         (check_allocation_function): Tuplify.
10877         (find_sites_in_func): Ditto.
10878         (record_all_accesses_in_func): Ditto.
10879         (transform_access_sites): Ditto.
10880         (transform_allocation_sites): Ditto.
10881         (matrix_reorg): Re-enable.
10882         (gate_matrix_reorg): Re-enable.
10883
10884 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
10885
10886         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
10887         for labels for which it hasn't been set yet.  If it has been set,
10888         stop walking insns and continue with next worklist item.
10889         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
10890         if the only BARRIER is at the very end of a function.
10891
10892 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10893
10894         * cfgexpand.c (expand_stack_alignment): Assert that
10895         stack_realign_drap and drap_rtx must match.
10896
10897         * function.c (instantiate_new_reg): If DRAP is used to realign
10898         stack, replace virtual_incoming_args_rtx with internal arg
10899         pointer.
10900
10901 2008-08-01  Richard Guenther  <rguenther@suse.de>
10902
10903         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
10904         loop information only if we initialized it.
10905         (execute_pre): Call fini_pre with in_fre.
10906         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
10907         if we do not unroll because we hit max-completely-peeled-insns.
10908         Use our estimation for consistency, do allow shrinking.
10909
10910 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10911
10912         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
10913         with MIN_STACK_BOUNDARY.
10914         (ix86_update_stack_boundary): Likewise.
10915         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
10916         STACK_BOUNDARY.
10917
10918         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
10919         (MIN_STACK_BOUNDARY): This.
10920
10921 2008-08-01  Richard Guenther  <rguenther@suse.de>
10922
10923         PR middle-end/36997
10924         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
10925
10926 2008-08-01  Richard Guenther  <rguenther@suse.de>
10927
10928         PR tree-optimization/36988
10929         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
10930         do not matter if that doesn't change volatile qualification.
10931
10932 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
10933
10934         * configure.ac: Do not generate libada-mk.  Do not subst
10935         host_cc_for_libada.
10936         * libada-mk.in: Remove.
10937         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
10938         * configure: Regenerate.
10939
10940 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
10941
10942         * tree-pass.h: Added comment about not dumping passes with name
10943         starting with star in struct opt_pass.
10944         * passes.c (register_dump_files_1): Don't do dump for a pass with
10945         name starting with star.
10946         * doc/passes.texi (Pass manager): Mention pass names and special
10947         meaning of star prefix to avoid dump.
10948
10949 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
10950
10951         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
10952         to MIPS64r2.
10953         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
10954         (ISA_MIPS64R2): New macro.
10955         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
10956         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
10957         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
10958         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
10959         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
10960         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
10961         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
10962         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
10963         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
10964         Move up to keep list alphabetically sorted.
10965         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
10966         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
10967         processor.
10968         * doc/invoke.texi (MIPS Options): Add -mips64r2.
10969         (-march=@var{arch}): Add mips64r2.
10970
10971 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10972
10973         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
10974
10975 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
10976
10977         * expr.c (expand_assignment): Check for complete type.
10978
10979 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10980
10981         PR debug/36977
10982         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
10983
10984         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
10985         for stack alignment.
10986
10987         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
10988
10989 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
10990
10991         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
10992         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
10993
10994 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10995
10996         PR rtl-optimization/36419
10997         * dwarf2out.c (barrier_args_size): New variable.
10998         (compute_barrier_args_size, compute_barrier_args_size_1): New
10999         functions.
11000         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
11001         if not called yet in the current function, use barrier_args_size
11002         array to find the new args_size value.
11003         (dwarf2out_frame_debug): Free and clear barrier_args_size.
11004
11005 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11006
11007         PR debug/36980
11008         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
11009         rule 19.
11010
11011 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11012
11013         PR debug/36976
11014         * dwarf2out.c (dwarf2out_args_size_adjust): New.
11015         (dwarf2out_stack_adjust): Use it.
11016         (dwarf2out_frame_debug_expr): Likewise.
11017
11018 2008-07-31  Richard Guenther  <rguenther@suse.de>
11019
11020         PR tree-optimization/36978
11021         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
11022         the generated condition.
11023
11024 2008-07-31  Richard Guenther  <rguenther@suse.de>
11025
11026         * passes.c (init_optimization_passes): Always call
11027         pass_early_warn_uninitialized.
11028         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
11029         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
11030         * doc/passes.texi (Warn for uninitialized variables): Adjust.
11031
11032 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11033
11034         PR c/36970
11035         * builtins.c (maybe_emit_free_warning): New function.
11036         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
11037         maybe_emit_free_warning for BUILT_IN_FREE.
11038
11039         PR debug/36278
11040         * dwarf2out.c (get_context_die): New function.
11041         (force_decl_die, force_type_die): Use it.
11042         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
11043         returns NULL, force generation of DW_TAG_typedef and put that into
11044         DW_AT_import.
11045
11046         PR preprocessor/36649
11047         * c-pch.c (c_common_read_pch): Save and restore
11048         line_table->trace_includes across PCH restore.
11049
11050 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
11051
11052         PR ada/36554
11053         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
11054
11055 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11056
11057         PR 36974
11058         * final.c (call_from_call_insn): Handle COND_EXEC.
11059
11060 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11061
11062         * builtins.c (std_gimplify_va_arg_expr): Replace
11063         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
11064         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11065
11066 2008-07-30  Joey Ye  <joey.ye@intel.com>
11067             H.J. Lu  <hongjiu.lu@intel.com>
11068
11069         * builtins.c (expand_builtin_setjmp_receiver): Replace
11070         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
11071         (expand_builtin_apply_args_1): Likewise.
11072         (expand_builtin_longjmp): Need DRAP for stack alignment.
11073         (expand_builtin_apply): Likewise.
11074
11075         * caller-save.c (setup_save_areas): Call assign_stack_local_1
11076         instead of assign_stack_local to allow alignment reduction.
11077
11078         * calls.c (emit_call_1): Need DRAP for stack alignment if
11079         return pops.
11080         (expand_call): Replace virtual_incoming_args_rtx with
11081         crtl->args.internal_arg_pointer.
11082         * stmt.c (expand_nl_goto_receiver): Likewise.
11083
11084         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
11085         alignment and store to stack_alignment_estimated and
11086         max_used_stack_slot_alignment.
11087         (expand_one_var): Likewise.
11088         (expand_stack_alignment): New function.
11089         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
11090         and stack_alignment_estimated fields in rtl_data.  Call
11091         expand_stack_alignment at end.
11092
11093         * defaults.h (INCOMING_STACK_BOUNDARY): New.
11094         (MAX_STACK_ALIGNMENT): Likewise.
11095         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
11096         (SUPPORTS_STACK_ALIGNMENT): Likewise.
11097
11098         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
11099         stack alignment when generating virtual registers.
11100
11101         * function.c (assign_stack_local): Renamed to ...
11102         (assign_stack_local_1): This.  Add a parameter to indicate
11103         if it is OK to reduce alignment.
11104         (assign_stack_local): Use it.
11105         (instantiate_new_reg): Instantiate virtual incoming args rtx
11106         to vDRAP if stack realignment and DRAP is needed.
11107         (assign_parms): Collect parameter/return type alignment and
11108         contribute to stack_alignment_estimated.
11109         (locate_and_pad_parm): Likewise.
11110         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
11111         with crtl->args.internal_arg_pointer.
11112
11113         * function.h (rtl_data): Add new field drap_reg,
11114         max_used_stack_slot_alignment, stack_alignment_estimated,
11115         stack_realign_needed, need_drap, stack_realign_processed and
11116         stack_realign_finalized.
11117         (stack_realign_fp): New macro.
11118         (stack_realign_drap): Likewise.
11119
11120         * global.c (compute_regsets): Frame pointer is needed when
11121         stack is realigned.  Can eliminate frame pointer when stack is
11122         realigned and dynamic realigned argument pointer isn't used.
11123
11124         * reload1.c (update_eliminables):  Frame pointer is needed
11125         when stack is realigned.
11126         (init_elim_table): Can eliminate frame pointer when stack is
11127         realigned and dynamic realigned argument pointer isn't used.
11128
11129         * rtl.h (assign_stack_local_1): Declare new funtion.
11130
11131         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
11132         (TARGET_GET_DRAP_RTX): Likewise.
11133         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
11134         TARGET_GET_DRAP_RTX.
11135
11136         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
11137
11138         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
11139         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
11140
11141 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
11142             H.J. Lu  <hongjiu.lu@intel.com>
11143
11144         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
11145         vdrap_reg, stack_realign and drap_reg_saved.
11146         (add_cfi): Don't allow redefining CFA when DRAP is used.
11147         (reg_save): Handle stack alignment.
11148         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
11149         alignment.  Don't generate DWARF information for (set fp sp)
11150         when DRAP is used.
11151         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
11152         to INVALID_REGNUM.
11153         (int_loc_descriptor): Move prototype forward.  Also define if
11154         DWARF2_UNWIND_INFO is true.
11155         (output_cfa_loc): Handle DW_CFA_expression.
11156         (build_cfa_aligned_loc): New.
11157         (based_loc_descr): Update assert for stack realign.  For local
11158         variables, use sp+offset when stack is aligned without drap and
11159         fp+offset when stack is aligned with drap.  For arguments, use
11160         cfa+offset when drap is used to align stack.
11161
11162 2008-07-30  Joey Ye  <joey.ye@intel.com>
11163             H.J. Lu  <hongjiu.lu@intel.com>
11164
11165         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
11166         Break long line.
11167         (ix86_gen_andsp): New.
11168         (ix86_user_incoming_stack_boundary): Likewise.
11169         (ix86_default_incoming_stack_boundary): Likewise.
11170         (ix86_incoming_stack_boundary): Likewise.
11171         (ix86_can_eliminate): Likewise.
11172         (find_drap_reg): Likewise.
11173         (ix86_update_stack_boundary): Likewise.
11174         (ix86_get_drap_rtx): Likewise.
11175         (ix86_finalize_stack_realign_flags): Likewise.
11176         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
11177         (TARGET_GET_DRAP_RTX): Likewise.
11178         (override_options): Overide option value for new options.
11179         (ix86_function_ok_for_sibcall): Remove check for
11180         force_align_arg_pointer.
11181         (ix86_handle_cconv_attribute): Likewise.
11182         (ix86_function_regparm): Likewise.
11183         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
11184         (ix86_va_start): Replace virtual_incoming_args_rtx with
11185         crtl->args.internal_arg_pointer.
11186         (ix86_select_alt_pic_regnum): Check DRAP register.
11187         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
11188         (ix86_compute_frame_layout): Compute frame layout wrt stack
11189         realignment.
11190         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
11191         (ix86_expand_prologue): Decide if stack realignment is needed
11192         and generate prologue code accordingly.
11193         (ix86_expand_epilogue): Generate epilogue code wrt stack
11194         realignment is really needed or not.
11195
11196         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
11197         (ABI_STACK_BOUNDARY): Likewise.
11198         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
11199         (STACK_REALIGN_DEFAULT): Likewise.
11200         (INCOMING_STACK_BOUNDARY): Likewise.
11201         (MAX_STACK_ALIGNMENT): Likewise.
11202         (ix86_incoming_stack_boundary): Likewise.
11203         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
11204         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
11205         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
11206         (machine_function): Remove force_align_arg_pointer.
11207
11208         * config/i386/i386.md (BX_REG): New.
11209         (R13_REG): Likewise.
11210
11211         * config/i386/i386.opt (mforce_drap): New.
11212         (mincoming-stack-boundary): Likewise.
11213         (mstackrealign): Add Init(-1).
11214
11215         * config/i386/i386-protos.h (ix86_can_eliminate): New
11216
11217 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11218
11219         * doc/extend.texi: Update force_align_arg_pointer.
11220
11221         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
11222         -mstackrealign.
11223
11224         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
11225         (INCOMING_STACK_BOUNDARY): Likewise.
11226         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
11227         (TARGET_GET_DRAP_RTX): Likewise.
11228
11229 2008-07-30  Andreas Schwab  <schwab@suse.de>
11230
11231         PR rtl-optimization/36929
11232         * dse.c (replace_inc_dec): Use emit_insn_before instead of
11233         add_insn_before and fix argument order.
11234         (replace_inc_dec_mem): Handle NULL rtx.
11235
11236 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
11237
11238         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
11239         function.
11240         (arm_compute_initial_elimination_offset): Use it.
11241         (arm_compute_save_reg_mask): Include static chain save slot when
11242         calculating alignment.
11243         (arm_get_frame_offsets): Ditto.
11244         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
11245         that we can use to decrement the stack when the stack decrement
11246         could be too big for an immediate value in a single insn.
11247         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
11248
11249 2008-07-30  Richard Guenther  <rguenther@suse.de>
11250
11251         PR tree-optimization/36967
11252         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
11253         Release defs of statements we remove.
11254
11255 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11256
11257         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
11258         instead of NULL_RTVEC.
11259
11260 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11261
11262         PR target/35866
11263
11264         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
11265         vector modes.
11266
11267 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11268
11269         * final.c (call_from_call_insn): New.
11270         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
11271
11272 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
11273
11274         * configure.ac: Substitute ADA_CFLAGS.
11275         * configure: Regenerate.
11276         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
11277         * Makefile.in: Remove mention of X_* variables.
11278         * config/pa/x-ada-hpux10: Remove.
11279         * config/pa/x-ada: Remove.
11280
11281         * doc/fragments.texi: Update.
11282
11283 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11284
11285         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
11286         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
11287         __dso_handle explicitly here.
11288
11289 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11290
11291         PR 34389
11292         * c-typeck.c (build_binary_op): Encapsulate code into...
11293         * c-common.c (shorten_binary_op): ...this new function.
11294         (conversion_warning): Use the new function. Handle non-negative
11295         constant in bitwise-and.
11296         * c-common.h (shorten_binary_op): Declare.
11297
11298 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11299
11300         * scan.c (make_sstring_space): Add explicit conversions of
11301         allocator's return value.
11302         * fix-header.c (recognized_function): Likewise.
11303
11304 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11305
11306         * doc/cpp.texi: Update to GFDL 1.2.
11307         * doc/gcc.texi: Do not list GPL as Invariant Section.
11308         * doc/gccint.texi: Likewise.  Update copyright years.
11309         * doc/install.texi: Update copyright years.
11310
11311 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
11312
11313         PR target/36955
11314         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
11315         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
11316
11317 2008-07-29  Jan Hubicka  <jh@suse.cz>
11318
11319         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
11320         (grokdeclarator): Likewise.
11321         * langhooks.c (lhd_warn_unused_global_decl): Use
11322         DECL_DECLARED_INLINE_P.
11323         * print-tree.c (print_node): Remove DECL_INLINE check.
11324
11325 2008-07-29  Richard Guenther  <rguenther@suse.de>
11326
11327         PR tree-optimization/36945
11328         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
11329         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
11330         Record invariant addresses un-decomposed.
11331         (copy_reference_ops_from_call): Record reference call
11332         arguments properly.  Simplify.
11333         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
11334         helper split out from ...
11335         (create_component_ref_by_pieces): ... here.  Simplify.
11336         Prepare for recursive invocation for call arguments.
11337         (create_expression_by_pieces): Adjust call to
11338         create_component_ref_by_pieces.
11339         (compute_avail): Process operand 2 of reference ops.
11340
11341 2008-07-29  Richard Guenther  <rguenther@suse.de>
11342
11343         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
11344
11345 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
11346
11347         * c-format.c (check_format_types): Revert unwanted checkin.
11348
11349 2008-07-29  Jan Hubicka  <jh@suse.cz>
11350
11351         * flags.h (flag_really_no_inline): Remove.
11352         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
11353         * toplev.c (flag_really_no_inline): Remove.
11354         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
11355         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
11356         (cgraph_decide_inlining_incrementally): Likewise.
11357         (compute_inline_parameters): Likewise.
11358         * opts.c (decode_options): Simplify.
11359         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
11360         * common.opt (finline): Initialize to 1.
11361         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
11362
11363 2008-07-29  Jan Hubicka  <jh@suse.cz>
11364
11365         * predict.c (always_optimize_for_size_p): New function.
11366         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11367         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11368         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
11369         functions.
11370         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
11371         * function.c (prepare_function_start): Set default profile.
11372         * function.h (rtl_data): Add maybe_hot_insn_p.
11373         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
11374         (construct_exit_block): Likewise.
11375         (tree_expand_cfg): Likewise.
11376         * basic-block.h
11377         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11378         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11379         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
11380         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
11381         Declare.
11382
11383 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11384
11385         PR 34985
11386         * c-decl.c (merge_decls): Merge USED flags.
11387
11388 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11389
11390         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
11391         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
11392         next_stack, lab_false and lab_over trees.
11393
11394 2008-07-28  Richard Guenther  <rguenther@suse.de>
11395
11396         PR tree-optimization/36957
11397         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
11398         (useless_type_conversion_p): Remove.
11399         (types_compatible_p): Remove.
11400         * gimple.h (tree_ssa_useless_type_conversion): Declare.
11401         (useless_type_conversion_p): Declare.
11402         (types_compatible_p): Declare.
11403         (gimple_expr_type): Return the base type only if it is
11404         trivially convertible to the subtype.
11405
11406 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
11407
11408         * configure.ac: Use the m4_do macro to concatenate the warnings into
11409         one string in ACX_PROG_CC_WARNING_OPTS,
11410         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
11411         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
11412         * configure: Regenerate.
11413
11414 2008-07-28  Richard Guenther  <rguenther@suse.de>
11415
11416         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
11417         (insert_fake_stores): Remove.
11418         (realify_fake_stores): Likewise.
11419         (execute_pre): Remove dead code.
11420         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
11421         (find_func_aliases): Deal with it here instead.
11422         Re-enable gcc_unreachable call.
11423
11424 2008-07-28  Richard Guenther  <rguenther@suse.de>
11425
11426         Merge from gimple-tuples-branch.
11427
11428         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
11429         * gimple.def: New file.
11430         * gsstruct.def: Likewise.
11431         * gimple-iterator.c: Likewise.
11432         * gimple-pretty-print.c: Likewise.
11433         * tree-gimple.c: Removed.  Merged into ...
11434         * gimple.c: ... here.  New file.
11435         * tree-gimple.h: Removed.  Merged into ...
11436         * gimple.h: ... here.  New file.
11437
11438         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
11439         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
11440         --enable-checking=gimple flag.
11441         * config.in: Likewise.
11442         * configure: Regenerated.
11443
11444         * tree-ssa-operands.h: Tuplified.
11445         * tree-vrp.c: Likewise.
11446         * tree-loop-linear.c: Likewise.
11447         * tree-into-ssa.c: Likewise.
11448         * tree-ssa-loop-im.c: Likewise.
11449         * tree-dump.c: Likewise.
11450         * tree-complex.c: Likewise.
11451         * cgraphbuild.c: Likewise.
11452         * tree-ssa-threadupdate.c: Likewise.
11453         * tree-ssa-loop-niter.c: Likewise.
11454         * tree-pretty-print.c: Likewise.
11455         * tracer.c: Likewise.
11456         * gengtype.c: Likewise.
11457         * tree-loop-distribution.c: Likewise.
11458         * tree-ssa-loop-unswitch.c: Likewise.
11459         * cgraph.c: Likewise.
11460         * cgraph.h: Likewise.
11461         * tree-ssa-loop-manip.c: Likewise.
11462         * value-prof.c: Likewise.
11463         * tree-ssa-loop-ch.c: Likewise.
11464         * tree-tailcall.c: Likewise.
11465         * value-prof.h: Likewise.
11466         * tree.c: Likewise.
11467         * tree.h: Likewise.
11468         * tree-pass.h: Likewise.
11469         * ipa-cp.c: Likewise.
11470         * tree-scalar-evolution.c: Likewise.
11471         * tree-scalar-evolution.h: Likewise.
11472         * target.h: Likewise.
11473         * lambda-mat.c: Likewise.
11474         * tree-phinodes.c: Likewise.
11475         * diagnostic.h: Likewise.
11476         * builtins.c: Likewise.
11477         * tree-ssa-alias-warnings.c: Likewise.
11478         * cfghooks.c: Likewise.
11479         * fold-const.c: Likewise.
11480         * cfghooks.h: Likewise.
11481         * omp-low.c: Likewise.
11482         * tree-ssa-dse.c: Likewise.
11483         * ipa-reference.c: Likewise.
11484         * tree-ssa-uncprop.c: Likewise.
11485         * toplev.c: Likewise.
11486         * tree-gimple.c: Likewise.
11487         * tree-gimple.h: Likewise.
11488         * tree-chrec.c: Likewise.
11489         * tree-chrec.h: Likewise.
11490         * tree-ssa-sccvn.c: Likewise.
11491         * tree-ssa-sccvn.h: Likewise.
11492         * cgraphunit.c: Likewise.
11493         * tree-ssa-copyrename.c: Likewise.
11494         * tree-ssa-ccp.c: Likewise.
11495         * tree-ssa-loop-ivopts.c: Likewise.
11496         * tree-nomudflap.c: Likewise.
11497         * tree-call-cdce.c: Likewise.
11498         * ipa-pure-const.c: Likewise.
11499         * c-format.c: Likewise.
11500         * tree-stdarg.c: Likewise.
11501         * tree-ssa-math-opts.c: Likewise.
11502         * tree-ssa-dom.c: Likewise.
11503         * tree-nrv.c: Likewise.
11504         * tree-ssa-propagate.c: Likewise.
11505         * ipa-utils.c: Likewise.
11506         * tree-ssa-propagate.h: Likewise.
11507         * tree-ssa-alias.c: Likewise.
11508         * gimple-low.c: Likewise.
11509         * tree-ssa-sink.c: Likewise.
11510         * ipa-inline.c: Likewise.
11511         * c-semantics.c: Likewise.
11512         * dwarf2out.c: Likewise.
11513         * expr.c: Likewise.
11514         * tree-ssa-loop-ivcanon.c: Likewise.
11515         * predict.c: Likewise.
11516         * tree-ssa-loop.c: Likewise.
11517         * tree-parloops.c: Likewise.
11518         * tree-ssa-address.c: Likewise.
11519         * tree-ssa-ifcombine.c: Likewise.
11520         * matrix-reorg.c: Likewise.
11521         * c-decl.c: Likewise.
11522         * tree-eh.c: Likewise.
11523         * c-pretty-print.c: Likewise.
11524         * lambda-trans.c: Likewise.
11525         * function.c: Likewise.
11526         * langhooks.c: Likewise.
11527         * ebitmap.h: Likewise.
11528         * tree-vectorizer.c: Likewise.
11529         * function.h: Likewise.
11530         * langhooks.h: Likewise.
11531         * tree-vectorizer.h: Likewise.
11532         * ipa-type-escape.c: Likewise.
11533         * ipa-type-escape.h: Likewise.
11534         * domwalk.c: Likewise.
11535         * tree-if-conv.c: Likewise.
11536         * profile.c: Likewise.
11537         * domwalk.h: Likewise.
11538         * tree-data-ref.c: Likewise.
11539         * tree-data-ref.h: Likewise.
11540         * tree-flow-inline.h: Likewise.
11541         * tree-affine.c: Likewise.
11542         * tree-vect-analyze.c: Likewise.
11543         * c-typeck.c: Likewise.
11544         * gimplify.c: Likewise.
11545         * coretypes.h: Likewise.
11546         * tree-ssa-phiopt.c: Likewise.
11547         * calls.c: Likewise.
11548         * tree-ssa-coalesce.c: Likewise.
11549         * tree.def: Likewise.
11550         * tree-dfa.c: Likewise.
11551         * except.c: Likewise.
11552         * except.h: Likewise.
11553         * cfgexpand.c: Likewise.
11554         * tree-cfgcleanup.c: Likewise.
11555         * tree-ssa-pre.c: Likewise.
11556         * tree-ssa-live.c: Likewise.
11557         * tree-sra.c: Likewise.
11558         * tree-ssa-live.h: Likewise.
11559         * tree-predcom.c: Likewise.
11560         * lambda.h: Likewise.
11561         * tree-mudflap.c: Likewise.
11562         * ipa-prop.c: Likewise.
11563         * print-tree.c: Likewise.
11564         * tree-ssa-copy.c: Likewise.
11565         * ipa-prop.h: Likewise.
11566         * tree-ssa-forwprop.c: Likewise.
11567         * ggc-page.c: Likewise.
11568         * c-omp.c: Likewise.
11569         * tree-ssa-dce.c: Likewise.
11570         * tree-vect-patterns.c: Likewise.
11571         * tree-ssa-ter.c: Likewise.
11572         * tree-nested.c: Likewise.
11573         * tree-ssa.c: Likewise.
11574         * lambda-code.c: Likewise.
11575         * tree-ssa-loop-prefetch.c: Likewise.
11576         * tree-inline.c: Likewise.
11577         * tree-inline.h: Likewise.
11578         * tree-iterator.c: Likewise.
11579         * tree-optimize.c: Likewise.
11580         * tree-ssa-phiprop.c: Likewise.
11581         * tree-vect-transform.c: Likewise.
11582         * tree-object-size.c: Likewise.
11583         * tree-outof-ssa.c: Likewise.
11584         * cfgloop.c: Likewise.
11585         * system.h: Likewise.
11586         * tree-profile.c: Likewise.
11587         * cfgloop.h: Likewise.
11588         * c-gimplify.c: Likewise.
11589         * c-common.c: Likewise.
11590         * tree-vect-generic.c: Likewise.
11591         * tree-flow.h: Likewise.
11592         * c-common.h: Likewise.
11593         * basic-block.h: Likewise.
11594         * tree-ssa-structalias.c: Likewise.
11595         * tree-switch-conversion.c: Likewise.
11596         * tree-ssa-structalias.h: Likewise.
11597         * tree-cfg.c: Likewise.
11598         * passes.c: Likewise.
11599         * ipa-struct-reorg.c: Likewise.
11600         * ipa-struct-reorg.h: Likewise.
11601         * tree-ssa-reassoc.c: Likewise.
11602         * cfgrtl.c: Likewise.
11603         * varpool.c: Likewise.
11604         * stmt.c: Likewise.
11605         * tree-ssanames.c: Likewise.
11606         * tree-ssa-threadedge.c: Likewise.
11607         * langhooks-def.h: Likewise.
11608         * tree-ssa-operands.c: Likewise.
11609         * config/alpha/alpha.c: Likewise.
11610         * config/frv/frv.c: Likewise.
11611         * config/s390/s390.c: Likewise.
11612         * config/m32c/m32c.c: Likewise.
11613         * config/m32c/m32c-protos.h: Likewise.
11614         * config/spu/spu.c: Likewise.
11615         * config/sparc/sparc.c: Likewise.
11616         * config/i386/i386.c: Likewise.
11617         * config/sh/sh.c: Likewise.
11618         * config/xtensa/xtensa.c: Likewise.
11619         * config/stormy16/stormy16.c: Likewise.
11620         * config/ia64/ia64.c: Likewise.
11621         * config/rs6000/rs6000.c: Likewise.
11622         * config/pa/pa.c: Likewise.
11623         * config/mips/mips.c: Likewise.
11624
11625 2008-07-28  Simon Baldwin  <simonb@google.com>
11626
11627         * c-pragma.c (handle_pragma_message): New function.
11628         (init_pragma): Register handle_pragma_message.
11629         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
11630         documentation.
11631
11632 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
11633
11634         PR tree-optimization/35252
11635         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
11636         REALPART_EXPR to be considered as same load operation.
11637
11638 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
11639
11640         PR tree-optimization/36830
11641         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
11642         (expressions_equal_p): Return false if only one operand is null.
11643
11644 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
11645
11646         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
11647         version requirements.
11648
11649 2008-07-26  Olivier Hainque  <hainque@adacore.com>
11650
11651         * collect2.c (symkind): New enum.  Symbol kinds we care about.
11652         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
11653         code and head comment accordingly.
11654         (scan_prog_file): Use symkind names instead of bare integers.
11655
11656 2008-07-25  Jan Hubicka  <jh@suse.cz>
11657
11658         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
11659         DECL_INLINE.
11660         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
11661         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
11662         * dojump.c (clear_pending_stack_adjust): Likewise.
11663         * print-tree.c (print_node): Ignore DECL_INLINE.
11664         * tree-inline.c (inlinable_function_p): Likewise.
11665
11666 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
11667
11668         * doc/extend.texi (hot attribute): Document that the hot attribute
11669         turns on -O3 for some ports.
11670         (cold attribute): Document that the cold attribute turns on -Os
11671         for some ports
11672
11673         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
11674         reflect function specific option support.
11675
11676         * target.h (struct target_option_hooks): Add fields to say whether
11677         the cold attribute implies -Os and the hot attribute implies -O3.
11678
11679         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
11680         By default, do not turn on -Os for cold functions.
11681         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
11682         not turn on -O3 for hot functions.
11683
11684         * c-common.c (handle_hot_attribute): Use target hook to determine
11685         if hot functions should enable -O3.
11686         (handle_cold_attribute): Use target hook to determine if cold
11687         functions should enable -Os.
11688
11689         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
11690         (override_options): Move disable scheduling to
11691         optimization_options.
11692         (optimization_options): Disable scheduling here, not
11693         override_options.
11694         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11695         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11696
11697         * config/ia64/ia64.c (ia64_override_options): Move setting
11698         scheduling flags to ia64_optimization_options.
11699         (ia64_optimization_options): Disable scheduling options here, and
11700         not in ia64_override_options.
11701         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11702         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11703
11704 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
11705
11706         PR target/36936
11707         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
11708
11709 2008-07-25  Martin Jambor  <mjambor@suse.cz>
11710
11711         PR tree-optimization/36926
11712         * ipa-prop.c (ipa_analyze_call_uses): Call
11713         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
11714
11715 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
11716
11717         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
11718         movv2si_internal): Add mem = reg alternative.
11719
11720 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11721
11722         PR bootstrap/36918
11723         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
11724         DEFAULT_PCC_STRUCT_RETURN to 127.
11725
11726 2008-07-24  Jan Hubicka  <jh@suse.cz>
11727
11728         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
11729         (build_cgraph_edges): Likewise.
11730         * cgraph.c (cgraph_node): Do not update assembler hash.
11731         (cgraph_remove_node): Drop non-unit-at-a-time code.
11732         * tree-pass.h (pass_O0_always_inline): Remove.
11733         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
11734         * toplev.c (process_options): Flag unit-at-a-time does not imply
11735         no section anchors.
11736         * cgraphunit.c: Update comments.
11737         (decide_is_function_needed): Drop non-unit-at-a-time mode.
11738         (cgraph_assemble_pending_functions): Remove.
11739         (cgraph_reset_node): Drop non-unit-at-a-time code.
11740         (cgraph_finalize_function): Likewise.
11741         (cgraph_analyze_function): Likewise.
11742         (cgraph_finalize_compilation_unit): Likewise.
11743         (cgraph_expand_function): Likewise.
11744         (cgraph_optimize): Likesise.
11745         (save_inline_function_body): Likewise.
11746         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
11747         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
11748         * ipa-inline.c: Update comments.
11749         (enum inlining_mode): remove INLINE_SPEED.
11750         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
11751         (cgraph_mark_inline_edge): Likewise.
11752         (try_inline): Likewise.
11753         (cgraph_decide_inlining_incrementally): Likewise.
11754         (cgraph_gate_inlining): Remove.
11755         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
11756         (cgraph_gate_early_inlining): Likewise.
11757         (gate_inline_passes): Remove.
11758         (pass_inline_parameters, pass_ipa_inline): Remove gates.
11759         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
11760         pass_O0_always_inline): Remove.
11761         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
11762         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
11763         * opts.c (no_unit_at_a_time_default): Remove.
11764         (decode_options): Remove flag_unit_at_a_time reset and warning.
11765         * opts.h (no_unit_at_a_time_default): Remove.
11766         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
11767         early in GNU dialect.
11768         (merge_decls): Update comment; drop unit-at-a-time check.
11769         (finish_decl): Likewise.
11770         (grok_declaration): Remove flag_inline_trees code.
11771         (finish_functions): Return on function returning non-void on all
11772         statics.
11773         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
11774         * cfgexpand.c (expand_one_static_var): Remove.
11775         (expand_one_var): Remove expand_one_static_var call.
11776         (expand_used_vars_for_block): Remove flag_unit_a_time check.
11777         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
11778         and flag_unit_at_a-time compatibility checks.
11779         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
11780         * tree-inline.c (flag_inline_trees): Remove.
11781         (inlinable_function_p): Don't check it.
11782         (expand_call_inline): Remove non-unit-at-a-time code.
11783         * tree-inline.h (flag_inline_trees): Remove.
11784         * tree-optimize.c (execute_early_local_optimizations): Remove
11785         unit-at-a-time checks.
11786         (tree_rest_of_compilation): Likewise.
11787         * combine.c (setup_incoming_promotions): Likewise.
11788         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
11789         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
11790         * passes.c (pass_inline_parameters): Update comments; remove
11791         O0_alwaysinline pass.
11792         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
11793         (execute_one_pass): Likewise.
11794         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
11795         (ix86_function_sseregparm): Likewise.
11796         * arm.c (arm_function_in_section_p): Likewise.
11797         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
11798         * varpool.c: Update comments.
11799         (decide_is_variable_needed): Remove unit-at-a-time checks.
11800         (varpool_finalize_decl): Likewise.
11801
11802 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
11803
11804         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
11805         to 2 instead of -1.
11806         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
11807
11808 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
11809
11810         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
11811         imp symbol extension.
11812
11813         2008-07-23  Ian Lance Taylor  <iant@google.com>
11814
11815         * tree-vrp.c (infer_value_range): Ignore asm statements when
11816         looking for memory accesses for -fdelete-null-pointer-checks.
11817
11818 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11819
11820         * config/spu/spu-c.c (__vector_keyword): New variable.
11821         (vector_keyword): Likewise.
11822         (spu_categorize_keyword): New function.
11823         (spu_macro_to_expand): Likewise.
11824         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
11825         compiling an ISO C dialect.
11826
11827 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11828
11829         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
11830         conventional usage.
11831
11832 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11833
11834         * configure: Regenerate.
11835         * configure.ac: Require texinfo 4.7.
11836         * doc/install.texi: Document texinfo 4.7 requirement.
11837
11838 2008-07-23  Martin Jambor  <mjambor@suse.cz>
11839
11840         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
11841         rather than for DECL_SAVED_TREE.
11842         * ipa-prop.c: Include diagnostic.h.
11843         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
11844         thoroughly.
11845         (ipa_detect_param_modifications): Function rewritten from scratch.
11846         (ipa_compute_jump_functions): Changed accesses to modification flags.
11847         (ipa_free_node_params_substructures): Update flags destruction.
11848         (ipa_node_duplication_hook): Update flags duplication.
11849         (ipa_print_all_params_modified): Updated flag access.
11850         * ipa-prop.h (struct ipa_param_flags): New structure.
11851         (struct ipa_node_params): New field modification_analysis_done,
11852         modified_flags changed into param_flags.
11853         (ipa_is_ith_param_modified): Changed to use new flags.
11854         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
11855
11856         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
11857         ipa-cp.c and split into two functions.
11858         (ipa_print_node_jump_functions): New function.
11859         (compute_scalar_jump_functions): New function.
11860         (type_like_member_ptr_p): New function.
11861         (compute_pass_through_member_ptrs): New function.
11862         (fill_member_ptr_cst_jump_function): New function.
11863         (determine_cst_member_ptr): New function.
11864         (compute_cst_member_ptr_arguments): New function.
11865         (ipa_compute_jump_functions): Complete rewrite.
11866         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
11867         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
11868         (struct ipa_member_ptr_cst): New structure.
11869         (union jump_func_value): New field member_cst.
11870         * ipa-cp.c (ipcp_lat_is_insertable): New function.
11871         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
11872         jump function types.
11873         (ipcp_print_all_lattices): Slight fprintf rearrangement.
11874         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
11875         instead of ipcp_print_all_jump_functions.
11876         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
11877         only for replacable scalars.
11878
11879         * doc/invoke.texi (Optimize options): Add description of
11880         -findirect-inlining.
11881         * common.opt (flag_indirect_inlining): New flag.
11882         * opts.c (decode_options): Set flag_indirect_inlining when
11883         optimize >= 3.
11884
11885         * ipa-inline.c: Include ipa-prop.h.
11886         (inline_indirect_intraprocedural_analysis): New function.
11887         (inline_generate_summary): Allocate parameter and argument info
11888         structures, call inline_indirect_intraprocedural_analysis on each
11889         node when doing indirect inlining and deallocate indirect inlining
11890         data structures in the end.
11891         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
11892         (free_all_ipa_structures_after_iinln): New function.
11893         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
11894         done.
11895         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
11896
11897         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
11898         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11899         of computing the frequency separately.
11900         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11901         of computing the frequency separately.
11902         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
11903         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
11904         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
11905         (ipa_get_stmt_member_ptr_load_param): New function.
11906         (ipa_is_ssa_with_stmt_def): New function.
11907         (ipa_note_param_call): New function.
11908         (ipa_analyze_call_uses): New function.
11909         (ipa_analyze_stmt_uses): New function.
11910         (ipa_analyze_params_uses): New function.
11911         (ipa_free_node_params_substructures): Also free the param_calls linked
11912         list.
11913         (ipa_node_duplication_hook): Also duplicate the param_calls
11914         linked list.
11915         (ipa_print_node_param_flags): New function.
11916         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
11917         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
11918         * ipa-prop.h (struct ipa_param_flags): New field called.
11919         (struct ipa_param_call_note): New structure.
11920         (struct ipa_node_params): New fields param_calls and
11921         uses_analysis_done.
11922         (ipa_is_ith_param_called): New function.
11923         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
11924         ipa_analyze_params_uses and dump parameter flags.
11925
11926         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
11927         ipa_propagate_indirect_call_infos if performing indirect inlining,
11928         pass a new parameter new_edges to it.
11929         (add_new_edges_to_heap): New fucntion.
11930         (cgraph_decide_inlining_of_small_functions): New vector
11931         new_indirect_edges for newly found indirect edges , call
11932         ipa_propagate_indirect_call_infos after inlining.
11933         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
11934         inlining if performing indirect inlining.  Call
11935         free_all_ipa_structures_after_iinln when doing so too.
11936         (inline_generate_summary): Do not call
11937         free_all_ipa_structures_after_iinln here.
11938         * ipa-prop.c (update_jump_functions_after_inlining): New function.
11939         (print_edge_addition_message): New function.
11940         (update_call_notes_after_inlining): New function.
11941         (propagate_info_to_inlined_callees): New function.
11942         (ipa_propagate_indirect_call_infos): New function.
11943         * ipa-prop.h: Include cgraph.h
11944         (struct ipa_param_call_note): Fields reordered, new field processed.
11945         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
11946         flag indirect_call.
11947         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
11948         rediscovered call statements.
11949         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
11950         (dump_cgraph_node): Dump also the indirect_call flag.
11951         (cgraph_clone_edge): Copy also the indirect_call flag.
11952         * tree-inline.c (copy_bb): Do not check for fndecls from call
11953         expressions, check for edge availability when moving clones.
11954         (get_indirect_callee_fndecl): New function.
11955         (expand_call_inline): If callee declaration is not apprent from
11956         the statement, try calling get_indirect_callee_fndecl.  Do not
11957         issue warnings or call sorry when not inlinings an indirect edge.
11958         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
11959
11960         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
11961         bit more frandly to matching.
11962         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
11963         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
11964         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
11965
11966 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11967
11968         PR 36907
11969         * opth-gen.awk: Suppress function specific features when building
11970         target libraries.
11971         * optc-gen.awk: Ditto.
11972
11973 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11974
11975         PR 35058
11976         * diagnostic.c (pedwarn): Add opt parameter.
11977         (pedwarn0): New.
11978         * c-tree.h (pedwarn_init): Add opt parameter.
11979         (pedwarn_c90): Likewise.
11980         (pedwarn_c99): Likewise.
11981         * c-errors.c (pedwarn_c99): Likewise.
11982         (pedwarn_c90): Likewise.
11983         * toplev.h (pedwarn): Update declaration.
11984         (pedwarn0): Declare.
11985         * c-lex.c: All calls to pedwarn changed.
11986         * builtins.c: All calls to pedwarn changed.
11987         * toplev.c: All calls to pedwarn changed.
11988         * c-decl.c: All calls to pedwarn changed.
11989         * c-typeck.c: All calls to pedwarn changed.
11990         * c-common.c: All calls to pedwarn changed.
11991         * c-parser.c: All calls to pedwarn changed.
11992
11993 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11994             Karthik Kumar  <karthikkumar@gmail.com>
11995
11996         * attribs.c (file scope): Include c-common.h.
11997         (decl_attributes): Add support for #pragma GCC optimize and
11998         #pragma GCC option.
11999
12000         * targhooks.c (default_can_inline_p): New function that is the
12001         default for the TARGET_CAN_INLINE_P target hook.
12002
12003         * targhooks.h (default_can_inline_p): Add declaration.
12004
12005         * tree.c (cl_optimization_node): New static tree for building
12006         OPTIMIZATION_NODE tree.
12007         (cl_target_option_node): New static tree for building
12008         TARGET_OPTION_NODE tree.
12009         (cl_option_hash_table): New hash table for hashing
12010         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12011         (cl_option_hash_hash): New function to provide the hash value for
12012         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12013         (cl_option_hash_eq): New function to provide an equality test for
12014         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12015         (tree_code_size): Add support for OPTIMIZATION_NODE and
12016         TARGET_OPTION_NODE trees.
12017         (tree_code_structure): Add support for OPTIMIZATION_NODE and
12018         TARGET_OPTION_NODE trees.
12019         (build_optimization_node): Build a tree that has all of the
12020         current optimization options.
12021         (build_target_option_node): Build a tree that has the target
12022         options that might be changed on a per function basis.
12023
12024         * tree.h (file scope): Include options.h.
12025         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
12026         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12027         (TREE_OPTIMIZATION): Ditto.
12028         (TREE_TARGET_SPECIFIC): Ditto.
12029         (struct tree_function_decl): Add fields for remembering the
12030         current optimization options and target specific options.
12031         (struct tree_optimization_option): New tree variant that remembers
12032         the optimization options.
12033         (struct tree_target_option): New tree variant that remembers the
12034         target specific flags that might change for compiling a particular
12035         function.
12036         (union tree_node): Include tree_optimization_option and
12037         tree_target_option fields.
12038         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
12039         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
12040         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
12041         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
12042         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
12043         optimization and target options.
12044         (optimization_default_node): New macro to refer to global_trees
12045         field.
12046         (optimization_current_node): Ditto.
12047         (optimization_cold_node): Ditto.
12048         (optimization_hot_node): Ditto.
12049         (target_option_default_node): Ditto.
12050         (target_option_current_node): Ditto.
12051         (current_option_pragma): Ditto.
12052         (current_optimize_pragma): Ditto.
12053
12054         * target.h (struct gcc_target): Add valid_option_attribute_p,
12055         target_option_save, target_option_restore, target_option_print,
12056         target_option_pragma_parse, and can_inline_p hooks.
12057
12058         * toplev.h (parse_optimize_options): Add declaration.
12059         (fast_math_flags_struct_set_p): Ditto.
12060
12061         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
12062         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
12063         optimize is used.
12064
12065         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
12066         tree_can_inline_p hook to see if one function can inline another.
12067         (cgraph_decide_inlining): Ditto.
12068         (cgraph_decide_inlining_incrementally): Ditto.
12069
12070         * opts.c (decode_options): Add support for running multiple times
12071         to allow functions with different target or optimization options
12072         than was specified on the command line.
12073         (fast_math_flags_struct_set_p): New function that is similar to
12074         fast_math_flags_set_p, except it uses the values in the
12075         cl_optimization structure instead of global variables.
12076
12077         * optc-gen.awk: Add support for TargetSave to allow a back end to
12078         declare new fields that need to be saved when using function
12079         specific options.  Include flags.h and target.h in the options.c
12080         source.  Add support for Save to indicate which options can be set
12081         for individual functions.  Generate cl_optimize_save,
12082         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
12083         cl_target_option_restore, cl_target_option_print functions to
12084         allow functions to use different optimization or target options.
12085
12086         * opt-functions.awk (var_type_struct): Return the type used for
12087         storing the field in a structure.
12088
12089         * opth-gen.awk: Add support for TargetSave to allow a back end to
12090         declare new fields that need to be saved when using function
12091         specific options.  Add support for Save to indicate which options
12092         can be set for individual functions.  Only generate one extern for
12093         Mask fields.  Generate cl_optimization and cl_target_option
12094         structures to remember optimization and target options.
12095
12096         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
12097         collecting new tree nodes.
12098         (TS_TARGET_OPTION): Ditto.
12099
12100         * c-decl.c (merge_decls): Merge function specific target and
12101         optimization options.
12102
12103         * function.c (invoke_set_current_function_hook): If the function
12104         uses different optimization options, change the global variables
12105         to reflect this.
12106
12107         * coretypes.h (struct cl_optimization): Add forward reference.
12108         (struct cl_target_option): Ditto.
12109
12110         * c-pragma.c (option_stack): New static vector to remember the
12111         current #pragma GCC option stack.
12112         (handle_pragma_option): New function to support #pragma GCC option
12113         to change target options.
12114         (optimize_stack): New static vector to remember the current
12115         #pragma GCC optimize stack.
12116         (handle_pragma_optimize): New function to support #pragma GCC
12117         optimize to change optimization options.
12118         (init_pragma): Add support for #pragma GCC optimize and #pragma
12119         GCC option.
12120
12121         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
12122         optimization options.
12123         (TARGET_OPTION_NODE): New tree code for remembering certain target
12124         options.
12125
12126         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
12127         TARGET_OPTION_NODE trees.
12128
12129         * common.opt (-O): Add Optimization flag.
12130         (-Os): Ditto.
12131         (-fmath-errno): Ditto.
12132         (-falign-functions): Add UInteger flag to make sure flag gets full
12133         int in cl_optimization structure.
12134         (-falign-jumps): Ditto.
12135         (-falign-labels): Ditto.
12136         (-falign-loops): Ditto.
12137         (-fsched-stalled-insns): Ditto.
12138         (-fsched-stalled-insns-dep): Ditto.
12139
12140         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
12141         definition.
12142         (TARGET_OPTION_SAVE): Ditto.
12143         (TARGET_OPTION_RESTORE): Ditto.
12144         (TARGET_OPTION_PRINT): Ditto.
12145         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12146         (TARGET_CAN_INLINE_P): Ditto.
12147         (TARGET_INITIALIZER): Add new hooks.
12148
12149         * tree-inline.c (tree_can_inline_p): New function to determine
12150         whether one function can inline another.  Check if the functions
12151         use compatible optimization options, and also call the backend
12152         can_inline_p hook.
12153
12154         * tree-inline.h (tree_can_inline_p): Add declaration.
12155
12156         * c-common.c (c_common_attribute): Add support for option and
12157         optimize attributes.
12158         (handle_option_attribute): Add support for the option attribute to
12159         allow the user to specify different target options for compiling a
12160         specific function.
12161         (handle_optimize_attribute): Add support for the optimize
12162         attribute to allow the user to specify different optimization
12163         options for compiling a specific function.
12164         (handle_hot_attribute): Turn on -O3 optimization for this one
12165         function if it isn't the default optimization level.
12166         (handle_cold_attribute): Turn on -Os optimization for this one
12167         function if it insn't the default optimization.
12168         (const_char_p): New const char * typedef.
12169         (optimize_args): New static vector to remember the optimization
12170         arguments.
12171         (parse_optimize_options): New function to set up the optimization
12172         arguments from either the optimize attribute or #pragma GCC optimize.
12173
12174         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
12175         (builtin_define_std): Ditto.
12176
12177         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
12178         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
12179         (x86_64-*-*): Ditto.
12180
12181         * Makefile.in (TREE_H): Add options.h.
12182         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
12183
12184         * doc/extend.texi (option attribute): Document new attribute.
12185         (optimize attribute): Ditto.
12186         (hot attribute): Document hot attribute sets -O3.
12187         (cold attribute): Document cold attribute sets -Os.
12188         (#pragma GCC option): Document new pragma.
12189         (#pragma GCC optimize): Ditto.
12190
12191         * doc/options.texi (TargetSave): Document TargetSave syntax.
12192         (UInteger): Document UInteger must be used for certain flags.
12193         (Save): Document Save option to create target specific options
12194         that can be saved/restored on a function specific context.
12195
12196         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
12197         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12198
12199         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
12200         (TARGET_OPTION_SAVE): Ditto.
12201         (TARGET_OPTION_RESTORE): Ditto.
12202         (TARGET_OPTION_PRINT): Ditto.
12203         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12204         (TARGET_CAN_INLINE_P): Ditto.
12205
12206         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
12207         -mfpmath=sse,387.
12208         (-mfpmath=both): Ditto.
12209
12210 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12211             Karthik Kumar  <karthikkumar@gmail.com>
12212
12213         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
12214         (TARGET_POPCNT): Ditto.
12215         (TARGET_SAHF): Ditto.
12216         (TARGET_AES): Ditto.
12217         (TARGET_PCLMUL): Ditto.
12218         (TARGET_CMPXCHG16B): Ditto.
12219         (TARGET_RECIP): Move switch into target_flags.
12220         (TARGET_FUSED_MADD): Ditto.
12221         (ix86_arch_features): Make an unsigned char type.
12222         (ix86_tune_features): Ditto.
12223         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
12224         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
12225         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
12226
12227         * config/i386/i386.opt (arch): New TargetSave field to define
12228         fields that need to be saved for function specific option support.
12229         (tune): Ditto.
12230         (fpmath): Ditto.
12231         (branch_cost): Ditto.
12232         (ix86_isa_flags_explicit): Ditto.
12233         (tune_defaulted): Ditto.
12234         (arch_specified): Ditto.
12235         (-m128-long-double): Add Save flag to save option for target
12236         specific option support.
12237         (-m80387): Ditto.
12238         (-maccumulate-outgoing-args): Ditto.
12239         (-malign-double): Ditto.
12240         (-malign-stringops): Ditto.
12241         (-mfancy-math-387): Ditto.
12242         (-mhard-float): Ditto.
12243         (-mieee-fp): Ditto.
12244         (-minline-all-stringops): Ditto.
12245         (-minline-stringops-dynamically): Ditto.
12246         (-mms-bitfields): Ditto.
12247         (-mno-align-stringops): Ditto.
12248         (-mno-fancy-math-387): Ditto.
12249         (-mno-push-args): Ditto.
12250         (-mno-red-zone): Ditto.
12251         (-mpush-args): Ditto.
12252         (-mred-zone): Ditto.
12253         (-mrtd): Ditto.
12254         (-msseregparm): Ditto.
12255         (-mstack-arg-probe): Ditto.
12256         (-m32): Ditto.
12257         (-m64): Ditto.
12258         (-mmmx): Ditto.
12259         (-m3dnow): Ditto.
12260         (-m3dnowa): Ditto.
12261         (-msse): Ditto.
12262         (-msse2): Ditto.
12263         (-msse3): Ditto.
12264         (-msse4.1): Ditto.
12265         (-msse4.2): Ditto.
12266         (-msse4): Ditto.
12267         (-mno-sse4): Ditto.
12268         (-msse4a): Ditto.
12269         (-msse5): Ditto.
12270         (-mrecip): Move flag into target_flags.
12271         (-mcld): Ditto.
12272         (-mno-fused-madd): Ditto.
12273         (-mfused-madd): Ditto.
12274         (-mabm): Move flag into ix86_isa_flags.
12275         (-mcx16): Ditto.
12276         (-mpopcnt): Ditto.
12277         (-msahf): Ditto.
12278         (-maes): Ditto.
12279         (-mpclmul): Ditto.
12280
12281         * config/i386/i386-c.c: New file for #pragma support.
12282         (ix86_target_macros_internal): New function to #define or #undef
12283         target macros based when the user uses the #pragma GCC option to
12284         change target options.
12285         (ix86_pragma_option_parse): New function to add #pragma GCC option
12286         support.
12287         (ix86_target_macros): Move defining the target macros here from
12288         TARGET_CPU_CPP_BUILTINS in i386.h.
12289         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
12290         defined, initialize any subtarget #pragmas.
12291
12292         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
12293         REGISTER_TARGET_PRAGMAS.
12294
12295         * config/i386/t-i386: New file for x86 dependencies.
12296         (i386.o): Make dependencies mirror the include files used.
12297         (i386-c.o): New file, add dependencies.
12298
12299         * config/i386/i386-protos.h (override_options): Add bool argument.
12300         (ix86_valid_option_attribute_tree): Add declaration.
12301         (ix86_target_macros): Ditto.
12302         (ix86_register_macros): Ditto.
12303
12304         * config/i386/i386.c (ix86_tune_features): Move initialization of
12305         the target masks to initial_ix86_tune_features to allow functions
12306         to have different target options.  Make type unsigned char,
12307         instead of unsigned int.
12308         (initial_ix86_tune_features): New static vector to hold processor
12309         masks for the tune variables.
12310         (ix86_arch_features): Move initialization of the target masks to
12311         initial_ix86_arch_features to allow functions to have different
12312         target options.  Make type unsigned char, instead of unsigned int.
12313         (initial_ix86_arch_features): New static vector to hold processor
12314         masks for the arch variables.
12315         (enum ix86_function_specific_strings): New enum to describe the
12316         string options used for attribute((option(...))).
12317         (ix86_target_string): New function to return a string that
12318         describes the target options.
12319         (ix86_debug_options): New function to print the current options in
12320         the debugger.
12321         (ix86_function_specific_save): New function hook to save the
12322         function specific global variables in the cl_target_option structure.
12323         (ix86_function_specific_restore): New function hook to restore the
12324         function specific variables from the cl_target_option structure to
12325         the global variables.
12326         (ix86_function_specific_print): New function hook to print the
12327         target specific options in the cl_target_option structure.
12328         (ix86_valid_option_attribute_p): New function hook to validate
12329         attribute((option(...))) arguments.
12330         (ix86_valid_option_attribute_tree): New function that is common
12331         code between attribute((option(...))) and #pragma GCC option
12332         support that parses the options and returns a tree holding the options.
12333         (ix86_valid_option_attribute_inner_p): New helper function for
12334         ix86_valid_option_attribute_tree.
12335         (ix86_can_inline_p): New function hook to decide if one function
12336         can inline another on a target specific basis.
12337         (ix86_set_current_function); New function hook to switch target
12338         options if the user used attribute((option(...))) or #pragma GCC
12339         option.
12340         (ix86_tune_defaulted): Move to static file scope from
12341         override_options.
12342         (ix86_arch_specified): Ditto.
12343         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
12344         ix86_isa_flags.
12345         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
12346         (OPTION_MASK_ISA_ABM_SET): Ditto.
12347         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
12348         (OPTION_MASK_ISA_CX16_SET): Ditto.
12349         (OPTION_MASK_ISA_SAHF_SET): Ditto.
12350         (OPTION_MASK_ISA_AES_UNSET): Ditto.
12351         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12352         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
12353         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
12354         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
12355         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
12356         (struct ptt): Move to static file scope from override_options.
12357         (processor_target_table): Ditto.
12358         (cpu_names): Ditto.
12359         (ix86_handle_option): Add support for options that are now isa options.
12360         (override_options): Add support for declaring functions that
12361         support different target options than were specified on the
12362         command line.  Move struct ptt, processor_target_table, cpu_names,
12363         ix86_tune_defaulted, ix86_arch_specified to static file scope.
12364         Add bool argument.  Fix up error messages so the appropriate error
12365         is given for either command line or attribute.
12366         (ix86_previous_fndecl): New static to remember previous function
12367         declaration to see if we need to change target options.
12368         (ix86_builtins_isa): New array to record the ISA of each builtin
12369         function.
12370         (def_builtin): Always create the builtin function, even if the
12371         current ISA doesn't support it.
12372         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
12373         tests for those builtins.
12374         (ix86_init_builtins): Remove TARGET_MMX test for calling
12375         ix86_init_mmx_sse_builtins.
12376         (ix86_expand_builtin): If the current ISA doesn't support a given
12377         builtin, signal an error.
12378         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
12379         (TARGET_SET_CURRENT_FUNCTION): Ditto.
12380         (TARGET_OPTION_SAVE): Ditto.
12381         (TARGET_OPTION_RESTORE): Ditto.
12382         (TARGET_OPTION_PRINT): Ditto.
12383         (TARGET_CAN_INLINE_P): Ditto.
12384
12385 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
12386
12387         * c-typeck.c (build_external_ref): Don't call assemble_external.
12388         * final.c (output_operand): Call assemble_external.
12389
12390 2008-07-21  DJ Delorie  <dj@redhat.com>
12391
12392         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
12393         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12394
12395 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12396
12397         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
12398         original insn and splitter contents into ...
12399         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
12400         flag_unsafe_math_optimizations.  Add dummy scratch register.
12401         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
12402         !flag_unsafe_math_optimizations.  Returns number with next
12403         highest magnitude if this is still less or equal to the true
12404         quotient in magnitude.
12405
12406 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
12407
12408         * Makefile.in: Replace toplev.h with TOPLEV_H.
12409         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
12410         * c-lex.c (fe_file_change): Don't set in_system_header.
12411         * c-parser.c (c_token): Remove in_system_header.
12412         (c_lex_one_token): Don't set in_system_header.
12413         (c_parser_set_source_position_from_token): Don't set in_system_header.
12414         * diagnostic.c (diagnostic_report_diagnostic): Use location from
12415         diagnostic_info.
12416         (warning_at): New.
12417         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
12418         * flags.h (in_system_header): Remove.
12419         * function.c (saved_in_system_header): Remove.
12420         (push_cfun): Don't set in_system_header.
12421         (pop_cfun): Don't set in_system_header.
12422         (push_struct_function): Don't set in_system_header.
12423         * input.h (expanded_location): Add sysp.
12424         (in_system_header_at): New.
12425         (in_system_header): New.
12426         * toplev.c (in_system_header): Remove.
12427         * toplev.h: Include input.h
12428         (warning_at): New.
12429         * tree-cfg.c (execute_warn_function_return): Call warning_at.
12430         * tree-ssa.c (warn_uninit): Call warning_at.
12431         (warn_uninitialized_var): Update calls to warn_uninit.
12432         (warn_uninitialized_phi): Update calls to warn_uninit.
12433         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
12434         (expand_location): Initialize xloc.sysp.
12435         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
12436         (tree_decl_with_vis): Remove in_system_header_flag.
12437
12438 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
12439
12440         PR target/36822
12441         * recog.c (asm_operand_ok): Change the order of the extra
12442         memory constraint checks.
12443
12444 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12445
12446         PR tree-opt/36879
12447         * tree-switch-conversion.c (build_one_array): Call
12448         varpool_mark_needed_node and varpool_finalize_decl
12449         instead of assemble_variable.
12450
12451 2008-07-19  Jan Hubicka  <jh@suse.cz>
12452
12453         * cgraph.c (cgraph_add_new_function): Do early local passes.
12454         * tree-nrv.c (gate_pass_return_slot): New gate.
12455         (pass_nrv): Add the gate.
12456         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
12457         functions.
12458         (coalesce_ssa_name): Coalesce SSA names.
12459         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
12460         not optimizing so unused user vars remains visible.
12461         * common.opt (flag_tree_ter): Always enable by default.
12462         * tree-ssa-ter.c: Include flags.h
12463         (is_replaceable_p): Check that locations match; when aliasing
12464         is missing be conservative about loads.
12465         * tree-optimize.c (gate_init_datastructures): Remove.
12466         (pass_init_datastructures): New.
12467         * passes.c: Reorder passes so we always go into SSA.
12468
12469 2008-07-19  Jan Hubicka  <jh@suse.cz>
12470
12471         * doc/extend.texi (flatten attribute): Remove note about
12472         unit-at-a-time.
12473         * doc/invoke.texi (--combine): Likewise.
12474         (-finline-functions-called-once): Update levels when enabled.
12475         (-funit-at-a-time): Document new behaviour.
12476         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
12477         -fno-section-anchors when disabled explicitly.
12478         (inline params): They are not ignored now.
12479         (precompiled headers): Remove unit-at-a-time as being incompatible.
12480         * opts.c (decode_options): Handle unit-at-a-time as alias;
12481         imply -fno-section-anchors when toplevel reorder is disabled
12482         explicitly.
12483         * common.opt (ftoplevel-reorder): Set default value to 2.
12484         (funit-at-a-time): Set default value to 1.
12485         * config/rs6000/rs6000.c (optimization_options): Set section anchors
12486         to 2.
12487
12488 2008-07-19  Jan Hubicka  <jh@suse.cz>
12489
12490         * builtins.c (expand_builtin_int_roundingfn,
12491         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
12492         it is not useful.
12493
12494 2008-07-19  Richard Guenther  <rguenther@suse.de>
12495
12496         PR bootstrap/36864
12497         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
12498         * tree-ssa-sccvn.c (get_constant_value_id): New function.
12499         * tree-ssa-pre.c (get_expr_value_id): For newly created
12500         constant value-ids make sure to add the expression to its
12501         expression-set.
12502
12503 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
12504
12505         PR middle-end/36877
12506         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
12507         return value of the builtin is ignored.
12508
12509 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12510
12511         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
12512         bits, a C conformant malloc implementation has to provide.
12513         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
12514
12515 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
12516
12517         PR target/36780
12518         PR target/36827
12519         * reload.c (find_reloads_subreg_address): Only reload address if
12520         reloaded == 0, not for reloaded != 1.
12521
12522         Revert:
12523         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12524         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12525         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12526         m32c_legitimize_reload_address.
12527
12528         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12529         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12530         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12531
12532 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12533
12534         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
12535         argument, saying whether nested array are to be collapsed
12536         into a single array type DIE with multiple subscripts.
12537         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
12538         issues, centralize the nested array types collapsing control and
12539         disable the transformation for Ada.
12540
12541 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
12542
12543         PR target/36786
12544         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
12545         x86_64_shift_adj.
12546         (x86_64_shift_adj_2): New expander.
12547         (x86_64_shift_adj_3): Ditto.
12548         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
12549         to split TImode operands.
12550         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
12551         (ix86_split_lshr): Ditto.
12552
12553 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
12554
12555         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
12556         and __CHAR32_TYPE__.
12557         * c-typeck.c (digest_init): Support char16_t and char32_t.
12558         (set_nonincremental_init_from_string): Idem.
12559
12560 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12561
12562         PR middle-end/36859
12563         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
12564         PREFERRED_STACK_BOUNDARY.
12565         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
12566
12567 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12568
12569         PR middle-end/36858
12570         * function.c (locate_and_pad_parm): Cap boundary earlier.
12571
12572 2008-07-17  Julian Brown  <julian@codesourcery.com>
12573
12574         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
12575         no-op for targets which don't use DLLs.
12576
12577 2008-07-17  Martin Jambor  <mjambor@suse.cz>
12578
12579         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
12580         that nodes are relevant by examining the node->analyzed flag.
12581         (ipcp_init_stage): Check which nodes are relevant, assert that the
12582         relevant ones are also required.
12583         (ipcp_propagate_stage): Check on the side arrays are properly
12584         allocated.
12585         (ipcp_print_all_jump_functions): Make sure not to touch any node
12586         that is not analyzed or an edge that does not have a corresponding
12587         entry in the on-the-side vectors.
12588         (ipcp_function_scale_print): Likewise.
12589         (ipcp_update_callgraph): Check that the node is relevant.
12590         (ipcp_insert_stage): Check that the node is relevant.  Check there is
12591         an info for every node and edge.
12592         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
12593         (ipa_print_all_tree_maps): Likewise and a new variable info.
12594         (ipa_print_all_params_modified): Likewise.
12595         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
12596
12597 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
12598
12599         PR target/25343
12600         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
12601
12602 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
12603
12604         PR rtl-optimization/36753
12605         * fwprop.c (use_killed_between): Don't shortcut
12606         single-definition global registers.
12607
12608 2008-07-16  Jan Hubicka  <jh@suse.cz>
12609
12610         * cgraph.h (varpool_empty_needed_queue): Declare.
12611         * cgraphunit.c (output_in_order): Mark all variables as needed;
12612         empty the queue.
12613         * varpool.c (varpool_assemble_node): Update debug queue.
12614         (varpool_assemble_pending_decls): Don't do it here.
12615         (varpool_empty_needed_queue):  New function.
12616
12617 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12618
12619         * recog.c (peephole2_optimize): Fix formatting.
12620
12621 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12622
12623         * c-pch.c (get_ident): Avoid C++ keywords.
12624         * combine-stack-adj.c (single_set_for_csa): Likewise.
12625         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
12626         output_asm_insn): Likewise.
12627         * reload.c (push_secondary_reload, find_reusable_reload,
12628         push_reload, combine_reloads, find_reloads,
12629         debug_reload_to_stream): Likewise.
12630         * reload.h (struct reload): Likewise.
12631         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
12632         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
12633         emit_output_reload_insns): Likewise.
12634         * targhooks.c (default_secondary_reload): Likewise.
12635         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
12636
12637 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12638
12639         * recog.c (validate_change_1, validate_change,
12640         validate_unshare_change, validate_replace_rtx_1, struct
12641         funny_match, constrain_operands, peephole2_optimize): Avoid C++
12642         keywords.
12643         * reload.c (push_secondary_reload, secondary_reload_class,
12644         scratch_reload_class, find_valid_class, find_reusable_reload,
12645         push_reload, find_dummy_reload, find_reloads_address_1,
12646         find_reloads_address_part, find_equiv_reg): Likewise.
12647         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
12648         choose_reload_regs): Likewise.
12649         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
12650         Likewise.
12651         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
12652         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
12653         * sched-rgn.c (concat_INSN_LIST): Likewise.
12654         * stor-layout.c (mode_for_size, mode_for_size_tree,
12655         smallest_mode_for_size): Likewise.
12656
12657 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12658
12659         * cfg.c (dump_reg_info): Avoid C++ keywords.
12660         * dwarf2asm.c (dw2_force_const_mem,
12661         dw2_asm_output_encoded_addr_rtx): Likewise.
12662         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
12663         * expmed.c (expand_shift): Likewise.
12664         * global.c (find_reg): Likewise.
12665         * graph.c (draw_edge): Likewise.
12666         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
12667         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
12668         widen_clz, widen_bswap, expand_parity, expand_unop,
12669         emit_cmp_and_jump_insn_1): Likewise.
12670         * postreload.c (reload_cse_simplify_operands): Likewise.
12671         * ra.h (add_neighbor): Likewise.
12672         * reg-stack.c (remove_regno_note, change_stack): Likewise.
12673         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
12674         record_reg_classes, copy_cost, record_address_regs,
12675         invalid_mode_change_p): Likewise.
12676         * regrename.c (regrename_optimize, scan_rtx_reg,
12677         dump_def_use_chain, find_oldest_value_reg,
12678         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
12679
12680 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12681
12682         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
12683         MASK_POWERPC64 for power4 in previous commit.
12684
12685 2008-07-16  Olivier Hainque  <hainque@adacore.com>
12686
12687         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
12688         instead of bare conversion to cast const-ness away.
12689
12690 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
12691
12692         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
12693         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
12694         * config/xtensa/xtensa.c (xtensa_function_value): New function.
12695         (TARGET_FUNCTION_VALUE): Define.
12696
12697 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12698
12699         * config/rs6000/rs6000.c (processor_target_table): Add
12700         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
12701
12702 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12703
12704         PR target/36827
12705         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12706         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12707         m32c_legitimize_reload_address.
12708
12709 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
12710
12711         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
12712         DECL_IN_SYSTEM_HEADER in sync.
12713
12714 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
12715
12716         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
12717         * tree-ssa-pre.c (pre_expr_eq): Ditto
12718         (get_constant_for_value_id): Take a type as an argument.
12719         (fully_constant_expression): Pass in type.
12720         (find_or_generate_expression): Short circuit constant case.
12721         (create_expression_by_pieces): Remove special casing of
12722         pointer_plus.
12723         (do_regular_insertion): Short circuit constant case.
12724         (do_partial_partial_insertion): Ditto.
12725
12726 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12727
12728         PR target/36782
12729         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
12730
12731 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
12732
12733         * config/xtensa/libgcc-xtensa.ver: New file.
12734         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
12735
12736 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12737
12738         * df-problems.c (df_set_note): Avoid C++ keywords.
12739         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
12740         * dse.c (record_store, remove_useless_values): Likewise.
12741         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
12742         gen_reg_rtx_offset, operand_subword, change_address_1,
12743         change_address, adjust_address_1, offset_address,
12744         widen_memory_access, emit_copy_of_insn_after): Likewise.
12745         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
12746         * fwprop.c (should_replace_address, propagate_rtx_1,
12747         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
12748         Likewise.
12749         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
12750         gcse_emit_move_after, update_ld_motion_stores): Likewise.
12751         * lcm.c (compute_insert_delete, pre_edge_lcm,
12752         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
12753         * lower-subreg.c (resolve_reg_notes): Likewise.
12754         * mode-switching.c (optimize_mode_switching): Likewise.
12755
12756 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12757
12758         * bt-load.c (add_btr_def, migrate_btr_def,
12759         branch_target_load_optimize): Avoid C++ keywords.
12760         * caller-save.c (insert_restore, insert_save, insert_one_insn):
12761         Likewise.
12762         * combine.c (subst, simplify_set, make_extraction,
12763         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
12764         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
12765         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
12766
12767 2008-07-15  Richard Guenther  <rguenther@suse.de>
12768
12769         PR middle-end/36369
12770         * c-common.c (strict_aliasing_warning): Do not warn for
12771         TYPE_REF_CAN_ALIAS_ALL pointers.
12772         (c_common_get_alias_set): may_alias types are not special.
12773         * tree.c (build_pointer_type_for_mode): Look up the may_alias
12774         attribute and set can_ref_all accordingly.
12775         (build_reference_type_for_mode): Likewise.
12776         * doc/extend.texi (may_alias): Clarify.
12777
12778 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12779
12780         PR target/36780
12781         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12782         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12783
12784 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12785
12786         PR target/31568
12787         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
12788         gcc_assert, instead call output_operand_lossage.
12789
12790 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
12791
12792         * builtins.c (std_canonical_va_list): Treat structure based
12793         va_list types.
12794
12795 2008-07-15  Ben Elliston  <bje@au.ibm.com>
12796
12797         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
12798
12799 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
12800
12801         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
12802         is set.
12803
12804 2008-07-14  Jan Hubicka  <jh@suse.cz>
12805
12806         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
12807         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
12808         fix predicates and constraints.
12809         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
12810         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
12811
12812 2008-07-14  Doug Kwan  <dougkwan@google.com>
12813
12814         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
12815         additional option file arm/eabi.opt.
12816         * config/arm/eabi.h (File): New configuration file for EABI targets.
12817         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
12818         SUBSUBTARGET_EXTRA_SPECS.
12819         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
12820         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
12821         from STARTFILE_SPEC so that it can be referenced in an override.
12822         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
12823         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
12824         can be referenced in an override.
12825         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
12826         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
12827         so that it can be referenced in an override.
12828         (LINK_SPEC): Use BPABI_LINK_SPEC.
12829         * config/arm/eabi.opt (File): New.
12830
12831 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12832
12833         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
12834         (FIXED_VALUE_H): New variable.
12835         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
12836         input.h, fixed-value.h.
12837         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
12838         (BASIC_BLOCK_H): Use $(BITMAP_H).
12839         (FUNCTION_H): Add varray.h.
12840         (IPA_REFERENCE_H): Use $(BITMAP_H).
12841         (CGRAPH_H): Add $(BASIC_BLOCK_H).
12842         (DF_H): Use $(BITMAP_H).
12843         (GGC_H): Add statistics.h.
12844         (INSN_ADDR_H): New.
12845         (INSN_ATTR_H): Use it.
12846         (SYSTEM_H): Add safe-ctype.h, filenames.h.
12847         (INPUT_H): New.
12848         (SYMTAB_H): Add $(OBSTACK_H).
12849         (CPP_INTERNAL_H): New.
12850         (TREE_DUMP_H): Add tree-pass.h.
12851         (TREE_FLOW_H): Use $(BITMAP_H)
12852         (PRETTY_PRINT_H): Use $(INPUT_H).
12853         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
12854         (GSTAB_H): New.
12855         (BITMAP_H): New.
12856         (many object files): Fix lots of header dependencies throughout.
12857
12858 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12859
12860         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
12861         New macros.
12862         (s-gtyp-input): Use them to write tmp-gi.list.
12863         (echo_to_gi.list): Remove.
12864
12865 2008-07-14  Richard Guenther  <rguenther@suse.de>
12866
12867         * tree-ssa-sccvn.c (pre_info): Remove.
12868         (switch_to_PRE_table): Likewise.
12869         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
12870         (set_hashtable_value_ids): Do not create value-ids for the
12871         optimistic tables.
12872         (run_scc_vn): Remove double test.  Remove bogus special-case
12873         in value-number printing.
12874         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
12875         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
12876         SSA_NAME_VALUE.
12877         * tree-flow-inline.h (get_value_handle): Remove.
12878         * tree-flow.h (get_value_handle): Remove.
12879
12880 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12881
12882         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
12883         in which we generate arithmetics is not a subrange.
12884
12885 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12886
12887         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
12888
12889 2008-07-14  Richard Guenther  <rguenther@suse.de>
12890
12891         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
12892
12893 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12894
12895         PR target/36745
12896         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
12897         reload for symbol refs moved to r0 with -fPIC.
12898         (legitimize_pic_address): Use the target register as temporary
12899         reg if possible.
12900         (emit_symbolic_move): Adjust comment.
12901         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
12902         New expanders.
12903
12904 2008-07-14  Ben Elliston  <bje@au.ibm.com>
12905
12906         * c-common.h (C_CPP_HASHNODE): New macro.
12907         * coretypes.h (struct cpp_token): Forward declare.
12908         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
12909         the context-sensitive keyword method.
12910         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
12911         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
12912         expand_bool_pixel): New.
12913         (altivec_categorize_keyword): New function.
12914         (init_vector_keywords): New function.
12915         (rs6000_macro_to_expand): Likewise.
12916         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
12917         compiling an ISO C dialect.
12918
12919 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
12920
12921         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
12922         (create_expression_by_pieces): Fix typo.
12923         (do_regular_insertion): Use debug counter here too.
12924
12925 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
12926
12927         PR target/35492.
12928         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
12929         CONST_OK_FOR_LETTER_P.  All port-local users changed.
12930         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
12931         implement Kp matching power-of-two.
12932         (CONSTRAINT_LEN): Define to match.
12933         * config/cris/cris.md: Replace all use of constraint K with Kc.
12934         ("*btst*): Use Kp for operand 0 of last alternative.
12935
12936 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12937
12938         PR testsuite/36440
12939         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
12940         and quad formats.
12941
12942 2008-07-13  Jan Hubicka  <jh@suse.cz>
12943
12944         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
12945         to be mangled too.
12946
12947 2008-07-13  Richard Guenther  <rguenther@suse.de>
12948
12949         PR middle-end/36811
12950         * langhooks.c (lhd_print_error_function): Deal with recursive
12951         BLOCK trees.
12952
12953 2008-07-12  Jan Hubicka  <jh@suse.cz>
12954
12955         * cgraph.c (assembler_name_hash): New static var.
12956         (hash_node_by_assembler_name, eq_assembler_name): New.
12957         (cgraph_node_for_asm): Use hashtable.
12958         (cgraph_remove_node): Maintain hashtable.
12959         (change_decl_assembler_name): Sanity check that names are not changing
12960         after aliasing was processed.
12961         * cgraph.h (varpoon_node): Add next GGC marker.
12962         * tree.c (decl_assembler_name_equal): Constify.
12963         (decl_assembler_name_hash): New.
12964         * tree.h (decl_assembler_name_equal): Constify.
12965         (decl_assembler_name_hash): Update.
12966
12967 2008-07-12  David Daney  <ddaney@avtrex.com>
12968
12969         * config/mips/driver-native.c (host_detect_local_cpu): Handle
12970         sb1 and r5000 cpus.
12971
12972 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
12973
12974         * doc/md.texi: Document the MIPS "v" constraint.
12975         * config/mips/mips.h (reg_class): Revert last change.
12976         (REG_CLASS_NAMES): Likewise.
12977         (REG_CLASS_CONTENTS): Likewise.
12978         * config/mips/mips.c (mips_regno_to_class): Likewise.
12979         * config/mips/constraints.md (v): Likewise, but add documentation.
12980         Add a comment to say that this constraint should not be used in
12981         gcc code.
12982
12983 2008-07-11  DJ Delorie  <dj@redhat.com>
12984
12985         * config/h8300/h8300.md (length): Fix branch offset limit.
12986
12987 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
12988
12989         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
12990         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
12991         (avr_hard_regno_scratch_ok): New function.
12992         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12993         * config/avr/avr.md (all peepholes that request a scratch register):
12994         Remove avr_peep2_scratch_safe use.
12995
12996 2008-07-11  Tom Tromey  <tromey@redhat.com>
12997             Ian Lance Taylor  <iant@google.com>
12998
12999         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
13000         (struct c_common_resword): Define.
13001         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
13002         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
13003         (c_common_reswords, num_c_common_reswords): Declare.
13004         * c-common.c (c_common_reswords): New global const array.
13005         (num_c_common_reswords): New const int.
13006         * c-parser.c (struct resword, reswords): Don't define.
13007         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
13008         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
13009         than reswords.  If warning about C++ keywords, give them a special
13010         RID code.
13011         (c_lex_one_token): Warn about C++ keywords.  Call
13012         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
13013         (c_parser_external_declaration): Look for RID_xxx rather than
13014         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
13015         (c_parser_statement_after_labels): Likewise.
13016         (c_parser_objc_class_instance_variables): Likewise.
13017         (c_parser_objc_class_declaration): Likewise.
13018         (c_parser_objc_try_catch_statement): Likewise.
13019         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
13020         (declspecs_add_type): Likewise.
13021
13022 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
13023
13024         * ggc-page.c (alloc_page):
13025         Substituting xmalloc, xcalloc with
13026         XNEWVEC and XCNEWVAR macros which add the
13027         needed casts.
13028
13029 2008-07-11  Richard Guenther  <rguenther@suse.de>
13030
13031         PR tree-optimization/36765
13032         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
13033         aliases from HEAP vars to SMTs.
13034
13035 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13036
13037         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
13038         * configure.ac (loose_warn): Move -Wc++-compat from here...
13039         (strict_warn): ...to here.
13040         * configure: Regenerate.
13041
13042 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
13043
13044         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
13045         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
13046         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
13047         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
13048         excluding more specific h8300-*-* and sh-*-* targets.
13049
13050 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
13051
13052         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
13053         (eliminate): Ditto.
13054         (execute_pre): Call loop_optimizer_finalize in early exit.
13055
13056 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
13057
13058         PR middle-end/36790
13059         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
13060         uids in the bitmap, not just VAR_DECL uids.
13061
13062         PR rtl-optimization/36419
13063         * combine-stack-adj.c (adjust_frame_related_expr): New function.
13064         (combine_stack_adjustments_for_block): Call it if needed.  Delete
13065         correct insn.
13066         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
13067         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
13068         prologue sp adjustment.
13069
13070 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
13071
13072         PR other/28322
13073         * opts.c (print_ignored_options): Report postponed diagnostics for
13074         unknown -Wno-* options as warnings, not errors.
13075         (postpone_unknown_option_error): Renamed to...
13076         (postpone_unknown_option_warning): ... this.
13077
13078 2008-07-09  Doug Kwan  <dougkwan@google.com>
13079
13080         Revert:
13081         2008-07-08  Doug Kwan  <dougkwan@google.com>
13082
13083         * config/arm/arm.opt (mandroid): New option.
13084         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13085         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13086         (CC1_SPEC): Same.
13087         (CC1PLUS_SPEC): Same.
13088         (LIB_SPEC): Same.
13089         (STARTFILE_SPEC): Same.
13090         (ENDFILE_SPEC): Same.
13091         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13092         used.
13093
13094 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
13095
13096         PR target/35802
13097         * config/mips/mips.h (reg_class): Remove V1_REG.
13098         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13099         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
13100         instead of V1_REGS.
13101         (mips_get_tp): New function.
13102         (mips_legitimize_tls_address): Use it.
13103         * config/mips/constraints.md (v): Delete.
13104         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
13105         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
13106         After reload, split into a move and ...
13107         (*tls_get_tp_<mode>_split): ...this new instruction.
13108
13109 2008-07-09  David Daney  <ddaney@avtrex.com>
13110
13111         * config/mips/driver-native.c: Include coretypes.h and tm.h.
13112
13113 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
13114
13115         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
13116         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
13117         Add c argument.
13118         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
13119         htab_delete should be called.  Don't free c.
13120         (lookup_tmp_var): Create temp_htab lazily.
13121         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
13122         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
13123         callers.
13124         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
13125         lower_omp_ordered, lower_omp_critical, lower_omp_for,
13126         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
13127         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
13128         * tree-sra.c (generate_element_init): Likewise.
13129         * tree-mudflap.c (execute_mudflap_function_ops,
13130         execute_mudflap_function_decls): Likewise.
13131         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
13132         * tree-gimple.h (struct gimplify_ctx): New type.
13133         (push_gimplify_context): Adjust prototype.
13134
13135 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
13136
13137         * tree-ssa-pre.c (phi_translate_1): Update placement of
13138         add_to_value calls.
13139
13140 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
13141
13142         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
13143         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
13144         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
13145         * targhooks.c (default_hard_regno_scratch_ok): New function.
13146         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
13147         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
13148         * recog.c:  Include "target.h".
13149         (peep2_find_free_register): Add check for global regs. Add target
13150         specific check.
13151         * Makefile.in (recog.o): Depend on target.h.
13152
13153 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13154
13155         * config/sh/sh.c (sh_canonical_va_list_type): New.
13156         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
13157
13158 2008-07-09  Raksit Ashok <raksit@google.com>
13159
13160         * doc/invoke.texi (Option Summary): Mention new option
13161         -Wdisallowed-function-list=...
13162         (Warning Options): Document -Wdisallowed-function-list=...
13163         * common.opt (Wdisallowed-function-list=): New flag.
13164         * flags.h (warn_disallowed_functions): External definition of new
13165         boolean warning flag.
13166         (warn_if_disallowed_function_p): Declare new function.
13167         * opts.c (warning_disallowed_functions): New static variable.
13168         (warn_disallowed_functions): New boolean warning flag.
13169         (warn_if_disallowed_function_p): New function.
13170         (add_comma_separated_to_vector): Rename
13171         add_instrument_functions_exclude_list to this.
13172         (common_handle_option): Handle new option. Rename calls to
13173         add_instrument_functions_exclude_list into calls to
13174         add_comma_separated_to_vector.
13175         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
13176         based on flag warn_disallowed_functions.
13177
13178 2008-07-09  Christian Bruel  <christian.bruel@st.com>
13179
13180         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
13181          instead of get_attr_length.
13182
13183 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13184
13185         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
13186         keywords.
13187         * genemit.c (gen_insn): Likewise.
13188         * gengtype.c (note_def_vec): Likewise.
13189         * gengtype.h (note_def_vec): Likewise.
13190         * genoutput.c (struct data, output_insn_data, process_template,
13191         gen_expand, gen_split, note_constraint): Likewise.
13192         * genrecog.c (new_decision, add_to_sequence, factor_tests,
13193         make_insn_sequence): Likewise.
13194         * gensupport.c (record_insn_name): Likewise.
13195
13196 2008-07-08  Doug Kwan  <dougkwan@google.com>
13197
13198         * config/arm/arm.opt (mandroid): New option.
13199         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13200         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13201         (CC1_SPEC): Same.
13202         (CC1PLUS_SPEC): Same.
13203         (LIB_SPEC): Same.
13204         (STARTFILE_SPEC): Same.
13205         (ENDFILE_SPEC): Same.
13206         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13207         used.
13208
13209 2008-07-08  Raksit Ashok  <raksit@google.com>
13210
13211         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
13212         (set_storage_via_setmem): Fix expected_align parameter.
13213         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
13214         missing from the list.
13215         * doc/md.texi (movmem): Explicitly state that expected alignment is
13216         to be expressed in bytes.
13217         (setmem): Explicitly state that expected alignment is to be expressed
13218         in bytes.
13219
13220 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
13221
13222         * reload.c (find_reloads_subreg_address): Do not require validity
13223         of address in original mode before reloading address.
13224
13225 2008-07-07  Tianwei Sheng  <tianweis@google.com>
13226
13227         * df-core.c (df_remove_problem): Adjust the access to avoid out of
13228         bounds array access.
13229
13230 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
13231
13232         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
13233
13234 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
13235
13236         Fix PR tree-optimization/23455
13237         Fix PR tree-optimization/35286
13238         Fix PR tree-optimization/35287
13239         * Makefile.in (OBJS-common): Remove tree-vn.o.
13240         (tree-vn.o): Remove.
13241         * dbgcnt.def: Add treepre_insert debug counter.
13242         * gcc/tree-flow.h (add_to_value): Updated for other changes.
13243         (debug_value_expressions): Ditto.
13244         (print_value_expressions): Ditto.
13245         * tree-pretty-print.c (dump_generic_node): Updated for
13246         VALUE_HANDLE removal.
13247         * tree-ssa-dom.c (record_equality): Ditto.
13248         (cprop_operand): Ditto.
13249         (lookup_avail_expr): Ditto.
13250         * tree-ssa-threadedge.c
13251         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
13252         (simplify_control_stmt_condition): Ditto.
13253         * tree.c (tree_code_size): Ditto.
13254         (tree_node_structure): Ditto.
13255         (iterative_hash_expr): Ditto.
13256         * tree.def: Ditto.
13257         * tree.h (VALUE_HANDLE_ID): Ditto.
13258         (VALUE_HANDLE_EXPR_SET): Ditto.
13259         (struct tree_value_handle): Ditto.
13260         (union tree_node): Ditto.
13261         * treestruct.def: Ditto.
13262         * tree-vn.c: Removed.
13263         * tree-ssa-pre.c: Rewritten entirely.
13264         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
13265         (constant_value_ids): Ditto.
13266         (vn_nary_op_t): Moved to header.
13267         (vn_phi_t): Ditto.
13268         (vn_reference_op_t): Ditto
13269         (vn_reference_t): Ditto.
13270         (next_value_id): New variable.
13271         (VN_INFO): Add an assert.
13272         (vn_constant_eq): New function.
13273         (vn_constant_hash): Ditto.
13274         (get_or_alloc_constant_value_id): Ditto.
13275         (value_id_constant_p): Ditto.
13276         (vn_reference_compute_hash): De-staticify.
13277         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
13278         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
13279         (valueize_refs): Update opcode if it changes from ssa name to constant.
13280         (vn_reference_lookup_1): Add new argument.
13281         (vn_reference_lookup):  Ditto.
13282         (vn_reference_lookup_pieces): New function.
13283         (vn_reference_insert): Add return type. Modify to deal with value ids.
13284         (vn_reference_insert_pieces):  New function.
13285         (vn_nary_op_compute_hash): De-staticify.
13286         (vn_nary_op_eq): Ditto.
13287         (vn_nary_op_lookup_pieces): New function.
13288         (vn_nary_op_lookup): Add new argument.
13289         (vn_nary_op_insert_pieces): New function.
13290         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
13291         (vn_phi_insert): Ditto.
13292         (visit_unary_op): Update for callee changes.
13293         (visit_binary_op): Ditto.
13294         (visit_reference_op_load): Ditto.
13295         (visit_reference_op_store): Ditto.
13296         (init_scc_vn): Init next_value_id, constant_to_value_id and
13297         constant_value_ids.
13298         (free_scc_vn): Free them.
13299         (set_hashtable_value_ids): New function.
13300         (run_scc_vn): Use it.
13301         (get_max_value_id): New function.
13302         (get_next_value_id): Ditto.
13303         (expressions_equal_p): Moved from tree-vn.c
13304         (sort_vuses): Ditto.
13305         (sort_vuses_heap): Ditto.
13306         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
13307         above).
13308         * tree.c (iterative_hash_hashval_t): Made non-static
13309         * tree.h (iterative_hash_hashval_t): Declare it.
13310
13311 2008-07-08  Martin Jambor  <mjambor@suse.cz>
13312
13313         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
13314         instead of ipa_create_node_params.
13315         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
13316         ipa_check_create_edge_args, free them with
13317         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
13318
13319         * ipa-prop.c: Include flags.h and tree-inline.h.
13320         (ipa_node_params_vector): New variable.
13321         (ipa_edge_args_vector): New variable.
13322         (edge_removal_hook_holder): New variable.
13323         (node_removal_hook_holder): New variable.
13324         (edge_duplication_hook_holder): New variable.
13325         (node_duplication_hook_holder): New variable.
13326         (ipa_detect_param_modifications): Check for presence of modified flags.
13327         (ipa_compute_jump_functions): Check for presence of jump functions.
13328         (ipa_free_edge_args_substructures): New function.
13329         (ipa_create_node_params): Removed.
13330         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
13331         (ipa_free_node_params_substructures): New function.
13332         (ipa_free_all_node_params): Changed to deallocate the on-the-side
13333         vector.
13334         (ipa_edge_removal_hook): New function.
13335         (ipa_node_removal_hook): New function.
13336         (duplicate_array): New function.
13337         (ipa_edge_duplication_hook): New function.
13338         (ipa_node_duplication_hook): New function.
13339         (ipa_register_cgraph_hooks): New function.
13340         (ipa_unregister_cgraph_hooks): New function.
13341         (free_all_ipa_structures_after_ipa_cp): New function.
13342
13343         * ipa-prop.h: Include vec.h.
13344         (ipa_node_params_t): New typedef with vector types for it.
13345         (ipa_edge_args_t):  New typedef with vector types for it.
13346         (IPA_NODE_REF): Changed to access an on-the-side vector.
13347         (IPA_EDGE_REF): Changed to access an on-the-side vector.
13348         (ipa_check_create_node_params): New function.
13349         (ipa_check_create_edge_args): New function.
13350
13351         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
13352         all users.
13353
13354 2008-07-07  Tom Tromey  <tromey@redhat.com>
13355
13356         * configure, config.in: Rebuilt.
13357         * configure.ac: Don't check for scandir or alphasort.
13358
13359 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13360
13361         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
13362         types immediately after creating them.
13363
13364 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13365
13366         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
13367
13368 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
13369
13370         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
13371         dump_constraint_graph.
13372         (dump_constraint_edge): New function.
13373         (dump_constraint_graph): New function.
13374         (debug_constraint_graph): New function.
13375         (dump_constraint): Removed useless comparison.
13376         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
13377         (dump_constraint_graph): Declare.
13378         (debug_constraint_graph): Declare.
13379         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
13380
13381 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
13382
13383         * config/i386/i386.c (is_va_list_char_pointer): New.
13384         (ix86_va_start): Replace compare with ms_va_list_type_node
13385         by is_va_list_char_pointer.
13386         (ix86_gimplify_va_arg): Likewise.
13387
13388 2008-07-07  Martin Jambor  <mjambor@suse.cz>
13389
13390         * cgraph.c (cgraph_edge_max_uid): New variable.
13391         (struct cgraph_edge_hook_list): New type.
13392         (struct cgraph_node_hook_list): New type.
13393         (struct cgraph_2edge_hook_list): New type.
13394         (struct cgraph_2node_hook_list): New type.
13395         (first_cgraph_edge_removal_hook): New variable.
13396         (first_cgraph_node_removal_hook): New variable.
13397         (first_cgraph_edge_duplicated_hook): New variable.
13398         (first_cgraph_node_duplicated_hook): New variable.
13399         (cgraph_add_edge_removal_hook): New function.
13400         (cgraph_remove_edge_removal_hook): New function.
13401         (cgraph_call_edge_removal_hooks):  New function.
13402         (cgraph_add_node_removal_hook):  New function.
13403         (cgraph_remove_node_removal_hook):  New function.
13404         (cgraph_call_node_removal_hooks):  New function.
13405         (cgraph_add_edge_duplication_hook):  New function.
13406         (cgraph_remove_edge_duplication_hook):  New function.
13407         (cgraph_call_edge_duplication_hooks):  New function.
13408         (cgraph_add_node_duplication_hook):  New function.
13409         (cgraph_remove_node_duplication_hook):  New function.
13410         (cgraph_call_node_duplication_hooks):  New function.
13411         (cgraph_create_edge): Assign to edge uid.
13412         (cgraph_remove_edge): Call edge removal hooks.
13413         (cgraph_node_remove_callees): Call edge removal hooks.
13414         (cgraph_node_remove_callers): Call edge removal hooks.
13415         (cgraph_remove_node): Call node removal hooks.
13416         (cgraph_clone_edge): Call edge duplication hooks.
13417         (cgraph_clone_node): Call node duplication hooks.
13418
13419         * cgraph.h (cgraph_edge): New field uid.
13420         (cgraph_edge_hook): New type.
13421         (cgraph_node_hook): New type.
13422         (cgraph_2edge_hook): New type.
13423         (cgraph_2node_hook): New type.
13424
13425 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
13426
13427         * config.in: Regenerate.
13428
13429 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
13430
13431         * gcc.c (print_sysroot): New.
13432         (option_map, display_help, process_command): Handle the
13433         -print-sysroot option.
13434         (main): Print the sysroot if requested.
13435         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
13436
13437 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13438
13439         PR target/34780
13440         * unwind-pe.h (size_of_encoded_value): add attribute unused.
13441
13442 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
13443
13444         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
13445         (assign_parm_setup_block_p): Also check mode of entry_parm.
13446
13447 2008-07-07  Richard Guenther  <rguenther@suse.de>
13448
13449         * tree-ssa-structalias.h (set_used_smts): Remove.
13450         * tree-ssa-structalias.c (used_smts): Likewise.
13451         (set_used_smts): Likewise.
13452         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
13453         call to set_used_smts.
13454
13455 2008-07-07  Richard Guenther  <rguenther@suse.de>
13456
13457         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
13458         (new_var_info): Set it to false.
13459         (solution_set_add): Correctly handle pointers outside a var and
13460         inside a field.
13461         (type_safe): Treat variables with is_full_var properly.
13462         (do_sd_constraint): Likewise.
13463         (do_ds_constraint): Likewise.
13464         (process_constraint): Remove zeroing offset for !use_field_sensitive.
13465         (get_constraint_for_ptr_offset): New function.
13466         (get_constraint_for_component_ref): For addresses at least include
13467         the last field of the variable.  Handle is_full_vars properly.
13468         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
13469         (handle_ptr_arith): Remove.
13470         (find_func_aliases): Simplify assignment handling.
13471         (create_function_info_for): For parameter and result varinfos set
13472         is_full_var flag.
13473         (create_variable_info_for): Set is_full_var flag whenever we
13474         just created a single varinfo for a decl.
13475         (init_alias_vars): Initialize use_field_sensitive from
13476         max-fields-for-field-sensitive parameter.
13477
13478 2008-07-07  Richard Guenther  <rguenther@suse.de>
13479
13480         PR tree-optimization/36713
13481         * tree-flow-inline.h (is_call_used): New function.
13482         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
13483         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
13484         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
13485
13486 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13487
13488         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
13489
13490 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
13491
13492         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
13493
13494 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13495             Nathan Sidwell  <nathan@codesourcery.com>
13496
13497         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
13498         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
13499         tmake_file.
13500         * config/m68k/t-linux: New.
13501         * doc/install.texi: Document m68k-*-linux is now multilibbed by
13502         default.
13503
13504 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
13505
13506         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
13507         * config/m68k/m68k-devices.def: Remove multilibs that only differ
13508         by MAC/EMAC.
13509
13510 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13511
13512         * gcc.c (execute): Fix -Wc++-compat warning.
13513
13514 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
13515
13516         PR target/36720
13517         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
13518         constant for little endian.
13519
13520 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
13521
13522         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
13523         mips_base_mips16 instead of TARGET_MIPS16.
13524         (mips_base_mips16): Declare.
13525         * config/mips/mips.c (mips_base_mips16): Make global.
13526         (was_mips16_p): Remove GTY marker.
13527         (was_mips16_pch_p): New variable.
13528         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
13529         (mips_override_options): Force to non-MIPS16 mode initially.
13530         Do not complain about MIPS16 PIC incompatibilities here.
13531         Only allow -mgpopt if -mexplicit-relocs is in force for
13532         non-MIPS16 code.
13533
13534 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
13535
13536         * configure.ac: Check for caddr_t, define to char * if not defined.
13537         * configure: Regenerate.
13538         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
13539         (mmap_gt_pch_use_address): Likewise.
13540         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
13541
13542 2008-07-06  Richard Guenther  <rguenther@suse.de>
13543
13544         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
13545         (new_var_info): Deal with it.
13546         (solution_set_add): Likewise.
13547         (bitpos_of_field): Make signed, fix.
13548         (struct fieldoff): Remove type and decl fields.  Make size field
13549         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
13550         flags.
13551         (fieldoff_compare): Deal with it.
13552         (push_fields_onto_fieldstack): Remove has_union argument, glob
13553         adjacent non-pointer fields together.
13554         (create_function_info_for): Do not set has_union.
13555         (create_variable_info_for): Simplify.
13556
13557 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
13558
13559         * config.gcc (extra_headers): Add cross-stdarg.h for target
13560         x86_64-*-* and i?86-*-*.
13561         * config/i386/cross-stdarg.h: New.
13562         * builtins.c (std_fn_abi_va_list): New.
13563         (std_canonical_va_list_type): New.
13564         (stabilize_va_list): Replace va_list_type_node use by
13565         mtarget.canonical_va_list_type.
13566         (gimplify_va_arg_expr): Likewise.
13567         (expand_builtin_va_copy): Replace va_list_type_node use by
13568         mtarget.fn_abi_va_list.
13569         * tree-sra.c (is_va_list_type): New helper.
13570         (decl_can_be_decomposed_p): Replace
13571         va_list_type_node use by is_va_list_type.
13572         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
13573         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
13574         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
13575         * config/i386/i386-protos.h (ix86_get_valist_type): New.
13576         (ix86_enum_va_list): New.
13577         * config/i386/i386.c (sysv_va_list_type_node): New.
13578         (ms_va_list_type_node): New.
13579         (ix86_function_type_abi): Remove sorry.
13580         (ix86_build_builtin_va_list_abi): New.
13581         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
13582         for 64-bit targets.
13583         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
13584         (ix86_init_builtins_va_builtins_abi): New.
13585         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
13586         for 64-bit targets.
13587         (ix86_handle_abi_attribute): New.
13588         (attribute_spec): Add sysv_abi and ms_abi.
13589         (ix86_fn_abi_va_list): New.
13590         (ix86_canonical_va_list_type): New.
13591         (ix86_enum_va_list): New.
13592         (TARGET_FN_ABI_VA_LIST): New.
13593         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13594         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
13595         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
13596         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13597         (TARGET_ENUM_VA_LIST): New.
13598         * expr.h (std_fn_abi_va_list): New.
13599         (std_canonical_va_list_type): New.
13600         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
13601         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13602         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
13603         TARGET_CANONICAL_VA_LIST_TYPE.
13604         * target.h (struct gcc_target): Add fn_abi_va_list hook
13605         and canonical_va_list_type hook.
13606
13607 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13608
13609         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
13610         integral and pointer types.
13611
13612 2008-07-04  Roger Sayle  <roger@eyesopen.com>
13613
13614         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
13615         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
13616
13617 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13618
13619         PR target/36684
13620         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
13621
13622 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
13623
13624         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
13625         build_gimple_modify_stmt.
13626         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
13627         gimple operand.  Use fold_build* instead of build*.
13628
13629 2008-07-04  Richard Guenther  <rguenther@suse.de>
13630
13631         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
13632         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
13633         properly to compute the reachability set if we do field-sensitive PTA.
13634         * invoke.texi (max-fields-for-field-sensitive): Document default.
13635         * opts.c (decode_options): Set max-fields-for-field-sensitive to
13636         100 for optimize >= 2.
13637
13638 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13639
13640         * ggc-zone.c (lookup_page_table_if_allocated,
13641         set_page_table_entry, zone_find_object_size, alloc_small_page,
13642         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
13643         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
13644         -Wc++-compat and/or -Wcast-qual warnings.
13645
13646 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
13647
13648         PR target/36634
13649         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
13650         pic_offset_table_rtx to be marked as used here.
13651         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
13652         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
13653         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
13654         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
13655         !TARGET_SECURE_PLT.
13656
13657 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13658
13659         * alloc-pool.c (hash_descriptor, eq_descriptor,
13660         alloc_pool_descriptor): Fix -Wc++-compat warnings.
13661         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
13662         Likewise.
13663         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
13664         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
13665         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
13666         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
13667         Likewise.
13668
13669 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
13670
13671         * tree-flow.h (loop_only_exit_p): Declare.
13672         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
13673         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
13674         the number of iterations if it is constant.  Otherwise, if this is the
13675         only possible exit of the loop, use the conservative estimate on the
13676         number of iterations of the entire loop if available.
13677
13678 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
13679
13680         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
13681         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
13682         Add synchronization functions.
13683         * config/sync.c: New file.
13684         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
13685         (LIBGCC_SYNC_CFLAGS): Likewise.
13686
13687 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
13688
13689         PR target/36710
13690         * config/i386/i386.md (mode): Add TF to "mode" attribute.
13691         (*pushtf_sse): New insn pattern.
13692         (pushtf splitters): New splitters.
13693
13694 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
13695
13696         PR middle-end/35736
13697         * predict.c (build_predict_expr): Use void_type_node for the tree
13698         type, instead of NULL_TREE.
13699
13700 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13701
13702         * config/i386/i386.c (contains_aligned_value_p): Return true
13703         for TCmode.
13704         (ix86_data_alignment): Align TCmode to 128bits.
13705         (ix86_local_alignment): Likewise.
13706
13707 2008-07-03  Andrew Haley  <aph@redhat.com>
13708
13709         PR bootstrap/33304
13710         * vec.h (VEC_TA): New.
13711         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
13712         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
13713         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
13714         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
13715         (C_COMMON_FIXED_TYPES): Remove first arg.
13716         (C_COMMON_FIXED_MODE_TYPES): Likewise.
13717         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
13718         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
13719         not to use empty macro arguments.
13720
13721 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
13722
13723         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
13724         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
13725         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
13726         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
13727         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
13728         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
13729         config/ia64/crtn.asm, config/m68hc11/larith.asm,
13730         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
13731         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
13732         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
13733         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
13734         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
13735         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
13736         config/rs6000/e500crtres64gpr.asm,
13737         config/rs6000/e500crtres64gprctr.asm,
13738         config/rs6000/e500crtrest32gpr.asm,
13739         config/rs6000/e500crtrest64gpr.asm,
13740         config/rs6000/e500crtresx32gpr.asm,
13741         config/rs6000/e500crtresx64gpr.asm,
13742         config/rs6000/e500crtsav32gpr.asm,
13743         config/rs6000/e500crtsav64gpr.asm,
13744         config/rs6000/e500crtsav64gprctr.asm,
13745         config/rs6000/e500crtsavg32gpr.asm,
13746         config/rs6000/e500crtsavg64gpr.asm,
13747         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
13748         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
13749         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
13750         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
13751         config/sparc/sol2-cn.asm: Remove .file directives.
13752
13753 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
13754
13755         * resource.c (mark_referenced_resources): Look inside
13756         UNSPEC_VOLATILEs and ASM_INPUTs.
13757
13758 2008-07-02  Ian Lance Taylor  <iant@google.com>
13759
13760         * rtlanal.c (add_reg_note): New function.
13761         * rtl.h (add_reg_note): Declare.
13762         * auto-inc-dec.c (attempt_change): Use add_reg_note.
13763         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
13764         * builtins.c (expand_builtin_longjmp): Likewise.
13765         (expand_builtin_nonlocal_goto): Likewise.
13766         * calls.c (emit_call_1, expand_call): Likewise.
13767         * cfgexpand.c (add_reg_br_prob_note): Likewise.
13768         * cfglayout.c (fixup_reorder_chain): Likewise.
13769         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
13770         (commit_one_edge_insertion): Likewise.
13771         * combine.c (move_deaths, distribute_notes): Likewise.
13772         * df-problems.c (df_set_note): Likewise.
13773         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
13774         (set_unique_reg_note): Likewise.
13775         (emit_copy_of_insn_after): Likewise.
13776         * expr.c (expand_expr_real): Likewise.
13777         * gcse.c (add_label_notes): Likewise.
13778         * haifa-sched.c (create_check_block_twin): Likewise.
13779         * jump.c (mark_jump_label_1): Likewise.
13780         * loop-doloop.c (add_test, doloop_modify): Likewise.
13781         * loop-unswitch.c (compare_and_jump_seq): Likewise.
13782         * lower-subreg.c (move_eh_region_note): Likewise.
13783         * optabs.c (emit_libcall_block): Likewise.
13784         * predict.c (predict_insn): Likewise.
13785         (combine_predictions_for_insn): Likewise.
13786         * recog.c (peephole2_optimize): Likewise.
13787         * regmove.c (try_auto_increment): Likewise.
13788         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
13789         * reload.c (find_reloads): Likewise.
13790         * reload1.c (fixup_eh_region_note): Likewise.
13791         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
13792         * reorg.c (delete_prior_computation): Likewise.
13793         (delete_computation, dbr_schedule): Likewise.
13794         * config/pa/pa.c (legitimize_pic_address): Likewise.
13795         * config/sh/sh.c (sh_reorg): Likewise.
13796
13797 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13798
13799         PR target/36669
13800         * config/libgcc-glibc.ver: Add %exclude.
13801         * config/m32r/libgcc-glibc.ver: Likwise.
13802         * config/s390/libgcc-glibc.ver: Likwise.
13803         * config/sh/libgcc-glibc.ver: Likwise.
13804         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
13805
13806         * config/i386/libgcc-glibc.ver: New.
13807
13808         * config/i386/libgcc-x86_64-glibc.ver: Removed.
13809
13810 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13811
13812         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
13813         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
13814         i[34567]86-*-linux*, x86_64-*-linux*.  Add
13815         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
13816         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
13817         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
13818         i[34567]86-*-linux*, x86_64-*-linux*.
13819
13820         * libgcc-std.ver: Add empty GCC_4.4.0.
13821
13822         * mkmap-symver.awk: Support multiple versions per symbol.
13823
13824         * config/i386/i386.c (ix86_init_builtins): Always define
13825         __builtin_fabsq and __builtin_copysignq with fallbacks.
13826         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
13827         and __builtin_copysignq if SSE2 isn't available.
13828
13829         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
13830         (LIBGCC2_TF_CEXT): Likwise.
13831         (TF_SIZE): Likwise.
13832
13833         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
13834
13835         * config/i386/sfp-machine.h: Moved to libgcc.
13836
13837         * config/i386/sfp-machine.h: New.
13838         * config/i386/t-linux: Likwise.
13839
13840         * config/i386/t-darwin: Remove softfp_wrap_start and
13841         softfp_wrap_end.
13842         * config/i386/t-darwin64: Likewise.
13843
13844         * config/i386/t-fprules-softfp64: Renamed to ...
13845         * config/i386/t-fprules-softfp: This.
13846
13847         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
13848         and softfp_wrap_end.
13849
13850 2008-07-02  Jason Merrill  <jason@redhat.com>
13851
13852         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
13853
13854         * tree.c (ctor_to_list): New fn.
13855         * tree.h: Declare it.
13856         (CONSTRUCTOR_ELT): New macro.
13857         (CONSTRUCTOR_NELTS): New macro.
13858
13859 2008-07-02  Richard Guenther  <rguenther@suse.de>
13860
13861         * tree-ssa-structalias.c (struct variable_info): Reorder
13862         to fill padding on 64bit hosts.  Make collapsed_to an int.
13863         (get_varinfo_fc): Deal with that.
13864         (new_var_info): Likewise.
13865         (collapse_rest_of_var): Likewise.
13866
13867 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
13868
13869         * doc/install.texi (--enable-java-home): Document.
13870         (--enable-aot-compile-rpm): Likewise.
13871         (--with-arch-directory): Likewise.
13872         (--with-os-directory): Likewise.
13873         (--with-origin-name): Likewise.
13874         (--with-arch-suffix): Likewise.
13875         (--with-jvm-root-dir): Likewise.
13876         (--with-jvm-jar-dir): Likewise.
13877         (--with-python-dir): Likewise.
13878
13879 2008-07-02  Richard Guenther  <rguenther@suse.de>
13880
13881         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
13882         from decls explicitly.  Merge operand checking from tuples.
13883
13884 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13885
13886         * tree-switch-conversion.c: Included timevar.h which I forgot before.
13887
13888 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13889
13890         * tree-switch-conversion.c: Included timevar.h
13891         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
13892
13893         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
13894
13895 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13896
13897         * tree-switch-conversion.c: Corrected various comments and
13898         whitespace issues
13899         (build_constructors): Fixed minor formatting mistakes.
13900
13901         * invoke.texi (Optimize Options): Corrected the
13902         switch-conversion-max-branch-ratio parameter.
13903
13904 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
13905
13906         * final.c (asm_insn_count): Return zero for an empty asm body.
13907
13908 2008-07-02  Richard Guenther  <rguenther@suse.de>
13909
13910         * bitmap.h (bitmap_set_bit): Return bool.
13911         (bitmap_clear_bit): Likewise.
13912         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
13913         write to the bitmap if it would.
13914         (bitmap_clear_bit): Likewise.
13915         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
13916         bitmap_set_bit return value.
13917         (add_pred_graph_edge): Likewise.
13918         (add_graph_edge): Likewise.
13919         (do_sd_constraint): Likewise.
13920         (do_ds_constraint): Likewise.
13921
13922 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13923
13924         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
13925         Fix -Wc++-compat and/or -Wcast-qual warnings.
13926         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
13927         gen_regparm_prefix): Likewise.
13928         * vmsdbgout.c (write_modbeg, lookup_filename,
13929         vmsdbgout_source_line, vmsdbgout_init): Likewise.
13930
13931 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
13932
13933         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
13934         defaults.h definition apply.
13935
13936 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13937
13938         * function.c (assign_parm_remove_parallels): New.
13939         (assign_parm_setup_block_p): Do not return true for non-BLKmode
13940         PARALLELs.
13941         (assign_parm_setup_block): Do not handle them.
13942         (assign_parm_setup_reg, assign_parm_setup_stack): Call
13943         assign_parm_remove_parallels.
13944
13945 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13946
13947         * c-typeck.c (convert_for_assignment): Use
13948         vector_targets_convertible_p.
13949         * c-common.c (vector_targets_convertible_p): New.
13950         * c-common.h (vector_targets_convertible_p): New prototype.
13951         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
13952         opaque_p_V2SI_type_node.
13953
13954 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
13955
13956         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
13957         RFmode constants.
13958
13959 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
13960
13961         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
13962         TFmode constants via two element DImode vector for hosts with
13963         HOST_BITS_PER_WIDE_INT < 64.
13964         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
13965         also for HOST_BITS_PER_WIDE_INT < 64.
13966
13967 2008-07-01  Richard Guenther  <rguenther@suse.de>
13968
13969         PR tree-optimization/36666
13970         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
13971         (get_constraint_exp_from_ssa_var): Split into ...
13972         (get_constraint_exp_for_temp): ... this ...
13973         (get_constraint_for_ssa_var): ... and that.
13974         Return constraint expressions for all touched sub-fields
13975         if the results address is not taken.
13976         (process_constraint): Remove assertion that aggregate
13977         assignments do not happen at this place.
13978         (get_constraint_for_component_ref): Add address_p argument.
13979         Return constraint expressions for all touched sub-fields
13980         if the results address is not taken.
13981         (do_deref): Use get_constraint_exp_for_temp.
13982         (get_constraint_for_1): Rename from ...
13983         (get_constraint_for): ... this.  Add the old function as wrapper.
13984         (do_structure_copy): Use get_constraint_for_1.
13985
13986 2008-07-01  Martin Jambor  <mjambor@suse.cz>
13987
13988         * Makefile.in (tree-switch-conversion.o): Add.
13989         (OBJS-common): Add tree-swtch-conversion.o.
13990         * passes.c (init_optimization_passes): Add pass_convert_switch.
13991         * tree-pass.h: (pass_convert_switch): Add.
13992         * tree-switch-conversion.c: New file.
13993         * gcc.dg/tree-ssa/cswtch.c: New testcase.
13994         * common.opt (ftree-cswtch): New option.
13995         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13996         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13997         * opts.c (decode_options): Set flag_tree_switch_conversion when
13998         optimization level is >= 2.
13999         * doc/invoke.texi (Optimize Options): Added description of
14000         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
14001
14002 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14003
14004         * config/darwin-driver.c (darwin_default_min_version): Fix
14005         -Wc++-compat warnings.
14006
14007 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
14008
14009         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
14010         of operand 0.
14011
14012 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14013
14014         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
14015
14016 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14017
14018         PR rtl-optimization/34744
14019         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
14020         (df_scan_free_internal): Free data structures not
14021         allocated in storage pools.
14022         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
14023         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
14024         df_scan_free_mws_vec.
14025         * dse.c (dse_step6): Free offset_map_p and offset_map_n
14026         unconditionally.
14027
14028 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
14029
14030         * config/i386/i386.c (contains_aligned_value_p): Return true
14031         for __float128.
14032         (ix86_function_arg_boundary): Return its natural boundary
14033         for __float128.
14034         (return_in_memory_32): Don't check TDmode.
14035         (ix86_split_to_parts): Support splitting into 4 parts and
14036         support TFmode for 32bit target.
14037         (ix86_split_long_move): Support splitting into 4 parts.
14038         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
14039         for SSE2.
14040         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
14041         (ix86_init_builtins): Here.
14042         (ix86_scalar_mode_supported_p): Always return true for TFmode.
14043         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
14044         'q' and 'w', respectively.
14045
14046         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
14047         TARGET_64BIT.
14048         (movtf_internal): Likewise.
14049         (<code>tf2): Likewise.
14050         (*absnegtf2_sse): Likewise.
14051         (copysign<mode>3): Likewise.
14052         (copysign<mode>3_const): Likewise.
14053         (copysign<mode>3_var): Likewise.
14054         (define_split UNSPEC_COPYSIGN): Likewise.
14055         * config/i386/sse.md (*nandtf3): Likewise.
14056         (<code>tf3): Likewise.
14057         (*<code>tf3): Likewise.
14058
14059 2008-06-30  Joey Ye  <joey.ye@intel.com>
14060             H.J. Lu  <hongjiu.lu@intel.com>
14061
14062         * global.c (compute_regsets): Set frame_pointer_needed here.
14063         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
14064
14065 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14066
14067         * doc/install.texi (specific): Expand Windows build notes.
14068
14069 2008-06-30  Ira Rosen  <irar@il.ibm.com>
14070
14071         PR tree-optimization/36648
14072         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
14073         number of prolog iterations by step. Fix the comment.
14074
14075 2008-06-30  Richard Guenther  <rguenther@suse.de>
14076
14077         PR middle-end/36671
14078         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
14079         handle calls from ECF_MALLOC functions.
14080         (handle_pure_call): ECF_MALLOC functions do not return
14081         call-used memory.
14082         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
14083
14084 2008-06-29  Andreas Schwab  <schwab@suse.de>
14085
14086         * config/m68k/m68k.c (print_operand): Always print a float
14087         constant in hex.
14088         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
14089         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
14090         Remove macros.
14091
14092         * config/rs6000/x-linux64: Remove never used file.
14093
14094 2008-06-29  Richard Guenther  <rguenther@suse.de>
14095
14096         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
14097         prototype.
14098         (struct alias_info): Move ...
14099         * tree-ssa-alias.c: ... here.
14100         (update_alias_info): Declare.
14101         (compute_may_aliases): Call it.
14102         (update_alias_info): New function.
14103         * tree-ssa-structalias.c (update_alias_info): Move ...
14104         * tree-ssa-alias.c (update_alias_info_1): ... here.
14105         * tree-ssa-structalias.c (process_constraint_1): Remove
14106         unused from_call argument.  Rename to ...
14107         (process_constraint): ... this.  Delete old wrapper.
14108         (make_constraint_to): Adjust callers.
14109         (handle_const_call): Likewise.
14110         (handle_pure_call): Likewise.
14111         (init_base_vars): Likewise.
14112         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
14113         (find_func_aliases): We don't need structure copies for
14114         complex types.
14115         (make_constraint_from_anything): Remove.
14116         (create_variable_info_for): For globals make constraints
14117         from escaped, not from anything.
14118         (compute_points_to_sets): Do not call update_alias_info.
14119         (ipa_pta_execute): Use make_constraint_from.
14120
14121 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14122
14123         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
14124         (bitmap.o-warn, dominance.o-warn): New.
14125         * configure.ac (cxx_compat_warn): Delete.
14126         (loose_warn): Add -Wcast-qual and -Wc++-compat.
14127         * system.h: Remove #pragma diagnostic for -Wcast-qual and
14128         -Wc++-compat.
14129         * configure: Regenerate.
14130
14131         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
14132         warnings.
14133
14134 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14135
14136         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
14137         * df-scan.c (df_notes_rescan): Likewise.
14138         * ggc-page.c (set_page_table_entry): Likewise.
14139         * intl.c (gcc_gettext_width): Likewise.
14140         * varasm.c (get_unnamed_section, get_noswitch_section,
14141         get_section): Likewise.
14142
14143 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
14144
14145         * regrename.c (build_def_use): Don't copy RTX.
14146
14147 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
14148
14149         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
14150         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
14151         punctuation.  Use @ref instead of @xref.
14152         (Function Names): Remove stray @display/@end display.
14153         (C++ Attributes): Use @ref instead of @xref.
14154         (Deprecated Features): Fix punctuation around @xref.
14155         (Backwards Compatibility): Likewise.
14156         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
14157
14158 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
14159
14160         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
14161         constants for E500 double.
14162
14163 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14164
14165         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
14166         element type of const_vector.
14167
14168 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
14169
14170         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
14171         Remove FLAGS_REG clobber from expander pattern.
14172         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
14173         (anddi3, andsi3, andhi3, andqi3): Ditto.
14174         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
14175         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
14176         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
14177         (ashlsi3, ashlhi3, ashlqi3): Ditto.
14178         (ashrsi3, ashrhi3, ashrqi3): Ditto.
14179         (lshrsi3, lshrhi3, lshrqi3): Ditto.
14180         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
14181         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
14182
14183 2008-06-28  Richard Guenther  <rguenther@suse.de>
14184
14185         * tree-ssa-structalias.c (callused_id, var_callused,
14186         callused_tree): Add.
14187         (handle_pure_call): New function.
14188         (find_func_aliases): Call it.
14189         (find_what_p_points_to): Handle the call-used set.
14190         (clobber_what_escaped): Likewise.
14191         (compute_call_used_vars): New function.
14192         (init_base_vars): Init the call-used variable.
14193         (do_sd_constraint): Do not propagate the solution from CALLUSED
14194         but use CALLUSED as a placeholder.
14195         (solve_graph): Likewise.
14196         * tree-flow-inline.h (gimple_call_used_vars): New function.
14197         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
14198         (compute_call_used_vars): Declare.
14199         * tree-ssa-alias.c (set_initial_properties): Call
14200         compute_call_used_vars.
14201         (reset_alias_info): Clear call-used variables.
14202         (add_call_clobber_ops): Assert we are not called for const/pure
14203         functions.  Remove handling of them.
14204         (add_call_read_ops): Handle pure functions by adding the
14205         call-used set of variables as VUSEs.
14206         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
14207         (delete_tree_ssa): Free it.
14208         * tree-dfa.c (remove_referenced_var): Clear the var from the
14209         call-used bitmap.
14210
14211 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
14212
14213         * tree.c (build_varargs_function_type_list): New.
14214         (build_function_type_list_1): New.
14215         (build_function_type_list): Use build_function_type_list_1.
14216         * tree.h (build_varargs_function_type_list): New.
14217
14218 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14219
14220         PR target/34856
14221         * config/spu/spu.c (spu_builtin_splats): Do not generate
14222         invalid CONST_VECTOR expressions.
14223         (spu_expand_vector_init): Likewise.
14224
14225 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
14226
14227         * optabs.c (libfunc_decls): New variable.
14228         (libfunc_decl_hash, libfunc_decl_eq): New functions.
14229         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
14230         for the same function twice.
14231
14232 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
14233
14234         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
14235         ix86_expand_binary_operator directly.
14236         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
14237         for operand 2.
14238         (*ashrti3_1): Ditto.
14239         (*lshrti3_1): Ditto.
14240         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
14241         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
14242         using only one splitter.  Conditionaly execute splitter before or
14243         after peephole2 pass.
14244         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
14245         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
14246         Use only one alternative in asm template.
14247         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
14248         in asm template.
14249         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
14250         "J" operand constraint for operand 2.
14251         (*ashldi3_cconly_rex64): Ditto.
14252         (*ashrdi3_cmp_rex64): Ditto.
14253         (*ashrdi3_cconly_rex64): Ditto.
14254         (*lshrdi3_cmp_rex64): Ditto.
14255         (*lshrdi3_cconly_rex64): Ditto.
14256         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
14257         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
14258         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
14259         gen_x86_shrd_1.
14260
14261 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
14262
14263         * gimplify.c (omp_is_private): Don't return true if decl is not
14264         already private on #pragma omp for or #pragma omp parallel for.
14265
14266         PR debug/36617
14267         * tree-cfg.c (struct move_stmt_d): Replace block field with
14268         orig_block and new_block fields.
14269         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
14270         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
14271         (move_block_to_fn): Replace vars_map and new_label_map arguments
14272         with struct move_stmt_d pointer.
14273         (replace_block_vars_by_duplicates): New function.
14274         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
14275         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
14276         all subblocks of ORIG_BLOCK to the new function.  Call
14277         replace_block_vars_by_duplicates.
14278         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
14279         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
14280         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
14281         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
14282         (expand_omp): Temporarily set input_location to the location of
14283         region's controlling stmt.
14284         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
14285         BIND_EXPR, push ctx->block_vars and gimplification vars into
14286         the BIND_EXPR and its block's BLOCK_VARS instead of directly
14287         into dest function.
14288         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
14289         there are any BLOCK_VARS.
14290         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
14291         OMP_PARALLEL or OMP_TASK stmt.
14292         (lower_omp): Save and restore input_location around the lower_omp_1
14293         call.
14294
14295 2008-06-27  Richard Guenther  <rguenther@suse.de>
14296
14297         PR tree-optimization/36400
14298         PR tree-optimization/36373
14299         PR tree-optimization/36344
14300         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
14301         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
14302         (update_alias_info): Remove call clobbering code.
14303         (make_constraint_to): New helper function.
14304         (make_escape_constraint): Likewise.
14305         (handle_rhs_call): Use it on all pointer containing arguments.
14306         Also mark the static chain escaped.
14307         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
14308         instead of ANYTHING.
14309         (make_constraint_from): New helper split out from ...
14310         (make_constraint_from_anything): ... here.
14311         (find_func_aliases): Add constraints for escape sites.
14312         (intra_create_variable_infos): Make constraints from NONLOCAL
14313         for parameters.
14314         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
14315         as ANYTHING.
14316         (clobber_what_p_points_to): Remove.
14317         (clobber_what_escaped): New function.
14318         (init_base_vars): Init NONLOCAL and ESCAPED.
14319         (do_sd_constraint): Do not propagate the solution from ESCAPED
14320         but use ESCAPED as a placeholder.
14321         (solve_graph): Likewise.
14322         * tree-flow.h (clobber_what_p_points_to): Remove.
14323         (clobber_what_escaped): Declare.
14324         * tree-ssa-alias.c (set_initial_properties): Call it.
14325         Remove code clobbering escaped pointers.
14326
14327 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14328
14329         * function.c (allocate_struct_function): Only allocate a unique
14330         funcdef_no if the decl is nonzero.
14331
14332 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14333
14334         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
14335         * config/mips/mips.c (mips_split_const_insns): New function.
14336         * config/mips/mips.md (move_type): New attribute.
14337         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
14338         (dword_mode): New attribute.
14339         (type): Avoid long line.  Map "move_type"s to "type"s,
14340         choosing "multi" for doubleword moves if appropriate.
14341         Swap MTC/MFC comments to match their declaration order.
14342         (extended_mips16): Default to "yes" if "move_type" is "sll0",
14343         "type" is "branch" or "jal" is "direct".
14344         (length): Handle "extended_mips16" first.  Make the default
14345         "0" for "ghost" instructions.  Set the length from "move_type".
14346         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
14347         of "type", with "sll0" for the register alternative.  Remove the
14348         "extended_mips16" attribute.
14349         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
14350         of "type", with "shift_shift" for the register alternative.
14351         Remove the "length" attribute.
14352         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
14353         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
14354         of "type", with "andi" for the register alternative.
14355         (*zero_extendqihi2): Likewise.
14356         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
14357         of "andi" instead of a "type" of "arith".
14358         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
14359         instead of "type".
14360         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
14361         (mov_<store>r, *mov<mode>_ra): Likewise.
14362         (extendsidi2): Use "move_type" instead of "type", with "move"
14363         for the register alternative.
14364         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
14365         of "type", with "signext" for the register alternative.
14366         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
14367         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
14368         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
14369         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
14370         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
14371         (unnamed branch insn): Likewise.
14372         (*movdi_gp32_fp64): Fold into...
14373         (*movdi_32bit): ...here.
14374         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
14375         (*movdf_hardfloat): ...this new pattern.
14376         (*movdf_softfloat): Remove redundant FPR alternatives.
14377         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
14378         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
14379         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
14380         the "move" attribute.
14381         (*movdi_32bit): Use "move_type" instead of "type" and remove the
14382         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
14383         and "store" for COP loads and stores.
14384         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
14385         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
14386         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
14387         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
14388         (*movtf_mips16, *movv2sf): Likewise.
14389         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
14390         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
14391         (mfhc1<mode>): Use "move_type" instead of "move".
14392         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
14393         (loadgp_blockage): Remove the "length" attribute.
14394         (blockage, set_got_version, update_got_version): Likewise.
14395         (call_internal): Remove the "extended_mips16" attribute.
14396         (call_value_internal, call_value_multiple_internal): Likewise.
14397         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
14398         instead of "move".
14399         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
14400         the "length" attribute.
14401
14402 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14403
14404         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
14405         -Wcast-qual warnings.
14406         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
14407         handle_pragma_pop_macro): Likewise.
14408         * collect2.c (resolve_lib_name): Likewise.
14409         * config/arc/arc.c (arc_init): Likewise.
14410         * config/arm/arm.c (neon_builtin_compare,
14411         locate_neon_builtin_icode): Likewise.
14412         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
14413         * config/bfin/bfin.c (bfin_init_machine_status,
14414         bfin_optimize_loop): Likewise.
14415         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
14416         * config/cris/cris.c (cris_init_expanders): Likewise.
14417         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
14418         * config/darwin.c (machopic_indirection_eq,
14419         machopic_indirection_name, machopic_output_indirection): Likewise.
14420         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
14421         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
14422         frv_optimize_membar): Likewise.
14423         * config/i386/cygwin.h (mingw_scan,
14424         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
14425         * config/i386/cygwin1.c (mingw_scan): Likewise.
14426         * config/i386/i386.c (machopic_output_stub): Likewise.
14427         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
14428         i386_pe_unique_section): Likewise.
14429         * config/ia64/ia64.c (ia64_init_machine_status,
14430         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
14431         Likewise.
14432         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
14433         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
14434         * config/m68k/m68k.c (m68k_handle_option,
14435         m68k_sched_md_init_global): Likewise.
14436         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
14437         mcore_unique_section): Likewise.
14438         * config/mips/mips.c (mips_block_move_straight,
14439         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
14440         Likewise.
14441         * config/mmix/mmix.c (mmix_init_machine_status,
14442         mmix_encode_section_info): Likewise.
14443         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
14444         * config/rs6000/rs6000.c (rs6000_init_machine_status,
14445         print_operand_address, output_toc, redefine_groups,
14446         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
14447         * config/s390/s390.c (s390_init_machine_status): Likewise.
14448         * config/score/score.c (score_block_move_straight,
14449         score_block_move_loop_body): Likewise.
14450         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
14451         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
14452         * emit-rtl.c (find_auto_inc): Likewise.
14453         * gcc.c (translate_options, process_command): Likewise.
14454         * reorg.c (dbr_schedule): Likewise.
14455         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
14456         * xcoffout.c (xcoffout_declare_function): Likewise.
14457
14458 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
14459
14460         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
14461         ipa-pta working again.
14462
14463 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
14464
14465         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
14466         genautomata.
14467
14468 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
14469
14470         * config.gcc (powerpc*-*-*): Add new core e500mc.
14471         * config/rs6000/e500mc.md: New file.
14472         * config/rs6000/rs6000.c (processor_costs): Add new costs for
14473         e500mc.
14474         (rs6000_override_options): Add e500mc case to
14475         processor_target_table. Altivec and Spe options not allowed
14476         with e500mc. Add isel instruction to e500mc by
14477         default. Initialize rs6000_cost for e500mc.
14478         (rs6000_issue_rate): Set issue rate for e500mc.
14479         * config/rs6000/rs6000.h (processor_type): Add
14480         PROCESSOR_PPCE500MC.
14481         (ASM_CPU_SPEC): Add e500mc.
14482         Set TARGET_ISEL to rs6000_isel.
14483         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
14484         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
14485         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
14486         Include e500mc.md.
14487         * doc/invoke.texi: Add e500mc to list of cpus.
14488
14489 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14490
14491         PR c/34867
14492         * c-lex.c (lex_charconst): Initialize unsignedp.
14493
14494 2008-06-27  Olivier Hainque  <hainque@adacore.com>
14495
14496         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
14497         documented assumptions.
14498
14499 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14500
14501         * dwarf2out.c: Remove trailing white spaces.  Break long line
14502         in comments.
14503
14504 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
14505
14506         * libfuncs.h (LTI_synchronize): New libfunc_index.
14507         (synchronize_libfunc): Declare.
14508         * builtins.c (expand_builtin_synchronize): Consider using
14509         synchronize_libfunc before falling back on an asm blockage.
14510         * config/mips/mips.c: Include libfuncs.h
14511         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
14512
14513 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
14514
14515         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
14516         parameter.  Copy stack_reg to r11 where appropriate.
14517         (no_global_regs_above): Add gpr parameter.
14518         (rs6000_stack_info): Only add padding for SPE save area if we
14519         are saving SPE GPRs and CR.
14520         (saveres_routine_syms): New variable.
14521         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
14522         Define.
14523         (rs6000_savres_routine_sym): New function.
14524         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
14525         split out of...
14526         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
14527         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
14528         Tweak FPR out-of-line saving.
14529         (rs6000_make_savres_rtx): New function.
14530         (rs6000_use_multiple_p): New function.
14531         (rs6000_savres_strategy): New function.
14532         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
14533         out-of-line if appropriate.
14534         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
14535         if we are optimizing for size.
14536         (GP_SAVE_INLINE): Define.
14537         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
14538         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
14539         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
14540         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
14541         (*save_fpregs_<mode>): Add use of r11.
14542         (*restore_gpregs_<mode>): New insn.
14543         (*return_and_restore_gpregs_<mode>): New insn.
14544         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
14545         use r11.
14546         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
14547         (*restore_gpregs_spe): New insn.
14548         (*return_and_restore_gpregs_spe): New insn.
14549         * config/rs6000/predicates.md (save_world_operation): Fix check.
14550
14551 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14552
14553         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
14554         this point, so assert that.
14555
14556 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14557
14558         * cfganal.c: Include vec.h and vecprim.h.
14559         (compute_idf): Import from...
14560         * tree-into-ssa (compute_idf): ...here.
14561         * basic-block.h (compute_idf): Export.
14562
14563 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
14564
14565         * c-decl.c (merge_decls): Use !current_function_decl to check for
14566         extern declaration of C99 inline function being at file scope.
14567
14568 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
14569
14570         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
14571
14572 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14573
14574         * alias.c (record_alias_subset, init_alias_analysis): Fix
14575         -Wc++-compat and/or -Wcast-qual warnings.
14576         * attribs.c (lookup_attribute_spec): Likewise.
14577         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
14578         copy_bb, connect_traces,
14579         find_rarely_executed_basic_blocks_and_cr): Likewise.
14580         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
14581         note_btr_set, migrate_btr_defs): Likewise.
14582         * builtins.c (result_vector, expand_builtin_memcpy,
14583         expand_builtin_mempcpy_args, expand_builtin_strncpy,
14584         builtin_memset_read_str, expand_builtin_printf,
14585         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
14586         Likewise.
14587         * caller-save.c (mark_set_regs): Likewise.
14588         * calls.c (expand_call, emit_library_call_value_1): Likewise.
14589         * cgraph.c (cgraph_edge): Likewise.
14590         * combine.c (likely_spilled_retval_1): Likewise.
14591         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
14592         htab_counts_entry_del, get_coverage_counts): Likewise.
14593         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
14594         new_cselib_val): Likewise.
14595         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
14596         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
14597         Likewise.
14598         * df-core.c (df_compact_blocks): Likewise.
14599         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
14600         * df-scan.c (df_grow_reg_info, df_ref_create,
14601         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
14602         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
14603         df_record_entry_block_defs, df_record_exit_block_uses,
14604         df_bb_verify): Likewise.
14605         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
14606         DF_REF_EXTRACT_MODE_CONST): New.
14607         * dominance.c (get_immediate_dominator, get_dominated_by,
14608         nearest_common_dominator, root_of_dom_tree,
14609         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
14610         -Wc++-compat and/or -Wcast-qual warnings.
14611         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
14612         record_store, replace_read, check_mem_read_rtx, scan_insn,
14613         dse_step1, dse_record_singleton_alias_set): Likewise.
14614         * dwarf2asm.c (dw2_force_const_mem): Likewise.
14615
14616 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14617
14618         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
14619         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
14620         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
14621         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
14622         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
14623         add_ranges_num, add_ranges_by_labels, file_info_cmp,
14624         file_name_acquire, output_file_names, add_const_value_attribute,
14625         premark_used_types_helper, file_table_eq, file_table_hash,
14626         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
14627         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
14628         -Wcast-qual warnings.
14629         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
14630         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
14631         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
14632         gen_reg_rtx, start_sequence, init_emit): Likewise.
14633         * et-forest.c (et_new_occ, et_new_tree): Likewise.
14634         * except.c (init_eh_for_function, gen_eh_region,
14635         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
14636         arh_to_landing_pad, arh_to_label, add_action_record,
14637         add_call_site, switch_to_exception_section): Likewise.
14638         * expmed.c (synth_mult): Likewise.
14639         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
14640         store_expr): Likewise.
14641         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
14642         Likewise.
14643         * function.c (assign_stack_temp_for_type,
14644         allocate_struct_function, match_asm_constraints_1): Likewise.
14645         * gcov-io.c (gcov_allocate): Likewise.
14646         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
14647         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
14648         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
14649         record_one_set, insert_expr_in_table, insert_set_in_table,
14650         dump_hash_table, compute_hash_table_work, alloc_hash_table,
14651         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
14652         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
14653         -Wcast-qual warnings.
14654
14655 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14656
14657         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
14658         -Wcast-qual warnings.
14659         * gcc.c (process_command): Likewise.
14660         * genattrtab.c (oballoc): Use XOBNEW.
14661         (oballocvec): Define.
14662         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
14663         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
14664         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
14665         -Wc++-compat and/or -Wcast-qual warnings.
14666         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
14667         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
14668         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
14669         gen_presence_absence_set, gen_automaton, gen_regexp_el,
14670         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
14671         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
14672         add_excls, process_presence_absence_names,
14673         process_presence_absence_patterns, add_presence_absence,
14674         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
14675         get_free_state, add_arc, get_free_automata_list_el,
14676         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
14677         transform_3, cache_presence, create_ainsns, create_automata,
14678         create_state_ainsn_table, dfa_insn_code_enlarge,
14679         output_trans_func, output_min_issue_delay_func,
14680         output_dead_lock_func, output_reset_func,
14681         output_get_cpu_unit_code_func, output_dfa_start_func,
14682         expand_automata): Likewise.
14683         * genextract.c (gen_insn): Likewise.
14684         * gengtype-lex.l: Likewise.
14685         * gengtype.c (read_input_list, adjust_field_type,
14686         process_gc_options): Likewise.
14687         * genoutput.c (note_constraint): Likewise.
14688         * genpreds.c (mangle, add_constraint): Likewise.
14689         * genrecog.c (process_define_predicate, new_decision,
14690         add_to_sequence): Likewise.
14691         * gensupport.c (record_insn_name): Likewise.
14692
14693 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14694
14695         * config/i386/driver-i386.c (detect_caches_amd,
14696         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
14697         and/or -Wcast-qual warnings.
14698         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
14699         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
14700         gt_pch_save): Likewise.
14701         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
14702         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
14703         * global.c (compute_regsets): Likewise.
14704         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
14705         finish_graph_dump_file): Likewise.
14706         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
14707         unlink_bb_notes): Likewise.
14708         * integrate.c (get_hard_reg_initial_val): Likewise.
14709         * ipa-prop.c (ipa_push_func_to_list): Likewise.
14710         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
14711         * local-alloc.c (update_equiv_regs): Likewise.
14712         * loop-invariant.c (check_invariant_table_size,
14713         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
14714         Likewise.
14715         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
14716         altered_reg_used, mark_altered): Likewise.
14717         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
14718         insert_var_expansion_initialization,
14719         combine_var_copies_in_loop_exit, apply_opt_in_copies,
14720         release_var_copies): Likewise.
14721         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
14722         analyze_matrix_decl, add_allocation_site, analyze_transpose,
14723         analyze_accesses_for_phi_node, check_var_notmodified_p,
14724         check_allocation_function, find_sites_in_func,
14725         record_all_accesses_in_func, transform_access_sites,
14726         transform_allocation_sites): Likewise.
14727         * omp-low.c (new_omp_region, create_omp_child_function_name,
14728         check_omp_nesting_restrictions, check_combined_parallel,
14729         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
14730         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
14731         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
14732         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
14733         Likewise.
14734         * opts-common.c (prune_options): Likewise.
14735         * opts.c (add_input_filename, print_filtered_help,
14736         get_option_state): Likewise.
14737         * params.c (add_params): Likewise.
14738         * passes.c (set_pass_for_id, next_pass_1,
14739         do_per_function_toporder, pass_fini_dump_file): Likewise.
14740         * postreload.c (reload_cse_simplify_operands): Likewise.
14741         * predict.c (tree_predicted_by_p, tree_predict_edge,
14742         clear_bb_predictions, combine_predictions_for_bb): Likewise.
14743
14744 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14745
14746         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
14747         warnings.
14748         * recog.c (check_asm_operands, validate_change_1): Likewise.
14749         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
14750         subst_asm_stack_regs): Likewise.
14751         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
14752         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
14753         * regmove.c (reg_is_remote_constant_p): Likewise.
14754         * regrename.c (regrename_optimize, scan_rtx_reg,
14755         kill_clobbered_value, kill_set_value, kill_autoinc_value):
14756         Likewise.
14757         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
14758         regstat_compute_calls_crossed): Likewise.
14759         * reload1.c (init_reload, new_insn_chain,
14760         has_nonexceptional_receiver, reload, copy_reloads,
14761         calculate_needs_all_insns, init_elim_table): Likewise.
14762         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
14763         * rtl.c (shallow_copy_rtx_stat): Likewise.
14764         * rtlanal.c (parms_set): Likewise.
14765         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
14766         sbitmap_resize, sbitmap_vector_alloc): Likewise.
14767         * sched-ebb.c (earliest_block_with_similiar_load,
14768         add_deps_for_risky_insns): Likewise.
14769         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
14770         schedule_region): Likewise.
14771         * see.c (eq_descriptor_pre_extension,
14772         hash_descriptor_pre_extension, hash_del_pre_extension,
14773         eq_descriptor_properties, hash_descriptor_properties,
14774         hash_del_properties, see_seek_pre_extension_expr,
14775         see_initialize_data_structures, see_print_register_properties,
14776         see_print_pre_extension_expr, see_delete_merged_def_extension,
14777         see_delete_unmerged_def_extension, see_emit_use_extension,
14778         see_pre_delete_extension, see_map_extension, see_commit_changes,
14779         see_analyze_merged_def_local_prop,
14780         see_analyze_merged_def_local_prop,
14781         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
14782         see_set_prop_merged_def, see_set_prop_unmerged_def,
14783         see_set_prop_unmerged_use, see_print_one_extension,
14784         see_merge_one_use_extension, see_merge_one_def_extension,
14785         see_store_reference_and_extension, see_update_uses_relevancy,
14786         see_update_defs_relevancy): Likewise.
14787         * statistics.c (hash_statistics_hash, hash_statistics_eq,
14788         hash_statistics_free, curr_statistics_hash): Likewise.
14789         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
14790         expand_asm_operands, expand_return, case_bit_test_cmp,
14791         expand_case): Likewise.
14792         * stor-layout.c (start_record_layout): Likewise.
14793         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
14794         gt_pch_save_stringpool): Likewise.
14795         * tree-data-ref.c (hash_stmt_vertex_info,
14796         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
14797         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
14798
14799 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
14800
14801         PR target/36627
14802         * config/i386/i386.md : Change constraints of HImode and QImode
14803         immediate operands from "i" to "n".  Change SImode "ni" constraint to
14804         "i" and SImode "rmi" constraint to "g".  Remove all constraints
14805         from const0_operand and const1_operand predicated operands.
14806         (i): Change QImode and HImode attribute from "i" to "n".
14807         (*subqi_2): Change HImode operands to QImode.
14808         (*subqi_3): Ditto.
14809
14810 2008-06-25  Olivier Hainque  <hainque@adacore.com>
14811
14812         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
14813         sed substitutions.
14814
14815 2008-06-25  Richard Guenther  <rguenther@suse.de>
14816
14817         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
14818         not overflow the result type.
14819
14820 2008-06-25  Richard Guenther  <rguenther@suse.de>
14821
14822         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
14823         (vn_lookup): Likewise.
14824
14825 2008-06-25  Richard Guenther  <rguenther@suse.de>
14826
14827         PR tree-optimization/35518
14828         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
14829         * tree-sra.c (instantiate_element): Use fold_build3 to build
14830         BIT_FIELD_REFs.
14831         (try_instantiate_multiple_fields): Likewise.
14832
14833 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14834
14835         * config/rs6000/rs6000.md: Change all string instruction's clobber to
14836         be early clobbers.
14837
14838 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14839
14840         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
14841         use_backchain_to_restore_sp to true
14842         if the offset of the link register save area would go over the 32k - 1
14843         offset limit of the load
14844         instructions.
14845
14846 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
14847
14848         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
14849         anchor for the type-punning blurb.  Cross-reference "Structures
14850         unions enumerations and bit-fields implementation".  Provide a
14851         cast-through-pointer example.  Make final sentence self-contained.
14852         * doc/implement-c.texi (Structures unions enumerations and
14853         bit-fields implementation): Cross-reference the type-punning blurb
14854         in the -fstrict-aliasing documentation.
14855
14856 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14857
14858         PR middle-end/36594
14859         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
14860         the memory instead of the memory itself for the save area.
14861
14862 2008-06-24  Olivier Hainque  <hainque@adacore.com>
14863             Nicolas Roche  <roche@adacore.com>
14864
14865         * gengtype.c (srcdir_len): size_t instead of int.
14866         (get_file_realbasename): New function.  For F a filename, the real
14867         basename of F, with all the path components stripped.
14868         (get_file_srcdir_relative_path): New function.  For F a filename, the
14869         relative path to F from $(srcdir).
14870         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
14871         get_file_realbasename.  Adjust the head comment.
14872         (get_prefix_langdir_index): New function. For F a filename, return the
14873         lang_dir_names[] relative index of the language directory that is
14874         a prefix in F.
14875         (get_file_langdir): For F a filename, return the name of the language
14876         directory where F is located.
14877         (get_file_gtfilename): New function. The gt- output file name for an
14878         input filename F.
14879         (get_output_file_with_visibility): Replace in-line computations with
14880         uses of get_file_gtfilename and get_prefix_langdir_index.
14881         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
14882
14883 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
14884
14885         PR tree-optimization/36504
14886         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
14887         references without base address.
14888
14889 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14890
14891         PR middle-end/36584
14892         * calls.c (expand_call): Increase alignment for recursive functions.
14893
14894 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
14895
14896         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
14897         (TARGET_FUNCTION_VALUE): New define.
14898         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
14899         * config/avr/avr.h (FUNCTION_VALUE): Remove.
14900
14901 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14902
14903         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
14904         (fmod<mode>3): Ditto.
14905         (remainderxf3): Ditto.
14906         (remainder<mode>3): Ditto.
14907
14908 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
14909
14910         PR target/36533
14911         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
14912         REG is a hard register.
14913
14914         PR tree-optimization/36508
14915         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
14916         499, don't check it at all in release compilers.
14917
14918 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14919
14920         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
14921         together with SSE_TARGET_MATH to disable insn pattern.
14922         (*fop_<MODEF:mode>_2_i387): Ditto.
14923         (*fop_<MODEF:mode>_3_i387): Ditto.
14924
14925 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
14926
14927         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
14928
14929 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14930
14931         PR middle-end/34906
14932         * gimplify.c (gimplify_asm_expr): Check the return code of
14933         parse_output_constraint call, set function return and is_inout
14934         value if it failed.
14935
14936 2008-06-22  Ian Lance Taylor  <iant@google.com>
14937
14938         * c-lex.c (narrowest_unsigned_type): Change itk to int.
14939         (narrowest_signed_type): Likewise.
14940         * c-typeck.c (c_common_type): Change local variable mclass to enum
14941         mode_class, twice.
14942         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
14943         tcc_comparison, not the tree code itself.
14944         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
14945         (c_expand_expr): Cast modifier to enum expand_modifier.
14946         * c-common.h (C_RID_CODE): Add casts.
14947         (C_SET_RID_CODE): Define.
14948         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
14949         (c_lex_one_token): Add cast to avoid warning.
14950         (c_parser_objc_type_name): Rename local typename to type_name.
14951         (check_no_duplicate_clause): Change code parameter to enum
14952         omp_clause_code.
14953         (c_parser_omp_var_list_parens): Change kind parameter to enum
14954         omp_clause_code.
14955         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
14956         c_parser_omp_list_var_parens.
14957         (c_parser_omp_threadprivate): Likewise.
14958         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
14959         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
14960         * c-format.c (NO_FMT): Define.
14961         (printf_length_specs): Use NO_FMT.
14962         (asm_fprintf_length_specs): Likewise.
14963         (gcc_diag_length_specs): Likewise.
14964         (scanf_length_specs): Likewise.
14965         (strfmon_length_specs): Likewise.
14966         (gcc_gfc_length_specs): Likewise.
14967         (printf_flag_specs): Change 0 to STD_C89.
14968         (asm_fprintf_flag_specs): Likewise.
14969         (gcc_diag_flag_specs): Likewise.
14970         (gcc_cxxdiag_flag_specs): Likewise.
14971         (scanf_flag_specs): Likewise.
14972         (strftime_flag_specs): Likewise.
14973         (strfmon_flag_specs): Likewise.
14974         (print_char_table): Likewise.
14975         (asm_fprintf_char_table): Likewise.
14976         (gcc_diag_char_table): Likewise.
14977         (gcc_tdiag_char_table): Likewise.
14978         (gcc_cdiag_char_table): Likewise.
14979         (gcc_cxxdiag_char_table): Likewise.
14980         (gcc_gfc_char_table): Likewise.
14981         (scan_char_table): Likewise.
14982         (time_char_table): Likewis.
14983         (monetary_char_table): Likewise.
14984         * c-format.h (BADLEN): Likewise.
14985
14986 2008-06-21  Ian Lance Taylor  <iant@google.com>
14987
14988         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
14989         Define END_OF_BASE_TREE_CODES around inclusion.
14990         * tree.c (tree_code_type): New global array.
14991         (tree_code_length, tree_code_name): Likewise.
14992         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
14993         $(lang_tree_files).
14994         (all-tree.def, s-alltree): New targets.
14995         (gencheck.h, s-gencheck): Remove.
14996         (tree.o): Depend upon all-tree.def.
14997         (build/gencheck.o): Remove gencheck.h dependency.
14998         (mostlyclean): Don't remove gencheck.h.
14999         * c-common.h (enum c_tree_code): Remove.
15000         * c-lang.c (tree_code_type): Remove.
15001         (tree_code_length, tree_code_name): Remove.
15002         * gencheck.c (tree_codes): Include all-tree.def, rather than
15003         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
15004         after it is used.
15005         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
15006         than tree.def.
15007         * cp/cp-tree.h (enum cplus_tree_code): Remove.
15008         (operator_name_info): Size to MAX_TREE_CODES.
15009         (assignment_operator_name_info): Likewise.
15010         * cp/cp-lang.c (tree_code_type): Remove.
15011         (tree_code_length, tree_code_name): Remove.
15012         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
15013         (assignment_operator_name_info): Likewise.
15014         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
15015         MAX_TREE_CODES.
15016         * cp/mangle.c (write_expression): Likewise.
15017         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
15018         * fortran/f95-lang.c (tree_code_type): Remove.
15019         (tree_code_length, tree_code_name): Remove.
15020         * java/java-tree.h (enum java_tree_code): Remove.
15021         * java/lang.c (tree_code_type): Remove.
15022         (tree_code_length, tree_code_name): Remove.
15023         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
15024         * objc/objc-act.h (enum objc_tree_code): Remove.
15025         * objc/objc-lang.c (tree_code_type): Remove.
15026         (tree_code_length, tree_code_name): Remove.
15027         * objcp/objcp-lang.c (tree_code_type): Remove.
15028         (tree_code_length, tree_code_name): Remove.
15029         * ada/ada-tree.h (enum gnat_tree_code): Remove.
15030         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
15031         * ada/misc.c (tree_code_type): Remove.
15032         (tree_code_length, tree_code_name): Remove.
15033
15034 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
15035
15036         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
15037         the grand_bitmap_obstack.
15038
15039 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15040
15041         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
15042         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
15043         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
15044         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
15045         move_stmt_r, new_label_mapper): Likewise.
15046         * tree-complex.c (cvc_lookup): Likewise.
15047         * tree-dfa.c (create_function_ann): Likewise.
15048         * tree-dump.c (dump_register): Likewise.
15049         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
15050         find_phi_replacement_condition): Likewise.
15051         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
15052         tree_function_versioning): Likewise.
15053         * tree-into-ssa.c (cmp_dfsnum): Likewise.
15054         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
15055         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
15056         get_nonlocal_debug_decl, convert_nonlocal_reference,
15057         convert_nonlocal_omp_clauses, get_local_debug_decl,
15058         convert_local_reference, convert_local_omp_clauses,
15059         convert_nl_goto_reference, convert_nl_goto_receiver,
15060         convert_tramp_reference, convert_call_expr): Likewise.
15061         * tree-outof-ssa.c (contains_tree_r): Likewise.
15062         * tree-parloops.c (reduction_phi, initialize_reductions,
15063         eliminate_local_variables_1, add_field_for_reduction,
15064         add_field_for_name, create_phi_for_local_result,
15065         create_call_for_reduction_1, create_loads_for_reductions,
15066         create_stores_for_reduction, create_loads_and_stores_for_name):
15067         Likewise.
15068         * tree-phinodes.c (allocate_phi_node): Likewise.
15069         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
15070         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
15071         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
15072         * tree-ssa-coalesce.c (compare_pairs): Likewise.
15073         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
15074         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
15075         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
15076         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
15077         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
15078         vn_nary_op_insert): Likewise.
15079         * tree-ssa.c (redirect_edge_var_map_add,
15080         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
15081         * tree-vectorizer.c (vectorize_loops): Likewise.
15082         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
15083         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
15084         tree_cons_stat, build1_stat, build_variant_type_copy,
15085         decl_init_priority_lookup, decl_fini_priority_lookup,
15086         decl_priority_info, decl_restrict_base_lookup,
15087         decl_restrict_base_insert, decl_debug_expr_lookup,
15088         decl_debug_expr_insert, decl_value_expr_lookup,
15089         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
15090         type_hash_add, get_file_function_name, tree_check_failed,
15091         tree_not_check_failed, tree_range_check_failed,
15092         omp_clause_range_check_failed, build_omp_clause,
15093         build_vl_exp_stat): Likewise.
15094         * value-prof.c (gimple_histogram_value,
15095         gimple_duplicate_stmt_histograms): Likewise.
15096         * var-tracking.c (attrs_list_insert, attrs_list_copy,
15097         unshare_variable, variable_union_info_cmp_pos, variable_union,
15098         dataflow_set_different_1, dataflow_set_different_2,
15099         vt_find_locations, variable_was_changed, set_variable_part,
15100         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
15101         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
15102         section_entry_hash, object_block_entry_eq,
15103         object_block_entry_hash, create_block_symbol,
15104         initialize_cold_section_name, default_function_rodata_section,
15105         strip_reg_name, set_user_assembler_name, const_desc_eq,
15106         build_constant_desc, output_constant_def, lookup_constant_def,
15107         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
15108         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
15109         default_internal_label): Likewise.
15110         * varray.c (varray_init, varray_grow): Likewise.
15111         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
15112
15113 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
15114
15115         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
15116         operators for "test" insn.  Macroize insn using SWI mode macro.
15117         (*jcc_fused_2): Ditto.
15118         (*jcc_fused_3): Macroize insn using SWI mode macro.
15119         (*jcc_fused_4): Ditto.
15120
15121 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
15122
15123         * tree-ssa-pre.c: Fix typo in comment.
15124         (init_antic, fini_antic): Add explicit funtions for
15125         initializing and deinitializing ANTIC and AVAIL sets.
15126         (create_expression_by_pieces): Fix typo in comment.
15127         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
15128         (execute_pre): Eventually dump details about ANTIC_IN.
15129
15130 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15131
15132         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
15133         * gcc.c (translate_options, init_spec, store_arg, read_specs,
15134         add_to_obstack, file_at_path, find_a_file, execute,
15135         add_preprocessor_option, add_assembler_option, add_linker_option,
15136         process_command, insert_wrapper, do_option_spec, do_self_spec,
15137         spec_path, do_spec_1, is_directory, main, used_arg,
15138         getenv_spec_function): Likewise.
15139         * tlink.c (symbol_hash_lookup, file_hash_lookup,
15140         demangled_hash_lookup, symbol_push, file_push, frob_extension):
15141         Likewise.
15142
15143 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15144
15145         * doc/rtl.texi: Updated subreg section.
15146
15147 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
15148
15149         PR c++/36523
15150         * cgraphunit.c (cgraph_process_new_functions): Don't clear
15151         node->needed and node->reachable.
15152         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
15153         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
15154         (expand_task_call): Don't call expand_task_copyfn.
15155         (expand_task_copyfn): Renamed to...
15156         (finalize_task_copyfn): ... this.
15157
15158 2008-06-19  Jan Hubicka  <jh@suse.cz>
15159
15160         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
15161         clobbering framepointer.
15162
15163 2008-06-19  Jan Hubicka  <jh@suse.cz>
15164
15165         * tree-optimize.c (execute_early_local_optimizations): Set
15166         cgraph_state only at first invocation.
15167
15168 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15169
15170         * system.h (-Wc++-compat): Activate as a warning, no an error.
15171
15172 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15173
15174         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
15175         instead of "#" in insn asm template.
15176         (*jcc_fused_2): Ditto.
15177
15178 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15179
15180         * config/i386/i386.h (ix86_tune_indices)
15181         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
15182         (TARGET_FUSE_CMP_AND_BRANCH): New define.
15183         * config/i386/i386.md (*jcc_fused_1): New insn pattern
15184         (*jcc_fused_2): Ditto.
15185         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
15186         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
15187         (print operand): Handle 'E' and 'e' code.
15188
15189 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
15190
15191         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
15192         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
15193         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15194
15195 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
15196
15197         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
15198         node->decl.
15199         (cgraph_expand_function): Use local copy of decl.
15200         (cgraph_expand_all_functions): Remove redundant initialization of
15201         order_pos.
15202         (cgraph_optimize): Reword internal_error message.
15203
15204 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
15205
15206         * arm-protos.h (arm_return_in_memory): Remove public
15207         arm_return_in_memory() prototype.
15208         * arm.c (arm_return_in_memory): Add static prototype, add target
15209         hook macro, change definition and comments.
15210         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
15211
15212 2008-06-19  Ben Elliston  <bje@au.ibm.com>
15213
15214         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
15215         real.c: Remove references to IEEE 754R.
15216         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
15217         * doc/libgcc.texi (Decimal float library routines): Likewise.
15218
15219 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15220
15221         * targhooks.h (struct gcc_target): New member unwind_word_mode.
15222         (default_unwind_word_mode): Add prototype.
15223         * targhooks.c (default_unwind_word_mode): New function.
15224         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
15225         instead of word_mode.
15226         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
15227         (TARGET_INITIALIZER): Use it.
15228
15229         * c-common.c (handle_mode_attribute): Support "unwind_word"
15230         mode attribute.
15231         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
15232
15233         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
15234         word_mode to access SjLj_Function_Context member "data".
15235         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
15236         conversion from targetm.eh_return_filter_mode () to
15237         targetm.unwind_word_mode () if they differ.
15238
15239         * builtin-types.def (BT_UNWINDWORD): New primitive type.
15240         (BT_FN_UNWINDWORD_PTR): New function type.
15241         (BT_FN_WORD_PTR): Remove.
15242         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
15243         * except.c (expand_builtin_extend_pointer): Convert pointer to
15244         targetm.unwind_word_mode () instead of word_mode.
15245
15246         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
15247         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
15248         (spu_unwind_word_mode): New function.
15249         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
15250         (TARGET_UNWIND_WORD_MODE): Define.
15251         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
15252
15253 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15254
15255         * config/spu/spu.c (reg_align): Remove.
15256         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
15257         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
15258         (spu_split_store): Likewise.
15259
15260 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
15261
15262         * gcc/tree-vn.c: Fix typo in comment.
15263
15264 2008-06-18  Jan Hubicka  <jh@suse.cz>
15265
15266         * cgraphunit.c (cgraph_optimize): Output debug info when doing
15267         toplevel reorder too.
15268
15269 2008-06-18  Jan Hubicka  <jh@suse.cz>
15270
15271         * c-opts.c (c_common_post_options): PCH is not compatible with
15272         no-unit-at-a-time.
15273         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
15274         -fno-toplevel-reorder by default now.
15275
15276 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15277
15278         PR documentation/30739
15279         * doc/install.texi (Prerequisites): Document dependency on awk.
15280
15281 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
15282             Ian Lance Taylor  <iant@google.com>
15283
15284         PR rtl-optimization/35604
15285         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
15286         only want to change jump destinations, not eventual label comparisons.
15287
15288 2008-06-16  Jan Hubicka  <jh@suse.cz>
15289
15290         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
15291         syntax errors.
15292         (cgraph_analyze_function): Likewise.
15293
15294 2008-06-16  Jan Hubicka  <jh@suse.cz>
15295
15296         * cgraph.h (cgraph_mark_if_needed): New function.
15297         * cgraphunit.c (cgraph_mark_if_needed): New function.
15298         * c-decl.c (duplicate_decl): Use it.
15299
15300 2008-06-16  Jan Hubicka  <jh@suse.cz>
15301
15302         * cgraph.c (cgraph_add_new_function): When in expansion state, do
15303         lowering.
15304
15305 2008-06-16  Jan Hubicka  <jh@suse.cz>
15306
15307         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
15308
15309 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
15310             Kazu Hirata  <kazu@codesourcery.com>
15311             Maxim Kuvyrkov  <maxim@codesourcery.com
15312
15313         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
15314         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
15315         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
15316         EXTRA_SPEC_FUNCTIONS.
15317         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
15318         (DRIVER_SELF_SPECS): Adjust.
15319         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
15320         * config/mips/st.h, config/mips/t-st: New.
15321         * config/mips/driver-native.c, config/mips/x-native: New.
15322         * doc/invoke.texi (MIPS): Document 'native' value for -march and
15323         -mtune options.
15324
15325 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15326
15327         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
15328         from it.
15329         (ISA_HAS_FP_CONDMOVE): New macro.
15330         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
15331         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
15332         (ISA_HAS_NMADD3_NMSUB3): New macro.
15333         * config/mips/mips.c (mips_rtx_costs): Update.
15334         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
15335         compiling for ST Loongson 2E/2F.
15336         (madd<mode>): Rename to madd4<mode>.  Update.
15337         (madd3<mode>): New pattern.
15338         (msub<mode>): Rename to msub4<mode>.  Update.
15339         (msub3<mode>): New pattern.
15340         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
15341         (nmadd3<mode>): New pattern.
15342         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
15343         (nmadd3<mode>_fastmath): New pattern.
15344         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
15345         (nmsub3<mode>): New pattern.
15346         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
15347         (nmsub3<mode>_fastmath): New pattern.
15348         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
15349
15350 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
15351
15352         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
15353         (DF_REF_INSN_INFO): New.
15354         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
15355         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
15356         with a NULL DF_REF_INSN_INFO.
15357         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
15358         DF_INSN_SET.
15359         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
15360         DF_INSN_INFO_EQ_USES): New.
15361         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
15362         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
15363         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
15364         * df-core.c: Update comment for above changes.
15365         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
15366         DF_INSN_UID_* macros.
15367         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
15368         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
15369         insn rtx.  Update all callers.
15370         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
15371         df_ref_create_structure, df_insn_refs_collect): Likewise.
15372         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
15373         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
15374         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
15375         macros to access the insn refs.
15376         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
15377         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
15378         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
15379         for accessing the refs.
15380         (try_fwprop_subst): Likewise.
15381         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
15382         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
15383         for accessing the refs.
15384         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
15385         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
15386         to look at the insn refs.
15387         (record_uses): Likewise.
15388         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
15389         function anymore.
15390         (mark_artificial_uses): Don't mark_insn for artificial refs.
15391         (mark_reg_rependencies): Likewise.
15392
15393         * doc/rtl.texi: Remove documentation of ADDRESSOF.
15394
15395 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15396
15397         * configure: Regenerate.
15398
15399 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15400
15401         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
15402         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15403         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15404
15405 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15406
15407         * config/avr/avr.c (avr_mcu_t): Add attiny167.
15408         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15409         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15410
15411 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15412
15413         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
15414         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15415         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15416
15417 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15418
15419         * tree-ssa-sccvn.c: Fix format of comments.
15420
15421 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15422
15423         * cgraph.c: Remove unneeded forward declarations of eq_node()
15424         and hash_node().
15425
15426 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
15427
15428         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
15429         REG_RETVAL notes.
15430         (see_update_relevancy): Likewise.
15431         * fwprop.c (try_fwprop_subst): Likewise.
15432         * rtlanal.c (noop_move_p): Likewise.
15433         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
15434         notes to non-existing libcall blocks.
15435         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
15436         Remove orig_set.
15437         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
15438         (dead_libcall_p): Remove.
15439         (delete_trivially_dead_insns): Don't use it.
15440         * web.c (union_defs): Remove comment about keeping nops.
15441         * gcse.c (hash_scan_insn): Don't take libcall pointers.
15442         (compute_hash_table_work): Don't track libcall notes.
15443         (do_local_cprop): Don't take libcall pointers.  Don't update
15444         libcall notes.
15445         (adjust_libcall_notes): Deleted.
15446         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
15447         ever have existed in the first place).
15448         (replace_store_insn): Don't try to remove libcall notes.
15449         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
15450         (resolve_reg_notes): Don't call them.
15451         (resolve_simple_move): Likewise.
15452         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
15453         Don't remove REG_RETVAL notes.
15454         * emit-rtl.c (try_split): Don't update libcall notes.
15455         (emit_copy_of_insn_after): Dito.
15456         * cselib.c (cselib_current_insn_in_libcall): Remove.
15457         (cselib_process_insn): Don't set/clear it.
15458         (new_elt_loc_list): Don't record it.
15459         (cselib_init): Don't initialize it.
15460         * cselib.c (struct elt_loc_list): Remove in_libcall field.
15461         * loop-invariant.c (find_invariant_insn): Don't look for libcall
15462         notes.
15463         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
15464         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
15465         (init_deps): Don't initialize it.
15466         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
15467         * combine.c (delete_noop_moves): Don't update libcall notes.
15468         (can_combine_p): Remove now pointless #if 0 block.
15469         (try_combine): Remove another obsolete #if 0 block.
15470         (distribute_notes): Don't distribute libcall notes.
15471         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
15472         * dce.c (libcall_dead_p): Remove.
15473         (delete_unmarked_insns): Don't handle libcall blocks.
15474         (preserve_libcall_for_dce): Remove.
15475         (prescan_insns_for_dce): Don't special-case libcall block insns.
15476         * reload1 (reload): Don't handle libcall notes.
15477         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
15478         documentation.
15479
15480 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15481
15482         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
15483         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15484         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15485
15486 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15487
15488         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
15489         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15490         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15491
15492 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15493
15494         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
15495
15496 2008-06-16  Ira Rosen  <irar@il.ibm.com>
15497
15498         PR tree-optimization/36493
15499         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
15500         the arguments list. Use VECTYPE to create vector pointer.
15501         (vectorizable_store): Fail if accesses through a pointer to vectype
15502         do not alias the original memory reference operands.
15503         Call vect_create_data_ref_ptr without the removed argument.
15504         (vectorizable_load): Likewise.
15505         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
15506         removed argument.
15507
15508 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
15509
15510         PR target/36336
15511         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
15512         reg_equiv_constant.
15513
15514 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15515
15516         * config/mips/loongson2ef.md: New file.
15517         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
15518         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
15519         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
15520         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
15521         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
15522         and loongson_2f.
15523         (loongson2ef.md): New include.
15524         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
15525         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
15526         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
15527         (loongson_gt_<mode>, loongson_extract_halfword)
15528         (loongson_insert_halfword_0, loongson_insert_halfword_2)
15529         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
15530         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
15531         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
15532         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
15533         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
15534         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
15535         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
15536         (vec_interleave_low<mode>): Define type attribute.
15537         * config/mips/mips.c (mips_ls2): New static variable.
15538         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
15539         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
15540         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
15541         Implement target scheduling hooks.
15542         (mips_multipass_dfa_lookahead): Update to handle tuning for
15543         Loongson 2E/2F.
15544         (mips_sched_init): Initialize data for Loongson scheduling.
15545         (mips_ls2_variable_issue): New static function.
15546         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
15547         Add sanity check.
15548         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
15549         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
15550         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
15551         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
15552         Handle ST Loongson 2E/2F cores.
15553         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
15554
15555 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15556
15557         * omp-low.c (extract_omp_for_data): Fix comment typo.
15558         * c.opt: Fix typo.
15559
15560 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15561
15562         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
15563         FIXME note about gcc/config.guess.
15564         * doc/options.texi (Option file format): Remove non-ASCII bytes.
15565         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
15566         * doc/cppopts.texi: Likewise.
15567         * doc/extend.texi: Likewise.
15568         * doc/gcc.texi: Likewise.
15569         * doc/gccint.texi: Likewise.
15570         * doc/gcov.texi: Likewise.
15571         * doc/gty.texi: Likewise.
15572         * doc/hostconfig.texi: Likewise.
15573         * doc/install.texi: Likewise.
15574         * doc/invoke.texi: Likewise.
15575         * doc/loop.texi: Likewise.
15576         * doc/makefile.texi: Likewise.
15577         * doc/md.texi: Likewise.
15578         * doc/passes.texi: Likewise.
15579         * doc/tm.texi: Likewise.
15580         * doc/tree-ssa.texi: Likewise.
15581         * doc/trouble.texi: Likewise.
15582
15583 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
15584             Nathan Sidwell  <nathan@codesourcery.com>
15585             Maxim Kuvyrkov  <maxim@codesourcery.com>
15586             Richard Sandiford  <rdsandiford@googlemail.com>
15587
15588         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
15589         * config/mips/mips-protos.h (mips_expand_vector_init): New.
15590         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
15591         builtins.
15592         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
15593         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
15594         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
15595         V8QImode cases.
15596         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
15597         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
15598         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
15599         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
15600         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
15601         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
15602         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
15603         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
15604         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
15605         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
15606         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
15607         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
15608         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
15609         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
15610         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
15611         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
15612         (mips_builtins): Add Loongson builtins.
15613         (mips_loongson_2ef_bdesc): New.
15614         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
15615         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
15616         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
15617         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
15618         New.
15619         (mips_expand_vector_init): New.
15620         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
15621         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
15622         if appropriate.
15623         * config/mips/mips.md: Add unspec numbers for Loongson
15624         builtins.  Include loongson.md.
15625         (MOVE64): Include Loongson vector modes.
15626         (SPLITF): Include Loongson vector modes.
15627         (HALFMODE): Handle Loongson vector modes.
15628         * config/mips/loongson.md: New.
15629         * config/mips/loongson.h: New.
15630         * config.gcc: Add loongson.h header for mips*-*-* targets.
15631         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
15632
15633 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
15634
15635         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
15636         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
15637         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
15638         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
15639         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
15640         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
15641         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
15642         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
15643         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
15644         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
15645         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
15646         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
15647         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
15648         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
15649         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
15650         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
15651         Remove use_fixproto=yes.
15652         (ia64*-*-hpux*): Remove comment about using fixproto.
15653         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
15654
15655 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15656
15657         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
15658         library rebuilds.
15659         * configure: Regenerate.
15660
15661 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
15662
15663         PR middle-end/36520
15664         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
15665         before evaluating it.
15666
15667 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
15668
15669         PR c/36507
15670         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
15671         nested inline functions.
15672         (start_decl, start_function): Don't invert DECL_EXTERNAL
15673         for nested inline functions.
15674
15675 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15676
15677         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
15678         splits that must be made for correctness.
15679
15680 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15681
15682         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
15683         (AVAIL_NON_MIPS16): Likewise.
15684         (mips_builtin_description): Replace target_flags with a predicate.
15685         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
15686         (dspr2_32): New availability predicates.
15687         (MIPS_BUILTIN): New macro.
15688         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
15689         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
15690         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
15691         Replace the TARGET_FLAGS parameters with AVAIL parameters.
15692         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
15693         (mips_dsp_32only_bdesc): Merge into...
15694         (mips_builtins): ...this new array.
15695         (mips_bdesc_map, mips_bdesc_arrays): Delete.
15696         (mips_init_builtins): Update after above changes.
15697         (mips_expand_builtin_1): Merge into...
15698         (mips_expand_builtin): ...here and update after above changes.
15699
15700 2008-06-12  Paul Brook  <paul@codesourcery.com>
15701
15702         * longlong.h (__arm__): Define count_leading_zeros.
15703         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
15704         (clzsi2, clzdi2): New functions.
15705         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
15706         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
15707         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
15708         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
15709         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
15710         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
15711         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
15712         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
15713         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
15714         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
15715
15716 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
15717
15718         * config/m68k/m68k.c (m68k_tune_flags): New.
15719         (override_options): Compute m68k_tune_flags.
15720         (MULL_COST, MULW_COST): Update for various variants of CFV2.
15721         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
15722
15723 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15724
15725         PR middle-end/36506
15726         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
15727
15728 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15729
15730         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
15731         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
15732
15733 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15734
15735         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
15736         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
15737
15738 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15739
15740         PR middle-end/36506
15741         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
15742         reductions.
15743
15744 2008-06-12  Richard Guenther  <rguenther@suse.de>
15745
15746         PR tree-optimization/36345
15747         * tree-flow.h (struct ptr_info_def): Align escape_mask,
15748         add memory_tag_needed flag.
15749         (may_alias_p): Declare.
15750         * tree-ssa-alias.c (may_alias_p): Export.
15751         (set_initial_properties): Use memory_tag_needed flag.
15752         (update_reference_counts): Likewise.
15753         (reset_alias_info): Reset memory_tag_needed flag.
15754         (create_name_tags): Check memory_tag_needed flag.
15755         (dump_points_to_info_for): Dump it.
15756         * tree-ssa-structalias.c (struct variable_info): Remove
15757         directly_dereferenced flag.
15758         (new_var_info): Do not initialize it.
15759         (process_constraint_1): Do not set it.
15760         (update_alias_info): Set is_dereferenced flag.
15761         (set_uids_in_ptset): Use may_alias_p.
15762         (set_used_smts): Check memory_tag_needed flag.
15763         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
15764         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
15765         memory_tag_needed flag.
15766         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
15767         from broken design.
15768
15769 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
15770
15771         * config/i386/i386.c (ix86_compute_frame_layout): Disable
15772         red zone for w64 abi.
15773         (ix86_expand_prologue): Likewise.
15774         (ix86_force_to_memory): Likewise.
15775         (ix86_free_from_memory): Likewise.
15776
15777 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
15778
15779         PR target/36425
15780         * config/rs6000/rs6000.c (rs6000_override_options): Set
15781         rs6000_isel conditionally to the absence of comand line override.
15782         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
15783         Remove duplicate rs6000_isel setting.
15784         * config/rs6000/eabispe.h: Ditto.
15785
15786 2008-06-11  Richard Guenther  <rguenther@suse.de>
15787
15788         * alias.c (get_alias_set): Use the element alias-set for arrays.
15789         (record_component_aliases): For arrays and vectors do nothing.
15790         * c-common.c (strict_aliasing_warning): Handle the cases
15791         of alias set zero explicitly.
15792         * Makefile.in (dfp.o-warn): Add -Wno-error.
15793
15794 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15795
15796         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
15797         tune_32 tune_64.
15798         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
15799         tune_32 tune_64 to supported_defaults.  Allow values not
15800         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
15801         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
15802         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
15803         with_cpu_64 to generic for 64-bit-supporting configurations, not
15804         with_cpu.  Remove FIXMEs.
15805         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
15806         --with-arch-64, --with-tune-32, --with-tune-64): Document.
15807         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
15808         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
15809         arch_32 and arch_64.
15810
15811 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
15812             Olivier Hainque  <hainque@adacore.com>
15813
15814         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
15815         Use DECL_SIZE_UNIT to retrieve the size of the field.
15816
15817 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15818
15819         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
15820         with function calls after declarations.  Lay out
15821         neon_float_type_node before further use.
15822
15823 2008-06-11  Richard Guenther  <rguenther@suse.de>
15824
15825         * tree-flow.h (may_point_to_global_var): Declare.
15826         * tree-ssa-alias.c (may_point_to_global_var): New function.
15827         * tree-ssa-sink.c (is_hidden_global_store): Use it.
15828
15829 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
15830
15831         * configure.ac: Teach that fido supports .debug_line.
15832         * configure: Regenerate.
15833
15834 2008-06-10  Tom Tromey  <tromey@redhat.com>
15835
15836         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
15837         debug hook.
15838
15839 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15840
15841         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
15842         (encode_decimal64, decode_decimal64, encode_decimal128,
15843         decode_decimal128): Reverse order of 32-bit parts of value if host
15844         and target endianness differ.
15845
15846 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
15847
15848         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
15849         Avoid division by 0.
15850         (tree_mod_pow2_value_transform): Likewise.
15851         (tree_ic_transform): Likewise.
15852         (tree_stringops_transform): Likewise.
15853         (tree_mod_subtract_transform): Likewise.
15854         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
15855         (copy_edges_for_bb): Likewise.
15856         (initialize_cfun): Likewise.
15857
15858 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15859
15860         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
15861         nonmemory_operand. Add "N" operand constraint.
15862         (*btsi): Ditto.
15863         (*jcc_btdi_mask_rex64): New instruction and split pattern.
15864         (*jcc_btsi_mask): Ditto.
15865         (*jcc_btsi_mask_1): Ditto.
15866
15867 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15868
15869         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
15870         TYPE_CANONICAL for copied element type.
15871
15872 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15873
15874         PR target/36473
15875         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
15876         Add m_CORE2 and m_GENERIC.
15877         * config/i386/predicates.md (bt_comparison_operator): New predicate.
15878         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
15879         (*btsi): Ditto.
15880         (*jcc_btdi_rex64): New instruction and split pattern.
15881         (*jcc_btsi): Ditto.
15882         (*jcc_btsi_1): Ditto.
15883         (*btsq): Fix Intel asm dialect operand order.
15884         (*btrq): Ditto.
15885         (*btcq): Ditto.
15886
15887 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
15888
15889         PR middle-end/36447
15890         * simplify-rtx.c (simplify_subreg): Add check for shift count
15891         greater than size.
15892
15893 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
15894
15895         * doc/md.texi: Synchronize with later constraints.md change.
15896         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
15897         with a C implementation.
15898         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
15899         MFLO handling.
15900         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
15901         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
15902         when moving to and from MD_REGNUM.
15903         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
15904         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
15905         Handle byte and halfword moves.
15906         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
15907         separately.
15908         * config/mips/constraints.md (h): Turn into NO_REGS.
15909         (l, x): Update documentation.
15910         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
15911         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
15912         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
15913         (HILO): New mode iterator.
15914         (MOVE128): Add TI.
15915         (any_div): New code iterator.
15916         (u): Extend code attribute to div and udiv.
15917         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
15918         d_operand in the splitters.  Remove redundant CONST_INT checks.
15919         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
15920         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
15921         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
15922         accordingly, using normal moves instead of unspecs to move LO into
15923         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
15924         (<u>mulsidi3): Handle expansion in C code.
15925         (<u>mulsidi3_32bit_internal): Rename to...
15926         (<u>mulsidi3_32bit): ...this.
15927         (<u>mulsidi3_32bit_r4000): Fix insn separator.
15928         (*<u>mulsidi3_64bit): Rename to...
15929         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
15930         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
15931         to set LO and HI to the multiplication result.  Use a normal move
15932         for MFLO and an unspec for MFHI.
15933         (*<u>mulsidi3_64bit_parts): Replace with...
15934         (<u>mulsidi3_64bit_hilo): ...this new instruction.
15935         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
15936         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
15937         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
15938         instead of HI.  Split the instruction into a separate multiplication
15939         and MFHI if !TARGET_FIX_R4000.
15940         (<su>muldi3_highpart): Likewise.
15941         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
15942         and the "=h" clobber.
15943         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
15944         (<u>mulditi3): New expander.
15945         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
15946         (madsi): Remove "=h" clobber.
15947         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
15948         Force the modulus result to be a GPR and split the instruction into
15949         a division followed by an MFHI after reload.
15950         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
15951         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
15952         the MIPS16 HIGH define_split.
15953         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
15954         of acc<->gpr moves to "multi".
15955         (*movdi_64bit): Replace the single "x" alternative with
15956         alternatives for moving into and out of "a".
15957         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
15958         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
15959         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
15960         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
15961         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
15962         (movti): New expander.
15963         (*movti, *movti_mips16): New insns.
15964         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
15965         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
15966         (mthi<GPR:mode>_<HILO:mode>): Likewise.
15967         * config/mips/predicates.md (fpr_operand): Delete.
15968         (d_operand): New predicate.
15969
15970 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
15971
15972         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
15973         failure on some Bourne shells.
15974         (x86_64-*-*): Ditto.
15975
15976 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
15977
15978         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
15979
15980 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
15981
15982         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
15983         (sparc-sun-solaris2*): Likewise.
15984
15985 2008-06-09  Arnaud Charlet  <charlet@adacore.com
15986
15987         * doc/install.texi: Update requirements to build the Ada compiler.
15988
15989 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
15990
15991         * df-scan.c (struct df_scan_problem_data): Remove the
15992         mw_link_pool alloc pool.
15993         (df_scan_free_internal): Don't free it.
15994         (df_scan_alloc): Don't allocate it.
15995         * df.h (struct df_link): Update comment.
15996
15997 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
15998
15999         * except.h: Correct checks for when SJLJ exceptions must be used.
16000
16001 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16002
16003         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
16004         default.
16005
16006 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
16007
16008         PR tree-optimization/36218
16009         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
16010         configure for the build system.
16011         (BUILD_LDFLAGS): Define.
16012         * configure: Regenerate.
16013         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
16014
16015 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
16016
16017         PR target/36424
16018         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
16019         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
16020         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
16021
16022 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
16023
16024         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
16025
16026 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
16027
16028         * config.gcc (Obsolete configurations): Remove list of
16029         configurations.
16030         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
16031         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
16032         targets matched by those patterns.
16033         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
16034         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
16035         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
16036         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
16037         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
16038         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
16039         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
16040         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
16041         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
16042         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
16043         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
16044         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
16045         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
16046         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
16047         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
16048         Make code for Solaris 7 and greater unconditional for Solaris.
16049         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
16050         Remove --with-* handling.
16051         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
16052         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
16053         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
16054         LINK_OS_WINDISS_SPEC): Remove.
16055         * config/rs6000/sysv4.opt (mwindiss): Remove.
16056         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
16057         * configure: Regenerate.
16058         * doc/cpp.texi: Don't mention BeOS.
16059         * doc/extend.texi (interrupt): Don't mention MS1.
16060         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
16061         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
16062         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
16063         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
16064         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
16065         Remove.
16066         * doc/invoke.texi (MT Options): Remove.
16067         (-mwindiss): Remove.
16068         (CRIS Options): Remove cris-axis-aout references.
16069         (HPPA Options): Don't mention hppa1.1-*-pro.
16070         * doc/md.texi: (MorphoTech family): Remove.
16071         * libgcc2.c: Don't handle UWIN.
16072         * config/alpha/t-unicosmk: Remove.
16073         * config/alpha/unicosmk.h: Remove.
16074         * config/arm/kaos-arm.h: Remove.
16075         * config/arm/kaos-strongarm.h: Remove.
16076         * config/arm/strongarm-coff.h: Remove.
16077         * config/arm/strongarm-elf.h: Remove.
16078         * config/arm/strongarm-pe.h: Remove.
16079         * config/arm/t-strongarm-pe: Remove.
16080         * config/arm/t-xscale-coff: Remove.
16081         * config/arm/t-xscale-elf: Remove.
16082         * config/arm/xscale-coff.h: Remove.
16083         * config/arm/xscale-elf.h: Remove.
16084         * config/chorus.h: Remove.
16085         * config/cris/aout.h: Remove.
16086         * config/cris/aout.opt: Remove.
16087         * config/cris/t-aout: Remove.
16088         * config/i386/beos-elf.h: Remove.
16089         * config/i386/kaos-i386.h: Remove.
16090         * config/i386/ptx4-i.h: Remove.
16091         * config/i386/sco5.h: Remove.
16092         * config/i386/sco5.opt: Remove.
16093         * config/i386/sysv4-cpp.h: Remove.
16094         * config/i386/sysv5.h: Remove.
16095         * config/i386/t-beos: Remove.
16096         * config/i386/t-sco5: Remove.
16097         * config/i386/t-uwin: Remove.
16098         * config/i386/uwin.asm: Remove.
16099         * config/i386/uwin.h: Remove.
16100         * config/kaos.h: Remove.
16101         * config/mips/windiss.h: Remove.
16102         * config/mt: Remove directory.
16103         * config/pa/pa-osf.h: Remove.
16104         * config/pa/pa-pro-end.h: Remove.
16105         * config/pa/t-pro: Remove.
16106         * config/ptx4.h: Remove.
16107         * config/rs6000/beos.h: Remove.
16108         * config/rs6000/kaos-ppc.h: Remove.
16109         * config/rs6000/t-beos: Remove.
16110         * config/rs6000/windiss.h: Remove.
16111         * config/sh/kaos-sh.h: Remove.
16112         * config/sol2-6.h: Remove.
16113         * config/sparc/sol26-sld.h: Remove.
16114         * config/sparc/sysv4-only.h: Remove.
16115         * config/vax/bsd.h: Remove.
16116         * config/vax/t-memfuncs: Remove.
16117         * config/vax/ultrix.h: Remove.
16118         * config/vax/vaxv.h: Remove.
16119         * config/windiss.h: Remove.
16120
16121 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
16122
16123         PR rtl-optimization/36438
16124         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
16125         for vector shifts with constant scalar shift operands.
16126
16127 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
16128
16129         * doc/invoke.texi: Document -march=xlr.
16130         * config/mips/xlr.md: New file.
16131         * config/mips/mips.md: Include it.
16132         (cpu): Add "xlr".
16133         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
16134         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
16135         (mips_rtx_cost_data): Likewise.
16136
16137 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16138
16139         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
16140         PRE_INC and PRE_DEC cases.
16141
16142 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16143
16144         PR rtl-optimization/36419
16145         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
16146         the emitting jump insn.
16147
16148         PR target/36362
16149         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
16150         is not bool, boolify the whole *expr_p and convert to the desired type.
16151
16152 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16153
16154         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
16155         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
16156         Add omp_private_outer_ref hook, add another argument to
16157         omp_clause_default_ctor hook.
16158         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
16159         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
16160         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
16161         hook_tree_tree_tree_tree_null.
16162         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
16163         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
16164         * hooks.c (hook_tree_tree_tree_tree_null): New function.
16165         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
16166         * tree.def (OMP_TASK): New tree code.
16167         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
16168         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
16169         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
16170         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
16171         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
16172         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
16173         OMP_CLAUSE_COLLAPSE_EXPR): Define.
16174         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16175         (OMP_DIRECTIVE_P): Add OMP_TASK.
16176         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
16177         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
16178         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
16179         and OMP_CLAUSE_UNTIED entries.
16180         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
16181         num_ops to 2.
16182         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16183         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
16184         * tree-pretty-print.c (dump_omp_clause): Handle
16185         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
16186         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16187         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
16188         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
16189         warning about unsigned iterators.  Change decl/init/cond/incr
16190         arguments to TREE_VECs, check arguments for all collapsed loops.
16191         (c_finish_omp_taskwait): New function.
16192         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
16193         ws_clauses.
16194         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
16195         default_function_array_conversion on init.  Add par_clauses argument.
16196         If decl is present in parallel's lastprivate clause, change it to
16197         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
16198         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
16199         collapse count in clauses.
16200         (c_parser_omp_for, c_parser_omp_parallel): Adjust
16201         c_parser_omp_for_loop callers.
16202         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
16203         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
16204         (c_parser_omp_clause_name): Handle collapse and untied clauses.
16205         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
16206         functions.
16207         (c_parser_omp_clause_schedule): Handle schedule(auto).
16208         Include correct location in the error message.
16209         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
16210         and PRAGMA_OMP_CLAUSE_UNTIED.
16211         (OMP_TASK_CLAUSE_MASK): Define.
16212         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
16213         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
16214         * tree-nested.c (convert_nonlocal_omp_clauses,
16215         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
16216         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
16217         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16218         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
16219         OMP_CLAUSE_DECL.
16220         (conver_nonlocal_reference, convert_local_reference,
16221         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
16222         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
16223         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
16224         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
16225         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
16226         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
16227         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
16228         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
16229         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16230         OMP_CLAUSE_UNTIED.
16231         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
16232         * c-common.h (c_finish_omp_taskwait): New prototype.
16233         * gimple-low.c (lower_stmt): Handle OMP_TASK.
16234         * tree-parloops.c (create_parallel_loop): Create 1 entry
16235         vectors for OMP_FOR_{INIT,COND,INCR}.
16236         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16237         (make_edges): Handle OMP_TASK.
16238         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
16239         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16240         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
16241         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
16242         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
16243         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16244         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16245         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
16246         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
16247         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
16248         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
16249         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
16250         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
16251         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
16252         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
16253         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
16254         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
16255         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
16256         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
16257         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
16258         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
16259         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
16260         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
16261         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
16262         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
16263         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
16264         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
16265         original iterator is present in lastprivate clause or if
16266         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
16267         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16268         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
16269         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
16270         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
16271         if it is set, lookup var in outer contexts too.  Handle
16272         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
16273         to be implicitly determined firstprivate for task regions.
16274         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
16275         if it is set, lookup var in outer contexts too.  Set
16276         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
16277         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
16278         OMP_CLAUSE_UNTIED.  Take region_type as last argument
16279         instead of in_parallel and in_combined_parallel.
16280         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
16281         Adjust callers.
16282         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
16283         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
16284         (new_omp_context): Set default_kind to
16285         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
16286         (omp_region_type): New enum.
16287         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
16288         fields, add region_type.
16289         (new_omp_context): Take region_type as argument instead of is_parallel
16290         and is_combined_parallel.
16291         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
16292         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
16293         ctx->is_combined_parallel checks.
16294         (gimplify_omp_task): New function.
16295         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16296         OMP_CLAUSE_UNTIED.
16297         * omp-low.c (extract_omp_for_data): Use schedule(static)
16298         for schedule(auto).  Handle pointer and unsigned iterators.
16299         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
16300         Add loops argument.  Extract data for collapsed OMP_FOR loops.
16301         (expand_parallel_call): Assert sched_kind isn't auto,
16302         map runtime schedule to index 3.
16303         (struct omp_for_data_loop): New type.
16304         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
16305         Add loop, loops, collapse and iter_type fields.
16306         (workshare_safe_to_combine_p): Disallow combined for if
16307         iter_type is unsigned long long.  Don't combine collapse > 1 loops
16308         unless all bounds and steps are constant.  Adjust extract_omp_for_data
16309         caller.
16310         (expand_omp_for_generic): Handle pointer, unsigned and long long
16311         iterators.  Handle collapsed OMP_FOR loops.  Adjust
16312         for struct omp_for_data changes.  If libgomp function doesn't return
16313         boolean_type_node, add comparison of the return value with 0.
16314         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
16315         pointer, unsigned and long long iterators.  Adjust for struct
16316         omp_for_data changes.
16317         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
16318         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
16319         unsigned long long.  Allocate loops array, pass it to
16320         extract_omp_for_data.  For collapse > 1 loops use always
16321         expand_omp_for_generic.
16322         (omp_context): Add sfield_map and srecord_type fields.
16323         (is_task_ctx, lookup_sfield): New functions.
16324         (use_pointer_for_field): Use is_task_ctx helper.  Change first
16325         argument's type from const_tree to tree.  Clarify comment.
16326         In OMP_TASK disallow copy-in/out sharing.
16327         (build_sender_ref): Call lookup_sfield instead of lookup_field.
16328         (install_var_field): Add mask argument.  Populate both record_type
16329         and srecord_type if needed.
16330         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
16331         in srecord_type.
16332         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
16333         and DECL_FIELD_OFFSET.
16334         (scan_sharing_clauses): Adjust install_var_field callers.  For
16335         firstprivate clauses on explicit tasks allocate the var by value in
16336         record_type unconditionally, rather than by reference.
16337         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
16338         Use is_taskreg_ctx instead of is_parallel_ctx.
16339         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16340         (create_omp_child_function_name): Add task_copy argument, use
16341         *_omp_cpyfn* names if it is true.
16342         (create_omp_child_function): Add task_copy argument, if true create
16343         *_omp_cpyfn* helper function.
16344         (scan_omp_parallel): Adjust create_omp_child_function callers.
16345         Rename parallel_nesting_level to taskreg_nesting_level.
16346         (scan_omp_task): New function.
16347         (lower_rec_input_clauses): Don't run constructors for firstprivate
16348         explicit task vars which are initialized by *_omp_cpyfn*.
16349         Pass outer var ref to omp_clause_default_ctor hook if
16350         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
16351         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
16352         OMP_CLAUSE_REDUCTION_INIT.
16353         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
16354         avoid duplicate setting of fields.  Handle
16355         OMP_CLAUSE_PRIVATE_OUTER_REF.
16356         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
16357         copy-out if TREE_READONLY, only copy-in.
16358         (expand_task_copyfn): New function.
16359         (expand_task_call): New function.
16360         (struct omp_taskcopy_context): New type.
16361         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
16362         New functions.
16363         (lower_omp_parallel): Rename to...
16364         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16365         Call create_task_copyfn if srecord_type is needed.  Adjust
16366         sender_decl type.
16367         (task_shared_vars): New variable.
16368         (check_omp_nesting_restrictions): Warn if work-sharing,
16369         barrier, master or ordered region is closely nested inside OMP_TASK.
16370         Add warnings for barrier if closely nested inside of work-sharing,
16371         ordered, or master region.
16372         (scan_omp_1): Call check_omp_nesting_restrictions even for
16373         GOMP_barrier calls.  Rename parallel_nesting_level to
16374         taskreg_nesting_level.  Handle OMP_TASK.
16375         (lower_lastprivate_clauses): Even if some lastprivate is found on a
16376         work-sharing construct, continue looking for them on parent parallel
16377         construct.
16378         (lower_omp_for_lastprivate): Add lastprivate clauses
16379         to the beginning of dlist rather than end.  Adjust for struct
16380         omp_for_data changes.
16381         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
16382         not after it.  Handle collapsed OMP_FOR loops, adjust for
16383         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
16384         (get_ws_args_for): Adjust extract_omp_for_data caller.
16385         (scan_omp_for): Handle collapsed OMP_FOR
16386         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16387         (lower_omp_single_simple): If libgomp function doesn't return
16388         boolean_type_node, add comparison of the return value with 0.
16389         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
16390         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
16391         (parallel_nesting_level): Rename to...
16392         (taskreg_nesting_level): ... this.
16393         (is_taskreg_ctx): New function.
16394         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
16395         of is_parallel_ctx.
16396         (execute_lower_omp): Rename parallel_nesting_level to
16397         taskreg_nesting_level.
16398         (expand_omp_parallel): Rename to...
16399         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16400         Call omp_task_call for OMP_TASK regions.
16401         (expand_omp): Adjust caller, handle OMP_TASK.
16402         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
16403
16404         * bitmap.c (bitmap_default_obstack_depth): New variable.
16405         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
16406         if argument is NULL and bitmap_default_obstack is already initialized.
16407         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
16408         at the end.
16409         * matrix-reorg.c (matrix_reorg): Likewise.
16410
16411 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
16412
16413         * config/i386/i386.md (*indirect_jump): Macroize using P
16414         mode iterator.  Remove !TARGET_64BIT from insn constraints.
16415         (*tablejump_1): Ditto.
16416         (*indirect_jump_rex64): Remove insn pattern.
16417         (*tablejump_1_rex64): Ditto.
16418         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
16419         and eh_return_si insn patterns.
16420
16421 2008-06-06  Richard Guenther  <rguenther@suse.de>
16422
16423         * tree-ssa-structalias.c (merge_smts_into): Remove.
16424         (find_what_p_points_to): Do not bother to compute the
16425         points-to set for pt_anything pointers.
16426         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
16427         for pt_anything pointers is ok.
16428
16429 2008-06-06  Jan Hubicka  <jh@suse.cz>
16430
16431         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
16432
16433 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16434
16435         * cgraph.c: Fix typos in comments.
16436         (cgraph_availability_names): Fix string typo.
16437         * fold-const.c: Fix typos in comments.
16438         (fold_binary): Fix typo in warning.
16439         * genautomata.c: Fix typos in comments.
16440         (check_presence_pattern_sets): Fix typo in local variable.
16441         (output_description): Fix typo in output.
16442         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
16443         * hwint.h: Likewise.
16444         * matrix-reorg.c (check_allocation_function): Likewise.
16445         * omega.c (smooth_weird_equations): Likewise.
16446         * auto-inc-dec.c: Fix typos in comments.
16447         * bb-reorder.c: Likewise.
16448         * builtins.c: Likewise.
16449         * c-common.c: Likewise.
16450         * c-cppbuiltin.c: Likewise.
16451         * c-parser.c: Likewise.
16452         * c-pretty-print.c: Likewise.
16453         * cfgcleanup.c: Likewise.
16454         * cfgexpand.c: Likewise.
16455         * cfghooks.c: Likewise.
16456         * cfglayout.c: Likewise.
16457         * cfgloopmanip.c: Likewise.
16458         * cgraphunit.c: Likewise.
16459         * coverage.c: Likewise.
16460         * dbxout.c: Likewise.
16461         * df-byte-scan.c: Likewise.
16462         * df-core.c: Likewise.
16463         * df-problems.c: Likewise.
16464         * df-scan.c: Likewise.
16465         * dfp.c: Likewise.
16466         * dominance.c: Likewise.
16467         * domwalk.c: Likewise.
16468         * dse.c: Likewise.
16469         * dwarf2out.c: Likewise.
16470         * emit-rtl.c: Likewise.
16471         * et-forest.c: Likewise.
16472         * function.c: Likewise.
16473         * function.h: Likewise.
16474         * gcc.c: Likewise.
16475         * gcov-io.c: Likewise.
16476         * gcov.c: Likewise.
16477         * gcse.c: Likewise.
16478         * genattrtab.c: Likewise.
16479         * ggc-page.c: Likewise.
16480         * gimplify.c: Likewise.
16481         * gthr-lynx.h: Likewise.
16482         * haifa-sched.c: Likewise.
16483         * ipa-cp.c: Likewise.
16484         * ipa-inline.c: Likewise.
16485         * ipa-prop.h: Likewise.
16486         * ipa-pure-const.c: Likewise.
16487         * ipa-struct-reorg.c: Likewise.
16488         * ipa-struct-reorg.h: Likewise.
16489         * ipa-type-escape.c: Likewise.
16490         * ipa.c: Likewise.
16491         * loop-doloop.c: Likewise.
16492         * mips-tfile.c: Likewise.
16493         * mkmap-flat.awk: Likewise.
16494         * mkmap-symver.awk: Likewise.
16495         * modulo-sched.c: Likewise.
16496         * omp-low.c: Likewise.
16497         * optabs.c: Likewise.
16498         * optabs.h: Likewise.
16499         * opts.c: Likewise.
16500         * passes.c: Likewise.
16501         * postreload-gcse.c: Likewise.
16502         * postreload.c: Likewise.
16503         * predict.c: Likewise.
16504         * pretty-print.h: Likewise.
16505         * profile.c: Likewise.
16506         * protoize.c: Likewise.
16507         * ra-conflict.c: Likewise.
16508         * real.c: Likewise.
16509         * recog.c: Likewise.
16510         * regclass.c: Likewise.
16511         * regs.h: Likewise.
16512         * reload.c: Likewise.
16513         * rtl-error.c: Likewise.
16514         * rtlanal.c: Likewise.
16515         * scan.h: Likewise.
16516         * sched-rgn.c: Likewise.
16517         * see.c: Likewise.
16518         * stmt.c: Likewise.
16519         * target.h: Likewise.
16520         * tree-dfa.c: Likewise.
16521         * tree-eh.c: Likewise.
16522         * tree-flow-inline.h: Likewise.
16523         * tree-inline.c: Likewise.
16524         * tree-into-ssa.c: Likewise.
16525         * tree-loop-distribution.c: Likewise.
16526         * tree-nested.c: Likewise.
16527         * tree-parloops.c: Likewise.
16528         * tree-pass.h: Likewise.
16529         * tree-pretty-print.c: Likewise.
16530         * tree-profile.c: Likewise.
16531         * tree-scalar-evolution.c: Likewise.
16532         * tree-sra.c: Likewise.
16533         * tree-ssa-alias-warnings.c: Likewise.
16534         * tree-ssa-ccp.c: Likewise.
16535         * tree-ssa-coalesce.c: Likewise.
16536         * tree-ssa-dom.c: Likewise.
16537         * tree-ssa-dse.c: Likewise.
16538         * tree-ssa-forwprop.c: Likewise.
16539         * tree-ssa-live.c: Likewise.
16540         * tree-ssa-live.h: Likewise.
16541         * tree-ssa-loop-im.c: Likewise.
16542         * tree-ssa-loop-ivopts.c: Likewise.
16543         * tree-ssa-loop-niter.c: Likewise.
16544         * tree-ssa-loop-prefetch.c: Likewise.
16545         * tree-ssa-phiopt.c: Likewise.
16546         * tree-ssa-phiprop.c: Likewise.
16547         * tree-ssa-sccvn.c: Likewise.
16548         * tree-ssa-ter.c: Likewise.
16549         * tree-ssa-threadupdate.c: Likewise.
16550         * tree-ssa.c: Likewise.
16551         * tree-vect-analyze.c: Likewise.
16552         * tree-vect-transform.c: Likewise.
16553         * tree-vectorizer.c: Likewise.
16554         * tree-vn.c: Likewise.
16555         * tree-vrp.c: Likewise.
16556         * tree.c: Likewise.
16557         * tree.def: Likewise.
16558         * tree.h: Likewise.
16559         * unwind-dw2-fde.c: Likewise.
16560         * unwind.inc: Likewise.
16561         * value-prof.c: Likewise.
16562         * vmsdbgout.c: Likewise.
16563
16564 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
16565
16566         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
16567         always place FP constants in the TOC for TARGET_POWERPC64.
16568         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
16569
16570 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
16571
16572         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
16573         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
16574         enable for TARGET_E500_DOUBLE.
16575         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
16576         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
16577         floating-point modes like integer modes for E500 double.
16578         (rs6000_legitimate_offset_address_p): Likewise.
16579         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
16580         addressing for DDmode for E500 double.
16581         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
16582         modes as using 64-bits of registers for E500 double.
16583         (spe_build_register_parallel): Do not handle DDmode or TDmode.
16584         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
16585         specially for E500 double.
16586         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
16587         TDmode for E500 double.
16588         (rs6000_gimplify_va_arg): Only handle SDmode in registers
16589         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
16590         (rs6000_split_multireg_move): Do not handle TDmode specially for
16591         E500 double.
16592         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
16593         using 64-bit registers for E500 double.
16594         (emit_frame_save): Do not handle DDmode specially for E500 double.
16595         (gen_frame_mem_offset): Likewise.
16596         (rs6000_function_value): Do not call spe_build_register_parallel
16597         for DDmode or TDmode.
16598         (rs6000_libcall_value): Likewise.
16599         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
16600         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
16601         for E500 double.
16602
16603 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
16604
16605         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
16606         in comments.
16607
16608 2008-06-04  Junjie Gu <jgu@tensilica.com>
16609
16610         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
16611         comparison for frame pointers.
16612
16613 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16614
16615         PR target/27386
16616         * config/avr/avr.h (PUSH_ROUNDING): Remove.
16617
16618 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16619
16620         PR target/30243
16621         * builtins.c (expand_builtin_signbit): Don't take lowpart when
16622         register is already smaller or equal to required mode.
16623
16624 2008-06-04  Xinliang David Li  <davidxl@google.com>
16625
16626         * tree-call-cdce.c: New file.
16627         (cond_dead_built_in_calls): New static variable.
16628         (input_domain): New struct.
16629         (check_pow): New function.
16630         (check_builtin_call): Ditto.
16631         (check_target_format): Ditto.
16632         (is_call_dce_candidate): Ditto.
16633         (gen_one_condition): Ditto.
16634         (gen_conditions_for_domain): Ditto.
16635         (get_domain): Ditto.
16636         (gen_conditions_for_pow_cst_base): Ditto.
16637         (gen_conditions_for_pow_int_base): Ditto.
16638         (gen_conditions_for_pow): Ditto.
16639         (get_no_error_domain): Ditto.
16640         (gen_shrink_wrap_conditions): Ditto.
16641         (shrink_wrap_one_built_in_call): Ditto.
16642         (shink_wrap_conditional_dead_built_in_calls): Ditto.
16643         (tree_call_cdce): Ditto.
16644         (gate_call_cdce): Ditto.
16645         (pass_call_cdce): New gimple pass.
16646         * passes.c: (init_optimization_passes): New pass.
16647         * tree-pass.h: New pass declaration.
16648         * opts.c (decode_options): New flag setting.
16649         * common.opt: Add -ftree-builtin-call-dce flag.
16650         * Makefile.in: Add new source file.
16651         * tempvar.def: New tv_id.
16652         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
16653
16654 2008-06-04  Richard Guenther  <rguenther@suse.de>
16655
16656         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
16657         (is_call_clobbered): Always check var_ann->call_clobbered.
16658         (mark_call_clobbered): Always set var_ann->call_clobbered.
16659         (clear_call_clobbered): Always clear var_ann->call_clobbered.
16660         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
16661         (reset_alias_info): Clear call clobbering info on MTAGs and
16662         globals as well.
16663         (set_pt_anything): Set pt_global_mem.
16664         (create_tag_raw): Adjust comment.
16665         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
16666
16667 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
16668             Maxim Kuvyrkov  <maxim@codesourcery.com>
16669
16670         * config/m68k/m68k.opt (mxgot): New option.
16671         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
16672         (m68k_output_addr_const_extra): New.
16673         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
16674         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
16675         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
16676         * doc/invoke.texi (M680x0 Options): Document -mxgot.
16677
16678 2008-06-04  Richard Guenther  <rguenther@suse.de>
16679
16680         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
16681         negative or non-representable offsets.
16682
16683 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
16684
16685         * config/i386/i386.c (ix86_gen_leave): New.
16686         (ix86_gen_pop1): Likewise.
16687         (ix86_gen_add3): Likewise.
16688         (ix86_gen_sub3): Likewise.
16689         (ix86_gen_sub3_carry): Likewise.
16690         (ix86_gen_one_cmpl2): Likewise.
16691         (ix86_gen_monitor): Likewise.
16692         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
16693         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
16694         ix86_gen_one_cmpl2 and ix86_gen_monitor.
16695         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
16696         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
16697         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
16698         (ix86_expand_epilogue): Updated.
16699         (print_operand): Handle integer register operand for 'z'.
16700         (ix86_expand_strlensi_unroll_1): Likewise.
16701         (ix86_expand_strlen): Likewise.
16702         (ix86_expand_builtin): Likewise.
16703         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
16704         mov{q}/mov{l} and add{q}/add{l}.
16705
16706 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16707
16708         * config/i386/i386.md (P): New mode iterator.
16709         (SFmode push_operand splitter): Macroize DImode and SImode pushes
16710         using P mode iterator.
16711         (DFmode push_operand splitter): Ditto.
16712         (XFmode push_operand splitter): Ditto.
16713         (DFmode float_extend SFmode push_operand splitter): Ditto.
16714         (XFmode float_extend SFmode push_operand splitter): Do not generate
16715         SImode pushes for 64bit target.  Macroize Dimode and SImode
16716         pushes using P mode iterator.
16717         (XFmode float_extend DFmode push_operand splitter): Ditto.
16718
16719 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16720
16721         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
16722         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
16723         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
16724         return type to int.
16725         (ix86_call_abi_override): Remove check for call_used_regs.
16726
16727 2008-06-03  Richard Guenther  <rguenther@suse.de>
16728
16729         * tree-ssa-structalias.c (find_func_aliases): Add constraints
16730         for the lhs of calls if the return type contains pointers.
16731
16732 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16733
16734         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
16735         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
16736         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
16737         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
16738         of cfun and DEFAULT_ABI to deceide abi mode.
16739         (DEFAULT_ABI): New.
16740         (REG_PARM_STACK_SPACE): Removed.
16741         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
16742         (STACK_BOUNDARY): Use default target to deceide stack boundary.
16743         * config/i386/i386-protos.h (ix86_cfun_abi): New.
16744         (ix86_function_abi): Likewise.
16745         (ix86_function_type_abi): Likewise.
16746         (ix86_call_abi_override): Likewise.
16747         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
16748         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
16749         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
16750         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
16751         specific defines.
16752         (X86_64_REGPARM_MAX): New.
16753         (X86_64_SSE_REGPARM_MAX): New.
16754         (X64_REGPARM_MAX): New.
16755         (X64_SSE_REGPARM_MAX): New.
16756         (X86_32_REGPARM_MAX): New.
16757         (X86_32_SSE_REGPARM_MAX): New.
16758         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
16759         (ix86_function_regparm): Handle user calling abi.
16760         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
16761         by DEFAULT_ABI versus SYSV_ABI check.
16762         (ix86_reg_parm_stack_space): New.
16763         (ix86_function_type_abi): New.
16764         (ix86_call_abi_override): New.
16765         (ix86_function_abi): New.
16766         (ix86_cfun_abi): New.
16767         (init_cumulative_args): Call abi specific initialization.
16768         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
16769         (function_arg_64): Extend SSE_REGPARM_MAX check.
16770         (function_arg (): Remove TARGET_64BIT_MS_ABI.
16771         (ix86_pass_by_reference): Likewise.
16772         (ix86_function_value_regno_p): Likewise.
16773         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
16774         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
16775         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
16776         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
16777         (setup_incoming_varargs_64): Adjust regparm for call abi.
16778         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
16779         (ix86_va_start): Likewise.
16780         (ix86_gimplify_va_arg): Likewise.
16781         (ix86_expand_prologue): Likewise.
16782         (output_pic_addr_const): Likewise.
16783         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
16784         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
16785         (x86_output_mi_thunk): Likewise.
16786         (x86_function_profiler): Likewise.
16787         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
16788         (SYSV_ABI, MS_ABI): New constants.
16789         (DEFAULT_ABI): New.
16790         (init_regs): Add prototype of function in regclass.c file.
16791         (OVERRIDE_ABI_FORMAT): New.
16792         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
16793         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
16794         (OUTGOING_REG_PARM_STACK_SPACE): New.
16795         (ix86_reg_parm_stack_space): New prototype.
16796         (CUMULATIVE_ARGS): Add call_abi member.
16797         (machine_function): Add call_abi member.
16798         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
16799         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
16800
16801 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
16802
16803         PR target/34879
16804         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
16805         (avr_builtin_setjmp_frame_value): New function.
16806         * config/avr/avr.md (nonlocal_goto_receiver): Define.
16807         (nonlocal_goto): Define.
16808
16809 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
16810
16811         * config/mips/mips.c (mips_emit_loadgp): Return early if
16812         there is nothing do to, otherwise emit a blockage if
16813         !TARGET_EXPLICIT_RELOCS || crtl->profile.
16814         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
16815
16816 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16817
16818         * configure.ac: Drop unneeded backslash ending up in config.in.
16819         * acinclude.m4: Likewise.
16820         * config.in: Regenerate.
16821
16822 2008-05-26  Jan Hubicka  <jh@suse.cz>
16823
16824         * predict.c (maybe_hot_frequency_p): Break out of...
16825         (maybe_hot_bb_p): ... here.
16826         (maybe_hot_edge_p): New.
16827         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
16828         * basic-block.h (maybe_hot_edge_p): Declare.
16829
16830 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16831
16832         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
16833         (*cmpfp_<mode>_cc): Ditto.
16834         (*fp_jcc_8<mode>_387): Ditto.
16835         (*fop_<MODEF:mode>_2_i387): Ditto.
16836         (*fop_<MODEF:mode>_3_i387): Ditto.
16837         (*fop_xf_2_i387): Ditto.
16838         (*fop_xf_3_i387): Ditto.
16839
16840 2008-06-02  Tomas Bily  <tbily@suse.cz>
16841
16842         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
16843
16844 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16845
16846         * config/mips/mips.c (mips_valid_offset_p): New function.
16847         (mips_valid_lo_sum_p): Likewise.
16848         (mips_classify_address): Use them.
16849         (mips_force_address): New function.
16850         (mips_legitimize_address): Use it.
16851         * config/mips/mips.md (MOVE128): New mode iterator.
16852         (movtf): Require TARGET_64BIT.  Remove empty strings.
16853         (*movtf_internal): Rename to...
16854         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
16855         of "R" and use {,fp}{load,store} attributes instead of "multi".
16856         Use a separate define_split.
16857         (*movtf_mips16): New pattern.
16858
16859 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16860
16861         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
16862         * config/mips/mips.c (mips_expand_before_return): New function.
16863         (mips_expand_epilogue): Call it.
16864         * config/mips/mips.md (return): Turn into a define_expand.
16865         (*return): New insn.
16866
16867 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16868
16869         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
16870         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
16871         functions.  Do not emit uses and clobbers of CONCATs; individually
16872         use and clobber their operands.
16873         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
16874         gen_clobber, emit_use and gen_use.
16875         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
16876         (expand_builtin_return): Likewise.
16877         * cfgbuild.c (count_basic_blocks): Likewise.
16878         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
16879         * explow.c (emit_stack_restore): Likewise.
16880         * expmed.c (extract_bit_field_1): Likewise.
16881         * expr.c (convert_move, emit_move_complex_parts): Likewise.
16882         (emit_move_multi_word, store_constructor): Likewise.
16883         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
16884         (thread_prologue_and_epilogue_insns): Likewise.
16885         * lower-subreg.c (resolve_simple_move): Likewise.
16886         * optabs.c (widen_operand, expand_binop): Likewise.
16887         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
16888         * reload.c (find_reloads): Likewise.
16889         * reload1.c (eliminate_regs_in_insn): Likewise.
16890         * stmt.c (expand_nl_goto_receiver): Likewise.
16891         * config/alpha/alpha.md (builtin_longjmp): Likewise.
16892         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
16893         * config/arm/arm.c (arm_load_pic_register): Likewise.
16894         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
16895         * config/arm/arm.md (untyped_return): Likewise.
16896         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
16897         * config/avr/avr.c (expand_prologue): Likewise.
16898         * config/bfin/bfin.c (do_unlink): Likewise.
16899         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
16900         * config/cris/cris.c (cris_expand_prologue): Likewise.
16901         * config/darwin.c (machopic_indirect_data_reference): Likewise.
16902         (machopic_legitimize_pic_address): Likewise.
16903         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
16904         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
16905         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
16906         (ix86_expand_convert_uns_didf_sse): Likewise.
16907         (ix86_expand_vector_init_general): Likewise.
16908         * config/ia64/ia64.md (eh_epilogue): Likewise.
16909         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
16910         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
16911         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
16912         (config/iq2000/iq2000.c): Likewise.
16913         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
16914         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
16915         (builtin_longjmp): Likewise.
16916         * config/mn10300/mn10300.md (call, call_value): Likewise.
16917         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
16918         * config/pdp11/pdp11.md (abshi2): Likewise.
16919         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
16920         * config/s390/s390.c (s390_emit_prologue): Likewise.
16921         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
16922         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
16923         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
16924         * config/sh/sh.c (prepare_move_operands): Likewise.
16925         (output_stack_adjust, sh_expand_epilogue): Likewise.
16926         (sh_set_return_address, sh_expand_t_scc): Likewise.
16927         * config/sparc/sparc.c (load_pic_register): Likewise.
16928         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
16929         * config/spu/spu.c (spu_expand_epilogue): Likewise.
16930         * config/v850/v850.c (expand_epilogue): Likewise.
16931
16932 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
16933
16934         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
16935         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
16936         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
16937         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
16938         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
16939         stack pointer register.
16940         (output_movhi): Remove code for interrupt specific writing to the
16941         stack pointer register.
16942
16943 2008-05-31  Richard Guenther  <rguenther@suse.de>
16944
16945         PR tree-optimization/34244
16946         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
16947         (tree_expr_nonzero_warnv_p): Likewise.
16948         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
16949         ssa_name_nonnegative_p.
16950         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
16951         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
16952         not tree_expr_nonzero_warnv_p.
16953
16954         PR tree-optimization/36262
16955         Revert
16956         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
16957
16958         PR tree-optimization/34244
16959         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
16960         (record_numbers_of_iterations): New function.
16961         (execute_vrp): Cache the numbers of iterations of loops.
16962         * tree-scalar-evolution.c (scev_reset_except_niters):
16963         New function.
16964         (scev_reset): Use scev_reset_except_niters.
16965         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
16966
16967 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
16968
16969         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
16970         __WORKAROUND_RETS when appropriate.
16971
16972 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16973
16974         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
16975         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
16976         mode iterator.
16977         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
16978         *fop_df_comm_sse insn patterns using MODEF mode iterator.
16979         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
16980         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
16981         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
16982         *fop_df_1_mixed insn patterns using MODEF mode iterator.
16983         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
16984         *fop_df_1_sse insn patterns using MODEF mode iterator.
16985         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
16986         *fop_df_1_i387 insn patterns using MODEF mode iterator.
16987         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
16988         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
16989         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
16990         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
16991         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
16992         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
16993         (*fop_xf_4_i387): Use <MODE> for mode attribute.
16994         (*fop_xf_5_i387): Ditto.
16995         (*fop_xf_6_i387): Ditto.
16996
16997 2008-05-30  Richard Guenther  <rguenther@suse.de>
16998
16999         * builtins.c (build_string_literal): Avoid generating
17000         a non-gimple_val result.
17001
17002 2008-05-30  DJ Delorie  <dj@redhat.com>
17003
17004         * exec-tool.in: Use an environment variable (private) instead of a
17005         file (shared) as a semaphore, so as to not break parallel builds.
17006
17007 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17008
17009         * optabs.c (maybe_encapsulate_block): Remove.
17010         (emit_libcall_block): Adjust accordingly.
17011         * optabs.h (maybe_encapsulate_block): Remove prototype.
17012
17013         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
17014         Don't use maybe_encapsulate_block.
17015
17016 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17017
17018         * config/rs6000/rs6000.c (rs6000_legitimize_address,
17019         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
17020         rtx is a SYMBOL_REF before calling get_pool_constant.
17021
17022 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
17023
17024         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
17025
17026 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
17027
17028         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
17029         rather than OS names to choose INO_T_EQ definition.
17030         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
17031         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
17032
17033 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
17034
17035         PR target/36348
17036         * config/darwin-f.c: New.
17037         * config/t-darwin: Added rule to build darwin-f.o.
17038         * config.gcc: Defined new variable, fortran_target_objs.
17039         (*-*-darwin*): Set fortran_target_objs.
17040         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
17041         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
17042         * configure: Regenerated.
17043
17044 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
17045
17046         PR target/35771
17047         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
17048         canonical type if needed.
17049
17050 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17051
17052         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
17053
17054 2008-05-29  Richard Guenther  <rguenther@suse.de>
17055
17056         PR tree-optimization/36343
17057         PR tree-optimization/36346
17058         PR tree-optimization/36347
17059         * tree-flow.h (clobber_what_p_points_to): Declare.
17060         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
17061         pointed-to variable is dereferenced is irrelevant to whether
17062         the pointer can access the pointed-to variable.
17063         (clobber_what_p_points_to): New function.
17064         * tree-ssa-alias.c (set_initial_properties): Use it.
17065         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
17066         call clobber check for NMTs.
17067
17068 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17069
17070         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
17071         for printing gcov_type.
17072
17073 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17074
17075         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
17076         and the eh region information.
17077         * value-prof.c (gimple_move_stmt_histograms): New function.
17078         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
17079
17080 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
17081
17082         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
17083
17084 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
17085
17086         * value-prof.c (tree_ic_transform): Print counts.
17087         * tree-profile.c (tree_gen_ic_func_profiler):
17088         Clear __gcov_indreict_call_callee variable to avoid misattribution
17089         of the profile.
17090
17091 2008-05-28  Rafael Espíndola  <espindola@google.com>
17092
17093         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
17094         invalid sharing.
17095
17096 2008-05-28  Richard Guenther  <rguenther@suse.de>
17097
17098         PR tree-optimization/36339
17099         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
17100         and clobbering code out of the loop.
17101
17102 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17103
17104         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
17105         letters defined.
17106
17107         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
17108         s390_contiguous_bitmask_p, s390_symref_operand_p,
17109         s390_check_symref_alignment, s390_reload_larl_operand,
17110         s390_reload_symref_address): New functions.
17111         (s390_branch_condition_mnemonic): Support compare and branch
17112         instructions.
17113         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
17114         and 'W' constraints.
17115         (s390_secondary_reload): Add secondary reloads for unaligned
17116         symbol refs or symbol refs to floating point or QI/TI mode
17117         integer values.
17118         (legitimate_address_p): Accept symbol references as addresses.
17119         (s390_expand_insv): Use rotate and insert selected bits
17120         instruction for insv when building for z10.
17121         (print_operand_address): Handle symbol ref addresses.
17122         (print_operand): Output modifier 'c' added for signed byte values.
17123         (s390_encode_section_info): Mark symbol refs with
17124         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
17125
17126         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
17127         (length attribute): RRF, RRR have 4 byte length.
17128         (FPALL, INTALL): New mode iterators added.
17129         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
17130         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
17131         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
17132         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
17133         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
17134         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
17135         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
17136         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
17137         instructions.
17138         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
17139         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
17140         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
17141         reload<INTALL:mode><P:mode>_toreg_z10,
17142         reload<FPALL:mode><P:mode>_tomem_z10,
17143         reload<FPALL:mode><P:mode>_toreg_z10,
17144         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
17145         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
17146         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
17147         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
17148         definition.
17149         (movmem, clrmem, cmpmem): New splitters added.
17150
17151         * config/s390/predicates.md (larl_operand): Use
17152         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
17153         SYMBOL_REF_ALIGN1_P.
17154         (s390_signed_integer_comparison,
17155         s390_unsigned_integer_comparison): New predicates.
17156
17157         * config/s390/s390-protos.h (s390_check_symref_alignment,
17158         s390_contiguous_bitmask_p, s390_reload_larl_operand,
17159         s390_reload_symref_address,
17160         s390_compare_and_branch_condition_mask): Prototypes added.
17161
17162         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
17163         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
17164         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
17165
17166 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17167
17168         * config/s390/s390.c (z10_cost): New cost function for z10.
17169         (s390_handle_arch_option, override_options): Support -march=z10 switch.
17170         (s390_issue_rate): Adjust issue rate for z10.
17171         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
17172         (processor_flags): Add PF_Z10.
17173         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
17174         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
17175         * gcc/config.gcc: Add z10.
17176
17177 2008-05-28  Richard Guenther  <rguenther@suse.de>
17178
17179         PR tree-optimization/36291
17180         * tree-flow. h (struct gimple_df): Remove var_anns member.
17181         * tree-flow-inline.h (gimple_var_anns): Remove.
17182         (var_ann): Simplify.
17183         * tree-dfa.c (create_var_ann): Simplify.
17184         (remove_referenced_var): Clear alias info from var_anns of globals.
17185         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
17186         (delete_tree_ssa): Clear alias info from var_anns of globals.
17187         Do not free var_anns.
17188         (var_ann_eq): Remove.
17189         (var_ann_hash): Likewise.
17190
17191 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
17192
17193         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
17194         and loongson2f entries.
17195         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
17196         * config/mips/mips.h (processor_type): Add Loongson-2E
17197         and Loongson-2F entries.
17198         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
17199         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
17200         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
17201         * doc/invoke.texi (MIPS Options): Document loongson2e
17202         and loongson2f processor names.
17203
17204 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17205
17206         PR target/35767
17207         PR target/35771
17208         * config/i386/i386.c (ix86_function_arg_boundary): Use
17209         alignment of canonical type.
17210         (ix86_expand_vector_move): Check unaligned memory access for
17211         all SSE modes.
17212
17213 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17214
17215         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
17216         Moved to the front of file.
17217
17218 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
17219             H.J. Lu  <hongjiu.lu@intel.com>
17220
17221         * dwarf2out.c (current_fde): New.
17222         (add_cfi): Use it.
17223         (lookup_cfa:): Likewise.
17224         (dwarf2out_end_epilogue): Likewise.
17225         (dwarf2out_note_section_used): Likewise.
17226
17227 2008-05-27  Michael Matz  <matz@suse.de>
17228
17229         PR c++/27975
17230         * c.opt (Wenum-compare): New warning option.
17231         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
17232
17233 2008-05-27  Michael Matz  <matz@suse.de>
17234
17235         PR middle-end/36326
17236         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
17237         non-BLKmode types.
17238         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
17239         into memory as tail calls.
17240
17241 2008-05-27  Richard Guenther  <rguenther@suse.de>
17242
17243         PR tree-optimization/36339
17244         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
17245         pointers cause all addressable variables to be call clobbered.
17246
17247 2008-05-27  Richard Guenther  <rguenther@suse.de>
17248
17249         PR tree-optimization/36245
17250         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
17251
17252 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17253
17254         * config/s390/s390.md: Replace all occurences of the 'm'
17255         constraint with 'RT'.
17256
17257 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17258
17259         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
17260         definitions added.
17261         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
17262         "*movdi_64".
17263         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
17264         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
17265         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
17266
17267 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17268
17269         * reload.c: (find_reloads): Skip alternatives according to the
17270         "enabled" attribute. Constify the constraint variable.
17271         * recog.c (get_attr_enabled): Add default implementation.
17272         (extract_insn): Set the alternative_enabled_p array
17273         in the recog_data struct.
17274         (preprocess_constraints, constrain_operands): Skip
17275         alternatives according to the "enabled" attribute
17276         * recog.h (struct recog_data): New field alternative_enabled_p.
17277         (skip_alternative): New inline function.
17278         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
17279         (record_reg_classes): Skip alternative according to the
17280         "enabled" attribute.
17281
17282         * doc/md.texi: Add documention for the "enabled" attribute.
17283
17284 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17285
17286         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
17287         * postreload.c (reload_cse_simplify_operands): Replace 'm'
17288         constraint with TARGET_MEM_CONSTRAINT.
17289         * recog.c (asm_operand_ok, preprocess_constraints,
17290         constrain_operands): Likewise.
17291         * regclass.c (record_reg_classes): Likewise.
17292         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
17293         * reload1.c (maybe_fix_stack_asms): Likewise.
17294         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
17295         * recog.h: Adjust comment.
17296         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
17297         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
17298         * doc/md.texi: Add a note to description of 'm' constraint.
17299         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
17300
17301 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
17302
17303         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
17304         that the bitfield is of integral type before testing its precision.
17305
17306 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17307             Sa Liu  <saliu@de.ibm.com>
17308
17309         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
17310         __modti3, __udivti3, __umodti3 and __udivmodti4.
17311         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
17312         that implement TImode mul and div functions.
17313         * config/spu/multi3.c: New. Implement __multi3.
17314         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
17315         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
17316         functions on SPU.
17317
17318 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
17319
17320         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
17321         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
17322         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
17323         tls_sysv_suffix): New mode and mode attribute iterators.
17324         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
17325         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
17326         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
17327         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
17328         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
17329         iterators.
17330
17331 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
17332
17333         PR tree-optimization/36329
17334         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
17335         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
17336         * cgraphbuild.c (initialize_inline_failed): Use the latter
17337         macro in lieu of the former.
17338         * ipa-inline.c (cgraph_mark_inline): Likewise.
17339         (cgraph_decide_inlining_of_small_function): Likewise.
17340         (cgraph_decide_inlining): Likewise.
17341         (cgraph_decide_inlining_incrementally): Likewise.
17342
17343 2008-05-26  Tristan Gingold  <gingold@adacore.com>
17344             Anatoly Sokolov  <aesok@post.ru>
17345
17346         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
17347         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
17348         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
17349         optimization for 'avr6' architecture.
17350
17351 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
17352
17353         PR target/34932
17354         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
17355
17356 2008-05-26  Richard Guenther  <rguenther@suse.de>
17357
17358         * tree-ssa-sccvn.c (expr_has_constants): Declare.
17359         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
17360
17361 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17362
17363         PR middle-end/36253
17364         * caller-save.c (insert_restore): Verify alignment of spill space.
17365         (insert_save): Likewise.
17366         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
17367         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
17368         (STACK_SLOT_ALIGNMENT): Likewise.
17369         * function.c (LOCAL_ALIGNMENT): Removed.
17370         (get_stack_local_alignment): New.
17371         (assign_stack_local): Use it.  Set alignment on stack slot.
17372         (assign_stack_temp_for_type): Use get_stack_local_alignment.
17373         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
17374         (STACK_SLOT_ALIGNMENT): New.
17375         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
17376         stack slot in XFmode.
17377
17378         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
17379
17380 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
17381
17382         PR/36321
17383         * config/i386/i386.md (allocate_stack_worker_64): Make sure
17384         argument operand in rax isn't removed.
17385
17386 2008-05-26  Richard Guenther  <rguenther@suse.de>
17387
17388         PR middle-end/36300
17389         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
17390         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
17391
17392 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17393
17394         PR bootstrap/36331
17395         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
17396
17397 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
17398
17399         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
17400         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
17401
17402 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17403
17404         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
17405         build a trampoline if we don't want one.
17406         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
17407         return zero for nested functions if we don't want a trampoline.
17408
17409 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17410
17411         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
17412
17413 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17414
17415         PR fortran/18428
17416         * c.opt: Removed undocumented option '-lang-fortran'.
17417         * c-common.h: Removed global variable 'lang_fortran'.
17418         * c-opts.c (c_common_handle_option): Removed code to handle
17419         option '-lang-fortran'. Updated includes.
17420         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
17421         definition of '__GFORTRAN__'.
17422         (define__GNUC__): Reimplemented to use BASEVER and
17423         cpp_define_formatted.
17424         (builtin_define_with_value_n): Removed.
17425         * c-incpath.h: Renamed to ...
17426         * incpath.h: ... this.
17427         * c-incpath.c: Renamed to ...
17428         * incpath.c: ... this. Updated includes.
17429         * fix-header.c: Updated includes.
17430         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
17431         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
17432         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
17433
17434 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17435
17436         * tree.h: Update the table of flags used on tree nodes.
17437         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
17438         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
17439         (FORCED_LABEL): Add access check.
17440         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
17441         (ASM_INPUT_P): Likewise.
17442         (ASM_VOLATILE_P): Likewise.
17443         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
17444         (OMP_SECTION_LAST): Access private_flag directly.
17445         (OMP_RETURN_NOWAIT): Likewise.
17446         (OMP_PARALLEL_COMBINED): Likewise.
17447         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
17448         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
17449         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
17450         deprecated_flag directly.
17451
17452 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17453
17454         * final.c (frame_pointer_needed): Removed.
17455         * flags.h (frame_pointer_needed): Likewise.
17456
17457         * function.h (rtl_data): Add frame_pointer_needed.
17458         (frame_pointer_needed): New.
17459
17460 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
17461
17462         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
17463
17464 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
17465
17466         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
17467         SRC is a REG.
17468
17469 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
17470
17471         * c-common.c (strip_array_types): Move function to..
17472         * tree.c: ..here.
17473         (get_inner_array_type): Delete.
17474         * c-common.h (strip_array_types): Move declaration to..
17475         * tree.h: ..here.
17476         (get_inner_array_type): Delete.
17477         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
17478         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
17479         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
17480         * config/pa/pa.c (emit_move_sequence): Likewise.
17481
17482 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17483
17484         * config/i386/i386.md (*sse_prologue_save_insn): Set length
17485         attribute to 34.
17486
17487 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
17488
17489         * function.c: Include target hook for nonlocal_goto frame value.
17490
17491 2008-05-24  Richard Guenther  <rguenther@suse.de>
17492
17493         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
17494         variable can be only accessed through a pointer or a union.
17495
17496 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17497
17498         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
17499         * doc/extend.texi: Likewise.
17500
17501 2008-05-23  DJ Delorie  <dj@redhat.com>
17502
17503         * config/m32c/jump.md (untyped_call): Add.
17504
17505         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
17506         for A24 to PSImode.
17507         (m32c_address_cost): Detail costs for indirect offsets.
17508
17509 2008-05-23  Rafael Espíndola  <espindola@google.com>
17510
17511         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
17512         if a node is a SUBREG.
17513         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
17514         is a SUBREG.
17515
17516 2008-05-23  Paul Brook  <paul@codesourcery.com>
17517             Carlos O'Donell  <carlos@codesourcery.com>
17518
17519         * doc/extend.texi: Clarify use of __attribute__((naked)).
17520         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17521         * target.h (gcc_target): Add allocate_stack_slots_for_args.
17522         * function.c (use_register_for_decl): Use
17523         targetm.calls.allocate_stack_slots_for_args.
17524         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17525         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
17526         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
17527
17528 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
17529
17530         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
17531
17532 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
17533
17534         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
17535         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
17536         is only rounded once.
17537
17538 2008-05-23  Richard Guenther  <rguenther@suse.de>
17539
17540         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
17541
17542 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
17543             Jakub Jelinek  <jakub@redhat.com>
17544
17545         PR target/36079
17546         * configure.ac: Handle --enable-cld.
17547         * configure: Regenerated.
17548         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
17549         * config/i386/i386.h (struct machine_function): Add needs_cld field.
17550         (ix86_current_function_needs_cld): New define.
17551         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
17552         (cld): New isns pattern.
17553         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
17554         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
17555         * config/i386/i386.opt (mcld): New option.
17556         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
17557         TARGET_CLD and ix86_current_function_needs_cld.
17558         (override_options): Use -mcld by default for 32-bit code if
17559         USE_IX86_CLD.
17560
17561         * doc/install.texi (Options specification): Document --enable-cld.
17562         * doc/invoke.texi (Machine Dependent Options)
17563         [i386 and x86-64 Options]: Add -mcld option.
17564         (Intel 386 and AMD x86-64 Options): Document -mcld option.
17565
17566 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
17567         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
17568         (return_in_memory_64): Likewise.
17569         (return_in_memory_ms_64): Likewise.
17570
17571 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17572
17573         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
17574         * builtins.c (fold_builtin_fpclassify): New.
17575         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
17576         * builtins.def (BUILT_IN_FPCLASSIFY): New.
17577         * c-common.c (handle_type_generic_attribute): Adjust to accept
17578         fixed arguments before an elipsis.
17579         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
17580         * doc/extend.texi: Document __builtin_fpclassify.
17581
17582 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
17583
17584         * omp-low.c (gate_expand_omp_ssa): Remove.
17585         (pass_expand_omp_ssa): Remove.
17586         (gate_expand_omp): Do not check for flag_openmp_ssa.
17587         * common.opt (-fopenmp-ssa): Remove.
17588         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
17589
17590 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
17591
17592         * config/sh/sh.opt (mfixed-range): New option.
17593         * config/sh/sh-protos.h (sh_fix_range): Declare.
17594         * config/sh/sh.c (sh_fix_range): New function.
17595         * config/sh/sh.h (sh_fixed_range_str): Declare.
17596         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
17597         is not empty.
17598         * doc/invoke.texi (SH Options): Document -mfixed-range.
17599
17600 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
17601
17602         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
17603         it before the redeclaration.
17604
17605 2008-05-22  Anatoly Sokolov <aesok@post.ru>
17606
17607         * config/avr/avr.c (get_sequence_length): Add new function.
17608         (expand_prologue, expand_epilogue): Remove duplicate code.
17609
17610 2008-05-22  Rafael Espíndola  <espindola@google.com>
17611
17612         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
17613         sharing.
17614
17615 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17616
17617         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
17618         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
17619
17620         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
17621         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
17622         (vect_update_misalignment_for_peel): Likewise.
17623         (vector_alignment_reachable_p): Likewise.
17624         * tree-vect-transform.c (vectorizable_load): Likewise.
17625         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
17626         (get_vectype_for_scalar_type): Pass mode of scalar_type
17627         to UNITS_PER_SIMD_WORD.
17628
17629         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
17630         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
17631         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
17632         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
17633         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
17634
17635 2008-05-22  Ira Rosen  <irar@il.ibm.com>
17636
17637         PR tree-optimization/36293
17638         * tree-vect-transform.c (vect_transform_strided_load): Don't check
17639         if the first load must be skipped because of a gap.
17640
17641 2008-05-22  Richard Guenther  <rguenther@suse.de>
17642
17643         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
17644         more cases of offset disambiguation that is possible if
17645         strict-aliasing rules apply.
17646         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
17647         for basic offset and type-based disambiguation.
17648
17649 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17650
17651         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
17652         ix86_expand_vector_set on V16QImode for SSE4.1.
17653
17654 2008-05-21  Tom Tromey  <tromey@redhat.com>
17655
17656         * c.opt (Wimport): Mark as undocumented.
17657         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
17658         -Wno-import.
17659         (Warning Options): Likewise.
17660         * doc/cppopts.texi: Don't mention -Wimport.
17661
17662 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
17663
17664         PR tree-optimization/36287
17665         PR tree-optimization/36286
17666         * lambda-code.c (build_access_matrix): Do not use the loop->num
17667         for computing the number of induction variables: use the loop depth
17668         instead.
17669
17670 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
17671
17672         PR/36280
17673         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
17674         option -f(no-)leading-underscore.
17675
17676 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17677
17678         * config/i386/i386.c (ix86_expand_vector_init_general): Use
17679         GET_MODE_NUNITS (mode).
17680
17681 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
17682
17683         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
17684         (-mmulhw): Add 464 to description.
17685         (-mdlmzb): Likewise.
17686         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
17687         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
17688         464fp entries.
17689         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
17690         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
17691         * config/rs6000/rs6000.md: Update comments for 464.
17692
17693 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
17694
17695         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
17696
17697 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17698
17699         * config/i386/sse.md (vec_extractv4sf): Removed.
17700         (vec_extractv2df): Likewise.
17701         (vec_extractv2di): Likewise.
17702         (vec_extractv4si): Likewise.
17703         (vec_extractv8hi): Likewise.
17704         (vec_extractv16qi): Likewise.
17705         (vec_extract<mode>): New.
17706
17707 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17708
17709         * config/i386/sse.md (vec_setv4sf): Removed.
17710         (vec_setv2df): Likewise.
17711         (vec_setv2di): Likewise.
17712         (vec_setv4si): Likewise.
17713         (vec_setv8hi): Likewise.
17714         (vec_setv16qi): Likewise.
17715         (vec_set<mode>): New.
17716
17717 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17718
17719         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
17720         goto for vec_concat and vec_interleave.
17721
17722 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17723
17724         * config/i386/sse.md (vec_initv4sf): Removed.
17725         (vec_initv2df): Likewise.
17726         (vec_initv2di): Likewise.
17727         (vec_initv4si): Likewise.
17728         (vec_initv8hi): Likewise.
17729         (vec_initv16qi): Likewise.
17730         (vec_init<mode>): New.
17731
17732 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
17733
17734         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
17735
17736 2008-05-21  Tom Tromey  <tromey@redhat.com>
17737
17738         * ggc-zone.c (lookup_page_table_if_allocated): New function.
17739         (zone_find_object_offset): Likewise.
17740         (gt_ggc_m_S): Likewise.
17741         (highest_bit): Likewise.
17742         * ggc-page.c (gt_ggc_m_S): New function.
17743         * stringpool.c (string_stack): Remove.
17744         (init_stringpool): Update.
17745         (ggc_alloc_string): Use ggc_alloc.
17746         (maybe_delete_ident): New function.
17747         (ggc_purge_stringpool): Likewise.
17748         (gt_ggc_m_S): Remove.
17749         * ggc-common.c (ggc_protect_identifiers): New global.
17750         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
17751         ggc_protect_identifiers.
17752         * ggc.h (ggc_protect_identifiers): Declare.
17753         (gt_ggc_m_S): Update.
17754         (ggc_purge_stringpool): Declare.
17755         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
17756         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
17757         special case.
17758         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
17759
17760 2008-05-21  David S. Miller  <davem@davemloft.net>
17761
17762         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
17763         tmake_file.
17764
17765 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
17766
17767         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
17768         once finished.
17769
17770 2008-05-20  David Daney  <ddaney@avtrex.com>
17771
17772         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
17773         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
17774         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
17775         UNSPEC_UPDATE_GOT_VERSION): Renumber.
17776         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
17777         (atomic_hiqi_op): New define_code_iterator.
17778         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
17779         mips_expand_compare_and_swap_12.
17780         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
17781         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
17782         (sync_<optab><mode>, sync_old_<optab><mode>,
17783         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
17784         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
17785         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
17786         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
17787         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
17788         (test_and_set_12): New insn.
17789         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
17790         sync_new_<optab><mode>, sync_old_nand<mode>,
17791         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
17792         clobber to operand 0 for SI and DI mode insns.
17793         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
17794         mips_gen_fn_4): New typedefs.
17795         (mips_gen_fn_ptrs): Define new union type.
17796         (mips_expand_compare_and_swap_12): Remove declaration.
17797         (mips_expand_atomic_qihi): Declare function.
17798         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
17799         (mips_expand_atomic_qihi): ... this.  Use new generator function
17800         parameter.
17801         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
17802         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
17803         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
17804         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
17805         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
17806         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
17807         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
17808         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
17809         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
17810         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
17811         New macros.
17812
17813 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
17814
17815         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
17816         the missing break.
17817
17818 2008-05-20  Anatoly Sokolov <aesok@post.ru>
17819
17820         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
17821         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
17822         (avr_attribute_table): Add 'OS_main' function attribute.
17823         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
17824         functions with 'OS_main' attribute.
17825
17826 2008-05-20  Richard Guenther  <rguenther@suse.de>
17827
17828         PR tree-optimization/35204
17829         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
17830         helper, split out from ...
17831         (DFS): ... here.  Make the DFS walk non-recursive.
17832
17833 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
17834             Jan Sjodin  <jan.sjodin@amd.com>
17835
17836         PR tree-optimization/36181
17837         * tree-parloops.c (loop_has_vector_phi_nodes): New.
17838         (parallelize_loops): Don't parallelize when the loop has vector
17839         phi nodes.
17840
17841 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17842             Sebastian Pop  <sebastian.pop@amd.com>
17843
17844         * tree-loop-linear.c (gather_interchange_stats): Look in the access
17845         matrix, and never look at the tree representation of the memory
17846         accesses.
17847         (linear_transform_loops): Computes parameters and access matrices.
17848         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
17849         when fails.
17850         (access_matrix_get_index_for_parameter): New.
17851         * tree-data-ref.h (struct access_matrix): New.
17852         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
17853         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
17854         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
17855         am_vector_index_for_loop): New.
17856         (struct data_reference): Add field access_matrix.
17857         (DR_ACCESS_MATRIX): New.
17858         (compute_data_dependences_for_loop): Update declaration.
17859         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
17860         * lambda.h (lambda_vector_vec_p): Declared.
17861         * lambda-code.c: Depend on pointer-set.h.
17862         (lambda_collect_parameters_from_af, lambda_collect_parameters,
17863         av_for_af_base, av_for_af, build_access_matrix,
17864         lambda_compute_access_matrices): New.
17865         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
17866
17867 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
17868
17869         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
17870         $SOURCEDIR/include.
17871
17872 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17873             Sebastian Pop  <sebastian.pop@amd.com>
17874
17875         PR tree-optimization/36206
17876         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
17877         FOLD_CONVERSIONS.
17878         (instantiate_scev_1): Rename flags to fold_conversions.
17879         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
17880         outeside instantiation_loop.
17881         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
17882         (evolution_function_is_affine_or_constant_p): Removed.
17883         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
17884         instantiate_scev.
17885         (analyze_siv_subscript): Pass in the loop nest number.
17886         Call evolution_function_is_affine_in_loop instead of
17887         evolution_function_is_affine_p.
17888         (analyze_overlapping_iterations): Pass in the loop nest number.
17889
17890 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17891             Sebastian Pop  <sebastian.pop@amd.com>
17892
17893         PR tree-optimization/36206
17894         * tree-chrec.h (chrec_fold_op): New.
17895         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
17896         and other trees.
17897
17898 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
17899
17900         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
17901         (DIRS_EQ): New.
17902         (remove_duplicates): Do not set inode on non-inode systems.
17903         Use DIRS_EQ.
17904
17905 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
17906
17907         * config.gcc (tm_file): Update comments about relative pathnames.
17908
17909 2008-05-20  Richard Guenther  <rguenther@suse.de>
17910
17911         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
17912         * tree-ssa-sccvn.c (process_scc): Likewise.
17913         * tree-ssa-sink.c (execute_sink_code): Likewise.
17914         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
17915         * tree-vrp.c (process_assert_insertions): Likewise.
17916         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
17917         (perform_tree_ssa_dce): Likewise.
17918         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
17919         (dump_dominator_optimization_stats): Likewise.
17920         * tree-vectorizer.c (vectorize_loops): Likewise.
17921
17922 2008-05-20  Richard Guenther  <rguenther@suse.de>
17923
17924         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
17925
17926 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
17927
17928         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
17929         (ix86_i386elf_return_in_memory): Likewise.
17930         (ix86_i386interix_return_in_memory): Likewise.
17931         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
17932         (SUBTARGET_RETURN_IN_MEMORY): New.
17933         * config/i386/i386elf.h: Likewise.
17934         * config/i386/ptx4-i.h: Likewise.
17935         * config/i386/sol2-10.h: Likewise.
17936         * config/i386/sysv4.h: Likewise.
17937         * config/i386/vx-common.h: Likewise.
17938         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
17939         * config/i386/i386.c (ix86_return_in_memory): Made static and
17940         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
17941         (ix86_i386elf_return_in_memory): Removed.
17942         (ix86_i386interix_return_in_memory): Removed.
17943         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
17944         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
17945
17946 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
17947
17948         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
17949
17950 2008-05-19  Xinliang David Li  <davidxl@google.com>
17951
17952         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
17953         * opts.c: Ditto.
17954         * common.opt: Ditto.
17955         * doc/invoke.texi: Ditto.
17956
17957 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
17958
17959         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
17960         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
17961
17962 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17963
17964         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
17965         sizes of operand array from 8/4 to 4/2.
17966         (ix86_expand_vector_init_general): Change size of operand array
17967         from 32 to 16.  Remove op0, op1 and half_mode.
17968
17969 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17970
17971         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
17972         (ix86_expand_vector_init_interleave): Likewise.
17973         (ix86_expand_vector_init_general): Use them.  Assert
17974         word_mode == SImode when n_words == 4.
17975
17976 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
17977
17978         * config/i386/i386.c (ix86_secondary_reload): New static function.
17979         (TARGET_SECONDARY_RELOAD): New define.
17980         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17981         * config/i386/i386.md (reload_outqi): Remove.
17982
17983 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17984
17985         PR middle-end/35509
17986         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
17987         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
17988         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
17989         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
17990         (fold_builtin_1): Likewise.
17991         * builtins.def (BUILT_IN_ISINF_SIGN): New.
17992         c-common.c (check_builtin_function_arguments): Handle
17993         BUILT_IN_ISINF_SIGN.
17994         * doc/extend.texi: Document __builtin_isinf_sign.
17995         * fold-const.c (operand_equal_p): Handle COND_EXPR.
17996
17997 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
17998
17999         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
18000         EH cleanup at the end of the pass, search for those that have been
18001         turned into forwarder blocks and do the cleanup on their successor.
18002
18003 2008-05-18  Richard Guenther  <rguenther@suse.de>
18004
18005         * tree-cfg.c (verify_gimple_expr): Allow conversions from
18006         pointers to sizetype and vice versa.
18007
18008 2008-05-18 Xinliang David Li   <davidxl@google.com>
18009
18010         * gcc/tree-ssa-dce.c: Coding style fix.
18011         (check_pow): Documentation comment.
18012         (check_log): Documenation comment. Coding style fix.
18013         (is_unnecessary_except_errno_call): Ditto.
18014         (gen_conditions_for_pow): Ditto.
18015         (gen_conditions_for_log): Ditto.
18016         (gen_shrink_wrap_conditions): Ditto.
18017         (shrink_wrap_one_built_in_calls): Ditto.
18018         * gcc/doc/invoke.texi: Better documentation string.
18019         * ChangeLog: Fix wrong change log entries from
18020         May 17 checkin on function call DCE.
18021
18022 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
18023
18024         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
18025
18026 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
18027
18028         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
18029         * df-problems.c (simulation routines): Fixed block comment to
18030         properly say how to add forwards scanning functions.
18031
18032 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18033
18034         * tree-inline.c (setup_one_parameter): Remove dead code.
18035
18036 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18037
18038         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
18039         a BIT_AND_EXPR only for an INTEGER_TYPE.
18040
18041 2008-05-17 Xinliang David Li   <davidxl@google.com>
18042
18043         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
18044         (check_pow, check_log, is_unnecessary_except_errno_call): New
18045         functions to check for eliminating math functions that are pure
18046         except for setting errno.
18047         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
18048         general condition expressions for shrink-wrapping pow/log calls.
18049         (gen_shrink_wrap_conditions): Ditto.
18050         (shrink_wrap_one_built_in_call): Ditto.
18051         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
18052         (mark_operand_necessary): If debugging, output if OP is necessary.
18053         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
18054         unnecessary.
18055         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
18056         opt level >= 2.
18057         * gcc/common.opt: New user flag -ftree-builtin-dce.
18058         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
18059
18060 2008-05-16  David S. Miller  <davem@davemloft.net>
18061
18062         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
18063         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18064
18065 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
18066
18067         PR target/36246
18068         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
18069
18070 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18071
18072         * ifcvt.c (dead_or_predicable): Rename
18073         df_simulate_one_insn_backwards to df_simulate_one_insn.
18074         * recog.c (peephole2_optimize): Ditto.
18075         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
18076         Ditto.
18077         * df.h: Rename df_simulate_one_insn_backwards to
18078         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
18079         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
18080         scanning of defs and uses.
18081         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
18082         (df_simulate_one_insn_forwards): Removed.
18083
18084 2008-05-16  Doug Kwan  <dougkwan@google.com>
18085
18086         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
18087         QNaN & SNaN.
18088         (real_from_string): Handle NaNs and Inf as approriate.
18089
18090 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18091
18092         * doc/gty.texi (Source Files Containing Type Information): Note
18093         that headers should appear first in the gtfiles list.
18094
18095 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18096
18097         * tree.def (COND_EXEC): Properly documented this code.
18098
18099 2008-05-16  Diego Novillo  <dnovillo@google.com>
18100
18101         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
18102         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
18103         the new field.
18104
18105 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18106
18107         * tree-ssa-dse (max_stmt_uid): Removed.
18108         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
18109         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
18110         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
18111         * function.h (cfun.last_stmt_uid): New field.
18112         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
18113         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
18114         New functions.
18115         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
18116         (create_stmt_ann): Initialize the ann->uid field.
18117         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
18118         with new calls.
18119         * tree-flow.h (renumber_gimple_stmt_uids): New function.
18120
18121 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18122
18123         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
18124         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
18125         (init_empty_tree_cfg): Call it.
18126
18127 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18128
18129         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
18130         Update all users.
18131
18132 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18133
18134         * doc/invoke.text (-fdump-tree-*-verbose): New option.
18135         * tree-dump.c (dump_options): New verbose option.
18136         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
18137         Add verbose dump.
18138         * tree-pass.h (TDF_VERBOSE): New dump flag.
18139         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
18140         (tree-flow.h): Added include.
18141         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
18142
18143 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
18144
18145         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
18146
18147         From Jie Zhang  <jie.zhang@analog.com>
18148         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18149         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
18150         mcpu=bf561-none and mcpu=bf561-0.2.
18151         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18152         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18153         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18154         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18155         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
18156         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
18157         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
18158         option.
18159         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
18160         (cputype_selected): Remove.
18161         (bfin_handle_option): Don't use cputype_selected.
18162         (override_options): When no mcpu option, enable all workarounds.
18163         Don't use bfin_workarounds.
18164         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
18165         processor type.
18166         (DEFAULT_CPU_TYPE): Don't define.
18167
18168 2008-05-16  Richard Guenther  <rguenther@suse.de>
18169
18170         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
18171         on deletion of the last stmt.
18172
18173 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18174
18175         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
18176         V8HImode for SSE2 and V16QImode for SSE4.1.
18177
18178 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
18179
18180         * cgraph.h (compute_inline_parameters): Made public.
18181         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
18182         variable_generate_summary, function_write_summary,
18183         variable_write_summary, variable_read_summary.  Added generate_summary,
18184         write_summary, read_summary.
18185         * cgraphunit.c (cgraph_process_new_functions): Changed call from
18186         pass_ipa_inline.function_generate_summary, to
18187         compute_inline_parameters.
18188         * ipa-inline.c (compute_inline_parameters): Made public and added
18189         node parameter.
18190         (compute_inline_parameters_for_current): New function.
18191         (pass_inline_param): Now calls compute_inline_parameters_for_current.
18192         (inline_generate_summary): Removed parameter and made to loop over
18193         all cgraph nodes.
18194         (pass_ipa_inline): Updated for new IPA_PASS structure.
18195         * passes.c (execute_ipa_summary_passes): Now is called once per
18196         pass rather than once per node*pass.
18197
18198 2008-05-15  Anatoly Sokolov <aesok@post.ru>
18199
18200         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
18201         avr_have_mul_p, avr_asm_only_p): Remove variables.
18202         (avr_override_options): Remove initialization of removed variables.
18203         (avr_file_start):  Convert removed variables to fields of
18204         'struct base_arch_s *avr_current_arch'.
18205         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
18206         (AVR_HAVE_MUL): (Ditto.).
18207         (AVR_HAVE_MOVW): (Ditto.).
18208         (AVR_HAVE_LPMX): (Ditto.).
18209         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
18210         avr_asm_only_p): Remove declaration.
18211
18212 2008-05-15  Diego Novillo  <dnovillo@google.com>
18213
18214         * config/arm/arm.c (arm_return_in_memory): Fix return type.
18215         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
18216
18217 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
18218
18219         PR middle-end/36194
18220         * combine.c (check_conversion): Rename back to check_promoted_subreg.
18221         Don't call record_truncated_value from here.
18222         (record_truncated_value): Turn it into a for_each_rtx callback.
18223         (record_truncated_values): New function.
18224         (combine_instructions): Call note_uses with record_truncated_values.
18225         Change name of check_conversion to check_promoted_subreg.
18226
18227 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
18228
18229         * doc/sourcebuild.texi: Document support for torture tests.
18230
18231 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18232
18233         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
18234         to alternative 4 of operand 2.
18235
18236 2008-05-15  Richard Guenther  <rguenther@suse.de>
18237
18238         * tree-pass.h (current_pass): Declare.
18239         (get_pass_for_id): Likewise.
18240         * passes.c (passes_by_id, passes_by_id_size): New globals.
18241         (set_pass_for_id): New function.
18242         (get_pass_for_id): Likewise.
18243         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
18244         (execute_function_todo): Flush per function statistics.
18245         * toplev.c (compile_file): Init statistics.
18246         (general_init): Do early statistics initialization.
18247         (finalize): Finish statistics.
18248         * statistics.h (statistics_early_init): Declare.
18249         (statistics_init): Likewise.
18250         (statistics_fini): Likewise.
18251         (statistics_fini_pass): Likewise.
18252         (statistics_counter_event): Likewise.
18253         (statistics_histogram_event): Likewise.
18254         * statistics.c: New file.
18255         * Makefile.in (OBJS-common): Add statistics.o.
18256         (statistics.o): Add dependencies.
18257         * doc/invoke.texi (-fdump-statistics): Document.
18258
18259         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
18260         (insert): Likewise.
18261         (execute_pre): Use statistics_counter_event.
18262         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
18263         (substitute_and_fold): Increment it.  Use statistics_counter_event.
18264
18265 2008-05-15  Diego Novillo  <dnovillo@google.com>
18266
18267         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
18268
18269         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
18270         * tree-ssa-alias.c (new_type_alias): Remove references to
18271         sub-variables from comment.
18272         * tree-ssa-operands.c (swap_tree_operands): Likewise.
18273
18274 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18275
18276         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
18277         attribute to 1 only for insertps alternative.
18278
18279 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18280
18281         * config/bfin/bfin.md (loadbytes): New pattern.
18282         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
18283         (bfin_init_builtins): Initialize it.
18284         (bdesc_1arg): Add it.
18285
18286 2008-05-15  Sa Liu  <saliu@de.ibm.com>
18287
18288         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
18289         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
18290         * testsuite/lib/target-supports.exp: Add
18291         check_effective_target_fortran_integer_16.
18292
18293 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18294
18295         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
18296         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
18297         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
18298         (TARGET_RETURN_IN_MEMORY): Define.
18299
18300 2008-05-15  Richard Guenther  <rguenther@suse.de>
18301
18302         PR middle-end/36244
18303         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
18304         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
18305         represent unmodifiable vars.
18306
18307 2008-05-15  Richard Guenther  <rguenther@suse.de>
18308
18309         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
18310         INDIRECT_REF and TARGET_MEM_REF.
18311         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
18312         TARGET_MEM_REF.
18313
18314 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18315             H.J. Lu  <hongjiu.lu@intel.com>
18316
18317         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
18318         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
18319         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
18320         insn alternatives.  Add missing alternatives.
18321         (*vec_concatv2di_rex64_sse4_1): Likewise.
18322         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
18323         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
18324         Require TARGET_SSE.
18325
18326 2008-05-15  Richard Guenther  <rguenther@suse.de>
18327
18328         PR tree-optimization/36009
18329         PR tree-optimization/36204
18330         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
18331         (determine_invariantness_stmt): Record the loop a store is
18332         always executed in.
18333         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
18334         dependency.
18335
18336 2008-05-15  Richard Guenther  <rguenther@suse.de>
18337
18338         PR tree-optimization/34330
18339         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
18340         through the pointer will alias the SMT.
18341
18342 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
18343
18344         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
18345
18346 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18347
18348         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
18349
18350 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18351             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18352
18353         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
18354         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
18355         (vashl_optab): New optab for vector/vector shifts.
18356         (vashr_optab): Ditto.
18357         (vlshr_optab): Ditto.
18358         (vrotl_optab): Ditto.
18359         (vrotr_optab): Ditto.
18360         (optab_subtype): New enum for optab_for_tree_code call.
18361         (optab_for_tree_code): Add enum optab_subtype argument.
18362
18363         * optabs.c (optab_for_tree_code): Take an additional argument to
18364         distinguish between a vector shift by a scalar and vector shift by
18365         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
18366         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
18367         vector shift by a vector.
18368         (expand_widen_pattern_expr): Pass additional argument to
18369         optab_for_tree_code.
18370
18371         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
18372         vrotl_optab, vrotr_optab.
18373
18374         * expr.c (expand_expr_real_1): Update calls to
18375         optab_for_tree_code to distinguish between vector shifted by a
18376         scalar and vector shifted by a vector.
18377         * tree-vectorizer.c (supportable_widening_operation): Ditto.
18378         (supportable_narrowing_operation): Ditto.
18379         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
18380         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
18381         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
18382         (vect_create_epilog_for_reduction): Ditto.
18383         (vectorizable_reduction): Ditto.
18384         (vectorizable_operation): Ditto.
18385         (vect_strided_store_supported): Ditto.
18386         (vect_strided_load_supported): Ditto.
18387         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18388         * expmed.c (expand_shift): Ditto.
18389
18390         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
18391         scalar type.
18392         (ashr@var{m}3): Ditto.
18393         (vashl@var{m}3): Document new vector/vector shift standard name.
18394         (vashr@var{m}3): Ditto.
18395         (vlshr@var{m}3): Ditto.
18396         (vrotl@var{m}3): Ditto.
18397         (vrotr@var{m}3): Ditto.
18398
18399         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
18400         (PPERM_INVERT): Ditto.
18401         (PPERM_REVERSE): Ditto.
18402         (PPERM_REV_INV): Ditto.
18403         (PPERM_ZERO): Ditto.
18404         (PPERM_ONES): Ditto.
18405         (PPERM_SIGN): Ditto.
18406         (PPERM_INV_SIGN): Ditto.
18407         (PPERM_SRC1): Ditto.
18408         (PPERM_SRC2): Ditto.
18409
18410         * config/i386/sse.md (mulv2di3): Add SSE5 support.
18411         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
18412         allows a memory operand to be the value being added, and split it
18413         to improve vectorization.
18414         (sse5_pmacsdqh_mem): Ditto.
18415         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
18416         (sse5_mulv2div2di3_high): Ditto.
18417         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
18418         (vec_pack_trunc_v4si): Ditto.
18419         (vec_pack_trunc_v2di): Ditto.
18420         (sse5_pcmov_<mode>): Remove code that tried to use use
18421         andps/andnps instead of pcmov.
18422         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
18423         pmacsdqh instructions.
18424         (vec_widen_smult_lo_v4si): Ditto.
18425
18426         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
18427         (PPERM_INVERT): Ditto.
18428         (PPERM_REVERSE): Ditto.
18429         (PPERM_REV_INV): Ditto.
18430         (PPERM_ZERO): Ditto.
18431         (PPERM_ONES): Ditto.
18432         (PPERM_SIGN): Ditto.
18433         (PPERM_INV_SIGN): Ditto.
18434         (PPERM_SRC1): Ditto.
18435         (PPERM_SRC2): Ditto.
18436         (ix86_expand_sse_movcc): Move the SSE5 test after the if
18437         true/false tests.
18438         (ix86_expand_int_vcond): If SSE5 generate all possible integer
18439         comparisons.
18440         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
18441         says ignore whether the last reference is a memory operand.
18442
18443 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18444             Paolo Bonzini <bonzini at gnu dot org>
18445
18446         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
18447         shift patterns.
18448
18449         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
18450         (vlshr<mode>3): Rename from vlshr<mode>3.
18451         (vashr<mode>3): Rename from vashr<mode>3.
18452         (mulv4sf3): Change the names of vector shift patterns.
18453         (mulv4si3): Ditto.
18454         (negv4sf2): Ditt.
18455
18456         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
18457         shift insns.
18458
18459         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
18460         (SI_SHLHI): Ditto.
18461         (SI_SHL): Ditto.
18462         (SI_SHLI): Ditto.
18463         (SI_ROTH): Ditto.
18464         (SI_ROTHI): Ditto.
18465         (SI_ROT): Ditto.
18466         (SI_ROTI): Ditto.
18467         (SPU_RL_0): Ditto.
18468         (SPU_RL_1): Ditto.
18469         (SPU_RL_2): Ditto.
18470         (SPU_RL_3): Ditto.
18471         (SPU_RL_4): Ditto.
18472         (SPU_RL_5): Ditto.
18473         (SPU_RL_6): Ditto.
18474         (SPU_RL_7): Ditto.
18475         (SPU_SL_0): Ditto.
18476         (SPU_SL_1): Ditto.
18477         (SPU_SL_2): Ditto.
18478         (SPU_SL_3): Ditto.
18479         (SPU_SL_4): Ditto.
18480         (SPU_SL_5): Ditto.
18481         (SPU_SL_6): Ditto.
18482         (SPU_SL_7): Ditto.
18483
18484         * config/spu/spu.md (v): New iterator macro to add v for vector types.
18485         (floatunssidf2_internal): Change vector/vector shift names.
18486         (floatunsdidf2_internal): Ditto.
18487         (mulv8hi3): Ditto.
18488         (ashrdi3): Ditto.
18489         (ashrti3): Ditto.
18490         (cgt_df): Ditto.
18491         (cgt_v2df): Ditto.
18492         (dftsv): Ditto.
18493         (vashl<mode>3): Rename from ashl<mode>3.
18494         (vashr<mode>3): Rename from ashr<mode>3.
18495         (vlshr<mode>3): Rename from lshr<mode>3.
18496         (vrotl<mode>3): Rename from rotl<mode>3.
18497
18498 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18499
18500         PR target/36224
18501         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
18502         multiply gives the wrong value when doing widening multiplies.
18503         (vec_widen_smult_lo_v4si): Ditto.
18504
18505 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18506
18507         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
18508         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
18509         emit_library_call_value.
18510         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
18511         * tree.h (ECF_LIBCALL_BLOCK): Removed.
18512         * calls.c (initialize_argument_information, precompute_arguments,
18513         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
18514         (precompute_arguments): Removed flags parameter.
18515         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
18516
18517 2008-05-14  Richard Guenther  <rguenther@suse.de>
18518
18519         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
18520         Make sure to register the store if the use is a PHI_NODE.
18521
18522 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18523
18524         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
18525         memory if the component is to be referenced in BLKmode according
18526         to get_inner_reference.
18527
18528 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
18529
18530         * calls.c (emit_library_call_value_1): Restore code clearing
18531         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
18532
18533 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18534             Nicolas Roche  <roche@adacore.com>
18535
18536         * configure.ac: Add support for a "gcc_subdir" variable in
18537         config-lang.in, to denote a subdirectory where the language/GCC
18538         integration files are to be found.
18539         * configure: Regenerate.
18540
18541 2008-05-14  Ira Rosen  <irar@il.ibm.com>
18542
18543         PR tree-optimization/36098
18544         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
18545         value for the first load in the group in case of a gap.
18546         (vect_build_slp_tree): Check that there are no gaps in loads.
18547
18548 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18549
18550         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
18551         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
18552         expand_copysign_bit, ): Change call to emit_no_conflict_block to
18553         emit_insn and remove unneeded code to construct extra args.
18554         (emit_no_conflict_block): Removed.
18555         * optabls.h: (emit_no_conflict_block): Removed.
18556         * cse.c (cse_extended_basic_block): Remove search for
18557         REG_NO_CONFLICT note.
18558         * global.c: Removed incorrect comment added in revision 117.
18559         * expr.c (convert_move): Change call to emit_no_conflict_block to
18560         emit_insn.
18561         * recog.c: Change comments so that they do not mention
18562         REG_NO_CONFLICT.
18563         * local_alloc.c (combine_regs): Removed last parameter.
18564         (no_conflict_p): Removed.
18565         (block_alloc): Removed note, no_conflict_combined_regno and set
18566         local vars. Removed all code to process REG_NO_CONFLICT blocks.
18567         (combine_regs): Removed already_dead and code to look for
18568         REG_NO_CONFLICT notes.
18569         * lower_subreg (remove_retval_note): Removed code to look for
18570         REG_NO_CONFLICT block.
18571         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
18572         (resolve_clobber): Remove code to process libcalls that have
18573         REG_NO_CONFLICT notes.
18574         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
18575         case.
18576         * combine.c (can_combine_p, distribute_notes):  Removed
18577         REG_NO_CONFLICT case.
18578         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
18579         to emit_insns.
18580         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
18581         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
18582         Ditto.
18583         * reg-notes.def (NO_CONFLICT): Removed.
18584
18585 2008-05-14  David S. Miller  <davem@davemloft.net>
18586
18587         * config/sparc/sparc.c (sparc_profile_hook): If
18588         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
18589         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
18590         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18591
18592 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
18593
18594         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
18595
18596 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
18597
18598         PR target/36222
18599         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
18600         and op1 expansion before vector concat to have less live pseudos.
18601
18602 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
18603
18604         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
18605         ix86_expand_vector_set if supported.
18606
18607 2008-05-13  Diego Novillo  <dnovillo@google.com>
18608             Kenneth Zadeck  <zadeck@naturalbridge.com>
18609
18610         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
18611
18612         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
18613         phinodes_print_statistics, init_ssanames, fini_ssanames,
18614         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
18615         release_ssa_name, release_defs, replace_ssa_name_symbol,
18616         ssanames_print_statistics): Move ...
18617         * tree-flow.h: ... here.
18618         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
18619         Use FN instead of cfun.
18620         (make_ssa_name_fn): Rename from make_ssa_name.
18621         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
18622         * tree-flow-inline.h (make_ssa_name): Move from
18623         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
18624         * omp-low.c (expand_omp_parallel):
18625         * tree-flow-inline.h (redirect_edge_var_map_result):
18626         * tree-ssa.c (init_tree_ssa): Add argument FN.
18627         Use it instead of cfun.  Update all users.
18628
18629 2008-05-13  Tom Tromey  <tromey@redhat.com>
18630
18631         PR preprocessor/22168:
18632         * doc/cpp.texi (Top): Update menu.
18633         (Alternatives to Wrapper #ifndef): New node.
18634         (Other Directives): Document deprecation.
18635         (Obsolete Features): Remove menu.
18636         (Assertions): Merge node into Obsolete Features.
18637         (Obsolete once-only headers): Move earlier; rename to Alternatives
18638         to Wrapper #ifndef.
18639         * doc/cppopts.texi: Update.
18640         * c.opt (Wdeprecated): Enable for C and ObjC.
18641         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
18642         (C++ Dialect Options): Move -Wno-deprecated from here to...
18643         (Warning Options): ... here.
18644
18645 2008-05-13  Richard Guenther  <rguenther@suse.de>
18646
18647         PR middle-end/36227
18648         * fold-const.c (fold_sign_changed_comparison): Do not allow
18649         changes in pointer-ness.
18650
18651 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
18652
18653         PR target/24713
18654         * config/sh/sh.c (sh_expand_prologue): Don't clear
18655         RTX_FRAME_RELATED_P for push insns.
18656
18657 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
18658
18659         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
18660
18661 2008-05-12  Anatoly Sokolov <aesok@post.ru>
18662
18663         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
18664         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
18665         Use 'machine->is_leaf' instead of 'leaf_func_p'.
18666
18667 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
18668
18669         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
18670         (*vec_concatv4sf_sse): This.
18671         (*sse2_concatv2si): Renamed to ...
18672         (*vec_concatv2si_sse2): This.
18673         (*sse1_concatv2si): Renamed to ...
18674         (*vec_concatv2si_sse): This.
18675         (*vec_concatv2di_rex): Renamed to ...
18676         (*vec_concatv2di_rex64): This.
18677         (*vec_concatv2si_sse4_1): New.
18678         (*vec_concatv2di_rex64_sse4_1): Likewise.
18679
18680 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
18681
18682         PR rtl-optimization/36111
18683         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
18684         that was created for swappable operands.
18685
18686 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
18687
18688         PR ada/36001
18689         * Makefile.in: Substitute GNATMAKE and GNATBIND.
18690         * configure.ac: Add call to ACX_PROG_GNAT.
18691
18692 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
18693
18694         * optc-gen.awk: Fix comment typo.
18695
18696 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
18697
18698         * pretty-print.c (pp_integer_with_precision): Use
18699         HOST_LONG_LONG_FORMAT.
18700
18701 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
18702
18703         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
18704
18705 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
18706
18707         * config/i386/i386.c (bdesc_ptest): Removed.
18708         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
18709         (bdesc_args): Add __builtin_ia32_ptestz128,
18710         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
18711         (ix86_init_mmx_sse_builtins): Updated.
18712         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
18713         (ix86_expand_builtin): Updated.
18714
18715 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
18716
18717         * tree-cfg.c (valid_fixed_convert_types_p): New function.
18718         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
18719
18720 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
18721
18722         * value-prof.c (interesting_stringop_to_profile): Do not
18723         return early for BUILT_IN_MEMPCPY.
18724
18725 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
18726
18727         * calls.c (expand_call): Don't use callgraph to increase
18728         preferred_stack_boundary.
18729
18730         * cgraph.h (cgraph_rtl_info): Use unsigned on
18731         preferred_incoming_stack_boundary.
18732
18733         * final.c (rest_of_clean_state): Use unsigned on
18734         preferred_stack_boundary.
18735
18736 2008-05-09  Tom Tromey  <tromey@redhat.com>
18737
18738         PR preprocessor/22231:
18739         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
18740         proceeding.
18741
18742 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
18743
18744         PR tree-optimization/36129
18745         * tree-ssa-ccp.c: Include value-prof.h.
18746         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
18747         built-in function was folded to a constant.
18748         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
18749
18750 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
18751             Sebastian Pop  <sebastian.pop@amd.com>
18752
18753         * tree-scalar-evolution.c: Document instantiate_scev.
18754         (instantiate_parameters_1): Renamed instantiate_scev_1.
18755         Don't use the same loop for instantiation_loop and evolution_loop.
18756         (instantiate_scev): New.
18757         (instantiate_parameters): Moved...
18758         (resolve_mixers): Update call to instantiate_scev_1 to pass the
18759         same loop twice.  Maintains the semantics for this function.
18760         * tree-scalar-evolution.h (instantiate_scev): Declare.
18761         (instantiate_parameters): ...here.  Now static inline.
18762         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
18763         instead of resolve_mixers.
18764
18765 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
18766
18767         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
18768
18769 2008-05-09  Tomas Bily  <tbily@suse.cz>
18770
18771         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
18772         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
18773         * tree-ssa-structalias.c (get_constraint_for): Likewise.
18774         * c-common.c (c_common_truthvalue_conversion): Likewise.
18775         * tree-object-size.c (compute_object_offset): Likewise.
18776         * tree-inline.c (estimate_num_insns_1): Likewise.
18777         * varasm.c (const_hash_1, compare_constant, copy_constant)
18778         (compute_reloc_for_constant, output_addressed_constants)
18779         (initializer_constant_valid_p): Likewise.
18780         * c-omp.c (check_omp_for_incr_expr): Likewise.
18781         * gimplify.c (gimplify_expr): Likewise.
18782         * c-typeck.c (c_finish_return): Likewise.
18783         * tree-vectorizer.c (supportable_widening_operation)
18784         (supportable_narrowing_operation): Likewise.
18785         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
18786         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
18787         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
18788         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
18789         (descr_info_loc): Likewise.
18790         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
18791         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
18792         (fold_unary): Likewise.
18793         * builtins.c (get_pointer_alignment): Likewise.
18794         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
18795         (instantiate_parameters_1): Likewise.
18796         * tree.c (expr_align, stabilize_reference): Likewise.
18797         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
18798         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
18799         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
18800         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
18801         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
18802         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
18803         Likewise.
18804         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
18805         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
18806         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
18807         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
18808         (forward_propagate_comparison)
18809         (tree_ssa_forward_propagate_single_use_vars): Likewise.
18810         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
18811         * emit-rtl.c (component_ref_for_mem_expr)
18812         (set_mem_attributes_minus_bitpos): Likewise.
18813         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
18814         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
18815         Likewise.
18816         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
18817         (build_function_call, pointer_diff, build_compound_expr)
18818         (c_finish_return): Likewise.
18819         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
18820         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
18821         Likewise.
18822         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
18823         * expr.c (is_aligning_offset): Likewise.
18824         * tree-ssa-alias.c (is_escape_site): Likewise.
18825         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
18826         (check_all_va_list_escapes): Likewise.
18827         * tree-ssa-loop-ivopts.c (determine_base_object)
18828         (determine_common_wider_type): Likewise.
18829         * dojump.c (do_jump): Likewise.
18830         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
18831         * tree-gimple.c (is_gimple_cast): Likewise.
18832         * fold-const.c (decode_field_reference, )
18833         (fold_sign_changed_comparison, fold_unary, fold_comparison)
18834         (fold_binary): Likewise.
18835         * tree-ssa-alias-warnings.c (find_alias_site_helper)
18836         (already_warned_in_frontend_p): Likewise.
18837         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
18838         * tree.c (really_constant_p, get_unwidened): Likewise.
18839         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
18840         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
18841         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
18842         Likewise.
18843         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
18844         CONVERT_EXPR_P.
18845         (CONVERT_EXPR_P): Define.
18846         (CASE_CONVERT): Define.
18847
18848 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
18849
18850         PR middle-end/36117
18851         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
18852         (delete_unmarked_insns): When deleting a call, call
18853         delete_unreachable_blocks.
18854         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18855         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
18856
18857 2008-05-08  Richard Guenther  <rguenther@suse.de>
18858
18859         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
18860         (-ftree-salias): Likewise.
18861         (salias-max-implicit-fields): Remove param documentation.
18862         (salias-max-array-elements): Likewise.
18863         * tree-pass.h (pass_create_structure_vars): Remove.
18864         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18865         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18866         * tree-ssa-alias.c (create_structure_vars): Remove.
18867         (gate_structure_vars): Likewise.
18868         (pass_create_structure_vars): Likewise.
18869         (gate_build_alias): Likewise.
18870         (pass_build_alias): Adjust to run always and dump the function.
18871         * common.opt (ftree-salias): Hide.
18872         * passes.c (init_optimization_passes): Remove
18873         pass_create_structure_vars, adjust comment.
18874         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18875         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18876         * opts.c (decode_options): Do not set flag_tree_salias.
18877         (common_handle_option): Add OPT_ftree_salias to the backward
18878         compatibility section.
18879
18880 2008-05-08  Richard Guenther  <rguenther@suse.de>
18881
18882         * tree-flow-inline.h (var_can_have_subvars): Move ...
18883         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
18884         * tree-flow.h (var_can_have_subvars): Remove.
18885         (push_fields_onto_fieldstack): Remove.
18886         (sort_fieldstack): Likewise.
18887         (struct fieldoff): Move ...
18888         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
18889         alias_set and base_for_components fields.
18890         (sort_fieldstack): Make static.
18891         (push_fields_onto_fieldstack): Likewise.  Remove code that
18892         handles anything but RECORD_TYPEs.  Remove alias_set and
18893         base_for_components handling.
18894         (create_variable_info_for): Adjust.
18895
18896 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
18897
18898         * common.opt (Wframe-larger-than=): Shorten the help message
18899         to one line.
18900         * doc/invoke.texi (Wframe-larger-than=): Add more description.
18901
18902 2008-05-08  Rafael Espíndola  <espindola@google.com>
18903
18904         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
18905         trap.
18906         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
18907         trap and that both operands are gimple values.
18908         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
18909         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
18910         is a fp operation.
18911
18912 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18913
18914         * read-rtl.c (join_c_conditions): Return the first string if the
18915         two strings are equal.
18916
18917 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18918
18919         * gensupport.h (pred_data): Add a "num_codes" field.
18920         (add_predicate_code): Declare.
18921         * gensupport.c (add_predicate_code): New function.
18922         (std_pred_table): Add an "allows_const_p" field.
18923         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
18924         Remove the (incomplete) list of such codes from the codes field.
18925         (init_predicate_table): Use add_predicate_code.  Add all
18926         RTX_CONST_OBJs if allows_const_p is true.
18927         * genrecog.c (process_define_predicate): Use add_predicate_code.
18928
18929 2008-05-08  David Daney  <ddaney@avtrex.com>
18930             Richard Sandiford  <rsandifo@nildram.co.uk>
18931
18932         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
18933         special case of constant zero operands.
18934         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
18935         old and new values.  Special case constant zero values.
18936         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
18937         fails.
18938         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
18939         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
18940
18941 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
18942
18943         PR target/36090
18944         * simplify-rtx.c (simplify_plus_minus): Create CONST of
18945         similar RTX_CONST_OBJ before CONST_INT.
18946
18947 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
18948
18949         * stmt.c (expand_stack_restore): Change sa mode if needed.
18950
18951 2008-05-08  Richard Guenther  <rguenther@suse.de>
18952
18953         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
18954         return type to bool.
18955         (ix86_sol10_return_in_memory): Likewise.
18956         (ix86_i386elf_return_in_memory): Likewise.
18957         (ix86_i386interix_return_in_memory): Likewise.
18958         * config/i386/i386.c (ix86_return_in_memory): Likewise.
18959         (ix86_sol10_return_in_memory): Likewise.
18960         (ix86_i386elf_return_in_memory): Likewise.
18961         (ix86_i386interix_return_in_memory): Likewise.
18962
18963 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18964
18965         PR bootstrap/36180
18966         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
18967         fndecl argument.
18968         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
18969         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
18970         declared in front.
18971
18972 2008-05-08  Richard Guenther  <rguenther@suse.de>
18973
18974         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
18975         * tree-data-ref.h (struct dr_alias): Remove subvars field.
18976         (DR_SUBVARS): Remove.
18977         * tree-dfa.c (dump_subvars_for): Remove.
18978         (debug_subvars_for): Likewise.
18979         (dump_variable): Do not dump subvars.
18980         (remove_referenced_var): Do not remove subvars.
18981         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
18982         (lookup_subvars_for_var): Remove.
18983         (get_subvars_for_var): Likewise.
18984         (get_subvars_at): Likewise.
18985         (get_first_overlapping_subvar): Likewise.
18986         (overlap_subvar): Likewise.
18987         * tree-flow.h (subvar_t): Remove.
18988         (struct var_ann_d): Remove subvars field.
18989         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
18990         argument.  Remove special handling of SFTs.
18991         (compute_tag_properties): Likewise.
18992         (set_initial_properties): Likewise.
18993         (compute_call_clobbered): Likewise.
18994         (count_mem_refs): Likewise.
18995         (compute_memory_partitions): Likewise.
18996         (compute_flow_insensitive_aliasing): Likewise.
18997         (setup_pointers_and_addressables): Likewise.
18998         (new_type_alias): Likewise.
18999         (struct used_part): Remove.
19000         (used_portions): Likewise.
19001         (struct used_part_map): Likewise.
19002         (used_part_map_eq): Likewise.
19003         (used_part_map_hash): Likewise.
19004         (free_used_part_map): Likewise.
19005         (up_lookup): Likewise.
19006         (up_insert): Likewise.
19007         (get_or_create_used_part_for): Likewise.
19008         (create_sft): Likewise.
19009         (create_overlap_variables_for): Likewise.
19010         (find_used_portions): Likewise.
19011         (create_structure_vars): Likewise.
19012         * tree.def (STRUCT_FIELD_TAG): Remove.
19013         * tree.h (MTAG_P): Adjust.
19014         (struct tree_memory_tag): Remove base_for_components and
19015         unpartitionable flags.
19016         (struct tree_struct_field_tag): Remove.
19017         (SFT_PARENT_VAR): Likewise.
19018         (SFT_OFFSET): Likewise.
19019         (SFT_SIZE): Likewise.
19020         (SFT_NONADDRESSABLE_P): Likewise.
19021         (SFT_ALIAS_SET): Likewise.
19022         (SFT_UNPARTITIONABLE_P): Likewise.
19023         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
19024         (union tree_node): Remove sft field.
19025         * alias.c (get_alias_set): Remove special handling of SFTs.
19026         * print-tree.c (print_node): Remove handling of SFTs.
19027         * tree-dump.c (dequeue_and_dump): Likewise.
19028         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
19029         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
19030         * tree-predcom.c (set_alias_info): Do not set subvars.
19031         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
19032         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
19033         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
19034         (add_vars_for_offset): Remove.
19035         (add_virtual_operand): Remove special handling of SFTs.
19036         (add_call_clobber_ops): Likewise.
19037         (add_call_read_ops): Likewise.
19038         (get_asm_expr_operands): Likewise.
19039         (get_modify_stmt_operands): Likewise.
19040         (get_expr_operands): Likewise.
19041         (add_to_addressable_set): Likewise.
19042         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
19043         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
19044         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
19045         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
19046         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
19047         (tree_node_structure): Likewise.
19048         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
19049         handling of SFTs.
19050         (find_what_p_points_to): Likewise.
19051
19052 2008-05-08  Sa Liu  <saliu@de.ibm.com>
19053
19054         * config/spu/spu.md: Fixed subti3 pattern.
19055
19056 2008-05-08  Richard Guenther  <rguenther@suse.de>
19057
19058         PR middle-end/36154
19059         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
19060         sure to create a representative for trailing arrays for PTA.
19061
19062 2008-05-08  Richard Guenther  <rguenther@suse.de>
19063
19064         PR middle-end/36172
19065         * fold-const.c (operand_equal_p): Two objects which types
19066         differ in pointerness are not equal.
19067
19068 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19069
19070         * calls.c (compute_argument_block_size): Add argument tree fndecl.
19071         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
19072         (emit_library_call_value_1): Add new variable fndecl initialized by
19073         NULL_TREE. It should be the decl type of orgfun, but this information
19074         seems not to be available here, so it uses the default calling abi.
19075         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
19076         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
19077         by TARGET_RETURN_IN_MEMORY.
19078         * config/i386/i386-interix.h: Likewise.
19079         * config/i386/i386.h: Likewise.
19080         * config/i386/i386elf.h: Likewise.
19081         * config/i386/ptx4-i.h: Likewise.
19082         * config/i386/sol2-10.h: Likewise.
19083         * config/i386/sysv4.h: Likewise.
19084         * config/i386/vx-common.h: Likewise.
19085         * config/cris/cris.h: Removed #if 0 clause.
19086         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
19087         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
19088         argument.
19089         (ix86_sol10_return_in_memory): Likewise.
19090         (ix86_i386elf_return_in_memory): New.
19091         (ix86_i386interix_return_in_memory): New.
19092         * config/mt/mt-protos.h (mt_return_in_memory): New.
19093         * config/mt/mt.c: Likewise.
19094         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19095         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
19096         * config/bfin/bfin.h: Likewise.
19097         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
19098         argument.
19099         * config/bfin/bfin.c: Likewise.
19100         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19101         * config/alpha/unicosmk.h: Likewise.
19102         * config/i386/cygming.h: Likewise.
19103         * config/iq2000/iq2000.h: Likewise.
19104         * config/mips/mips.h: Likewise.
19105         * config/mn10300/mn10300.h: Likewise.
19106         * config/rs6000/rs6000.h: Likewise.
19107         * config/score/score.h: Likewise.
19108         * config/spu/spu.h: Likewise.
19109         * config/v850/v850.h: Likewise.
19110         * defaults.h: Likewise.
19111         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
19112         * expr.c (emit_block_move): Adjust use of
19113         OUTGOING_REG_PARM_STACK_SPACE.
19114         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
19115         OUTGOING_REG_PARM_STACK_SPACE.
19116         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
19117
19118 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
19119
19120         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
19121         on OMP_RETURN for OMP_FOR.
19122
19123         PR debug/35896
19124         * dwarf2out.c (dw_expand_expr, common_check): Removed.
19125         (fortran_common): New function.
19126         (gen_variable_die): Call fortran_common instead of common_check,
19127         adjust for it returning tree instead of rtx.  Formatting.
19128
19129 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19130
19131         PR rtl/7335
19132         PR rtl/33826
19133         * see.c (see_copy_insn): Copy new pure const attributes for new call.
19134         * c-decl.c (merge_decls): Ditto.
19135         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
19136         to RTL_CONST_OR_PURE_CALL_P.
19137         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
19138         Initialized DECL_LOOPING_CONST_PURE.
19139         (process_call_operands): Set tree_side_effects properly.
19140         * tree.h (TREE_READONLY_DECL_P): Removed.
19141         (DECL_IS_PURE): Renamed to DECL_PURE_P.
19142         (DECL_LOOPING_OR_CONST_P): New macro.
19143         (struct tree_function_decl): Added looping_const_or_pure_p.
19144         (ECF_*) Renumbered.
19145         (ECF_LOOPING_OR_CONST_P): New macro.
19146         * rtlanal.c (pure_const_p): Removed.
19147         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
19148         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
19149         to RTL_CONST_CALL_P.
19150         * ipa-pure-const.c (pure_const_state_e): Added looping field.
19151         (check_decl, check_tree, check_call, scan_function): Initialize
19152         looping.
19153         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
19154         (static_execute): Set looping true for recursive functions.
19155         Undo setting state to IPA_NEITHER for recursive functions.
19156         * cse.c (cse_insn):
19157         * ifcvt.c (noce_can_store_speculate_p): Changed
19158         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
19159         RTL_CONST_OR_PURE_CALL_P.
19160         * dse.c (scan_insn): Ditto.
19161         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
19162         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
19163         RTL_CONST_OR_PURE_CALL_P.
19164         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
19165         pure_call_p to RTL_CONST_CALL_P.
19166         * gimplify.c (gimplify_call_expr): Clear side effects for
19167         non-looping pure and constant calls.
19168         * calls.c (emit_call_1): Set rtl flags from ecf flags.
19169         (flags_from_decl_or_type): Set ecf flags from decl flags.
19170         (initialize_argument_information): Turn off
19171         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
19172         Change const to pure if callee_copies is true rather than just
19173         turning off const.
19174         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
19175         way of marking pure calls.
19176         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
19177         Remove hack that was supposed to fix pr7335 and remove old
19178         way of marking pure calls.
19179         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
19180         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
19181         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
19182         RTL_CONST_OR_PURE_CALL_P.
19183         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
19184         * loop-invariant.c (find_exits, find_invariant_bb): Changed
19185         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
19186         * sched-deps.c (schedule_analyze): Ditto.
19187         * rtl.h (struct rtx_def): Use call field, unchanging field, and
19188         return_val field of calls to represent pure and const function info.
19189         (CONST_OR_PURE_CALL_P): Deleted macro.
19190         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19191         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
19192         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
19193         TREE_READONLY.
19194         * tree-optimize.c (execute_fixup_cfg): Added test for
19195         ECF_LOOPING_CONST_OR_PURE.
19196         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
19197         DECL_PURE_P.
19198         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
19199         effects for looping pure or const calls.
19200         (verify_gimple_expr): Added verification code.
19201         * config/alpha/alpha.c (alpha_legitimize_address,
19202         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
19203         RTL_CONST_CALL_P.
19204         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
19205         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
19206         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
19207         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
19208         RTL_CONST_OR_PURE_CALL_P.
19209         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
19210         and const calls to be deleted.
19211
19212 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19213
19214         PR target/35714
19215         * config/i386/mmx.md (mmx_subv2sf3): New expander.
19216         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
19217         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
19218         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19219         to handle nonimmediate operands.
19220         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
19221         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
19222         to handle nonimmediate operands.
19223         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
19224         (mmx_pmulhrwv4hi3): New expander.  Use
19225         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19226         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
19227         (sse2_umulv1siv1di3): New expander.  Use
19228         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19229         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
19230         (mmx_eq<mode>3): New expander.  Use
19231         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19232         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
19233         (mmx_uavgv8qi3): New expander.  Use
19234         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19235         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
19236         (mmx_uavgv4hi3): New expander.  Use
19237         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19238
19239         * config/i386/sse.md
19240         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
19241         to handle nonimmediate operands.
19242         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
19243         to handle nonimmediate operands.
19244         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
19245         to handle nonimmediate operands.
19246         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
19247         to handle nonimmediate operands.
19248         (sse2_unpckhpd_exp): New expander.  Use
19249         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19250         (sse2_unpcklpd_exp): New expander.  Use
19251         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19252         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
19253         to handle nonimmediate operands.
19254         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
19255         to handle nonimmediate operands.
19256         (*sse2_<plusminus_insn><mode>3): Rename from
19257         sse2_<plusminus_insn><mode>3 insn pattern.
19258         (sse2_<plusminus_insn><mode>3): New expander.  Use
19259         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19260         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
19261         (sse2_umulv2siv2di3): New expander.  Use
19262         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19263         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
19264         (sse4_1_mulv2siv2di3): New expander.  Use
19265         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19266         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
19267         (sse2_pmaddwd): New expander.  Use
19268         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19269         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
19270         (sse2_eq<mode>3): New expander.  Use
19271         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19272         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
19273         (sse4_1_eqv2di3): New expander.  Use
19274         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19275         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19276         (sse2_uavgv16qi3): New expander.  Use
19277         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19278         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19279         (sse2_uavgv16qi3): New expander.  Use
19280         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19281         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
19282         (sse2_uavgv8hi3): New expander.  Use
19283         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19284         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
19285         (ssse3_pmulhrswv8hi3): New expander.  Use
19286         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19287         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
19288         (ssse3_pmulhrswv4hi3): New expander.  Use
19289         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19290
19291         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
19292         (<sse>_vmmul<mode>3): Ditto.
19293         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
19294         (divv2df3): Ditto.
19295         (ssse3_pmaddubsw128): Use register_operand for operand 1.
19296         (ssse3_pmaddubsw): Ditto.
19297
19298         * config/i386/i386.c (struct_builtin_description)
19299         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
19300         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
19301         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
19302         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
19303         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
19304         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
19305         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
19306         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
19307         (ix86_fixup_binary_operands): Assert that src1
19308         and src2 must have the same mode when swapped.
19309         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
19310         and ix86_binary_operator_ok.  Do not force operands in registers
19311         when optimizing.
19312
19313 2008-05-07  Jan Hubicka  <jh@suse.cz>
19314
19315         * cgraph.c (dump_cgraph_node): Update.
19316         * cgraph.h (cgraph_local_info): Break out inline summary.
19317         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
19318         hook.
19319         * ipa-inline (inline_summary): New accestor function.
19320         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
19321         cgraph_decide_inlining, compute_inline_parameters): Update.
19322         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
19323
19324 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
19325
19326         Cleanup ColdFire scheduling support and add V4 pipeline model.
19327
19328         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
19329         (define_attr cpu): Add cfv4 value.
19330         (define_attr type, define_attr type1): Merge into a single 'type'
19331         attribute.  Update all uses.
19332         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
19333         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
19334         Update all uses.
19335         (define_attr opx_mem, define_attr opy_mem): Remove.
19336         (define_attr op_mem): Clean up, update comment.
19337         (define_attr size): Use specific values instead of general int.
19338         (define_attr guess, define_attr split): Remove.  Update all uses.
19339         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
19340         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
19341         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
19342         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
19343         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
19344         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
19345         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
19346         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
19347         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
19348         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
19349         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
19350         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
19351         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
19352         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
19353         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
19354         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
19355         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
19356         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
19357         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
19358         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
19359         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
19360         Update or set attributes.
19361         (stack_tie): New fake instruction.
19362
19363         * config/m68k/m68k.h (TUNE_CFV4): New macro.
19364         (m68k_sched_attr_size): Update declaration.
19365         (m68k_sched_attr_type2): Remove.
19366         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
19367         Declare new bypass predicates.
19368
19369         * config/m68k/m68k.c (m68k_sched_issue_rate,
19370         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
19371         implementations.
19372         (TARGET_SCHED_ISSUE_RATE,
19373         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
19374         (override_options): Handle scheduling for ColdFire V4 core.
19375         (m68k_expand_prologue): Emit stack_tie.
19376         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
19377         'OP_TYPE_FPN'.  Update all uses.
19378         (sched_guess_p): Remove.
19379         (sched_address_type): Handle symbolic addresses.
19380         (sched_get_operand): New static function.
19381         (sched_operand_type): Merge into sched_attr_op_type.
19382         (sched_attr_op_type): Handle FP registers, handle quick constants,
19383         update.
19384         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
19385         (m68k_sched_attr_size): Update.  Move logic to ...
19386         (sched_get_attr_size_int): New static function.
19387         (sched_get_opxy_mem_type): New static function.
19388         (m68k_sched_attr_op_mem): Update.
19389         (m68k_sched_attr_type2): Remove.
19390         (sched_cfv4_bypass_data): New static variable.
19391         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
19392         (m68k_sched_issue_rate): Implement scheduler hook.
19393         (struct _sched_ib: enabled_p): New field.
19394         (m68k_sched_variable_issue): Update.  Handle V4.
19395         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
19396         sched_dump_class_func_t, sched_dump_split_class,
19397         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
19398         sched_dump_dfa_class, m68k_sched_dump): Remove.
19399         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
19400         hook.
19401         (m68k_sched_init_global): Remove statisctics dumping, introduce
19402         sanity check that all instructions have pipeline reservations.  Handle
19403         ColdFire V4 core.
19404         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19405         Handle ColdFire V4 core.
19406         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
19407         New static functions.
19408         (m68k_sched_address_bypass_p): New bypass predicate.
19409         (sched_get_indexed_address_scale): New static function.
19410         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
19411
19412         * cf.md: Update comments.
19413         (define_attr type2): Remove.  Use 'type' attribute instead.
19414         Update all uses.
19415         (cf_ib): Rename to cfv123_ib.  Update all uses.
19416         (cf_oep): Rename to cfv123_oep.  Update all uses.
19417         (cf_chr): Rename to cfv123_chr.  Update all uses.
19418         (cf_mem): Rename to cfv123_mem.  Update all uses.
19419         (cf_mac): Move to more appropriate place.
19420         (cfv123_guess): New automaton and cpu_unit.
19421         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
19422         Update uses of 'size' attribute.  Handle before reload scheduling.
19423         (cfv123_guess): New dummy reservation for unhandled instructions.
19424         (cfv4_*): Pipeline description of ColdFire V4 core.
19425         (ignore): New reservation to handle 'ignore' type.
19426
19427 2008-05-07  Ian Lance Taylor  <iant@google.com>
19428
19429         PR middle-end/36013
19430         * gimplify.c (find_single_pointer_decl_1): Don't look through
19431         indirections.
19432         (find_single_pointer_decl): Adjust comments.
19433
19434 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
19435
19436         PR middle-end/36137
19437         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
19438         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
19439
19440         PR middle-end/36106
19441         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
19442         integral type rather than floating point, then VIEW_CONVERT_EXPR
19443         to the floating point type.
19444
19445 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19446
19447         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
19448         TFmode op0 to register.
19449
19450 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
19451
19452         * c-decl.c (grokdeclarator): Comment typo.
19453
19454 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
19455
19456         * tree-flow.h: Remove prototype for computed_goto_p.
19457         * tree-cfg.c (computed_goto_p): Make static.
19458
19459 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19460
19461         PR target/35657
19462         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
19463         (contains_aligned_value_p): This.  Handle _Decimal128.
19464         (ix86_function_arg_boundary): Only align _Decimal128 to its
19465         natural boundary and handle it properly.
19466
19467 2008-05-06  Martin Jambor  <mjambor@suse.cz>
19468
19469         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
19470         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
19471         (ipcp_method_set_orig_node): Removed.
19472         (ipcp_cval_get_cvalue_type): Removed.
19473         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
19474         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
19475         (ipcp_cval_set_cvalue_type): Removed.
19476         (ipcp_cval_get_cvalue): Removed.
19477         (ipcp_cval_set_cvalue): Removed.
19478         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
19479         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
19480         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
19481         (ipcp_cval_meet): Renamed to ipa_lattice_meet
19482         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
19483         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
19484         (ipcp_get_ith_lattice): Changed parameters.
19485         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
19486         (ipcp_lattice_from_jfunc): Changed parameters.
19487         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
19488         (ipcp_method_cval_print): Added temporary variable info.
19489         (ipcp_redirect): Removed already unused local variable caller.
19490         (ipcp_redirect): New temporary variable orig_callee_info
19491         (ipcp_redirect): Removed newly unused local variable callee.
19492         (ipcp_redirect): Removed (a bit confusing) local variable type.
19493         (ipcp_insert_stage): Added local variable info.
19494         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
19495         renamed too
19496         (ipcp_formal_create): Removed.
19497         (ipcp_method_cval_set): Removed.
19498         (ipcp_propagate_stage): Renamed lattice variables.
19499         (ipcp_method_cval_set_cvalue_type): Removed.
19500         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
19501         (ipcp_print_all_lattices): Changed printed strings to refer to
19502         lattices rather than cvals.
19503         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
19504         (ipcp_propagate_const): Changed formal parameters.
19505         (build_const_val): Changed formal parameters.
19506         (ipcp_insert_stage): Removed useless variable cvalue
19507         (build_const_val): Changed formal parameters.
19508         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
19509         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
19510         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
19511         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
19512         (ipcp_print_func_profile_counts): Changed string from "method" to
19513         "function"
19514         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
19515         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
19516         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
19517         (ipcp_structures_print): Renamed to ipcp_print_all_structures
19518         (ipcp_profile_print): Renamed to ipcp_print_profile_data
19519         (ipcp_lat_is_const): Changed parameters and made inline.
19520         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
19521         (ipcp_redirect): Renamed to ipcp_need_redirect_p
19522         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
19523         the predicate condition directly
19524         (ipcp_propagate_stage): Added local variable args. Removed local
19525         variable callee.  (Both are mere code simplifications.)
19526         (ipcp_method_dont_insert_const): Renamed to
19527         ipcp_node_not_modifiable_p.
19528         (ipcp_node_not_modifiable_p): Made inline.
19529         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
19530         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
19531         (ipcp_print_all_lattices): Removed variable cvalue
19532         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
19533         Updated comments.
19534
19535 2008-05-06  Olivier Hainque  <hainque@adacore.com>
19536
19537         * tree-sra.c (try_instantiate_multiple_fields): Early return
19538         if field has POINTER_TYPE.
19539
19540 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
19541
19542         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
19543         by using 'q' specifier for instruction.
19544         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
19545
19546 2008-05-06  Anatoly Sokolov <aesok@post.ru>
19547
19548         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
19549         Change mode of zero_extract from QImode to HImode.
19550         (sign bit tests peepholes): (Ditto.).
19551
19552 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
19553
19554         * config/i386/mmx.md: Remove double backslashes from asm templates.
19555         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
19556         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19557         to handle nonimmediate operands.
19558         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
19559         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19560         to handle nonimmediate operands.
19561         (*mmx_<code>v2sf3_finite): New insn pattern.
19562         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
19563         (mmx_<code>v2sf3): New expander.  Use
19564         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19565         (mmx_<plusminus_insn><mode>3): New expander.  Use
19566         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19567         (*mmx_<plusminus_insn><mode>3): New insn pattern.
19568         (mmx_add<mode>3): Removed.
19569         (mmx_ssadd<mode>3): Ditto.
19570         (mmx_usadd<mode>3): Ditto.
19571         (mmx_sub<mode>3): Ditto.
19572         (mmx_sssub<mode>3): Ditto.
19573         (mmx_ussub<mode>3): Ditto.
19574         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
19575         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
19576         to handle nonimmediate operands.
19577         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
19578         insn pattern.
19579         (mmx_smulv4hi3_highpart): New expander.  Use
19580         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19581         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
19582         insn pattern.
19583         (mmx_umulv4hi3_highpart): New expander.  Use
19584         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19585         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
19586         (mmx_<code>v4hi3): New expander.  Use
19587         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19588         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
19589         (mmx_<code>v8qi3): New expander.  Use
19590         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19591         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
19592         (mmx_<code><mode>3): New expander.  Use
19593         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19594
19595 2008-05-05  Jan Hubicka  <jh@suse.cz>
19596
19597         PR tree-optimization/36118
19598         * passes.c (pass_init_dump_file): Fix dump header.
19599
19600 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19601
19602         PR middle-end/36141
19603         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
19604         VCE for function decls.
19605
19606 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19607
19608         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
19609
19610 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19611
19612         * config/i386/i386.md (sat_plusminus): New.
19613         (plusminus_insn): Likewise.
19614         (plusminus_mnemonic): Likewise.
19615         (addsub): Removed.
19616         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
19617         (*<addsub><mode>3_cc_overflow): Renamed to ...
19618         (*<plusminus_insn><mode>3_cc_overflow): This.
19619         (*<addsub>si3_zext_cc_overflow): Renamed to ...
19620         (*<plusminus_insn>si3_zext_cc_overflow): This.
19621
19622         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
19623         (<plusminus_insn><mode>3): This.
19624         (*<addsub><mode>3): Renamed to ...
19625         (*<plusminus_insn><mode>3): This.
19626         (<sse>_vm<addsub><mode>3): Renamed to ...
19627         (<sse>_vm<plusminus_insn><mode>3): This.
19628         (sse3_h<addsub>v4sf3): Renamed to ...
19629         (sse3_h<plusminus_insn>v4sf3): This.
19630         (sse3_h<addsub>v2df3): Renamed to ...
19631         (sse3_h<plusminus_insn>v2df3): This.
19632         (<plusminus_insn><mode>3): New.
19633         (*<plusminus_insn><mode>3): Likewise.
19634         (sse2_<plusminus_insn><mode>3): Likewise.
19635         (add<mode>): Removed.
19636         (*add<mode>3): Likewise.
19637         (sse2_ssadd<mode>3): Likewise.
19638         (sse2_usadd<mode>3): Likewise.
19639         (sub<mode>3): Likewise.
19640         (*sub<mode>3): Likewise.
19641         (sse2_sssub<mode>3): Likewise.
19642         (sse2_ussub<mode>3): Likewise.
19643
19644 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
19645
19646         * gthr-single.h: Add in required interface elements as per gthr.h.
19647         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
19648         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
19649         Generalize UNUSED macro.
19650         (__gthread_once): Add.
19651         (__gthread_key_create): Add.
19652         (__gthread_key_delete): Add.
19653         (__gthread_getspecific): Add.
19654         (__gthread_setspecific): Add.
19655
19656 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
19657
19658         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
19659         the same size types for the indirect reference on the rhs, then
19660         create a VCE.
19661
19662 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
19663
19664         * config/i386/i386.md
19665         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
19666         one insn template instead of template series.
19667         (*xordi_1_rex64): Ditto.
19668         (*xordi_2_rex64): Ditto.
19669
19670 2008-05-05  Ira Rosen  <irar@il.ibm.com>
19671
19672         PR tree-optimization/36119
19673         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
19674         in case of SLP.
19675
19676 2008-06-04  Jan Hubicka  <jh@suse.cz>
19677
19678         tree-optimization/36100
19679         * tree-pass.h (pass_O0_always_inline): Declare.
19680         * ipa-inline.c (inline_transform): Remove dead code.
19681         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
19682         pass_O0_always_inline): New.
19683         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
19684
19685 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
19686
19687         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
19688         mnemonic in this_param move for TARGET_64BIT.
19689
19690 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
19691
19692         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
19693         (*strmovsi_rex_1): Ditto.
19694         (*strsetsi_1): Ditto.
19695         (*strsetsi_rex_1): Ditto.
19696
19697         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
19698         adddicc expanders using SWI mode iterator.
19699
19700 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
19701
19702         PR target/36121
19703         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
19704         argument handling.
19705
19706 2008-05-04  David S. Miller  <davem@davemloft.net>
19707
19708         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
19709         (sparc*-*-linux*): Use linux.h in tm_file.
19710         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
19711         compiler defaulting to 32-bit.
19712         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
19713         no longer needed.
19714         * config/sparc/linux.h: Remove definitions now obtained
19715         properly from linux.h
19716         * config/sparc/linux64.h: Likewise.
19717         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
19718         don't want this setting for 32-bit builds in a biarch compiler.
19719         * doc/install.texi: Add sparc-linux to list of targets
19720         supporting --enable-targets=all.
19721
19722 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
19723
19724         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
19725
19726 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
19727
19728         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
19729         after V4SI_FTYPE_V8HI.
19730         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
19731         case V4SI_FTYPE_V2DF.
19732
19733 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
19734
19735         * doc/invoke.texi (max-flow-memory-locations): Removed.
19736         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
19737
19738 2008-05-03  Richard Guenther  <rguenther@suse.de>
19739
19740         PR middle-end/34973
19741         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
19742
19743 2008-05-02  David S. Miller  <davem@davemloft.net>
19744
19745         * config.gcc (need_64bit_hwint): Document libcpp dependency.
19746
19747 2008-05-02  Simon Baldwin <simonb@google.com>
19748
19749         PR bootstrap/36108
19750         * c-common.h (warn_array_subscript_range): Removed.
19751         * c-common.c (warn_array_subscript_range): Ditto.
19752         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
19753         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
19754
19755 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19756
19757         * config/i386/i386.c (ix86_special_builtin_type): New.
19758         (bdesc_special_args): Likewise.
19759         (ix86_expand_special_args_builtin): Likewise.
19760         (ix86_init_mmx_sse_builtins): Updated.
19761         (ix86_expand_builtin): Updated.
19762         (ix86_expand_store_builtin): Removed.
19763         (ix86_expand_unop_builtin): Likewise.
19764
19765         * config/i386/mm3dnow.h (__v2sf): Moved to ...
19766         * config/i386/mmintrin.h (__v2sf): Here.
19767
19768         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
19769         const __v2sf.
19770         (_mm_loadl_pi): Likewise.
19771         (_mm_storeh_pi): Replace __v2si with __v2sf.
19772         (_mm_storel_pi): Likewise.
19773
19774         * doc/extend.texi: Correct __builtin_ia32_loadhps,
19775         __builtin_ia32_loadlps, __builtin_ia32_storehps,
19776         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
19777         __builtin_ia32_loadlpd.
19778
19779 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19780
19781         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
19782         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
19783         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
19784         (ix86_init_mmx_sse_builtins): Updated.
19785         (ix86_expand_args_builtin): Likewise.
19786         (ix86_expand_builtin): Likewise.
19787         (ix86_expand_unop1_builtin): Renamed to ...
19788         (ix86_expand_unop_vec_merge_builtin): This.
19789
19790 2008-05-01  Jan Hubicka  <jh@suse.cz>
19791
19792         PR bootstrap/36100
19793         * ipa-inline.c (inline_generate_summary): Make static.
19794         (inline_transform): Do not call inlining at -O0; make static.
19795         * passes.c (execute_todo): Add sanity check.
19796         (execute_one_ipa_transform_pass): Execute proper flags.
19797
19798 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
19799
19800         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
19801         (DECL_NONADDRESSABLE_P): Likewise.
19802         * alias.c (record_component_aliases): Fix comment.
19803
19804 2008-05-01  Simon Baldwin <simonb@google.com>
19805
19806         * c-common.h (warn_array_subscript_range): New function.
19807         * c-common.c (warn_array_subscript_range): Ditto.
19808         * tree-vrp.c (check_array_ref): Corrected code to agree with
19809         comment, ignoring only arrays of size 0 or size 1.
19810         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
19811
19812 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19813
19814         * config/i386/i386.c (ix86_builtin_type): Replace
19815         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
19816         (bdesc_args): Updated.
19817         (ix86_init_mmx_sse_builtins): Likewise.
19818         (ix86_expand_args_builtin): Likewise.
19819
19820         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
19821         with __v1di.
19822
19823         * doc/extend.texi: Correct __builtin_ia32_palignr.
19824
19825 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19826
19827         PR target/36095
19828         * config/i386/i386.c (bdesc_crc32): Removed.
19829         (ix86_expand_crc32): Likewise.
19830         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
19831         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
19832         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
19833         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
19834         UINT_FTYPE_UINT_UCHAR.
19835         (bdesc_args): Updated. Add crc32 builtins.
19836         (ix86_init_mmx_sse_builtins): Updated.
19837         (ix86_expand_args_builtin): Updated to support subreg.
19838
19839         * doc/extend.texi: Correct __builtin_ia32_crc32di.
19840
19841 2008-05-01  Jan Hubicka  <jh@suse.cz>
19842
19843         * tree-pass.h (opt_pass): Add IPA_PASS.
19844         (varpool_node, cgraph_node): Forward declare.
19845         (ipa_opt_pass): Define.
19846         (pass_ipa_inline): Turn into ipa_opt_pass.
19847         (pass_apply_inline): Remove.
19848         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
19849         (apply_inline): Turn into ....
19850         (inline_transform): ... this one.
19851         (inline_generate_summary): New function.
19852         (pass_apply_inline): Remove.
19853         * function.h (ipa_opt_pass): Forward declare structure; typedef;
19854         vector.
19855         (struct function): Add ipa_transforms_to_apply.
19856         * passes.c (register_one_dump_file): Work on IPA_PASS.
19857         (init_optimization_passes): Remove pass_inline_parameters and
19858         pass_apply_inline.
19859         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
19860         (execute_one_pass) ... here; apply transforms when possible.
19861         (add_ipa_transform_pass, execute_ipa_summary_asses,
19862         execute_one_ipa_transform_pass): New.
19863         (execute_ipa_pass_list): Update for IPA_PASS type.
19864
19865 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19866
19867         * config/i386/i386.c (ix86_builtin_type): Add
19868         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
19869         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
19870         (bdesc_args): Add SSE4a builtins.
19871         (ix86_init_mmx_sse_builtins): Updated.
19872         (ix86_expand_args_builtin): Likewise.
19873         (ix86_expand_builtin): Likewise.
19874
19875 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19876
19877         * config/i386/i386.c (ix86_builtin_type): Add
19878         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
19879         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
19880         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
19881         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
19882         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
19883         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
19884         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
19885         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
19886         and DI_FTYPE_DI_DI_INT.
19887         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
19888         (ix86_init_mmx_sse_builtins): Updated.
19889         (ix86_expand_args_builtin): Likewise.
19890         (ix86_expand_builtin): Likewise.
19891         (ix86_expand_binop_imm_builtin): Removed.
19892
19893         * doc/extend.texi: Correct __builtin_ia32_palignr128.
19894
19895 2008-04-30  Richard Guenther  <rguenther@suse.de>
19896
19897         PR tree-optimization/32921
19898         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
19899
19900 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19901
19902         * config/arm/arm.c (arm_unwind_emit): Use
19903         crtl->all_throwers_are_sibcalls instead of
19904         cfun->all_throwers_are_sibcalls.
19905         (arm_output_fn_unwind): Likewise.
19906         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
19907         instead of cfun->uses_pic_offset_table.
19908         (frv_expand_prologue): Likewise.
19909         (frv_frame_pointer_required): Likewise.
19910         (frv_expand_fdpic_call): Likewise.
19911         (frv_emit_movsi): Likewise.
19912         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
19913         cfun->returns_pcc_struct instead of
19914         current_function_returns_pcc_struct.
19915         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
19916         instead of cfun->calls_eh_return.
19917         (m32c_pushm_popm): Likewise.
19918         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
19919         "extern" declaration.
19920
19921 2008-04-30  Richard Guenther  <rguenther@suse.de>
19922
19923         PR tree-optimization/21636
19924         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
19925         constant address.
19926         (evaluate_stmt): Print the likely value.
19927         (ccp_visit_stmt): Avoid excessive vertical spacing.
19928
19929 2008-04-30  Rafael Espíndola  <espindola@google.com>
19930
19931         * builtins.c (fold_call_expr): Return realret.
19932         * tree-ssa-threadedge.c
19933         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19934         __builtin_object_size.
19935
19936 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
19937
19938         * gcc.c (wrapper_string): New variable.
19939         (insert_wrapper): New function.
19940         (execute): New option -wrapper.
19941         * doc/invoke.texi (Overall Options): New driver option -wrapper.
19942
19943 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
19944
19945         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
19946         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
19947         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
19948         from...
19949         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
19950         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
19951         config/rs6000/e500crtres64gprctr.asm,
19952         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
19953         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
19954         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
19955         config/rs6000/e500crtsav64gprctr.asm,
19956         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
19957         config/rs6000/e500crtsavg64gprctr.asm: New files.
19958         * config/rs6000/t-ppccomm: Add build rules for new files.
19959         (LIB2FUNCS_STATIC_EXTRA): Add new files.
19960         * config/rs6000/t-netbsd: Add build rules for new files.
19961         (LIB2FUNCS_STATIC_EXTRA): New variable.
19962         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
19963         (CRTSAVRES_DEFAULT_SPEC): Likewise.
19964         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
19965
19966 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
19967
19968         * config/i386/i386.c (ix86_builtin_type): Add
19969         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
19970         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
19971         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
19972         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
19973         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
19974         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
19975         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
19976         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
19977         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
19978         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
19979         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
19980         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
19981         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
19982         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
19983         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
19984         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
19985         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
19986         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
19987         V1DI_FTYPE_V2SI_V2SI.
19988         (bdesc_2arg): Moved to ...
19989         (bdesc_args): Here.
19990         (ix86_init_mmx_sse_builtins): Updated.
19991         (ix86_expand_args_builtin): Updated.  Take a pointer
19992         to const struct builtin_description.  Handle comparison
19993         builtin functions.
19994         (ix86_expand_sse_compare): Take a new argument for swapping operands.
19995         (ix86_expand_builtin): Updated.
19996
19997         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
19998         (ssse3_pmaddubsw128): This.
19999         (ssse3_pmaddubswv4hi3): Renamed to ...
20000         (ssse3_pmaddubsw): This.
20001
20002         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
20003         (__builtin_ia32_packssdw128): Likewise.
20004         (__builtin_ia32_packuswb128): Likewise.
20005         (__builtin_ia32_pmaddubsw): Likewise.
20006         (__builtin_ia32_pmaddubsw128): Likewise.
20007
20008 2008-04-30  Richard Guenther  <rguenther@suse.de>
20009
20010         PR tree-optimization/14847
20011         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
20012         (recognize_bits_test): Use it.
20013         (recognize_single_bit_test): Likewise.
20014
20015 2008-04-30  Martin Jambor  <mjambor@suse.cz>
20016
20017         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
20018         instead of setting number of formal parameters to zero.
20019         (ipcp_init_stage): Do not set the number of actual parameters to zero
20020         either.
20021         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
20022         which are called with variable number of arguments.
20023         (ipcp_insert_stage): Explicitely skipping all nodes which are
20024         called with variable number of arguments.
20025         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
20026         number of parameters.
20027
20028         * ipa-prop.h (struct ipa_node_params): Added flag
20029         called_with_var_arguments
20030         (ipa_set_param_count): Added.  Changed sole setter to use it.
20031         (ipa_get_param_count): Added.  All readers of param_count
20032         converted to use it instead.
20033         (ipa_set_called_with_variable_arg): Added.
20034         (ipa_is_called_with_var_arguments): Added.
20035         (ipa_get_ith_param): Added.  All readers of param_decls converted
20036         to use it instead.
20037         (ipa_set_cs_argument_count): Added, sole writer to argument_count
20038         changed to use it.
20039         (ipa_get_cs_argument_count): Added, all readers of argument_count
20040         changed to cal it.
20041         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
20042         to use it.
20043
20044         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
20045         (struct ipcp_lattice): Renamed cval_type to type
20046         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
20047
20048         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
20049         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
20050         (ipcp_insert_stage): Changed the type of variable cvalue to tree
20051         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
20052         (build_const_val): Changed the type of parameter cvalue to tree
20053         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
20054         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
20055
20056         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
20057         constant
20058
20059         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
20060         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
20061         (ipa_add_method): Renamed to ipa_push_func_to_list
20062         (ipa_remove_method): Renamed to ipa_pop_func_from_list
20063         (ipa_callsite_param_count): Removed.
20064         (ipa_callsite_param_count_set): Removed.
20065         (ipa_callsite_param): Removed.
20066         (ipa_callsite_callee): Removed.
20067         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
20068         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
20069         (ipa_method_formal_count): Removed.
20070         (ipa_method_formal_count_set): Removed.
20071         (ipa_method_get_tree): Removed.
20072         (ipa_method_tree_map_create): Removed.
20073         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
20074         (ipa_create_param_decls_array): Creates the array itself
20075         (ipa_create_param_decls_array): Temporary variable info instead of
20076         a few dereferences.
20077         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
20078         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
20079         (get_type): Removed.
20080         (ipa_jf_get_info_type): Removed.
20081         (ipa_node_create): Renamed to ipa_create_node_params
20082         (ipa_free): Renamed to ipa_free_all_node_params
20083         (ipa_nodes_create): Renamed to ipa_create_all_node_params
20084         (ipa_edges_create): Renamed to ipa_create_all_edge_args
20085         (ipa_edges_free): Renamed to ipa_free_all_edge_args
20086         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
20087         (ipa_free_all_node_params): Deallocation to jump_functions moved to
20088         ipa_free_all_edge_args
20089         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
20090         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
20091         (ipa_create_methodlist_node): Removed.
20092         (ipa_methodlist_method): Removed.
20093         (ipa_methodlist_method_set): Removed.
20094         (ipa_methodlist_next_method): Removed.
20095         (ipa_methodlist_next_method_set): Removed.
20096         (ipa_method_is_modified): Removed.
20097         (ipa_method_modify_create): Removed.
20098         (ipa_method_modify_init): Temporary variable info instead of a few
20099         dereferences.
20100         (ipa_detect_param_modifications): Temporary variable info instead of
20101         a few dereferences.
20102         (ipa_compute_jump_functions): Temporary variable info instead of
20103         a few dereferences.
20104         (ipa_method_modify_set): Removed.
20105         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
20106         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
20107         than craph_node as the first parameter.
20108         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
20109         (ipa_method_modify_init): Removed.
20110         (ipa_compute_jump_functions): Added a temp variable instead of
20111         repeatadly dereferencing the cgraph_edge.aux pointer
20112         (ipa_callsite_param_set_type): Removed.
20113         (ipa_compute_jump_functions): i renamed to index and moved to
20114         an inner block
20115         (ipa_callsite_param_set_info_type_formal): Removed.
20116         (ipa_callsite_param_set_info_type): Removed.
20117         (ipa_callsite_param_map_create): Removed.
20118         (ipa_callsite_tree): Removed.
20119         (ipa_callsite_caller): Removed.
20120         (ipa_pop_func_from_list): return_method removed to return_func
20121
20122         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
20123         prefixed all values with IPA_. Changed all users.
20124         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
20125         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
20126         and FORMAL_IPATYPE IPA_PASS_THROUGH.
20127         (union parameter_info): Renamed to jump_func_value.
20128         (union jump_func_value): Renamed value to constant
20129         (struct ipa_jump_func): Renamed info_type to value
20130         (struct ipa_node): Renamed to ipa_node_params
20131         (struct ipa_node_params): Renamed ipa_arg_num to param_count
20132         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
20133         (struct ipa_node_params): Renamed ipa_mod to modified_flags
20134         (struct ipa_edge): Renamed to ipa_edge_args
20135         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
20136         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
20137         (struct ipa_methodlist): Renamed to ipa_func_list
20138         (struct ipa_func_list): method_p renamed to node, next_method
20139         renamed to next
20140         (ipa_methodlist_p): Removed, switched all users to struct pointer
20141         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
20142
20143 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
20144
20145         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
20146         (rs6000_emit_epilogue): Use backchain to restore only when we
20147         have a large frame.  Make use of frame pointer to restore if we
20148         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
20149
20150 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
20151
20152         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20153         Add mode to zero_extract.
20154         (sign bit tests peepholes): (Ditto.).
20155
20156 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20157
20158         * config/i386/i386.c (ix86_builtins): Replace Prescott New
20159         Instructions in comments with SSE3.
20160         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
20161         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
20162         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
20163         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
20164         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
20165         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
20166         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
20167         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
20168         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
20169         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
20170         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
20171         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
20172         (bdesc_sse_args): Renamed to ...
20173         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
20174         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
20175         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
20176         IX86_BUILTIN_FABSQ.
20177         (bdesc_1arg): Moved to ...
20178         (bdesc_args): Here.
20179         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
20180         Instructions in comments with SSE3.
20181         (ix86_expand_sse_operands_builtin): Renamed to ...
20182         (ix86_expand_args_builtin): This.  Updated.
20183         (ix86_expand_unop1_builtin): Update comments.
20184         (ix86_expand_builtin): Updated.
20185
20186 2008-04-29  Richard Guenther  <rguenther@suse.de>
20187
20188         PR tree-optimization/36078
20189         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
20190         Update virtual SSA form after cleaning up the CFG.
20191
20192 2008-04-29  Richard Guenther  <rguenther@suse.de>
20193
20194         PR middle-end/15255
20195         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
20196
20197 2008-04-29  Richard Guenther  <rguenther@suse.de>
20198
20199         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
20200         (compute_may_aliases): Do not call finalize_ref_all_pointers.
20201         (compute_flow_insensitive_aliasing): Do not treat
20202         PTR_IS_REF_ALL pointers special.
20203         (get_smt_for): Likewise.
20204         (may_alias_p): Re-structure.
20205         (is_escape_site): A ref-all pointer conversion is not an escape site.
20206         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
20207         PTR_IS_REF_ALL pointers special.
20208         * tree-ssa-structalias.h (struct alias_info): Remove
20209         ref_all_symbol_mem_tag field.
20210         (PTR_IS_REF_ALL): Remove.
20211
20212 2008-04-29  Richard Guenther  <rguenther@suse.de>
20213
20214         PR middle-end/36077
20215         * fold-const.c (extract_muldiv_1): In combining division constants
20216         make sure to never overflow.
20217
20218 2008-04-29  Nick Clifton  <nickc@redhat.com>
20219
20220         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
20221
20222 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20223
20224         PR bootstrap/35169
20225         * optc-gen.awk: Work around HP-UX/IA awk bug.
20226
20227 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
20228
20229         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
20230         2008-04-25 commit.
20231
20232 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20233
20234         PR target/36073
20235         * config/i386/i386.md
20236         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
20237         Change operand 1 predicate to nonimmediate_operand.
20238
20239 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
20240
20241         PR debug/36060
20242         * dwarf2out.c (struct die_struct): Mark as chain_circular through
20243         die_sub field.
20244         * gengtype.c (walk_type, write_func_for_structure): Handle
20245         chain_circular.
20246         * doc/gty.texi: Document chain_circular.
20247
20248 2008-04-28  Richard Guenther  <rguenther@suse.de>
20249
20250         PR tree-optimization/36066
20251         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
20252         SCEV and loop.
20253
20254 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20255
20256         PR target/36064
20257         * config/i386/i386.md
20258         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
20259         Use match_scratch instead of match_operand for operands 3 and 4.
20260
20261 2008-04-27  Richard Guenther  <rguenther@suse.de>
20262
20263         PR tree-optimization/18754
20264         PR tree-optimization/34223
20265         * tree-pass.h (pass_complete_unrolli): Declare.
20266         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
20267         loop size before and after unconditionally of UL_NO_GROWTH in effect.
20268         Rewrite loop into loop closed SSA form if it is not already.
20269         (tree_unroll_loops_completely): Re-structure to iterate over
20270         innermost loops with intermediate CFG cleanups.
20271         Unroll outermost loops only if requested or the code does not grow
20272         doing so.
20273         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
20274         loops are available.
20275         (tree_vectorize): Instead do so here.
20276         (tree_complete_unroll): Also unroll outermost loops.
20277         (tree_complete_unroll_inner): New function.
20278         (gate_tree_complete_unroll_inner): Likewise.
20279         (pass_complete_unrolli): New pass.
20280         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
20281         uses outside of the loop.
20282         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
20283         form if it is available.
20284         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
20285         * passes.c (init_optimization_passes): Schedule complete inner
20286         loop unrolling pass before the first CCP pass after final inlining.
20287
20288 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
20289
20290         * targhooks.h (default_emutls_var_fields,
20291         default_emutls_var_init): Declare.
20292         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
20293         * target.h (struct gcc_target): Add struct emutls member.
20294         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
20295         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
20296         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
20297         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
20298         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
20299         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
20300         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
20301         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
20302         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
20303         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
20304         emit debug information.
20305         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
20306         * varasm.c: Include targhooks.h.
20307         (emutls_object_section, emutls_tmpl_section): New.
20308         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
20309         (EMUTLS_SEPARATOR): New.
20310         (prefix_name): New.
20311         (get_emutls_object_name): New.
20312         (default_emutls_var_fields): New, broken out of ...
20313         (get_emutls_object_type): ... here.  Adjust to use target hooks.
20314         (get_emutls_init_templ_addr): Adjust to use target hooks.
20315         (emutls_decl): Adjust to use target hooks.
20316         (emutls_finish): Likewise.
20317         (default_emutls_var_init): New, broken out of ...
20318         (assemble_variable): ... here.  Adjust to use target hooks.
20319         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
20320         SECCAT_EMUTLS_TMPL.
20321         * c-common.c (handle_section_attribute): Prevent overriding
20322         sections for emulated tls with special sections.
20323         * config/i386/i386.c (x86_64_elf_select_section): Add
20324         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
20325         (x86_64_elf_unique_section): Likewise.
20326         * config/vxworks.c: Include tree.h.
20327         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
20328         (vxworks_override_options): Set TLS scheme.
20329         * doc/tm.texi (Emulated TLS): New node.
20330
20331 2008-04-26  Simon Baldwin <simonb@google.com>
20332
20333         PR c/35652
20334         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
20335         with propagated string constants.
20336
20337 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
20338
20339         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
20340         constraint for operand 2 when operand 0 is memory operand.
20341         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
20342         operand 0 is memory operand.
20343         (fix_trunc<mode>_i387_with_temp): Ditto.
20344         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
20345         operand 2 when operand 1 is memory operand.
20346         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
20347         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
20348         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
20349         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20350         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
20351         operands 2,3 and 4 when operand 1 is memory operand.
20352         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
20353         is memory operand.
20354         (fistdi2_floor_with_temp): Ditto.
20355         (fist<mode>2_floor_with_temp): Ditto.
20356         (fistdi2_ceil_with_temp): Ditto.
20357         (fist<mode>2_ceil_with_temp): Ditto.
20358         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
20359
20360 2008-04-26  David Daney  <ddaney@avtrex.com>
20361
20362         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
20363         unspec_volitile.
20364         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
20365         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
20366         UNSPEC_UPDATE_GOT_VERSION): Renumber.
20367         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
20368         (compare_and_swap_12): New insn.
20369         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
20370         * config/mips/mips.c (mips_force_binary): New function.
20371         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
20372         (mips_expand_compare_and_swap_12): New function.
20373         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
20374
20375 2008-04-25  Jan Hubicka  <jh@suse.cz>
20376
20377         PR testsuite/35843
20378         * cfgexpand.c (pass_expand): Turn into RTL pass.
20379         * passes.c (execute_one_pass): Do pass typechecking after execution.
20380         * tree-pass.h (pass_expand): Turn into RTL pass.
20381
20382         * function.h (struct rtl_data): Move here fields
20383         accesses_prior_frames, calls_eh_return, saves_all_registers,
20384         has_nonlocal_goto, has_asm_statement, is_thunk,
20385         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
20386         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
20387         arg_pointer_save_area_init from struct function; turn into bool.
20388         (struct function): Move
20389         calls_eh_return, saves_all_registers, has_nonlocal_goto,
20390         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
20391         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
20392         tail_call_emit, arg_pointer_save_area_init
20393         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
20394         (current_function_returns_struct, current_function_returns_pcc_struct,
20395         current_function_calls_setjmp, current_function_calls_alloca,
20396         current_function_accesses_prior_frames,
20397         current_function_calls_eh_return, current_function_is_thunk,
20398         current_function_stdarg, current_function_profile,
20399         current_function_limit_stack, current_function_uses_pic_offset_table,
20400         current_function_uses_const_pool, current_function_has_nonlocal_label,
20401         current_function_saves_all_registers,
20402         current_function_has_nonlocal_goto,
20403         current_function_has_asm_statement): Remove accesor macros.
20404         * ra-conflict.c (global_conflicts): Update.
20405         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
20406         (suitable_for_tail_call_opt_p): Update.
20407         * builtins.c (expand_builtin_return_addr): Update.
20408         (expand_builtin_setjmp_setup): Update.
20409         (expand_builtin_nonlocal_goto): Update.
20410         * final.c (final_start_function): Update.
20411         (profile_function): Update.
20412         (leaf_function_p): Update.
20413         (only_leaf_regs_used): Update.
20414         * df-scan.c (df_get_exit_block_use_set): Update.
20415         * dojump.c (clear_pending_stack_adjust): Update.
20416         * tree-stdarg.c (gate_optimize_stdarg): Update.
20417         * gimple-low.c (lower_function_body): Update.
20418         * global.c (compute_regsets): Update.
20419         (global_alloc): Update.
20420         * dwarf2out.c (dwarf2out_begin_prologue): Update.
20421         * expr.c (expand_assignment): Update.
20422         * dse.c (dse_step0): Update.
20423         (dse_step1): Update.
20424         * c-decl.c (store_parm_decls): Update.
20425         * local-alloc.c (combine_regs): Update.
20426         (find_free_reg): Update.
20427         * function.c (assign_parms_augmented_arg_list): Update.
20428         (assign_parm_find_data_types): Update.
20429         (assign_parms): Update.
20430         (allocate_struct_function): Update.
20431         (expand_function_start): Update.
20432         (expand_function_end): Update.
20433         (get_arg_pointer_save_area): Update.
20434         (thread_prologue_and_epilogue_insns): Update.
20435         (rest_of_match_asm_constraints): Update.
20436         * stor-layout.c (variable_size): Update.
20437         * gcse.c (gcse_main): Update.
20438         (bypass_jumps): Update.
20439         * gimplify.c (gimplify_function_tree): Update.
20440         * calls.c (emit_call_1): Update.
20441         (expand_call): Update.
20442         * bt-load.c (compute_defs_uses_and_gen): Update.
20443         * except.c (sjlj_assign_call_site_values): Update.
20444         (sjlj_emit_function_enter): Update.
20445         (can_throw_external): Update.
20446         (set_nothrow_function_flags): Update.
20447         (expand_builtin_unwind_init): Update.
20448         (expand_eh_return): Update.
20449         (convert_to_eh_region_ranges): Update.
20450         (output_function_exception_table): Update.
20451         * emit-rtl.c (gen_tmp_stack_mem): Update.
20452         * cfgexpand.c (expand_used_vars): Update.
20453         (tree_expand_cfg): Update.
20454         * cfgcleanup.c (rest_of_handle_jump): Update.
20455         * explow.c (allocate_dynamic_stack_space): Update.
20456         * varasm.c (assemble_start_function): Update.
20457         (force_const_mem): Update.
20458         (mark_constant_pool): Update.
20459         * tree-optimize.c (tree_rest_of_compilation): Update.
20460         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
20461         * tree-cfg.c (notice_special_calls): Update.
20462         (is_ctrl_altering_stmt): Update.
20463         (tree_can_make_abnormal_goto): Update.
20464         (tree_purge_dead_abnormal_call_edges): Update.
20465         * config/alpha/predicates.md: Update.
20466         * config/alpha/alpha.c (alpha_sa_mask): Update.
20467         (alpha_sa_size): Update.
20468         (alpha_does_function_need_gp): Update.
20469         (alpha_expand_prologue): Update.
20470         (alpha_start_function): Update.
20471         (alpha_output_function_end_prologue): Update.
20472         (alpha_expand_epilogue): Update.
20473         * config/frv/frv.c (frv_stack_info): Update.
20474         (frv_expand_epilogue): Update.
20475         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
20476         (s390_register_info): Update.
20477         (s390_frame_info): Update.
20478         (s390_init_frame_layout): Update.
20479         (s390_can_eliminate): Update.
20480         (save_gprs): Update.
20481         * config/spu/spu.c (spu_split_immediate): Update.
20482         (need_to_save_reg): Update.
20483         (spu_expand_prologue): Update.
20484         (spu_expand_epilogue): Update.
20485         * config/sparc/sparc.md: Update.
20486         * config/sparc/sparc.c (eligible_for_return_delay): Update.
20487         (sparc_tls_got): Update.
20488         (legitimize_pic_address): Update.
20489         (sparc_emit_call_insn): Update.
20490         (sparc_expand_prologue): Update.
20491         (output_return): Update.
20492         (print_operand): Update.
20493         (sparc_function_ok_for_sibcall): Update.
20494         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
20495         * config/m32r/m32r.md: Update.
20496         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
20497         (m32r_compute_frame_size): Update.
20498         (m32r_expand_prologue): Update.
20499         (m32r_expand_epilogue): Update.
20500         (m32r_legitimize_pic_address): Update.
20501         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
20502         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20503         * config/i386/i386.c (ix86_frame_pointer_required): Update.
20504         (gen_push): Update.
20505         (ix86_save_reg): Update.
20506         (ix86_compute_frame_layout): Update.
20507         (ix86_expand_prologue): Update.
20508         (ix86_expand_epilogue): Update.
20509         * config/sh/sh.c (output_stack_adjust): Update.
20510         (calc_live_regs): Update.
20511         (sh5_schedule_saves): Update.
20512         (sh_expand_prologue): Update.
20513         (sh_expand_epilogue): Update.
20514         (sh_setup_incoming_varargs): Update.
20515         (sh_allocate_initial_value): Update.
20516         (sh_get_pr_initial_val): Update.
20517         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
20518         * config/sh/sh.md (label:): Update.
20519         * config/avr/avr.c (out_movhi_mr_r): Update.
20520         * config/crx/crx.h (enum): Update.
20521         * config/xtensa/xtensa.h (along): Update.
20522         * config/stormy16/stormy16.c Update.
20523         (xstormy16_compute_stack_layout): Update.
20524         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
20525         (fr30_expand_prologue): Update.
20526         * config/cris/cris.c (cris_conditional_register_usage): Update.
20527         (cris_reg_saved_in_regsave_area): Update.
20528         (cris_initial_frame_pointer_offset): Update.
20529         (cris_simple_epilogue): Update.
20530         (cris_expand_prologue): Update.
20531         (cris_expand_epilogue): Update.
20532         (cris_expand_pic_call_address): Update.
20533         (cris_asm_output_symbol_ref): Update.
20534         (cris_asm_output_label_ref): Update.
20535         * config/cris/cris.md Update.
20536         * config/iq2000/iq2000.c (compute_frame_size): Update.
20537         (iq2000_expand_epilogue): Update.
20538         * config/mt/mt.h (save_direction): Update.
20539         * config/mn10300/mn10300.c (mn10300_function_value): Update.
20540         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20541         (ia64_secondary_reload_class): Update.
20542         * config/m68k/m68k.c (m68k_save_reg): Update.
20543         (m68k_expand_prologue): Update.
20544         (m68k_expand_epilogue): Update.
20545         (legitimize_pic_address): Update.
20546         * config/rs6000/rs6000.c (rs6000_got_register): Update.
20547         (first_reg_to_save): Update.
20548         (first_altivec_reg_to_save): Update.
20549         (compute_vrsave_mask): Update.
20550         (compute_save_world_info): Update.
20551         (rs6000_stack_info): Update.
20552         (spe_func_has_64bit_regs_p): Update.
20553         (rs6000_ra_ever_killed): Update.
20554         (rs6000_emit_eh_reg_restore): Update.
20555         (rs6000_emit_allocate_stack): Update.
20556         (rs6000_emit_prologue): Update.
20557         (rs6000_emit_epilogue): Update.
20558         (rs6000_output_function_epilogue): Update.
20559         (output_profile_hook): Update.
20560         (rs6000_elf_declare_function_name): Update.
20561         * config/rs6000/rs6000.h (rs6000_args): Update.
20562         * config/rs6000/rs6000.md: Update.
20563         * config/mcore/mcore.c (mcore_expand_prolog): Update.
20564         * config/arc/arc.c (arc_output_function_epilogue): Update.
20565         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
20566         * config/darwin.c (machopic_function_base_name): Update.
20567         * config/score/score3.c (score3_compute_frame_size): Update.
20568         (rpush): Update.
20569         (rpop): Update.
20570         (score3_epilogue): Update.
20571         * config/score/score7.c (score7_compute_frame_size): Update.
20572         (score7_prologue): Update.
20573         (score7_epilogue): Update.
20574         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
20575         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20576         * config/arm/arm.c (use_return_insn): Update.
20577         (require_pic_register): Update.
20578         (arm_load_pic_register): Update.
20579         (arm_compute_save_reg0_reg12_mask): Update.
20580         (arm_compute_save_reg_mask): Update.
20581         (thumb1_compute_save_reg_mask): Update.
20582         (output_return_instruction): Update.
20583         (arm_output_function_prologue): Update.
20584         (arm_output_epilogue): Update.
20585         (arm_get_frame_offsets): Update.
20586         (arm_expand_prologue): Update.
20587         (thumb_pushpop): Update.
20588         (thumb_exit): Update.
20589         (thumb1_expand_prologue): Update.
20590         (thumb1_expand_epilogue): Update.
20591         (arm_unwind_emit): Update.
20592         (arm_output_fn_unwind): Update.
20593         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
20594         * config/arm/arm.md: Update.
20595         * config/pa/pa.md: Update.
20596         * config/pa/pa.c (legitimize_pic_address): Update.
20597         (compute_frame_size): Update.
20598         (hppa_expand_prologue): Update.
20599         (hppa_expand_epilogue): Update.
20600         (borx_reg_operand): Update.
20601         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
20602         (HARD_REGNO_RENAME_OK): Update.
20603         * config/mips/mips.c (mips_global_pointer): Update.
20604         (mips_save_reg_p): Update.
20605         (mips_compute_frame_info): Update.
20606         (mips_frame_pointer_required): Update.
20607         (mips_expand_prologue): Update.
20608         (mips_expand_epilogue): Update.
20609         (mips_can_use_return_insn): Update.
20610         (mips_reorg_process_insns): Update.
20611         * config/v850/v850.c (compute_register_save_size): Update.
20612         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
20613         * config/mmix/mmix.c (along): Update.
20614         (mmix_expand_epilogue): Update.
20615         * config/bfin/bfin.c (legitimize_pic_address): Update.
20616         (must_save_p): Update.
20617         (stack_frame_needed_p): Update.
20618         (add_to_reg): Update.
20619         (bfin_expand_prologue): Update.
20620         * stmt.c (expand_asm_operands): Update.
20621         * reload1.c (reload): Update.
20622         (init_elim_table): Update.
20623
20624 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
20625
20626         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
20627
20628 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
20629
20630         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
20631         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
20632         (mov<mode>): Removed.
20633         (*movv4sf_internal): Likewise.
20634         (*movv2df_internal): Likewise.
20635
20636 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
20637
20638         * config.gcc (crx-*-elf): Remove deprecation.
20639
20640 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
20641
20642         * config/i386/cygming-crtend.c (register_frame_ctor): Register
20643         __gcc_deregister_frame with atexit.
20644         (deregister_frame_dtor): Remove.
20645
20646 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20647             Nathan Sidwell  <nathan@codesourcery.com>
20648
20649         * config/rs6000/rs6000.opt (mspe): Remove Var property.
20650         (misel): Likewise.
20651         * config/rs6000/rs6000.h (rs6000_spe): Declare.
20652         (rs6000_isel): Likewise.
20653         * config/rs6000/rs6000.c (rs6000_spe): New variable.
20654         (rs6000_isel): New variable.
20655         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
20656
20657 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20658
20659         PR c++/35758
20660         * c-common.c (handle_vector_size_attribute): Call
20661         lang_hooks.types.reconstruct_complex_type instead of
20662         reconstruct_complex_type.
20663         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
20664         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
20665         * langhooks.h (struct lang_hooks_for_types): Add
20666         reconstruct_complex_type hook.
20667         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
20668         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
20669
20670 2008-04-24  Richard Guenther  <rguenther@suse.de>
20671
20672         * c-common.h (check_builtin_function_arguments): Declare.
20673         * c-common.c (validate_nargs): New function.
20674         (check_builtin_function_arguments): Likewise.
20675         * c-typeck.c (build_function_call): Call
20676         check_builtin_function_arguments.
20677         * builtins.c (fold_builtin_classify): Remove error reporting code.
20678         (fold_builtin_unordered_cmp): Likewise.
20679         (fold_builtin_1): Likewise.
20680         (fold_builtin_n): Likewise.
20681
20682 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20683
20684         PR tree-optimization/36008
20685         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
20686         the original op1, rather than delta by step.
20687
20688 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
20689             Sebastian Pop  <sebastian.pop@amd.com>
20690
20691         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
20692         eliminate_local_variables_stmt, eliminate_local_variables,
20693         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
20694         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
20695         of code delimited by two edges in the CFG.
20696         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
20697         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
20698         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
20699         the case of parallelisation of reductions.
20700         (expr_invariant_in_region_p): New.
20701
20702         * tree-flow.h (gather_blocks_in_sese_region): Declared.
20703         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
20704
20705 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20706             Richard Guenther  <rguenther@suse.de>
20707
20708         PR tree-optimization/36034
20709         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
20710         incapable of dealing with loads with gaps.
20711
20712 2008-04-24  Rafael Espíndola  <espindola@google.com>
20713
20714         * tree-flow.h (vrp_evaluate_conditional): Change signature.
20715         * tree-ssa-propagate.c (fold_predicate_in): Update call to
20716         vrp_evaluate_conditional.
20717         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
20718         (vrp_evaluate_conditional): Split the cond argument.
20719         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
20720         (simplify_stmt_for_jump_threading): Update call to
20721         vrp_evaluate_conditional.
20722
20723 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20724
20725         PR tree-optimization/35982
20726         * tree-vect-analyze.c (vect_check_interleaving): Check that the
20727         interleaved data-refs are of the same type.
20728
20729 2008-04-24  Danny Smith  <dannysmith@users.net>
20730
20731         * c-format.c (check_format_info_main): Use strncmp rather than a
20732         magic prefix to handle multichar length specs.
20733         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
20734         Don't prefix "I64" and "I32" with '\0'.
20735
20736 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20737
20738         PR target/36015
20739         * config/i386/i386.c (init_cumulative_args): Don't pass anything
20740         in registers for -m32 only if stdarg_p (fntype).
20741
20742 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
20743
20744         PR rtl-optimization/36006
20745         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
20746         temp to op0 in order to avoid invalid rtx sharing.
20747
20748 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
20749
20750         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
20751         check TREE_INVARIANT.
20752         * tree-gimple.c (is_gimple_address): New.
20753         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
20754         * tree-gimple.h (is_gimple_address): New.
20755         * tree.h (decl_address_invariant_p): New.
20756         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
20757         (build_string): Likewise.
20758         (decl_address_invariant_p): New, from is_gimple_invariant_address.
20759         (tree_invariant_p_1): Likewise.
20760         (save_expr): Use it.
20761         (tree_invariant_p): New.
20762         (skip_simple_arithmetic): Use it.
20763         (stabilize_reference_1): Use it.
20764         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
20765         simplify.
20766         (build1_stat): Drop code to compute TREE_INVARIANT.
20767         (build2_stat): Drop code to compute TREE_INVARIANT.
20768         (build3_stat): Drop code to compute TREE_INVARIANT.
20769         (build4_stat): Drop code to compute TREE_INVARIANT.
20770         (build5_stat): Drop code to compute TREE_INVARIANT.
20771         (build7_stat): Drop code to compute TREE_INVARIANT.
20772         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
20773         * tree.h (struct tree_base): Remove invariant_flag.
20774         (TREE_INVARIANT): Remove.
20775         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
20776         (fold_builtin_expect): Check TREE_CONSTANT.
20777         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
20778         * c-tree.h (c_expr_to_decl): Drop third parameter.
20779         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
20780         (build_c_cast): Don't set TREE_INVARIANT.
20781         (pop_init_level): Don't set TREE_INVARIANT.
20782         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
20783         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
20784         TREE_CONSTANT.
20785         (gimplify_init_constructor): Don't set TREE_INVARIANT.
20786         (gimplify_addr_expr): Adjust comment.
20787         * tree-mudflap.c (mf_build_string):
20788         * print-tree.c (print_node): Don't print TREE_INVARIANT.
20789         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
20790         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
20791         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
20792         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
20793         * langhooks.h (struct lang_hooks): Drop third parameter from
20794         expr_to_decl.
20795
20796 2008-04-23  Richard Guenther  <rguenther@suse.de>
20797
20798         PR tree-optimization/27799
20799         PR tree-optimization/32921
20800         PR tree-optimization/32624
20801         * tree-ssa-structalias.c (merge_smts_into): Only merge the
20802         SMTs aliases and the tag itself into the solution.
20803         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
20804         merge the points-to solution back into the SMT aliases.
20805         (may_alias_p): Use alias_set_subset_of instead of
20806         aliases_conflict_p.  A pointer which points to
20807         memory with alias set zero may access any variable.
20808
20809 2008-04-23  Richard Guenther  <rguenther@suse.de>
20810
20811         * alias.c (alias_set_subset_of): Correctly handle asking
20812         if zero is a subset of an alias set with zero child.
20813         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
20814         (compute_flow_insensitive_aliasing): Correctly walk all
20815         pointers.  Do not unnecessarily union sets.
20816
20817 2008-04-23  Richard Guenther  <rguenther@suse.de>
20818
20819         PR middle-end/36021
20820         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
20821
20822 2008-04-22  Tomas Bily  <tbily@suse.cz>
20823
20824         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
20825         unreachable case.
20826         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
20827         NON_LVALUE_EXPR.
20828         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
20829         * tree-ssa-structalias.c (get_constraint_for): Likewise.
20830         * tree-inline.c (estimate_num_insns_1): Likewise.
20831         * varasm.c (const_hash_1, compare_constant, copy_constant)
20832         (compute_reloc_for_constant, output_addressed_constants): Likewise.
20833         * emit-rtl.c (component_ref_for_mem_expr)
20834         (set_mem_attributes_minus_bitpos): Likewise.
20835         * expr.c (highest_pow2_factor, expand_expr_real_1, )
20836         (is_aligning_offset): Likewise.
20837         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
20838         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
20839         * dojump.c (do_jump): Likewise.
20840         * builtins.c (get_pointer_alignment, get_memory_rtx)
20841         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
20842         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
20843
20844 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
20845
20846         PR rtl-optimization/36017
20847         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
20848         expanding the library call.
20849
20850 2008-04-22  Ian Lance Taylor  <iant@google.com>
20851
20852         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
20853         than size_in_bytes.
20854
20855 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
20856
20857         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
20858         of LR/CTR moves for Power6.
20859
20860 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
20861
20862         PR middle-end/36003
20863         * passes.c (init_optimization_passes): Remove
20864         pass_fast_rtl_byte_dce.
20865
20866 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
20867
20868         PR target/29096
20869         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
20870         builtin functions to generate faster code.
20871         (_mm_cvtpu16_ps): Ditto.
20872         (_mm_cvtpi32x2_ps): Ditto.
20873
20874 2008-04-22  Nick Clifton  <nickc@redhat.com>
20875
20876         * common.opt (ftree-loop-distribution): Add Optimization
20877         attribute.
20878
20879         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
20880         (frv_expand_builtin_va_start): Likewise.
20881
20882         * config/arm/arm.c (thumb_find_work_register): Fix location of
20883         argument register count.
20884
20885 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20886
20887         Support scheduling for ColdFire V1 and V3 microarchitecture.
20888         Improve scheduling of multiplication instructions.
20889
20890         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
20891         (mac): New instruction attribute.
20892         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
20893         (m68k_sched_mac): New variable.
20894         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
20895         Handle cfv1 and cfv3.
20896         (max_insn_size): New static variable.
20897         (struct _sched_ib): New type.
20898         (sched_ib): New static variable.
20899         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
20900         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
20901         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
20902         Update.
20903         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
20904         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
20905         new variables.  Update.
20906         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
20907         Add modeling of cfv3 instruction buffer.  Update.
20908         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
20909         * config/m68k/m68k.h (TUNE_CFV3): New macro.
20910         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
20911         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
20912         a particular reservation applies to.
20913         (type2): Reorganize attribute values.  Rename alu to alu_reg,
20914         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
20915         to mul_l and mul_w.
20916         (cf_ib_*): Simplify description of instruction buffer.
20917         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
20918         (cf_mem): Split into cf_mem1 and cf_mem2.
20919         (cf_v2_move_??): Rename to cfv12_alu_??.
20920         (cf_v2_move_l_??): Rename to cfv12_omove_??.
20921         (cf_v2_mul_??): Remove reservations.
20922         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
20923         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
20924         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
20925         appropriate place.
20926         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
20927         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
20928         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
20929         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
20930         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
20931         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
20932         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
20933         expansions of the above reservations for instructions of sizes
20934         1, 2 and 3 words.
20935
20936 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20937
20938         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
20939
20940 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
20941
20942         * coverage.c: Include tree-pass.h.
20943         (coverage_counter_alloc): Print da_file_name to the dump file.
20944
20945 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
20946
20947         * sbitmap.c (sbitmap_range_empty_p): New function.
20948         * sbitmap.h (sbitmap_range_empty_p): New function.
20949         * bitmap.h: Now includes obstack.h.
20950
20951 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
20952             Kenneth Zadeck  <zadeck@naturalbridge.com>
20953
20954         * dbgcnt.def (ra_byte_scan): Added.
20955         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
20956         when the last hit happens for a counter.
20957         * timevar.def (TV_DF_BYTE_LR): New variable.
20958         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
20959         * passes.c (pass_fast_rtl_byte_dce): New pass.
20960         * fwprop.c (update_df): Added mode to call df_ref_create.
20961         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20962         DF_REF_EXTRACT_OFFSET.
20963         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
20964         DF_BYTE_LR_OUT, df_byte_lr): New macro.
20965         (df_mm): New enum.
20966         (df_ref_extract): Added mode field.
20967         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
20968         DF_REF_EXTRACT_OFFSET.
20969         (DF_REF_EXTRACT_MODE): New macro.
20970         (df_byte_lr_bb_info): New structure.
20971         (df_print_byte_regset, df_compute_accessed_bytes,
20972         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
20973         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
20974         df_byte_lr_simulate_uses,
20975         df_byte_lr_simulate_artificial_refs_at_top,
20976         df_byte_lr_simulate_artificial_refs_at_end,
20977         df_compute_accessed_bytes): New function.
20978         (df_ref_create): Add parameter.
20979         (df_byte_lr_get_bb_info): New inline function.
20980         * df-scan.c (df_ref_record, df_uses_record,
20981         df_ref_create_structure): Added mode parameter.
20982         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
20983         df_defs_record, df_uses_record, df_get_conditional_uses,
20984         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
20985         df_entry_block_defs_collect, df_exit_block_uses_collect):
20986         Added mode parameter to calls to df_ref_record, df_uses_record,
20987         df_ref_create_structure.
20988         (df_ref_equal_p, df_ref_compare): Added test for modes.
20989         (df_ref_create_structure): Added code to set mode.  Renamed
20990         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20991         DF_REF_EXTRACT_OFFSET.
20992         * df-core.c (df_print_byte_regset): New function.
20993         * df-byte-scan.c: New file.
20994         * df-problems.c (df_rd_transfer_function): Removed unnecessary
20995         calls to BITMAP_FREE.
20996         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
20997         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
20998         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
20999         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
21000         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
21001         df_byte_lr_local_compute, df_byte_lr_init,
21002         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
21003         df_byte_lr_transfer_function, df_byte_lr_free,
21004         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
21005         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
21006         df_byte_lr_simulate_uses,
21007         df_byte_lr_simulate_artificial_refs_at_top,
21008         df_byte_lr_simulate_artificial_refs_at_end): New function.
21009         * dce.c (byte_dce_process_block): New function.
21010         (dce_process_block): au is now passed in rather than computed
21011         locally.  Changed loops that look at artificial defs to not look
21012         for conditional or partial ones, because there never are any.
21013         (fast_dce): Now is able to drive byte_dce_process_block or
21014         dce_process_block depending on the kind of dce being done.
21015         (rest_of_handle_fast_dce): Add parameter to fast_dce.
21016         (rest_of_handle_fast_byte_dce): New function.
21017         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
21018         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
21019
21020 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
21021
21022         PR fortran/35019
21023         * gcc.h: Added fortran options that take arguments to
21024         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
21025         macros.
21026
21027 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
21028
21029         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
21030         scalarization if on the LHS and not a full access.
21031
21032 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21033
21034         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
21035
21036 2008-04-18  Rafael Espíndola  <espindola@google.com>
21037
21038         * tree-vrp.c (find_case_label_index): Fix the binary search.
21039         (find_case_label_range): New.
21040         (vrp_visit_switch_stmt): Use find_case_label_range.
21041         (simplify_switch_using_ranges): Use find_case_label_range.
21042
21043 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
21044
21045         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
21046         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
21047
21048 2008-04-18  Tom Tromey  <tromey@redhat.com>
21049
21050         PR libcpp/15500:
21051         * doc/cpp.texi (Implementation-defined behavior): Mention
21052         -finput-charset.
21053
21054 2008-04-18  Ian Lance Taylor  <iant@google.com>
21055
21056         * fold-const.c (pointer_may_wrap_p): New static function.
21057         (fold_comparison): Add another test for pointer overflow.  Use
21058         pointer_may_wrap_p to disable some false positives.
21059
21060 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
21061
21062         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
21063         (fname_as_string): Match updated cpp_interpret_string prototype.
21064         (fix_string_type): Support char16_t* and char32_t*.
21065         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
21066         derivative) nodes.  Register as builtin if C++0x.
21067         (c_parse_error): Support CPP_CHAR{16,32}.
21068         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
21069         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
21070         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
21071         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
21072         CTI_CHAR32_ARRAY_TYPE>: New elements.
21073         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
21074         char32_type_node, signed_char32_type_node, char16_array_type_node,
21075         char32_array_type_node): New defines.
21076         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
21077         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
21078         (lex_string): Support CPP_STRING{16,32}, match updated
21079         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
21080         (lex_charconst): Support CPP_CHAR{16,32}.
21081         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
21082         and CPP_STRING{16,32}.
21083
21084 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
21085
21086         PR bootstrap/35457
21087         * aclocal.m4: Regenerate.
21088         * configure: Regenerate.
21089
21090 2008-04-18  Jan Hubicka  <jh@suse.cz>
21091
21092         * except.c (dw2_size_of_call_site_table,
21093         sjlj_size_of_call_site_table): Use vector API for call_site_record.
21094
21095         * cgraphbuild.c (build_cgraph_edges): Update.
21096         * tree-pass.h: Update comment.
21097         * final.c (leaf_function_p): Update.
21098         (leaf_renumber_regs): Update.
21099         (rest_of_clean_state): Update.
21100         * omp-low.c (expand_omp_parallel): Update.
21101         * ipa-reference.c (analyze_function): Update.
21102         * reorg.c (find_end_label): Update.
21103         (optimize_skip): Update.
21104         (fill_simple_delay_slots): Update.
21105         (fill_simple_delay_slots): Update.
21106         (make_return_insns): Update.
21107         (dbr_schedule): Update.
21108         * gimple-low.c (record_vars_into): Update.
21109         * cfgbuild.c (make_edges): Update.
21110         * function.c (assign_stack_local): Update.
21111         (assign_parm_adjust_stack_rtl): Update.
21112         (locate_and_pad_parm): Update.
21113         (allocate_struct_function): Do not initialize stack_alignment_needed
21114         and preferred_stack_boundary here.
21115         (stack_protect_prologue): Update.
21116         (stack_protect_epilogue): Update.
21117         (expand_function_start): Initialize stack_alignment_needed,
21118         preferred_stack_boundary and max_jumptable_ents.
21119         (expand_function_end): Update.
21120         (free_after_compilation): Do not NULLify epilogue_delay_list.
21121         * function.h (struct rtl_data): Add stack_protect_guard,
21122         stack_alignment_needed,
21123         preferred_stack_boundary, epilogue_delay_list.
21124         (struct function): Remove value_histograms, stack_alignment_needed,
21125         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
21126         last_label_uid,
21127         unexpanded_var_list, stack_protect_guard.
21128         (current_function_epilogue_delay_list): Remove.
21129         * ipa-type-escape.c (analyze_function): Update.
21130         * gimplify.c (pop_gimplify_context): Update comment.
21131         * calls.c (expand_call): Update.
21132         (emit_library_call_value_1): Update.
21133         * except.c (set_nothrow_function_flags): Update.
21134         * cfgexpand.c (get_decl_align_unit): Update.
21135         (create_stack_guard): Update.
21136         (estimated_stack_frame_size): Update.
21137         (expand_used_vars): Update.
21138         (tree_expand_cfg): Free histogram earliers, init expansion variables.
21139         * explow.c (allocate_dynamic_stack_space): Update.
21140         * tree-ssa-live.c (remove_unused_locals): Update.
21141         * varasm.c (mark_constant_pool): Update.
21142         * tree-inline.c (remap_decls): Update.
21143         (initialize_cfun): Update.
21144         (declare_return_variable): Update.
21145         (inline_forbidden_p): Update.
21146         (expand_call_inline): Update.
21147         (declare_inline_vars): Update.
21148         (tree_function_versioning): Update.
21149         * tree-flow.h (value_histograms): New.
21150         (VALUE_HISTOGRAMS): New macro.
21151         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
21152         last_label_uid.
21153         * tree-cfg.c (set_bb_for_stmt): Update.
21154         (replace_by_duplicate_decl): Update.
21155         (move_block_to_fn): Update.
21156         (new_label_mapper): Update.
21157         (dump_function_to_file): Update.
21158         * ipa-struct-reorg.c (build_data_structure): Update.
21159         * cfgrtl.c (print_rtl_with_bb): Update.
21160         * reload1.c (reload): Update.
21161         (reload): Update.
21162         * config/i386/i386.c (setup_incoming_varargs_64,
21163         ix86_compute_frame_layout): Update.
21164         * config/arc/arc.c (arc_output_function_epilogue): Update.
21165
21166 2008-04-18  Marius Strobl <marius@FreeBSD.org>
21167
21168         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
21169         for FreeBSD as well.
21170         * gthr-posix95.h: Likewise.
21171
21172 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
21173
21174         PR rtl-optimization/35838
21175         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
21176         out the byte offset of the first subreg.
21177
21178 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
21179
21180         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
21181         to split_ti instead of three separate calls with single member arrays.
21182         (subti3 splitter): Ditto.
21183         (adddi3 splitter): Ditto with split_di.
21184         (subdi3 splitter): Ditto.
21185         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
21186         two separate calls with single member arrays.  Swap match_dup
21187         operands 1 and 2 to better fit into the array.
21188         (negdi2 splitter): Ditto with split_di.
21189         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
21190         two separate calls with single member arrays.  Swap match_dup operands
21191         6 and 7 to better fit into the array.
21192
21193 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21194
21195         * config/i386/i386.c (sse_builtin_type): New.
21196         (bdesc_sse_args): Likewise.
21197         (bdesc_sse_3arg): Removed.
21198         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21199         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
21200         IX86_BUILTIN_ROUNDPS.
21201         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
21202         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
21203         IX86_BUILTIN_ROUNDPS.
21204         (ix86_expand_sse_4_operands_builtin): Removed.
21205         (ix86_expand_sse_operands_builtin): New.
21206         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
21207         and CODE_FOR_sse4_1_roundps.
21208         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21209         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
21210
21211 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
21212
21213         PR target/35907
21214         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
21215         regs before frame pop when needed.  If use_backchain_to_restore_sp
21216         then load backchain into a temp reg to restore vr and vrsave.  Add
21217         code to restore vr after frame pop if possible.
21218
21219 2008-04-17  Richard Guenther  <rguenther@suse.de>
21220
21221         * tree-vn.c (expressions_equal_p): Do not check type
21222         equality or compatibility before calling operand_equal_p.
21223         * fold-const.c (operand_equal_p): Check equivalence of
21224         integer constants before bailing out due to signedness or
21225         precision differences.
21226         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
21227         spurious differences in type qualification.  Ignore types
21228         for COMPONENT_REFs at all.
21229
21230 2008-04-17  Christian Bruel  <christian.bruel@st.com>
21231
21232         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
21233         msw_skip comparison.
21234
21235 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
21236
21237         PR c/35739
21238         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
21239         reg type.
21240
21241         PR tree-optimization/35899
21242         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
21243         rather than TREE_OPERAND.
21244
21245 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
21246
21247         PR target/35944
21248         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
21249         temporary registers.  Change operand predicate to general_operand.
21250         (remainderxf3): Ditto.
21251
21252 2008-04-16  Richard Guenther  <rguenther@suse.de>
21253
21254         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
21255         * tree-affine.c (aff_combination_expand): Look through some
21256         conversions.
21257
21258 2008-04-15  Doug Kwan  <dougkwan@google.com>
21259
21260         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
21261         for hex printing.
21262         * tree-pretty-print.c (dump_generic_node): Ditto.
21263         * final.c (output_addr_const): Ditto.
21264         * dwarf2out.c (output_cfi): Ditto.
21265         * c-pretty-print.c (pp_c_integer_constant): Ditto.
21266         * print-rtl.c (print_rtx): Ditto.
21267         * print-tree.c (print_node_brief, print_node): Ditto.
21268         * c-common.c (match_case_to_enum_1): Ditto.
21269         * sched-vis.c (print_value): Ditto.
21270         * config/i386/i386.c (print_operand): Cast to long unsigned int
21271         for hex printing.
21272
21273 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
21274         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
21275         MS Windows VirtualProtect function.
21276
21277 2008-04-15  Jan Hubicka  <jh@suse.cz>
21278
21279         * gengtype.c (write_root): Param_is argument is OK.
21280         * expr.c (expand_expr_real_1): Update call of get_exception_*.
21281         * function.h: Include varray.h
21282         (rtl_eh): New stucture based on except.c one.
21283         (call_site_record): New forward declaration and vector type.
21284         * calls.c (emit_call_1): Do not call
21285         note_current_region_may_contain_throw.
21286         * except.c (eh_status): Remove cur_region, try_region since they are
21287         unused.
21288         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
21289         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
21290         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
21291         Remove call_site_data_used, call_site_data_size.
21292         Turn call_site_record into vector in function.h.
21293         (note_current_region_may_contain_throw): Remove.
21294         (get_exception_pointer, get_exception_filter): Do not take struct
21295         function argument; update.
21296         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
21297         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
21298         build_post_landing_pads, dw2_build_landing_pads,
21299         sjlj_assign_call_site_values, sjlj_mark_call_sites,
21300         sjlj_emit_function_enter, sjlj_emit_function_enter,
21301         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
21302         sjlj_build_landing_pads, finish_eh_generation,
21303         remove_exception_handler_label, remove_eh_handler,
21304         maybe_remove_eh_handler, add_reachable_handler,
21305         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
21306         add_action_record, collect_one_action_chain, add_call_site,
21307         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
21308         sjlj_output_call_site_table, output_function_exception_table,
21309         * except.h (note_current_region_may_contain_throw): Remove
21310         (get_exception_pointer, get_exception_filter): Do not take struct
21311         function argument.
21312         * Makefile.in (GTFILES): Put varargs before struct function.
21313
21314 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21315
21316         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
21317         punt for STRING_CST.
21318         (get_constraint_for): Deal with STRING_CST here instead.
21319
21320 2008-04-15  Richard Guenther  <rguenther@suse.de>
21321
21322         * tree-ssa-propagate.c (substitute_and_fold): Substitute
21323         statements in a basic-block with a backward walk.  Do not
21324         substitute into dead statements but instead remove those.
21325
21326 2008-04-15  Richard Guenther  <rguenther@suse.de>
21327
21328         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
21329         to zero, thus disable creation of SFTs.
21330
21331 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21332
21333         * tree-predcom.c (suitable_reference_p): Return false if the
21334         reference can throw.
21335
21336 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
21337
21338         PR c/35751
21339         * c-decl.c (finish_decl): If extern or static var has variable
21340         size, set TREE_TYPE (decl) to error_mark_node.
21341
21342 2008-04-15  Rafael Espíndola  <espindola@google.com>
21343
21344         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
21345         variable arg1.
21346
21347 2008-04-15  Richard Guenther  <rguenther@suse.de>
21348
21349         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
21350         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
21351         (visit_reference_op_load): Do walk vuse-vdef chains on
21352         vn_reference_lookup.
21353         (visit_reference_op_store): But do not here.
21354         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
21355         vn_reference_lookup.
21356         (vn_lookup_with_vuses): But do so here.
21357
21358 2008-04-14  Ian Lance Taylor  <iant@google.com>
21359
21360         * fold-const.c (fold_overflow_warning): Remove assertion.
21361
21362 2008-04-15  Ben Elliston  <bje@au.ibm.com>
21363
21364         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
21365         temp1 local variables.
21366
21367 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
21368
21369         PR target/35661
21370         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
21371         ".text.unlikely" section as executable.
21372
21373 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
21374
21375         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21376         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
21377         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
21378         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
21379         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
21380         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
21381         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
21382
21383 2008-04-14  Ian Lance Taylor  <iant@google.com>
21384
21385         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
21386         * fold-const.c (fold_comparison): If appropriate, test
21387         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
21388         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
21389         reassociating a pointer type.
21390         * doc/invoke.texi (Optimize Options): Document that
21391         -fstrict-overflow applies to pointer wraparound.
21392
21393 2008-04-13  Jan Hubicka  <jh@suse.cz>
21394
21395         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
21396
21397 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
21398
21399         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
21400         we are going to "save the world".
21401
21402 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
21403
21404         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
21405         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
21406         operand 0 constraint, not "=".
21407
21408 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
21409
21410         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
21411
21412 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21413
21414         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
21415         of size of positions_needed * CHAR_BIT.
21416
21417 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21418
21419         PR middle-end/35897
21420         * dse.c (store_info): Change positions_needed to unsigned
21421         HOST_WIDE_INT.
21422         (lowpart_bitmask): New.
21423         (record_store): Cast to unsigned HOST_WIDE_INT for
21424         positions_needed.  Assert width <= size of positions_needed *
21425         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
21426         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
21427         lowpart_bitmask to set mask.
21428
21429 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21430
21431         * config/bfin/constraints.md: New file.
21432         * config/bfin/bfin.md: Include it.
21433         (adddi3): Use satisfies_constraint functions instead of the old macros.
21434         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
21435         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
21436         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
21437         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
21438         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
21439         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
21440         EXTRA_CONSTRAINT): Delete.
21441         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
21442         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
21443         of the old macros.
21444         * config/bfin/bfin.c: Include "tm-constrs.h".
21445         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
21446         Use satisfies_constraint functions instead of the old macros.
21447         * doc/md.texi (Blackfin Constraints): Update file name reference.
21448
21449 2008-04-11  Richard Guenther  <rguenther@suse.de>
21450
21451         PR tree-optimization/35869
21452         * tree-vrp.c (execute_vrp): Move switch statement update after
21453         jump threading.  Schedule another cfg cleanup run.
21454
21455 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
21456
21457         PR c/35744
21458         * attribs.c (decl_attributes): Return early on errorneous node.
21459
21460 2008-04-10  Oleg Ryjkov  <olegr@google.com>
21461
21462         * tree.h (struct tree_base): Added a new flag default_def_flag.
21463         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
21464
21465 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
21466
21467         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
21468
21469 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21470
21471         PR target/35768
21472         * pa.md: Define mode iterator P.  Define mode attribute dwc.
21473         (dcacheflush): Update pattern to use iterator P and attribute dwc.
21474         (icacheflush): Likewise.
21475         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
21476         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
21477
21478 2008-04-11  Ben Elliston  <bje@au.ibm.com>
21479
21480         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
21481
21482 2008-04-10  Rafael Espíndola  <espindola@google.com>
21483
21484         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
21485         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
21486         (extract_range_from_expr): The same.
21487
21488 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21489
21490         * config/mips/mips.md (GPR2): New mode iterator.
21491         (seq): Add comment.
21492         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
21493         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
21494         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
21495         Rewrite these to take two modes, the mode of comparison and the
21496         mode of the destination.
21497         * config/mips/mips.c (mips_expand_scc): Instead of having
21498         paradoxical subreg as destination, expand "narrowing" scc if mode
21499         of comparison is SI and target is requested in DI mode.
21500         (mips_emit_int_order_test): Update comment.  Make mode of
21501         comparison match CMP0 rather than TARGET.  When creating inverse
21502         target use mode of TARGET.
21503
21504 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21505
21506         * gcov-dump.c (tag_summary): Only print summaries for the first
21507         GCOV_COUNTERS_SUMMABLE counters.
21508
21509 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
21510
21511         * config/i386/i386.md (absneg): New code iterator.
21512         (absnegprefix): New code attribute.
21513         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
21514         patterns using absneg code iterator.
21515         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
21516         using absneg code iterator.
21517         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
21518         *neg<mode>2 patterns using absneg code iterator.
21519         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21520         *negextendsfdf2 patterns using absneg code iterator.
21521         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
21522         *negextendsfxf2 patterns using absneg code iterator.
21523         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21524         *negextendsfdf2 patterns using absneg code iterator.
21525         * config/i386/sse.md (<code><mode>2): Macroize expander from
21526         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
21527
21528 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
21529
21530         * config/s390/s390.h: Remove the remains of the recent search
21531         & replace action of current_function_outgoing_args_size.
21532
21533 2008-04-10  Ira Rosen  <irar@il.ibm.com>
21534
21535         PR tree-optimization/35821
21536         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
21537         NEW_STMT_LIST is not NULL.
21538
21539 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
21540
21541         PR libstdc++/35597
21542         * toplev.c (process_options): Remove -ffunction-sections debugging
21543         warning.
21544
21545 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
21546
21547         PR middle-end/PR28690
21548         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
21549         than gen_rtx_fmt_ee to perform more canonicalizations.
21550
21551 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21552
21553         PR driver/35665
21554         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
21555
21556 2008-04-09  Richard Guenther  <rguenther@suse.de>
21557
21558         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
21559         (dump_function_to_file): Dump function arguments with types.
21560
21561 2008-04-08  Richard Guenther  <rguenther@suse.de>
21562
21563         * fold-const.c (fold_widened_comparison): Do not allow
21564         sign-changes that change the result.
21565
21566 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
21567
21568         PR target/35839
21569         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
21570         kinds of indirect references.
21571
21572 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
21573
21574         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
21575         GNU Fortran language string.
21576
21577 2008-04-08  Rafael Espíndola  <espindola@google.com>
21578
21579         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
21580         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
21581         * tree.h (tree_call_nonnegative_warnv_p): New.
21582
21583 2008-04-08  Jan Hubicka  <jh@suse.cz>
21584
21585         * function.c (free_after_compilation): Clear out regno_reg_rtx
21586         pointer.
21587
21588 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
21589
21590         Revert
21591         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21592
21593         PR middle-end/PR28690
21594         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
21595         same precedence as REG_POINTER and MEM_POINTER operands.
21596
21597 2008-04-08  Richard Guenther  <rguenther@suse.de>
21598
21599         PR middle-end/35834
21600         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
21601         for adding index to base.
21602
21603 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
21604
21605         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
21606         (MINGW_ENABLE_EXECUTE_STACK): New.
21607         (IN_LIBGCC2): For libgcc include windows.h file for
21608         function declarations.
21609
21610 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
21611
21612         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
21613         and tem2 if tem1 is not a REG or MULT.
21614
21615 2008-04-08  Jan Hubicka  <jh@suse.cz>
21616
21617         * function.h (incomming_args): Break out of struct function.
21618         (function_subsections): Break out of struct function.
21619         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
21620         return_rtx and hard_reg_initial_vals from struct function.
21621         Kill inl_max_label_num.
21622         (current_function_pops_args, current_function_args_info,
21623         current_function_args_size, current_function_args_size,
21624         current_function_pretend_args_size,
21625         current_function_outgoing_args_size,
21626         current_function_internal_arg_pointer, current_function_return_rtx):
21627         Kill compatibility accestor macros.
21628         * builtins.c (expand_builtin_apply_args_1): Update.
21629         (expand_builtin_next_arg): Update.
21630         * df-scan.c (df_get_call_refs): Update.
21631         * dbxout.c (dbxout_function_end): Update.
21632         * dwarf2out.c (dwarf2out_switch_text_section): Update.
21633         (output_line_info): Update.
21634         (secname_for_decl): Update.
21635         (dwarf2out_var_location): Update.
21636         * function.c (free_after_compilation): Update.
21637         (assign_parm_find_stack_rtl): Update.
21638         (assign_parms): Update.
21639         (expand_dummy_function_end): Update.
21640         (expand_function_end): Update.
21641         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
21642         (expand_call): Update.
21643         (emit_library_call_value_1): Update.
21644         (store_one_arg): Update.
21645         * varasm.c (initialize_cold_section_name): Update.
21646         (unlikely_text_section): Update.
21647         (unlikely_text_section_p): Update.
21648         (assemble_start_function): Update.
21649         (assemble_end_function): Update.
21650         (default_section_type_flags): Update.
21651         (switch_to_section): Update.
21652         * integrate.c (set_decl_abstract_flags): Update.
21653         (get_hard_reg_initial_val): Update.
21654         (has_hard_reg_initial_val): Update.
21655         (allocate_initial_values): Update.
21656         * resource.c (init_resource_info): Update.
21657         * config/alpha/alpha.c (NUM_ARGS): Update.
21658         (direct_return): Update.
21659         (alpha_va_start): Update.
21660         (alpha_sa_size): Update.
21661         (alpha_initial_elimination_offset): Update.
21662         (alpha_expand_prologue): Update.
21663         (alpha_start_function): Update.
21664         (alpha_expand_epilogue): Update.
21665         (unicosmk_initial_elimination_offset):
21666         * config/alpha/alpha.md (call expander): Update.
21667         * config/s390/s390.c (s390_register_info): Update.
21668         (s390_register_info): Update.
21669         (s390_frame_info): Update.
21670         (s390_initial_elimination_offset): Update.
21671         (s390_build_builtin_va_list): Update.
21672         (s390_va_start): Update.
21673         * config/spu/spu.c (direct_return): Update.
21674         (spu_expand_prologue): Update.
21675         (spu_initial_elimination_offset): Update.
21676         (spu_build_builtin_va_list): Update.
21677         (spu_va_start): Update.
21678         * config/sparc/sparc.c (sparc_init_modes): Update.
21679         (sparc_compute_frame_size): Update.
21680         (function_value): Update.
21681         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
21682         * config/i386/i386.md (return expander): Update.
21683         * config/i386/i386.c (ix86_va_start): Update.
21684         (ix86_can_use_return_insn_p): Update.
21685         (ix86_compute_frame_layout): Update.
21686         (ix86_expand_epilogue): Update.
21687         * config/sh/sh.c (output_stack_adjust): Update.
21688         (calc_live_regs): Update.
21689         (sh_expand_prologue): Update.
21690         (sh_builtin_saveregs): Update.
21691         (sh_va_start): Update.
21692         (initial_elimination_offset): Update.
21693         (sh_allocate_initial_value): Update.
21694         (sh_function_ok_for_sibcall): Update.
21695         (sh_get_pr_initial_val): Update.
21696         * config/sh/sh.md (return expander): Update.
21697         * config/avr/avr.c (frame_pointer_required_p): UPdate.
21698         * config/crx/crx.c (crx_compute_frame): UPdate.
21699         (crx_initial_elimination_offset): UPdate.
21700         * config/xtensa/xtensa.c (compute_frame_size): Update
21701         (xtensa_builtin_saveregs): Update.
21702         (xtensa_va_start): Update.
21703         (order_regs_for_local_alloc): Update.
21704         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
21705         (xstormy16_expand_builtin_va_start): Update.
21706         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
21707         * config/m68hc11/m68hc11.md (return expanders): Update.
21708         * config/m68hc11/m68hc11.c (expand_prologue): Update.
21709         (expand_epilogue): Update.
21710         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
21711         (cris_simple_epilogue): Update.
21712         (cris_expand_prologue): Update.
21713         (cris_expand_epilogue): Update.
21714         * config/iq2000/iq2000.c (iq2000_va_start): Update.
21715         (compute_frame_size): Update.
21716         * config/mt/mt.c (mt_compute_frame_size): Update.
21717         * config/mn10300/mn10300.c (expand_prologue): Update.
21718         (expand_epilogue): Update.
21719         (initial_offset): Update.
21720         (mn10300_builtin_saveregs):
21721         * config/mn10300/mn10300.md (return expander): Update.
21722         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21723         (ia64_initial_elimination_offset): Update.
21724         (ia64_initial_elimination_offset): Update.
21725         (ia64_expand_prologue): Update.
21726         * config/m68k/m68k.md (return expander): Update.
21727         * config/rs6000/rs6000.c (rs6000_va_start): Update.
21728         (rs6000_stack_info): Update.
21729         * config/mcore/mcore.c (layout_mcore_frame): Update.
21730         (mcore_expand_prolog): Update.
21731         * config/arc/arc.c (arc_compute_frame_size): Update.
21732         * config/score/score3.c (score3_compute_frame_size): Update.
21733         * config/score/score7.c (score7_compute_frame_size): Update.
21734         * config/arm/arm.c (use_return_insn): Update.
21735         (thumb_find_work_register): Update.
21736         (arm_compute_save_reg_mask): Update.
21737         (arm_output_function_prologue): Update.
21738         (arm_output_epilogue): Update.
21739         (arm_size_return_regs): Update.
21740         (arm_get_frame_offsets): Update.
21741         (arm_expand_prologue): Update.
21742         (thumb_exit): Update.
21743         (thumb_unexpanded_epilogue): Update.
21744         (thumb1_output_function_prologue): Update.
21745         * config/pa/pa.md (return expander): Update.
21746         * config/pa/pa.c (compute_frame_size): Update.
21747         (hppa_builtin_saveregs): Update.
21748         * config/mips/mips.c (mips_va_start): Update.
21749         (mips16_build_function_stub): Update.
21750         (mips_compute_frame_info): Update.
21751         (mips_restore_gp): Update.
21752         (mips_output_function_prologue): Update.
21753         (mips_expand_prologue): Update.
21754         * config/v850/v850.c (compute_frame_size): Update.
21755         (expand_prologue): * config/mmix/mmix.c (along): update.
21756         (mmix_initial_elimination_offset): update.
21757         (mmix_reorg): update.
21758         (mmix_use_simple_return): update.
21759         (mmix_expand_prologue): update.
21760         (mmix_expand_epilogue): Update.
21761         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
21762         (emit_link_insn): Update.
21763
21764 2008-04-08  Anatoly Sokolov <aesok@post.ru>
21765
21766         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
21767         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
21768         instructions.
21769         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
21770         atmega103 device.
21771
21772 2008-04-07  Jan Hubicka  <jh@suse.cz>
21773
21774         * function.h (rtl): Rename to x_rtl.
21775         (crtl): New define.
21776         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21777         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21778         used_temp_slots avail_temp_slots, temp_slot_level,
21779         nonlocal_goto_handler_labels): Update accesstors.
21780         (rtl): New global variable.
21781         (struct function): Move some fileds to rtl_data.
21782         (get_arg_pointer_save_area): Update prototype.
21783         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21784         get_arg_pointer_save_area.
21785         * expr.c (init_expr): Update
21786         * function.c (get_frame_size): Update
21787         (assign_stack_local): Update
21788         (expand_function_end): Update.
21789         (get_art_pointer_save_area): Update
21790         * function.h
21791         * emit-rtl.c (rtl): Declare.
21792         (regno_reg_rtx): Declare.
21793         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21794         Update.
21795         (gen_reg_rtx): Update.
21796         * varasm.c (n_deferred_constatns): Update accestor.
21797         (init_varasm_status): Do not allocate varasm_status.
21798         (force_const_mem, get_pool_size, output_constant_pool): Update.
21799         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21800         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21801         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
21802         * sparc/sparc.h (INIT_EXPANDERS): Update.
21803         * ia64/ia64.h (INIT_EXPANDERS): Update.
21804
21805 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
21806
21807         * reload.c (push_secondary_reload): Add missing break to for loop.
21808
21809 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21810
21811         PR middle-end/PR28690
21812         * rtlanal.c: Update copyright years.
21813         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
21814         as REG_POINTER and MEM_POINTER operands.
21815         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
21816         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
21817         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
21818         * gcse.c: Update copyright years.
21819         (pre_delete): Call gen_reg_rtx_and_attrs.
21820         (hoist_code): Likewise.
21821         (build_store_vectors): Likewise.
21822         (delete_store): Likewise.
21823         * loop-invariant.c (move_invariant_reg): Likewise.
21824         Update copyright years.
21825
21826 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
21827
21828         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
21829         control string instead of quoted.
21830
21831 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
21832
21833         * doc/rtl.texi: Rewrite of subreg section.
21834
21835 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
21836
21837         PR/35842
21838         * config/i386/i386.c (legitimize_pic_address): Add treating
21839         of dllimport SYM_REF's.
21840         (legitimize_dllimport_symbol): Add prototype.
21841
21842 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21843
21844         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
21845         reference in constructor with non self-referential type.
21846
21847 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21848
21849         Removal of Return with Depressed Stack Pointer support
21850         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
21851         (ECF_SP_DEPRESSED): Likewise.
21852         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
21853         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
21854         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21855         (expand_call): Do not test ECF_SP_DEPRESSED.
21856         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21857         * function.c (keep_stack_depressed): Delete.
21858         (handle_epilogue_set): Likewise.
21859         (update_epilogue_consts): Likewise.
21860         (emit_equiv_load): Likewise.
21861         (thread_prologue_and_epilogue_insns): Remove support for Return with
21862         Depressed Stack Pointer.
21863         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21864
21865 2008-04-06  Richard Guenther  <rguenther@suse.de>
21866
21867         PR tree-optimization/35400
21868         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
21869         information from SSA_NAMEs.
21870
21871 2008-04-06  Anatoly Sokolov <aesok@post.ru>
21872
21873         * config/avr/avr.h (avr_mega_p): Remove declaration.
21874         (AVR_MEGA): Remove macro.
21875         * config/avr/avr.c (avr_mega_p): Remove variable.
21876         (avr_override_options): Remove inicializion of avr_mega_p.
21877         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21878         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21879         (avr_jump_mode): (Ditto.).
21880         (avr_output_progmem_section_asm_op): (Ditto.).
21881         (avr_asm_init_sections): (Ditto.).
21882         (avr_asm_init_sections): (Ditto.).
21883         (avr_rtx_costs): (Ditto.).
21884         * config/avr/avr.md: (Ditto.).
21885         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
21886         '__AVR_MEGA__'.
21887
21888 2008-04-06  Richard Guenther  <rguenther@suse.de>
21889
21890         PR tree-optimization/35842
21891         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
21892         is_gimple_invariant_address.
21893
21894 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
21895
21896         * gcc.c (default_compilers): Sync Fortran extensions list with
21897         that in fortran/lang-specs.h.
21898         * doc/invoke.texi: Likewise.
21899         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
21900         * dwarf2out.c (gen_compile_unit_die): Likewise.
21901
21902 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
21903
21904         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
21905
21906 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
21907
21908         PR target/12329
21909         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
21910         attribute is used for nested functions.
21911
21912 2008-04-05  Jan Hubicka  <jh@suse.cz>
21913
21914         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
21915
21916         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
21917         letter argument.
21918         (dump_files): Update.
21919         (enable_rtl_dump_file): Do not accept letter argument.
21920         * tree-pass.h (dump_file_info): Remove letter argument.
21921         * toplev.c (decode_d_option): Update -da handling.
21922         * toplev.h (enable_rtl_dump_file): Update prototype.
21923         * passes.c (register_one_dump_file): Do not accept IPA argument; work
21924         it out based on pass type.
21925         (register_dump_files_1): Likewise.
21926         (init_optimization_passes): Update register_one_dump_file calls.
21927         (execute_one_pass): Sanity check that IPA passes are called at IPA
21928         level and RTL passes at RTL level.
21929         (execute_pass_list): IPA pass can not be after or subpass of
21930         GIMPLE/RTL pass.
21931         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
21932         disallov RTL subpasses of IPA subpasses.
21933
21934 2008-04-05  Ben Elliston  <bje@au.ibm.com>
21935
21936         * tree-cfg.c (need_fake_edge_p): Return false for calls to
21937         builtins that return exactly once and do not throw. Cache call to
21938         call_expr_flags.
21939
21940 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
21941
21942         PR rtl-optimization/34916
21943         PR middle-end/35519
21944         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
21945         between instruction pairs.
21946
21947 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
21948
21949         * doc/invoke.texi: Document -mbitops for SH.
21950         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
21951         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
21952         * config/sh/sh.c (print_operand): Add %t operand code.
21953         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
21954         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
21955         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
21956         (extendqihi2): Likewise.
21957         (movqi_i): Likewise.
21958         (insv): Use bset, bclr and bst instructions for SH2A if possible.
21959         (extv): Use bld instruction for SH2A if possible.
21960         (extzv): Likewise.
21961         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
21962         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
21963         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
21964         (bset.b, bclr.b): Define peepholes.
21965         * config/sh/sh.opt (mbitops): New option.
21966
21967 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
21968
21969         PR target/35620
21970         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
21971         and view convert expression.
21972
21973 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21974
21975         PR target/35364
21976         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
21977
21978 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
21979
21980         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
21981
21982         * config/i386/cpuid.h (bit_AES): New.
21983         (bit_PCLMUL): Likewise.
21984
21985         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
21986         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
21987         SSE2 if AES or PCLMUL is enabled.
21988         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
21989         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21990         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
21991         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
21992         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
21993         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
21994         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21995         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
21996         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
21997         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
21998         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
21999         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
22000         __builtin_ia32_aeskeygenassist128 and
22001         __builtin_ia32_pclmulqdq128.
22002         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
22003         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
22004         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
22005
22006         * config/i386/i386.h (TARGET_AES): New.
22007         (TARGET_PCLMUL): Likewise.
22008         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
22009
22010         * config/i386/i386.md (UNSPEC_AESENC): New.
22011         (UNSPEC_AESENCLAST): Likewise.
22012         (UNSPEC_AESDEC): Likewise.
22013         (UNSPEC_AESDECLAST): Likewise.
22014         (UNSPEC_AESIMC): Likewise.
22015         (UNSPEC_AESKEYGENASSIST): Likewise.
22016         (UNSPEC_PCLMUL): Likewise.
22017
22018         * config/i386/i386.opt (maes): New.
22019         (mpclmul): Likewise.
22020
22021         * config/i386/sse.md (aesenc): New pattern.
22022         (aesenclast): Likewise.
22023         (aesdec): Likewise.
22024         (aesdeclast): Likewise.
22025         (aesimc): Likewise.
22026         (aeskeygenassist): Likewise.
22027         (pclmulqdq): Likewise.
22028
22029         * config/i386/wmmintrin.h: New.
22030
22031         * doc/extend.texi: Document AES and PCLMUL built-in function.
22032
22033         * doc/invoke.texi: Document -maes and -mpclmul.
22034
22035 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
22036
22037         * function.c (free_after_parsing): Replace with
22038         cxx_push_function_context from C++ front-end.
22039         (allocate_struct_function): Don't call langhook.
22040         * langhooks.h (struct lang_hooks_for_functions): Delete.
22041         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
22042         member "function".
22043         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
22044         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
22045         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
22046         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
22047         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
22048         remove LANG_HOOKS_FUNCTION_INITIALIZER.
22049         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
22050
22051         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
22052         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
22053
22054 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22055
22056         PR c/35440
22057         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
22058         for all types.
22059
22060 2008-04-04  Richard Guenther  <rguenther@suse.de>
22061
22062         PR middle-end/35823
22063         * fold-const.c (optimize_minmax_comparison): Use the correct
22064         type for the constant in the simplified comparison.
22065
22066 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
22067
22068         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
22069         Pass L2 size as "--param l2-cache-size" to the compiler.
22070         (decode_l2_cache): New function to decode L2 cache parameters using
22071         0x8000006 extended cpuid function.
22072         (detect_caches_amd): Determine parameters of L2 cache using
22073         decode_l2_caches function.
22074         (decode_caches_intel): Decode L2 cache parameters.
22075         (detect_caches_intel): Determine L2 cache parameters using
22076         decode_caches_intel and decode_l2_caches functions.
22077
22078 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
22079
22080         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
22081         secondary input reload for subword loads from the constant pool.
22082
22083 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
22084
22085         PR target/35713
22086         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
22087           constants of the appropriate size for runtime calculations.
22088
22089         PR c/35712
22090         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
22091           decimal-float literal constant zero.
22092
22093 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
22094
22095         PR c/35738
22096         * c-parser.c (c_parser_omp_atomic): Call
22097         default_function_array_conversion on the RHS.
22098
22099         PR middle-end/35818
22100         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
22101         call is_variable_sized if decl has incomplete type.
22102
22103 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
22104
22105         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
22106
22107 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
22108
22109         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
22110         iterators.
22111         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
22112         (sgt<u>): Merge sgt and sgtu into new expander.
22113         (sgt, sgtu): Remove expanders.
22114         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
22115         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
22116         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
22117         *sgtu_<mode>_mips16 into new pattern.
22118         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
22119         (sge<u>): Merge sge and sgeu into new expander.
22120         (sge, sgeu): Remove expanders.
22121         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
22122         new pattern.
22123         (*sge_<mode>, second *sge_<mode>): Remove patterns.
22124         (slt<u>): Merge slt and sltu into new expander.
22125         (slt, sltu): Remove expanders.
22126         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
22127         (*slt_<mode>, *sltu_<mode>): Remove patterns.
22128         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
22129         *sltu_<mode>_mips16 into new pattern.
22130         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
22131         (sle<u>): Merge sle and sleu into new expander.
22132         (sle, sleu): Remove expanders.
22133         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
22134         (*sle_<mode>, *sleu_<mode>): Remove patterns.
22135         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
22136         *sleu_<mode>_mips16 into new pattern.
22137         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
22138
22139 2008-04-03  Jan Hubicka  <jh@suse.cz>
22140
22141         PR tree-optimization/35795
22142         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
22143         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22144         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22145         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
22146         * score/score3.c (score3_output_mi_thunk): Likewise.
22147         * score/score7.c (score7_output_mi_thunk): Likewise.
22148         * mips/mips.c (mips_output_mi_thunk): Likewise.
22149
22150 2008-04-03  Richard Guenther  <rguenther@suse.de>
22151
22152         * tree-vrp.c (extract_range_from_unary_expr): Handle all
22153         conversions.  Simplify code.
22154
22155 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
22156
22157         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
22158
22159 2008-04-03  Tom Tromey  <tromey@redhat.com>
22160             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22161
22162         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22163         * config/bfin/t-bfin-linux (generated_files): Add
22164         linux-sysroot-suffix.h.
22165         * doc/install.texi (Prerequisites): Require make 3.80.
22166         * doc/sourcebuild.texi (Front End Directory): Document new
22167         variable.
22168         * Makefile.in (generated_files): New variable.
22169         (ALL_HOST_OBJS): New variable.
22170         ($(ALL_HOST_OBJS)): New target.
22171
22172 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22173
22174         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
22175         (remap_block): Call id->transform_lang_insert_block instead
22176         of langhook.
22177         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
22178         Set id.transform_lang_insert_block to NULL.
22179         (clone_body): Move to cp/optimize.c
22180         * tree-inline.h (struct copy_body_data): Change
22181         transform_lang_insert_block to function pointer.
22182         (copy_generic_body, copy_decl_no_change): Export.
22183         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
22184         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
22185         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
22186
22187         * c-tree.h (insert_block): Kill.
22188         * c-decl.c (insert_block): Kill.
22189
22190 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22191
22192         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22193         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22194         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
22195         argument.
22196         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
22197         argument, call {push,pop}_function_context from here.
22198         * c-parser.c: Use c_{push,pop}_function_context.
22199
22200         * function.c (push_function_context_to): Move meat ...
22201         (push_function_context): ... here.  Simplify.
22202         * function.c (pop_function_context_from): Move meat ...
22203         (pop_function_context): ... here.  Simplify.
22204         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
22205         leave_nested).
22206         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22207         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22208         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
22209         * tree.h (push_function_context_to, pop_function_context_from): Remove.
22210
22211 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22212
22213         * expmed.c (extract_force_align_mem_bit_field): Remove.
22214
22215 2008-04-03  Richard Guenther  <rguenther@suse.de>
22216
22217         PR middle-end/35800
22218         * expr.h (try_casesi): Adjust prototype.
22219         * expr.c (try_casesi): Take fallback label as extra parameter.
22220         Use that for gen_casesi if default_label is NULL.
22221         * stmt.c (expand_case): Pass fallback label to try_casesi,
22222         make sure to fill gaps with a fallback label if default_label
22223         is not present.
22224
22225 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
22226
22227         PR target/35801
22228         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
22229
22230 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22231
22232         * expmed.c (extract_split_bit_field): Remove if (0) code.
22233         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
22234         (do_ds_constraint): Likewise.
22235
22236 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
22237
22238         * doc/cppopts.texi (-dU): Document.
22239         * c-common.h (flag_dump_macros): Update comment.
22240         * c-opts.c (handle_OPT_d): Handle -dU.
22241         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
22242         dump_queued_macros, cb_used_define, cb_used_undef): New.
22243         (init_pp_output): Handle -dU.
22244         (cb_line_change): Call dump_queued_macros.
22245         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
22246
22247 2008-04-02  Anatoly Sokolov <aesok@post.ru>
22248
22249         * config/avr/predicates.md (io_address_operand): New predicate.
22250         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
22251         * config/avr/avr.c (avr_io_address_p): Remove function.
22252         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
22253         'avr_io_address_p' function.
22254         (out_movhi_r_mr): (Ditto.).
22255         (out_movqi_mr_r): (Ditto.).
22256         (out_movhi_mr_r): (Ditto.).
22257         (avr_address_cost): (Ditto.).
22258
22259 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
22260
22261         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
22262         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
22263         in 32bit mode when XMM registers are available to avoid store
22264         forwarding stalls.
22265         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
22266         corresponding post-reload splitters.
22267
22268 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22269
22270         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
22271         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
22272         __builtin_ia32_roundss.
22273         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
22274         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
22275         __builtin_ia32_roundss.
22276         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
22277         IX86_BUILTIN_SHUFPD here.
22278
22279 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22280
22281         * config/i386/i386.md (plogic): New.
22282         (plogicprefix): Likewise.
22283
22284         * config/i386/mmx.md (mmx_<code><mode>3): New.
22285         (mmx_and<mode>3): Removed.
22286         (mmx_ior<mode>3): Likewise.
22287         (mmx_xor<mode>3): Likewise.
22288
22289         * config/i386/sse.md (<code><mode>3): New.
22290         (*<code><mode>3): Likewise.
22291         (*<code><mode>3): Likewise.
22292         (<code><mode>3): Likewise.
22293         (*sse_<code><mode>3): Likewise.
22294         (*sse2_<code><mode>3): Likewise.
22295         (<code>tf3): Likewise.
22296         (*<code>tf3): Likewise.
22297         (and<mode>3): Likewise.
22298         (*and<mode>3): Likewise.
22299         (ior<mode>3): Removed.
22300         (*ior<mode>3): Likewise.
22301         (xor<mode>3): Likewise.
22302         (*xor<mode>3): Likewise.
22303         (*and<mode>3): Likewise.
22304         (*ior<mode>3): Likewise.
22305         (*xor<mode>3): Likewise.
22306         (and<mode>3): Likewise.
22307         (*sse_and<mode>3): Likewise.
22308         (*sse2_and<mode>3): Likewise.
22309         (andtf3): Likewise.
22310         (*andtf3): Likewise.
22311         (ior<mode>3): Likewise.
22312         (*sse_ior<mode>3): Likewise.
22313         (*sse2_ior<mode>3): Likewise.
22314         (iortf3): Likewise.
22315         (*iortf3): Likewise.
22316         (xor<mode>3): Likewise.
22317         (*sse_xor<mode>3): Likewise.
22318         (*sse2_xor<mode>3): Likewise.
22319         (xortf3): Likewise.
22320         (*xortf3): Likewise.
22321
22322 2008-04-02  Richard Guenther  <rguenther@suse.de>
22323
22324         PR tree-optimization/14495
22325         PR tree-optimization/34793
22326         * tree-vrp.c (struct switch_update): New structure.
22327         (to_remove_edges, to_update_switch_stmts): New VECs.
22328         (simplify_switch_using_ranges): New function.  Remove not taken
22329         case labels and edges.
22330         (simplify_stmt_using_ranges): Call it.
22331         (identify_jump_threads): Mark edges we have queued for removal
22332         so we don't thread them.
22333         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
22334         case label vector.
22335         * tree-cfg.c (group_case_labels): Deal with missing default label.
22336         (tree_verify_flow_info): Allow missing default label.
22337         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
22338         (emit_case_nodes): Likewise.
22339         (expand_case): Do not rely on the default label to be present.
22340         * expr.c (try_casesi): Deal with NULL default_label.
22341         (do_tablejump): Likewise.
22342
22343 2008-04-02  Richard Guenther  <rguenther@suse.de>
22344
22345         PR tree-optimization/14495
22346         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
22347         SWITCH_EXPR here ...
22348         (vrp_visit_switch_stmt): ... but here (new function).
22349         (find_case_label_index): New helper function.
22350         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
22351
22352 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22353
22354         * fwprop.c: Fix ISO-C99ism.
22355
22356 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22357
22358         PR bootstrap/35752
22359         * Makefile.in (objdir): Set it here.
22360         * configure.ac: Not here.  Find dynamic linker characteristics.
22361         * exec-tool.in: Use them.
22362         * aclocal.m4: Regenerate.
22363         * configure: Regenerate.
22364
22365 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22366
22367         * expr.c (expand_var): Delete it.
22368         * expr.h (expand_var): Delete prototype.
22369         * function.c (expand_function_start): Use expand_decl instead.
22370         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
22371         langhook.
22372
22373 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
22374
22375         PR rtl-optimization/35542
22376         * fwprop.c (forward_propagate_and_simplify): Replace
22377         loc_reg_mentioned_in_p with reg_mentioned_p.
22378
22379 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22380
22381         PR rtl-optimization/35281
22382         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
22383         (propagate_rtx_1): Handle PR_HANDLE_MEM.
22384         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
22385         (varying_mem_p): Move above propagate_rtx.
22386         (all_uses_available_at): Do not check MEMs.
22387
22388 2008-04-02  Rafael Espíndola  <espindola@google.com>
22389
22390         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
22391         (register_edge_assert_for_2): Split the cond argument.
22392         (register_edge_assert_for_1): Adjust for the change in
22393         register_edge_assert_for_2.
22394         (register_edge_assert_for): Split the cond argument.
22395         (find_switch_asserts): Adjust for the change in
22396         register_edge_assert_for.
22397
22398 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
22399
22400         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
22401         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
22402         offsets for 64-bit mingw.
22403         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
22404         abi for x86_64-pc-mingw.
22405
22406 2008-04-02  Richard Guenther  <rguenther@suse.de>
22407
22408         * tree-vrp.c (extract_range_from_assert): Make sure to not
22409         produce range min/max with TREE_OVERFOW set.
22410         If merging a anti-range and a range keep the anti-range if
22411         the range covers all values of the type.
22412         (register_edge_assert_for_2): Only allow sign-changing
22413         conversions in detecting canonical range checks.  Also
22414         register an assert for the unsigned name if useful.
22415
22416         PR tree-optimization/35787
22417         * tree-vrp.c (vrp_val_max): New function.
22418         (vrp_val_min): Likewise.
22419         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
22420         (vrp_val_is_min): Likewise.
22421         (supports_overflow_infinity): Use vrp_val_{min,max}.
22422         (negative_overflow_infinity): Likewise.
22423         (positive_overflow_infinity): Likewise.
22424         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
22425         (is_positive_overflow_infinity): Likewise.
22426         (is_overflow_infinity): Likewise.
22427         (avoid_overflow_infinity): Use vrp_val_{min,max} and
22428         vrp_val_is_{min,max}.
22429         (set_and_canonicalize_value_range): Canonicalize anti-ranges
22430         to ranges if possible.  Avoid empty ranges.
22431
22432 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22433
22434         PR middle-end/35705
22435         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
22436         the expression is a function address.
22437
22438 2008-04-01  George Helffrich  <george@gcc.gnu.org>
22439
22440         PR fortran/35154, fortran/23057
22441         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
22442         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
22443         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
22444         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
22445         in common.
22446         (dbxout_syms): Check for COMMON-based symbol and wrap in
22447         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
22448         in bracket for efficiency.
22449
22450         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
22451         using DW_TAG_common_block + member offset.
22452         (add_pubname_string): New function.
22453         (dw_expand_expr): New function to find block name and offset for
22454         COMMON var.
22455         (common_check): New function to check whether symbol in Fortran COMMON.
22456         (gen_variable_die): If COMMON, use DW_TAG_common_block.
22457
22458 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
22459
22460         PR c/35436
22461         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
22462
22463 2008-04-02  Ben Elliston  <bje@au.ibm.com>
22464
22465         * config/v850/v850.md (casesi): Remove if (0) code.
22466         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
22467         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
22468
22469 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
22470
22471         * config/i386/i386.md (rex64suffix): New mode attribute.
22472         (floathi<mode>2): Disable expander for SSE math.
22473         (*floathi<mode>2_1): New insn insn_and_split pattern.
22474         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
22475         corresponding post-reload splitters.
22476         (*floathi<mode>2_i387): New macroized insn pattern.
22477         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
22478         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
22479         insn_and_split pattern.
22480         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
22481         New macroized instruction patterns and corresponding post-reload
22482         splitters.
22483         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
22484         and corresponding post-reload splitters.
22485         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
22486         New macroized instruction patterns.
22487         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
22488         macroized instruction patterns and corresponding post-reload splitters.
22489         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
22490         corresponding post-reload splitters.
22491         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
22492         New macroized instruction patterns.
22493         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
22494         corresponding post-reload splitters.
22495         (*floatsi<mode>2_i387): New macroized instruction patterns.
22496
22497 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
22498
22499         * config/i386/i386.md (smaxmin): New.
22500         (umaxmin): Likewise.
22501         (maxminiprefix): Likewise.
22502         (maxminfprefix): Likewise.
22503         (<code><mode>3): Likewise.
22504         (smin<mode>3): Removed.
22505         (smax<mode>3): Likewise.
22506
22507         * config/i386/mmx.md (mmx_<code>v2sf3): New.
22508         (mmx_<code>v4hi3): Likewise.
22509         (mmx_<code>v8qi3): Likewise.
22510         (mmx_smaxv2sf3): Removed.
22511         (mmx_sminv2sf3): Likewise.
22512         (mmx_umaxv8qi3): Likewise.
22513         (mmx_smaxv4hi3): Likewise.
22514         (mmx_uminv8qi3): Likewise.
22515         (mmx_sminv4hi3): Likewise.
22516
22517         * config/i386/sse.md (<addsub><mode>3): New.
22518         (*<addsub><mode>3): Likewise.
22519         (<sse>_vm<addsub><mode>3): Likewise.
22520         (<maxmin><mode>3): Likewise.
22521         (*<maxmin><mode>3_finite): Likewise.
22522         (*<maxmin><mode>3): Likewise.
22523         (<sse>_vm<maxmin><mode>3): Likewise.
22524         (sse3_h<addsub>v4sf3): Likewise.
22525         (sse3_h<addsub>v2df3): Likewise.
22526         (<maxmin>v16qi3): Likewise.
22527         (*<maxmin>v16qi3): Likewise.
22528         (<maxmin>v8hi3): Likewise.
22529         (*<maxmin>v8hi3): Likewise.
22530         (*sse4_1_<maxmin><mode>3): Likewise.
22531         (*sse4_1_<maxmin><mode>3): Likewise.
22532         (add<mode>3): Removed.
22533         (*add<mode>3): Likewise.
22534         (<sse>_vmadd<mode>3): Likewise.
22535         (sub<mode>3): Likewise.
22536         (*sub<mode>3): Likewise.
22537         (<sse>_vmsub<mode>3): Likewise.
22538         (smin<mode>3): Likewise.
22539         (*smin<mode>3_finite): Likewise.
22540         (*smin<mode>3): Likewise.
22541         (<sse>_vmsmin<mode>3): Likewise.
22542         (smax<mode>3): Likewise.
22543         (*smax<mode>3_finite): Likewise.
22544         (*smax<mode>3): Likewise.
22545         (<sse>_vmsmax<mode>3): Likewise.
22546         (sse3_haddv4sf3): Likewise.
22547         (sse3_haddv2df3): Likewise.
22548         (sse3_hsubv4sf3): Likewise.
22549         (sse3_hsubv2df3): Likewise.
22550         (umaxv16qi3): Likewise.
22551         (*umaxv16qi3): Likewise.
22552         (smaxv8hi3): Likewise.
22553         (*smaxv8hi3): Likewise.
22554         (*sse4_1_smax<mode>3): Likewise.
22555         (*sse4_1_umax<mode>3): Likewise.
22556         (uminv16qi3): Likewise.
22557         (*uminv16qi3): Likewise.
22558         (sminv8hi3): Likewise.
22559         (*sminv8hi3): Likewise.
22560         (*sse4_1_smin<mode>3): Likewise.
22561         (*sse4_1_umin<mode>3): Likewise.
22562
22563 2008-04-01  Rafael Espíndola  <espindola@google.com>
22564
22565         * tree-cfg.c (verify_expr): remove in_phi.
22566         (verify_stmt): Don't call walk_tree with verify_expr. Use
22567         is_gimple_min_invariant instead of is_gimple_val.
22568
22569 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
22570
22571         * doc/include/gpl_v3.texi: Update for manpage generation.
22572         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
22573         gpl.texi.
22574         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
22575         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
22576         gpl_v3.texi instead of gpl.texi.
22577         (gpl.pod): New.
22578
22579 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
22580
22581         PR pch/13675
22582         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
22583
22584 2008-04-01  Rafael Espíndola  <espindola@google.com>
22585
22586         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
22587         (extract_code_and_val_from_cond): Use
22588         extract_code_and_val_from_cond_with_ops.
22589
22590 2008-04-01  Jan Hubicka  <jh@suse.cz>
22591
22592         * function.c (free_after_compilation): Free epilogue_delay_list.
22593         (prepare_function_start): Assert that previous compilation was freed.
22594
22595 2008-04-01  Jan Hubicka  <jh@suse.cz>
22596             Jim Wilson  <wilson@tuliptree.org>
22597             Andreas Tobler <andreast@gcc.gnu.org>
22598
22599         PR middle-end/35781
22600         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
22601         rtl.emit instead cfun->emit.
22602         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
22603         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
22604
22605 2008-04-01  Ben Elliston  <bje@au.ibm.com>
22606
22607         * doc/c-tree.texi (Function Basics): Fix grammatical error.
22608
22609 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
22610
22611         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
22612         New options
22613         (fprofile-use): Add var flag_profile_use
22614         * coverage.c (coverage_begin_output): Do not open a gcno file for
22615         output only if -ftest-coverage is set.
22616         Do not add getpwd() to gcda file path.
22617         (build_gcov_info): Check the new flag
22618         flag_profile_datafile_relative_path.
22619         (coverage_init): Use profile_data_prefix.
22620         Read profile counter only if flag_profile_use is set.
22621         * opts.c (common_handle_option): New option fprofile-use=,
22622         fprofile-dir=, fprofile-generate=.
22623         * toplev.c (profile_data_prefix): New variable definition.
22624         * toplev.h (profile_data_prefix): New declaration.
22625         * doc/invoke.tex (Option Summary, Optimization Options):
22626         Add new options.
22627
22628 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
22629
22630         * varasm.c (output_constant_pool_1): In LABEL_REF check,
22631         use tmp consistently.
22632
22633         PR target/35695
22634         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
22635         * config/ia64/ia64.c (rtx_needs_barrier): Handle
22636         UNSPEC_FR_RECIP_APPROX_RES.
22637         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
22638
22639 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
22640
22641         PR c/35750
22642         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
22643
22644 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22645
22646         PR middle-end/30186
22647         * fold-const.c (fold_indirect_ref_1): Support accessing non first
22648         element of the vector via a pointer.
22649
22650 2008-03-31  Ian Lance Taylor  <iant@google.com>
22651
22652         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
22653
22654 2008-03-31  Jan Hubicka  <jh@suse.cz>
22655
22656         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22657         get_arg_pointer_save_area.
22658         * expr.c (init_expr): Just clear out rtl.expr.
22659         * function.c (free_after_compilation): Clear out whole RTL structure.
22660         (get_func_frame_size): Merge into ...
22661         (get_frame_size): ... this one.
22662         (assign_stack_local_1): Merge into ...
22663         (assign_stack_local): ... this one.
22664         (expand_function_end): Update call of get_arg_pointer_save_area.
22665         (get_art_pointer_save_area): Remove cfun argument.
22666         * function.h (emit_status): regno_pointer_align does not need length
22667         attribute. Move x_regno_reg_rtx to ...
22668         (regno_reg_rtx): ... new global array.
22669         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
22670         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
22671         apply_args_value, forced_labels, stack_pointer_delta):
22672         Update accestors.
22673         (struct varasm_status): Move here from varasm.c
22674         (struct rtl_data): New. Move here some fields from struct function.
22675         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22676         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22677         used_temp_slots avail_temp_slots, temp_slot_level,
22678         nonlocal_goto_handler_labels): Update accesstors.
22679         (rtl): New global variable.
22680         (struct function): Move some fileds to rtl_data.
22681         (get_arg_pointer_save_area): Update prototype.
22682         * emit-rtl.c (rtl): Declare.
22683         (regno_reg_rtx): Declare.
22684         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22685         Update.
22686         (gen_reg_rtx): Update.
22687         (init_virtual_regs): Do not tate emit_status argument.
22688         (init_emit): Do not allocate emit.
22689         * varasm.c (varasm_statuc): Move to function.h.
22690         (n_deferred_constatns): Update accestor.
22691         (init_varasm_status): Do not allocate varasm_status.
22692         (force_const_mem, get_pool_size, output_constant_pool): Update.
22693         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22694         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22695
22696 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
22697
22698         PR rtl-optimization/35729
22699         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
22700         references.
22701
22702 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
22703
22704         PR target/32000
22705         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
22706         load/store if memory is unaligned.
22707         (*movti_rex64): Likewise.
22708
22709         * config/i386/predicates.md (misaligned_operand): New.
22710
22711 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
22712
22713         PR tree-opt/35431
22714         * tree-ssa-phiopt.c (conditional_replacement): Return early for
22715         complex types.
22716
22717 2008-03-31  Jan Beulich  <jbeulich@novell.com>
22718
22719         * config/ia64/constraints.md: Add 'j' constraint.
22720         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
22721         (movdi_internal): Likewise.
22722
22723 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
22724
22725         PR c/35748
22726         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
22727
22728 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22729
22730         PR target/35757
22731         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
22732         proper error message for the third argument on blendpd and
22733         blendps.
22734
22735         * config/i386/sse.md (blendbits): New.
22736         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
22737
22738 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
22739
22740         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
22741
22742 2008-03-30  Richard Guenther  <rguenther@suse.de>
22743
22744         PR middle-end/31023
22745         * fold-const.c (fold_sign_changed_comparison): Do leave
22746         conversions to base-types alone.
22747
22748 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22749
22750         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
22751         the link register if one altivec register is be saved.
22752
22753 2008-03-30  Ben Elliston  <bje@au.ibm.com>
22754
22755         * final.c (final_scan_insn): Remove if (0) code.
22756
22757 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
22758
22759         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
22760
22761 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
22762
22763         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
22764         of V4SFmode to ix86_binary_operator_ok.
22765
22766 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
22767
22768         * config/i386/i386.c (override_options): Initialize
22769         ix86_veclib_handler to ix86_veclibabi_svml when
22770         -mveclibabi=svml is used.
22771         (ix86_veclibabi_svml): New function for SVML ABI style
22772         vectorization support.
22773         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
22774
22775 2008-03-28  Rafael Espíndola  <espindola@google.com>
22776
22777         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
22778         (tree_binary_nonnegative_warnv_p): Make it public.
22779         (tree_single_nonnegative_warnv_p): Make it public.
22780         (tree_invalid_nonnegative_warnv_p): Make it public.
22781         (tree_unary_nonzero_warnv_p): Make it public.
22782         (tree_binary_nonzero_warnv_p): Make it public
22783         (tree_single_nonzero_warnv_p): Make it public.
22784         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
22785         (extract_range_from_binary_expr): Split the expr argument.
22786         (extract_range_from_unary_expr): Split the expr argument.
22787         (extract_range_from_comparison): Split the expr argument.
22788         (extract_range_from_expr): Use the new aux functions.
22789         (vrp_evaluate_conditional_warnv): Use
22790         vrp_evaluate_conditional_warnv_with_ops.
22791         * tree.h (tree_unary_nonzero_warnv_p): Declare.
22792         (tree_binary_nonzero_warnv_p): Declare.
22793         (tree_single_nonzero_warnv_p): Declare.
22794         (tree_expr_nonzero_warnv_p): Declare.
22795         (tree_unary_nonnegative_warnv_p): Declare.
22796         (tree_binary_nonnegative_warnv_p): Declare.
22797         (tree_single_nonnegative_warnv_p): Declare.
22798         (tree_invalid_nonnegative_warnv_p): Declare.
22799
22800 2008-03-28  Richard Guenther  <rguenther@suse.de>
22801
22802         PR tree-optimization/30317
22803         PR tree-optimization/30911
22804         PR tree-optimization/34793
22805         * tree-vrp.c (set_and_canonicalize_value_range): New function.
22806         (struct assert_locus_d): New member EXPR.
22807         (register_new_assert_for): Add EXPR parameter to support
22808         ASSERT_EXPR <name, expr OP limit>.
22809         (register_edge_assert_for_1): Adjust callers.
22810         (find_assert_locations): Likewise.
22811         (process_assert_insertions_for): Build condition from expression.
22812         (extract_range_from_assert): Handle ASSERT_EXPRs
22813         of the form ASSERT_EXPR <name, expr OP limit>.
22814         (register_edge_assert_for_2): New helper registering
22815         asserts for comparisons.  Recognize range tests of the form
22816         (unsigned)i - CST1 OP CST2.
22817         (register_edge_assert_for_1): Use it.
22818         (register_edge_assert_for): Likewise.
22819         (needs_overflow_infinity): Integer sub-types
22820         do not need overflow infinities.
22821         (vrp_val_is_max): The extreme values of integer sub-types
22822         are those of the base type.
22823         (vrp_val_is_min): Likewise.
22824         * tree.def (ASSERT_EXPR): Document extra allowed conditional
22825         expressions.
22826
22827 2008-03-28  Nick Clifton  <nickc@redhat.com>
22828
22829         PR target/31110
22830         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
22831         Return GENERAL_REGS for stack adjustment reloads.
22832
22833 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22834
22835         PR target/31334
22836         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
22837         const_vector when all the vectors are constant.
22838
22839 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
22840
22841         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
22842         comparisons.
22843         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
22844         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
22845         (scc_sf): New.
22846         (s<code>_sf): Use new scc_sf attribute for opcode names.
22847
22848 2008-03-27  Tom Tromey  <tromey@redhat.com>
22849
22850         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
22851         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
22852         config/spu/t-spu-elf, config/i386/t-interix,
22853         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
22854         config/i386/x-darwin, config/i386/x-mingw32,
22855         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
22856         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
22857         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
22858         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
22859         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
22860         config/rs6000/x-darwin, config/rs6000/t-rs6000,
22861         config/score/t-score-elf, config/arm/t-strongarm-pe,
22862         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
22863         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
22864         Revert automatic dependency patch.
22865
22866 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22867
22868         PR target/35657
22869         * config/i386/i386.c (ix86_function_arg_boundary): Align
22870         decimal floating point to its natural boundary.
22871
22872 2008-03-27  Richard Guenther  <rguenther@suse.de>
22873
22874         PR middle-end/35716
22875         * fold-const.c (fold_comparison): Restrict distinct decl
22876         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
22877         solely rely on operand_equal_p.
22878
22879 2008-03-27  Richard Guenther  <rguenther@suse.de>
22880
22881         PR c/32511
22882         * c-common.c (handle_weak_attribute): Reject combination of
22883         weak and inline.
22884
22885 2008-03-27  Richard Guenther  <rguenther@suse.de>
22886
22887         PR tree-optimization/32810
22888         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
22889         conversions from DECL_INITIAL.
22890         (fold_const_aggregate_ref): Likewise from constructor elements.
22891
22892 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
22893
22894         * tree-affine.h (aff_combination_expand): Declare.
22895         (get_inner_reference_aff): Likewise.
22896         * tree-affine.c (aff_combination_expand): Split out from
22897         tree_to_aff_combination_expand.
22898         (get_inner_reference_aff): New function.
22899         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
22900         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
22901         (struct lim_aux_data): sm_done field removed.
22902         (mem_ref_loc_p, mem_ref_locs_p): New types.
22903         (struct mem_ref): Added id, stored, accesses_in_loop,
22904         indep_loop, dep_loop, indep_ref, dep_ref fields.
22905         Removed is_stored, locs and next fields.
22906         (memory_accesses): New variable.
22907         (movement_possibility): Do not allow moving statements
22908         that store to memory.
22909         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
22910         New functions.
22911         (determine_max_movement): For statements with memory references,
22912         find the outermost loop in that the reference is independent.
22913         (move_computations_stmt): Mark the virtual operands for renaming.
22914         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
22915         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
22916         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
22917         add_vop_ref_mapping, create_vop_ref_mapping_loop,
22918         create_vop_ref_mapping, analyze_memory_references,
22919         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
22920         get_all_locs_in_loop, ref_always_accessed_p,
22921         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
22922         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
22923         store_motion_loop, store_motion): New functions.
22924         (struct vop_to_refs_elt): New type.
22925         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
22926         memref_hash, memref_eq, hoist_memory_references): Rewritten.
22927         (schedule_sm): Replaced by...
22928         (execute_sm): ... this.
22929         (determine_lsm_ref, hoist_memory_references,
22930         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
22931         find_more_ref_vops, free_mem_ref, free_mem_refs,
22932         determine_lsm_loop, determine_lsm): Removed.
22933         (tree_ssa_lim_finalize): Free data structures used by store motion.
22934         (tree_ssa_lim): Call analyze_memory_references.  Use
22935         store_motion instead of determine_lsm.
22936
22937 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22938
22939         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
22940         rename tmake_file to m68hc11/t-m68hc11.
22941         (mcore): Set inhibit_libc to true.
22942         * config.host (alpha*-dec-*vms*): Set extra_programs.
22943         (interix3*): Don't use host_xmake_file.
22944         * configure.ac: Let config.gcc override inhibit_libc.
22945         * configure: Regenerate.
22946
22947         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
22948         * config/t-openbsd-thread: Remove commented out lines.
22949
22950         * config/x-interix: Remove.
22951
22952         * config/m68hc11/t-m68hc11-gas: Rename to...
22953         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
22954
22955         * config/mcore/t-mcore: Remove T_CFLAGS.
22956         * config/mcore/t-mcore-pe: Likewise.
22957
22958 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22959
22960         * configure.ac: Replace custom __GNU_SOURCE test with
22961         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
22962         * aclocal.m4: Regenerate.
22963         * configure: Regenerate.
22964         * config.in: Regenerate.
22965
22966 2008-03-27  Richard Guenther  <rguenther@suse.de>
22967
22968         * fold-const.c (target.h): Include.
22969         (fold_comparison): Fold comparison of addresses of decls
22970         that bind locally or of constants.  Consolidate address folding code.
22971         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
22972         results from fold_binary_to_constant.
22973         (compare_values_warnv): Likewise.
22974
22975 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
22976
22977         PR middle-end/35429
22978         * fold-const.c (fold_truthop): Check for integeral types when folding
22979         a == 0 && b == 0 and a != 0 || b != 0 .
22980
22981 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
22982
22983         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
22984
22985 2008-03-26  Andreas Schwab  <schwab@suse.de>
22986
22987         * doc/invoke.texi: Fix use of @item vs. @itemx.
22988
22989 2008-03-26  Tom Tromey  <tromey@redhat.com>
22990
22991         * Makefile.in (build/gensupport.o, build/print-rtl.o,
22992         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
22993         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
22994         build/gencodes.o, build/genconditions.o, build/genconfig.o,
22995         build/genconstants.o, build/genemit.o, build/genextract.o,
22996         build/genflags.o, build/genmddeps.o, build/genopinit.o,
22997         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
22998         options.h.
22999
23000 2008-03-26  Richard Guenther  <rguenther@suse.de>
23001
23002         Revert
23003         2008-03-26  Richard Guenther  <rguenther@suse.de>
23004
23005         * fold-const.c (target.h): Include.
23006         (fold_comparison): Fold comparison of addresses of two decls
23007         that bind locally.  Consolidate address folding code.
23008
23009 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23010
23011         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
23012         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
23013         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
23014         dconstsqrt2, dconstthird, dconste and/or dconst10.
23015         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
23016         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
23017         dconstsqrt2, dconste): Delete.
23018         (init_emit_once): Likewise.  Simplify initializing dconstm1.
23019         Constify variable.
23020         * real.c (get_real_const): New.
23021         * real.h (dconst3, dconst10, dconstm2, dconstthird,
23022         dconstsqrt2, dconste): Delete.
23023         (real_value_const, get_real_const): New.
23024
23025 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
23026
23027         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
23028
23029         * config/i386/i386.c (ix86_function_arg_boundary): Check
23030         BIGGEST_ALIGNMENT instead of 128.
23031         (setup_incoming_varargs_64): Likewise.
23032
23033 2008-03-26  Tom Tromey  <tromey@redhat.com>
23034
23035         * Makefile.in (DEPFILES): Add missing '/'.
23036
23037 2008-03-26  Richard Guenther  <rguenther@suse.de>
23038
23039         * fold-const.c (target.h): Include.
23040         (fold_comparison): Fold comparison of addresses of two decls
23041         that bind locally.  Consolidate address folding code.
23042
23043 2008-03-26  Nick Clifton  <nickc@redhat.com>
23044
23045         PR target/31232
23046         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
23047         not allow INT+INT as a legitimate addressing mode.
23048
23049 2008-03-26  Richard Guenther  <rguenther@suse.de>
23050
23051         * tree-flow.h (widen_bitfield): Remove declaration.
23052         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
23053         (widen_bitfield): Remove function.
23054         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
23055         code.
23056
23057 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23058
23059         PR target/31558
23060         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
23061         error_mark_node's.
23062
23063 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23064
23065         PR rtl-optimization/35232
23066         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
23067         (forget_old_reloads_1, forget_marked_reloads): Don't clear
23068         reg_reloaded_call_part_clobbered here.
23069         (reload_regs_reach_end_p): New function.
23070         (reload_reg_rtx_for_input): New variable.
23071         (reload_reg_rtx_for_output): Likewise.
23072         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
23073         when reassigning a pseudo register.  Load reloadreg from
23074         reload_reg_rtx_for_input, moving the mode and register
23075         calculation to...
23076         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
23077         instead of the original when deciding whether an input reload
23078         would be a no-op or whether an output reload can be deleted.
23079         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
23080         when setting up new_spill_reg_store.  Load it from
23081         reload_reg_rtx_for_output, moving the mode and register
23082         calculation to...
23083         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
23084         instead of the original when deciding whether an output reload
23085         would be a no-op.  Do the same when modifying insn notes.
23086         Use rtx_equal_p instead of == to compare the registers.
23087         (inherit_piecemeal_p): Take a mode and two register numbers
23088         as argument.
23089         (emit_reload_insns): Clear new_spill_reg_store for every hard
23090         register in the reload register.  Remove spill registers
23091         from reg_reloaded_valid before considering whether to record
23092         inheritance information for them.  Use reload_reg_rtx_for_output
23093         instead of reg_rtx when recording output reloads.  Use
23094         reload_reg_rtx_for_input instead of reg_rtx when recording
23095         input reloads.  Set or clear reg_reloaded_call_part_clobbered
23096         at the same time as setting reg_reloaded_valid.
23097         (delete_output_reload): Add a new_reload_reg parameter and use it
23098         instead of rld[j].reg_rtx.
23099         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
23100         calls accordingly.
23101
23102 2008-03-25  Tom Tromey  <tromey@redhat.com>
23103
23104         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
23105         (build/genattr.o): Likewise.
23106         (build/genattrtab.o): Likewise.
23107         (build/gencodes.o): Likewise.
23108         (build/genconfig.o): Likewise.
23109         (build/genconstants.o): Likewise.
23110         (build/genemit.o): Likewise.
23111         (build/genextract.o): Likewise.
23112         (build/genflags.o): Likewise.
23113
23114 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
23115
23116         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
23117         instead of size_int for integer types.
23118         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
23119         to match type of MINUS_EXPR.
23120
23121 2008-03-25  Tom Tromey  <tromey@redhat.com>
23122
23123         * configure: Rebuilt.
23124         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
23125         Makefile.
23126
23127 2008-03-25  Tom Tromey  <tromey@redhat.com>
23128
23129         * config/x-solaris (host-solaris.o): Update.
23130         * config/x-linux (host-linux.o): Update.
23131         * config/x-hpux (host-hpux.o): Update.
23132         * config/x-darwin (host-darwin.o): Update.
23133         * config/v850/t-v850e (v850-c.o): Update.
23134         * config/v850/t-v850 (v850-c.o): Update.
23135         * config/t-vxworks (vxworks.o): Update.
23136         * config/t-sol2 (sol2-c.o, sol2.o): Update.
23137         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
23138         * config/spu/t-spu-elf (spu-c.o): Update.
23139         (spu.o): Remove.
23140         * config/sh/t-symbian (sh-c.o): Update.
23141         (symbian.o): Update.
23142         * config/sh/t-sh (sh-c.o): Update.
23143         * config/score/t-score-elf (score7.o, score3.o): Update.
23144         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
23145         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
23146         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
23147         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
23148         (rs6000.o): Remove.
23149         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
23150         * config/m32c/t-m32c (m32c-pragma.o): Update.
23151         * config/ia64/t-ia64 (ia64-c.o): Update.
23152         * config/i386/x-mingw32 (host-mingw32.o): Update.
23153         * config/i386/x-i386 (driver-i386.o): Update.
23154         * config/i386/x-darwin (host-i386-darwin.o): Update.
23155         * config/i386/x-cygwin (host-cygwin.o): Update.
23156         * config/i386/t-nwld (nwld.o): Update.
23157         * config/i386/t-netware (netware.o): Update.
23158         * config/i386/t-interix (winnt.o): Update.
23159         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
23160         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
23161         msformat-c.o): Update.
23162         * config/bfin/t-bfin-linux (generated_files): Add
23163         linux-sysroot-suffix.h.
23164         * config/arm/t-wince-pe (pe.o): Update.
23165         * config/arm/t-strongarm-pe (pe.o): Update.
23166         * config/arm/t-pe (pe.o): Update.
23167         * config/arm/t-arm (arm-c.o): Update.
23168         * doc/install.texi (Prerequisites): Require make 3.80.
23169         * Makefile.in: Remove .o targets.
23170         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
23171         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
23172         (simple_generated_h, simple_generated_c): Move earlier.
23173         (generated_files): New variable.
23174         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
23175         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
23176         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
23177         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
23178         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
23179         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
23180         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
23181         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
23182         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
23183         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
23184         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
23185         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
23186         (.c.o): Remove.
23187         (COMPILE.base, COMPILE): New variables.
23188         (%.o): New pattern rule.
23189         (ALL_HOST_OBJS): New variable.
23190         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
23191         (dummy-checksum.o, cc1-checksum.o): Remove.
23192         (DRIVER_SHLIB): New variable.
23193         (DRIVER_DEFINES): Use it.
23194         (gencondmd.c): Move out of build/.
23195         (s-conditions): Update.
23196         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
23197         (ALL_BUILD_OBJS): Likewise.
23198         (build/%.o): Use BUILDCOMPILE.
23199         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
23200         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
23201         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
23202         build/gencheck.o, build/gencodes.o, build/genconditions.o,
23203         build/genconfig.o, build/genconstants.o, build/genemit.o,
23204         build/genextract.o, build/genflags.o, build/genmddeps.o,
23205         build/genopinit.o, build/genoutput.o, build/genpeep.o,
23206         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
23207         build/gen-protos.o, build/scan.o, build/fix-header.o,
23208         build/scan-decls.o): Simplify.
23209         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
23210         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
23211         prefix.o, toplev.o): Reduce to variable setting.
23212         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
23213         ($(out_object_file), gcc-options.o): New targets.
23214         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
23215         * configure: Rebuilt.
23216         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
23217         * doc/sourcebuild.texi (Front End Directory): Document new variable.
23218
23219 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
23220
23221         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
23222         complain when we hit an error, return ERROR_MARK_NODE.
23223
23224 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23225
23226         * config/sh/constraints.md (Pso, Psz): New constraints.
23227         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
23228         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
23229
23230 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23231
23232         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
23233         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
23234
23235 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23236
23237         * config/sh/sh.md (prefetch): Add condition for SH2A target.
23238         (prefetch_sh2a): New.
23239
23240 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23241             Naveen.H.S  <naveen.hs@kpitcummins.com>
23242
23243         * config/sh/constraints.md (I28): New constraint.
23244         * config/sh/sh.c (broken_move): Add support for movi20s.
23245         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
23246
23247 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
23248             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23249             Naveen.H.S  <naveen.hs@kpitcummins.com>
23250
23251         * config/sh/sh.c (SH_ATTRIBUTES): Define.
23252         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
23253         (print_operand): Handle resbank in %@ operand code.
23254         (sh_encode_section_info): New.
23255         (push_regs): Add conditions for resbank.
23256         (sh_expand_epilogue): Likewise.
23257         (sh_insert_attributes): Likewise.
23258         (sh_attribute_table): Likewise.
23259         (sh_handle_resbank_handler_attribute): New.
23260         (sh2a_handle_function_vector_handler_attribute): New.
23261         (sh2a_is_function_vector_call): New.
23262         (sh2a_get_function_vector_number): New.
23263         (sh2a_function_vector_p): New.
23264         (sh_cfun_resbank_handler_p): New.
23265         * config/sh/sh.md (calli): Emit jsr/n if possible.
23266         (calli_tbr_rel): New.
23267         (calli_pcrel): Emit jsr/n if possible.
23268         (return_i): Emit rts/n if possible.
23269         (call_valuei_tbr_rel): New.
23270         (call_valuei_pcrel): Add condition for SH2A target.
23271         (call_value): Likewise.
23272         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
23273         (sh2a_get_function_vector_number): Likewise.
23274         (sh2a_is_function_vector_call): Likewise.
23275         * doc/extend.texi: Document TBR relative addressing of SH2A.
23276         (resbank): Add description for SH2A.
23277
23278 2008-03-24  Richard Guenther  <rguenther@suse.de>
23279
23280         PR c/22371
23281         * gimplify.c (gimplify_modify_expr): For frontend type-correct
23282         pointer assignments change conversions according to middle-end rules.
23283         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
23284         * configure.ac: Include type checking in yes.
23285         * configure: Regenerate.
23286
23287 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23288
23289         * diagnostic.c (diagnostic_count_diagnostic): Delete.
23290         (diagnostic_report_diagnostic): Update. Handle ICEs here.
23291
23292 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
23293
23294         * gthr-vxworks.h (UNUSED): Define.
23295
23296 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
23297
23298         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
23299
23300 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
23301
23302         * doc/extend.texi (Function Attributes): Add missing comma in the
23303         example of the "alloc_size" attribute.
23304
23305 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
23306
23307         Revert:
23308         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23309
23310         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23311         32bit host.
23312
23313         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23314
23315         PR target/35496
23316         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23317         of the underlying type of a MS bitfield layout to the natural
23318         alignment of the type.
23319
23320         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23321
23322         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23323         to their natural alignment to avoid store forwarding stalls.
23324
23325 2008-03-22  Richard Guenther  <rguenther@suse.de>
23326
23327         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
23328         For PHI nodes verify the address is invariant.
23329         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
23330         (get_symbol_constant_value): Use is_gimple_min_invariant.
23331         (maybe_fold_stmt_indirect): Likewise.
23332
23333 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
23334
23335         PR rtl-optimization/33927
23336         * Makefile.in (dse.o): Depend on $(TM_P_H).
23337         * expr.h (extract_low_bits): Declare.
23338         * expmed.c (extract_low_bits): New function.
23339         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
23340         * dse.c: Include tm_p.h.
23341         (find_shift_sequence): Remove the read_reg argument and return the
23342         read value.  Emit the instructions instead of returning them.
23343         Iterate on new_mode rather than calculating it each time.
23344         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
23345         source to NEW_MODE and extract_low_bits to convert the shifted
23346         value to READ_MODE.
23347         (replace_read): Allow the load and store to have different mode
23348         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
23349         or extraction instructions before trying the replacement.  Update
23350         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
23351
23352 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23353
23354         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23355         to their natural alignment to avoid store forwarding stalls.
23356
23357 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23358
23359         PR target/27946
23360         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
23361         encouraging but not allowing gprs for input;
23362         change the input constraint to !f#r.
23363         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
23364         gprs for output;
23365         change the output constraint to !f#r.
23366
23367 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
23368
23369         PR target/13958
23370         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
23371         corresponding post-reload splitters.
23372         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
23373         when x87 FP math is selected.
23374         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
23375         New function prototype.
23376         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
23377         unreachable function to ease macroization of insn patterns.
23378
23379 2008-03-21  Martin Jambor  <mjambor@suse.cz>
23380
23381         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
23382         reference dumps if ddr is NULL or dependence is unknown.
23383
23384 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23385
23386         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
23387         unsigned extension into account.
23388         (ATOMIC_COMPARE_AND_SWAP): Likewise.
23389         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
23390         Do computations on a scratch register.
23391
23392 2008-03-21  Richard Guenther  <rguenther@suse.de>
23393
23394         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
23395         Use is_gimple_min_invariant instead of TREE_INVARIANT.
23396         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
23397         * tree-ssa-dom.c (record_equality): Likewise.
23398         * tree-inline.c (copy_body_r): Likewise.
23399         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
23400         TREE_INVARIANT.
23401
23402 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23403
23404         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
23405         as 'delete_unused' argument.
23406
23407 2008-03-20  Richard Guenther  <rguenther@suse.de>
23408
23409         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23410         special casing of constant qualifiers.
23411         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
23412         care about them in general.
23413         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
23414         regardless of their type.
23415         (fold_stmt_r): Forcefully fold *& if we end up with that.
23416
23417 2008-03-20  Paul Brook  <paul@codesourcery.com>
23418
23419         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
23420         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
23421         linker flags.
23422         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
23423         definition.
23424         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
23425         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
23426
23427 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
23428
23429         * common.opt (Wmudflap): New option.
23430         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
23431         (mx_register_decls): Likewise.
23432         (mudflap_finish_file): Likewise.
23433         * doc/invoke.texi: Document -Wno-mudflap.
23434
23435 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
23436
23437         * c-format.c (replace_format_name_to_system_name): New.
23438         (cmp_attribs): New.
23439         (convert_format_name_to_system_name): New.
23440         (decode_format_attr): Add use of convert_format_name_to_system_name.
23441         (format_types_orig): Add gnu_ prefix to names.
23442         (check_format_info_main): Special treating of \0 escaped names for
23443         supporting multi-character format specifiers as I32, I64.
23444         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
23445         (gnu_target_overrides_format_attributes): New.
23446         * c-format.h: Add structure target_ovr_attr to hold
23447         system specific formatter names.
23448         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
23449         msformat-c.o file to c_target_objs and cxx_target_objs.
23450         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23451         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
23452         (TARGET_N_FORMAT_TYPES): New.
23453         * config/i386/msformat-c.c: New.
23454         * config/i386/t-cygming: Add build rule for msformat-c.o.
23455         * doc/extend.texi: Add new format names gnu_* and ms_* and
23456         further details.
23457         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23458
23459 2008-03-20  Ira Rosen  <irar@il.ibm.com>
23460
23461         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
23462         optimizations turned on under -O3.
23463         (ftree-vectorize): Add that the flag is turned on with -O3.
23464
23465 2008-03-20  Ben Elliston  <bje@au.ibm.com>
23466
23467         * regmove.c (try_auto_increment): Fix spelling error in comment.
23468         * final.c (final_scan_insn): Likewise.
23469
23470 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
23471
23472         PR target/14552
23473         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
23474         allocator preferences for "y" and "r" class registers.
23475         ("*mov<mode>_internal"): Ditto.
23476         ("*movv2sf_internal_rex64"): Ditto.
23477         ("*movv2sf_internal"): Ditto.
23478
23479 2008-03-19  Michael Matz  <matz@suse.de>
23480
23481         PR middle-end/35616
23482         * calls.c (expand_call): Check overlap of arguments with call
23483         address for sibcalls.
23484
23485 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23486
23487         PR target/35496
23488         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23489         of the underlying type of a MS bitfield layout to the natural
23490         alignment of the type.
23491
23492 2008-03-19  Jan Hubicka  <jh@suse.cz>
23493
23494         PR other/35094
23495         * toplev.c (decode_d_option): Handle all CPP flags.
23496         * tree-vrp.c: Update tree_pass descriptors.
23497         * regrename.c: Update tree_pass descriptors.
23498         * fwprop.c: Update tree_pass descriptors.
23499         * doc/invoke.texi: Remove documentation of dropped -d? flags.
23500         * tree-into-ssa.c: Update tree_pass descriptors.
23501         * tree-dump.c: Update tree_pass descriptors.
23502         * tree-complex.c: Update tree_pass descriptors.
23503         * tree-dump.h: Update tree_pass descriptors.
23504         * see.c: Update tree_pass descriptors.
23505         * cgraphbuild.c: Update tree_pass descriptors.
23506         * tracer.c: Update tree_pass descriptors.
23507         * tree-loop-distribution.c: Update tree_pass descriptors.
23508         * cgraph.c: Update tree_pass descriptors.
23509         * postreload-gcse.c: Update tree_pass descriptors.
23510         * postreload.c: Update tree_pass descriptors.
23511         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
23512         * tree-tailcall.c: Update tree_pass descriptors.
23513         * tree-pass.h (tree_opt_pass): Rename to ...
23514         (opt_pass) ... this one; add "type" field and remove letter field.
23515         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
23516         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
23517         all_lowering_passes): Update declaration.
23518         * ipa-cp.c: Update tree_pass descriptors.
23519         * final.c: Update tree_pass descriptors.
23520         * omp-low.c: Update tree_pass descriptors.
23521         * tree-ssa-dse.c: Update tree_pass descriptors.
23522         * ipa-reference.c: Update tree_pass descriptors.
23523         * tree-ssa-uncprop.c: Update tree_pass descriptors.
23524         * auto-inc-dec.c: Update tree_pass descriptors.
23525         * reorg.c: Update tree_pass descriptors.
23526         * cgraphunit.c: Update tree_pass descriptors.
23527         * tree-ssa-copyrename.c: Update tree_pass descriptors.
23528         * tree-ssa-ccp.c: Update tree_pass descriptors.
23529         * df-core.c: Update tree_pass descriptors.
23530         * mode-switching.c: Update tree_pass descriptors.
23531         * tree-nomudflap.c: Update tree_pass descriptors.
23532         * modulo-sched.c: Update tree_pass descriptors.
23533         * ipa-pure-const.c: Update tree_pass descriptors.
23534         * cse.c: Update tree_pass descriptors.
23535         * web.c: Update tree_pass descriptors.
23536         * tree-stdarg.c: Update tree_pass descriptors.
23537         * tree-ssa-math-opts.c: Update tree_pass descriptors.
23538         * tree-ssa-dom.c: Update tree_pass descriptors.
23539         * tree-nrv.c: Update tree_pass descriptors.
23540         * tree-ssa-alias.c: Update tree_pass descriptors.
23541         * loop-init.c: Update tree_pass descriptors.
23542         * gimple-low.c: Update tree_pass descriptors.
23543         * ipa-inline.c: Update tree_pass descriptors.
23544         * tree-ssa-sink.c: Update tree_pass descriptors.
23545         * global.c: Update tree_pass descriptors.
23546         * ifcvt.c: Update tree_pass descriptors.
23547         * jump.c: Update tree_pass descriptors.
23548         * predict.c: Update tree_pass descriptors.
23549         * tree-ssa-loop.c: Update tree_pass descriptors.
23550         * recog.c: Update tree_pass descriptors.
23551         * dse.c: Update tree_pass descriptors.
23552         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
23553         * tree-eh.c: Update tree_pass descriptors.
23554         * regmove.c: Update tree_pass descriptors.
23555         * local-alloc.c
23556         * function.c: Update tree_pass descriptors.
23557         * tree-vectorizer.c: Update tree_pass descriptors.
23558         * gcse.c: Update tree_pass descriptors.
23559         * ipa-type-escape.c: Update tree_pass descriptors.
23560         * tree-if-conv.c: Update tree_pass descriptors.
23561         * init-regs.c: Update tree_pass descriptors.
23562         * ipa.c: Update tree_pass descriptors.
23563         * tree-ssa-phiopt.c: Update tree_pass descriptors.
23564         * rtl-factoring.c: Update tree_pass descriptors.
23565         * lower-subreg.c: Update tree_pass descriptors.
23566         * bt-load.c: Update tree_pass descriptors.
23567         * tree-dfa.c: Update tree_pass descriptors.
23568         * except.c: Update tree_pass descriptors.
23569         * emit-rtl.c: Update tree_pass descriptors.
23570         * cfgexpand.c: Update tree_pass descriptors.
23571         * tree-cfgcleanup.c: Update tree_pass descriptors.
23572         * cfgcleanup.c: Update tree_pass descriptors.
23573         * tree-ssa-pre.c: Update tree_pass descriptors.
23574         * tree-sra.c: Update tree_pass descriptors.
23575         * tree-mudflap.c: Update tree_pass descriptors.
23576         * tree-ssa-copy.c: Update tree_pass descriptors.
23577         * cfglayout.c: Update tree_pass descriptors.
23578         * tree-ssa-forwprop.c: Update tree_pass descriptors.
23579         * tree-ssa-dce.c: Update tree_pass descriptors.
23580         * tree-ssa.c: Update tree_pass descriptors.
23581         * regclass.c: Update tree_pass descriptors.
23582         * integrate.c: Update tree_pass descriptors.
23583         * tree-optimize.c: Update tree_pass descriptors.
23584         * tree-ssa-phiprop.c: Update tree_pass descriptors.
23585         * tree-object-size.c: Update tree_pass descriptors.
23586         * combine.c: Update tree_pass descriptors.
23587         * tree-outof-ssa.c: Update tree_pass descriptors.
23588         * bb-reorder.c: Update tree_pass descriptors.
23589         * stack-ptr-mod.c: Update tree_pass descriptors.
23590         * var-tracking.c: Update tree_pass descriptors.
23591         * tree-profile.c: Update tree_pass descriptors.
23592         * tree-vect-generic.c: Update tree_pass descriptors.
23593         * reg-stack.c: Update tree_pass descriptors.
23594         * sched-rgn.c: Update tree_pass descriptors.
23595         * tree-ssa-structalias.c: Update tree_pass descriptors.
23596         * tree-cfg.c: Update tree_pass descriptors.
23597         * passes.c (current_pass): Update declaration.
23598         (finish_optimization_passes): Update.
23599         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
23600         (register_one_dump_file, register_dump_files_1, next_pass_1):
23601         Update arguments.
23602         (init_optimization_passes): Update handling of new types.
23603         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
23604         * ipa-struct-reorg.c: Update tree_pass descriptors.
23605         * tree-ssa-reassoc.c: Update tree_pass descriptors.
23606         * combine-stack-adj.c: Update tree_pass descriptors.
23607         * cfgrtl.c: Update tree_pass descriptors.
23608         * dce.c: Update tree_pass descriptors.
23609         * tree-ssanames.c: Update tree_pass descriptors.
23610
23611 2008-03-19  Richard Guenther  <rguenther@suse.de>
23612
23613         PR middle-end/35609
23614         * tree-ssa.c (walk_data): New structure.
23615         (warn_uninitialized_var): If not always_executed warn with "maybe"
23616         instead of "is".
23617         (execute_early_warn_uninitialized): Compute post-dominators.
23618         Initialize always_executed before processing each basic block.
23619
23620 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
23621
23622         PR target/35504
23623         * config/i386/i386.c (x86_this_parameter): Calculate correct location
23624         of "this" pointer when "regparm = N" or "fastcall" is in effect.
23625
23626 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23627
23628         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
23629
23630 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
23631
23632         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
23633         is true.
23634         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
23635         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
23636         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
23637         target after ignore has been set, and move there also the commputation
23638         of subtarget and original_target.
23639         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
23640         (LANG_HOOKS_INITIALIZER): Remove it.
23641         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
23642
23643 2008-03-18  Richard Guenther  <rguenther@suse.de>
23644
23645         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
23646         found an expression with constants, note that in the VN for the lhs.
23647         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
23648         fold them to constants if possible.  Run cleanup_cfg if done so.
23649         (execute_pre): Return todo.
23650         (do_pre): Likewise.
23651         (execute_fre): Likewise.
23652         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
23653         of constants.
23654         (get_prop_source_stmt): Look through pointer conversions.
23655
23656 2008-03-18  Jan Hubicka  <jh@suse.cz>
23657
23658         * tree-pretty-print.c: Include predict.h.
23659         (dump_generic_node): Dump predictor.
23660         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
23661         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
23662         * gimple-low.c (lower_stmt): Likewise.
23663         * expr.c (expand_expr_real): Likewise.
23664         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
23665         them.
23666         (build_predict_expr, build_predict_expr): New.
23667         * predict.h (predictor_name, build_predict_expr): Update.
23668         * c-typeck.c (c_finish_bc_stmt): Add prediction.
23669         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
23670         * predict.def (PRED_CONTINUE): Update hitrate.
23671         * tree.def (PREDICT_EXPR): Define.
23672         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
23673         do not handle BIND_EXPR.
23674         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
23675         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
23676         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
23677         operands.
23678
23679 2008-03-18  Michael Matz  <matz@suse.de>
23680
23681         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
23682
23683 2008-03-18  Richard Guenther  <rguenther@suse.de>
23684
23685         * tree-gimple.h (is_gimple_invariant_address): Declare.
23686         (is_gimple_constant): Likewise.
23687         * tree-gimple.c (is_gimple_constant): New function.
23688         (is_gimple_invariant_address): Likewise.
23689         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
23690         and is_gimple_invariant_address.
23691         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
23692         previous change.
23693         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
23694         an addressable base.
23695
23696 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
23697
23698         PR middle-end/35611
23699         * gimplify.c (gimplify_expr): Gimplify second operand of
23700         OMP_ATOMIC_LOAD.
23701
23702 2008-03-17  Richard Guenther  <rguenther@suse.de>
23703
23704         PR tree-optimization/19637
23705         * fold-const.c (fold_unary): Remove restrictions of removing
23706         intermediate pointer-conversions (P2)(P1)P0.
23707         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
23708         conversion to void pointer.
23709         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
23710
23711 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
23712
23713         PR debug/31510
23714         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
23715         emulated thread local variables.
23716
23717 2008-03-16  Richard Guenther  <rguenther@suse.de>
23718
23719         PR middle-end/35607
23720         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
23721         expand TREE_INVARIANT operations that are not gimple invariant.
23722
23723 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
23724
23725         * doc/extend.texi (Alignment): Say that the ABI controls
23726         the __alignof__ for non-strict-alignment targets rather
23727         than being a recommendation.
23728
23729 2008-03-15  Paul Brook  <paul@codesourcery.com>
23730
23731         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
23732         annotations.
23733         (arm_output_fn_unwind): Mark functions that can not be unwound.
23734
23735 2008-03-15  Paul Brook  <paul@codesourcery.com>
23736
23737         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
23738         extension instructions.
23739
23740 2008-03-15  Richard Guenther  <rguenther@suse.de>
23741
23742         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
23743         and fold constant aggregate refs.
23744         (fold_const_aggregate_ref): Handle string constants
23745         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
23746         (evaluate_stmt): Simplify now that ccp_fold folds constant
23747         aggregate refs.
23748
23749 2008-03-15  Paul Brook  <paul@codesourcery.com>
23750
23751         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
23752         (extzv): Use gen_extzv_t2.
23753         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
23754
23755 2008-03-15  Richard Guenther  <rguenther@suse.de>
23756
23757         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
23758         (fold_const_aggregate_ref): Likewise.
23759         (get_value): Return NULL if we don't have any values.
23760         (ccp_finalize): Set const_val to NULL after freeing it.
23761         * tree-flow.h (get_symbol_constant_value): Declare.
23762         (fold_const_aggregate_ref): Likewise.
23763         * tree-ssa-sccvn.c (try_to_simplify): Use them.
23764
23765 2008-03-15  Richard Guenther  <rguenther@suse.de>
23766
23767         PR middle-end/35593
23768         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
23769         to not produce negative array indices if not allowed.  Add
23770         parameter to indicate that.
23771         (maybe_fold_offset_to_component_ref): Allow negative array
23772         indices only for the first member of a structure.
23773         (maybe_fold_offset_to_reference): Allow negative array indices.
23774         (maybe_fold_stmt_addition): Likewise.
23775
23776 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
23777             Anatoly Sokolov <aesok@post.ru>
23778
23779         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
23780         (avr_arch): Add ARCH_AVR6.
23781         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
23782         (initial_elimination_offset): Initialize and use 'avr_pc_size'
23783         instead of fixed value 2.
23784         (print_operand_address): Use gs() asm specifier instead of pm().
23785         (avr_assemble_integer): (Ditto.).
23786         (avr_output_addr_vec_elt): (Ditto.).
23787         (print_operand): Handle "!" code.
23788         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
23789         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
23790         (AVR_HAVE_EIJMP_EICALL): Define.
23791         (AVR_3_BYTE_PC): Redefine.
23792         (AVR_2_BYTE_PC): (Ditto.).
23793         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
23794         (LINK_SPEC): Add atmega2560 and atmega2561.
23795         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
23796         (crtm2561.o).
23797         * config/avr/avr.md (call_insn): Use eicall instead of icall
23798         for 3 byte PC devices.
23799         (call_value_insn): (Ditto.).
23800         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
23801         (indirect_jump): Use only for for 2 byte PC devices.
23802         (*tablejump): (Ditto.).
23803         (*indirect_jump_avr6): Add insn.
23804         (*tablejump_rjmp): Don't use for 3 byte PC devices.
23805         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
23806         instead of ijmp for 3 byte PC devices.
23807         (__tablejump2__): (Ditto.).
23808         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
23809         (MULITLIB_DIRNAMES): (Ditto.).
23810         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
23811
23812 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
23813
23814         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
23815         "sse2_umulsidi3".  Use V1DI mode for operand 0.
23816         ("mmx_psadbw"): Use V1DI mode for operand 0.
23817         * config/i386/i386-modes.def (V1SI): New vector mode.
23818         * config/i386/i386.c (struct builtin_description)
23819         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
23820         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
23821         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
23822         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
23823         v1di_ftype_v8qi_v8qi type.
23824         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
23825
23826         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
23827         __builtin_ia32_pmuludq]: Fix the mode of return value.
23828
23829 2008-03-15  Richard Guenther  <rguenther@suse.de>
23830
23831         PR middle-end/35595
23832         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
23833         being a PHI_NODE.
23834
23835 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
23836
23837         * doc/invoke.texi (Option Summary, Xtensa Options): Document
23838         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
23839         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
23840         unless TARGET_SERIALIZE_VOLATILE is enabled.
23841         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
23842         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
23843         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
23844
23845 2008-03-14  Richard Guenther  <rguenther@suse.de>
23846
23847         PR tree-optimization/34172
23848         * tree-flow.h (refs_may_alias_p): Declare.
23849         (get_single_def_stmt): Likewise.
23850         (get_single_def_stmt_from_phi): Likewise.
23851         (get_single_def_stmt_with_phi): Likewise.
23852         * tree-dfa.c (refs_may_alias_p): New function.
23853         (get_single_def_stmt): Likewise.
23854         (get_single_def_stmt_from_phi): Likewise.
23855         (get_single_def_stmt_with_phi): Likewise.
23856         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
23857         (vn_reference_lookup_1): New helper function.
23858         (vn_reference_lookup): Walk the virtual use-def chain to
23859         continue searching for a match if the def does not alias the
23860         reference we are looking for.
23861
23862 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
23863
23864         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
23865         archive and Perzl.  Update The Written Word listing.
23866
23867 2008-03-14  Richard Guenther  <rguenther@suse.de>
23868
23869         PR tree-optimization/34043
23870         PR tree-optimization/33989
23871         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
23872         when doing FRE.
23873         (bitmap_find_leader): Use extra argument to verify dominance
23874         relationship inside a basic-block.
23875         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
23876         (find_leader_in_sets): Adjust.
23877         (create_component_ref_by_pieces): Take extra argument for
23878         dominance check, handle lookup failures.
23879         (find_or_generate_expression): Likewise.
23880         (create_expression_by_pieces): Likewise.
23881         (insert_into_preds_of_block): Adjust.
23882         (create_value_expr_from): If asked for, verify all operands
23883         are in the blocks AVAIL_OUT set.
23884         (make_values_for_stmt): Check for SSA_NAMEs that are life
23885         over an abnormal edge.
23886         (compute_avail): Remove such check.
23887         (do_SCCVN_insertion): New function.
23888         (eliminate): If we do not find a leader suitable for replacement
23889         insert a replacement expression from SCCVN if available.
23890         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
23891         (struct vn_ssa_aux): Add needs_insertion flag.
23892         * tree-ssa-sccvn.c (may_insert): New global flag.
23893         (copy_reference_ops_from_ref): Value-number union member access
23894         based on its size, not type and member if insertion is allowed.
23895         (visit_reference_op_load): For a weak match from union type
23896         punning lookup a view-converted value and insert a SSA_NAME
23897         for that value if that is not found.
23898         (visit_use): Make dumps shorter.  Do not disallow value numbering
23899         SSA_NAMEs that are life over an abnormal edge to constants.
23900         (free_scc_vn): Release inserted SSA_NAMEs.
23901         (run_scc_vn): New flag to specify whether insertion is allowed.
23902         Process SSA_NAMEs in forward order.
23903         * tree-ssa-loop-im.c (for_each_index): Handle invariant
23904         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
23905         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
23906         pointer type to/from integral types that do not change the
23907         precision to regular conversions.
23908
23909 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23910
23911         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23912         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23913         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
23914         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
23915         input arguments and the mode of return value.  Built-in functions
23916         that operate on whole 64-bit MMX register now use V1DI mode.
23917
23918 2008-03-13  Alon Dayan  <alond@il.ibm.com>
23919             Olga Golovanevsky  <olga@il.ibm.com>
23920
23921         PR tree-optimization/35041
23922         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
23923         to locate the right position in a statement.
23924
23925 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23926
23927         PR target/34000
23928         PR target/35553
23929         * config/i386/xmmintrin.h:  Change all static inline functions to
23930         extern inline and add __gnu_inline__ attribute.
23931         * config/i386/bmintrin.h: Ditto.
23932         * config/i386/smmintrin.h: Ditto.
23933         * config/i386/tmmintrin.h: Ditto.
23934         * config/i386/mmintrin-common.h: Ditto.
23935         * config/i386/ammintrin.h: Ditto.
23936         * config/i386/emmintrin.h: Ditto.
23937         * config/i386/pmmintrin.h: Ditto.
23938         * config/i386/mmintrin.h: Ditto.
23939         * config/i386/mm3dnow.h: Ditto.
23940
23941 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
23942
23943         PR middle-end/35185
23944         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
23945         (lower_omp_2): New function.
23946         (lower_omp_1, lower_omp): Rewritten.
23947
23948 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
23949
23950         PR 35054
23951         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
23952         with the phrase "Microsoft Windows compilers".
23953         (Push/Pop Macro Pragmas): New subsection. Document
23954         #pragma push_macro and pragma pop_macro.
23955
23956 2008-03-12  Paul Brook  <paul@codesourcery.com>
23957
23958         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
23959
23960 2008-03-12  Paul Brook  <paul@codesourcery.com>
23961
23962         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
23963         (thumb2_alusi3_short): Exclude PLUS and MINUS.
23964         (thumb2_addsi_shortim): Rename ...
23965         (thumb2_addsi_short): ... to this.  Allow register operands.
23966         (thumb2_subsi_short): New pattern.
23967         (thumb2_one_cmplsi2_short,
23968         thumb2_negsi2_short): New patterns and peepholes.
23969
23970 2008-03-12  Paul Brook  <paul@codesourcery.com>
23971
23972         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
23973
23974 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
23975
23976         * config/i386/i386.md (int_cond): New code iterator.
23977         (fp_cond): Ditto.
23978         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
23979         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
23980         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
23981         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
23982         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
23983         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
23984         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
23985         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
23986
23987 2008-03-12  Paul Brook  <paul@codesourcery.com>
23988
23989         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
23990         instead of {arm,thumb}_compute_save_reg_mask.
23991         (output_return_instruction): Ditto.
23992         (thumb_unexpanded_epilogue): Ditto.
23993         (thumb1_expand_prologue): Ditto.
23994         (thumb1_output_function_prologue): Ditto.
23995         (arm_set_return_address): Ditto.
23996         (thumb_set_return_address): Ditto.
23997         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
23998         regs to achieve stack alignment.
23999         (thumb1_compute_save_reg_mask): Fix compiler warning.
24000         (arm_output_epilogue): Use offsets->saved_regs_mask.
24001         Adjust stack pointer by poping call clobered registers.
24002         (arm_expand_prologue): Use offsets->saved_regs_mask.
24003         Adjust stack pointer by pushing extra registers.
24004         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
24005
24006 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
24007
24008         PR tree-opt/35422
24009         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
24010         conversion to the operands of a multiplication.
24011
24012 2008-03-12  Richard Guenther  <rguenther@suse.de>
24013
24014         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
24015         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
24016         * timevar.def (TV_TREE_PHIPROP): Add.
24017         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
24018         pass description.  Use TV_TREE_PHIPROP.
24019         * tree-ssa-forwprop.c: Remove phiprop code.
24020
24021 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
24022
24023         PR middle-end/35549
24024         * omp-low.c (maybe_lookup_decl): Constify first argument.
24025         (use_pointer_for_field): Change last argument from bool to
24026         omp_context *.  Disallow shared copy-in/out in nested
24027         parallel if decl is shared in outer parallel too.
24028         (build_outer_var_ref, scan_sharing_clauses,
24029         lower_rec_input_clauses, lower_copyprivate_clauses,
24030         lower_send_clauses, lower_send_shared_vars): Adjust callers.
24031
24032 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
24033             Ira Rosen  <irar@il.ibm.com>
24034
24035         * tree-vectorizer.c (free_stmt_vec_info): New function.
24036         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
24037         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
24038         * tree-vectorizer.h (free_stmt_vec_info): Declare.
24039         * tree-vect-transform.c (vectorizable_conversion): Free
24040         vec_oprnds0 if it was allocated.
24041         (vect_permute_store_chain): Remove unused VECs.
24042         (vectorizable_store): Free VECs that are allocated in the..
24043         function.
24044         (vect_transform_strided_load, vectorizable_load): Likewise.
24045         (vect_remove_stores): Simplify the code.
24046         (vect_transform_loop): Move code to vect_remove_stores().
24047         Call vect_remove_stores() and free_stmt_vec_info().
24048
24049 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24050
24051         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
24052         TARGET_HPUX.  Revise comment.
24053         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
24054         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
24055         Use sr4 variant of `be' instruction when not generating PIC code.
24056         (attr_length_call): Adjust for above change.
24057
24058 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24059
24060         * ipa-reference.c (static_execute): Remove module_statics_const and
24061         associated setting code.
24062
24063 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24064
24065         PR target/35540
24066         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
24067         predicate for operand 1.
24068         (paritysi2_cmp): Use register_operand predicate for operand 2.
24069         Use earlyclobber modifier for operand 1.  Remove support for
24070         memory operands.
24071         (paritydi2_cmp): Use register_operand predicate for operand 3.
24072         Use earlyclobber modifier for operand 1.  Remove support for
24073         memory operands.
24074
24075 2008-03-11  Paul Brook  <paul@codesourcery.com>
24076             Vladimir Prus  <vladimir@codesourcery.com>
24077
24078         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
24079         (arm_compute_save_reg0_reg12_mask): Always
24080         check if register 11 must be saved.  Always safe hard frame pointer
24081         when frame_pointer_needeed.
24082         (arm_compute_save_reg_mask): Save IP and PC
24083         only with apcs frames.
24084         (arm_output_epilogue): Adjust Thumb2 codepath to
24085         be also invoked and work for ARM non-apcs frames.
24086         (arm_expand_prologue): Don't bother saving IP
24087         for non-apcs frame, since it's not clobbered by
24088         prologue code.  Implement non-apcs frame
24089         layout.
24090
24091 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24092
24093         PR rtl-optimization/35281
24094         * expr.c (convert_move): Use a new pseudo for the intermediate
24095         from_mode->word_mode result.
24096
24097 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24098
24099         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
24100         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
24101         * toplev.c (compile_file): Don't call it.
24102
24103 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24104
24105         PR middle-end/35526
24106         * expr.c (store_expr): Call emit_block_move if the mode
24107         of "temp" RTX is BLKmode.
24108
24109 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24110             Richard Guenther  <rguenther@suse.de>
24111
24112         PR tree-optimization/31358
24113         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
24114         the step with a NULL_TREE.
24115         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
24116         to sizetype if type is a pointer type.
24117         (add_candidate_1): Don't convert the base and step to
24118         the generic type if the orginal type is a pointer type.
24119         (add_iv_value_candidates): Use sizetype for the step
24120         if type is a pointer type.
24121         (cand_value_at): Likewise.
24122         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
24123         for pointer types.
24124         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
24125         Don't convert the tem affine to the type.
24126         (add_elt_to_tree): Use sizetype for the step if a pointer.
24127         Use POINTER_PLUS_EXPR for pointers.
24128         (aff_combination_to_tree): Use sizetype for the step if a
24129         pointer.
24130
24131 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
24132
24133         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
24134         Remove commutativity hint.
24135
24136 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
24137
24138         PR c/35438
24139         PR c/35439
24140         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
24141         errorneous type.  Check that v is a VAR_DECL.
24142
24143         PR middle-end/35099
24144         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
24145
24146 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
24147
24148         PR tree-optimization/35494
24149         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
24150         may be overriden at link and run time.
24151
24152 2008-03-10  Richard Guenther  <rguenther@suse.de>
24153
24154         PR tree-optimization/34677
24155         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
24156         (poolify_tree): Likewise.
24157         (modify_expr_template): Likewise.
24158         (poolify_modify_stmt): Likewise.
24159         (insert_fake_stores): Handle all component-ref style stores
24160         in addition to INDIRECT_REF.  Also handle complex types.
24161         Do not poolify the inserted load.
24162         (realify_fake_stores): Do not rebuild the tree but only
24163         make it a SSA_NAME copy.
24164         (init_pre): Remove initialzation of modify_expr_template.
24165         Do not allocate modify_expr_node_pool.
24166         (fini_pre): Do not free modify_expr_node_pool.
24167
24168 2008-03-10  Paul Brook  <paul@codesourcery.com>
24169
24170         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
24171         to avoid conflicts.
24172
24173 2008-03-10  Paul Brook  <paul@codesourcery.com>
24174             Mark Shinwell  <shinwell@codesourcery.com>
24175
24176         * config/arm/cortex-r4.md: New.
24177         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
24178         insn attributes.
24179         * config/arm/arm.md: Include cortex-r4.md.
24180         (insn): Add smmls, sdiv and udiv values.
24181         (generic_sched): Don't use generic scheduling for Cortex-R4.
24182         (arm_issue_rate): New function.
24183         (TARGET_SCHED_ISSUE_RATE): Define.
24184
24185 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
24186
24187         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
24188
24189 2008-03-10  Richard Guenther  <rguenther@suse.de>
24190
24191         * tree-ssa-pre.c (get_sccvn_value): Simplify.
24192         (compute_avail): Do not add stmt uses to AVAIL_OUT.
24193
24194 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
24195
24196         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
24197         Set default to true.
24198
24199 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24200
24201         * c.opt (Wsynth): Deprecate.
24202         * doc/invoke.texi (Option Summary, Warning Options): Document
24203         -Wno-format-contains-nul.
24204
24205 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
24206
24207         PR target/35496
24208         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
24209         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
24210
24211 2008-03-09  Ira Rosen  <irar@il.ibm.com>
24212
24213         * config/rs6000/rs6000.c (builtin_description): Rename vector
24214         left shift operations.
24215         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
24216         (altivec_vsl<VI_char>): Rename to ...
24217         (ashl<mode>3): ... new name.
24218         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
24219         gen_ashlv4si3.
24220         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
24221
24222 2008-03-08  Richard Guenther  <rguenther@suse.de>
24223
24224         * coverage.h (tree_coverage_counter_addr): Declare.
24225         * coverage.c (tree_coverage_counter_addr): New function.
24226         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
24227         before using again.
24228         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
24229         (tree_gen_one_value_profiler): Likewise.
24230         (tree_gen_ic_profiler): Likewise.
24231         (tree_gen_average_profiler): Likewise.
24232         (tree_gen_ior_profiler): Likewise.
24233
24234 2008-03-08  Richard Guenther  <rguenther@suse.de>
24235
24236         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
24237         (vn_binary_op_insert): Likewise.
24238         (vn_unary_op_lookup): Likewise.
24239         (vn_unary_op_insert): Likewise.
24240         (vn_nary_op_lookup): Declare.
24241         (vn_nary_op_insert): Likewise.
24242         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
24243         and binary hashes, use a single obstack for unary_op_pool
24244         and binary_op_pool.
24245         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
24246         a single struct vn_nary_op_s.  Store tree code length and
24247         a variable number of operands.
24248         (struct vn_reference_op_struct): Remove unused op2.
24249         (vn_reference_op_eq): Do not compare op2.
24250         (vn_reference_op_compute_hash): Do not compute hash of op2.
24251         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
24252         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
24253         with vn_nary_op_compute_hash.
24254         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
24255         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
24256         vn_nary_op_lookup.
24257         (vn_unary_op_insert, vn_binary_op_insert): Replace with
24258         vn_nary_op_insert.
24259         (visit_unary_op): Call nary functions.
24260         (visit_binary_op): Likewise.
24261         (process_scc): Adjust for struct vn_tables_s changes.
24262         (allocate_vn_table): Likewise.
24263         (free_vn_table): Likewise.
24264         * tree-vn.c (vn_add): Call nary functions.
24265         (vn_lookup): Likewise.
24266
24267 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
24268
24269         PR target/35498
24270         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
24271         wdst back after sync_compare_and_swapqhi_internal.
24272
24273 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
24274
24275         PR target/22152
24276         * config/i386/i386-modes.def (V1DI): New vector mode.
24277         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
24278         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
24279         (MMXMODE248): Ditto.
24280         (MMXMODE): Add V1DI mode.
24281         (mmxvecsize): Change DI mode to V1DI mode.
24282         ("mov<mode>): Use MMXMODEI8 mode iterator.
24283         ("*mov<mode>_internal_rex64"): Ditto.
24284         ("*mov<mode>_internal"): Ditto.
24285         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
24286         ("mmx_sub<mode>3"): Ditto.
24287         ("mmx_adddi3"): Remove insn pattern.
24288         ("mmx_subdi3"): Ditto.
24289         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
24290         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
24291         ("mmx_ashl<mode>3"): Ditto.
24292         ("mmx_lshrdi3"): Remove insn pattern.
24293         ("mmx_ashldi3"): Ditto.
24294         * config/i386/i386.c (classify_argument): Handle V1DImode.
24295         (function_arg_advance_32): Ditto.
24296         (function_arg_32): Ditto.
24297         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
24298         mmx_addv1di3 insn pattern.
24299         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
24300         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
24301         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
24302         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
24303         Remove definitions of built-in functions.
24304         (V1DI_type_node): New node.
24305         (v1di_ftype_v1di_int): Ditto.
24306         (v1di_ftype_v1di_v1di): Ditto.
24307         (v2si_ftype_v2si_si): Ditto.
24308         (v4hi_ftype_v4hi_di): Remove node.
24309         (v2si_ftype_v2si_di): Ditto.
24310         (ix86_init_mmx_sse_builtins): Handle V1DImode.
24311         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
24312         Redefine builtins using def_builtin_const with *_ftype_*_int node.
24313         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
24314         Add new builtins using def_builtin_const.
24315         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
24316         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
24317         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
24318         * config/i386/mmintrin.h (__v1di): New typedef.
24319         (_mm_add_si64): Cast arguments to __v1di type.
24320         (_mm_sub_si64): Ditto.
24321         (_mm_sll_pi16): Cast __count to __v4hi type.
24322         (_mm_sll_pi32): Cast __count to __v2si type.
24323         (_mm_sll_si64): Cast arguments to __v1di type.
24324         (_mm_srl_pi16): Cast __count to __v4hi type.
24325         (_mm_srl_pi32): Cast __count to __v2si type.
24326         (_mm_srl_si64): Cast arguments to __v1di type.
24327         (_mm_sra_pi16): Cast __count to __v4hi type.
24328         (_mm_sra_pi32): Cast __count to __v2si type.
24329         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
24330         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
24331         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
24332         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
24333         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
24334         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
24335         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
24336         (_mm_srai_pi32): Use __builtin_ia32_psradi.
24337         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
24338         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24339         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24340         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
24341
24342 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
24343
24344         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
24345
24346 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
24347
24348         PR target/35373
24349         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
24350         reg+const addressing for Altivec modes.  Don't generate reg+reg
24351         addressing for TFmode or TDmode quantities.
24352
24353 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
24354
24355         * c-common.c (vector_types_convertible_p): Call langhook
24356         instead of comptypes.
24357
24358 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24359
24360         PR tree-opt/35402
24361         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
24362         integral and scalar float variables which have a
24363         NULL DECL_INITIAL.
24364
24365 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
24366
24367         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
24368         dwarf_register_span hook when emitting unwind information for
24369         register-to-memory saves.
24370         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
24371         (rs6000_frame_related): Remove call to spe_synthesize_frame.
24372
24373 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
24374
24375         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
24376         for the same VAR_DECL.
24377
24378 2008-03-06  Tom Tromey  <tromey@redhat.com>
24379
24380         * treelang: Delete.
24381         * doc/standards.texi (Standards): Don't mention treelang.
24382         * doc/invoke.texi (Overall Options): Don't mention treelang.
24383         * doc/install.texi (Prerequisites): Don't mention bison or
24384         treelang.
24385         (Configuration): Don't mention treelang.
24386         (Building): Likewise.
24387         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
24388
24389 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
24390
24391         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
24392         word-extractions out of a multi-word object.
24393
24394 2008-03-06  Richard Guenther  <rguenther@suse.de>
24395
24396         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
24397         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
24398         result type and precision.
24399         * expr.c (get_inner_reference): Set unsignedp based on the result
24400         type of BIT_FIELD_REF.
24401         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
24402         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
24403         (try_instantiate_multiple_fields): Likewise.  Use the correct type
24404         for BIT_FIELD_REF.
24405         (sra_build_assignment): Likewise.
24406         (sra_build_elt_assignment): Likewise.
24407         (sra_explode_bitfield_assignment): Likewise.
24408         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
24409         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
24410         set BIT_FIELD_REF_UNSIGNED.
24411         (vectorizable_load): Likewise.
24412
24413 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
24414
24415         * cse.c (cse_extended_basic_block): Invalidate artificial defs
24416         at bb start.
24417
24418 2008-03-06  Richard Guenther  <rguenther@suse.de>
24419
24420         * alias.c (struct alias_set_entry): Move has_zero_child field
24421         to pack with alias_set.
24422
24423 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
24424
24425         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24426         32bit host.
24427
24428 2008-03-05  Ian Lance Taylor  <iant@google.com>
24429
24430         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
24431
24432 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
24433
24434         * fwprop.c (update_df): Support width and offset parameters of
24435         df_ref_create.
24436         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
24437         global_conflicts): Change DF_REF_EXTRACT to either
24438         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24439         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24440         * df-scan.c (df_ref_record, df_defs_record,
24441         df_ref_create_structure, df_def_record_1, df_uses_record,
24442         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
24443         df_bb_refs_collect, df_entry_block_defs_collect,
24444         df_exit_block_uses_collect): Support new width and offset fields.
24445         (ref_extract_pool): New storage pool.
24446         (df_free_ref): New function.
24447         (df_reg_chain_unlink, df_free_collection_rec,
24448         df_sort_and_compress_refs): Call df_free_ref.
24449         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
24450         of df_ref_extract.
24451         (df_ref_create_structure): Allocate df_ref_extract if offset and
24452         width fields are used.
24453         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
24454         (df_uses_record): Get offset and width from ZERO_EXTRACT
24455         and SIGN_EXTRACT.
24456         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
24457         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24458         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24459         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
24460         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24461         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24462         (df_ref_extract): New structure.
24463         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
24464         (df_ref_create): Add width and offset parameters.
24465
24466 2008-03-05  Richard Guenther  <rguenther@suse.de>
24467
24468         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24469         Use ranges_overlap_p.
24470         (offset_overlaps_with_access): Rename
24471         to ranges_overlap_p and move ...
24472         * tree-flow-inline.h (ranges_overlap_p): ... here.
24473
24474         * tree.h (get_inner_reference, handled_component_p): Update
24475         comments.
24476
24477         * tree.h (record_component_aliases, get_alias_set,
24478         alias_sets_conflict_p, alias_sets_must_conflict_p,
24479         objects_must_conflict_p): Move declarations ...
24480         * alias.h (record_component_aliases, get_alias_set,
24481         alias_sets_conflict_p, alias_sets_must_conflict_p,
24482         objects_must_conflict_p): ... here.
24483         Include coretypes.h.
24484         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
24485
24486 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
24487
24488         * cfg.c: Include tree-flow.h.
24489         (remove_edge_raw): Call redirect_edge_var_map_clear.
24490         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
24491         * tree-flow-inline.h (redirect_edge_var_map_def): New.
24492         (redirect_edge_var_map_result): New.
24493         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
24494         PENDING_STMT use with redirect_edge_var_map_*.
24495         * tree-ssa.c (edge_var_maps): New definition.
24496         (redirect_edge_var_map_add): New.
24497         (redirect_edge_var_map_clear): New.
24498         (redirect_edge_var_map_dup): New.
24499         (redirect_edge_var_map_vector): New.
24500         (redirect_edge_var_map_destroy): New.
24501         (ssa_redirect_edge): Replace PENDING_STMT use with
24502         redirect_edge_var_map_*.
24503         (flush_pending_stmts): Same.
24504         (delete_tree_ssa): Destroy edge var map.
24505         * tree-flow.h (struct _edge_var_map): New.
24506         Define edge_var_map vector type.
24507         Declare redirect_edge_var_map_* prototypes.
24508         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
24509         * tree-cfg.c (reinstall_phi_args): Replace
24510         PENDING_STMT use with redirect_edge_var_map_*.
24511
24512 2008-03-05  Richard Guenther  <rguenther@suse.de>
24513
24514         PR tree-optimization/35472
24515         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
24516         whose single use_stmt has a overlapping set of loaded and
24517         stored symbols as that use_stmt might be a noop assignment then.
24518
24519 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
24520
24521         * gthr-rtems.h: Implement __gthread_mutex_destroy.
24522
24523 2008-03-05  Richard Guenther  <rguenther@suse.de>
24524
24525         PR c++/35336
24526         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
24527         should be constants.
24528         * tree-cfg.c (verify_expr): Verify it.
24529         * fold-const.c (fold_truthop): Remove code generating
24530         BIT_FIELD_REFs of structure bases.
24531         (fold_binary): Likewise.
24532         (fold_ternary): Position and size of BIT_FIELD_REFs are
24533         always host integers.
24534         (make_bit_field_ref): Remove.
24535         (optimize_bit_field_compare): Remove.
24536         (all_ones_mask_p): Remove.
24537
24538 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
24539
24540         PR gcc/33009
24541         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
24542         (split_block_and_df_analyze): New. Split basic block and rebuild
24543         dataflow.
24544         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
24545         SPLIT_BLOCK.
24546         (split_pattern_seq): Likewise.
24547         (erase_matching_seqs): Likewise.
24548         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
24549
24550 2008-03-04  Geoff Keating  <geoffk@apple.com>
24551
24552         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
24553         declaration and code.
24554         (tree_invalid_nonnegative_warnv_p): Likewise.
24555
24556 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
24557
24558         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
24559         examples.  Truncate option-names then causing overfull hbox.
24560
24561 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24562
24563         PR target/35222
24564         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
24565         on hpux10.
24566         * configure: Rebuilt.
24567
24568 2008-03-04  Rafael Espíndola  <espindola@google.com>
24569
24570         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
24571         (tree_unary_nonnegative_warnv_p): New.
24572         (tree_binary_nonnegative_warnv_p): New.
24573         (tree_single_nonnegative_warnv_p): New.
24574         (tree_invalid_nonnegative_warnv_p): New.
24575         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
24576
24577 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24578
24579         PR 28322
24580         * opts.c (handle_option): Postpone 'unknown option' errors only for
24581         warning options.
24582
24583 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
24584
24585         PR target/35453
24586         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
24587         (_SIDD_XXX): This.
24588
24589 2008-03-04  Rafael Espíndola  <espindola@google.com>
24590
24591         * fold-const.c (tree_unary_nonzero_warnv_p): New.
24592         (tree_binary_nonzero_warnv_p): New.
24593         (tree_single_nonzero_warnv_p): New.
24594         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
24595
24596 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
24597
24598         PR middle-end/35456
24599         * fold-const.c (fold_cond_expr_with_comparison): Prevent
24600         transformations for modes that have signed zeros.
24601         * ifcvt.c (noce_try_abs): Ditto.
24602
24603 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
24604
24605         * config/i386/i386.c (override_options): Force
24606         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
24607
24608 2008-03-04  Jan Hubicka  <jh@suse.cz>
24609
24610         PR c++/35262
24611         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
24612         in last commit.
24613
24614 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24615
24616         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
24617         label to probe the stack.
24618
24619 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24620
24621         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
24622         (__gthr_win32_mutex_destroy): Declare.
24623         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
24624         __gthr_win32_mutex_destroy.
24625         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
24626
24627 2008-03-03  Jan Hubicka  <jh@suse.cz>
24628
24629         PR c++/35262
24630         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
24631         aggressive on inlining cold calls.
24632
24633 2008-03-03  Richard Guenther  <rguenther@suse.de>
24634
24635         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
24636         struct copies into the expression table.
24637         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
24638         (try_to_simplify): Likewise.
24639         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
24640         integral and pointer arguments which do not change the
24641         precision to NOP_EXPRs.
24642         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
24643         VIEW_CONVERT_EXPR case.
24644
24645 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24646
24647         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
24648         defined in a loop at depth 0 is invariant.
24649         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
24650         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
24651         be called at loop depth 0.
24652
24653 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
24654
24655         PR driver/35420
24656         * gcc.c (process_command): Update copyright notice dates.
24657         * gcov.c (print_version): Likewise.
24658         * gcov-dump.c (print_version): Likewise.
24659         * mips-tfile.c (main): Likewise.
24660         * mips-tdump.c (main): Likewise.
24661
24662 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24663
24664         PR 24924
24665         * c-common.c (flag_permissive): Delete.
24666         (constant_expression_warnings): Check flags first.
24667         (constant_expression_error): New.
24668         * c-common.h (flag_permissive): Delete.
24669         (constant_expression_error): Declare.
24670         * flags.h (flag_permissive): Declare. Update description.
24671         * diagnostic.c (pedwarn): Update.
24672         (permerror): New.
24673         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
24674         (permissive_error_kind): New.
24675         * toplev.c (flag_permissive): Define. Update description.
24676         * toplev.h (permissive_error_kind): Declare.
24677         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
24678         (pedwarn_c90): Use pedantic_warning_kind.
24679         * c-opts.c (c_common_post_options): flag_permissive does not affect
24680         flag_pedantic_errors.
24681
24682 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
24683
24684         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
24685         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
24686         __absvsi2, __absvDI2): Use unsigned arithmetic.
24687
24688 2008-03-02  Andi Kleen  <ak@suse.de>
24689             Richard Guenther  <rguenther@suse.de>
24690
24691         * struct-equiv.c: Remove file.
24692         * cfg_cleanup.c (condjump_equiv_p): Remove.
24693         * Makefile.in (OBJS-common): Remove struct-equiv.o.
24694         (struct-equiv.o): Remove rule.
24695         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
24696         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
24697         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
24698
24699 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24700
24701         * ifcvt.c (noce_process_if_block): Try to handle only the then
24702         block if the else block exists but isn't suitable.
24703
24704 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24705
24706         PR gcc/35063
24707         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
24708         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
24709         regression from previous patch.
24710
24711 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24712
24713         PR gcc/35063
24714         * gthr.h: Add __gthread_mutex_destroy as a function that must be
24715         implemented.
24716         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
24717         * gthr-single.h (__gthread_mutex_destroy): Likewise.
24718         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
24719         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
24720         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
24721         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
24722         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
24723         (__gthread_mutex_destroy_function): Rename to
24724         __gthread_mutex_destroy.
24725         * gthr-dce.h (__gthread_mutex_destroy): Call
24726         pthread_mutex_destroy.
24727         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
24728         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
24729         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
24730
24731 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24732
24733         * df-scan.c (df_ref_chain_change_bb): Simplify.
24734         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
24735         set_block_for_insn if there's any change.
24736         * df.h ((df_insn_change_bb): Fix prototype.
24737         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
24738         df_insn_change_bb, don't call set_block_for_insn.
24739         * emit-rtl.c (reorder_insns): Likewise.
24740         * haifa-sched.c (move_insn): Likewise.
24741
24742 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24743
24744         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
24745
24746 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24747
24748         * tree-flow-inline.h (next_readonly_imm_use): Return
24749         NULL_USE_OPERAND_P after the end.
24750
24751 2008-03-01  Richard Guenther  <rguenther@suse.de>
24752
24753         PR tree-optimization/35411
24754         * tree-sra.c (sra_build_assignment): Split conversion to
24755         final type to a separate statement if we are not assigning
24756         to a register.
24757
24758 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24759
24760         * fold-const.c (fold_convertible_p): Correct the logic to follow
24761         that in fold_convert().
24762
24763 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
24764
24765         PR c++/35315
24766         * tree-inline.c (build_duplicate_type): When we make a
24767         duplicate type, make it unique in the canonical types system.
24768
24769 2008-02-29  Tom Tromey  <tromey@redhat.com>
24770
24771         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
24772         input_file_stack_history, input_file_stack_restored): Remove.
24773         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24774         * input.h (struct file_stack): Remove.
24775         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24776         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
24777         Likewise.
24778         * diagnostic.h (struct diagnostic_context) <last_module>: Change
24779         type.
24780         (diagnostic_last_module_changed): Add 'map' argument.
24781         (diagnostic_set_last_function): Likewise.
24782         * diagnostic.c (undiagnostic_report_current_module): Iterate using
24783         line map, not input_file_stack.
24784         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
24785
24786 2008-02-29  Paul Brook  <paul@codesourcery.com>
24787
24788         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
24789
24790 2008-02-29  Paul Brook  <paul@codesourcery.com>
24791
24792         * config/arm/ieee754-df.S (muldf3): Use RET macros.
24793
24794 2008-02-29  Richard Guenther  <rguenther@suse.de>
24795
24796         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
24797         vn_lookup_or_add.
24798         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
24799         value for comparing for a store match.
24800         (simplify_unary_expression): Do nothing for SSA_NAMEs.
24801         (try_to_simplify): Do not do a full-blown reference lookup.
24802
24803 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24804
24805         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
24806         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
24807
24808         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
24809
24810 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
24811
24812         * tree-loop-linear.c (try_interchange_loops): Compare memory access
24813         strides against cache sizes.
24814
24815 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24816
24817         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
24818         constant to fpul.
24819
24820 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
24821
24822         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
24823         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
24824         is smaller than the original promoted value.
24825         (simplify_subreg): If OP is a SUBREG, try to preserve its
24826         SUBREG_PROMOTED_VAR_P information.
24827
24828 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
24829
24830         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
24831         (VN_INFO_GET): Allocate new objects on the obstack.
24832         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
24833         for rpo_numbers_temp, for consistency.
24834         (free_scc_vn): Free the obstack.
24835
24836 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
24837
24838         * doc/invoke.texi: Document -ftree-loop-distribution.
24839         * tree-loop-distribution.c: New.
24840         * tree-pass.h (pass_loop_distribution): New.
24841         * graphds.h (struct graph): Add htab_t indices.
24842         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
24843         * tree-vectorizer.c (rename_variables_in_loop): Extern.
24844         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
24845         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
24846         * tree-data-ref.c (debug_data_dependence_relations): New.
24847         (dump_data_dependence_relation): Also print data references.
24848         (free_data_ref): Extern.
24849         (same_access_functions): Moved...
24850         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
24851         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24852         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
24853         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
24854         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
24855         (stmts_from_loop): Skip LABEL_EXPR.
24856         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
24857         New.
24858         (build_rdg): Initialize rdg->indices htab.
24859         (free_rdg, stores_from_loop, ref_base_address,
24860         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
24861         have_similar_memory_accesses_1, ref_base_address_1,
24862         remove_similar_memory_refs): New.
24863         * tree-data-ref.h: Depend on tree-chrec.h.
24864         (debug_data_dependence_relations, free_data_ref): Declared.
24865         (same_access_functions): ... here.
24866         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
24867         New.
24868         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
24869         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
24870         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
24871         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24872         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
24873         rdg_vertex_for_stmt): Declared.
24874         (struct rdg_edge): Add level.
24875         (RDGE_LEVEL): New.
24876         (free_rdg, stores_from_loop, remove_similar_memory_refs,
24877         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
24878         Declared.
24879         (rdg_has_similar_memory_accesses): New.
24880         * tree-vect-analyze.c: Remove unused static decls.
24881         * lambda.h (dependence_level): New.
24882         * common.opt (ftree-loop-distribution): New.
24883         * tree-flow.h (mark_virtual_ops_in_bb,
24884         slpeel_tree_duplicate_loop_to_edge_cfg,
24885         rename_variables_in_loop): Declared.
24886         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
24887         (OBJS-common): Add tree-loop-distribution.o.
24888         (tree-loop-distribution.o): New rule.
24889         * tree-cfg.c (mark_virtual_ops_in_bb): New.
24890         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
24891         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
24892
24893 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
24894
24895         PR target/33963
24896         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
24897         other than structures and unions.
24898
24899 2008-02-28  Richard Guenther  <rguenther@suse.de>
24900
24901         Revert:
24902         2008-02-26  Richard Guenther  <rguenther@suse.de>
24903
24904         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24905         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24906         (lookup_decl_from_uid): Declare.
24907         (remove_decl_from_map): Likewise.
24908         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24909         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24910         (decl_for_uid_map): New global hashtable mapping DECL_UID
24911         to the decl tree.
24912         (init_ttree): Allocate it.
24913         (insert_decl_to_uid_decl_map): New helper function.
24914         (make_node_stat): Insert new decls into the map.
24915         (copy_node_stat): Likewise.
24916         (lookup_decl_from_uid): New function.
24917         (remove_decl_from_map): Likewise.
24918         (print_decl_for_uid_map_statistics): New helper.
24919         (dump_tree_statistics): Call it.
24920
24921         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24922         (referenced_var_iterator): Adjust.
24923         (FOR_EACH_REFERENCED_VAR): Adjust.
24924         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24925         (num_referenced_vars): Adjust.
24926         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24927         (first_referenced_var): Remove.
24928         (end_referenced_vars_p): Likewise.
24929         (next_referenced_var): Likewise.
24930         (referenced_var_iterator_set): New helper function.
24931         * tree-dfa.c (referenced_var_lookup): Adjust.
24932         (referenced_var_check_and_insert): Likewise.
24933         (remove_referenced_var): Likewise.
24934         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24935         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24936         (verify_call_clobbering): Likewise.
24937         (verify_memory_partitions): Likewise.
24938         (init_tree_ssa): Allocate bitmap instead of hashtable for
24939         referenced_vars.
24940         (delete_tree_ssa): Adjust.
24941         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24942         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24943         (compute_tag_properties): Likewise.
24944         (set_initial_properties): Likewise.
24945         (find_partition_for): Likewise.
24946         (update_reference_counts): Likewise.
24947         (dump_may_aliases_for): Likewise.
24948         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24949         (add_call_clobber_ops): Likewise.
24950         (add_call_read_ops): Likewise.
24951         (get_asm_expr_operands): Likewise.
24952         * tree-into-ssa.c (dump_decl_set): Likewise.
24953         (update_ssa): Likewise.
24954         * tree-sra.c (scan_function): Likewise.
24955         (decide_instantiations): Likewise.
24956         (scalarize_parms): Likewise.
24957         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24958         (dsa_named_for): Likewise.
24959         * tree-ssa-structalias.c (update_alias_info): Likewise.
24960         (merge_smts_into): Likewise.
24961
24962 2008-02-27  David Daney  <ddaney@avtrex.com>
24963
24964         PR target/34409
24965         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
24966         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
24967         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
24968         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
24969         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
24970
24971 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
24972
24973         PR target/25477
24974         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
24975         (BUILT_IN_NEXTTOWARD): Remove.
24976         (BUILT_IN_NEXTTOWARDF): Ditto.
24977         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
24978         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
24979
24980 2008-02-27  Tom Tromey  <tromey@redhat.com>
24981
24982         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
24983         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
24984
24985 2008-02-27  Jan Beulich  <jbeulich@novell.com>
24986
24987         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
24988         update the respective field on newdecl.
24989
24990 2008-02-27  Revital Eres  <eres@il.ibm.com>
24991
24992         PR rtl-optimization/34999
24993         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
24994         crossing edges that ends with a call insn.
24995         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
24996         call insn and clear the EDGE_CROSSING flag of the crossing edge
24997         when fixing fallthru edges.
24998
24999 2008-02-27  Richard Guenther  <rguenther@suse.de>
25000
25001         PR middle-end/35390
25002         * fold-const.c (fold_unary): Return the correct argument,
25003         converted to the result type.
25004
25005 2008-02-27  Richard Guenther  <rguenther@suse.de>
25006
25007         PR middle-end/34971
25008         * expr.c (expand_expr_real_1): Assert on rotates that operate
25009         on partial modes.
25010         * fold-const.c (fold_binary): Use the types precision, not the
25011         bitsize of the mode if folding rotate expressions.  Build rotates
25012         only for full modes.
25013
25014 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
25015
25016         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
25017         and CPP_PRAGMA_EOL.
25018         * c-pragma.c (pragma_ns_name): New typedef.
25019         (registered_pp_pragmas): New variable.
25020         (c_pp_lookup_pragma): New function.
25021         (c_register_pragma_1): If flag_preprocess_only, do nothing
25022         for non-expanded pragmas, for expanded ones push pragma's
25023         namespace and name into registered_pp_pragmas vector.
25024         (c_invoke_pragma_handler): Register OpenMP pragmas even when
25025         flag_preprocess_only, don't register GCC pch_preprocess
25026         pragma if flag_preprocess_only.
25027         * c-opts.c (c_common_init): Call init_pragma even if
25028         flag_preprocess_only.
25029         * c-pragma.c (c_pp_lookup_pragma): New prototype.
25030         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
25031         cpp_register_pragma if flag_preprocess_only.
25032
25033 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25034
25035         PR c/28800
25036         * c-parser.c (c_parser_translation_unit): Warn for empty
25037         translation unit, not empty source file.
25038
25039 2008-02-26  Paul Brook  <paul@codesourcery.com>
25040
25041         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
25042         operand for Thumb-2.
25043         * config/arm/arm.h (reg_class): Add CORE_REGS.
25044         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
25045         (BASE_REG_CLASS): Use CORE_REGS.
25046         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
25047         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
25048         (REGNO_OK_FOR_INDEX_P): Exclude SP.
25049         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
25050         ARM_REGNO_OK_FOR_INDEX_P.
25051         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
25052         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
25053         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
25054         (ldm/stm peepholes): Ditto.
25055         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
25056         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
25057         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
25058         * config/arm/constraints.md: Enable "k" constraint on ARM.
25059
25060 2008-02-27  Ben Elliston  <bje@au.ibm.com>
25061
25062         * config/rs6000/rs6000.c: Annotate cache line size field in all
25063         instances of struct processor_costs.
25064
25065 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
25066
25067         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
25068         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
25069         jump_bypass): New counters.
25070         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
25071         * dce.c (gate_ud_dce): Same.
25072         (gate_fast_dce): Same.
25073         * dse.c (gate_dse1): New function.
25074         (gate_dse2): New function.
25075         (gate_dse): Merge results of new gate functions.
25076         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
25077         (gate_handle_jump_bypass): Add dbg_cnt.
25078         (gate_handle_gcse): Add dbg_cnt.
25079         * ifcvt.c (gate_handle_if_conversion): Same.
25080         (gate_handle_if_after_combine): Same.
25081         (gate_handle_if_after_reload): Same.
25082         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
25083
25084 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
25085
25086         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
25087         line sizes.
25088         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
25089
25090 2008-02-26  Jason Merrill  <jason@redhat.com>
25091
25092         PR c++/35315
25093         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
25094         alone if it's the naming decl for the type's main variant.
25095
25096 2008-02-26  Tom Tromey  <tromey@redhat.com>
25097
25098         * system.h (USE_MAPPED_LOCATION): Poison.
25099         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
25100         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
25101         (make_goto_expr_edges): Likewise.
25102         (remove_bb): Likewise.
25103         (execute_warn_function_return): Likewise.
25104         * basic-block.h (struct edge_def) <goto_locus>: Change type to
25105         location_t.
25106         * c-common.c (fname_decl): Remove old location code.
25107         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
25108         location code.
25109         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
25110         variant.
25111         (ASM_INPUT_SOURCE_LOCATION): Likewise.
25112         (gen_rtx_ASM_INPUT): Likewise.
25113         (gen_rtx_ASM_INPUT_loc): Likewise.
25114         (get_rtx_asm_OPERANDS): Remove.
25115         * cfglayout.c (insn_locators_alloc): Remove old location code.
25116         (set_curr_insn_source_location): Likewise.
25117         (curr_insn_locator): Likewise.
25118         * print-tree.c (print_node): Remove old location code.
25119         * tree-mudflap.c (mf_varname_tree): Remove old location code.
25120         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
25121         * cfgexpand.c (expand_gimple_cond_expr): Don't use
25122         location_from_locus.
25123         (construct_exit_block): Remove old location code.
25124         * emit-rtl.c (force_next_line_note): Remove old location code.
25125         * profile.c (branch_prob): Remove old location code.
25126         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
25127         LOC_LINE): Remove old-location variants.
25128         * langhooks.c (lhd_print_error_function): Remove old location
25129         code.
25130         * configure, config.in: Rebuilt.
25131         * configure.ac (--enable-mapped-location): Remove.
25132         * c-decl.c (c_init_decl_processing): Remove old location code.
25133         (finish_function): Likewise.
25134         * recog.c (decode_asm_operands): Remove old location code.
25135         * c-pch.c (c_common_read_pch): Remove old location code.
25136         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
25137         variants.
25138         * gimple-low.c (lower_function_body): Remove old location code.
25139         * toplev.c (unknown_location): Remove.
25140         (push_srcloc): Remove old-location variant.
25141         (process_options): Remove old location code.
25142         (lang_dependent_init): Likewise.
25143         * input.h (UNKNOWN_LOCATION): Move definition.
25144         (location_t): Undeprecate.
25145         (source_locus): Remove.
25146         (location_from_locus): Remove.
25147         (struct location_s): Remove.
25148         Remove all old-location code.
25149         (input_line, input_filename): Remove.
25150         * final.c (final_scan_insn): Remove old location code.
25151         * diagnostic.c (diagnostic_build_prefix): Remove
25152         USE_MAPPED_LOCATION test.
25153         * tree.h (gimple_stmt) <locus>: Now a location_t.
25154         (tree_exp) <locus>: Likewise.
25155         (DECL_IS_BUILTIN): Remove old-location variant.
25156         (annotate_with_file_line, annotate_with_locus): Likewise.
25157         (expr_locus, set_expr_locus): Update.
25158         * tree.c (build1_stat): Remove old location code.
25159         (last_annotated_node): Remove.
25160         (annotate_with_file_line): Remove old-location variant.
25161         (annotate_with_locus): Likewise.
25162         (expr_location): Remove old location code.
25163         (set_expr_location): Likewise.
25164         (expr_has_location): Likewise.
25165         (expr_locus): Likewise.
25166         (set_expr_locus): Likewise.
25167         (expr_filename): Don't use location_from_locus.
25168         (expr_lineno): Likewise.
25169         * rtl-error.c (location_for_asm): Remove old location code.
25170         * c-lex.c (cb_line_change): Remove old location code.
25171         (fe_file_change): Likewise.
25172         (cb_def_pragma): Likewise.
25173         (c_lex_with_flags): Likewise.
25174         * gengtype.c (do_typedef): Don't special-case location types.
25175         (define_location_structures): Remove.
25176         (main): Don't call define_location_structures.
25177         * tree-pretty-print.c (dump_implicit_edges): Remove old location
25178         code.
25179
25180 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25181
25182         PR 26264
25183         * builtins.def (BUILT_IN_STDARG_START): Remove.
25184         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
25185         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
25186         * tree-inline.c (inline_forbidden_p_1): Likewise.
25187
25188 2008-02-26  Richard Guenther  <rguenther@suse.de>
25189
25190         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25191         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25192         (lookup_decl_from_uid): Declare.
25193         (remove_decl_from_map): Likewise.
25194         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25195         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25196         (decl_for_uid_map): New global hashtable mapping DECL_UID
25197         to the decl tree.
25198         (init_ttree): Allocate it.
25199         (insert_decl_to_uid_decl_map): New helper function.
25200         (make_node_stat): Insert new decls into the map.
25201         (copy_node_stat): Likewise.
25202         (lookup_decl_from_uid): New function.
25203         (remove_decl_from_map): Likewise.
25204         (print_decl_for_uid_map_statistics): New helper.
25205         (dump_tree_statistics): Call it.
25206
25207         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25208         (referenced_var_iterator): Adjust.
25209         (FOR_EACH_REFERENCED_VAR): Adjust.
25210         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25211         (num_referenced_vars): Adjust.
25212         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25213         (first_referenced_var): Remove.
25214         (end_referenced_vars_p): Likewise.
25215         (next_referenced_var): Likewise.
25216         (referenced_var_iterator_set): New helper function.
25217         * tree-dfa.c (referenced_var_lookup): Adjust.
25218         (referenced_var_check_and_insert): Likewise.
25219         (remove_referenced_var): Likewise.
25220         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25221         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25222         (verify_call_clobbering): Likewise.
25223         (verify_memory_partitions): Likewise.
25224         (init_tree_ssa): Allocate bitmap instead of hashtable for
25225         referenced_vars.
25226         (delete_tree_ssa): Adjust.
25227         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25228         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25229         (compute_tag_properties): Likewise.
25230         (set_initial_properties): Likewise.
25231         (find_partition_for): Likewise.
25232         (update_reference_counts): Likewise.
25233         (dump_may_aliases_for): Likewise.
25234         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25235         (add_call_clobber_ops): Likewise.
25236         (add_call_read_ops): Likewise.
25237         (get_asm_expr_operands): Likewise.
25238         * tree-into-ssa.c (dump_decl_set): Likewise.
25239         (update_ssa): Likewise.
25240         * tree-sra.c (scan_function): Likewise.
25241         (decide_instantiations): Likewise.
25242         (scalarize_parms): Likewise.
25243         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25244         (dsa_named_for): Likewise.
25245         * tree-ssa-structalias.c (update_alias_info): Likewise.
25246         (merge_smts_into): Likewise.
25247
25248 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25249
25250         PR 34351
25251         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
25252         * c-opts.c (c_common_handle_option): Wall enables
25253         Wvolatile-register-var.
25254         * common.opt: Move Wvolatile-register-var to...
25255         * c.opt: ...here.
25256
25257 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25258
25259         * common.opt (Wlarger-than=): New.
25260         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
25261         -Wlarger-than=.
25262         * opts.c (common_handle_option): Handle -Wlarger-than=.
25263         * optc-gen.awk: Likewise.
25264         * opth-gen.awk: Likewise.
25265         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
25266         * tree-optimize.c (tree_rest_of_compilation): Likewise.
25267
25268 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25269
25270         * c-common.c (match_case_to_enum_1): Add appropriate
25271         OPT_W* parameter to warning.
25272         (c_do_switch_warnings): Likewise.
25273         * c-typeck.c (warning_init): Add one more parameter following
25274         'warning' function.
25275         (push_init_level): Update call to warning_init.
25276         (pop_init_level): Likewise.
25277         (add_pending_init): Likewise.
25278         (output_init_element: Likewise.
25279
25280 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25281
25282         PR 28322
25283         * toplev.c (toplev_main): If there are warnings or error, print
25284         errors for ignored options.
25285         * opts.c (ignored_options): New static variable.
25286         (postpone_unknown_option_error): New.
25287         (print_ignored_options): New.
25288         (handle_option): Postpone errors for unknown -Wno-* options.
25289         * opts.h (print_ignored_options): Declare.
25290
25291 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
25292
25293         * config/mips/mips.md (loadgp_blockage, blockage): Change type
25294         to "ghost".
25295
25296 2008-02-25  Richard Guenther  <rguenther@suse.de>
25297
25298         Revert:
25299         2008-02-25  Richard Guenther  <rguenther@suse.de>
25300
25301         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25302         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25303         (lookup_decl_from_uid): Declare.
25304         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25305         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25306         (decl_for_uid_map): New global hashtable mapping DECL_UID
25307         to the decl tree.
25308         (init_ttree): Allocate it.
25309         (insert_decl_to_uid_decl_map): New helper function.
25310         (make_node_stat): Insert new decls into the map.
25311         (copy_node_stat): Likewise.
25312         (lookup_decl_from_uid): New function.
25313         (print_decl_for_uid_map_statistics): New helper.
25314         (dump_tree_statistics): Call it.
25315
25316         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25317         (referenced_var_iterator): Adjust.
25318         (FOR_EACH_REFERENCED_VAR): Adjust.
25319         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25320         (num_referenced_vars): Adjust.
25321         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25322         (first_referenced_var): Remove.
25323         (end_referenced_vars_p): Likewise.
25324         (next_referenced_var): Likewise.
25325         (referenced_var_iterator_set): New helper function.
25326         * tree-dfa.c (referenced_var_lookup): Adjust.
25327         (referenced_var_check_and_insert): Likewise.
25328         (remove_referenced_var): Likewise.
25329         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25330         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25331         (verify_call_clobbering): Likewise.
25332         (verify_memory_partitions): Likewise.
25333         (init_tree_ssa): Allocate bitmap instead of hashtable for
25334         referenced_vars.
25335         (delete_tree_ssa): Adjust.
25336         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25337         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25338         (compute_tag_properties): Likewise.
25339         (set_initial_properties): Likewise.
25340         (find_partition_for): Likewise.
25341         (update_reference_counts): Likewise.
25342         (dump_may_aliases_for): Likewise.
25343         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25344         (add_call_clobber_ops): Likewise.
25345         (add_call_read_ops): Likewise.
25346         (get_asm_expr_operands): Likewise.
25347         * tree-into-ssa.c (dump_decl_set): Likewise.
25348         (update_ssa): Likewise.
25349         * tree-sra.c (scan_function): Likewise.
25350         (decide_instantiations): Likewise.
25351         (scalarize_parms): Likewise.
25352         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25353         (dsa_named_for): Likewise.
25354         * tree-ssa-structalias.c (update_alias_info): Likewise.
25355         (merge_smts_into): Likewise.
25356
25357 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25358
25359         PR fortran/29549
25360         * doc/invoke.texi (-fcx-limited-range): Document new option.
25361         * toplev.c (process_options): Handle -fcx-fortran-rules.
25362         * common.opt: Add documentation for -fcx-fortran-rules.
25363
25364 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25365
25366         PR c/35162
25367         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
25368         actual behaviour and C99.
25369
25370 2008-02-26  Ben Elliston  <bje@au.ibm.com>
25371
25372         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
25373         (ASM_CPU_POWER6_SPEC): Likewise.
25374         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
25375         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
25376         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
25377
25378 2008-02-25  Richard Guenther  <rguenther@suse.de>
25379
25380         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25381         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25382         (lookup_decl_from_uid): Declare.
25383         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25384         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25385         (decl_for_uid_map): New global hashtable mapping DECL_UID
25386         to the decl tree.
25387         (init_ttree): Allocate it.
25388         (insert_decl_to_uid_decl_map): New helper function.
25389         (make_node_stat): Insert new decls into the map.
25390         (copy_node_stat): Likewise.
25391         (lookup_decl_from_uid): New function.
25392         (print_decl_for_uid_map_statistics): New helper.
25393         (dump_tree_statistics): Call it.
25394
25395         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25396         (referenced_var_iterator): Adjust.
25397         (FOR_EACH_REFERENCED_VAR): Adjust.
25398         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25399         (num_referenced_vars): Adjust.
25400         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25401         (first_referenced_var): Remove.
25402         (end_referenced_vars_p): Likewise.
25403         (next_referenced_var): Likewise.
25404         (referenced_var_iterator_set): New helper function.
25405         * tree-dfa.c (referenced_var_lookup): Adjust.
25406         (referenced_var_check_and_insert): Likewise.
25407         (remove_referenced_var): Likewise.
25408         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25409         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25410         (verify_call_clobbering): Likewise.
25411         (verify_memory_partitions): Likewise.
25412         (init_tree_ssa): Allocate bitmap instead of hashtable for
25413         referenced_vars.
25414         (delete_tree_ssa): Adjust.
25415         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25416         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25417         (compute_tag_properties): Likewise.
25418         (set_initial_properties): Likewise.
25419         (find_partition_for): Likewise.
25420         (update_reference_counts): Likewise.
25421         (dump_may_aliases_for): Likewise.
25422         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25423         (add_call_clobber_ops): Likewise.
25424         (add_call_read_ops): Likewise.
25425         (get_asm_expr_operands): Likewise.
25426         * tree-into-ssa.c (dump_decl_set): Likewise.
25427         (update_ssa): Likewise.
25428         * tree-sra.c (scan_function): Likewise.
25429         (decide_instantiations): Likewise.
25430         (scalarize_parms): Likewise.
25431         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25432         (dsa_named_for): Likewise.
25433         * tree-ssa-structalias.c (update_alias_info): Likewise.
25434         (merge_smts_into): Likewise.
25435
25436 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
25437
25438         PR target/35258
25439         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
25440         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
25441         * alias.h (nonoverlapping_memrefs_p): Likewise.
25442
25443 2008-02-25  Jan Beulich  <jbeulich@novell.com>
25444
25445         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
25446         * config/i386/netware-libgcc.exp: Add __bswap?i2,
25447         __emultls_get_address, __emultls_register_common,
25448         __floatundi?f, and _Unwind_GetIPInfo.
25449         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
25450         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
25451         (gen_regparm_prefix): Likewise.
25452         (i386_nlm_encode_section_info): Sync with
25453         config/i386/winnt.c:i386_pe_encode_section_info().
25454         (i386_nlm_maybe_mangle_decl_assembler_name): New.
25455         i386_nlm_mangle_decl_assembler_name): New.
25456         (netware_override_options): New.
25457         * config/i386/netware.h (netware_override_options): Declare.
25458         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
25459         (i386_nlm_mangle_decl_assembler_name): Declare.
25460         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
25461
25462 2008-02-25  Ben Elliston  <bje@au.ibm.com>
25463
25464         PR other/32948
25465         * c-decl.c (grokdeclarator): Remove unused local variables
25466         `typedef_type' and `type_as_written'.
25467         * bb-reorder.c
25468         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
25469         unused local variable `has_hot_blocks'.
25470         (fix_crossing_conditional_branches): Remove unused local variable
25471         `prev_bb'.
25472
25473 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
25474
25475         PR middle-end/19984
25476         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
25477         using DEF_C99_BUILTIN.
25478         (BUILT_IN_NANF): Ditto.
25479         (BUILT_IN_NANL): Ditto.
25480
25481 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
25482             Revital Eres  <eres@il.ibm.com>
25483
25484         * modulo-sched.c (calculate_must_precede_follow): Address TODO
25485         regarding the order of two dependent insns in the same row.
25486
25487 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
25488
25489         * stor-layout.c (layout_decl): Do not bump the alignment of a
25490         bit-field to more than byte alignment if it is packed.
25491
25492 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
25493
25494         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
25495         e300c2 and e300c3.
25496
25497 2008-02-24  Diego Novillo  <dnovillo@google.com>
25498
25499         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
25500
25501         PR 33738
25502         * tree-vrp.c (vrp_evaluate_conditional): With
25503         -Wtype-limits, emit a warning when comparing against a
25504         constant outside the natural range of OP0's type.
25505         * c.opt (Wtype-limits): Move ...
25506         * common.opt (Wtype-limits): ... here.
25507
25508 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
25509
25510         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
25511         * config/rs6000/e300c2c3.md: New file.
25512         * config/rs6000/rs6000.c (processor_costs): Add new costs for
25513         e300c2 and e300c3.
25514         (rs6000_override_options): Add e300c2 and e300c3 cases to
25515         processor_target_table. Do not allow usage of Altivec or Spe
25516         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
25517         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
25518         * config/rs6000/rs6000.h (processor_type): Add
25519         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
25520         (ASM_CPU_SPEC): Add e300c2 and e300c3.
25521         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
25522         and ppce300c3. Include e300c2c3.md.
25523
25524 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
25525
25526         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
25527         instead of TARGET_STRICT_ALIGN.
25528
25529 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
25530
25531         * explow.c (memory_address): Assert that the generated address is
25532         valid.
25533
25534 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25535
25536         PR target/25477
25537         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
25538         * config/darwin-ppc-ldouble-patch.def: New file.
25539         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
25540         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
25541         SUBTARGET_INIT_BUILTINS if defined.
25542         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
25543         New functions.
25544
25545 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25546
25547         PR rtl-opt/33512
25548         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
25549         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
25550
25551 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25552
25553         PR pch/35027
25554         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
25555         file" warning condtional on -Winvalid-PCH.
25556
25557 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
25558
25559         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
25560
25561 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
25562
25563         PR target/22076
25564         PR target/34256
25565         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
25566         prevent reload from using MMX registers.
25567         (*mov<mode>_internal): Ditto.
25568         (*movv2sf_internal_rex64): Ditto.
25569         (*movv2sf_internal): Ditto.
25570
25571 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25572
25573         PR documentation/31569
25574         * doc/install.texi2html: Use makeinfo --no-number-sections.
25575
25576 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25577
25578         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
25579         ensure that we can address an entire entity > 8 bytes.  Don't
25580         generate reg+reg addressing for such data.
25581
25582 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25583
25584         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
25585         strings when optimizing for size, unless the target cares about
25586         alignment.
25587
25588 2008-02-22  Tom Tromey  <tromey@redhat.com>
25589
25590         * regclass.c (current_pass): Remove declaration.
25591
25592 2008-02-22  Anatoly Sokolov <aesok@post.ru>
25593
25594         * config/avr/libgcc.S (__RAMPZ__): Define.
25595         (__do_copy_data): Add for devices with 128KB code memory.
25596
25597 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25598
25599         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25600         Use spe_abi.
25601         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
25602
25603 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
25604
25605         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
25606         GENNONACR_REGS.
25607
25608 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25609
25610         PR c/19999
25611         * c-typeck.c (build_binary_op): Warn about floating point
25612         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
25613
25614 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
25615
25616         PR target/34526
25617         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
25618         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
25619         add vrsave.
25620         (rs6000_override_options): Set altivec_abi as default, not override,
25621         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
25622         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
25623         is used; use new member spe_abi.
25624         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
25625         spe_abi and altivec_abi.
25626
25627 2008-02-22  Tomas Bily  <tbily@suse.cz>
25628
25629         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
25630
25631 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25632
25633         PR bootstrap/35273
25634         * config.build (build_file_translate): Set to `CMD //c' only if
25635         it works.
25636         * Makefile.in (build_file_translate): Improve comment.
25637
25638 2008-02-21  Jan Hubicka  <jh@suse.cz>
25639
25640         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
25641         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
25642         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
25643
25644 2008-02-21  Michael Matz  <matz@suse.de>
25645
25646         PR target/35264
25647         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
25648
25649 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
25650
25651         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
25652         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
25653         as insn constraint.
25654         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
25655         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
25656         SSE_VEC_FLOAT_MODE_P as insn constraint.
25657         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
25658         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
25659         sse4a_movntdf using MODEF mode iterator.
25660         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
25661         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
25662         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
25663         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
25664         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
25665         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
25666         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
25667
25668 2008-02-21  Richard Guenther  <rguenther@suse.de>
25669
25670         * tree.def (PAREN_EXPR): New tree code.
25671         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
25672         and PAREN_EXPR.
25673         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
25674         * expr.c (expand_expr_real_1): Likewise.
25675         * tree-inline.c (estimate_num_insns_1): Likewise.
25676         * tree-complex.c (expand_complex_move): Likewise.
25677         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
25678         as plain x.
25679
25680 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25681
25682         PR target/35225
25683         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
25684
25685 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25686
25687         PR target/35190
25688         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
25689
25690         * config/sh/sh.c (find_barrier): Don't go past
25691         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
25692
25693 2008-02-20  DJ Delorie  <dj@redhat.com>
25694
25695         * config/h8300/h8300.md (insv): Force source operand to be a register.
25696
25697         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
25698         as a jump, not as a plain insn.
25699
25700 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
25701
25702         * doc/invoke.texi (Warning Options): Add new option
25703         -Wframe-larger-than=.
25704         (-Wframe-larger-than): Document.
25705
25706         * flags.h (warn_frame_larger_than, frame_larger_than_size):
25707         Add declarations for new option variables.
25708
25709         * final.c (final_start_function): Check the frame size
25710         before emission and issue a Wframe-larger-than warning.
25711
25712         * opts.c (warn_frame_larger_than, frame_larger_than_size):
25713         Add definitions for new option variables.
25714         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
25715
25716         * common.opt (Wframe-larger-than=): New option.
25717
25718 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25719
25720         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
25721         (<sse>_div<mode>3): Ditto.
25722         (<sse>_vmdiv<mode>3): Ditto.
25723         (<sse>_vmsqrt<mode>2): Ditto.
25724         (*smax<mode>3): Ditto.
25725         (sse5_frcz<mode>2): Ditto.
25726         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
25727         as insn constraint.
25728
25729 2008-02-20  Richard Guenther  <rguenther@suse.de>
25730
25731         PR middle-end/35265
25732         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
25733         be happy with INTEGRAL_TYPE_P.
25734
25735 2008-02-20  Richard Guenther  <rguenther@suse.de>
25736
25737         * fold-const.c (split_tree): Associate floatig-point expressions
25738         if flag_associative_math is set.
25739
25740 2008-02-20  Richard Guenther  <rguenther@suse.de>
25741
25742         * tree.h (fold_real_zero_addition_p): Declare.
25743         * fold-const.c (fold_real_zero_addition_p): Export.
25744         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
25745         floating-point operations with zero and one.
25746
25747 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
25748
25749         * doc/install.texi: Correct references to CFLAGS, replacing them
25750         with BOOT_CFLAGS.  Document flags used during bootstrap for
25751         target libraries.
25752
25753 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25754
25755         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
25756         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
25757         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
25758         insn constraint.
25759         (smin<mode>3): Ditto from similar patterns.
25760         (smax<mode>3): Ditto.
25761         (*ieee_smin<mode>3): Ditto.
25762         (*ieee_smax<mode>3): Ditto.
25763         * config/i386/sse.md (sse): New mode attribute.
25764         (mov<mode>): Macroize expander from movv4sf and movv2df using
25765         SSEMODEF2P mode iterator.
25766         (<sse>_movnt<mode>): Ditto from similar patterns. Use
25767         SSE_VEC_FLOAT_MODE_P as insn constraint.
25768         (storent<mode>): Ditto.
25769         (storent<mode>): Macroize expander from storentsf and storentdf using
25770         MODEF mode iterator.
25771         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
25772         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
25773         (abs<mode>2): Ditto from similar patterns.
25774         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
25775         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
25776         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
25777         (<sse>_vmsqrt<mode>2): Ditto.
25778         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
25779         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
25780         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
25781         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
25782         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
25783         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
25784         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
25785         insn constraint.
25786         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
25787         iterator and SSE_FLOAT_MODE_P as insn constraint.
25788         (<sse>_ucomi): Ditto from similar patterns.
25789         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
25790         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
25791         SSE_VEC_FLOAT_MODE_P as insn constraint.
25792         (vcond<mode>): Ditto from similar patterns.
25793         (and<mode>3, *and<mode>3): Ditto.
25794         (<sse>_nand<mode>3): Ditto.
25795         (ior<mode>3, *ior<mode>3): Ditto.
25796         (xor<mode>3, *xor<mode>3): Ditto.
25797         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
25798         iterator and SSE_FLOAT_MODE_P as insn constraint.
25799         (*nand<mode>3): Ditto from similar patterns.
25800         (*ior<mode>3): Ditto.
25801         (*xor<mode>3): Ditto.
25802
25803 2008-02-20  Ira Rosen  <irar@il.ibm.com>
25804
25805         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
25806         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
25807         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
25808
25809 2008-02-19  Jan Hubicka  <jh@suse.cz>
25810
25811         * predict.c (tree_bb_level_predictions): Remove variable next
25812         mistakely introduced by previous commit.
25813
25814 2008-02-19  Jan Hubicka  <jh@suse.cz>
25815
25816         * predict.c (predict_paths_leading_to): Rewrite.
25817         (predict_paths_for_bb): New.
25818         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
25819
25820 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25821
25822         PR bootstrap/35218
25823         * Makefile.in (build_file_translate): New.
25824         (gcc-vers.texi): Use it for translating $(abs_srcdir).
25825         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
25826         * configure.ac (build_file_translate): Substitute it.
25827         * configure: Regenerate.
25828
25829 2008-02-19  Jan Hubicka  <jh@suse.cz>
25830
25831         PR rtl-optimization/34408
25832         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
25833         invalid sharing.
25834
25835 2008-02-19  Jan Hubicka  <jh@suse.cz>
25836
25837         PR middle-end/28779
25838         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
25839         call_expr.
25840
25841 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
25842
25843         PR Ada/35186
25844         * config/i386/i386-modes.def: Revert the last DI alignment
25845         change until Ada people can look into it.
25846
25847 2008-02-19  Nick Clifton  <nickc@redhat.com>
25848
25849         * opts.c (print_specific_help): Fix typo in --help text.
25850
25851 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
25852
25853         PR target/35239
25854         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
25855         32-bit inline asm without asm alternatives for host GCC < 3.0.
25856
25857 2008-02-19  Richard Guenther  <rguenther@suse.de>
25858
25859         PR tree-optimization/34989
25860         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
25861         Allow propagation to INDIRECT_REF if we can simplify only.
25862
25863 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25864
25865         * c-common.c (warn_for_collisions_1): Use appropriate option when
25866         warning.
25867
25868 2008-02-19  Nick Clifton  <nickc@redhat.com>
25869
25870         PR other/31349
25871         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
25872         (handle_options): Fix indentation.
25873         (print_filtered_help): If no language-specific options were
25874         displayed tell the user how to list all the options supported by
25875         the language's front-end.
25876         (print_specific_help): Fix indentation and remove duplicate line.
25877         (common_handle_option): Handle the -v option.
25878         For --help enable the display of undocumented options if the -v
25879         switch has been included on the command line.
25880         For --help= check for overlaps in the arguments between the option
25881         classes and the language names and issue a warning when they
25882         cannot be disambiguated.
25883         * c.opt (v): Pass on to the common option handler.
25884
25885 2008-02-19  Revital Eres  <eres@il.ibm.com>
25886
25887         * modulo-sched.c (sms_schedule): Change dump message when
25888         create_ddg function fails.
25889         (try_scheduling_node_in_cycle): Rename row to cycle.
25890         (print_partial_schedule): Rename CYCLE to ROW.
25891
25892 2008-02-19  Christian Bruel  <christian.bruel@st.com>
25893             Zdenek Dvorak  <ook@ucw.cz>
25894
25895         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
25896
25897 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25898
25899         PR target/33555
25900         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
25901         (*x86_movdicc_0_m1_se): Ditto.
25902
25903 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25904
25905         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
25906         (CMPtype): Define as __gcc_CMPtype.
25907         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
25908         (CMPtype): Define as __gcc_CMPtype.
25909
25910 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
25911
25912         Support valgrind 3.3 for --enable-checking=valgrind.
25913         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
25914         here.
25915         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
25916         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
25917         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
25918         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
25919         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
25920         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
25921         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
25922         respectively.
25923         * ggc-zone.c: Similar.
25924         * ggc-page.c: Similar.
25925
25926 2008-02-19  Paul Brook  <paul@codesourcery.com>
25927
25928         PR target/35071
25929         * config/arm/ieee754-df.S: Fix do_it typo.
25930         * config/arm/ieee754-sf.S: Fix do_it typo.
25931
25932 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25933
25934         PR target/35189
25935         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
25936         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
25937         (OPTION_MASK_ISA_SSE_SET): Likewise.
25938         (OPTION_MASK_ISA_SSE2_SET): Likewise.
25939         (OPTION_MASK_ISA_SSE3_SET): Likewise.
25940         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
25941         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
25942         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
25943         (OPTION_MASK_ISA_SSE4_SET): Likewise.
25944         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
25945         (OPTION_MASK_ISA_SSE5_SET): Likewise.
25946         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
25947         (OPTION_MASK_ISA_MMX_UNSET): Updated.
25948         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
25949         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
25950         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
25951         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
25952         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
25953         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
25954         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
25955         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
25956         (OPTION_MASK_ISA_SSE4): Removed.
25957         (ix86_handle_option): Turn on bits in ix86_isa_flags and
25958         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
25959         (override_options): Don't turn on implied SSE/MMX bits in
25960         ix86_isa_flags.
25961
25962 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25963
25964         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25965         32bit host.
25966
25967 2008-02-18  Joey Ye  <joey.ye@intel.com>
25968
25969         PR middle-end/34921
25970         * tree-nested.c (insert_field_into_struct): Set type alignment
25971         to field alignment if the former is less than the latter.
25972
25973 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
25974
25975         * BASE-VER: Set to 4.4.0.
25976
25977 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25978
25979         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
25980         * doc/cfg.texi: Likewise.
25981         * doc/extend.texi: Likewise.
25982         * doc/gty.texi: Likewise.
25983         * doc/invoke.texi: Likewise.
25984         * doc/loop.texi: Likewise.
25985         * doc/md.texi: Likewise.
25986         * doc/passes.texi: Likewise.
25987         * doc/rtl.texi: Likewise.
25988         * doc/sourcebuild.texi: Likewise.
25989         * doc/tm.texi: Likewise.
25990         * doc/tree-ssa.texi: Likewise.
25991
25992 2008-02-17  Richard Guenther  <rguenther@suse.de>
25993
25994         PR middle-end/35227
25995         * tree-complex.c (init_parameter_lattice_values): Handle parameters
25996         without default definition.
25997
25998 2008-02-17  Richard Guenther  <rguenther@suse.de>
25999
26000         PR tree-optimization/35231
26001         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
26002         if A | B != 1.
26003
26004 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
26005
26006         Revert:
26007         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26008         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26009         libgcc_cmp_return mode.
26010
26011 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26012
26013         PR c/28368
26014         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
26015
26016 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
26017
26018         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
26019         multilibs.
26020
26021 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26022
26023         * doc/c-tree.texi: Use `@.' where appropriate.
26024         * doc/extend.texi: Likewise.
26025         * doc/install.texi: Likewise.
26026         * doc/invoke.texi: Likewise.
26027         * doc/loop.texi: Likewise.
26028         * doc/makefile.texi: Likewise.
26029         * doc/md.texi: Likewise.
26030         * doc/passes.texi: Likewise.
26031         * doc/standards.texi: Likewise.
26032         * doc/tm.texi: Likewise.
26033
26034 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26035
26036         PR middle-end/35196
26037         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
26038         in entry_bb.
26039         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
26040         rather than in entry_bb.
26041
26042 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26043
26044         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26045         libgcc_cmp_return mode.
26046
26047 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26048
26049         PR middle-end/35130
26050         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
26051         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
26052
26053 2008-02-15  Richard Guenther  <rguenther@suse.de>
26054             Zdenek Dvorak  <ook@ucw.cz>
26055
26056         PR tree-optimization/35164
26057         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
26058         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
26059         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26060         Only propagate addresses which do not have abnormal SSA_NAMEs
26061         in their operands.
26062
26063 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
26064
26065         PR target/35088
26066         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
26067
26068 2008-02-15  Jan Hubicka  <jh@suse.cz>
26069
26070         PR middle-end/35149
26071         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
26072
26073 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26074
26075         PR middle-end/34621
26076         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
26077         when calculating alignment_pad.
26078
26079 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26080
26081         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
26082         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
26083         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
26084         and STACK_BOUNDARY define.
26085
26086 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
26087
26088         PR preprocessor/35061
26089         * c-pragma.c (handle_pragma_pop_macro): Check that
26090         pushed_macro_table has been allocated.
26091
26092 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
26093
26094         PR middle-end/35136
26095         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
26096         (force_gimple_operand): Likewise.
26097         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
26098         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
26099         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
26100         (find_interesting_uses_address): Check addressability and alignment
26101         of the base expression only after substituting bases of IVs into it.
26102
26103 2008-02-14  Michael Matz  <matz@suse.de>
26104
26105         PR target/34930
26106         * function.c (instantiate_virtual_regs_in_insn): Reload address
26107         before falling back to reloading the whole operand.
26108
26109 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
26110
26111         * config/s390/s390.c (s390_mainpool_start): Emit the pool
26112         before the first section switch note.
26113
26114 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26115
26116         * doc/bugreport.texi: Update copyright years.
26117         * doc/c-tree.texi: Likewise.
26118         * doc/cfg.texi: Likewise.
26119         * doc/cpp.texi: Likewise.
26120         * doc/cppinternals.texi: Likewise.
26121         * doc/fragments.texi: Likewise.
26122         * doc/frontends.texi: Likewise.
26123         * doc/gcc.texi: Likewise.
26124         * doc/gty.texi: Likewise.
26125         * doc/hostconfig.texi: Likewise.
26126         * doc/implement-c.texi: Likewise.
26127         * doc/libgcc.texi: Likewise.
26128         * doc/loop.texi: Likewise.
26129         * doc/makefile.texi: Likewise.
26130         * doc/options.texi: Likewise.
26131         * doc/passes.texi: Likewise.
26132         * doc/rtl.texi: Likewise.
26133         * doc/sourcebuild.texi: Likewise.
26134         * doc/standards.texi: Likewise.
26135         * doc/tree-ssa.texi: Likewise.
26136         * doc/trouble.texi: Likewise.
26137
26138         * doc/extend.texi: Use @: or add comma where appropriate.
26139         * doc/invoke.texi: Likewise.
26140         * doc/tm.texi: Likewise.
26141
26142 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
26143
26144         PR target/34393
26145         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
26146         to a reg.
26147
26148 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
26149
26150         * doc/md.texi (clz, ctz): Add reference.
26151         * doc/rtl.texi (clz, ctz): Likewise.
26152
26153 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26154
26155         PR other/35148
26156         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
26157         srcdir.
26158
26159 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
26160
26161         * config/s390/s390.c (struct constant_pool): New field
26162         emit_pool_after added.
26163         (s390_mainpool_start): Set the emit_pool_after flag according
26164         to the section switch notes.
26165         (s390_mainpool_finish): Consider emit_pool_after when emitting
26166         the literal pool at the end of the function.
26167         (s390_chunkify_start): Force literal pool splits at section
26168         switch notes.
26169
26170 2008-02-13  Michael Matz  <matz@suse.de>
26171
26172         PR debug/35065
26173         * var-tracking.c (clobber_variable_part): Correctly traverse the
26174         list.
26175
26176 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26177
26178         PR 29673
26179         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
26180         Add -fdump-ipa-inline.
26181         * tree-dump.c (dump_files): Remove tree-inlined dump.
26182         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
26183
26184 2008-02-12  Richard Guenther  <rguenther@suse.de>
26185
26186         PR tree-optimization/35171
26187         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
26188         default defs.
26189
26190 2008-02-12  Richard Guenther  <rguenther@suse.de>
26191
26192         PR middle-end/35163
26193         * fold-const.c (fold_widened_comparison): Use get_unwidened in
26194         value-preserving mode.  Disallow final truncation.
26195
26196 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26197
26198         PR middle-end/35136
26199         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
26200         code from here to...
26201         (force_gimple_operand): ...here.
26202
26203 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
26204
26205         PR c++/35144
26206         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
26207         non-compatible pointers.
26208         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
26209         different FIELD_DECLs, try harder by comparing field offsets, sizes
26210         and types.
26211
26212         PR inline-asm/35160
26213         * function.c (match_asm_constraints_1): Don't replace the same input
26214         multiple times.
26215
26216 2008-02-12  Anatoly Sokolov <aesok@post.ru>
26217
26218         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
26219         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
26220         (expand_epilogue): Restore RAMPZ register.
26221         * config/avr/avr.md (RAMPZ_ADDR): New constant.
26222
26223 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
26224
26225         * config/i386/cygwin.asm: (__alloca): Correct calling
26226         convention and alignment.
26227         (__chkstk): Force 8 byte stack alignment.
26228
26229 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
26230             Richard Guenther  <rguenther@suse.de>
26231
26232         PR tree-optimization/33992
26233         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
26234         the zero we compare against.
26235
26236 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
26237
26238         PR libfortran/35063
26239         * gthr-win32.h (__gthread_mutex_destroy_function): New function
26240         to CloseHandle after unlocking to prevent accumulation of handle
26241         count.
26242
26243 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26244
26245         PR middle_end/34150
26246         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
26247         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
26248         and update LABEL_NUSES during and after reload.
26249
26250 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
26251
26252         PR middle-end/34627
26253         * combine.c (simplify_if_then_else): Make sure the comparison is
26254         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
26255
26256 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
26257
26258         PR bootstrap/35051
26259         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
26260         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
26261         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
26262         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
26263         * tree.h (get_type_static_bounds): Likewise.
26264
26265 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26266
26267         * doc/invoke.texi (Option Summary, C++ Dialect Options)
26268         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26269         Make -Wfoo language annotations match what the compiler outputs.
26270
26271 2008-02-08  Sa Liu  <saliu@de.ibm.com>
26272
26273         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
26274         intrinsics spu_convts, spu_convtu, spu_convtf.
26275
26276 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
26277
26278         * doc/extend.texi (Function Attributes) <noinline>: Mention
26279         asm ("") as method to keep calls.
26280
26281 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26282
26283         PR other/32754
26284         * doc/options.texi (Options): Replace references to opts.sh with
26285         optc-gen.awk.
26286         * opts-common.c: Likewise.
26287         * optc-gen.awk: Likewise.
26288
26289 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
26290
26291         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
26292
26293 2008-02-07  Richard Henderson  <rth@redhat.com>
26294
26295         PR rtl-opt/33410
26296         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
26297         EXPR_LIST for the REG_EQUAL instead of a comparison with a
26298         funny mode.
26299
26300 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
26301
26302         PR tree-optimization/35085
26303         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
26304         for operand entry oe2 in addition to operand entry oe3 in order to
26305         expose more opportunities for vectorizer sum reduction.
26306
26307 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26308
26309         PR other/35107
26310         * Makefile.in (LIBS): Remove $(GMPLIBS).
26311         (cc1-dummy, cc1): Add $(GMPLIBS).
26312
26313 2008-02-06  Jan Hubicka  <jh@suse.cz>
26314
26315         PR target/23322
26316         * i386.md (moddf_integer): Do not produce partial memory stalls for
26317         targets where it hurts.
26318
26319 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
26320
26321         PR target/35083
26322         * optabs.c (expand_float): Do not check for decimal modes when
26323         expanding unsigned integer through signed conversion.
26324
26325 2008-02-06  Nick Clifton  <nickc@redhat.com>
26326
26327         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
26328         inside the clobber with a match_operand and duplicated operand
26329         number in the constraint.
26330         (ineqbranchsi): Delete redundant comment.
26331
26332 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
26333
26334         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
26335         builtin_define ("__USE_INIT_FINI__").
26336         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
26337         -msx multilibs.
26338         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
26339
26340 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26341
26342         PR documentation/30330
26343         * doc/invoke.texi (C++ Dialect Options)
26344         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26345         For each warning option -Wfoo that allows -Wno-foo, ensure both
26346         -Wfoo and -Wno-foo are listed in the option index.  Fix index
26347         entry of -Wswitch-default, index -Wnormalized= including the
26348         `=', and -Wlarger-than-@var{len} including @var{len}.
26349
26350 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26351
26352         * config/i386/i386.md (floatunssisf2): Use
26353         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
26354         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
26355         Macroize expander using MODEF mode iterator.
26356
26357 2008-02-05  Diego Novillo  <dnovillo@google.com>
26358
26359         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
26360
26361         PR 33738
26362         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
26363
26364 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26365
26366         PR other/35070
26367         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
26368
26369 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
26370
26371         PR target/35084
26372         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
26373         to indicate if a message should be generated.
26374         (init_cumulative_args): Updated.
26375         (function_value_32): Likewise.
26376
26377 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
26378
26379         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
26380
26381 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26382
26383         PR target/35083
26384         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
26385         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
26386
26387 2008-02-04  Diego Novillo  <dnovillo@google.com>
26388
26389         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
26390
26391         PR 33738
26392         * tree-vrp.c (vrp_evaluate_conditional): With
26393         -Wtype-limits, emit a warning when comparing against a
26394         constant outside the natural range of OP0's type.
26395
26396 2008-02-04  Richard Guenther  <rguenther@suse.de>
26397
26398         PR middle-end/33631
26399         * expr.c (count_type_elements): Give for unions instead of
26400         guessing.
26401
26402 2008-02-04  Richard Guenther  <rguenther@suse.de>
26403
26404         PR middle-end/35043
26405         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
26406         to TYPE_DOMAINs base type instead of using bitsizetype here.
26407
26408 2008-02-03  Jason Merrill  <jason@redhat.com>
26409
26410         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
26411
26412 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26413
26414         PR other/29972
26415         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
26416         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
26417         (RS/6000 and PowerPC Options): Fix typos and markup.
26418         * doc/passes.texi (Tree-SSA passes): Likewise.
26419
26420 2008-02-02  Michael Matz  <matz@suse.de>
26421
26422         PR target/35045
26423         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
26424         from record_last_reg_set_info.
26425         (record_last_reg_set_info): Take an RTX argument, iterate over all
26426         constituent hardregs.
26427         (record_last_set_info, record_opr_changes): Change calls to
26428         new signature or to record_last_reg_set_info_regno.
26429
26430 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
26431
26432         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
26433
26434 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
26435
26436         PR rtl-optimization/34773
26437         * reg-notes.def (EQUAL): Mention significance of combination of
26438         REG_EQUAL and REG_RETVAL.
26439         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
26440         insn that has a REG_RETVAL.
26441
26442 2008-02-01  Roger Sayle  <roger@eyesopen.com>
26443
26444         PR bootstrap/33781
26445         * configure.ac (--enable-fixed-point): Disable unless explicitly
26446         requested on IRIX.
26447         * configure: Regenerate.
26448
26449 2008-02-01  Richard Guenther  <rguenther@suse.de>
26450
26451         PR other/35042
26452         * invoke.texi (-finline-limit): Remove no longer true parts
26453         of the documentation.  Note that there is no default value.
26454
26455 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
26456             Mark Mitchell  <mark@codesourcery.com>
26457             Ben Elliston  <bje@au.ibm.com>
26458
26459         PR c/29326
26460         * doc/extend.texi (Other Builtins): Document.
26461
26462 2008-01-31  Tom Browder <tom.browder@gmail.com>
26463
26464         * doc/c-tree.texi (Types): Fix grammar.
26465         (Expression trees): Ditto.
26466         * doc/passes.texi (Tree-SSA passes): Ditto.
26467
26468         * doc/configterms.texi (Configure Terms): Fix typo.
26469         * doc/cpp.texi (Common Predefined Macros): Ditto.
26470         * doc/md.texi (Machine Constraints): Ditto.
26471
26472         * doc/makefile.texi (Makefile): Add comma.
26473
26474 2008-01-31  Tom Browder  <tom.browder@gmail.com>
26475             Gerald Pfeifer  <gerald@pfeifer.com>
26476
26477         * doc/sourcebuild.texi (Front End): Remove references to CVS
26478         and CVSROOT/modules.
26479         (Texinfo Manuals): Replace reference to CVS by one to SVN.
26480         (Back End): Remove reference to CVS.
26481
26482 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26483
26484         PR target/34900
26485         * config/mips/mips.c (gen_load_const_gp): New function, taking a
26486         comment from...
26487         (mips16_gp_pseudo_reg): ...here.
26488         * config/mips/mips.md (load_const_gp): Replace with...
26489         (load_const_gp_<mode>): ...this :P-based insn.
26490
26491 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26492
26493         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
26494         options. Minor fixes.
26495         (-std): Move reference to standards closer to where language
26496         standards are first mentioned.
26497
26498 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26499
26500         PR rtl-optimization/34995
26501         * reload.c (alternative_allows_const_pool_ref): Take an rtx
26502         parameter and return a bool.  If the rtx parameter is nonnull,
26503         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
26504         (find_reloads): Update call accordingly.  Pass the new operand
26505         if it needed no address reloads, otherwise pass null.
26506
26507 2008-01-30  Richard Henderson  <rth@redhat.com>
26508
26509         PR c/34993
26510         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
26511         for unbounded arrays.
26512
26513 2008-01-30  Silvius Rus  <rus@google.com>
26514
26515         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
26516
26517 2008-01-30  Jan Hubicka  <jh@suse.cz>
26518
26519         PR target/34982
26520         * i386.c (init_cumulative_args): Use real function declaration when
26521         calling locally.
26522
26523 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
26524
26525         PR rtl-optimization/34998
26526         * global.c (build_insn_chain): Treat non-subreg_lowpart
26527         SUBREGs of pseudos as clobbering all the words covered by the
26528         SUBREG, not just all the bytes.
26529         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
26530         original df_ref rather than an extract parameter.
26531         (global_conflicts): Update call accordingly.
26532
26533 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
26534
26535         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
26536         the overflow check to make it easier to read.
26537         (__fixtfdi): Change the type of the ll member in union
26538         long_double to UDItype_x.
26539
26540 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
26541
26542         PR middle-end/34969
26543         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
26544         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
26545         * tree-inline.c (fold_marked_statements): Call
26546         cgraph_update_edges_for_call_stmt if folding a call statement.
26547         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
26548         debug_generic_stmt calls, reset it back afterwards.
26549
26550         PR c/35017
26551         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
26552         static decls.
26553         * c-typeck.c (build_external_ref): Don't pedwarn about
26554         static vars in current function's scope.
26555
26556 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
26557
26558         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
26559
26560 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
26561
26562         PR c/35002
26563         * ipa-struct-reorg.c: Fix spelling.
26564         * params.def: Ditto.
26565
26566 2008-01-29  Richard Guenther  <rguenther@suse.de>
26567
26568         PR middle-end/35006
26569         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
26570         field.
26571         * tree-inline.c (remap_type): Increment remapping_type_depth
26572         around remapping types.
26573         (copy_body_r): Only add referenced variables if they are referenced
26574         from code, not types.
26575
26576 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
26577
26578         PR c++/34055
26579         PR c++/34103
26580         PR c++/34219
26581         PR c++/34606
26582         PR c++/34753
26583         PR c++/34754
26584         PR c++/34755
26585         PR c++/34919
26586         PR c++/34961
26587         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
26588         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
26589
26590 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
26591
26592         PR target/34412
26593         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
26594         pointer for tiny stack.
26595
26596 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26597
26598         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
26599
26600 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26601
26602         * config/vx-common.h: Fix typo in comment.
26603
26604 2008-01-28  Ian Lance Taylor  <iant@google.com>
26605
26606         PR c++/34862
26607         PR c++/33407
26608         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
26609         coalesce pointers if they have different DECL_NO_TBAA_P values.
26610         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
26611         between variables with different DECL_NO_TBAA_P values.
26612
26613 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
26614
26615         PR 31535
26616         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
26617         are not legitimate small data references on SPE targets.
26618
26619 2008-01-28  David Daney  <ddaney@avtrex.com>
26620
26621         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
26622
26623 2008-01-28  David Daney  <ddaney@avtrex.com>
26624
26625         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
26626
26627 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
26628
26629         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
26630         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
26631         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
26632         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
26633         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
26634         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
26635         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
26636         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
26637
26638 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26639
26640         * basic-block.h (condjump_equiv_p): Fix comment.
26641
26642 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26643
26644         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
26645         print_generic_stmt_indented): Fix comment.
26646
26647 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26648
26649         * configure.ac (__stack_chk_fail): Add detecion for availability
26650         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
26651         * configure: Regenerate.
26652
26653 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
26654
26655         PR middle-end/34688
26656         * final.c (output_addr_const): Handle TRUNCATE.
26657
26658 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
26659
26660         PR target/34711
26661         * tree-ssa-loop-ivopts.c (comp_cost): New type.
26662         (zero_cost, infinite_cost): New constants.
26663         (struct cost_pair): Change type of cost to comp_cost.
26664         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
26665         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
26666         New functions.
26667         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
26668         split_address_cost, ptr_difference_cost, difference_cost,
26669         get_computation_cost_at, get_computation_cost,
26670         determine_use_iv_cost_generic, determine_use_iv_cost_address,
26671         determine_use_iv_cost_condition, determine_use_iv_costs,
26672         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
26673         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
26674         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
26675         Change type of cost to comp_cost.
26676         (determine_iv_cost): Increase cost of non-original ivs, instead
26677         of decreasing the cost of original ones.
26678         (get_address_cost): Indicate the complexity of the addressing mode
26679         in comp_cost.
26680         (try_add_cand_for): Prefer using ivs not specific to some object.
26681         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
26682
26683 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
26684             Janis Johnson  <janis187@us.ibm.com>
26685
26686         PR target/34814
26687         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
26688         (TARGET_INSTANTIATE_DECLS): Likewise.
26689         * target.h (expand_to_rtl_hook): New target hook.
26690         (instantiate_decls): Likewise.
26691         * function.c (instantiate_decl): Make non-static.  Rename to...
26692         (instantiate_decl_rtl): ... this.
26693         (instantiate_expr): Use instantiate_decl_rtl.
26694         (instantiate_decls_1): Likewise.
26695         (instantiate_decls): Likewise.
26696         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
26697         * function.h (instantiate_decl_rtl): Add prototype.
26698         * cfgexpand.c (target.h): New include.
26699         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
26700         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
26701         (TARGET_INSTANTIATE_DECLS): Likewise.
26702         (TARGET_INITIALIZER): New target hooks added.
26703         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
26704         New prototype.
26705         * config/rs6000/rs6000.c (tree-flow.h): New include.
26706         (machine_function): Add sdmode_stack_slot field.
26707         (rs6000_alloc_sdmode_stack_slot): New function.
26708         (rs6000_instantiate_decls): Likewise.
26709         (rs6000_secondary_memory_needed_rtx): Likewise.
26710         (rs6000_check_sdmode): Likewise.
26711         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
26712         (TARGET_INSTANTIATE_DECLS): Likewise.
26713         (rs6000_hard_regno_mode_ok): Allow SDmode.
26714         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
26715         (rs6000_emit_move): Handle SDmode.
26716         (function_arg_advance): Likewise.
26717         (function_arg): Likewise.
26718         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
26719         SDmode var args for 32-bit compiles.
26720         (rs6000_secondary_reload_class): Handle SDmode.
26721         (rs6000_output_function_epilogue): Likewise.
26722         (rs6000_function_value): Simplify if statement.
26723         (rs6000_libcall_value): Likewise.
26724         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
26725         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
26726         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
26727         (movsd_hardfloat): New define_insn.
26728         (movsd_softfloat): Likewise.
26729         (movsd_store): Likewise.
26730         (movsd_load): Likewise.
26731         (extendsddd2): Likewise.
26732         (extendsdtd2): Likewise.
26733         (truncddsd2): Likewise.
26734         (movdd_hardfloat64): Fixup comment.
26735         (UNSPEC_MOVSD_LOAD): New constant.
26736         (UNSPEC_MOVSD_STORE): Likewise.
26737
26738 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
26739
26740         PR c++/34965
26741         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
26742         TRUTH_XOR_EXPR.
26743         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
26744         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
26745         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
26746         and TRUTH_XOR_EXPR.
26747
26748 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
26749
26750         PR target/34794
26751         * config.gcc: Separate AIX 5.3 from AIX 6.1.
26752         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26753         __LONGDOUBLE128 too.
26754         * config/rs6000/aix61.h: New file.
26755
26756 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26757
26758         PR rtl-optimization/34959
26759         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
26760         popcount and parity rtxes the same mode as their operand.
26761         Truncate or extend the result to the return value's mode
26762         if necessary.
26763
26764 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26765
26766         PR target/34981
26767         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
26768         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
26769         to GOT_VERSION_REGNUM.
26770         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
26771         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
26772         * config/mips/mips.c (mips_emit_call_insn): New function.
26773         (mips_call_tls_get_addr): Call mips_expand_call directly.
26774         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
26775         emit_call_insn.
26776         (mips16_build_call_stub): Likewise.  Return the call insn or null.
26777         (mips_expand_call): Update the call to mips16_build_call_stub
26778         accordingly and a remove redundant condition.  Assert that MIPS16
26779         stubs do not use lazy binding.  Use mips_emit_call_insn and return
26780         the call insn.
26781         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
26782         TARGET_USE_GOT.
26783         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
26784         (mips_avoid_hazard): Remove hazard_set handling.
26785         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
26786         (UNSPEC_RESTORE_GP): ...this.
26787         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
26788         (FAKE_CALL_REGNO): Rename to...
26789         (GOT_VERSION_REGNUM): ...this.
26790         (type): Add "ghost" value.  Add an associated insn reservation.
26791         (hazard_set): Remove.
26792         (exception_receiver): Rename to...
26793         (restore_gp): ...this and update the unspec identifier accordingly.
26794         (exception_receiver, nonlocal_got_receiver): New expanders.
26795         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
26796         FAKE_CALL_REGNO.  Remove hazard_set attribute.
26797         (set_got_version, update_got_version): New patterns.
26798
26799 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
26800
26801         PR target/34970
26802         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
26803
26804 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26805
26806         PR other/31955
26807         * doc/install.texi2html: Generate gcc-vers.texi.
26808
26809 2008-01-25  DJ Delorie  <dj@redhat.com>
26810
26811         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
26812
26813 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26814
26815         * config/c4x: Remove directory.
26816         * config.gcc (crx-*, mt-*): Mark obsolete.
26817         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
26818         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
26819         sh-*-rtemscoff*): Remove cases.
26820         * defaults.h (C4X_FLOAT_FORMAT): Remove.
26821         * real.c (encode_c4x_single, decode_c4x_single,
26822         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
26823         c4x_extended_format): Remove.
26824         * real.h (c4x_single_format, c4x_extended_format): Remove.
26825         * doc/extend.texi (interrupt, naked): Remove mention of attributes
26826         on C4x.
26827         (Pragmas): Remove comment about c4x pragmas.
26828         * doc/install.texi (c4x): Remove target-specific instructions.
26829         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
26830         * doc/md.texi (Machine Constraints): Remove C4x documentation.
26831         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
26832         refer to C4x source files as examples.
26833         (C4X_FLOAT_FORMAT): Remove documentation.
26834
26835 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
26836
26837         * config/bfin/bfin.c (override_options): Reorder tests so that
26838         flag_pic gets enabled for -msep-data.
26839
26840 2008-01-25  Richard Guenther  <rguenther@suse.de>
26841
26842         PR middle-end/32244
26843         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
26844         to its bitfield precision if required.
26845
26846 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26847
26848         PR middle-end/33880
26849         * tree-nested.c (walk_omp_for): New function.
26850         (convert_nonlocal_reference, convert_local_reference): Call
26851         walk_omp_for on OMP_FOR.
26852         (convert_call_expr): Call walk_body on OMP_FOR's
26853         OMP_FOR_PRE_INIT_BODY.
26854
26855 2008-01-25  Richard Guenther  <rguenther@suse.de>
26856
26857         PR tree-optimization/34966
26858         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
26859         default defs and PHI_NODEs we have to insert after the
26860         defining statement.
26861
26862 2008-01-24  Nick Clifton  <nickc@redhat.com>
26863
26864         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
26865         Provide a default definition.
26866         (LIBGCC2_UNITS_PER_WORD): Likewise.
26867
26868         * config/stormy16/stormy16.c: Include df.h for the prototype
26869         for df_regs_ever_live_p.
26870         (xstormy16_expand_builtin_va_start): Convert the stack offset
26871         into a component_ref and then use POINTER_PLUS_EXPR to add it
26872         to the incoming_virtual_args_rtx.
26873         (xstormy16_gimplify_va_arg_expr): Rename to
26874         xstormy16_gimplify_va_arg_expr.
26875         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
26876         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
26877         xstormy16_gimplify_va_arg_expr.
26878         Fix up some formatting issues.
26879
26880         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
26881         Move to predicates.md.
26882         (xs_hi_general_operand): Likewise.
26883         (xs_hi_nonmemory_operand): Likewise.
26884         * config/stormy16/predicates.md:
26885         (xstormy16_carry_plus_operand): New predicate.
26886         (xs_hi_general_operand): New predicate.
26887         (xs_hi_nonmemory_operand): New predicate.
26888         * config/stormy16/stormy16-protos.h:
26889         (xstormy16_carry_plus_operand): Delete prototype.
26890         (xs_hi_general_operand): Likewise.
26891         (xs_hi_nonmemory_operand): Likewise.
26892
26893         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
26894         modifiers as they are no longer needed and they can trigger
26895         reload spill failures.
26896
26897         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
26898         with a match_operand in order to help reload.
26899
26900         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
26901         constraint with 'e' for the 8th alternative as this version of
26902         the mov.w instruction only accepts the lower 8 registers.
26903
26904 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
26905
26906         PR target/34856
26907         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
26908         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
26909         vector elements.
26910
26911 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26912
26913         PR middle-end/33333
26914         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
26915
26916 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26917
26918         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
26919         New functions.
26920         (remove_structure): Update allocations list before removing structure.
26921
26922 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26923
26924         * ipa-struct-reorg.c (is_safe_cond_expr,
26925         create_new_stmts_for_cond_expr): Use integer_zerop function,
26926         that recognize not only zero-pointer, but zero-integer too.
26927
26928 2008-01-25  Ben Elliston  <bje@au.ibm.com>
26929
26930         PR other/22232
26931         * fixproto: Escape "." in sed expression that strips leading "./".
26932
26933 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
26934
26935         PR driver/34904
26936         * gcc.c (SWITCH_OK): Removed.
26937         (SWITCH_LIVE): Changed to bit.
26938         (SWITCH_FALSE): Likewise.
26939         (SWITCH_IGNORE): Likewise.
26940         (switchstr): Change live_cond to unsigned int.
26941         (process_command): Replace SWITCH_OK with 0.
26942         (do_self_spec): Likewise.
26943         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
26944         (give_switch): Likewise.
26945         (used_arg): Likewise.
26946         (do_spec_1): Set the SWITCH_IGNORE bit.
26947         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
26948         bits.  Set the SWITCH_LIVE bit.
26949
26950 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26951
26952         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
26953
26954 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
26955
26956         PR tree-optimization/34472
26957         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
26958         parameter to a "bool *" and set *DATA to false if there is
26959         an unsafe access.  Do not delete the structure here.
26960         (check_cond_exprs): Delete it here instead.
26961         (check_cond_exprs, exclude_cold_structs): Do not increase
26962         I when removing a structure.
26963
26964 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
26965
26966         PR target/34856
26967         * config/i386/i386.c (ix86_expand_vector_init): Consider only
26968         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
26969
26970 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
26971
26972         PR middle-end/34934
26973         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
26974         a fixed vector for stack.
26975
26976 2008-01-24  Ben Elliston  <bje@au.ibm.com>
26977
26978         PR c++/25701
26979         * doc/gcc.texi (Software development): Add a direntry for g++.
26980
26981 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
26982
26983         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
26984         stale and straggling -fforce-addr comments above.
26985
26986         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
26987         define.
26988         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
26989         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
26990
26991 2008-01-23  Michael Matz  <matz@suse.de>
26992
26993         PR debug/34895
26994         * dwarf2out.c (force_type_die): Use modified_type_die instead of
26995         gen_type_die.
26996
26997 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
26998
26999         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
27000         malloc result type.
27001
27002 2008-01-23 Anatoly Sokolov <aesok@post.ru>
27003
27004         * config/avr/avr.c (avr_current_arch): New variable.
27005         (avr_arch_types): Add 'avr31' and 'avr51' entries.
27006         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
27007         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
27008         (avr_override_options): Init 'avr_current_arch'.
27009         (base_arch_s): Move from here...
27010         * config/avr/avr.h (base_arch_s): ... here. Add new members
27011         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
27012         'mega' to 'have_jmp_call'.
27013         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
27014         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
27015         macros.
27016         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
27017         architectures.
27018         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
27019         MULTILIB_MATCHES): Ditto.
27020
27021 2008-01-23  Richard Guenther  <rguenther@suse.de>
27022
27023         PR middle-end/31529
27024         * cgraphunit.c (cgraph_reset_node): Always mark the node
27025         not reachable if it is not queued already.
27026
27027 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
27028
27029         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
27030         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
27031         (cputype_selected): New static variable.
27032         (bfin_handle_option): Set it if -mcpu is used.
27033         (override_option): Select default set of workarounds if no cpu type
27034         selected on the command line.
27035         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
27036
27037         From  Michael Frysinger  <michael.frysinger@analog.com>
27038         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
27039         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
27040
27041         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
27042         for bf547, bf523, bf524, and bf526.
27043         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
27044         bf526.
27045         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
27046         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
27047         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
27048         __ADSPBF547__ and __ADSPBF54x__ for bf547.
27049         * doc/invoke.texi (Blackfin Options): Document that
27050         -mcpu now accept bf547, bf523, bf524, and bf526.
27051
27052 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
27053
27054         PR rtl-optimization/34628
27055         * combine.c (try_combine): Stop and undo after the first combination
27056         if an autoincrement side-effect on the first insn has effectively
27057         been lost.
27058
27059 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
27060
27061         PR target/34529
27062         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
27063         Offset addresses are not valid for Altivec or paired float modes.
27064
27065 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
27066
27067         PR c++/34607
27068         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
27069         if DECL_INITIAL (decl) is error_mark_node.
27070
27071         PR c++/34914
27072         * c-common.c (handle_vector_size_attribute): Only allow
27073         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
27074         the same way as pointer, array etc. types.
27075         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
27076
27077         PR c++/34917
27078         * tree.c (build_type_attribute_qual_variant): Call
27079         build_qualified_type if attributes are equal, but quals are not.
27080
27081 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27082
27083         PR 32102
27084         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
27085         * flags.h (warn_strict_aliasing): Remove.
27086         (warn_strict_overflow): Remove.
27087         * opts.c (warn_strict_aliasing): Remove.
27088         (warn_strict_overflow): Remove.
27089         * c-opts.c (c_common_handle_option): -Wall only sets
27090         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
27091         (c_common_post_options): Give default values to -Wstrict-aliasing
27092         and -Wstrict-overflow if they are uninitialized.
27093         * common.opt (Wstrict-aliasing): Specify Var and Init.
27094         (Wstrict-overflow): Likewise.
27095
27096 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
27097
27098         PR rtl-optimization/26854
27099         PR rtl-optimization/34400
27100         PR rtl-optimization/34884
27101         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
27102         DF_RD->gen.
27103         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
27104         (df_rd_bb_info.expanded_lr_out): Deleted
27105         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
27106         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
27107         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27108         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27109         Removed code to allocate, initialize or free expanded_lr_out.
27110         (df_rd_bb_local_compute_process_def): Restructured to make more
27111         understandable.
27112         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
27113         sets if the sets are being trimmed.
27114
27115 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27116
27117         PR bootstrap/32287
27118         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
27119         (as_vers): Likewise.
27120         * configure: Regenerated.
27121
27122 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27123
27124         PR middle-end/33092
27125         * tree-pass.h (pass_build_alias): New pass.
27126         * tree-ssa-alias.c (gate_build_alias): New.
27127         (pass_build_alias): New.
27128         * passes.c (init_optimization_passes): Add pass_build_alias after
27129         pass_create_structure_vars.
27130
27131 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
27132
27133         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
27134         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
27135         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
27136         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
27137         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
27138         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
27139         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
27140         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
27141         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
27142         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
27143         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
27144         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
27145         * config/s390/s390.md (FP_ALL): New mode iterator.
27146         (_d): New mode attribute.
27147         ("*signbit<mode>2>"): Changed mode of first operand.
27148         ("isinf<mode>2"): Changed mode of first operand.
27149         ("*TDC_insn"): Adaptation for DFP modes.
27150
27151 2008-01-22  Ben Elliston  <bje@au.ibm.com>
27152
27153         * tree.c (check_qualified_type): Improve function description.
27154
27155 2008-01-21  Jason Merrill  <jason@redhat.com>
27156
27157         PR c++/34196
27158         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
27159         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
27160         if it is set.
27161
27162 2008-01-21  DJ Delorie  <dj@redhat.com>
27163
27164         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
27165         return zero.
27166
27167 2008-01-21  Richard Guenther  <rguenther@suse.de>
27168
27169         PR middle-end/34856
27170         * tree-cfg.c (verify_expr): Allow all invariant expressions
27171         instead of just constant class ones as reference argument.
27172         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
27173         like any other constant.
27174         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
27175
27176 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
27177
27178         * regmove.c (fixup_match_1): Update call crossed frequencies.
27179
27180 2008-01-21  Richard Guenther  <rguenther@suse.de>
27181
27182         PR c/34885
27183         * tree-inline.c (setup_one_parameter): Deal with mismatched
27184         types using a VIEW_CONVERT_EXPR.
27185
27186 2008-01-21  Alon Dayan  <alond@il.ibm.com>
27187             Olga Golovanevsky  <olga@il.ibm.com>
27188
27189         PR tree-optimization/34701
27190         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
27191         when the structure size is not a power of 2.
27192
27193 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
27194
27195         * doc/install.texi: Add doc for --enable-checking=df.
27196
27197 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
27198
27199         PR rtl-optimization/34808
27200         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
27201
27202 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27203
27204         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
27205         input.
27206
27207 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
27208
27209         PR rtl-optimization/26854
27210         PR rtl-optimization/34400
27211         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
27212         DF_RD->gen.
27213         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
27214         (df_rd_bb_info.expanded_lr_out): New.
27215         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
27216         * loop_iv.c (iv_analysis_loop_init): Ditto.
27217         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27218         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27219         Added code to allocate, initialize or free expanded_lr_out.
27220         (df_rd_bb_local_compute_process_def): Restructured to make
27221         more understandable.
27222         (df_rd_confluence_n): Add code to do nothing with fake edges and
27223         code to no apply invalidate_by_call sets if the sets are being trimmed.
27224         (df_lr_local_finalize): Renamed to df_lr_finalize.
27225         (df_live_local_finalize): Renamed to df_live_finalize.
27226
27227 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27228
27229         PR target/34831
27230         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
27231         deciding whether to use reciprocal instructions.
27232
27233 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
27234
27235         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
27236         dwarf2out_note_section_used if cold_text_section is NULL.
27237
27238 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
27239
27240         PR gcov-profile/34610
27241         * tree-cfg.c (make_edges): Mark both outgoing edges from
27242         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
27243         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
27244         from OMP_FOR and OMP_CONTINUE outgoing edges.
27245
27246         * tree-profile.c (tree_profiling): Return early if
27247         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
27248         at the end.
27249         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
27250         from cfun to child_cfun.
27251         * function.h (struct function): Add after_tree_profile bit.
27252
27253 2008-01-19 Anatoly Sokolov <aesok@post.ru>
27254
27255         * config/avr/avr.S (_exit): Disable interrupt.
27256
27257 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
27258             Steven Bosscher  <stevenb.gcc@gmail.com>
27259
27260         PR rtl-optimization/26854
27261         PR rtl-optimization/34400
27262         * df-problems.c (df_live_scratch): New scratch bitmap.
27263         (df_live_alloc): Allocate df_live_scratch when doing df_live.
27264         (df_live_reset): Clear the proper bitmaps.
27265         (df_live_bb_local_compute): Only process the artificial defs once
27266         since the order is not important.
27267         (df_live_init): Init the df_live sets only with the variables
27268         found live by df_lr.
27269         (df_live_transfer_function): Use the df_lr sets to prune the
27270         df_live sets as they are being computed.
27271         (df_live_free): Free df_live_scratch.
27272
27273 2008-01-18  Ian Lance Taylor  <iant@google.com>
27274
27275         * common.opt: Add fmerge-debug-strings.
27276         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
27277         flag_merge_debug_strings rather than flag_merge_constants.
27278         * doc/invoke.texi (Option Summary): Mention
27279         -fmerge-debug-strings.
27280         (Debugging Options): Document -fmerge-debug-strings.
27281
27282 2008-01-18  Ian Lance Taylor  <iant@google.com>
27283
27284         PR c++/33407
27285         * tree.h (DECL_IS_OPERATOR_NEW): Define.
27286         (struct tree_function_decl): Add new field operator_new_flag.
27287         * tree-inline.c (expand_call_inline): When inlining a call to
27288         operator new, force the return value to go into a variable, and
27289         set DECL_NO_TBAA_P on that variable.
27290         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
27291
27292 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
27293
27294         PR debug/34484
27295         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
27296         DWARF2_DEBUGGING_INFO.
27297         (dwarf2out_note_section_used): Ditto.  Add prototype.
27298         (have_multiple_function_sections, text_section_used,
27299         cold_text_section_used, *cold_text_sections): Move declarations
27300         before their uses.
27301
27302 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
27303
27304         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
27305         field and add signal_ra.
27306         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
27307         assignments to frame state pc.  Move end of stack check after
27308         MD_FALLBACK_FRAME_STATE_FOR.
27309         (uw_update_context_1): Use frame state signal_regs if set, instead
27310         of checking signal_frame flag.
27311         (uw_update_context): Use frame state signal_ra if set.
27312         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
27313         * config/xtensa/linux-unwind.h: New file.
27314
27315 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
27316
27317         * modulo-sched.c (get_sched_window): Fix comment typo.
27318
27319 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
27320
27321         PR tree-optimization/34648
27322         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
27323
27324 2008-01-17  Anatoly Sokolov <aesok@post.ru>
27325
27326         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
27327         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
27328
27329 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
27330
27331         PR rtl-optimization/34400
27332         * df-core.c (df_worklist_dataflow_overeager,
27333         df_worklist_dataflow_doublequeue): New functions.
27334         (df_worklist_dataflow): Two different worklist solvers.
27335         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
27336         New param.
27337
27338 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27339
27340         PR testsuite/34821
27341         * doc/invoke.texi: Document the dependence on pthread for fopenmp
27342         and ftree-parallelize-loops.
27343
27344 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
27345
27346         PR rtl-optimization/34826
27347         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
27348
27349 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27350
27351         * global.c (find_reg): Mark the eh regs as used if necessary.
27352         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
27353         * ra.h (struct allocno): no_eh_reg field added.  Changed
27354         no_stack_reg type to bitfield.
27355
27356 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
27357
27358         * tree.c (substitute_in_expr): Add missing 'break'.
27359
27360 2008-01-17  Richard Guenther  <rguenther@suse.de>
27361
27362         PR tree-optimization/34825
27363         * tree-ssa-math-opts.c (is_division_by): Do not recognize
27364         x / x as division to handle.
27365
27366 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27367
27368         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
27369         "-pthread" is specified.
27370         * pa-hpux11.h (LIB_SPEC): Likewise.
27371
27372 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
27373             Peter Bergner  <bergner@vnet.ibm.com>
27374
27375         PR rtl-optimization/33796
27376         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
27377
27378 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27379
27380         PR libgfortran/34699
27381         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
27382         static links.
27383         * pa-hpux10.h (LINK_SPEC): Likewise.
27384         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
27385
27386 2008-01-16  Richard Guenther  <rguenther@suse.de>
27387
27388         PR middle-end/32628
27389         * fold-const.c (fold_convert_const_int_from_int): Do not
27390         set overflow if that occured only because of a sign extension
27391         change when converting from/to a sizetype with the same
27392         precision and signedness.
27393
27394 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27395
27396         PR debug/34249
27397         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
27398         location address to the correct place.  Update copyright year.
27399
27400 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27401
27402         * lambda-code.c (lambda_transform_legal_p): Handle the case of
27403         no dependences in the dependence_relations vector.
27404
27405 2008-01-16  Jan Hubicka  <jh@suse.cz>
27406
27407         PR rtl-optimization/31396
27408         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
27409         * cfg.c (dump_reg_info): Print it.
27410         * regs.h (struct reg_info_t): add freq_calls_crossed.
27411         (REG_FREQ_CALLS_CROSSED): New macro.
27412         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
27413         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
27414         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
27415         regmove_optimize): Update call crossed frequencies.
27416         * local-alloc.c (struct qty): Add freq_calls_crossed.
27417         (alloc_qty): Copute freq_calls_crossed.
27418         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
27419         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
27420         * ra.h (struct allocno): Add freq_calls_crossed.
27421
27422 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27423
27424         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
27425         libgomp when compiling with ftree-parallelize-loops.
27426         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
27427
27428 2008-01-16  Richard Guenther  <rguenther@suse.de>
27429
27430         PR tree-optimization/34769
27431         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
27432         * tree.c (int_cst_value): Instead make this function more
27433         permissive in what it accepts as valid input.  Document this
27434         function always sign-extends the value.
27435
27436 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
27437             Richard Guenther  <rguenther@suse.de>
27438
27439         PR c/34668
27440         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
27441         (gimple_fold_indirect_ref_rhs): ... this.
27442         (gimple_fold_indirect_ref): New function with foldings
27443         that preserve lvalueness.
27444         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
27445         * tree-flow.h (gimple_fold_indirect_ref): Declare.
27446         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
27447         to fold an INDIRECT_REF, fall back to the old use of
27448         fold_indirect_ref_1.
27449
27450 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27451
27452         * tree-data-ref.c (subscript_dependence_tester_1): Call
27453         free_conflict_function.
27454         (compute_self_dependence): Same.
27455
27456 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27457
27458         PR debug/34249
27459         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
27460         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
27461         function global.
27462         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
27463         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
27464         for DWARF2_UNWIND_INFO targets.
27465
27466 2008-01-16  Richard Guenther  <rguenther@suse.de>
27467
27468         PR c/34768
27469         * c-typeck.c (common_pointer_type): Do not merge inconsistent
27470         type qualifiers for function types.
27471
27472 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
27473
27474         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
27475         loop_iterator li from previous commit.
27476
27477 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
27478
27479         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
27480
27481 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27482
27483         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
27484         (parallelize_loops): Don't parallelize irreducible components.
27485
27486 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27487
27488         PR c++/24924
27489         * c-opts (c_common_post_options): Do not enable CPP
27490         flag_pedantic_errors by default.
27491
27492 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
27493
27494         PR rtl-optimization/31944
27495         * cse.c (remove_pseudo_from_table): New function.
27496         (merge_equiv_classes): Use above function to remove pseudo-registers.
27497         (invalidate): Likewise.
27498
27499 2008-01-13  Richard Guenther  <rguenther@suse.de>
27500
27501         PR middle-end/34601
27502         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
27503         instead of TYPE_MODE to deal with calls from expand_one_error_var.
27504
27505 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
27506
27507         * gcse.c (cprop_jump): Call validate_unshare_change instead of
27508         validate_change to unshare the source of the PC set.
27509
27510 2008-01-12  Jan Hubicka  <jh@suse.cz>
27511
27512         PR middle-end/32135
27513         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
27514         references above array bounds.  This might trigger bounds checks for
27515         pointers to arrays.
27516
27517 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27518
27519         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
27520         new_replaceable_dependencies.
27521
27522 2008-01-12  Doug Kwan  <dougkwan@google.com>
27523
27524         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
27525         instead of OPT_Wreturn_type in warning due to ignored return type
27526         qualifiers.
27527         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
27528         options included in -Wextra.
27529         * c.opt: New option -Wignored_qualifiers.
27530         * doc/invoke.texi (Warning Options, -Wextra): Add new option
27531         -Wignore_qualifiers.
27532         (-Wignored-qualifiers): Document.
27533         (-Wreturn-type): Remove description of functionality now handled
27534         by -Wignored-qualifiers.
27535
27536 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
27537
27538         PR ada/33788
27539         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
27540         NOP_EXPR if it is between integral types with the same precision.
27541
27542 2008-01-12  Jan Hubicka  <jh@suse.cz>
27543
27544         PR other/28023
27545         * invoke.texi (max-inline-recursive-depth): Fix default value.
27546
27547 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
27548
27549         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
27550         correct type.
27551
27552 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
27553
27554         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
27555
27556 2008-01-11  James E. Wilson  <wilson@specifix.com>
27557
27558         PR target/26015
27559         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
27560
27561 2008-01-11  Anatoly Sokolov <aesok@post.ru>
27562
27563         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
27564         save/restore frame pointer register and don't use 'call-prologues'
27565         optimization in function with "OS_task" attribute.
27566
27567 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
27568
27569         PR middle-end/31309
27570         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
27571         when copying to memory.
27572
27573 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
27574
27575         PR rtl-optimization/30905
27576         * cfgcleanup.c: Include dce.h
27577         (crossjumps_occured): New global variable.
27578         (try_crossjump_bb): Exit loop after finding a fallthru edge.
27579         If something changed, set crossjumps_occured to true.
27580         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
27581         Don't add/remove fake edges to exit here...
27582         (cleanup_cfg): ...but do it here, when crossjumping.
27583         Run a fast DCE when successful crossjumps occured in the latest
27584         iteration of try_optimize_cfg.
27585
27586 2008-01-11  Richard Guenther  <rguenther@suse.de>
27587
27588         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
27589         (struct vn_unary_op_s): Likewise.
27590         (vn_reference_insert): Free old reference on hash collision.
27591
27592 2008-01-10  Raksit Ashok  <raksit@google.com>
27593
27594         PR rtl-optimization/27971
27595         * combine.c (find_split_point): Split PLUS expressions which are
27596         inside a MEM rtx, and whose first operand is complex.
27597
27598 2008-01-10  DJ Delorie  <dj@redhat.com>
27599
27600         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
27601         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
27602         (m32c_hard_regno_ok): Call the underlying function.
27603
27604 2008-01-10  Richard Guenther  <rguenther@suse.de>
27605
27606         PR middle-end/34683
27607         * tree-cfg.c (tree_merge_blocks): Do not go through the
27608         full-blown folding and stmt updating path if we just deal
27609         with virtual operands.
27610         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
27611         test for abnormal SSA_NAMEs.
27612
27613 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
27614
27615         PR middle-end/34641
27616         * reload.c (push_reload): Add assertions.  All constants from
27617         reg_equiv_constant should have been used for replacing the respective
27618         pseudo earlier.
27619         (find_reloads_address): Invoke find_reloads_address_part for
27620         constant taken from the reg_equiv_constant array.
27621
27622 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
27623
27624         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
27625         field (valnum) the first in the struct.  Replace bools with
27626         unit bit fields.
27627
27628 2008-01-10  Richard Guenther  <rguenther@suse.de>
27629
27630         PR tree-optimization/34651
27631         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
27632         types and ordering for masking and converting.
27633
27634 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
27635
27636         PR tree-optimization/34017
27637         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
27638         also for PHI_NODE expressions.
27639
27640 2008-01-09  Jan Hubicka  <jh@suse.cz>
27641
27642         PR tree-optimization/34708
27643         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
27644         based on number of case labels.
27645         (init_inline_once): Remove switch_cost.
27646         * tree-inline.h (eni_weights_d): Remove switch_cost.
27647
27648 2008-01-09  Richard Guenther  <rguenther@suse.de>
27649         Andrew Pinski  <andrew_pinski@playstation.sony.com>
27650
27651         PR middle-end/30132
27652         * gimplify.c (gimplify_cond_expr): Do not create an addressable
27653         temporary if an rvalue is ok or an lvalue is not required.
27654
27655 2008-01-09  Richard Guenther  <rguenther@suse.de>
27656
27657         PR middle-end/34458
27658         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
27659         adjust return type.
27660
27661 2008-01-09  Richard Guenther  <rguenther@suse.de>
27662
27663         PR middle-end/34679
27664         * tree.c (host_integerp): Check for sizetype only if the
27665         type is an integer type.
27666
27667 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
27668
27669         PR debug/26364
27670         * opts.c (decode_options): Disable inlining of functions called
27671         once if not in unit-at-a-time mode.
27672
27673 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
27674
27675         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
27676
27677 2008-01-08  Richard Guenther  <rguenther@suse.de>
27678
27679         PR middle-end/31863
27680         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
27681         out early if the result will be unused.
27682
27683 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27684
27685         PR target/34709
27686         Revert:
27687
27688         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27689         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27690         for TARGET_RECIP.
27691
27692 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
27693
27694         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
27695         for vectorization tuned.
27696
27697 2008-01-08  Richard Guenther  <rguenther@suse.de>
27698
27699         PR tree-optimization/34683
27700         * tree-ssa-operands.c (operand_build_cmp): Export.
27701         * tree-ssa-operands.h (operand_build_cmp): Declare.
27702         * tree-vn.c (vuses_compare): Remove.
27703         (sort_vuses): Use operand_build_cmp.
27704         (sort_vuses_heap): Likewise.
27705         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
27706         to re-use old VEC if available.  Do not sort already sorted VUSEs.
27707         (vdefs_to_vec): Do not sort already sorted VDEFs.
27708
27709 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
27710
27711         PR middle-end/34694
27712         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
27713
27714 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27715
27716         PR target/34702
27717         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
27718         limitations of reciprocal sequences on x86 targets.
27719
27720 2008-01-08  Richard Guenther  <rguenther@suse.de>
27721
27722         PR tree-optimization/34683
27723         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
27724
27725 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
27726
27727         PR target/34622
27728         * config/darwin.c (darwin_mergeable_string_section): Don't use
27729         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
27730
27731 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
27732
27733         PR target/34682
27734         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
27735         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
27736         predicates of op0 and op1 to register_operand.
27737         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
27738         expander using X87MODEF mode iterator.  Change predicates of
27739         op0 and op1 to register_operand.
27740         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
27741         corresponding patterns and macroize using MODEF macro.  Change
27742         predicates of op0 and op1 to register_operand and remove
27743         "m" constraint. Disparage "r" alternative with "!".
27744         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
27745         macroize using X87MODEF macro.  Change predicates of op0 and op1
27746         to register_operand and remove "m" constraint.  Disparage "r"
27747         alternative with "!".
27748         (absneg splitter with memory operands): Remove.
27749         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
27750         patterns and macroize using X87MODEF mode iterator.
27751         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
27752         Change predicate of op1 to register_operand.
27753         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
27754         for memory operands.
27755
27756 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
27757
27758         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
27759
27760 2008-01-07  Richard Guenther  <rguenther@suse.de>
27761
27762         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
27763         fields.
27764
27765 2008-01-07  Richard Guenther  <rguenther@suse.de>
27766
27767         PR tree-optimization/34683
27768         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
27769         VOPs of the needed size to save memory.  Use VEC_quick_push
27770         to save compile-time.
27771         (vdefs_to_vec): Likewise.
27772
27773 2008-01-07  Sa Liu  <saliu@de.ibm.com>
27774
27775         * config/spu/spu.md (divdf3): Genetate inline code for double
27776         division.  The implementation doesn't handle INF or NAN, therefore it
27777         only applies when -ffinite-math-only is given.
27778
27779 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
27780
27781         PR libstdc++/34680
27782         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
27783         * doc/cpp.texi ([Common Predefined Macros]): Document.
27784
27785 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
27786
27787         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
27788         order to use commutative addition instead of subtraction.
27789
27790 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27791             Mircea Namolaru  <namolaru@il.ibm.com>
27792             Vladimir Yanovsky  <yanov@il.ibm.com>
27793             Revital Eres  <eres@il.ibm.com>
27794
27795         PR tree-optimization/34263
27796         * tree-outof-ssa.c (process_single_block_loop_latch,
27797         contains_tree_r): New functions.
27798         (analyze_edges_for_bb): Call process_single_block_loop_latch
27799         function to empty single-basic-block latch block if possible.
27800
27801 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27802
27803         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27804         for TARGET_RECIP.
27805         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
27806
27807 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27808
27809         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
27810
27811 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27812
27813         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
27814
27815 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
27816
27817         PR tree-optimization/34618
27818         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
27819         flag from T.
27820
27821 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27822
27823         PR target/34673
27824         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
27825         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
27826         Update copyright year.
27827
27828         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
27829         Update copyright year.
27830         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
27831         using NR fixup.
27832
27833 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
27834
27835         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
27836         edge does not point to current bb before changing need_assert.
27837
27838 2008-01-04  Richard Guenther  <rguenther@suse.de>
27839
27840         PR middle-end/34029
27841         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
27842         for verifying purposes if they are is_gimple_min_invariant.
27843
27844 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
27845
27846         PR tree-optimization/34448
27847         PR tree-optimization/34465
27848         * gimplify.c (gimplify_init_constructor): Add new parameter
27849         notify_temp_creation.  Use it.
27850         (gimplify_modify_expr_rhs): Take volatiles into account when
27851         optimizing constructors.
27852         Do not optimize constructors if gimplify_init_constructor will dump to
27853         memory.
27854         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
27855         * gcc.c-torture/compile/pr34448.c: New.
27856
27857 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
27858
27859         PR gcov-profile/34609
27860         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
27861         return_slot if result is TREE_ADDRESSABLE.
27862
27863 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
27864
27865         * config/mips/mips.md (sqrt_condition): Tweak comment.
27866         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
27867
27868 2008-01-03  Tom Tromey  <tromey@redhat.com>
27869
27870         PR c/34457
27871         * c-common.c (c_type_hash): Handle VLAs.
27872
27873 2008-01-03  Jan Hubicka  <jh@suse.cz>
27874
27875         PR tree-optimization/31081
27876         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
27877         0 when inlining and not inlining to first basic block.
27878         (remap_decl): When var is initialized to 0, don't set default_def.
27879         (expand_call_inline): Set entry_bb.
27880         * tree-inline.h (copy_body_data): Add entry_bb.
27881
27882 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27883
27884         PR c++/34619
27885         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
27886         before returning.
27887
27888         PR tree-optimization/29484
27889         * tree-inline.c (inline_forbidden_p_2): New function.
27890         (inline_forbidden_p): Disallow inlining if some static var
27891         has an address of a local LABEL_DECL in its initializer.
27892         * doc/extend.texi (Labels as Values): Document &&foo behaviour
27893         vs. inlining.
27894
27895 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
27896
27897         PR tree-optimization/34635
27898         * tree-data-ref.c (add_other_self_distances): Make sure that the
27899         evolution step is constant.
27900
27901 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27902
27903         PR middle-end/34608
27904         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
27905
27906 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
27907
27908         * tree-sra.c (scalarize_init): Insert the generate_element_init
27909         statements after the generate_element_zero statements.
27910
27911 2008-01-02  Richard Guenther  <rguenther@suse.de>
27912
27913         PR middle-end/34093
27914         PR middle-end/31976
27915         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
27916         for very large number of operands instead of ICEing.
27917
27918 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
27919
27920         PR target/34013
27921         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
27922         while stack probing.
27923
27924 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
27925
27926         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
27927         in C++0x mode.
27928
27929 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
27930
27931         PR libmudflap/26442
27932         * tree-mudflap.c (mx_register_decls): Guard warning by
27933         !DECL_ARTIFICIAL check.
27934
27935 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
27936
27937         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
27938         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
27939         sse5_perm<mode>): Fix constraints.