OSDN Git Service

Martin Guy <martinwguy@yahoo.it>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-12-10  Martin Guy <martinwguy@yahoo.it>
2
3         PR target/37668
4         * arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
5         result will be in an FPU register.
6
7 2008-12-10  Eric Botcazou  <ebotcazou@adacore.com>
8
9         PR target/37170
10         PR target/38448
11         * final.c (output_addr_const) <SYMBOL_REF>: Call assemble_external
12         on the associated SYMBOL_REF_DECL node, if any.
13
14 2008-12-09 David Daney <ddaney@caviumnetworks.com>
15
16         * config/mips/sync.md (sync_<optab>_12): Replace
17         MIPS_SYNC_OP_12_NOT_NOP with MIPS_SYNC_OP_12_AND.
18         (sync_old_<optab>_12): Remove third paramater to
19         MIPS_SYNC_OLD_OP_12 macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOP
20         with MIPS_SYNC_OLD_OP_12_AND.
21         (sync_new_<optab>_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOP
22         with MIPS_SYNC_NEW_OP_12_AND.
23         (sync_nand_12): Replace MIPS_SYNC_OP_12_NOT_NOT with
24         MIPS_SYNC_OP_12_XOR, reduce length attribute to 40.
25         (sync_old_nand_12): Remove third paramater to MIPS_SYNC_OLD_OP_12
26         macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOT with
27         MIPS_SYNC_OLD_OP_12_XOR and reduce length attribute to 40.
28         (sync_new_nand_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOT with
29         MIPS_SYNC_NEW_OP_12_XOR.
30         * config/mips/mips.h (MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
31         MIPS_SYNC_OP_12_NOT_NOT,MIPS_SYNC_OLD_OP_12_NOT_NOP,
32         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_NEW_OP_12,
33         MIPS_SYNC_NEW_OP_12_NOT_NOP, MIPS_SYNC_NEW_OP_12_NOT_NOT,
34         MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Rewritten
35         to implement new __sync_nand semantics.
36         (MIPS_SYNC_OLD_OP_12): Implement new __sync_nand semantics, and
37         remove third parameter.
38         (MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
39         MIPS_SYNC_OLD_OP_12_NOT_NOT_REG): Removed.
40         (MIPS_SYNC_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OP_12_AND.
41         (MIPS_SYNC_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OP_12_XOR.
42         (MIPS_SYNC_OLD_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OLD_OP_12_AND.
43         (MIPS_SYNC_OLD_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OLD_OP_12_XOR.
44         (MIPS_SYNC_NEW_OP_12_NOT_NOP): Renamed to MIPS_SYNC_NEW_OP_12_AND.
45         (MIPS_SYNC_NEW_OP_12_NOT_NOT): Renamed to MIPS_SYNC_NEW_OP_12_XOR
46
47 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
48
49         * graphite.c (graphite_transform_loops): Always call find_transform ()
50         in ENABLE_CHECKING.  So we test these code paths, even if we do not
51         generate code.
52
53 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
54
55         * graphite.c (print_graphite_bb): Fix printing to file != dump_file.
56
57 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
58
59         PR middle-end/38454
60         * function.h (struct function): Add always_inline_functions_inlined.
61         * ipa-inline.c (cgraph_early_inlining): Set it to true.
62         * tree-optimize.c (execute_fixup_cfg): Likewise.
63         * builtins.c (avoid_folding_inline_builtin): New function.
64         (fold_call_expr): Don't optimize always_inline builtins before
65         inlining.
66         (fold_call_stmt): Likewise.
67         (fold_builtin_call_array): Likewise.  Don't call
68         fold_builtin_varargs for BUILT_IN_MD builtins.
69
70         PR tree-optimization/37416
71         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.
72
73 2008-12-09  Janis Johnson  <janis187@us.ibm.com>
74
75         * doc/sourcebuild.texi (Test Directives): Fix formatting.
76
77 2008-12-09  Vladimir Makarov  <vmakarov@redhat.com>
78
79         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
80
81         * doc/invoke.texi (-fira-region): Describe new option.
82         (-fira-algorithm): Change the values.
83
84         * ira-conflicts.c (build_conflict_bit_table,
85         build_allocno_conflicts): Use ira_reg_classes_intersect_p.
86         (ira_build_conflicts): Use flag flag_ira_region instead of
87         flag_ira_algorithm.  Prohibit usage of callee-saved likely spilled
88         base registers for allocnos crossing calls.
89
90         * flags.h (enum ira_algorithm): Redefine.
91         (enum ira_region): New.
92         (flag_ira_region): New.
93
94         * cfgloopanal.c (estimate_reg_pressure_cost): Use flag_ira_region
95         instead of flag_ira_algorithm.
96
97         * toplev.c (flag_ira_algorithm): Change the initial value.
98         (flag_ira_region): New.
99
100         * ira-int.h (ira_reg_classes_intersect_p,
101         ira_reg_class_super_classes): New.
102
103         * ira-color.c (update_copy_costs): Use
104         ira_reg_classes_intersect_p.  Use right class to find hard reg
105         index.
106         (update_conflict_hard_regno_costs): Ditto.  Add a new parameter.
107         (assign_hard_reg): Ditto.  Pass additional argument to
108         update_conflict_hard_regno_costs.  Do not uncoalesce for priority
109         coloring.
110         (allocno_priorities, setup_allocno_priorities,
111         allocno_priority_compare_func): Move before color_allocnos.
112         (color_allocnos): Add priority coloring.  Use flag flag_ira_region
113         instead of flag_ira_algorithm.
114         (move_spill_restore): Check classes of the same reg allocno from
115         different regions.
116         (update_curr_costs): Use ira_reg_classes_intersect_p.
117         (ira_reassign_conflict_allocnos): Ditto.
118
119         * opts.c (decode_options): Always set up flag_ira.  Set up
120         flag_ira_algorithm.  Warn CB can not be used for architecture.
121         (common_handle_option): Modify code for -fira-algorithm.  Add code
122         to process -fira-region.
123
124         * ira-lives.c (update_allocno_pressure_excess_length): Process
125         superclasses too.
126         (set_allocno_live, clear_allocno_live, mark_reg_live,
127         mark_reg_dead, process_bb_node_lives): Ditto.
128
129         * ira-emit.c (ira_emit): Fix insn codes.
130         
131         * ira-build.c (propagate_allocno_info): Use flag flag_ira_region
132         instead of flag_ira_algorithm.
133         (allocno_range_compare_func): Ignore classes for priority
134         coloring.
135         (setup_min_max_conflict_allocno_ids): Ditto.
136         (ira_flattening): Use ira_reg_classes_intersect_p.
137
138         * genpreds.c (write_enum_constraint_num): Output
139         CONSTRAINT__LIMIT.
140         
141         * common.opt (fira-algorithm): Modify.
142         (fira-region): New.
143
144         * ira.c (setup_class_hard_regs): Initialize.
145         (setup_cover_and_important_classes): Modify code setting class
146         related info for priority coloring.
147         (setup_class_translate): Ditto.
148         (ira_reg_classes_intersect_p, ira_reg_class_super_classes): New.
149         (setup_reg_class_intersect_union): Rename to
150         setup_reg_class_relations.  Add code for setting up new variables.
151         (find_reg_class_closure): Do not check targetm.ira_cover_classes.
152         (ira): Use flag flag_ira_region instead of flag_ira_algorithm.
153
154         * ira-costs.c (common_classes): New.
155         (print_costs): Use flag flag_ira_region instead of
156         flag_ira_algorithm.
157         (find_allocno_class_costs): Ditto.  Use common_classes.  Translate
158         alt_class.
159         (ira_costs): Allocate/deallocate common_classes.
160         
161         * config/m32c/m32.h (REG_ALLOC_ORDER): Add reg 19.
162         (REG_CLASS_CONTENTS, reg_class, REG_CLASS_NAMES): New entries for
163         R02A_REGS.
164
165         * reload1.c (choose_reload_regs): Use MODE_INT for partial ints in
166         smallest_mode_for_size.
167         
168 2008-12-10  Ben Elliston  <bje@au.ibm.com>
169
170         * config/rs6000/linux-unwind.h (get_regs): Constify casts.
171
172 2008-12-09  Jan Hubicka  <jh@suse.cz>
173
174         * predict.c (estimate_bb_frequencies): Fix test if profile is present.
175
176 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
177
178         PR tree-optimization/35468
179         * tree-ssa-ccp.c (fold_stmt_r): Don't fold reads from constant
180         string on LHS.
181
182 2008-12-09  Richard Guenther  <rguenther@suse.de>
183
184         PR tree-optimization/38445
185         * tree-ssa-structalias.c (emit_pointer_definition): Only visit
186         names once.
187         (emit_alias_warning): Adjust.
188
189 2008-12-09  Andrew Haley  <aph@redhat.com>
190
191         * fixed-value.c (do_fixed_add): Add comment.
192         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
193         * builtins.c (fold_builtin_sqrt): Likewise.
194
195 2008-12-09  Kai Tietz  <kai.tietz@onevision.com>
196
197         PR/38366
198         * function.c (aggregate_value_p): Get fntype from CALL_EXPR in any
199         case.
200         * calls.c (nitialize_argument_information): Add fntype argument 
201         and use it for calls.promote_function_args.
202         (expand_call): Pass fntype to aggregate_value_p if no fndecl
203         available and pass additional fntype to
204         initialize_argument_information.
205         * config/i386/i386.c (ix86_reg_parm_stack_space): Remove cfun part
206         to get function abi type.
207         (init_cumulative_args): Use for abi kind detection fntype, when no
208         fndecl is available.
209
210 2008-12-09  Andreas Krebbel  <krebbel1@de.ibm.com>
211
212         * config/s390/s390.md (movti, movdi_64, movdi_31,
213           *movsi_zarch, *movhi, *movqi, *mov<mode>_64, *mov<mode>_31,
214           *mov<mode>_64dfp, *mov<mode>_64, *mov<mode>_31, mov<mode>): Remove
215           Q->Q alternative.
216           (Integer->BLKmode splitter): Removed.
217
218 2008-12-08  Uros Bizjak  <ubizjak@gmail.com>
219
220         * config/alpha/alpha.c (alpha_set_memflags): Process memory
221         references in full insn sequence.
222
223 2008-12-09  Jason Merrill  <jason@redhat.com>
224
225         * gimplify.c (gimplify_init_constructor): Revert to using < rather
226         than <= for sparseness test.
227
228         PR c++/38410
229         * gimplify.c (gimplify_init_constructor): Don't write out a static
230         copy of the CONSTRUCTOR for TREE_ADDRESSABLE types or small sparse
231         initializers.
232
233 2008-12-09 Tobias Grosser  <grosser@fim.uni-passau.de>
234
235         PR middle-end/38084
236         Fix testsuite/gfortran.dg/graphite/id-3.f90.
237         * graphite.c (scopdet_basic_block_info): Fix bug that found some
238         regions more than once.
239         * testsuite/gfortran.dg/graphite/id-3.f90: New.
240         * gcc/testsuite/gcc.dg/graphite/pr38084.c: New.
241
242 2008-12-09  Ben Elliston  <bje@au.ibm.com>
243
244         * emutls.c (__emutls_get_address): Prototype.
245         (__emutls_register_common): Likewise.
246
247         * config/dfp-bit.c (DFP_TO_INT): Remove unnecessary cast.
248
249 2008-12-09  Ben Elliston  <bje@au.ibm.com>
250
251         * config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
252
253 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
254
255         * config/ia64/ia64.md (UNSPECV_GOTO_RECEIVER): New constant.
256         (nonlocal_goto_receiver): New instruction.
257
258 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
259
260         PR c/35443
261         * c-pretty-print.c (pp_c_expression): Handle BIND_EXPR.
262
263         PR c/35442
264         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
265         VIEW_CONVERT_EXPR the same as CASE_CONVERT.
266
267 2008-12-08  Richard Henderson  <rth@redhat.com>
268
269         PR 38240
270         * tree.h (TYPE_MODE): Invoke vector_type_mode when needed.
271         (SET_TYPE_MODE): New.
272         * c-decl.c (parser_xref_tag): Use it.
273         (finish_enum): Likewise.
274         * tree.c (build_pointer_type_for_mode): Likewise.
275         (build_reference_type_for_mode, build_index_type): Likewise.
276         (build_range_type, make_vector_type): Likewise.
277         (build_common_tree_nodes_2): Likewise.
278         * stor-layout.c (compute_record_mode): Likewise.
279         (finalize_type_size, layout_type, make_fract_type): Likewise.
280         (make_accum_type, initialize_sizetypes): Likewise.
281         (vector_type_mode): New.
282         * function.c (allocate_struct_function): Call
283         invoke_set_current_function_hook before querying anything else.
284
285         * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Add avx.
286
287 2008-12-08  Luis Machado  <luisgpm@br.ibm.com>
288
289         * alias.c (find_base_term): Synch LO_SUM handling with what
290         find_base_value does.
291
292 2008-12-08  Andrew Haley  <aph@redhat.com>
293             Kamaraju Kusumanchi <raju.mailinglists@gmail.com>
294
295         * gimple.h (gimple_build_try): Fix declaration.
296
297         * builtins.c (fold_builtin_sqrt): Don't use a conditional operator.
298         * fixed-value.c (do_fixed_add): Likewise.
299         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
300
301 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
302
303         PR middle-end/36802
304         * omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
305         on parallel and task contexts.
306
307 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
308
309         * gimple.c (recalculate_side_effects) <tcc_constant>: New case.
310
311 2008-12-07  Richard Guenther  <rguenther@suse.de>
312
313         PR tree-optimization/38405
314         * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
315         not sign-extend truth values.
316
317 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
318
319         * tree-sra.c (scalarize_use): Create another temporary with the proper
320         type for signed types in the use_all && !is_output bitfield case.
321
322 2008-12-06  Steven Bosscher  <steven@gcc.gnu.org>
323
324         PR rtl-optimization/36365
325         * df-core.c (df_worklist_dataflow_overeager): Remove.
326         (df_worklist_dataflow): Don't call it, use double-queue only.
327         * params.def (PARAM_DF_DOUBLE_QUQUQ_THRESHOLD_FACTOR): Remove.
328
329 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
330
331         PR middle-end/38428
332         * tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
333         gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
334
335 2008-12-07  Ben Elliston  <bje@au.ibm.com>
336
337         * gthr-single.h (__gthread_once): Adjust prototype to match all
338         other gthreads models.
339
340 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
341
342         * config/i386/i386.c (override_options): Use CPU_AMDFAM10
343         instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
344
345         PR middle-end/38422
346         * fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
347         operands to mult_type if it isn't narrower than op0's type.
348
349 2008-12-06  Jan Hubicka  <jh@suse.cz>
350             Jakub Jelinek <jakub@redhat.com>
351
352         PR tree-optimization/38074
353         * cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
354         entry frequency.
355         * predict.c (combine_predictions_for_bb): Ignore predictor predicting
356         in both dirrection for first match heuristics.
357         (tree_bb_level_predictions): Disable noreturn heuristic when there
358         is no returning path.
359
360 2008-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
361
362         PR rtl-optimization/38272
363         * reload1.c (choose_reload_regs): Keep reload_spill_index correct
364         in all cases.
365
366 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
367
368         PR c++/35336
369         * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
370         (pp_c_expression): Likewise.
371
372 2008-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
373
374         PR c/38416
375         * c-parser.c (struct c_token): Make pragma_kind 8 bits.
376
377 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
378
379         PR middle-end/37248
380         * fold-const.c (make_bit_field_ref): Change bitpos and bitsize
381         arguments to HOST_WIDE_INT.  If type has different signedness
382         than unsignedp or different precision from bitsize, create
383         the right type for BIT_FIELD_REF and cast to type.
384         (fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
385
386         Revert:
387         2008-03-05  Richard Guenther  <rguenther@suse.de>
388         PR c++/35336
389         * fold-const.c (fold_truthop): Remove code generating
390         BIT_FIELD_REFs of structure bases.
391         (fold_binary): Likewise.
392         (make_bit_field_ref): Remove.
393         (optimize_bit_field_compare): Remove.
394         (all_ones_mask_p): Remove.
395
396 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
397
398         * tree-sra.c (sra_explode_bitfield_assignment): Always
399         call unsigned_type_for, if the precision is higher than
400         needed, call build_nonstandard_integer_type.
401
402         PR debug/38367
403         * function.c (assign_parm_find_stack_rtl): If promoted_mode
404         is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
405         big endian.
406
407         PR middle-end/38338
408         * builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
409         only if internal_arg_pointer is a non-virtual pseudo.
410
411 2008-12-05  Joseph Myers  <joseph@codesourcery.com>
412
413         * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for
414         TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500.
415         * config/rs6000/spe.md (e500_cr_ior_compare): Likewise.
416
417 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
418
419         PR tree-optimization/37716
420         * gimplify.c (gimplify_expr): Allow COND_EXPR if
421         gimplify_ctxp->allow_rhs_cond_expr.
422
423 2008-12-05  Uros Bizjak  <ubizjak@gmail.com>
424
425         * config/alpha/alpha.c (alpha_fold_vector_minmax): Create
426         VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
427
428         (alpha_emit_conditional_branch): Do not generate direct branch
429         for UNORDERED comparisons.
430
431 2008-12-05  Andreas Schwab  <schwab@suse.de>
432
433         * config/rs6000/linux-unwind.h (frob_update_context): Check for
434         NULL lr.
435
436 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
437
438         PR c/38408
439         * fold-const.c (fold_checksum_tree): Change buf type to union
440         tree_node.
441
442 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
443
444         PR bootstrap/38262
445         * Makefile.in (LIBS): Remove GMPLIBS, CLOOGLIBS and PPLLIBS.
446         (BACKENDLIBS): New.
447         (cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
448
449 2008-12-05  Ben Elliston  <bje@au.ibm.com>
450
451         * c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
452         comma_loc.
453         (c_parser_initelt): Initialise des_loc and ellipsis_loc.
454
455 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
456             Gary Funck  <gary@intrepid.com>
457
458         * cse.c (lookup_as_function): Delete mode frobbing code.
459         (equiv_constant): Re-implement it there for SUBREGs.
460
461 2008-12-04  Richard Guenther  <rguenther@suse.de>
462
463         PR middle-end/36509
464         * Makefile.in (tree-ssa-alias-warnings.o): Remove.
465         (tree-ssa-structalias.o): Remove errors.h dependency.
466         (tree-ssa-reassoc.o): Likewise.
467         * tree-ssa-reassoc.c: Do not include errors.h.
468         * tree-ssa-alias-warnings.c: Remove.
469         * tree-ssa-alias.c (compute_may_aliases): Remove call to
470         strict_aliasing_warning_backend.
471         * tree-ssa-structalias.c (emit_pointer_definition): New function.
472         (emit_alias_warning): Likewise.
473         (set_uids_in_ptset): Warn for clear cases of type-punning.
474         * tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
475         on INDIRECT_REFs.
476
477 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
478
479         * cse.c (equiv_constant): Fix pasto.
480
481 2008-12-04  Nick Clifton  <nickc@redhat.com>
482
483         * config/stormy16/stormy16.md: Remove extraneous spaces and quotes.
484         * config/stormy16/stormy16.c: Remove extraneous spaces and fix up
485         formatting of quotes.
486
487 2008-12-04  Jakub Jelinek  <jakub@redhat.com>
488
489         PR middle-end/38371
490         * fold-const.c (fold_checksum_tree): Allow modification of
491         TYPE_NEXT_VARIANT.
492
493 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
494
495         PR middle-end/38360
496         * tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
497         have the right number of arguments.
498
499 2008-12-03  Richard Guenther  <rguenther@suse.de>
500
501         PR middle-end/36326
502         * gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
503         non-BLKmode types.
504
505 2008-12-03  Tomas Bily  <tbily@suse.cz>
506
507         PR middle-end/38250
508         * tree-loop-distribution.c (build_size_arg): New function.
509         (generate_memset_zero): Checks if dr_analyze_innermost succeed.
510         Reorganized generating of stmts.
511         * testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
512         * tree-data-ref.c (dr_analyze_innermost): Returns bool.
513         Indicate if analysis succeed.
514         * tree-data-ref.h (dr_analyze_innermost): Returns bool.
515         * tree-predcom.c (valid_initializer_p, find_looparound_phi):
516         Uses new definition of dr_analyze_innermost.
517
518 2008-12-03  Ben Elliston  <bje@au.ibm.com>
519
520         * tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
521
522 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
523
524         PR tree-optimization/37716
525         * tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
526         all the needed operations as trees and gimplify_assign it to dst.
527
528         PR target/37610
529         * configure.ac (gcc_cv_readelf): Look for readelf.
530         (gcc_cv_as_cfi_advance_working): Check for working
531         cfi advances with code alignment factor > 1.
532         (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
533         don't work properly.
534         * configure: Regenerated.
535
536 2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
537             Jakub Jelinek  <jakub@redhat.com>
538             Andrew Pinski  <andrew_pinski@playstation.sony.com>
539
540         PR rtl-optimization/38281
541         * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
542         set it to NULL_RTX afterwards.
543
544         * emit-rtl.c (set_insn_deleted): Fix formatting.
545
546 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
547
548         * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
549         error return value.
550         * config/mips/mips.md (IMOVE32): New mode iterator.
551         (movsi): Generalize with IMOVE32.
552         (*movsi_internal): Likewise.
553         (*mov<mode>_mips16): Likewise.
554         (*lwxs): Likewise.
555
556 2008-12-02  Nathan Sidwell  <nathan@codesourcery.com>
557             Maxim Kuvyrkov  <maxim@codesourcery.com>
558
559         * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
560         PC-relative addressing when compiling for uclinux PIC.
561         (__cmpdf_internal, __cmpsf_internal): Hide.
562         (__cmpdf, __cmpsf): Use PIC call sequence.
563
564 2008-12-02  Andreas Tobler  <a.tobler@schweiz.org>
565             Jack Howarth <howarth@bromo.med.uc.edu>
566
567         * config/i386/t-darwin64: Add m32 multilib support.
568
569 2008-12-02  Jack Howarth  <howarth@bromo.med.uc.edu>
570
571         * testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
572
573 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
574
575         PR middle-end/38343
576         * builtins.c (fold_builtin_memory_op): Convert len to sizetype
577         before using it in POINTER_PLUS_EXPR.
578
579 2008-12-02  Richard Guenther  <rguenther@suse.de>
580
581         PR tree-optimization/38359
582         * fold-const.c (fold_binary): Fold -1 >> x to -1 only for
583         non-negative x.
584
585 2008-12-02  Martin Jambor  <mjambor@suse.cz>
586
587         PR middle-end/37861
588         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
589         for INDIRECT_REFs.
590         (forward_propagate_addr_into_variable_array_index): Check that the
591         offset is not computed from a MULT_EXPR, use is_gimple_assign rather
592         than the gimple code directly.
593
594 2008-12-02  Ben Elliston  <bje@au.ibm.com>
595
596         * config/spu/float_disf.c (__floatdisf): Prototype.
597         * config/spu/float_unsdisf.c (__float_undisf): Likewise.
598         * config/spu/float_unssidf.c (__float_unssidf): Constify cast.
599         * config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
600
601 2008-12-02  DJ Delorie  <dj@redhat.com>
602
603         * config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
604         (DWARF_CIE_DATA_ALIGNMENT): Define.
605
606         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
607         Invert add/sub for INCOMING_FRAME_SP_OFFSET.
608         (xstormy16_expand_prologue): Likewise.
609         (xstormy16_expand_builtin_va_start): Likewise.
610         (xstormy16_gimplify_va_arg_expr): Likewise.
611
612 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
613
614         PR middle-end/38343
615         * builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
616         potentially returned from folding memcpy.
617         (expand_builtin_stpcpy_args): Similarly for folding strcpy.
618         (fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
619
620 2008-12-02  Danny Smith  <dannysmith@users.sourceforge.net>
621
622         PR target/38054
623         * config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
624         decoration of function RTL names here on Ada language.
625
626 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
627
628         PR rtl-optimization/38280
629         * ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
630         ira_rebuild_regno_allocno_list): New functions.
631         (regno_allocnos): New static variable.
632         (remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
633         Call ira_rebuild_regno_allocno_list.
634
635 2008-12-01  David Daney  <ddaney@caviumnetworks.com>
636             Adam Nemet  <anemet@caviumnetworks.com>
637
638         * config/mips/linux64.h (DRIVER_SELF_SPECS): Add
639         LINUX_DRIVER_SELF_SPECS.
640
641 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
642
643         PR rtl-optimization/37514
644         * reload1.c (reload_as_needed): Invalidate reg_last_reload
645         from previous insns.
646
647 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
648
649         PR c++/38348
650         * c-omp.c (c_finish_omp_for): Only transform pointer
651         ++ or -- into MODIFY_EXPR if second argument is non-NULL.
652
653         PR rtl-optimization/38245
654         * tree-vrp.c (abs_extent_range): New function.
655         (extract_range_from_binary_expr): Compute range
656         for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
657         or includes zero or if vr1 is VR_RANGE and op0 has some
658         other range.
659
660 2008-12-01  Uros Bizjak  <ubizjak@gmail.com>
661
662         PR middle-end/37908
663         * config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
664         case by calculating ~(new_reg & val) instead of (~new_reg & val).
665         * config/alpha/sync.md (sync_nand<mode>): Change insn RTX
666         to (not:I48MODE (and:I48MODE (...))).
667         (sync_old_nand<mode>): Ditto.
668         (sync_new_nand<mode>): Ditto.
669
670 2008-12-01  Nick Clifton  <nickc@redhat.com>
671
672         * config/stormy16/stormy16.md (CARRY_REG): New constant.
673         Replace uses of the "y" register class with direct references to
674         the CARRY_REG register.
675         * config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
676         register with clobbers of the carry register.
677         (xstormy16_secondary_reload_class): Do not return CARRY_REGS.
678         (xstormy16_split_cbranch): Remove redundant carry parameter.
679         (xstormy16_expand_arith): Likewise.
680         * config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
681         (IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
682         REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
683         (CARRY_REGNUM): Define.
684         * config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
685         Update prototype.
686         (xstormy16_expand_arith): Likewise.
687
688 2008-12-01  Chen Liqin  <liqin.chen@sunplusct.com>
689
690         * config/score/score.h (IRA_COVER_CLASSES): Define.
691
692 2008-11-30  Eric Botcazou  <ebotcazou@adacore.com>
693
694         PR target/38287
695         * config/sparc/sparc.md (divsi3 expander): Remove constraints.
696         (divsi3_sp32): Add new alternative with 'K' for operand #2.
697         (cmp_sdiv_cc_set): Factor common string.
698         (udivsi3_sp32): Add new alternative with 'K' for operand #2.
699         Add TARGET_V9 case.
700         (cmp_udiv_cc_set): Factor common string.
701
702 2008-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
703
704         PR middle-end/38283
705         * varasm.c (emutls_finish): Fix common registration.
706
707 2008-11-29  Jakub Jelinek  <jakub@redhat.com>
708
709         PR target/29987
710         * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
711
712 2008-11-29  David Edelsohn  <edelsohn@gnu.org>
713
714         * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
715         operand wrapped in NOT.  Emit NAND as (ior (not X) (not Y)).
716         (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
717         * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL.
718         Call rs6000_emit_sync with CODE=NOT and unmodified operands.
719         Ignore sub-word case for now.
720         (sync_nand<mode>_internal): Represent NAND in RTL.
721         (sync_old_nand<mode): Same.
722         (sync_old_name<mode>_internal): Same.
723         (sync_new_nand<mode>): Same.
724         (sync_new_nand<mode>_internal): Same.
725         (sync_boolcshort_internal): Expect NAND.
726
727 2008-11-28  Richard Guenther  <rguenther@suse.de>
728
729         PR tree-optimization/37955
730         PR tree-optimization/37742
731         * tree-vect-transform.c (vectorizable_store): Remove assert for
732         compatible aliases.
733         (vectorizable_load): Likewise.
734
735 2008-11-27  Richard Guenther  <rguenther@suse.de>
736
737         * tree-ssa-structalias.c (intra_create_variable_infos): Make
738         a constraint for the static chain parameter.
739
740 2008-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
741
742         * config/bfin/bfin.opt (micplb): New option.
743         * config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
744         * config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
745         ENABLE_WA_INDIRECT_CALLS): New macros.
746         * config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
747         all 54x CPUs.
748         (indirect_call_p): New function.
749         (workaround_speculation): Handle anomaly 05-00-0426 when
750         ENABLE_WA_INDIRECT_CALLS is true.
751         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
752         __WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
753         * doc/invoke.texi (Blackfin Options): Document -micplb.
754
755 2008-11-26  DJ Delorie  <dj@redhat.com>
756
757         * config/m32c/mov.md ("extendhipsi2"): New.
758
759         * config/m32c/bitops.md (bset_qi): Add memsym_operand predicate.
760
761         * config/m32c/bitops.md (andhi3_24, iorhi3_24): Don't prefer HL class.
762         * config/m32c/mov.md (zero_extendqihi2): Likewise.
763
764 2008-11-26  Adam Nemet  <anemet@caviumnetworks.com>
765
766         * config/mips/mips.md (clear_hazard): Rename to
767         clear_hazard_<mode>.  Use mode-specific addition.
768         (clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
769         or gen_clear_hazard_di depending on the size of Pmode.
770
771 2008-11-26  DJ Delorie  <dj@redhat.com>
772
773         * configure.ac: Test m32c-elf-gas for .loc.
774         * configure: Likewise.
775
776 2008-11-26  Janis Johnson  <janis187@us.ibm.com>
777
778         PR testsuite/28870
779         * doc/sourcebuild.texi (Test Directives): Add dg-timeout and
780         dg-timeout-factor.
781
782 2008-11-26  Uros Bizjak  <ubizjak@gmail.com>
783
784         * config/i386/sync.md (memory_barrier_nosse): Disable also for
785         TARGET_64BIT.  Remove special asm template for TARGET_64BIT case.
786         (memory_barrier): Do not generate memory_barrier_nosse instruction
787         for TARGET_64BIT.
788         * config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
789
790 2008-11-26  Fredrik Unger  <fred@tree.se>
791
792         * config/soft-fp/floatuntisf.c (__floatuntisf): Correct
793         function name from __floatundisf.
794         * config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
795         DFtype.
796
797 2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
798             Richard Guenther  <rguenther@suse.de>
799
800         PR tree-optimization/37869
801         * tree-ssa-structalias.c (struct constraint_graph): Remove
802         pt_used and number_incoming members.
803         (build_pred_graph): Do not allocate them.
804         (condense_visit): Do not use them.
805         (label_visit): Likewise.
806         (free_var_substitution_info): Do not free them.
807
808 2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
809
810         * doc/invoke.texi (ira-max-loops-num): Change semantics.
811
812         * ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
813
814         * ira-color.c (allocno_spill_priority): New function.
815         (remove_allocno_from_bucket_and_push, push_allocno_to_spill):
816         Print more info about the spilled allocno.
817         (push_allocnos_to_stack): Use allocno_spill_priority.  Add more
818         checks on bad spill.
819
820         * ira-build.c (loop_node_to_be_removed_p): Remove.
821         (loop_compare_func, mark_loops_for_removal): New functions.
822         (remove_uneccesary_loop_nodes_from_loop_t): Use member
823         to_remove_p.
824         (remove_unnecessary_allocnos): Call mark_loops_for_removal.
825
826         * ira.c (ira): Don't change flag_ira_algorithm.
827
828         * params.def (ira-max-loops-num): Change the value.
829
830 2008-11-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
831
832         * config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
833         Disable unsupported alternative for ColdFire,
834         add new alternative that ColdFire can handle.
835
836 2008-11-25  Eric Botcazou  <ebotcazou@adacore.com>
837
838         * regrename.c (merge_overlapping_regs): Add registers artificially
839         defined at the top of the basic block to the set of live ones just
840         before the first insn.
841
842 2008-11-25  H.J. Lu  <hongjiu.lu@intel.com>
843             Joey Ye  <joey.ye@intel.com>
844
845         PR middle-end/37843
846         * config/i386/i386.c (ix86_function_ok_for_sibcall): Return
847         false if we need to align the outgoing stack.
848         (ix86_update_stack_boundary): Check parm_stack_boundary.
849
850 2008-11-25  Richard Guenther  <rguenther@suse.de>
851
852         PR middle-end/38151
853         PR middle-end/38236
854         * tree-ssa-alias.c (struct alias_info): Remove written_vars.
855         Remove dereferenced_ptrs_store and dereferenced_ptrs_load
856         in favor of dereferenced_ptrs.
857         (init_alias_info): Adjust.
858         (delete_alias_info): Likewise.
859         (compute_flow_insensitive_aliasing): Properly
860         include all aliased variables.
861         (update_alias_info_1): Use dereferenced_ptrs.
862         (setup_pointers_and_addressables): Likewise.
863         (get_smt_for): Honor ref-all pointers and pointers with known alias
864         set properly.
865         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
866
867 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
868
869         PR target/38254
870         * config/i386/sync.md (memory_barrier_nosse): New insn pattern.
871         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
872
873 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
874
875         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
876
877 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
878
879         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
880
881 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
882
883         PR target/35018
884         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
885         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
886
887 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
888
889         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
890         UNSPECV_CMPXCHG_[12].
891         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
892         UNSPECV_CMPXCHG_[12].
893
894         PR target/36793
895         * config/i386/sync.md (memory_barrier): New expander.
896
897 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
898
899         PR middle-end/37135
900         * dse.c (find_shift_sequence): Optimize extraction from a constant.
901
902 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
903
904         * pa.c (function_arg): Revert 2008-10-26 change.
905
906 2008-11-23  Helge Deller  <deller@gmx.de>
907
908         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
909         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
910         succeeded and lws_ret is not equal to oldval.
911
912 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
913
914         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
915
916 2008-11-22  Andreas Schwab  <schwab@suse.de>
917
918         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
919         -dA and -dP.
920
921 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
922
923         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
924         Use constant 1 as the operand.
925         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
926         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
927         gen_rdhwr_synci_step_di depending on the size of Pmode.
928
929 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
930
931         PR target/38222
932         * config/i386/i386.md (SWI248): New mode iterator.
933         (SWI32): Remove mode iterator.
934         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
935         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
936         iterator.  Generate popcnt mnemonic without mode extensions
937         for Darwin x86 targets.
938         (*popcount<mode>2_cmp): Ditto.
939         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
940         extensions for Darwin x86 targets.
941
942 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
943
944         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
945         only if HAVE_AS_SPARC_UA_PCREL is defined.
946
947 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
948
949         * ira-costs.c (find_allocno_class_costs): Work out the maximum
950         allocno_costs value of the classees with the lowest total_costs
951         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
952         (setup_allocno_cover_class_and_costs): ...rather than here.
953         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
954         preferred class.
955
956 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
957
958         PR middle-end/37323
959         * builtins.c (expand_builtin_apply_args): Emit sequence before
960         parm_birth_insn instead of after entry_of_function's first insn.
961
962         PR middle-end/37316
963         * function.c (assign_parm_remove_parallels): Pass
964         data->passed_type as third argument to emit_group_store.
965
966         PR target/37170
967         * final.c (mark_symbol_refs_as_used): New function.
968         * output.h (mark_symbol_refs_as_used): New prototype.
969         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
970         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
971         * config/arm/arm.md (consttable_4): Likewise.
972
973         PR target/37880
974         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
975
976 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
977
978         PR middle-end/38200
979         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
980         propagate x = &a into *x = b if conversion from b to a's type is
981         useless.
982
983 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
984
985         * caller-save.c (insert_one_insn): Take into account REG_INC notes
986         for the liveness computation of the new insn.
987
988 2008-11-21  DJ Delorie  <dj@redhat.com>
989
990         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
991         Moves to/from below100 space (W) can only use r0-r7.
992
993 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
994
995         PR other/38214
996         * doc/invoke.texi (Optimization Options): Fix typo.
997
998 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
999             Xuepeng Guo  <xuepeng.guo@intel.com>
1000
1001         * config.gcc (extra_headers): For x86 and x86-64, remove
1002         gmmintrin.h, add immintrin.h and avxintrin.h.
1003
1004         * config/i386/gmmintrin.h: Renamed to ...
1005         * config/i386/avxintrin.h: This.  Issue an error if
1006         _IMMINTRIN_H_INCLUDED is undedined.
1007
1008         * config/i386/immintrin.h: New.
1009
1010 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
1011
1012         PR target/38208
1013         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
1014         mode of PLUS, not mode of the eliminated register.
1015
1016 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1017
1018         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
1019         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
1020         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
1021         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
1022         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
1023         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
1024         (*nand<mode>3): Rename to *andnot<mode>3.
1025         (*nandtf3): rename to *andnottf3.
1026         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
1027         Use CODE_FOR_mmx_andnotv2si3.
1028         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
1029         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
1030         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
1031         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
1032         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
1033
1034 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1035
1036         PR middle-end/37908
1037         * config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
1038         case by calculating ~(new_reg & val) instead of (~new_reg & val).
1039         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
1040         to (not:IMODE (and:IMODE (...))).
1041         (sync_old_nand<mode>): Ditto.
1042         (sync_new_nand<mode>): Ditto.
1043
1044 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
1045
1046         * config/arm/thumb2.md (thumb2_casesi_internal,
1047         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
1048
1049 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1050
1051         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
1052         nand to the changed 4.4 semantic.
1053
1054 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1055
1056         PR middle-end/29215
1057         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
1058         (fold_builtin_memory_op): Handle even the case where just one
1059         of src and dest is an address of a var decl component, using
1060         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
1061         and readonly_data_expr src check.
1062         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
1063         up warnings.
1064
1065         PR rtl-optimization/36998
1066         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
1067         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
1068         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
1069         stack_adjust_offset callers.
1070         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
1071         branches properly.
1072         (compute_barrier_args_size): Handle insns in annulled branches
1073         properly.
1074
1075 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
1076
1077         PR target/38151
1078         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
1079         Handle cases when integer argument crosses argument register boundary.
1080
1081 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1082
1083         PR bootstrap/33100
1084         * config.gcc (i[34567]86-*-solaris2*): Don't include
1085         i386/t-crtstuff here.
1086         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
1087         * config/i386/t-sol2: Move to libgcc/config/i386.
1088
1089 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1090
1091         PR driver/21706
1092         * tlink.c: Include "libiberty.h".
1093         (initial_cwd): Change type into char *.
1094         (tlink_init): Call getpwd instead of getcwd.
1095
1096 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
1097
1098         PR rtl-optimization/32283
1099         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
1100         of the induction variable to decide whether it may wrap.
1101         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
1102         initialization of the bound before the loop.
1103         * simplify-rtx.c (simplify_binary_operation_1): Add two
1104         simplifications regarding AND.
1105         (simplify_plus_minus): Only fail if no simplification is possible.
1106         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
1107
1108 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1109
1110         PR c++/36631
1111         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
1112         checking until GIMPLE lowering.
1113         * gimple-low.c (check_call_args): New function.
1114         (lower_stmt) <case GIMPLE_CALL>: Call it.
1115
1116 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
1117
1118         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
1119         with the same type as the first operand of the AND expression.
1120
1121 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1122
1123         PR bootstrap/37859
1124         * ira-int.h (struct ira_loop_tree_node): New member
1125         entered_from_non_parent_p.
1126
1127         * ira-color.c (print_loop_title): Print loop bbs.
1128
1129         * ira-emit.c (entered_from_non_parent_p,
1130         setup_entered_from_non_parent_p): New functions.
1131         (not_modified_p): Rename to store_can_be_removed_p.  Check there
1132         is no side entries.
1133         (generate_edge_moves): Use store_can_be_removed_p instead of
1134         not_modified_p.
1135         (ira_emit): Call setup_entered_from_non_parent_p.
1136
1137         * ira-build.c (copy_info_to_removed_store_destinations):
1138         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
1139         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
1140         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
1141         update all accumulated attributes.
1142
1143 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1144
1145         PR bootstrap/37790
1146         * ira-int.h (ira_copy_allocno_live_range_list,
1147         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
1148         ira_finish_allocno_live_range_list): New prototypes.
1149         (ira_allocno_live_ranges_intersect_p,
1150         ira_pseudo_live_ranges_intersect_p): Remove.
1151
1152         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
1153         ira_pseudo_live_ranges_intersect_p): Rename to
1154         allocnos_have_intersected_live_ranges_p and
1155         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
1156
1157         * ira-color.c: ... here
1158         (coalesced_allocno_conflict_p): Use
1159         allocnos_have_intersected_live_ranges_p.
1160         (coalesced_allocnos_living_at_program_points,
1161         coalesced_allocnos_live_at_points_p,
1162         set_coalesced_allocnos_live_points): Remove.
1163         (slot_coalesced_allocnos_live_ranges,
1164         slot_coalesced_allocno_live_ranges_intersect_p,
1165         setup_slot_coalesced_allocno_live_ranges): New.
1166         (coalesce_spill_slots): Use ranges of coalesced allocnos.
1167         (ira_sort_regnos_for_alter_reg): Use
1168         allocnos_have_intersected_live_ranges_p.
1169         (ira_reuse_stack_slot): Use
1170         pseudos_have_intersected_live_ranges_p.
1171
1172         * global.c (pseudo_for_reload_consideration_p): Check
1173         flag_ira_share_spill_slots too.
1174
1175         * ira-build.c (copy_allocno_live_range_list): Rename to
1176         ira_copy_allocno_live_range_list.  Make it external.
1177         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
1178         external.
1179         (ira_allocno_live_ranges_intersect_p): New.
1180         (ira_finish_allocno_live_range_list): New.
1181         (finish_allocno): Use it.
1182         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
1183         (copy_info_to_removed_store_destinations): Ditto.  Use
1184         ira_copy_allocno_live_range_list.
1185         (ira_flattening): Use ira_merge_allocno_live_ranges.
1186
1187         * ira.c (too_high_register_pressure_p): New function.
1188         (ira): Switch off sharing spill slots if the pressure is too high.
1189
1190 2008-11-19  Richard Guenther  <rguenther@suse.de>
1191
1192         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
1193         non-sizetype offsets if their precision matches that of the pointer.
1194         * expr.c (expand_expr_real_1): Always sign-extend the offset
1195         operand of a POINTER_PLUS_EXPR.
1196
1197 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1198
1199         * config.gcc: Unobsolete mips-sgi-irix[56]*.
1200         (mips-sgi-irix[56]*): No need to use fixproto.
1201
1202 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1203             Paul Brook  <paul@codesourcery.com>
1204
1205         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
1206         executable stack.
1207
1208 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1209
1210         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
1211
1212 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
1213
1214         PR target/38156
1215         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
1216         (separate_decls_in_region): Create shared struct even when there
1217         are only reductions.
1218
1219 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
1220
1221         * config/picochip/picochip.c (headers): Remove an unnecessary
1222         header file.
1223
1224 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
1225
1226         PR target/36133
1227         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
1228         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
1229         shift instructions.
1230         * config/m68k/m68k.md: Adjust all conditional branches that use the
1231         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
1232
1233 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
1234
1235         PR target/37362
1236         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
1237         is a register or zero operand in the correct mode before generating
1238         mtch1 insn or a register operand in the correct mode before generating
1239         mfch1 insn.
1240         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
1241
1242 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
1243
1244         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
1245         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
1246         mipsisa*-*-elf*.  Handle mipsisa64r2*.
1247         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
1248         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1249         mips64r2.
1250         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
1251         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1252         mips64r2.
1253         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
1254         Fix mips16 if mips64 or mips64r2 are multilib defaults.
1255         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1256         mips64r2.
1257
1258 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
1259
1260         PR target/38130
1261         * config/i386/i386.md (allocate_stack_worker_32,
1262         allocate_stack_worker_64): Don't use match_dup between input and
1263         output operand.
1264         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
1265         * config/i386/i386.c (ix86_expand_prologue): Likewise.
1266
1267 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
1268
1269         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
1270         is forced when trying to do a symbol link for it.
1271
1272 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
1273
1274         * expmed.c (extract_bit_field_1): Also use a temporary and
1275         convert_extracted_bit_field when the conversion from ext_mode to
1276         the target mode requires explicit truncation.
1277
1278 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1279
1280         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
1281         Tweak formatting.
1282         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
1283         registers when not optimizing.
1284
1285 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1286
1287         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
1288         and its associated define_split.  Expose the all-d alternative
1289         to the register allocator, but mark it with "?".  Mark the first
1290         alternative with "*?*?".
1291         (*mul_sub_si): Likewise.
1292         (*mul_acc_si_r3900): New pattern.
1293
1294 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
1295
1296         PR middle-end/38140
1297         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
1298         propagating x = &a into *x = b, add a cast if not useless
1299         type conversion or don't optimize if another stmt would be
1300         needed.
1301
1302 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
1303
1304         PR middle-end/37908
1305         * optabs.c (expand_sync_operation): Properly handle NAND case
1306         by calculating ~(t1 & val) instead of (~t1 & val).
1307         * builtins.c (expand_builtin_sync_operation): Warn for changed
1308         semantics in NAND builtins.
1309         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
1310
1311         * doc/invoke.texi (Warning options): Add Wsync-nand.
1312         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
1313         __sync_fetch_and_nand builtin operation in the example.  Add a note
1314         about changed semantics in GCC 4.4.
1315         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
1316         operation in the example.  Add a note about changed semantics in
1317         GCC 4.4.
1318
1319 2008-11-16  Jan Hubicka  <jh@suse.cz>
1320
1321         * cgraph.c (cgraph_function_body_availability): Fix test of externally
1322         visible.
1323
1324 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
1325
1326         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
1327         to -mips4.
1328
1329 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1330
1331         PR target/38052
1332         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
1333         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
1334         split out from...
1335         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
1336         rather than call_really_used_regs when handling $gp.
1337
1338 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1339
1340         PR target/38052
1341         * config/mips/mips.c (machine_function): Update the comment
1342         above global_pointer.
1343         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
1344         that a function doesn't need a global pointer.
1345         (mips_current_loadgp_style): Update accordingly.
1346         (mips_restore_gp): Likewise.
1347         (mips_output_cplocal): Likewise.
1348         (mips_expand_prologue): Likewise.
1349
1350 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1351
1352         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
1353         parameter.  Use DImode for computing the number of registers.
1354         (function_arg): Adjust for above change.
1355         (function_value): Likewise.
1356
1357 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
1358
1359         PR tree-optimization/37950
1360         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
1361         not computed for the current function.
1362
1363 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1364
1365         PR target/38123
1366         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
1367         gpr and other COMPONENT_REFs.
1368
1369 2008-11-15  Richard Guenther  <rguenther@suse.de>
1370
1371         PR tree-optimization/38051
1372         * tree-ssa-alias.c (update_alias_info_1): Manually find
1373         written variables.
1374
1375 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
1376
1377         * doc/invoke.texi (-mfix-r10000): Document.
1378         * config/mips/mips.opt (mfix-r10000): New option.
1379         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
1380         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
1381         (MIPS_COMPARE_AND_SWAP_12): Likewise.
1382         (MIPS_SYNC_OP): Likewise.
1383         (MIPS_SYNC_OP_12): Likewise.
1384         (MIPS_SYNC_OLD_OP_12): Likewise.
1385         (MIPS_SYNC_NEW_OP_12): Likewise.
1386         (MIPS_SYNC_OLD_OP): Likewise.
1387         (MIPS_SYNC_NAND): Likewise.
1388         (MIPS_SYNC_OLD_NAND): Likewise.
1389         (MIPS_SYNC_EXCHANGE): Likewise.
1390         (MIPS_SYNC_EXCHANGE_12): Likewise.
1391         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
1392         delay slots.
1393         (MIPS_SYNC_NEW_NAND): Likewise.
1394         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
1395         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
1396         (mips_output_sync_loop): New function.
1397         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
1398         Make -mfix-r10000 require branch-likely instructions.
1399         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
1400         mips_output_sync_loop.
1401         (compare_and_swap_12): Likewise.
1402         (sync_add<mode>): Likewise.
1403         (sync_<optab>_12): Likewise.
1404         (sync_old_<optab>_12): Likewise.
1405         (sync_new_<optab>_12): Likewise.
1406         (sync_nand_12): Likewise.
1407         (sync_old_nand_12): Likewise.
1408         (sync_new_nand_12): Likewise.
1409         (sync_sub<mode>): Likewise.
1410         (sync_old_add<mode>): Likewise.
1411         (sync_old_sub<mode>): Likewise.
1412         (sync_new_add<mode>): Likewise.
1413         (sync_new_sub<mode>): Likewise.
1414         (sync_<optab><mode>): Likewise.
1415         (sync_old_<optab><mode>): Likewise.
1416         (sync_new_<optab><mode>): Likewise.
1417         (sync_nand<mode>): Likewise.
1418         (sync_old_nand<mode>): Likewise.
1419         (sync_new_nand<mode>): Likewise.
1420         (sync_lock_test_and_set<mode>): Likewise.
1421         (test_and_set_12): Likewise.
1422
1423 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
1424
1425         * gcc.c (cc1_options): Fix comment.
1426
1427 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1428
1429         PR c++/37561
1430         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
1431         argtype instead of result_type.
1432
1433 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
1434
1435         * ira-int.h (struct ira_loop_tree_node): Improve comments for
1436         subloop_next/next and subloops/childen fields.
1437
1438 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1439
1440         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
1441         (STANDARD_INCLUDE_DIR): Redefine to "/include".
1442         (LOCAL_INCLUDE_DIR): Undefine.
1443         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
1444
1445 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
1446
1447         PR rtl-optimization/37397
1448         * ira-int.h (struct ira_allocno): New member bad_spill_p.
1449         (ALLOCNO_BAD_SPILL_P): New macro.
1450
1451         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
1452
1453         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
1454         (create_cap_allocno, propagate_allocno_info,
1455         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
1456         (update_bad_spill_attribute): New function.
1457         (ira_build): Call it.
1458
1459         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
1460
1461 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1462
1463         PR tree-optimization/38104
1464         * gimplify.c (gimple_regimplify_operands): Add referenced vars
1465         before calling mark_symbols_for_renaming, not after it.
1466
1467 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
1468
1469         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
1470         (OVERRIDE_OPTIONS): Likewise.
1471
1472 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1473             Andrew Stubbs  <ams@codesourcery.com>
1474             Gunnar Von Boehn  <gunnar@genesi-usa.com>
1475
1476         PR target/36134
1477         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
1478         the shorter LEA insn over ADD.L where possible.
1479
1480 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
1481
1482         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
1483         systems, which are assumend to always provide SSP-support in glibc.
1484         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
1485         case.
1486         * configure: Regenerate.
1487
1488 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1489
1490         PR middle-end/36125
1491         * function.c (gimplify_parameters): For callee copies parameters,
1492         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
1493
1494 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
1495
1496         PR target/28102
1497         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
1498         x86 parts into the `i[34567]86-*-linux*' and parts that are
1499         independent of the processor architecture into the `*-*-linux*' cases.
1500         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
1501         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
1502         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
1503         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
1504         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
1505         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
1506         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
1507
1508 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
1509
1510         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
1511         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
1512         (ls2_idiv): Likewise idiv3.
1513         (ls2_prefetch): New reservation.
1514         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
1515         * config/mips/mips.md (type): Add imul3nc and idiv3.
1516         (length): Handle idiv3.
1517         (any_mod): New code_iterator.
1518         (u): Handle MOD and UMOD.
1519         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
1520         (prefetch): Handle TARGET_LOONGSON_2EF.
1521
1522 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1523
1524         PR c++/27017
1525         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
1526         (prune_unused_types_walk): Call it for non-perennial local classes.
1527         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
1528         entry, just set it to 2 and recurse on children, don't walk attributes
1529         again.
1530
1531 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
1532
1533         * c-common.c (warn_about_parentheses): Add missing whitespace
1534         in warning.
1535
1536 2008-11-13  Paul Brook  <paul@codesourcery.com>
1537
1538         * doc/invoke.texi: Document --fix-cortex-m3.
1539         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
1540         Cortex-M3 cpu is selected.
1541         (output_move_double): Avoid overlapping base register and first
1542         destination register when fix_cm3_ldrd.
1543         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
1544
1545 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1546
1547         PR bootstrap/38100
1548         * gimple.h (gimple_range_check_failed): Remove prototype.
1549         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
1550         in guarding #if.
1551         (gimple_range_check_failed): Removed.
1552
1553 2008-11-13  Andrew Haley  <aph@redhat.com>
1554
1555         PR bootstrap/38088
1556         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
1557         __LONG_LONG_MAX__.
1558
1559 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1560
1561         PR c++/36478
1562         Revert:
1563         2007-05-07  Mike Stump  <mrs@apple.com>
1564         * doc/invoke.texi (Warning Options): Document that -Wempty-body
1565         also checks for and while statements in C++.
1566
1567 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
1568
1569         PR debug/27574
1570         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
1571         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
1572         - which clones are reachable - as "abstract and needed".
1573         * cgraph.c (cgraph_release_function_body):  If a node is
1574         "abstract and needed", do not release its DECL_INITIAL() content
1575         that will be needed to emit debug info.
1576
1577 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
1578
1579         PR target/27880
1580         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
1581         to set HAVE_GETIPINFO.
1582         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
1583         * configure: Regenerate.
1584         * config.in: Regenerate.
1585
1586 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
1587
1588         PR bootstrap/38010
1589         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
1590
1591 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1592
1593         Revert:
1594         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1595         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1596
1597 2008-11-12  Jason Merrill  <jason@redhat.com>
1598
1599         PR c++/38007
1600         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
1601         special casing.
1602
1603 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
1604
1605         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
1606         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
1607         atmega32u6 devices.
1608         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1609         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1610
1611 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1612
1613         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
1614         packed-stack special handling.
1615         (FRAME_ADDR_RTX): Add definition.
1616
1617 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1618
1619         PR target/35366
1620         * fold-const.c (native_encode_string): New function.
1621         (native_encode_expr): Use it for STRING_CST.
1622
1623 2008-11-12  DJ Delorie  <dj@redhat.com>
1624
1625         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
1626         insns if the intermediate value will be used later.
1627
1628 2008-11-12  Andreas Schwab  <schwab@suse.de>
1629
1630         * config/m68k/m68k.c (print_operand): Mask off extra extension
1631         bits when writing out the representation of real values.
1632
1633 2008-11-12  Ira Rosen  <irar@il.ibm.com>
1634
1635         PR tree-optimization/38079
1636         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
1637         with vect_dump.
1638
1639 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1640
1641         PR c++/35334
1642         * c-pretty-print.c (pp_c_complex_expr): New function.
1643         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
1644
1645         PR target/35366
1646         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
1647         than INNER and INNER is a constant, forcibly align INNER as much
1648         as needed.
1649
1650 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1651
1652         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
1653
1654 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1655
1656         PR rtl-optimization/37363
1657         * simplify-rtx.c (simplify_plus_minus): Don't create
1658         (const (minus ...)) expresisons.
1659
1660 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
1661
1662         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
1663         handling.
1664
1665 2008-11-10  Catherine Moore  <clm@codesourcery.com>
1666
1667         * config.gcc (mips64vrel-*-elf*): Include the tm_file
1668         prior to vr.h.
1669         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
1670         (BASE_DRIVER_SELF_SPECS): Remove.
1671         (DRIVER_SELF_SPECS): New definition.
1672         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
1673         BASE_DRIVER_SELF_SPECS.
1674         * config/mips/sde.h: Likewise.
1675         * config/mips/iris6.h: Likewise.
1676         * config/mips/vr.h: Likewise.
1677         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
1678
1679 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
1680
1681         PR rtl-optimizations/37948
1682         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
1683         (ira_create_copy, ira_add_allocno_copy): New parameter.
1684
1685         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
1686         to ira_add_allocno_copy.
1687         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
1688         parameter to process_regs_for_copy.
1689         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
1690         Fix typo in passing second allocno to ira_add_allocno_copy.
1691
1692         * ira-color.c (update_conflict_hard_regno_costs): Use head of
1693         coalesced allocnos list.
1694         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
1695         the graph.
1696         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
1697         (add_ira_allocno_to_ordered_bucket): Rename to
1698         add_allocno_to_ordered_bucket.
1699         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
1700         head of coalesced allocnos list.
1701         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
1702         Check that it is aready calculated.
1703         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
1704         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
1705         list.
1706         (coalesce_allocnos): Do extended coalescing too.
1707
1708         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
1709         parameter to ira_add_allocno_copy.
1710
1711         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
1712         parameter.
1713         (print_copy): Print copy origination too.
1714
1715         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
1716         equivalent memory.
1717
1718 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1719
1720         PR rtl-optimization/37514
1721         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
1722         flag_ira_share_spill_slots to 2 if it's already non-zero.
1723         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
1724         flag_ira_share_spill_slots is 2.
1725
1726 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
1727
1728         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
1729         (prologue_enter_32): Set FB to SP - 4.
1730
1731 2008-11-10  DJ Delorie  <dj@redhat.com>
1732
1733         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
1734         constraint for single-bit-clear in lower byte of HI constant, vs
1735         Imb which just ignores the upper byte.
1736         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
1737         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
1738         (iorhi3_16): Check for single bit set, not single bit clear.
1739
1740 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
1741
1742         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
1743
1744         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
1745
1746 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1747
1748         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
1749         values living in memory and use more precise alignment information.
1750
1751 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
1752
1753         PR middle-end/35314
1754         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
1755         after __mf_check call if the call must end a bb.
1756
1757 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
1758
1759         PR middle-end/37807
1760         PR middle-end/37809
1761         * combine.c (force_to_mode): Do not process vector types.
1762
1763         * rtlanal.c (nonzero_bits1): Do not process vector types.
1764         (num_sign_bit_copies1): Likewise.
1765
1766 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
1767
1768         * config/i386/gnu.h: Add copyright and licensing header.
1769         * config/gnu.h: Likewise.
1770
1771 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1772
1773         * fwprop.c (fwprop_done): Call df_remove_problem.
1774
1775 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
1776
1777         PR middle-end/37379
1778         * tree-scalar-evolution.c (instantiate_scev_1): Return
1779         chrec_dont_know for VL_EXP_CLASS_P.
1780
1781 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1782
1783         * reg-stack.c (reg_to_stack): Add missing braces in memset
1784         size calculation.
1785
1786 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
1787
1788         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
1789         (NO_PROFILE_COUNTERS): New define.
1790
1791 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
1792
1793         PR target/26397
1794         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
1795
1796 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
1797
1798         PR target/35574
1799         * config/sparc/constraints.md (D): New.
1800         * config/sparc/predicates.md (const_double_or_vector_operand): New.
1801         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
1802         'D' constraint.
1803         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
1804         Use the 'D' constraint in addition to 'F' in some alternatives.
1805         (DF splitter): Generalize for V64mode.
1806         * doc/md.texi (SPARC): Document the 'D' constraint.
1807
1808 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1809
1810         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
1811
1812 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1813
1814         * gcc.c: Remove ancient comment about a bug in Sun cc.
1815
1816 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
1817
1818         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
1819
1820 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1821
1822         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
1823
1824 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1825
1826         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
1827         description.
1828
1829 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
1830
1831         PR target/38016
1832         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
1833         just MEM_P.
1834
1835 2008-11-05  Martin Jambor  <mjambor@suse.cz>
1836
1837         PR middle-end/37861
1838         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
1839         pointer arithmetics into array_ref if the array is accessed
1840         through an indirect_ref.
1841
1842 2008-11-05  Richard Guenther  <rguenther@suse.de>
1843
1844         PR middle-end/37742
1845         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
1846         qualified pointer conversion before stripping qualifiers.
1847         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
1848         * tree-flow.h (may_propagate_address_into_dereference): Declare.
1849         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
1850         function.
1851         (ccp_fold): Use it.
1852         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
1853         properly canonicalize binary ops.
1854         (forward_propagate_addr_expr_1): Use
1855         may_propagate_address_into_dereference.
1856
1857 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
1858
1859         PR middle-end/37286
1860         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
1861         Initialize uninitialized input registers with a NaN.
1862
1863 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1864
1865         PR middle-end/37833
1866
1867         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
1868
1869 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1870
1871         PR middle-end/37943
1872
1873         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
1874         exits and conditions.
1875         * testsuite/gcc.dg/graphite/pr37943.c: New.
1876
1877 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
1878             Andrew Pinski  <andrew_pinski@playstation.sony.com>
1879
1880         PR c/35430
1881         * c-common.c (warn_for_sign_compare): For complex result_type
1882         use component's type.
1883
1884 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
1885
1886         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
1887
1888         * print-tree.c (print_node): Don't print DECL_INITIAL
1889         for PARM_DECL.
1890
1891         PR c/37106
1892         * c-common.c (parse_optimize_options): Save and restore
1893         flag_strict_aliasing around decode_options call.
1894
1895 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
1896
1897         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
1898         (host_detect_local_cpu): Use it instead of casted strings to
1899         compare vendor signatures.
1900
1901 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
1902
1903         PR target/37989
1904         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
1905         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
1906
1907 2008-11-03  Catherine Moore  <clm@codesourcery.com>
1908
1909         * config/mips.c (mips_conditional_register_usage):  Handle the
1910         DSP control register.
1911         * doc/extend.texi: Document the DSP control register.
1912
1913 2008-11-03  Steve Ellcey <sje@cup.hp.com>
1914             Jakub Jelinek  <jakub@redhat.com>
1915
1916         * omp-low.c (expand_omp_for_generic): If iter_type has different
1917         precision than type and type is a pointer type, cast n1 and n2
1918         first to an integer type with the same precision as pointers
1919         and only afterwards to iter_type.
1920
1921 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1922
1923         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
1924         (UNSPEC_GOTSYM_OFF): New unspec.
1925         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
1926         (pic_add_dot_plus_eight): Likewise.
1927         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
1928         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
1929         UNSPEC_PIC_BASE operands.
1930         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
1931         (arm_output_addr_const_extra): Handle it.
1932
1933 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1934
1935         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
1936         integer class to full integer class if the offset is not word-aligned.
1937
1938 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1939
1940         PR rtl-opt/37782
1941         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1942         mode count is in.
1943         (doloop_optimize): Update call to doloop_modify.
1944
1945 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1946
1947         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
1948
1949 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1950
1951         PR other/37463
1952         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
1953         gcc_cv_as_cfi_directive.
1954         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
1955         merging read-only and read-write sections or assembler emits
1956         read-write .eh_frame sections.
1957         * configure: Regenerate.
1958
1959 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
1960
1961         Revert:
1962         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1963
1964         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1965         problem.
1966         (rs6000_emit_prologue): Invert logic.
1967         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1968         (reg:P 11) instead of match_operand.
1969         (*save_fpregs_<mode>): Likewise.
1970         (*restore_gpregs_<mode>): Likewise.
1971         (*return_and_restore_gpregs_<mode>): Likewise.
1972         (*return_and_restore_fpregs_<mode>): Likewise.
1973         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1974         (reg:P 11) insted of match_operand.
1975         (*restore_gpregs_spe): Likewise.
1976         (*return_and_restore_gpregs_spe): Likewise.
1977
1978 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
1979
1980         PR tree-optimization/37684
1981         * gcc.dg/graphite/pr37684.c: New.
1982         * graphite.c (exclude_component_ref): New.
1983         (is_simple_operand): Call exclude_component_ref.
1984
1985 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1986
1987         PR tree-optimization/36908
1988         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
1989         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
1990         (number_of_rw_in_partition): New.
1991         (partition_contains_all_rw): New.
1992         (ldist_gen): Do not distribute when one of the partitions
1993         contains all the memory operations.
1994
1995 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1996
1997         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
1998         EDGE_IRREDUCIBLE_LOOP.
1999
2000 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2001
2002         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
2003         where we have one entry point in the loop which isn't the head.
2004
2005 2008-11-03  Richard Guenther  <rguenther@suse.de>
2006
2007         PR middle-end/37573
2008         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
2009
2010 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
2011
2012         PR middle-end/37858
2013         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
2014         for ipa and simple ipa passes.
2015
2016 2008-11-02  Richard Guenther  <rguenther@suse.de>
2017
2018         PR tree-optimization/37542
2019         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
2020         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
2021         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
2022         (vn_nary_op_insert_stmt): Likewise.
2023         (visit_use): Likewise.
2024
2025 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
2026
2027         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
2028         (*swap): Remove.
2029         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
2030         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
2031         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
2032         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
2033         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
2034         peephole2's): Replace unspec with rotate.
2035         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
2036
2037 2008-11-02  Richard Guenther  <rguenther@suse.de>
2038
2039         PR tree-optimization/37991
2040         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
2041         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
2042         (set_ssa_val_to): Print if the value changed.
2043         (simplify_binary_expression): Strip useless conversions.
2044
2045 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
2046
2047         PR target/37939
2048         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
2049         operand.
2050
2051 2008-11-01  Richard Guenther  <rguenther@suse.de>
2052
2053         PR middle-end/37976
2054         * builtins.c (fold_builtin_strspn): Return a size_t.
2055         (fold_builtin_strcspn): Likewise.
2056
2057 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2058
2059         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
2060         attribute for struct return convention.
2061
2062 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2063
2064         * config/rs6000/crtsavres.asm: Really, really delete.
2065
2066 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2067
2068         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2069         problem.
2070         (rs6000_emit_prologue): Invert logic.
2071         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
2072         (reg:P 11) instead of match_operand.
2073         (*save_fpregs_<mode>): Likewise.
2074         (*restore_gpregs_<mode>): Likewise.
2075         (*return_and_restore_gpregs_<mode>): Likewise.
2076         (*return_and_restore_fpregs_<mode>): Likewise.
2077         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
2078         (reg:P 11) insted of match_operand.
2079         (*restore_gpregs_spe): Likewise.
2080         (*return_and_restore_gpregs_spe): Likewise.
2081
2082 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
2083
2084         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
2085         list of word switches that take args.
2086
2087 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
2088
2089         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
2090         (s390_output_pool_entry): Call it through for_each_rtx.
2091
2092         PR middle-end/37730
2093         * expr.c (store_constructor): For vectors, if target is a MEM, use
2094         target's MEM_ALIAS_SET instead of elttype alias set.
2095
2096 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
2097
2098         PR target/37909
2099         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
2100         no address.
2101
2102 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
2103
2104         PR target/37878
2105         * config/rs6000/predicates.md (word_offset_memref_operand):
2106         Restructure code and look inside auto-inc/dec addresses.
2107
2108 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
2109
2110         PR target/32277
2111         * libgcov.c ( __gcov_indirect_call_profiler): Check
2112         TARGET_VTABLE_USES_DESCRIPTORS.
2113
2114 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
2115
2116         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
2117         (INITIAL_FRAME_POINTER_OFFSET): Remove.
2118         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
2119         offset if eliminating soft frame pointer.
2120         * config/spu/spu.md (stack_protect_set, stack_protect_test)
2121         (stack_protect_test_si): Add initial machine description
2122         for Stack Smashing Protector
2123
2124 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2125
2126         PR 11492
2127         * c-common.c (min_precision): Move to...
2128         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
2129         * tree.h (tree_int_cst_min_precision): Declare.
2130         * c-common.h (min_precision): Delete declaration.
2131         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
2132         multiplication of non-negative integer constants.
2133         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
2134         tree_int_cst_min_precision.
2135         (finish_enum): Likewise.
2136
2137 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
2138
2139         PR middle-end/36578
2140         * convert.c (convert_to_real): Do not optimize conversions of
2141         binary arithmetic operations between binary and decimal
2142         floating-point types.  Consider mode of target type in determining
2143         decimal type for arithmetic.  Unless
2144         flag_unsafe_math_optimizations, do not optimize binary conversions
2145         where this may change rounding behavior.
2146         * real.c (real_can_shorten_arithmetic): New.
2147         * real.h (real_can_shorten_arithmetic): Declare.
2148
2149 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2150
2151         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
2152         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
2153         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
2154         appropriate.
2155         (must_save_p): For some workarounds, interrupts need to clobber a
2156         P register.
2157         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
2158         and LC1 for WA_05000257.
2159         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
2160         WA_05000283 and WA_05000315.
2161         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
2162         (movbi): Add alternative to set CC to 1; improve code for setting
2163         CC to 0.
2164         (dummy_load): New pattern.
2165
2166 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
2167
2168         PR middle-end/37870
2169         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
2170         BLKmode for non-memory, convert using a wider MODE_INT mode
2171         or through memory.
2172
2173         PR middle-end/37913
2174         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
2175         that haven't been removed yet.
2176
2177 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2178
2179         * config/bfin/bfin.c (struct machine_function): New member
2180         has_loopreg_clobber.
2181         (bfin_expand_movmem): Set it when generating memcpy insns.
2182         (n_regs_saved_by_prologue, expand_prologue_reg_save,
2183         expand_epilogue_reg_restore): If we have hardware loops,
2184         memcpy insns (indicated by has_loopreg_clobber) or function
2185         calls, we need to save the loop registers.
2186
2187 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
2188
2189         * config/i386/i386.c (core2_cost): Fix typos in comments.
2190
2191 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2192
2193         PR c/37924
2194         * combine.c (make_compound_operation): Don't call make_extraction with
2195         non-positive length.
2196         (simplify_shift_const_1): Canonicalize count even if complement_p.
2197
2198 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
2199
2200         * convert.c (strip_float_extensions): Do not remove or introduce
2201         conversions between binary and decimal floating-point types.
2202
2203 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2204
2205         PR middle-end/37931
2206         * fold-const.c (distribute_bit_expr): Convert common, left and
2207         right arguments to type.
2208
2209 2008-10-28  Nick Clifton  <nickc@redhat.com>
2210
2211         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
2212         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
2213         call_really_used_regs array rather than the call_used_regs array.
2214         (mn10300_get_live_callee_saved_regs, expand_prologue,
2215         expand_epilogue, output_tst): Likewise.
2216
2217 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
2218
2219         PR target/37378
2220         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
2221         (df_get_entry_block_def_set): Neither here.
2222         (df_get_regular_block_artificial_uses): Add EH_USES registers.
2223
2224         PR tree-optimization/37879
2225         * predict.c (tree_estimate_probability): Check if last_stmt is
2226         non-NULL before dereferencing it.
2227
2228 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2229
2230         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
2231         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
2232         (ira_fast_allocation): Remove the prototype.
2233
2234         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
2235         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
2236         (color_pass): Modify the updated costs.
2237         (ira_color): Rename to color.  Make it static.
2238         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
2239         (ira_color): New function.
2240
2241         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
2242         change.
2243
2244         * ira-lives.c (last_call_num, allocno_saved_at_call): New
2245         variables.
2246         (set_allocno_live, clear_allocno_live, mark_ref_live,
2247         mark_ref_dead): Invalidate corresponding element of
2248         allocno_saved_at_call.
2249         (process_bb_node_lives): Increment last_call_num.  Setup
2250         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
2251         allocno was already saved.
2252         (ira_create_allocno_live_ranges): Initiate last_call_num and
2253         allocno_saved_at_call.
2254
2255         * ira-build.c (ira_create_allocno): Initiate
2256         ALLOCNO_UPDATED_COVER_CLASS_COST.
2257         (create_cap_allocno, propagate_allocno_info,
2258         remove_unnecessary_allocnos): Remove setting updated costs.
2259         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
2260
2261         * ira.c (ira):  Don't call ira_fast_allocation.
2262
2263         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
2264         updated costs.
2265
2266 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2267
2268         PR middle-end/37813
2269         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
2270
2271         * ira-int.h (ira_hard_regno_cover_class): New.
2272
2273         * ira-lives.c (mark_reg_live, mark_reg_dead,
2274         process_bb_node_lives): Use ira_hard_regno_cover_class.
2275
2276         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
2277         (setup_hard_regno_cover_class): New function.
2278         (ira_init): Call setup_hard_regno_cover_class.
2279
2280         * ira-costs.c (cost_class_nums): Add comment.
2281         (find_allocno_class_costs): Initiate cost_class_nums.
2282         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
2283
2284 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2285
2286         PR middle-end/37884
2287         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
2288         Rename to copy_info_to_removed_store_destinations.  Propagate
2289         conflict hard regs and register stack attribute.
2290
2291 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2292
2293         PR middle-end/37316
2294         * pa.c (function_arg_padding):  Pad complex and vector types
2295         upward in 64-bit runtime.
2296         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2297
2298 2008-10-26  Matthias Klose  <doko@ubuntu.com>
2299
2300         * doc/install.texi: Document requirements on antlr.
2301
2302 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2303
2304         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2305         first.
2306
2307 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2308
2309         PR target/37841
2310         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
2311         is defined, use it to modify the constant offset.
2312
2313         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
2314
2315         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
2316         and short arguments to the correct location as mandated by the ABI.
2317
2318 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2319
2320         PR rtl-optimization/37769
2321         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2322
2323 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2324
2325         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2326         unwind-dw2-Os-4-200.o.
2327
2328 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
2329
2330         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
2331         (convert_for_assignment): Remove ic_argpass_nonproto cases.
2332
2333 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2334
2335         PR tree-optimization/36038
2336         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
2337         add sizetype IV with initial value zero instead of pointer type.
2338
2339 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2340
2341         PR c/7543
2342         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
2343         around bit operation.
2344         * profile.c (is_edge_inconsistent): Likewise.
2345         * fold-const.c (truth_value_p): Move from here...
2346         * tree.h (truth_value_p): ... to here.
2347         * c-tree.h (c_expr): Update description of original_code.
2348         * c-typeck.c (parser_build_unary_op): Set original_code.
2349         (parser_build_binary_op): Update call to warn_about_parentheses.
2350         * c-common.c (warn_about_parentheses): Take two additional
2351         arguments of the operands. Use a switch. Quote operators
2352         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
2353         Add warning about !x | y and !x & y.
2354         * c-common.h (warn_about_parentheses): Update declaration.
2355
2356 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2357
2358         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
2359         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
2360         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
2361         New variables.
2362         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
2363         (check-%): For test targets listed in lang_checks_parallelized
2364         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
2365         run the testing in multiple make goals, possibly parallel, and
2366         afterwards run dg-extract-results.sh to merge the sum and log files.
2367
2368 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
2369
2370         * config/mips/mips.c (mips_canonicalize_move_class): New function.
2371         (mips_move_to_gpr_cost): Likewise.
2372         (mips_move_from_gpr_cost): Likewise.
2373         (mips_register_move_cost): Make more fine-grained.
2374
2375 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
2376
2377         * graphite.c (graphite_apply_transformations): Check for
2378         -fgraphite-identity.
2379         * toplev.c (process_options): Add graphite_identity.
2380         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2381
2382 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2383
2384         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
2385         mulhisihl and mulhisihh builtins.
2386
2387         From Jie Zhang  <jie.zhang@analog.com>
2388         * config/bfin/bfin.md (composev2hi): Put operands into vector
2389         with correct order.
2390
2391 2008-10-22  Chao-ying Fu  <fu@mips.com>
2392
2393         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2394
2395 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
2396
2397         From Mike Frysinger  <michael.frysinger@analog.com>
2398         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
2399         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
2400         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
2401         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
2402         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
2403         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
2404         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
2405         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
2406         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
2407         __ADSPBF51x__ for all of them.
2408         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
2409         -mcpu bf512, bf514, bf516, and bf518.
2410         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2411         bf512-none, bf514-none, bf516-none, and bf518-none.
2412         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2413         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2414         * doc/invoke.texi (Blackfin Options): Document that
2415         -mcpu now accepts bf512, bf514, bf516, and bf518.
2416
2417 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2418
2419         PR middle-end/37882
2420         * fold-const.c (build_range_type): For 1 .. signed_max
2421         range call build_nonstandard_inter_type if signed_type_for
2422         returned a type with bigger precision.
2423
2424 2008-10-22  Richard Guenther  <rguenther@suse.de>
2425
2426         * tree.def (COMPLEX_TYPE): Constrain element type.
2427         * tree.c (build_complex_type): Assert that.
2428         * tree-ssa-structalias.c (could_have_pointers): Complex types
2429         cannot have pointers.
2430
2431 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2432
2433         PR c/30949
2434         * c-typeck.c (convert_for_assignment): Do not give declaration's
2435         location for builtins. Spell out which type was expected and which
2436         was given.
2437
2438 2008-10-22  Nick Clifton  <nickc@redhat.com>
2439
2440         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
2441         the fdpic register to be a target when running in fdpic mode.
2442
2443 2008-10-22 Rafael Espindola  <espindola@google.com>
2444
2445         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
2446         newly created statements.
2447
2448 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
2449
2450         PR target/37633
2451         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
2452         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
2453         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
2454
2455 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2456
2457         PR target/37880
2458         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
2459         Adjust -mcmodel=medium description for 2005-07-31 changes.
2460
2461 2008-10-22  Jan Hubicka  <jh@suse.cz>
2462             Jakub Jelinek  <jakub@redhat.com>
2463
2464         PR middle-end/35853
2465         * doc/invoke.texi: Remove references to obsoleted -d dumps.
2466
2467 2008-10-21  Richard Henderson  <rth@redhat.com>
2468
2469         PR 37815
2470         * emit-rtl.c (get_spill_slot_decl): Export.
2471         * emit-rtl.h (get_spill_slot_decl): Declare.
2472         * var-tracking.c (vt_add_function_parameters): Relax assertion
2473         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
2474
2475 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
2476
2477         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
2478         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
2479         of from insn.
2480
2481 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
2482
2483         PR middle-end/37669
2484         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
2485         processed by get_maxval_strlen.
2486
2487 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
2488
2489         PR target/35485
2490         * tree.c (get_file_function_name): Copy first_global_object_name.
2491         Centralize call to clean_symbol_name.
2492
2493 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
2494
2495         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
2496         * config/svr4.h (SVR4_ASM_SPEC): New.
2497         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2498         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2499
2500         * doc/invoke.texi (Option Summary): Add -T to linker options.
2501         (Link Options): Document -T.
2502
2503 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
2504
2505         * tree-inline.c (tree_inlinable_function_p): Remove tuples
2506         debugging hack.
2507
2508         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2509
2510         PR debug/37020
2511         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
2512
2513 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
2514
2515         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
2516         part of expression.
2517
2518 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
2519
2520         * doc/install.texi: Fix typos in previous patch.
2521
2522 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
2523
2524         * doc/install.texi: Document in-tree building of gcc and mpfr.
2525
2526 2008-10-19  Richard Guenther  <rguenther@suse.de>
2527
2528         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
2529
2530 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2531
2532         PR c/30260
2533         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
2534         (build_enumerator): Convert enumerators that fit in integer to
2535         integer type.
2536
2537 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
2538
2539         * config/i386/i386.md (unnamed peephole2): Do not force memory
2540         operands of arith or logical instructions into registers for
2541         non-TARGET_READ_MODIFY targets.
2542
2543         (ffs_cmove): Change operand 0 predicate to register_operand.
2544         Change operand 1 predicate to nonimmediate_operand.
2545         (ffsdi2): Ditto.
2546         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
2547
2548 2008-10-18  Richard Guenther  <rguenther@suse.de>
2549
2550         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
2551         VIEW_CONVERT_EXPR case against invalid gimple.
2552
2553 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2554
2555         * c-parser.c (c_parser_binary_expression): Silence the
2556         uninitialized variable warning emitted for binary_loc.
2557
2558 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
2559
2560         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
2561         translation cache.
2562
2563 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
2564
2565         PR c/33192
2566         * c-typeck.c (build_unary_op): Use omit_one_operand for
2567         IMAGPART_EXPR of real argument.
2568
2569 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2570
2571         PR tree-optimization/37664
2572         * fold-const.c (fold_binary): When optimizing comparison with
2573         highest or lowest type's value, don't consider TREE_OVERFLOW.
2574
2575 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
2576
2577         PR target/35483
2578         * Makefile.in (coverage.o): Depend on $(TM_P_H).
2579         * coverage.c: Include tm_p.h.
2580         * config/rs6000/x-aix (jc1): Override LDFLAGS.
2581         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
2582         dollar signs from PREFIX.
2583         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
2584         instead of manual strip_name_encoding.
2585
2586 2008-10-16  Richard Guenther  <rguenther@suse.de>
2587
2588         PR middle-end/37418
2589         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
2590         volatile qualified functions or methods as relevant.
2591
2592 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2593
2594         PR tree-optimization/37525
2595         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
2596         sizetype unsigned constants, both in the case of C and bounds.
2597
2598 2008-10-15  Jan Hubicka  <jh@suse.cz>
2599
2600         * ira-emit.c (change_regs): Return false when replacing reg by itself.
2601
2602 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
2603
2604         PR target/37633
2605         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
2606         HARD_REGNO_CALL_PART_CLOBBERED.
2607
2608 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2609
2610         PR middle-end/37535
2611         * ira-lives.c (mark_early_clobbers): Remove.
2612         (make_pseudo_conflict, check_and_make_def_use_conflicts,
2613         check_and_make_def_conflicts,
2614         make_early_clobber_and_input_conflicts,
2615         mark_hard_reg_early_clobbers): New functions.
2616         (process_bb_node_lives): Call
2617         make_early_clobber_and_input_conflicts and
2618         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
2619
2620         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
2621         early clobbers of pseudo-registers.
2622
2623 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2624
2625         PR middle-end/37674
2626         * ira-build.c (ira_flattening): Recalculate
2627         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
2628         from the scratch instead of the propagation.
2629
2630 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2631
2632         * doc/rtl.texi (const_double): Remove the "addr" operand.
2633         Describe CONST_DOUBLE_* macros under const_double rather
2634         than const_vector.
2635         (const_fixed): Fix the operand description.
2636         (const): Add an @findex directive.
2637         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
2638         after the constant rtl table.
2639         (fix): Combine floating-point and fixed-point descriptions.
2640         Fix hyphenation.
2641         * sched-deps.c (sched_analyze_2): Remove reference to
2642         CONST_DOUBLE_CHAIN.
2643
2644 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2645
2646         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
2647         UNSPEC_GOTSYM_OFFs.
2648         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
2649         for UNSPEC_GOTSYM_OFFs.
2650         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
2651         (add_GOT_to_pic_reg): Use it.
2652         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
2653
2654 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
2655             Harsha Jagasia  <harsha.jagasia@amd.com>
2656
2657         PR tree-optimization/37485
2658         * graphite.c (gmp_cst_to_tree): Moved.
2659         (iv_stack_entry_is_constant): New.
2660         (iv_stack_entry_is_iv): New.
2661         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
2662         (loop_iv_stack_insert_constant): New.
2663         (loop_iv_stack_pop): Use new datatpype.
2664         (loop_iv_stack_get_iv): Same.
2665         (loop_iv_stack_get_iv_from_name): Same.
2666         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
2667         (loop_iv_stack_patch_for_consts): New.
2668         (loop_iv_stack_remove_constants): New.
2669         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
2670         (translate_clast): Call loop_iv_stack_patch_for_consts and
2671         loop_iv_stack_remove_constants.
2672         (gloog): Use new datatype.  Redirect construction edge to end
2673         block to avoid accidental deletion.
2674         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
2675         iv stack entry.
2676         (union iv_stack_entry_data): New.  Data in iv stack entry.
2677         (struct iv_stack_entry): New.  Datatype for iv stack entries.
2678
2679 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2680
2681         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
2682         * graphite.c (free_scop): Same.
2683         (build_scops): Same.
2684         (free_scattering): New.
2685         (build_cloog_prog): Call free_scattering.
2686         (patch_phis_for_virtual_defs): Fix memleak.
2687         (graphite_trans_bb_strip_mine): Same.
2688         (limit_scops): Same.
2689
2690 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2691             Harsha Jagasia  <harsha.jagasia@amd.com>
2692
2693         PR tree-optimization/37828
2694         * graphite.c (graphite_trans_loop_block): Do not loop block
2695         single nested loops.
2696
2697 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2698
2699         PR tree-optimization/37686
2700         * tree-loop-linear.c (linear_transform_loops): Build a
2701         loop nest vector.  Pass it to lambda_compute_access_matrices.
2702         * tree-data-ref.h (struct access_matrix): Store the loop nest
2703         relative to which it encodes the information.
2704         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
2705         (am_vector_index_for_loop): Reimplemented: iterate over the
2706         loop nest for finding the loop index in the access matrix.
2707         (lambda_compute_access_matrices): Update declaration.
2708         * lambda-code.c (build_access_matrix): Pass the loop nest and
2709         record it.
2710         (lambda_compute_access_matrices): Same.
2711
2712 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
2713
2714         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
2715         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
2716         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
2717         already implies hard float.  Also fix several insn condition
2718         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
2719
2720 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
2721
2722         PR target/35483
2723         Based on patches by Laurent Vivier.
2724         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
2725         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
2726         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
2727         dollar sign to underscore.
2728         (ASM_OUTPUT_EXTERNAL): Same.
2729         (ASM_OUTPUT_LABELREF): New.
2730         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
2731
2732         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
2733         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
2734         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
2735         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
2736
2737 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
2738
2739         PR tree-optimization/36881
2740         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
2741         that each value doesn't need runtime relocations, for !flag_pic
2742         check that each value is just a valid initializer constant.
2743
2744 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
2745
2746         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
2747         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
2748         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
2749         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
2750         GR_AND_ACC_REGS.
2751         (REG_CLASS_NAMES): Update accordingly.
2752         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
2753         rather than an unpredictable descriptive string.
2754         * config/mips/mips.c (mips_register_move_cost): Remove comment.
2755         (mips_register_move_cost): Check for specific COP*_REGS classes,
2756         instead of ALL_COP_AND_GR_REGS.
2757         (mips_ira_cover_classes): New function.
2758         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
2759         (TARGET_IRA_COVER_CLASSES): Define.
2760
2761 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
2762
2763         PR c++/37553
2764         * tree.c (build_type_attribute_qual_variant): Hash on the
2765         unqualified type, and don't overwrite an existing
2766         (type_hash_eq): Make the TYPE_NAME of the types significant, to
2767         allow distinguishing between wchar_t and its underlying type. This
2768         also means that we'll retain a little more typedef information.
2769
2770 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
2771             Dmitry Melnik  <dm@ispras.ru>
2772             Dmitry Zhurikhin  <zhur@ispras.ru>
2773             Alexander Monakov  <amonakov@ispras.ru>
2774             Maxim Kuvyrkov  <maxim@codesourcery.com>
2775
2776         * target.h (struct gcc_target): Update prototypes of needs_block_p
2777         and gen_spec_check.
2778         * haifa-sched.c (create_check_block_twin): Update calls to the above.
2779         * sel-sched.c (create_speculation_check): Likewise.
2780         * doc/tm.texi: Provide documentation for new target hooks.
2781
2782         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
2783         (ia64_gen_spec_insn): Removed.
2784         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
2785         ia64_gen_spec_check): New static functions.
2786         (ia64_alloc_sched_context, ia64_init_sched_context,
2787         ia64_set_sched_context, ia64_clear_sched_context,
2788         ia64_free_sched_context, ia64_get_insn_spec_ds,
2789         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
2790         (ia64_needs_block_p): Change prototype.
2791         (ia64_gen_check): Rename to ia64_gen_spec_check.
2792         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
2793         into declaration, add special memory dependencies handling.
2794         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
2795         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
2796         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
2797         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
2798         Define new target hooks.
2799         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
2800         (ia64_optimization_options): Turn on selective scheduling with -O3,
2801         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
2802         default with selective scheduling.
2803         (ia64_override_options): Initialize align_loops and align_functions
2804         to 32 and 64, respectively.  Set global selective scheduling flags
2805         according to target-dependent flags.
2806         (rtx_needs_barrier): Support UNSPEC_LDS_A.
2807         (group_barrier_needed): Use new mstop-bit-before-check flag.
2808         Add heuristic.
2809         (dfa_state_size): Make global.
2810         (spec_check_no, max_uid): Remove.
2811         (mem_ops_in_group, current_cycle): New variables.
2812         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
2813         Initialize new variables.
2814         (is_load_p, record_memory_reference): New functions.
2815         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
2816         reached.
2817         (ia64_variable_issue): Change use of current_sched_info to
2818         sched_deps_info.  Update comment.  Note if a load or a store is issued.
2819         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
2820         advance if maximal number of loads or stores was issued on current
2821         cycle.
2822         (scheduled_good_insn): New static helper function.
2823         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
2824         a group barrier is needed.  Fix vertical spacing.  Guard the code
2825         doing state transition with last_scheduled_insn check.
2826         Mark that a stop bit should be before current insn if there was a
2827         cycle advance.  Update current_cycle and mem_ops_in_group.
2828         (ia64_h_i_d_extended): Change use of current_sched_info to
2829         sched_deps_info. Reallocate stops_p by larger chunks.
2830         (struct _ia64_sched_context): New structure.
2831         (ia64_sched_context_t): New typedef.
2832         (ia64_alloc_sched_context, ia64_init_sched_context,
2833         ia64_set_sched_context, ia64_clear_sched_context,
2834         ia64_free_sched_context): New static functions.
2835         (gen_func_t): New typedef.
2836         (get_spec_load_gen_function): New function.
2837         (SPEC_GEN_EXTEND_OFFSET): Declare.
2838         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
2839         (get_mode_no_for_insn): Change the condition that prevents use of
2840         special hardware registers so it can now handle pseudos.
2841         (get_spec_unspec_code): New function.
2842         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
2843         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
2844         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
2845         during selective scheduling.
2846         (ia64_speculate_insn): Use ds_get_speculation_types when
2847         determining whether we need to change the pattern.
2848         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
2849         (ia64_spec_check_src_p): Support new speculation/check codes.
2850         (struct bundle_state): New field.
2851         (issue_nops_and_insn): Initialize it.
2852         (insert_bundle_state): Minimize mid-bundle stop bits.
2853         (important_for_bundling_p): New function.
2854         (get_next_important_insn): Use important_for_bundling_p.
2855         (bundling): When shifting TImode from unimportant insns, ignore
2856         also group barriers.  Assert that best state is found before
2857         the backward bundling pass.  Print number of mid-bundle stop bits.
2858         Minimize mid-bundle stop bits.  Check correct calculation of
2859         mid-bundle stop bits.
2860         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
2861         (final_emit_insn_group_barriers): Emit stop bits before insns starting
2862         a new cycle.
2863         (sel2_run): New variable.
2864         (ia64_reorg): When flag_selective_scheduling2 is set, run the
2865         selective scheduling pass instead of schedule_ebbs.
2866
2867         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
2868         (UNSPEC_LDS_A): New UNSPEC.
2869         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
2870         movti_internal, movsf_internal, movdf_internal,
2871         movxf_internal): Make visible.  Add speculable* attributes.
2872         (output_c_nc): New mode attribute.
2873         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
2874         mov<mode>_nc, zero_extend<mode>di2_nc,
2875         advanced_load_check_nc_<mode>): New insns.
2876         (zero_extend*): Add speculable* attributes.
2877
2878         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
2879         (msched-stop-bits-after-every-cycle): Likewise.
2880         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
2881         Likewise.
2882         (msched-spec-verbose): Remove.
2883         (msched-prefer-non-data-spec-insns,
2884         msched-prefer-non-control-spec-insns,
2885         msched-count-spec-in-critical-path,
2886         msel-sched-dont-check-control-spec): Use Target  Report Var
2887         instead of Common Report Var.
2888
2889         * config/ia64/itanium2.md: Remove incorrect bypass.
2890
2891         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
2892
2893 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
2894
2895         PR middle-end/37805
2896         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
2897         and -fhelp=separate.
2898
2899 2008-10-14  Ben Elliston  <bje@au.ibm.com>
2900
2901         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
2902
2903 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
2904
2905         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
2906         non-integer modes.
2907
2908 2008-10-13  Matthias Klose  <doko@ubuntu.com>
2909
2910         * config/pa/linux-atomic.c: Work around missing header file
2911         for hppa64-linux-gnu targets.
2912
2913 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2914             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
2915             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2916             Grace Cao  <grace_cao@playstation.sony.com>
2917
2918         * doc/invoke.texi (-mgen-cell-microcode): Document.
2919         (-mwarn-cell-microcode): Document.
2920         * cfglayout.c (locator_location): Export.
2921         * rtl.h (locator_location): Define prototype.
2922         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
2923         New predicate.
2924         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
2925         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
2926         (mwarn-cell-microcode): New option.
2927         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
2928         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
2929         cell and not already set.
2930         Turn off string instructions if not generating cell microcode.
2931         (rs6000_final_prescan_insn): New function that warns about microcoded
2932         instructions.
2933         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
2934         * config/rs6000/rs6000.md
2935         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
2936         the instruction would have been microcoded on the Cell.  Set
2937         cell_micro to always on unnamed patterns for the string instructions.
2938         (cell_micro): Update definition, remove load/store conditional
2939         microcoded.
2940         (sign_extend:DI): Define new pattern for non microcoded version.
2941         (sign_extend:SI): Likewise.
2942         (compare (div:P)): Set cell_micro to not.
2943         (andsi3): Define as an expand.
2944         (andsi3_mc): New pattern.
2945         (andsi3_nomc): New pattern.
2946         (andsi3_internal0_nomc): New pattern.
2947         (andsi3_internal2): Rename to ...
2948         (andsi3_internal2_mc): this and enable iff generating microcode.
2949         (andsi3_internal3): Rename to ...
2950         (andsi3_internal3_mc): this and enable iff generating microcode.
2951         (andsi3_internal4): Enable iif generating microcode.
2952         (andsi3_internal5): Rename to ..
2953         (andsi3_internal5_mc): this and enable iff generating microcode.
2954         (andsi3_internal5_nomc): New pattern.
2955         (extzvdi_internal1): Enable iff generating microcode.
2956         (extzvdi_internal2): Likewise.
2957         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
2958         (anddi3): Change to expand.
2959         (anddi3_mc): Rename from anddi3.
2960         (anddi3_no_mc): New pattern.
2961         (anddi3_internal2): Rename to ..
2962         (anddi3_internal2_mc): this and enable iff generating microcode.
2963         (anddi3_internal2_nomc): New pattern.
2964         (anddi3_internal3): Rename to ..
2965         (anddi3_internal3_mc): this and enable iff generating microcode.
2966         (anddi3_internal3_nomc): New pattern.
2967         (movti_string): Set cell_micro to always if TARGET_STRING.
2968         (stmsi8): Set cell_micro to always.
2969         (stmsi7): Likewise.
2970         (stmsi6): Likewise.
2971         (stmsi5): Likewise.
2972         (stmsi4): Likewise.
2973         (stmsi3): Likewise.
2974         (stmsi8_power): Likewise.
2975         (stmsi7_power): Likewise.
2976         (stmsi6_power): Likewise.
2977         (stmsi5_power): Likewise.
2978         (stmsi4_power): Likewise.
2979         (stmsi3_power): Likewise.
2980         (movsi_update2): Enable iff generating microcode.
2981         (movhi_update3): Likewise.
2982         (lmw): Set cell_micro to always.
2983
2984 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
2985
2986         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
2987         * config/s390/s390.c (machine_function): Remove
2988         decomposed_literal_pool_addresses_ok_p.
2989         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
2990         the difference of two labels.
2991         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
2992         (s390_pool_offset): New function.
2993         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
2994         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
2995
2996 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
2997
2998         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
2999         (powerpc*-*-linux-gnu*): Describe.
3000         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
3001         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
3002         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
3003         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
3004         config/rs6000/e500crtres32gpr.asm,
3005         config/rs6000/e500crtres64gpr.asm,
3006         config/rs6000/e500crtres64gprctr.asm,
3007         config/rs6000/e500crtrest32gpr.asm,
3008         config/rs6000/e500crtrest64gpr.asm,
3009         config/rs6000/e500crtresx32gpr.asm,
3010         config/rs6000/e500crtresx64gpr.asm,
3011         config/rs6000/e500crtsav32gpr.asm,
3012         config/rs6000/e500crtsav64gpr.asm,
3013         config/rs6000/e500crtsav64gprctr.asm,
3014         config/rs6000/e500crtsavg32gpr.asm,
3015         config/rs6000/e500crtsavg64gpr.asm,
3016         config/rs6000/e500crtsavg64gprctr.asm: Use it.
3017         * config/rs6000/crtsavres.asm: Really remove.
3018
3019 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
3020
3021         Fix PR/25502
3022         * c-format.c (convert_format_name_to_system_name): Use
3023         TARGET_OVERRIDES_FORMAT_INIT.
3024         * config.gcc (extra_options): Add for mingw targets mingw.opt.
3025         * config/i386/mingw.opt: New.
3026         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
3027         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
3028         (ms_printf_length_specs): Removed const specifier.
3029         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
3030         * doc/invoke.texi (Wno-pedantic-ms-format): New.
3031
3032 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3033
3034         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
3035         * doc/install.texi: Bump recommended MPFR to 2.3.2.
3036
3037 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3038
3039         PR middle-end/37808
3040         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
3041         sure that ref has valid bb.
3042
3043 2008-10-12  Richard Henderson  <rth@redhat.com>
3044
3045         PR middle-end/37447
3046         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
3047         * alias.c (value_addr_p, stack_addr_p): Remove.
3048         (nonoverlapping_memrefs_p): Remove IRA special case.
3049         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
3050         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
3051         * reload1.c (alter_reg): Use it.
3052
3053 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
3054
3055         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
3056         of registers instead of eax, ebx, ecx and edx.  Use for loop
3057         and check register for non-zero value before the call
3058         to decode_caches_intel.
3059
3060 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3061
3062         PR rtl-optimization/37448
3063         * df.h: (df_ref_class): New enum.
3064         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
3065         (struct df_ref): Replaced with union df_ref_d.
3066         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
3067         New members of df_ref_d union.
3068         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
3069         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
3070         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
3071         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
3072         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
3073         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
3074         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
3075         (df_scan_bb_info, df_bb_regno_first_def_find,
3076         df_bb_regno_last_def_find, df_find_def, df_find_use,
3077         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3078         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
3079         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
3080         df_get_artificial_defs, df_get_artificial_uses, union_defs)
3081         Replaced struct df_ref * with df_ref.
3082         * df-scan.c (df_collection_rec, df_null_ref_rec,
3083         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
3084         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
3085         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
3086         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
3087         df_reorganize_refs_by_reg_by_reg,
3088         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
3089         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
3090         df_sort_and_compress_refs, df_install_ref, df_install_refs,
3091         df_ref_record, df_get_conditional_uses, df_get_call_refs,
3092         df_bb_refs_record, df_exit_block_uses_collect,
3093         df_record_exit_block_uses, df_reg_chain_mark,
3094         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
3095         df_ref * with df_ref.
3096         (df_ref_record, df_uses_record, df_ref_create_structure): Added
3097         df_ref_class parameter.
3098         (df_scan_problem_data): Added new pools for different types of refs.
3099         (df_scan_free_internal, df_scan_alloc, df_free_ref,
3100         df_ref_create_structure): Processed new ref pools.
3101         (df_scan_start_dump): Added counts of refs and insns.
3102         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
3103         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
3104         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
3105         code to pass df_ref_class down to ref creation functions.
3106         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
3107         df_reg_chain_mark): Use macros to hide references to df_refs.
3108         (df_ref_chain_change_bb): Removed.
3109         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
3110         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
3111         Enhanced to understand df_ref union structure.
3112         * fwprop.c (local_ref_killed_between_p, use_killed_between,
3113         all_uses_available_at, update_df, try_fwprop_subst,
3114         forward_propagate_subreg, forward_propagate_and_simplify,
3115         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
3116         df_ref * with df_ref.
3117         (use_killed_between, all_uses_available_at): Use macros to hide
3118         references to df_refs.
3119         * regstat.c (regstat_bb_compute_ri,
3120         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
3121         df_ref.
3122         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
3123         see_handle_relevant_refs, see_analyze_one_def,
3124         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
3125         struct df_ref * with df_ref.
3126         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
3127         global_conflicts): Replaced struct df_ref * with df_ref.
3128         * ddg.c (create_ddg_dep_from_intra_loop_link,
3129         add_cross_iteration_register_deps, build_inter_loop_deps):
3130         Replaced struct df_ref * with df_ref.
3131         (create_ddg_dep_from_intra_loop_link,
3132         add_cross_iteration_register_deps): Use macros to hide references
3133         to df_refs.
3134         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
3135         df_ref * with df_ref.
3136         * df-core.c (df_bb_regno_first_def_find,
3137         df_bb_regno_last_def_find, df_find_def, df_find_use,
3138         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3139         debug_df_ref): Replaced struct df_ref * with df_ref.
3140         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
3141         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
3142         df_ref.
3143         * web.c (union_defs, entry_register, replace_ref, web_main):
3144         Replaced struct df_ref * with df_ref.
3145         (union_defs, replace_ref): Use macros to hide references to df_refs.
3146         * global.c (compute_regs_asm_clobbered, build_insn_chain):
3147         Replaced struct df_ref * with df_ref.
3148         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
3149         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
3150         Replaced struct df_ref * with df_ref.
3151         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
3152         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
3153         with df_ref.
3154         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
3155         * df-byte-scan.c (df_compute_accessed_bytes_extract,
3156         df_compute_accessed_bytes_strict_low_part,
3157         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
3158         Replaced struct df_ref * with df_ref.
3159         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
3160         * init-regs.c (initialize_uninitialized_regs): Replaced struct
3161         df_ref * with df_ref.
3162         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
3163         check_dependency, check_dependencies, record_uses): Replaced
3164         struct df_ref * with df_ref.
3165         (invariant_for_use, check_dependency): Use macros to hide
3166         references to df_refs.
3167         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
3168         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
3169         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
3170         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
3171         references to df_refs.
3172         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
3173         with df_ref.
3174         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
3175         * df-problems.c (df_rd_bb_local_compute_process_def,
3176         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
3177         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
3178         df_chain_remove_problem, df_chain_create_bb_process_use,
3179         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
3180         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
3181         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
3182         df_byte_lr_simulate_artificial_refs_at_top,
3183         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
3184         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
3185         df_simulate_uses, df_simulate_artificial_refs_at_end,
3186         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
3187         df_ref.
3188         (df_chain_dump): Use macros to hide references to df_refs.
3189         * config/mips/mips.c (r10k_simplify_address): Replaced struct
3190         df_ref * with df_ref.
3191         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
3192         mark_artificial_uses, mark_reg_dependencies,
3193         byte_dce_process_block): Replaced struct df_ref * with df_ref.
3194
3195 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
3196
3197         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
3198         head comment.
3199         (array_ref_element_size): Likewise.
3200         (array_ref_low_bound): Likewise.
3201         (array_ref_up_bound): Likewise.
3202         * expr.c (contains_packed_reference): Likewise.
3203         (array_ref_element_size): Likewise.
3204         (array_ref_low_bound): Likewise.
3205         (array_ref_up_bound): Likewise.
3206         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
3207         with ARRAY_RANGE_REF.
3208         (idx_find_step): Likewise.
3209         (idx_record_use): Likewise.
3210         (strip_offset_1): Likewise.
3211         (idx_remove_ssa_names): Likewise.
3212
3213 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
3214             Andi Kleen  <ak@linux.intel.com>
3215
3216         * config/i386/cpuid.h (__cpuid_count): New defines.
3217         * config/i386/driver-i386.c (struct cache_desc): New structure.
3218         (describe_cache): Use struct cache_desc to pass cache descriptions.
3219         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
3220         (detect_caches_amd): Use struct cache_desc to describe caches.
3221         (decode_caches_intel): Use struct cache_desc to pass cache
3222         descriptions.  Update descriptions to match latest (rev -032,
3223         December 2007) CPUID documentation.  Do not check valid bit here.
3224         Check for Xeon MP value 0x49 problems.
3225         (detect_caches_cpuid2): New function, split from detect_caches_intel.
3226         Check valid bit before calling decode_caches_intel.  Detect number
3227         of times to repeat CPUID instruction.
3228         (detect_caches_cpuid4): New function.
3229         (detect_caches_intel): Depending on max_level, call
3230         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
3231         only when other methods fail to provide valid L2 cache description.
3232
3233 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3234
3235         PR middle-end/37608
3236         * pa.md (call, call_value): Generate an rtx for register r4 and pass
3237         it to PIC call patterns.
3238         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
3239         code generation and attributes from pattern.  Change peephole2 to
3240         split for noreturn case.  Revise split pattern for non noreturn case.
3241         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
3242         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
3243         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
3244         asserts.
3245
3246 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
3247
3248         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
3249         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
3250         and fp_type.
3251         (divdf3): Reformat long line.
3252
3253 2008-10-11  Michael J. Eager  <eager@eagercon.com>
3254
3255         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
3256         -mfpu options.
3257         (rs6000_handle_option): Process -mfpu options.
3258         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
3259         (enum fpu_type_t): New.
3260         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
3261         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
3262         fp_type.
3263         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
3264         (floatdidf2): Add TARGET_SINGLE_FPU condition.
3265         * config/rs6000/rs6000.opt (-mfpu): New.
3266         (-mxilinx-fpu): New.
3267         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
3268         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
3269         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
3270         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
3271         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
3272
3273 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
3274
3275         PR target/35760
3276         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
3277         LO_SUM on Darwin if mode has just one unit.
3278
3279 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
3280
3281         PR debug/37002
3282         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
3283         has been optimized out.
3284
3285 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
3286
3287         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
3288         instead of PIC_DIRECT_ADDR_P.
3289         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3290         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
3291         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
3292         (PIC_OFFSET_P): Rename to...
3293         (PCREL_SYMOFF_P): ...this.
3294         (PIC_DIRECT_ADDR_P): Delete.
3295         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
3296         PIC_OFFSET_P.
3297         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
3298         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
3299         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
3300         * config/sh/sh.c (print_operand): Remove CONST handling.
3301         (unspec_caller_rtx_p): Rewrite to use split_const and check
3302         the operands of UNSPEC bases.
3303         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
3304         with (unspec [A B] UNSPEC_SYMOFF).
3305         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
3306         UNSPEC_PCREL_SYMOFF.
3307         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3308         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
3309         (UNSPEC_EXTRACT_U16): Likewise.
3310         (UNSPEC_SYMOFF): Likewise.
3311         (UNSPEC_PCREL_SYMOFF): Likewise.
3312         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
3313         of constants.
3314         (movsi_const_16bit): Likewise.
3315         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
3316         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
3317         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
3318         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
3319         with (unspec [A B] UNSPEC_SYMOFF).
3320         (symPLT_label2reg): Replace (minus A (minus B pc)) with
3321          (unspec [A B] PCREL_UNSPEC_SYMOFF).
3322         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
3323         (Csu): Likewise UNSPEC_EXTRACT_U16.
3324         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3325         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
3326
3327 2008-10-10  Stepan Kasal  <skasal@redhat.com>
3328
3329         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
3330         for loop strip mining and loop blocking.
3331
3332 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3333
3334         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
3335         vary types depending on debug info.
3336
3337 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3338
3339         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
3340         before ensuring it's already computed.
3341
3342 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
3343
3344         * rtl.h (locator_eq): New decl.
3345         * cfglayout.c (locator_scope): New function.
3346         (insn_scope): Use it.
3347         (locator_eq): New function.
3348         (fixup_reorder_chain): Search for last insn in src bb
3349         that has locator set or first insn in dest bb.  Use
3350         locator_eq instead of == to compare locators.
3351         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
3352         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
3353         == to compare locators.
3354
3355         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
3356         as used.
3357         * gimple-low.c (lower_function_body, lower_gimple_return,
3358         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
3359         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
3360         goto_block on edges if goto_locus is known.
3361
3362         PR middle-end/37774
3363         * tree.h (get_object_alignment): Declare.
3364         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
3365         get_object_alignment if needed.
3366         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
3367         handling to ...
3368         (get_object_alignment): ... here.  New function.  Try harder to
3369         determine alignment from get_inner_reference returned offset.
3370
3371 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3372
3373         * graphite.c (gloog): Don't call find_unreachable_blocks
3374         before delte_unreachable_blocks.
3375
3376         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
3377         goto_locus of true_edge into RTL locator.
3378
3379 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
3380
3381         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
3382         (*jcc_btdi_mask_rex64): Ditto.
3383         (*jcc_btsi): Ditto.
3384         (*jcc_btsi_mask): Ditto.
3385         (*jcc_btsi_1): Ditto.
3386         (*jcc_btsi_mask_1): Ditto.
3387
3388 2008-10-08  Paul Brook  <paul@codesourcery.com>
3389
3390         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
3391         compatible profiler (__gnu_mcount_nc).
3392         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3393
3394 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3395
3396         * config/i386/i386.c (initial_ix86_tune_features): Add
3397         X86_TUNE_USE_VECTOR_FP_CONVERTS.
3398         * config/i386/i386.h (ix86_tune_indices): Likewise.
3399         (TARGET_USE_VECTOR_FP_CONVERTS): New.
3400
3401         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
3402         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
3403         for FP to FP splitters.
3404
3405 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3406
3407         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
3408         splitter.
3409
3410 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3411
3412         PR target/36635
3413         PR target/37290
3414         PR rtl-optimization/37341
3415         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
3416         to ORIG_BB, pass through ORIG_BB recursively.
3417         (cse_condition_code_reg): Adjust caller.
3418
3419 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
3420
3421         * sdbout.c (sdbout_one_type): Treat the value type
3422         CONST_DECL for enumerals.
3423
3424 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3425
3426         * config/i386/i386.md: Remove trailing white spaces.
3427
3428 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3429
3430         PR rtl-optimization/37448
3431         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
3432         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
3433         Make unsigned long.
3434         (struct output_info) [count]: Renamed total_created and made
3435         unsigned long.
3436         (struct output_info) [size]: Renamed total_allocated and made
3437         unsigned long.
3438         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
3439         Properly keep track of desc->size.
3440         (print_statistics, dump_alloc_pool_statistics): Enhance the
3441         printing of statistics to print the number of elements and to use
3442         unsigned longs.
3443
3444 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3445
3446         PR middle-end/37576
3447         * opts.h (CL_SAVE): Move up to flags range.
3448         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
3449         CL_COMMON): Renumber.
3450         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
3451         * opts.c (common_handle_option): Revert last change.
3452
3453 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3454
3455         * config/i386/i386-protos.h (ix86_schedule): New.
3456
3457         * config/i386/i386.c (ix86_schedule): New.
3458         (override_options): Add schedule to processor_alias_table.  Set
3459         ix86_schedule from the schedule field in processor_alias_table.
3460         (ix86_function_specific_save): Save ix86_schedule.
3461         (ix86_function_specific_restore): Restore ix86_schedule.
3462
3463         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
3464         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
3465         and generic32.
3466
3467         * config/i386/i386.opt: Add schedule.
3468
3469         * config/i386/ppro.md: Remove generic32.
3470
3471 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
3472
3473         PR c/35437
3474         * expr.c (count_type_elements): Handle ERROR_MARK.
3475
3476 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3477
3478         PR debug/29609
3479         PR debug/36690
3480         PR debug/37616
3481         * basic-block.h (struct edge_def): Add goto_block field.
3482         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
3483         one insn with locus corresponding to edge's goto_locus if !optimize.
3484         * profile.c (branch_prob): Copy edge's goto_block.
3485         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
3486         emitted jumps.
3487         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
3488         locator in between the merged basic blocks if !optimize and needed.
3489         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
3490         goto_locus into RTL locator.  For unconditional jump use that
3491         locator for the jump insn.
3492         (expand_gimple_cond): Convert goto_block and goto_locus into
3493         RTL locator for all remaining edges.  For unconditional jump
3494         use that locator for the jump insn.
3495         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
3496         there is more than one edge or insn locator along the forwarding
3497         edges and !optimize.  If there is just one, set e->goto_locus.
3498         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
3499         edge's goto_block.
3500         (move_block_to_fn): Adjust edge's goto_block.
3501
3502 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3503
3504         PR middle-end/37731
3505         * expmed.c (expand_mult): Properly check DImode constant in
3506         CONST_DOUBLE.
3507
3508 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3509
3510         PR debug/37738
3511         * dwarf2out.c (common_block_die_table): New variable.
3512         (common_block_die_table_hash, common_block_die_table_eq): New
3513         functions.
3514         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
3515         COMMON block in the current scope rather than globally.  Optimize
3516         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
3517         DW_OP_addr SYMBOL_REF+off.
3518
3519 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
3520
3521         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
3522         Return true for non-addressable GIMPLE operands.
3523
3524 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3525
3526         PR target/24765
3527         * config/i386/i386.c (initial_ix86_tune_features): Remove
3528         X86_TUNE_USE_BIT_TEST.
3529         * config/i386/i386.h (ix86_tune_indices): Likewise.
3530         (TARGET_USE_BIT_TEST): Removed.
3531
3532 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3533
3534         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
3535
3536 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
3537
3538         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
3539         (mul<mode>3_mul3): ... into this new template.
3540
3541 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3542
3543         * gimplify.c (gimplify_arg): Add location argument.  Use it.
3544         (gimplify_call_expr): Pass location to gimplify_arg.
3545         (gimplify_modify_expr_to_memcpy): Same.
3546         (gimplify_modify_expr_to_memset): Same.
3547
3548 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3549
3550         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3551         Update calls to build_unary_op and build_indirect_ref for location
3552         changes.
3553
3554 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3555
3556         build_modify_expr.
3557         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
3558         * c-typeck.c (array_to_pointer_conversion): Pass location to
3559         build_unary_op.
3560         (function_to_pointer_conversion): Use error_at and warning_at.
3561         (build_indirect_ref): Same.
3562         (build_array_ref): Pass location to build_binary_op.
3563         (parser_build_unary_op): Do not set location after calling
3564         build_unary_op.
3565         (build_unary_op): Add location argument.  Use it throughout.  Set
3566         EXPR_LOCATION before returning new tree.
3567         (build_modify_expr): Same.
3568         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
3569         returning node.
3570         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
3571         build_indirect_ref, build_modify_expr.
3572         (c_finish_omp_for): Same.  Use error_at instead of error.
3573         * c-common.c (c_common_truthvalue_conversion): Pass location to
3574         build_unary_op.
3575         (warn_for_div_by_zero): Add location argument.
3576         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
3577         build_unary_op, warn_for_div_by_zero.
3578         * c-parser.c (c_parser_typeof_specifier): Use
3579         protected_set_expr_location.
3580         (c_parser_statement_after_labels): Same.
3581         (c_parser_condition): Same.
3582         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
3583         (c_parser_conditional_expression): Use protected_set_expr_location.
3584         (c_parser_unary_expression): Pass location to build_indirect_ref.
3585         (c_parser_postfix_expression_after_primary): Pass location to
3586         build_indirect_ref, build_unary_op.
3587         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
3588
3589 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
3590
3591         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
3592         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
3593         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
3594         r14000 and r16000.
3595         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
3596         (mips_issue_rate): Handle PROCESSOR_R10000.
3597         * config/mips/mips.md (cpu): Add r10000.
3598         Include r10000.md.
3599         * config/mips/10000.md: New file.
3600
3601 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3602
3603         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
3604         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
3605         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
3606
3607 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3608
3609         * config/darwin-protos.h (machopic_function_base_name): Delete.
3610         (machopic_function_base_sym): Likewise.
3611         (machopic_gen_offset): Declare.
3612         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
3613         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
3614         * config/darwin.c (machopic_function_base_name): Delete.
3615         (machopic_function_base_sym): Likewise.
3616         (gen_pic_offset): Rename to...
3617         (machopic_gen_offset): ...this and remove the pic_base argument.
3618         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
3619         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
3620         crtl->uses_pic_offset_table.
3621         (machopic_indirect_data_reference): Use new machopic_gen_offset
3622         interface.
3623         (machopic_legitimize_pic_address): Likewise.
3624         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
3625
3626         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
3627         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
3628         * config/i386/i386.c (output_set_got): Likewise.
3629         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
3630         instead of a MINUS.
3631         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
3632         (legitimate_address_p): Likewise.
3633         (output_pic_addr_const): Likewise.
3634         (output_addr_const_extra): Likewise.
3635         (ix86_delegitimize_address): Expect darwin_local_data_pic to
3636         match an UNSPEC rather than a MINUS.
3637         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
3638         (builtin_setjmp_receiver): Use machopic_gen_offset.
3639         * config/i386/predicates.md (pic_symbolic_operand): Handle
3640         UNSPEC_MACHOPIC_OFFSET.
3641
3642         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3643         Use machopic_gen_offset and machopic_operand_p.
3644         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
3645         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
3646         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
3647         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
3648         Set crtl->uses_pic_offset_table.
3649
3650 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3651
3652         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
3653         Declare.
3654         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
3655         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
3656         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
3657         (constant_pool_expr_p): Use split_const and check the base.
3658         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
3659         instead of a MINUS.
3660         (legitimate_constant_pool_address_p): Check toc_relative_p
3661         instead of constant_pool_expr_p.
3662         (print_operand_address): Always use output_addr_const for
3663         constant pool addresses.
3664         (rs6000_output_addr_const_extra): New function.
3665         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
3666
3667 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
3668
3669         PR middle-end/37535
3670
3671         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3672         (mark_ref_live, mark_ref_dead): Use them.
3673         (def_conflicts_with_inputs_p): Remove.
3674         (mark_early_clobbers): New function.
3675         (process_bb_node_lives): Call preprocess_constraints and
3676         mark_early_clobbers.
3677
3678         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
3679
3680 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
3681
3682         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
3683         lib with -mthread switch.
3684
3685 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
3686
3687         PR c++/37410
3688         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
3689         function in two, making it call a new and reusable
3690         dwarf2out_imported_module_or_decl() that takes the containing
3691         BLOCK of the declaration in argument.
3692         (dwarf2out_imported_module_or_decl_real): New function.
3693         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
3694         IMPORTED_DECL in account.
3695         * tree.def: Added IMPORTED_DECL node type.
3696         * tree.h: Added accessors for IMPORTED_DECL nodes.
3697         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
3698
3699 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3700
3701         * doc/gimple.texi: Fix some typos, wrap some long lines,
3702         fix some broken wraps with continuations.
3703         * tree-ssa-reassoc.c: Fix comment typos.
3704
3705 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3706
3707         PR target/37603
3708         * pa.c (legitimize_pic_address): Force function labels to memory in
3709         word mode.
3710
3711 2008-10-04  Anton Blanchard  <anton@samba.org>
3712
3713         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
3714         (rs6000_split_atomic_op): Same.
3715         (rs6000_split_compare_and_swap): Same.
3716         (rs6000_split_compare_and_swapqhi): Same.
3717
3718 2008-10-04  Richard Guenther  <rguenther@suse.de>
3719
3720         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
3721         instead of pointer equality.
3722         (vn_nary_op_eq): Likewise.
3723
3724 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3725
3726         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
3727         condition.
3728         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
3729         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
3730
3731 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
3732
3733         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3734         Revert previous change.
3735
3736 2008-10-03  Tom Tromey  <tromey@redhat.com>
3737
3738         * stringpool.c (ggc_alloc_string): Terminate string.
3739
3740 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
3741
3742         * gimplify.c (gimplify_function_tree): For -finstrument-functions
3743         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
3744         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
3745
3746         PR debug/37726
3747         * gimplify.c (declare_vars): Use gimple_bind_block instead of
3748         gimple_block.
3749
3750 2008-10-03  Pascal Obry  <obry@adacore.com>
3751
3752         * gcov.c (create_file_names): Properly handle UNIX and DOS
3753         directory separators.
3754         (make_gcov_file_name): Likewise + convert the ':' DOS drive
3755         separator to '~' to ensure clean filenames on Windows.
3756
3757 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3758
3759         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3760         Add a null terminator to the stripped name.
3761
3762 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
3763
3764         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
3765         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3766         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
3767         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
3768         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3769         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
3770         TARGET_SINGLE_FLOAT.
3771
3772 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
3773
3774         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
3775
3776 2008-10-02  Richard Guenther  <rguenther@suse.de>
3777
3778         PR middle-end/37713
3779         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
3780         and VECTOR_TYPE recurse with useless_type_conversion_p which
3781         properly handles void pointer conversion.
3782
3783 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3784
3785         PR target/37528
3786         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
3787         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
3788
3789 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3790
3791         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3792         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
3793         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
3794         they translate to non builtins.
3795         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
3796         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
3797         __builtin_vec_promote, __builtin_vec_extract, and
3798         __builtin_vec_insert.
3799         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
3800         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
3801         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
3802         * config/rs6000/altivec.h (vec_extract): Define
3803         (vec_insert): Define.
3804         (vec_splats): Define.
3805         (vec_promote): Define.
3806
3807 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3808             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
3809             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
3810
3811         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
3812         Altivec intrinsics.
3813         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
3814         prototype.  Add new parameter, blk.
3815         Use BLKmode for the MEM if blk is true.
3816         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
3817         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
3818         ALTIVEC_BUILTIN_STVRXL.
3819         Update usage of altivec_expand_lv_builtin.
3820         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
3821         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
3822         (altivec_init_builtins): If compiling for the Cell, also define the
3823         cell VMX builtins.
3824         * config/rs6000/rs6000.h (rs6000_builtins): Define
3825         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
3826         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
3827         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
3828         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
3829         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
3830         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
3831         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
3832         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
3833         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
3834         UNSPEC_STVRX, and UNSPEC_STVRXL.
3835         (altivec_lvlx): New pattern.
3836         (altivec_lvlxl): New pattern.
3837         (altivec_lvrx): New pattern.
3838         (altivec_lvrxl): New pattern.
3839         (altivec_stvlx): New pattern.
3840         (altivec_stvlxl): New pattern.
3841         (altivec_stvrx): New pattern.
3842         (altivec_stvrxl): New pattern.
3843         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
3844         (vec_lvlxl): Likewise.
3845         (vec_lvrx): Define if PPU is defined.
3846         (vec_lvrxl): Likewise.
3847         (vec_stvlx): Define if PPU is defined.
3848         (vec_stvlxl): Likewise.
3849         (vec_stvrx): Define if PPU is defined.
3850         (vec_stvrxl): Likewise.
3851
3852 2008-10-01  Geert Bosch  <bosch@adacore.com>
3853
3854         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
3855
3856 2008-10-01  Richard Guenther  <rguenther@suse.de>
3857
3858         PR tree-optimization/37617
3859         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
3860         do not add to the NEW_SETS.
3861
3862 2008-10-01  Richard Guenther  <rguenther@suse.de>
3863
3864         PR middle-end/37285
3865         * tree-vrp.c (execute_vrp): If we optimized away the default
3866         case make sure to promote the label that got in place of it
3867         to a default case label.
3868
3869 2008-10-01  Richard Henderson  <rth@redhat.com>
3870
3871         PR tree-opt/35737
3872         * tree-complex.c (set_component_ssa_name): Don't optimize
3873         is_gimple_min_invariant values with ssa_names in abnormal phis.
3874
3875 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3876
3877         PR tree-optimization/37662
3878         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
3879         commutative binary operation if they are in the wrong order and
3880         fold_build2 produces non-GIMPLE.
3881
3882 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
3883
3884         PR tree-optimization/37662
3885         PR tree-optimization/37663
3886         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
3887         get_value_range with non-SSA_NAME.  Don't assert operands have been
3888         folded, instead just bail out.
3889
3890 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3891
3892         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
3893
3894 2008-09-30  Richard Guenther  <rguenther@suse.de>
3895
3896         PR middle-end/37491
3897         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
3898         build restrict-qualified pointers.
3899         (vectorizable_store): Move alias check later.
3900         (vectorizable_load): Likewise.
3901
3902 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3903
3904         * c-common.c (empty_if_body_warning): Remove.
3905         * c-common.h (empty_if_body_warning): Remove.
3906         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
3907         here the -Wempty-body warning for `if' and `else' statements.
3908         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
3909
3910 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
3911
3912         * config/i386/i386.opt: Add msse2avx.
3913
3914         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
3915         * config/i386/linux64.h (ASM_SPEC): Likewise.
3916
3917         * doc/invoke.texi: Document -msse2avx.
3918
3919 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3920
3921         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
3922
3923 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
3924
3925         * ifcvt.c (noce_emit_store_flag): If using condition from original
3926         jump, reverse it if if_info->cond was reversed.
3927
3928 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3929
3930         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
3931         non-constant memory if it cannot be forced to constant memory.
3932         Overhaul surrounding code and factor out common condition.
3933
3934 2008-09-29  Jeff Law <law@redhat.com>
3935
3936         * reload1.c (alter_reg): Add missing curly braces.
3937
3938 2008-09-29  Michael J. Eager  <eager@eagercon.com>
3939
3940         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3941         are easy.
3942         * config/rs6000/rs6000.c (rs6000_override_options): Move
3943         rs6000_init_hard_regno_mode_ok after all options changed.
3944         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3945         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3946         -msimple-fpu flags.  Add warning messages if single FP not configured.
3947         (rs6000_file_start): Output gnu_attribute for single-float.
3948         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3949         (rs6000_legitimize_address): Likewise.
3950         (rs6000_legitimize_reload_address): Likewise.
3951         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3952         TARGET_SINGLE_FLOAT.
3953         (function_arg_advance): Likewise (partial conversion).
3954         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3955         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3956         TARGET_SINGLE_FLOAT.
3957         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3958         (rs6000_emit_prologue): Likewise.
3959         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3960         TARGET_SINGLE_FLOAT.
3961         (rs6000_libcall_value): Likewise.
3962         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3963         (TARGET_DOUBLE_FLOAT): New default to 1
3964         (TARGET_SIMPLE_FPU): New default to 0
3965         (TARGET_SINGLE_FPU): New default to 0
3966         (TARGET_SINGLE_FLOAT_MODE): New.
3967         (TARGET_DOUBLE_FLOAT_MODE): New.
3968         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3969         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3970         UNITS_PER_FP_WORD
3971         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3972         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3973         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3974         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3975         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3976         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3977         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3978         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3979         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3980         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3981         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3982         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3983         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3984         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3985         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3986         cmptf_internal1, *cmptf_internal2): Condition on
3987         TARGET_DOUBLE_FLOAT.
3988         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3989         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3990         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3991         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3992         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3993         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3994         TARGET_SINGLE_FLOAT.
3995         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3996         * config/rs6000/rs6000.opt (-msingle-float): New.
3997         (-mdouble-float): New.
3998         (-msimple-fpu): New.
3999         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4000         -msingle-float, -mdouble-float, -msimple-fpu options.
4001         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4002         _SOFT_DOUBLE for -msingle-float.
4003         * config.gcc: New config for target=powerpc-xilinx-eabi.
4004
4005 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
4006
4007         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
4008         have exit and entry.
4009         (new_scop): Take entry and exit edge to define new SCoP.
4010         (sd_region_p): New structure used during SCoP detection.
4011         (move_scops): Delete.
4012         (move_sd_regions): New.
4013         (scopdet_info): Change the definition from edges back to basic_blocks.
4014         (scopdet_edge_info):  Work on basic_blocks and rename to
4015         scopdet_basic_block_info.
4016         (split_difficult_bb): At the moment removed. We should later
4017         add it at another place.
4018         (build_scops_1): Work on basic_blocks.
4019         (bb_in_sd_region): New.
4020         (find_single_entry_edge): New.
4021         (find_single_exit_edge): New.
4022         (create_single_entry_edge): New.
4023         (sd_region_without_exit): New.
4024         (create_single_exit_edge): New.
4025         (unmark_exit_edges): New.
4026         (mark_exit_edges): New.
4027         (create_sese_edges): New.
4028         (build_graphite_scops): New.
4029         (build_scops): Make SCoPs SESE.
4030         (limit_scops): Use the new functions.
4031
4032 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
4033
4034         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
4035
4036 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4037
4038         PR target/37640
4039         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
4040         address to a register before taking the lower part.
4041
4042 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4043
4044         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
4045         for SHmedia.
4046
4047 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4048             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
4049
4050         PR tree-opt/36891
4051         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
4052         the newly created variable.
4053         Create a VECTOR_CST of all 1s for vector types.
4054
4055 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4056
4057         PR middle-end/36575
4058         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
4059
4060 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4061
4062         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
4063         order to convert between modes.
4064         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
4065
4066 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4067
4068         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
4069         if needed.
4070
4071 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4072
4073         Revert:
4074         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4075         * ira-lives.c:...
4076         * doc/rtl.texi:...
4077
4078 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
4079
4080         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
4081         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
4082         them to yield false with MIPS16.
4083
4084 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
4085
4086         PR middle-end/37275
4087         * dwarf2out.c (tls_mem_loc_descriptor): New function.
4088         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
4089         mem_loc_descriptor failed.  Accept UNSPEC.
4090         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
4091         fail if one of the loc_descriptor calls for pieces failed.
4092         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
4093         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
4094         if loc_descriptor_from_tree_1 on offset failed.
4095
4096         PR middle-end/37576
4097         * opts.c (common_handle_option): Don't call print_specific_help with
4098         CL_SAVE as first argument.
4099
4100 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
4101             Steve Ellcey  <sje@cup.hp.com>
4102
4103         * configure: Regenerate for new libtool.
4104         * aclocal.m4: Ditto.
4105
4106 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
4107
4108         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
4109         alias set on MEM when saving stack pointer.
4110         * config/rs6000/rs6000.md (allocate_stack): Likewise
4111
4112 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
4113
4114         PR tree-optimization/37574
4115         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
4116         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
4117         instead of vector_type for constants. Take computation out of loop.
4118         (vect_get_vec_def_for_operand): Use only vectype for constant case,
4119         and use only vector_type for invariant case.
4120         (get_initial_def_for_reduction): Use vectype instead of vector_type.
4121
4122 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
4123
4124         PR c/37645
4125         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
4126         the decl is a VAR_DECL or FUNCTION_DECL.
4127
4128 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4129
4130         PR middle-end/37535
4131         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
4132         (mark_ref_live, mark_ref_dead): Use them.
4133         (def_conflicts_with_inputs_p): Remove.
4134         (mark_early_clobbers): New function.
4135         (process_bb_node_lives): Call preprocess_constraints and
4136         mark_early_clobbers.
4137
4138         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
4139
4140 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4141
4142         PR middle-end/37448
4143         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
4144         (ira_compress_allocno_live_ranges): New prototype.
4145
4146         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
4147         (coalesced_allocnos_living_at_program_points): New.
4148         (coalesced_allocnos_live_at_points_p,
4149         set_coalesced_allocnos_live_points): New functions.
4150         (coalesce_spill_slots): Rewrite.
4151
4152         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
4153         ira_compress_allocno_live_ranges): New functions.
4154
4155         * ira-build.c (ira_flattening): Call
4156         ira_compress_allocno_live_ranges.
4157         (ira_build): Ditto.
4158
4159 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
4160
4161         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
4162         optimization.
4163
4164 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
4165
4166         * combine.c (make_compound_operation): Handle the 'E' format.
4167         (count_rtxs): Likewise.
4168         (update_table_tick): Likewise.
4169         (get_last_value_validate): Likewise.
4170
4171 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
4172
4173         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
4174
4175 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
4176
4177         * matrix-reorg.c (transform_allocation_sites): Initializers
4178         added to avoid the warning.
4179
4180 2008-09-25  Martin Jambor  <mjambor@suse.cz>
4181
4182         * cgraph.c (free_nodes): New variable.
4183         (NEXT_FREE_NODE): New macro.
4184         (cgraph_create_node): Reuse nodes from the free list.  Do not
4185         update uid if doing so.
4186         (cgraph_remove_node): Add the node to the free list.
4187
4188 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
4189
4190         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
4191
4192 2008-09-24  Richard Henderson  <rth@redhat.com>
4193
4194         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
4195         * unwind-dw2.c (execute_stack_op): Handle it.
4196
4197 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
4198
4199         Revert:
4200         2008-09-24  Michael J. Eager  <eager@eagercon.com>
4201
4202 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
4203
4204         * c-common.c (fname_decl): New location argument.
4205         * c-common.h (fname_decl): Same.
4206         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
4207         {warning,error}.
4208         (c_parser_typeof_specifier): Same.
4209         (c_parser_parms_list_declarator): Same.
4210         (c_parser_asm_string_literal): Same.
4211         (c_parser_compound_statement_nostart): Same.
4212         (c_parser_label): Same.
4213         (c_parser_do_statement): Same.
4214         (c_parser_asm_statement): Same.
4215         (c_parser_unary_expression): Same.
4216         (c_parser_sizeof_expression): Same.
4217         (c_parser_postfix_expression): Same.
4218         (c_parser_pragma): Same.
4219         (c_parser_omp_clause_collapse): Same.
4220         (c_parser_omp_clause_num_threads): Same.
4221         (c_parser_omp_clause_schedule): Same.
4222         (c_parser_omp_all_clauses): Same.
4223         (c_parser_omp_sections_scope): Same.
4224         (c_parser_omp_for_loop): Same.  Pass condition's location to
4225         c_objc_common_truthvalue_conversion.
4226         (c_parser_enum_specifier): Remove comment.
4227
4228 2008-09-24  Michael J. Eager  <eager@eagercon.com>
4229
4230         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
4231         are easy.
4232         * config/rs6000/rs6000.c (rs6000_override_options): Move
4233         rs6000_init_hard_regno_mode_ok after all options changed.
4234         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
4235         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
4236         -msimple-fpu flags.  Add warning messages if single FP not configured.
4237         (rs6000_file_start): Output gnu_attribute for single-float.
4238         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
4239         (rs6000_legitimize_address): Likewise.
4240         (rs6000_legitimize_reload_address): Likewise.
4241         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
4242         TARGET_SINGLE_FLOAT.
4243         (function_arg_advance): Likewise.
4244         (function_arg): Likewise.
4245         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
4246         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
4247         TARGET_SINGLE_FLOAT.
4248         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4249         (rs6000_emit_prologue): Likewise.
4250         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4251         TARGET_SINGLE_FLOAT.
4252         (rs6000_libcall_value): Likewise.
4253         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4254         (TARGET_DOUBLE_FLOAT): New default to 1
4255         (TARGET_SIMPLE_FPU): New default to 0
4256         (TARGET_SINGLE_FPU): New default to 0
4257         (TARGET_SINGLE_FLOAT_MODE): New.
4258         (TARGET_DOUBLE_FLOAT_MODE): New.
4259         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4260         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4261         UNITS_PER_FP_WORD
4262         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4263         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4264         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4265         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4266         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4267         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4268         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4269         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4270         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4271         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4272         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4273         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4274         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4275         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4276         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4277         cmptf_internal1, *cmptf_internal2): Condition on
4278         TARGET_DOUBLE_FLOAT.
4279         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4280         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4281         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4282         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4283         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4284         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4285         TARGET_SINGLE_FLOAT.
4286         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4287         * config/rs6000/rs6000.opt (-msingle-float): New.
4288         (-mdouble-float): New.
4289         (-msimple-fpu): New.
4290         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4291         -msingle-float, -mdouble-float, -msimple-fpu options.
4292         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4293         _SOFT_DOUBLE for -msingle-float.
4294         * config.gcc: New config for target=powerpc-xilinx-eabi.
4295
4296 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4297
4298         * config/sparc/constraints.md: New file.
4299         * config/sparc/sparc.md: Include it.
4300         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
4301         (sparc_extra_constraint_check): Delete.
4302         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
4303         (memory_ok_for_ldd): New predicate.
4304         (sparc_extra_constraint_check): Delete.
4305         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
4306         (CONST_OK_FOR_LETTER_P): Likewise.
4307         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4308         (EXTRA_CONSTRAINT): Likewise.
4309
4310 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
4311
4312         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
4313
4314 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4315
4316         * alias.c (find_base_value): Use FIND_BASE_TERM.
4317         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
4318
4319 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4320
4321         * config/i386/i386.c: Include cselib.h.
4322         (ix86_pic_register_p): New function.
4323         (ix86_delegitimize_address): Use it to check for the PIC register.
4324
4325 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4326
4327         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
4328         * config/i386/i386.c (ix86_find_base_term): Don't check for
4329         SYMBOL_REF and LABEL_REF.
4330
4331 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4332
4333         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
4334         constant PLUS in a CONST.
4335
4336 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
4337
4338         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
4339         check for sibcall support for w64.
4340
4341 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4342
4343         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
4344
4345 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
4346
4347         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
4348         parser_build_binary_op.
4349         * c-decl.c (build_enumerator): Pass location to build_binary_op.
4350         * c-typeck.c (build_array_ref): Same.
4351         (parser_build_unary_op): New location argument.
4352         (pointer_diff): Pass location to build_binary_op,
4353         c_objc_common_truthvalue_conversion.
4354         (build_modify_expr): Same.
4355         (build_unary_op): New location argument.
4356         (build_binary_op): New location argument.
4357         (c_objc_common_truthvalue_conversion): Pass location to
4358         c_*common_truthvalue_conversion.
4359         * c-convert.c (convert): Same.
4360         * c-common.c (binary_op_error): New location argument.
4361         (pointer_int_sum): Pass location to build_binary_op.
4362         (c_common_truthvalue_conversion): New location argument.
4363         (warn_for_sign_compare): Same.
4364         * c-common.h: Add location argument to c_common_truthvalue_conversion,
4365         binary_op_error, build_binary_op, warn_for_sign_compare.
4366         * c-parser.c (c_parser_condition): Pass location to
4367         c_*common_truthvalue_conversion.
4368         (c_parser_conditional_expression): Save condition's location and pass
4369         it on down.
4370         (c_parser_binary_expression): Same, but for the binary operator's
4371         location.
4372         (c_parser_omp_for_loop): Pass location to
4373         c_objc_common_truthvalue_conversion.
4374
4375 2008-09-23  Martin Jambor  <mjambor@suse.cz>
4376
4377         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
4378         (cgraph_node_remove_callees): New temporary f.  Hold the next item
4379         in f when looping.
4380         (cgraph_node_remove_callers): Likewise.
4381
4382         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
4383         (ipa_node_removal_hook): Likewise.
4384
4385         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
4386         gimple_call_copy_skip_args and moved to the gimple_call section.
4387         * gimple.c (gimple_copy_call_skip_args): Renamed to
4388         gimple_call_copy_skip_args.  Changed al users.
4389
4390 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
4391
4392         * ira-color.c (start_allocno_priorities): Rename to
4393         setup_allocno_priorities.  Use costs and
4394         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
4395         range lengths.  Get rid off doubles.
4396         (ira_fast_allocations): Call start_allocno_priorities.
4397
4398 2008-09-22  David Daney  <ddaney@avtrex.com>
4399
4400         PR target/37593
4401         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
4402         register if TARGET_LONG_CALLS.
4403
4404 2008-09-22  Richard Guenther  <rguenther@suse.de>
4405
4406         PR tree-optimization/37145
4407         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
4408         value-numbering union accesses with their offset and size only.
4409         (visit_reference_op_load): Fix simplification of inserted conversions.
4410         * tree-ssa-pre.c (find_or_generate_expression): Do not
4411         recursively generate expressions if running FRE.
4412
4413 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
4414
4415         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
4416         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
4417         New patterns.
4418
4419 2008-09-22  Richard Guenther  <rguenther@suse.de>
4420
4421         PR tree-optimization/37145
4422         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
4423         (phi_translate_1): Constant fold references.
4424
4425 2008-09-22  Ira Rosen  <irar@il.ibm.com>
4426
4427         PR tree-optimization/37482
4428         * tree-vectorizer.h (struct _slp_instance): Add new field.
4429         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
4430         (get_earlier_stmt): New function.
4431         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
4432         function.
4433         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
4434         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
4435         asserts that GSI points to the scalar statement being vectorized.
4436         Set new statement location according to GSI.
4437         (vect_schedule_slp_instance): Use GSI of
4438         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
4439
4440 2008-09-21  Jan Hubicka  <jh@suse.cz>
4441
4442         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
4443         (ipcp_insert_stage): Update dead_nodes bitmap.
4444
4445 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
4446
4447         PR target/37528
4448         * config/i386/t-cygming (SHLIB_LC): Remove.
4449         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
4450         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
4451
4452 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
4453
4454         PR middle-end/37170
4455         PR middle-end/37280
4456         * final.c (mark_symbol_ref_as_used): New helper function.
4457         (output_operand): Instead of just looking inside MEMs for
4458         SYMBOL_REFs, use new helper function and for_each_rtx.
4459         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
4460         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
4461         Make head comment more general.
4462         * config/darwin.c (machopic_output_indirection): Handle weak
4463         references here, like in assemble_external.
4464
4465 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
4466
4467         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
4468         (sparc_emit_float_lib_cmp): Change return type.
4469         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
4470         (gen_compare_operator): New function.
4471         (sparc_emit_float_lib_cmp): Return the new operator to be used in
4472         the comparison sequence.  Minor tweaks.
4473         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
4474         that the final operator and the result of sparc_emit_float_lib_cmp
4475         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
4476         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
4477         buneq, bunge, bunle, bltgt): Assert that the final operator and the
4478         result of sparc_emit_float_lib_cmp match for software TFmode.
4479         (movqicc, movhicc, movsicc, movdicc): Merge into...
4480         (mov<I:mode>cc): ...this.
4481         (movsfcc, movdfcc, movtfcc): Merge into...
4482         (mov<F:mode>cc): ...this.
4483         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
4484         into...
4485         (mov<I:mode>_cc_v9): ...this.
4486         (movdi_cc_sp64_trunc): Delete.
4487         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
4488         movdi_cc_reg_sp64): Merge into...
4489         (mov<I:mode>_cc_reg_sp64): ...this.
4490         (movsf_cc_sp64): Rename into...
4491         (movsf_cc_v9): ...this.
4492         (movdf_cc_sp64): Rename into...
4493         (movdf_cc_v9): ...this.
4494         (movtf_cc_hq_sp64): Rename into...
4495         (movtf_cc_hq_v9): ...this.
4496         (movtf_cc_sp64): Rename into...
4497         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
4498
4499 2008-09-21  Diego Novillo  <dnovillo@google.com>
4500
4501         * doc/gccint.texi: Include generic.texi and gimple.texi.
4502         Re-order index.
4503         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
4504         (GIMPLE): Move to gimple.texi.
4505         (Annotations): Remove references to to stmt_ann_t and
4506         ssa_name_ann_t.
4507         (SSA Operands): Rename from 'Statement Operands'.
4508         * doc/generic.texi: New.
4509         * doc/gimple.texi: New.
4510         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
4511         * Makefile.in (TEXI_GCCINT_FILES):
4512         * gimple.c (gimple_copy_call_skip_args): Rename from
4513         giple_copy_call_skip_args.  Update all users.
4514         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
4515
4516 2008-09-21  Ira Rosen  <irar@il.ibm.com>
4517
4518         PR tree-optimization/37539
4519         * tree-vect-transform.c (vect_transform_strided_load): Save vector
4520         statement in related statement field only for the first load of the
4521         group of loads with the same data reference.
4522
4523 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
4524
4525         * config/mips/mips.h (TUNE_OCTEON): New macro.
4526         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
4527         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
4528         * config/mips/octeon.md: New file.
4529         * config/mips/mips.md: Include octeon.md.  Restore
4530         semi-alphabetical order of include files.
4531
4532 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
4533
4534         PR target/37571
4535         * config/i386/i386.md (*jcc_fused_1): Removed.
4536         (*jcc_fused_2): Likewise.
4537         (*jcc_fused_3): Likewise.
4538         (*jcc_fused_4): Likewise.
4539
4540 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
4541
4542         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
4543         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
4544         * target.h (gcc_target): Add ira_cover_classes.
4545         * ira.c: Remove IRA_COVER_CLASSES guards.
4546         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
4547         instead of IRA_COVER_CLASSES.
4548         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
4549         (setup_class_translate): Likewise.
4550         (setup_reg_class_intersect_union): Likewise.
4551         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
4552         test of targetm.ira_cover_classes.
4553         * opts.c (decode_options): Use targetm.ira_cover_classes instead
4554         of IRA_COVER_CLASSES.
4555         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
4556         (TARGET_INITIALIZER): Include it.
4557         * targhooks.h (default_ira_cover_classes): Declare.
4558         * targhooks.c (default_ira_cover_classes): New function.
4559
4560 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
4561
4562         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
4563
4564 2008-09-19  Ian Lance Taylor  <iant@google.com>
4565
4566         * varasm.c (narrowing_initializer_constant_valid_p): Return
4567         NULL_TREE if ENDTYPE is not an integer.
4568
4569 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4570
4571         PR tree-opt/30930
4572         * tree-ssa.c (execute_update_addresses_taken): Also update
4573         DECL_GIMPLE_REG_P for vector and complex types.
4574
4575 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
4576             Jan Hubicka  <jh@suse.cz>
4577
4578         PR middle-end/37567
4579         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
4580         empty before freeing them.
4581         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
4582
4583 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
4584
4585         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
4586         * config/xtensa/predicates.md (tls_symbol_operand): New.
4587         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
4588         (TARGET_CANNOT_FORCE_MEM): Define.
4589         (xtensa_tls_symbol_p): New.
4590         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
4591         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
4592         (xtensa_tls_module_base): New.
4593         (xtensa_call_tls_desc): New.
4594         (xtensa_legitimize_tls_address): New.
4595         (xtensa_legitimize_address): Handle TLS symbols.
4596         (xtensa_tls_referenced_p_1): New.
4597         (xtensa_tls_referenced_p): New.
4598         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
4599         UNSPEC_DTPOFF.
4600         (XTENSA_BUILTIN_THREAD_POINTER): New.
4601         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
4602         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
4603         builtin.  Add declarations for __builtin_thread_pointer and
4604         __builtin_set_thread_pointer.
4605         (xtensa_fold_builtin): Recognize new builtins.
4606         (xtensa_expand_builtin): Expand new builtins.
4607         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
4608         (TARGET_THREADPTR): Define.
4609         (HAVE_AS_TLS): Define default value.
4610         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
4611         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
4612         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
4613         (UNSPECV_SET_TP): New.
4614         (sym_TPOFF, sym_DTPOFF): New.
4615         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
4616         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
4617         * configure: Regenerated.
4618
4619 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
4620
4621         PR target/37394
4622         * config/ia64/ia64.c (ia64_optimization_options): Move
4623         checking and setting flag_schedule_insns_after_reload and
4624         ia64_flag_schedule_insns2 back to ...
4625         (ia64_override_options): Here.
4626
4627 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4628
4629         PR rtl-opt/37451
4630         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
4631         zero extend count after the correction to it is done.
4632         (doloop_optimize): Update call to doloop_modify, don't zero extend
4633         count before call.
4634
4635 2008-09-18  Martin Jambor  <mjambor@suse.cz>
4636
4637         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
4638
4639         * ipa-prop.c: Correct comments.
4640         * ipa-prop.h: Likewise.
4641
4642 2008-09-18  Jan Hubicka  <jh@suse.cz>
4643
4644         PR middle-end/37448
4645         * ipa-reference.c (ipa_reference_local_vars_info_d,
4646         ipa_reference_global_vars_info_d,
4647         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4648         ipa_reference_vars_info_t): Move here from ipa-reference.h
4649         (node_duplication_hook_holder, node_removal_hook_holder): New.
4650         (get_reference_vars_info_from_cgraph): Rename to ...
4651         (get_reference_vars_info): ... this one, use cgraph uids.
4652         (get_local_reference_vars_info, get_global_reference_vars_info):
4653         Use cgraph instead of decl.
4654         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4655         Remove.
4656         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
4657         ipa_reference_get_written_global,
4658         ipa_reference_get_not_written_global): Use cgraph argument.
4659         (check_call): Simplify avail check.
4660         (scan_stmt_for_static_refs): Update.
4661         (propagate_bits): Update.
4662         (merge_callee_local_info): Remove.
4663         (init_function_info): Use cgraph nodes.
4664         (clean_function_local_data): Break out from ...
4665         (clean_function): ... here.
4666         (copy_local_bitmap, copy_global_bitmap): New functions.
4667         (duplicate_node_data, remove_node_data): New functions.
4668         (generate_summary): Register hooks; use visibility instead of
4669         master clones.
4670         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
4671         * ipa-reference.h (ipa_reference_local_vars_info_d,
4672         ipa_reference_global_vars_info_d,
4673         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4674         ipa_reference_vars_info_t): Move to ipa-reference.c
4675         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4676         Remove.
4677         (ipa_reference_get_read_global, ipa_reference_get_written_global,
4678         ipa_reference_get_not_read_global,
4679         ipa_reference_get_not_written_global): Update prototype.
4680         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
4681         (init_state): Remove.
4682         (node_duplication_hook_holder, node_removal_hook_holder): New.
4683         (get_function_state, set_function_state): Use VECtor.
4684         (analyze_function): Check body availability.
4685         (add_new_function): Likewise.
4686         (duplicate_node_data, remove_node_data): New.
4687         (generate_summary): Register hooks; do not care about clones.
4688         (propafate): Do not care about clones; recursive functions are
4689         not looping.
4690         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
4691         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
4692         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
4693         static.
4694         * tree-flow.h (function_ann_d): Remove reference_vars_info.
4695         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
4696         Update call of ipa-reference accesors.
4697
4698 2008-09-18  Simon Baldwin  <simonb@google.com>
4699
4700         * c-opts.c (c_common_handle_option): Add handling for
4701         -Wbuiltin-macro-redefined command line option.
4702         * c.opt: Added builtin-macro-redefined option.
4703         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
4704         documentation.
4705
4706 2008-09-18  Richard Guenther  <rguenther@suse.de>
4707
4708         PR tree-optimization/37258
4709         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
4710         and signedness for integral types.
4711         (vn_phi_eq): Require compatible types.
4712
4713 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
4714
4715         PR debug/34037
4716         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
4717         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
4718         VAR_DECL.
4719         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
4720         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
4721         ggc_free other TREE_LIST nodes from that chain.
4722         * function.c (instantiate_decls): Instantiate also DECL_RTL
4723         of vars in cfun->local_decls, free that list afterwards.
4724
4725 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
4726
4727         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
4728         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
4729
4730 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4731
4732         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
4733         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
4734
4735 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4736
4737         PR tree-optimization/37102
4738         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
4739         from a node. Check to see if another PHI is dead.
4740         (eliminate_useless_phis): Rename from eliminate_virtual_phis and
4741         remove real PHIs which have no uses.
4742         (rewrite_out_of_ssa): Call eliminate_useless_phis.
4743
4744 2008-09-18  Richard Guenther  <rguenther@suse.de>
4745
4746         PR middle-end/37284
4747         * tree-cfg.c (remove_useless_stmts_1): Remove
4748         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
4749
4750 2008-09-18  Nick Clifton  <nickc@redhat.com>
4751
4752         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
4753         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
4754         to frv_secondary_reload_class.
4755         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
4756         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
4757         (frv_secondary_reload_class): Omit unused parameter.
4758         (frv_secondary_reload): New function.  Handle the case when
4759         secondary_reload_class() is called before the reload_(in|out)
4760         _optabs have been initialised.
4761         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
4762         unused parameter.
4763         * config/frv/frv.md: Define an exclusion set between fr550_m0
4764         and fr550_f0.
4765
4766 2008-09-18  Richard Guenther  <rguenther@suse.de>
4767
4768         PR tree-optimization/37456
4769         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
4770         want to insert after ends a BB insert on the single fallthru
4771         outgoing edge.
4772
4773 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
4774
4775         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
4776         Mention -march=z9-109, z9-ec and z10.
4777
4778 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
4779
4780         PR rtl-optimization/37544
4781         * regrename.c (maybe_mode_change): Exit early when copy_mode
4782         is narrower than orig_mode and narrower than new_mode.
4783
4784 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
4785
4786         PR middle-end/37499
4787         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
4788
4789         * sched-rgn.c (ref_counts): Remove.
4790         (insn_referenced): New static variable.
4791         (INSN_REF_COUNT): Remove.
4792         (sched_run_compute_dependencies): Use insn_referenced instead of
4793         INSN_REF_COUNT.
4794         (add_branch_dependences): Likewise.  Delete dead assignment.
4795
4796 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
4797
4798         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
4799         consumer is an asm.  Add comment why this is important.
4800         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
4801         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
4802
4803 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
4804
4805         * expr.c (emit_group_store): Do not shift before moving via a
4806         stack slot.
4807
4808 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4809
4810         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
4811         from aggregate to non-aggregate type if the bit pattern is not fully
4812         preserved afterwards.
4813
4814 2008-09-17  Richard Guenther  <rguenther@suse.de>
4815
4816         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
4817         (verify_gimple_assign): ... this.  Split into ...
4818         (verify_gimple_assign_unary): ... this,
4819         (verify_gimple_assign_binary): ... that,
4820         (verify_gimple_assign_single): ... and this.
4821         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
4822         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
4823         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
4824         (verify_types_in_gimple_reference): Be forgiving with
4825         VIEW_CONVERT_EXPRs.
4826         (verify_gimple_phi): Deal with virtual operands.
4827
4828         * tree.def (PREDICT_EXPR): Change to tcc_expression.
4829
4830 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4831
4832         * tree.c (get_callee_fndecl): Don't call the language hook.
4833         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
4834         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
4835         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
4836
4837 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4838
4839         * tree.c (protected_set_expr_location): Don't unnecessarily
4840         check for error_mark_node.
4841
4842 2008-09-17  Art Haas  <ahaas@impactweather.com>
4843
4844         * ipa-reference.c (analyze_function): Declare step only if
4845         ENABLE_CHECKING is defined.
4846
4847 2008-09-17  Jan Hubicka  <jh@suse.cz>
4848
4849         PR c++/18071
4850         * tree.h (DECL_INLINE): remove.
4851         (DECL_DECLARED_INLINE_P): Update docs.
4852         (DECL_NO_INLINE_WARNING_P): new.
4853         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
4854         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
4855
4856 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4857             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4858
4859         PR bootstrap/37441
4860         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
4861         false.
4862
4863 2008-09-17  Jan Hubicka  <jh@suse.cz>
4864
4865         * ipa-reference.c (ipa_obstack): Remove.
4866         (local_info_obstack, global_info_obstack): New.
4867         (add_static_var): We now handle variables only.
4868         (mark_address_taken, mark_load, mark_store): New functions based on ...
4869         (check_operand): ... remove.
4870         (get_asm_stmt_operands): Rename to ...
4871         (check_asm_memory_clobber): ... this. Look only for memory clobber.
4872         (scan_stmt_for_static_refs): Rewrite.
4873         (scan_op_for_static_refs): Rename to ...
4874         (scan_initializer_for_static_refs): do not look for VAR_DECL
4875         initializers; stop recursion on types and decls.
4876         (ipa_init): Use proper obstacks.
4877         (analyze_variable): Use scan_initializer_for_static_refs.
4878         (init_function_info): Use local obstack.
4879         (analyze_function): Simplify.
4880         (add_new_function): We don't need visited_nodes obstack.
4881         (generate_summary): Use proper obstacks; cleanup after propagation.
4882
4883 2008-09-17  Richard Guenther  <rguenther@suse.de>
4884
4885         PR middle-end/37385
4886         PR tree-optimization/37491
4887         * alias.c (get_alias_set): Use the canonical type.
4888         * tree-vect-transform.c (vectorizable_store): Use the type of
4889         the lhs for the vector type.  Adjust checking.
4890         (vectorizable_load): Adjust checking.
4891
4892 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4893             Adam Nemet  <anemet@caviumnetworks.com>
4894
4895         PR rtl-optimization/37483
4896         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
4897         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
4898         Rearrange code to better match the original comment.  Check
4899         t_unconditional first.  Improve comment.
4900
4901 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4902
4903         PR c/37529
4904         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
4905         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
4906
4907         PR c++/37530
4908         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
4909         GIMPLE_TRY if cleanup sequence is empty.
4910
4911 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4912
4913         PR middle-end/37263
4914         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
4915         eliminate IV if the cost are the same.
4916
4917 2008-09-16  Richard Guenther  <rguenther@suse.de>
4918
4919         PR middle-end/37380
4920         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
4921         if not necessary.
4922
4923 2008-09-16  Richard Guenther  <rguenther@suse.de>
4924
4925         PR tree-optimization/37508
4926         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
4927
4928 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
4929
4930         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
4931
4932 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4933
4934         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
4935         use gen_floatdidf2 directly.
4936         (floatunssidf2): Likewise.
4937         (floatsidf_ppc64_mfpgpr): Remove.
4938         (floatsidf_ppc64): Remove.
4939         (floatunssidf_ppc64): Remove.
4940
4941 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
4942
4943         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
4944         rather than update_cost_queue.
4945
4946         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
4947         in every call starting with the second one, instead of only when
4948         alias_bitmap_obstack.elements != NULL.
4949
4950         * tree-predcom.c (filter_suitable_components): Free all refs in
4951         act->refs vector before calling release_component.
4952         (add_ref_to_chain): Free ref if not adding it to chain->refs.
4953
4954         * tree-data-ref.c (free_subscripts): Free all subscript objects.
4955
4956         * tree-loop-linear.c (linear_transform_loops): Initialize
4957         lambda_obstack only after calling perfect_loop_nest_depth.
4958         Goto free_and_continue instead of just continue for later failures.
4959
4960         PR middle-end/37479
4961         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
4962
4963         PR libmudflap/36397
4964         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
4965
4966 2008-09-14  Andreas Schwab  <schwab@suse.de>
4967
4968         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
4969
4970 2008-09-14  Jan Hubicka  <jh@suse.cz>
4971
4972         * invoke.texi (-fconserve-stack): Document.
4973         * opts.c (decode_options): Handle conserve_stack.
4974         * common.opt (fconvserve_stack): New.
4975
4976 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
4977
4978         * config.host: Add x-aix to host_xmake_file.
4979         * config/rs6000/t-aix52: Do not override LDFLAGS.
4980         * config/rs6000/x-aix: New file.
4981
4982 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
4983
4984         PR target/19636
4985         PR target/24894
4986         PR target/31644
4987         PR target/31786
4988         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
4989         is not recognized as a valid register usage. Allow REG_X to be used
4990         as a base pointer.
4991         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
4992         forces a reload when using a base register.
4993
4994 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
4995
4996         * config/i386/cygming-crtend.c (register_frame_ctor): If
4997         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
4998         directly with atexit.
4999         (deregister_frame_ctor): Rename to ...
5000         (deregister_frame_dtor): Use to call __gcc_deregister_frame
5001         if !DEFAULT_USE_CXA_ATEXIT.
5002
5003 2008-09-13  Jan Hubicka  <jh@suse.cz>
5004
5005         * cgraph.c: Include value-prof.h
5006         * Makefile.in (cgraph.o): Add value-prof.h dependency.
5007
5008 2008-09-13  Jan Hubicka  <jh@suse.cz>
5009
5010         PR middle-end/32581
5011         * tree-profile.c (add_abnormal_goto_call_edges): New function.
5012         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
5013         tree_gen_one_value_profiler, tree_gen_average_profiler,
5014         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
5015
5016 2008-09-13  Jan Hubicka  <jh@suse.cz>
5017
5018         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
5019         too many bytes on misalligned blocks.
5020
5021 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5022
5023         * doc/cfg.texi: Fix some typos.
5024         * doc/extend.texi: Likewise.
5025         * doc/install.texi: Likewise.
5026         * doc/invoke.texi: Likewise.
5027         * doc/rtl.texi: Likewise.
5028         * doc/tree-ssa.texi: Likewise.
5029
5030 2008-09-13  Richard Guenther  <rguenther@suse.de>
5031
5032         PR middle-end/30141
5033         * tree-nested.c (finalize_nesting_tree_1): Generate valid
5034         gimple stores for memory rhs.
5035
5036 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
5037
5038         PR rtl-optimization/37489
5039         * cse.c (fold_rtx): Don't return const_true_rtx for float
5040         compare if FLOAT_STORE_FLAG_VALUE is undefined.
5041
5042 2008-09-13  Jan Hubicka  <jh@suse.cz>
5043
5044         PR tree-optimization/37392
5045         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
5046
5047 2008-09-13  Martin Jambor  <mjambor@suse.cz>
5048             Jan Hubicka  <jh@suse.cz>
5049
5050         * cgraph.c (free_edges): New variable.
5051         (NEXT_FREE_EDGE): New macro.
5052         (cgraph_free_edge): New function.
5053         (cgraph_remove_edge): Call cgraph_remove_edge_1.
5054         (cgraph_node_remove_callees): Likewise.
5055         (cgraph_node_remove_callers): Likewise.
5056         (cgraph_create_edge): Reuse edges from the free list.  Do not
5057         update uid if doing so.
5058         (cgraph_remove_*_hook): Add free call.
5059
5060 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
5061
5062         * ira-color.c (conflict_allocno_vec): Delete.
5063         (update_cost_queue_elem): New structure.
5064         (update_cost_queue): New variable.
5065         (update_cost_queue_tail): Likewise.
5066         (update_cost_queue_elems): Likewise.
5067         (allocno_update_cost_check): Delete.
5068         (initiate_cost_update): Allocate update_cost_queue_elems
5069         instead of allocno_update_cost_check.
5070         (finish_cost_update): Update the free()s accordingly.
5071         (start_update_cost): New function.
5072         (queue_update_cost): Likewise.
5073         (get_next_update_cost): Likewise.
5074         (update_copy_costs_1): Inline into...
5075         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
5076         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
5077         once we've established they are equal.  Don't allocate update
5078         costs if there is nothing to add to them.
5079         (update_conflict_hard_regno_costs): Remove ALLOCNO and
5080         DIVISOR arguments.  Use a queue instead of recursive calls;
5081         process all the allocnos in the initial queue, rather than
5082         a single allocno.
5083         (assign_hard_reg): Use queue_update_cost instead of
5084         conflict_allocno_vec.  Queue coalesced allocnos instead
5085         of calling update_conflict_hard_regno_costs for each one.
5086         Just call update_conflict_hard_regno_costs once for the
5087         entire queue.
5088         (ira_color): Remove conflict_allocno_vec handling.
5089
5090 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5091
5092         PR tree-optimization/37484
5093         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
5094         (save_var_name): Same.
5095         (initialize_cloog_names): Same.
5096         (initialize_cloog_names): Same.
5097
5098 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5099
5100         * tree-scalar-evolution.c (set_instantiated_value): Set
5101         instantiated_below.
5102
5103 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
5104
5105         PR rtl-opt/37377
5106
5107         * ira-build.c (common_loop_tree_node_dominator): Remove.
5108         (copy_live_ranges_to_removed_store_destinations): New function.
5109         (regno_top_level_allocno_map): Move to top level from ...
5110         (ira_flattening): ... here.  Use
5111         copy_live_ranges_to_removed_store_destinations.
5112
5113         * ira-emit.c (generate_edge_moves): Fix a comment.
5114
5115 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
5116
5117         PR target/37466
5118         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
5119         scratch register after 'set' pattern.
5120
5121 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5122
5123         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
5124         information passed to mark_reg_pointer.
5125         * explow.c (force_reg): Likewise.
5126
5127 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5128
5129         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
5130         when building for the celledp architecture.
5131
5132 2008-09-12  Richard Guenther  <rguenther@suse.de>
5133
5134         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
5135
5136 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
5137
5138         PR rtl-optimization/37424
5139         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
5140         the regnos instead of the addresses.
5141
5142 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
5143
5144         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
5145
5146 2008-09-11  Richard Guenther  <rguenther@suse.de>
5147
5148         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
5149         entering the weaker equivalence recording.
5150
5151         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
5152
5153 2008-09-11  Jeff Law <law@redhat.com>
5154
5155         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
5156         by assign_stack_local on the IRA path for stack slot sharing
5157         as well as the non-IRA path.
5158
5159 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
5160
5161         * config/i386/i386.h: Fix whitespace issues.
5162
5163 2008-09-11  Martin Jambor  <mjambor@suse.cz>
5164
5165         * ipa-prop.h (struct ipa_param_flags): Removed.
5166         (struct ipa_param_descriptor): New structure.
5167         (struct ipa_node_params): ipcp_lattices, param_decls and
5168         param_flags moved to ipa_param_description.
5169         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
5170         descriptors.  Renamed all users.
5171         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
5172         changed to access descriptors.  Renamed all users.
5173         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
5174         to access descriptors. Renamed all users.
5175         * ipa-cp.c (ipcp_init_cloned_node): Call
5176         ipa_initialize_node_params instead of ipa_count_formal_params and
5177         ipa_create_param_decls_array.
5178         (ipcp_analyze_node): Likewise.
5179         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
5180         descriptors.  Renamed all users.
5181         (ipcp_initialize_node_lattices): Remove allocation.
5182         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
5183         ipa_initialize_node_params instead of ipa_count_formal_params and
5184         ipa_create_param_decls_array.
5185         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
5186         ipa_populate_param_decls, made static, added parameter info,
5187         renamed mt to node, removed allocation, changed to use
5188         descriptors.
5189         (ipa_count_formal_params): Made static, added parameter info,
5190         renamed mt to node.
5191         (ipa_initialize_node_params): New function.
5192         (ipa_check_stmt_modifications): Changed to use descriptors.
5193         (ipa_detect_param_modifications): Removed allocation, changed to
5194         use descriptors.
5195         (ipa_note_param_call): Changed to use descriptors.
5196         (ipa_analyze_params_uses): Removed allocation.
5197         (ipa_free_node_params_substructures): Changed to use descriptors.
5198         (ipa_edge_duplication_hook): Use the unused attribute.
5199         (ipa_node_duplication_hook): Use the unused attribute, changed to
5200         use descriptors, changed to duplicate descriptors.
5201
5202         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
5203         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
5204         indirect inlining.  Made static.
5205         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
5206         functions called only once.
5207         (cgraph_decide_recursive_inlining): Don't call
5208         ipa_propagate_indirect_call_infos, pass new_edges to
5209         cgraph_mark_inline_edge instead.
5210         (cgraph_decide_inlining_of_small_functions): Don't call
5211         ipa_propagate_indirect_call_infos, pass new_edges to
5212         cgraph_mark_inline_edge instead.
5213         (cgraph_decide_inlining): Don't call
5214         ipa_propagate_indirect_call_infos.
5215         * ipa-prop.c: Check that vectors are allocated.
5216
5217         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
5218         iff a new cgraph edges have been created.
5219         (cgraph_decide_inlining): New variable redo_always_inline.
5220         Flattening and always_inlining loop until callgraph stabilizes.
5221         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
5222         true iff new cgraph edges have been created.
5223         (propagate_info_to_inlined_callees): Likewise.
5224         (ipa_propagate_indirect_call_infos): Likewise.
5225
5226 2008-09-11  Richard Guenther  <rguenther@suse.de>
5227
5228         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
5229         (set_prologue_iterations): Likewise.
5230         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
5231         Likewise.
5232         (vect_update_init_of_dr): Likewise.
5233         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
5234         type verification.
5235         * fold-const.c (fold_unary): Do not generate calculations
5236         in sub-types.
5237
5238 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
5239
5240         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
5241         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
5242         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
5243
5244         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
5245         a bool.
5246         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
5247         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
5248         before finalizing the changes.
5249         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
5250         for BIT_IOR_EXPR.
5251         (simplify_truth_ops_using_ranges): New.
5252         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
5253         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
5254         whether a simplification was made.
5255         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
5256         use a switch statement and also call simplify_truth_ops_using_ranges.
5257
5258 2008-09-11  Jan Hubicka  <jh@suse.cz>
5259
5260         * ggc-common.c (loc_array): Make static.
5261         * dce.c (rest_of_handle_ud_dce): Free worklist.
5262
5263 2008-09-11  Jan Hubicka  <jh@suse.cz>
5264
5265         * cgraph.c (cgraph_release_function_body): Plug memory leak on
5266         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
5267         function so we are sure we do not dangle it forever.
5268         * function.c (outer_function_chain, find_function_data): Remove.
5269         (function_context_stack): New.
5270         (push_function_context, pop_function_context): Update.
5271         * function.h (struct function): Remove pointer outer.
5272         (outer_function_chain, find_function_data): Remove.
5273         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
5274
5275 2008-09-11  Jan Hubicka  <jh@suse.cz>
5276
5277         PR middle-end/37448
5278         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
5279
5280 2008-09-11  Jan Hubicka  <jh@suse.cz>
5281
5282         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
5283
5284 2008-09-11  Jan Hubicka  <jh@suse.cz>
5285
5286         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
5287         (free_var_map_entry): New function.
5288         (redirect_edge_var_map_destroy): Use it.
5289
5290 2008-09-11  Jan Hubicka  <jh@suse.cz>
5291
5292         PR middle-end/37448
5293         * tree-inline.c (add_lexical_block): Replace with ...
5294         (prepend_lexical_block): ... prepend at begginig.
5295         (remap_blocks): Use it and reverse later.
5296         (expand_call_inline): Use prepend_lexical_block.
5297
5298 2008-09-11  Jan Hubicka  <jh@suse.cz>
5299
5300         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
5301
5302 2008-09-11  Jan Hubicka  <jh@suse.cz>
5303
5304         * function.c (free_after_compilation): Call insn_locators_free.
5305         * cfglayout.c (insn_locators_free): New function.
5306         * rtl.h (insn_locators_free): Declare.
5307
5308 2008-09-11  Jan Hubicka  <jh@suse.cz>
5309
5310         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
5311         vector pointer.
5312         (cond_move_process_if_block): Update call.
5313
5314 2008-09-11  Jan Hubicka  <jh@suse.cz>
5315
5316         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
5317         * vec.c: Include hashtab.h
5318         (vec_descriptor, ptr_hash_entry): New structures.
5319         (vec_desc_hash, vec_ptr_map): New static variables.
5320         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
5321         register_overhead, free_overhead, vec_heap_free): New functions.
5322         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
5323         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
5324         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
5325         New functions.
5326
5327 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5328
5329         PR tree-optimization/37474
5330         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
5331         length of load permutation.
5332
5333 2008-09-11  Andreas Schwab  <schwab@suse.de>
5334
5335         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
5336
5337 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
5338
5339         PR target/37382
5340         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
5341         * dse.c (find_shift_sequence): Use extract_low_bits instead of
5342         simplify_gen_subreg.
5343
5344 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5345
5346         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
5347         for alias check.
5348
5349 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5350
5351         PR middle-end/37338
5352         * gimplify.c (gimplify_body): Call default_rtl_profile.
5353
5354         PR target/36904
5355         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
5356         instead of tok->val.node if not expanding to something else.  Handle
5357         intervening CPP_PADDING tokens.
5358         (altivec_categorize_keyword): Remove unneeded comparisons.
5359
5360 2008-09-10  Richard Guenther  <rguenther@suse.de>
5361
5362         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
5363
5364 2008-09-10  Richard Guenther  <rguenther@suse.de>
5365
5366         PR middle-end/37432
5367         * tree-inline.c (insert_init_stmt): Make sure to not
5368         insert invalid gimple stores.
5369
5370 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
5371
5372         PR tree-optimization/37388
5373         * toplev.c (process_options): Fail and warn when graphite
5374         flags are used, but the compiler has not been configured
5375         with graphite libraries.
5376         * graphite.c (graphite_transform_loops): Remove printfs
5377         to dump_file for the case when graphite is not available.
5378
5379 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
5380
5381         PR target/37434:
5382         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
5383         the even element into register.
5384         (ix86_expand_vector_init_general): Don't use
5385         ix86_expand_vector_init_interleave on V16QImode and V8HImode
5386         if we can't move from GPR to SSE register directly.
5387
5388 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
5389
5390         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
5391         not lose track of the number of NOPs needed.  Number of NOPs needed
5392         for sync vs. loads workaround was switched; corrected.  Run second
5393         pass for all workarounds.  No NOPs needed after call insns.  Change
5394         second pass to use find_next_insn_start and find_load helpers in order
5395         to properly detect parallel insns.
5396         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
5397
5398 2008-09-10  Jan Hubicka  <jh@suse.cz>
5399
5400         * value-prof.c (gimple_ic): Fix tuplification bug.
5401         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
5402         var warning.
5403
5404 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5405
5406         PR tree-optimization/37353
5407         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
5408         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
5409         calls instead of cond_dead_built_in_calls.
5410         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
5411         initalize the vector only before adding first entry.  Use VEC_safe_push
5412         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
5413         shrink_wrap_conditional_dead_built_in_calls call.
5414
5415 2008-09-10  Ira Rosen  <irar@il.ibm.com>
5416
5417         PR tree-optimization/37385
5418         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
5419         argument, and use it as a vector type if not NULL.
5420         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
5421         vectorized rhs.
5422         (vect_setup_realignment): Call vect_create_data_ref_ptr with
5423         additional argument.
5424         (vectorizable_load): Likewise.
5425
5426 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5427
5428         * config/i386/i386.md (SWI32): New mode iterator.
5429         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
5430         of SWI.
5431
5432 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5433
5434         PR rtl-optimization/37435
5435         * caller-save.c (insert_restore, insert_save): Check the mode by
5436         reg_save_code.
5437
5438 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5439
5440         PR other/37265
5441         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
5442         splay tree lookup.
5443         (dw2_output_indirect_constant_1): Use unstripped name in symbol
5444         reference.
5445
5446 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5447
5448         * doc/invoke.texi (ARM Options): Correct errors in discussion
5449         of -mfloat-abi, -mhard-float, and -msoft-float.
5450
5451 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5452             Jan Hubicka  <jh@suse.cz>
5453
5454         PR middle-end/37356
5455         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
5456         calling gimple_regimplify_operands on it.  Iterate over all newly
5457         added statements, not just the last one.
5458         (insert_init_stmt): Insert stmt into seq first, then call
5459         gimple_regimplify_operands on it.  Don't create new gimplification
5460         context, nor find referenced vars.
5461
5462 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5463
5464         PR other/37419
5465         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
5466         to pointer to vector pointer.
5467         * ipa-prop.c (ipa_propagate_indirect_call_infos,
5468         propagate_info_to_inlined_callees): Likewise.
5469         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
5470         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
5471         ipa_check_create_edge_args.
5472         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
5473         argument to pointer to vector pointer.
5474         (cgraph_decide_inlining_of_small_function): Adjust
5475         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
5476         calls.
5477
5478         PR target/37438
5479         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
5480         optimizing for size, not speed.
5481
5482         PR rtl-optimization/37408
5483         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
5484         if parm is promoted.
5485
5486 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
5487
5488         PR tree-optimization/37375
5489         * tree-scalar-evolution.c (scev_info_str): Add field
5490         instantiated_below.
5491         (new_scev_info_str, eq_scev_info, find_var_scev_info,
5492         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
5493         set_instantiated_value): Pass instantiated_below.
5494         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
5495         to above functions.
5496         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
5497         the definitions are not instantiated.
5498
5499         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
5500         (block_before_loop): New.
5501         * tree-data-ref.c (dr_analyze_indices): Update uses of
5502         instantiate_scev.
5503         * graphite.c (block_before_scop): New.
5504         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
5505         basic block, not a loop for determining the parameters.
5506         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
5507         scop.
5508         (idx_record_params, find_params_in_bb, find_scop_parameters,
5509         build_loop_iteration_domains, add_conditions_to_domain): Update calls
5510         to instantiate_scev.
5511
5512         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
5513
5514 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5515
5516         PR rtl-opt/37333
5517
5518         * ira-build.c (ira_create_allocno): Setup frequency to 0.
5519
5520         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
5521         Check zero freq and increase if necessary.
5522
5523 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5524
5525         * ira-conflicts.c (process_regs_for_copy): Check that the hard
5526         regno is in the right range.  Add comments.
5527
5528 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5529
5530         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
5531         warnings.
5532         * mips-tfile.c (copy_object): Cast alloca result to int *.
5533         * mips-tdump.c (print_symbol): Cast xmalloc return values to
5534         proper types.
5535         Rename class to sclass.
5536         (read_tfile): Cast read_seek return values to proper types.
5537         Cast xcalloc return value to proper type.
5538
5539 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5540
5541         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
5542         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
5543         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
5544
5545 2008-09-09  Jan Hubicka  <jh@suse.cz>
5546
5547         * profile.c (is_edge_inconsistent): Add debug output; ignore
5548         negative count on fake edges.
5549         (is_inconsistent): Add debug output.
5550
5551 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5552
5553         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
5554         dump message.
5555         (choose_ready): When first insn is chosen from the ready list, also
5556         dump it.
5557
5558 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5559
5560         PR rtl-optimization/37360
5561         * haifa-sched.c (max_issue): Do not assert that we never issue more
5562         insns than issue_rate.  Add comment.
5563
5564 2008-09-09  Richard Guenther  <rguenther@suse.de>
5565
5566         * tree-cfg.c (verify_types_in_gimple_op): Remove.
5567         (verify_types_in_gimple_call): Rename to ...
5568         (verify_gimple_call): ... this.  Enhance.
5569         (verify_types_in_gimple_cond): Remove.
5570         (verify_gimple_comparison): New function ...
5571         (verify_types_in_gimple_assign): ... split out from here.
5572         (verify_types_in_gimple_return): Rename to ...
5573         (verify_gimple_return): ... this.  Enhance.
5574         (verify_types_in_gimple_switch): Rename to ...
5575         (verify_gimple_switch): ... this.  Enhance.
5576         (verify_gimple_goto): New function.
5577         (verify_types_in_gimple_phi): Rename to ...
5578         (verify_gimple_phi): ... this.  Enhance.
5579         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
5580         Fold in single-statement cases from verify_types_in_gimple_seq_2.
5581         (verify_types_in_gimple_seq_2): Remove cases handled in
5582         verify_types_in_gimple_stmt.
5583
5584 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5585
5586         * config/bfin/bfin.c (n_regs_to_save): New static variable.
5587         (push_multiple_operation, pop_multiple_operation): Set it.
5588         (workaround_rts_anomaly): New function.
5589         (workaround_speculation): New function, broken out of bfin_reorg.
5590         (bfin_reorg): Call the new functions.
5591
5592 2008-09-09  Richard Guenther  <rguenther@suse.de>
5593
5594         PR middle-end/37354
5595         PR middle-end/30165
5596         * gimplify.c (gimplify_conversion): Change conversions of
5597         non-register type to VIEW_CONVERT_EXPRs.
5598         (gimplify_addr_expr): If we need to make the operand
5599         addressable make sure to use a properly initialized
5600         temporary for that so it gets a valid gimple store.
5601
5602 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
5603
5604         * function.h (struct function): Add function_start_locus.
5605         * cfgexpand.c (gimple_expand_cfg): Use it.
5606         * c-parser.c (c_parser_declaration_or_fndef): Set it.
5607
5608 2008-09-09  Richard Guenther  <rguenther@suse.de>
5609
5610         PR tree-optimization/37433
5611         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
5612         function calls.
5613
5614 2008-09-09  Richard Guenther  <rguenther@suse.de>
5615
5616         PR tree-optimization/37387
5617         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
5618         and bits to a common type.
5619
5620 2008-09-09  Nick Clifton  <nickc@redhat.com>
5621
5622         * config/v850/v850.md (return): Restore frame size restriction.
5623
5624 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
5625
5626         * c-common.c (c_expand_decl): Remove.
5627         * c-common.h (anon_aggr_type_p): Remove prototype.
5628         (DECL_ANON_UNION_ELEMS): Remove.
5629         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
5630         * c-decl.c (anon_aggr_type_p): Remove.
5631         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
5632         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
5633         * langhooks.h (struct lang_hooks): Remove expand_decl.
5634         * langhooks.c (lhd_expand_decl): Remove.
5635         * stmt.c (expand_anon_union_decl): Remove.
5636         * tree.h (expand_anon_union_decl): Remove prototype.
5637
5638 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
5639
5640         PR target/36609
5641         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
5642         zero.
5643         * config/avr/avr.md  (QISI) : Define mode iterator.
5644         (negated_tst<mode>) : Redefine as split using mode macro.
5645         (reversed_tstqi): Define insn as reversed compare with zero.
5646         (reversed_tsthi): Ditto.
5647         (reversed_tstsi): Ditto.
5648
5649 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5650
5651         PR middle-end/37393
5652         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
5653         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
5654
5655         PR middle-end/37414
5656         * predict.c (optimize_function_for_size_p): Don't segfault if
5657         FUN is NULL.
5658         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
5659         tree_swap_operands_p): Don't test cfun != NULL before calling
5660         optimize_function_for_s*_p.
5661
5662 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
5663
5664         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
5665         end of the search.
5666
5667 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
5668
5669         * crx/crx.h (IRA_COVER_CLASSES): Define.
5670
5671 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5672
5673         PR middle-end/37337
5674         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
5675         even when a stmt has been gimple_modified_p, but after fold_stmt is
5676         not any longer.  Remove unneeded may_have_exposed_new_symbols
5677         initializations.
5678
5679 2008-09-08  Richard Guenther  <rguenther@suse.de>
5680
5681         PR tree-optimization/37421
5682         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
5683         valueize the RHS.
5684
5685 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5686
5687         PR middle-end/37415
5688         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
5689
5690 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5691
5692         PR driver/37409
5693         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
5694         * pa-hpux10.h (LINK_SPEC): Likewise.
5695         * pa-hpux11.h (LINK_SPEC): Likewise.
5696
5697 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5698
5699         * pa32-regs.h (IRA_COVER_CLASSES): Define.
5700         * pa64-regs.h (IRA_COVER_CLASSES): Define.
5701
5702 2008-09-07  Helge Deller  <deller@gmx.de>
5703
5704         * pa/linux-atomic.c: New file.
5705         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
5706         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
5707
5708 2008-09-07  Richard Guenther  <rguenther@suse.de>
5709             Ira Rosen  <irar@il.ibm.com>
5710
5711         PR tree-optimization/36630
5712         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
5713         Call STRIP_NOPS before calling evolution_part_in_loop_num.
5714
5715 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
5716             Ira Rosen  <irar@il.ibm.com>
5717
5718         PR tree-optimization/35642
5719         * config/rs6000/altivec.md (mulv8hi3): Implement.
5720
5721 2008-09-06  Jeff Law <law@redhat.com>
5722
5723         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
5724
5725 2008-09-06  Jan Hubicka  <jh@suse.cz>
5726
5727         PR tree-optimization/14703
5728         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
5729         declarations.
5730         * passes.c (init_optimization_passes): Recompute inline parameters.
5731
5732 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5733
5734         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
5735         DECL being null.
5736
5737 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
5738             Peter Fuerst  <post@pfrst.de>
5739
5740         * doc/invoke.texi: Document -mr10k-cache-barrier=.
5741         * doc/extend.texi: Document __builtin_mips_cache.
5742         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
5743         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
5744         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
5745         __GCC_HAVE_BUILTIN_MIPS_CACHE.
5746         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
5747         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
5748         (set_push_mips_isas): New variable.
5749         (mips_r10k_cache_barrier): New variable.
5750         (cache): New availability predicate.
5751         (mips_builtins): Add an entry for __builtin_mips_cache.
5752         (mips_build_cvpointer_type): New function.
5753         (MIPS_ATYPE_CVPOINTER): New macro.
5754         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
5755         mode is VOIDmode.
5756         (r10k_simplified_address_p, r10k_simplify_address)
5757         (r10k_uncached_address_p, r10k_safe_address_p)
5758         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
5759         (r10k_needs_protection_p_call, r10k_needs_protection_p)
5760         (r10k_insert_cache_barriers): New functions.
5761         (mips_reorg_process_insns): Delete cache barriers after a
5762         branch-likely instruction.
5763         (mips_reorg): Call r10k_insert_cache_barriers.
5764         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
5765         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
5766         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
5767         (mips_cache, r10k_cache_barrier): New define_insns.
5768
5769 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5770
5771         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5772         * ira-color.c (setup_allocno_left_conflicts_num): Use
5773         hard_reg_set_equal_p instead of a comparison with
5774         ira_zero_hard_reg_set.
5775         * ira.c (setup_reg_subclasses): Likewise.
5776         (setup_cover_and_important_classes): Likewise.
5777         (setup_class_translate): Likewise.
5778         (setup_reg_class_intersect_union): Likewise.
5779         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5780         (ira_init_once): Don't initialize them.
5781
5782 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5783
5784         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
5785
5786 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5787
5788         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
5789
5790 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
5791
5792         Improved branch hints, safe hints, and scheduling.
5793
5794         * haifa-sched.c (sched_emit_insn) : Define.
5795         * sched-int.h (sched_emit_insn) : Add prototype.
5796         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
5797         -mhint-max-distance -msafe-hints) : Document.
5798         * config/spu/spu.c (spu_flag_var_tracking): New.
5799         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
5800         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
5801         TARGET_ASM_FILE_START): Define.
5802         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
5803         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
5804         (spu_emit_branch_hint): Add blocks argument.
5805         (insert_branch_hints, insert_nops): Remove.
5806         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
5807         uses_ls_unit, spu_sched_init_global, spu_sched_init,
5808         spu_sched_reorder, asm_file_start): New functions.
5809         (clock_var, spu_sched_length, pipe0_clock,
5810         pipe1_clock, prev_clock_var, prev_priority,
5811         spu_ls_first, prev_ls_clock): New static variables.
5812         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
5813         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
5814         (nopn_nv): Add a non-volatile version of nop.
5815         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
5816         -mhint-max-distance, -msafe-hints): New options.
5817
5818 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
5819             Samuel Tardieu  <sam@rfc1149.net>
5820
5821         * opts.c (decode_options): Combine nested if statements.
5822
5823         PR target/37283
5824         * opts.c (decode_options): Handle more relationships among
5825         unit-at-a-time, toplevel-reorder, and section-anchors.
5826
5827 2008-09-05  David Daney  <ddaney@avtrex.com>
5828
5829         * doc/install.texi (--enable-reduced-reflection): Document new option.
5830
5831 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
5832
5833         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
5834         constantpool_mem_p.
5835         (constantpool_operand): New.
5836         (move_operand): Disallow sub-word modes for the constant pool.
5837         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
5838         (xtensa_secondary_reload_class): Replace with....
5839         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
5840         Set icode for sub-word reloads from the constant pool.
5841         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
5842         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
5843         * config/xtensa/xtensa.md (reload<mode>_literal): New.
5844         * config/xtensa/xtensa-protos.h: Update prototypes.
5845
5846 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
5847
5848         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
5849         (REG_CLASS_NAMES): Update.
5850         (REG_CLASS_CONTENTS): Update.
5851         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
5852         of ALL_REGS for regs 77 and 78.
5853         * function.c (instantiate_virtual_regs_in_insn): Assert that
5854         return value of simplify_gen_subreg is not NULL.
5855
5856 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
5857
5858         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
5859         (gen_rtvec_v): Fix coding standards.
5860
5861 2008-09-04  Jan Hubicka  <jh@suse.cz>
5862
5863         * i386.c (decide_alg): Be more conservative about optimizing for size.
5864
5865 2008-09-04  Ian Lance Taylor  <iant@google.com>
5866
5867         * varasm.c (narrowing_initializer_constant_valid_p): New
5868         static function.
5869         (initializer_constant_valid_p): Call it.
5870
5871 2008-09-04  Jeff Law  <law@redhat.com>
5872
5873         * fold-const.c (native_encode_real): Fix computation of WORDS.
5874         (native_interpret_real): Likewise.
5875
5876 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
5877
5878         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
5879
5880 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5881
5882         * ira-conflicts.c (process_regs_for_copy): Check insn to check
5883         that the cost is already taken into account in ira-costs.c
5884
5885         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
5886
5887         * ira-build.c (print_copy, print_copies, ira_debug_copy,
5888         ira_debug_copies): New.
5889         (ira_bulid): Call print_copies.
5890
5891         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
5892
5893 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
5894
5895         PR target/32783
5896         * config/rs6000/rs6000.c (optimization_options): Remove check of
5897         flag_toplevel_order.
5898
5899 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5900
5901         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
5902         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
5903         second operand is a reg_imm10_operand.
5904         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
5905         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
5906         (*seq_<GPR:mode><GPR2:mode>): Rename to
5907         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
5908         ISA_HAS_SEQ_SNE.
5909         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
5910         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
5911         ISA_HAS_SEQ_SNE.
5912         (*sne_<GPR:mode><GPR2:mode>): Rename to
5913         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
5914         ISA_HAS_SEQ_SNE.
5915
5916 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5917
5918         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
5919         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
5920         combining an arithmetic right shift by more than 31 and a
5921         trunction.  Don't match for out-of-range shift amounts.  Set
5922         attribute mode to <MODE>.
5923         (*lshr32_trunc<mode>): Name the pattern combining a logical right
5924         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
5925         (*<optab>_trunc<mode>_exts): New pattern for truncated right
5926         shifts by less than 32.
5927         (extv): Change predicate on first operand to accept registers.
5928         Change predicate of the other operands from immediate_operand to
5929         const_int_operand.  Expand exts when source is a register.
5930         (extzv): Change predicate of the constant operands from
5931         immediate_operand to const_int_operand.
5932         (extzv<mode>): Change predicate of the constant operands from
5933         immediate_operand to const_int_operand and no constraint. Also
5934         remove mode.
5935         (*extzv_trunc<mode>_exts): New pattern.
5936
5937 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5938
5939         * config/mips/mips.h (ISA_HAS_CINS): New macro.
5940         * config/mips/mips-protos.h (mask_low_and_shift_p,
5941         mask_low_and_shift_len): Declare.
5942         * config/mips/mips.c (mask_low_and_shift_p,
5943         mask_low_and_shift_len): New functions.
5944         (mips_print_operand): Handle new operand prefix "m".
5945         * config/mips/mips.md (*cins<mode>): New pattern.
5946
5947 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5948
5949         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
5950         optimizing for size.
5951
5952 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5953
5954         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
5955         regardless of epilogue_completed.
5956
5957 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5958
5959         PR middle-end/37359
5960         * ira-lives.c (process_bb_node_lives): Check setjmp.
5961
5962 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5963
5964         PR middle-end/37243
5965         * ira-build.c (form_loop_tree): Reverse BB walk.
5966         (create_bb_allocnos): Likewise.
5967         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
5968         (mark_reg_store): Rename to...
5969         (mark_ref_live): ...this and take a df_ref argument instead of
5970         note_stores arguments.  Assert that we have a register.
5971         (mark_reg_clobber): Delete.
5972         (def_conflicts_with_inputs_p): New function.
5973         (mark_reg_conflicts): Delete.
5974         (mark_reg_death): Rename to...
5975         (mark_ref_dead): ...this and take a df_ref argument instead of
5976         a register.  Assert that we have a register.
5977         (process_bb_node_lives): Hoist frequency calculation out of
5978         instruction walk.  Convert from a forwards scan to a backwards scan.
5979         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
5980         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
5981         (create_allocno_live_ranges): Don't create regs_set.
5982
5983 2008-09-04  Ian Lance Taylor  <iant@google.com>
5984
5985         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
5986         or REG_LABEL_TARGET.
5987         * calls.c (emit_library_call_value_1): Use MEM_P rather than
5988         comparing MODE with MEM.
5989         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
5990         comparing with GF_PREDICT_TAKEN.
5991         (gimple_get_lhs): Change code to enum gimple_code.
5992         (gimple_set_lhs): Likewise.
5993         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
5994         * omp-low.c (find_omp_clause): Change kind parameter to enum
5995         omp_clause_code.
5996         * tree-flow.h (find_omp_clause): Update declaration.
5997         * regrename.c (clear_dead_regs): Change kind parameter to enum
5998         reg_note.
5999         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
6000         GET_MODE.
6001         * see.c (see_get_extension_data): Change return type to enum
6002         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
6003         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
6004         (see_gen_normalized_extension): Change extension_code parameter to
6005         enum entry_type.
6006         (see_seek_pre_extension_expr): Change extension_code to enum
6007         entry_type.
6008         (see_merge_one_def_extension): Likewise.
6009         (see_handle_relevant_defs): Likewise.
6010         (see_handle_relevant_uses): Likewise.
6011         (see_analyze_one_def): Likewise.
6012         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
6013         GIMPLE_ASM rather than ASM_EXPR.
6014         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
6015         GIMPLE_RETURN rather than RETURN_EXPR.
6016         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
6017         (evaluate_stmt): Likewise.
6018         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
6019         to enum vect_relevant.
6020         (vect_mark_stmts_to_be_vectorized): Change assertion to not
6021         compare gimple codes with tree codes.
6022
6023 2008-09-04  Paul Brook  <paul@codesourcery.com>
6024
6025         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
6026
6027 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
6028
6029         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
6030         pointer check lost in the recent no-unit-at-a-time patch.
6031
6032 2008-09-04  Jan Hubicka  <jh@suse.cz>
6033
6034         PR middle-end/37343
6035         * tree-switch-conversion.c (check_final_bb): Accept only IP
6036         invariants.
6037
6038 2008-09-04  Jan Hubicka  <jh@suse.cz>
6039
6040         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
6041         Break out from ...
6042         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
6043         using_ranges argument.
6044         (vrp_evaluate_conditional): Avoid bogus warning for type range.
6045         (vrp_visit_cond_stmt): Update call of
6046         vrp_evaluate_conditional_warnv_with_ops
6047
6048 2008-09-04  Jan Hubicka  <jh@suse.cz>
6049
6050         PR tree-optimization/37345
6051         PR tree-optimization/37358
6052         PR tree-optimization/37357
6053         * tree.c (build_function_type_skip_args): Build distinct type copy;
6054         set TYPE_CONTEXT.
6055         (build_function_decl_skip_args): Set type of new decl not orig decl;
6056         clear DECL_VINDEX for methods turned into functions.
6057
6058 2008-09-04  Nick Clifton  <nickc@redhat.com>
6059
6060         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
6061         * configure: Regenerate.
6062         * config.in: Regenerate.
6063         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
6064         alignment field, if it is supported.
6065
6066 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
6067
6068         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
6069         libraries.
6070
6071 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
6072
6073         * config/rs6000/rs6000.c (processor_target_table): Do not
6074         enable VMX for POWER6.
6075
6076 2008-09-03  Anton Blanchard  <anton@samba.org>
6077
6078         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
6079         emit memory barrier before operation.
6080
6081 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
6082
6083         PR testsuite/37325
6084         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
6085         default_elf_asm_output_external.
6086
6087 2008-09-03  Jeff Law  <law@redhat.com>
6088
6089         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
6090
6091 2008-09-03  Richard Henderson  <rth@redhat.com>
6092
6093         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
6094         memory barrier to below the test-and-set.
6095         (alpha_split_lock_test_and_set_12): Likewise.
6096
6097 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6098
6099         PR rtl-opt/37243
6100
6101         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
6102         all_allocnos.
6103
6104         * ira-color.c (print_loop_title): Use all_allocnos.
6105         (color_pass): Ditto.  Don't add border_allocnos.  Check that
6106         subloop allocno in the correspdoning bitmap all_allocnos.
6107
6108         * ira-emit.c (change_loop): Use all_allocnos.
6109
6110         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
6111         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
6112         (create_cap_allocno): Remove setting mentioned_allocnos.
6113         (create_insn_allocnos): Ditto.
6114         (remove_unnecessary_allocnos): Use all_allocnos.
6115         (check_allocno_creation): Check that allocnos are in the
6116         corresponding bitmap all_allocnos.
6117
6118 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6119
6120         PR rtl-opt/37243
6121
6122         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
6123         (process_regs_for_copy): Process subregs.  Refine check when cost
6124         is taken into account in ira-costs.c.
6125         (process_reg_shuffles): Use REG_SUBREG_P.
6126         (add_insn_allocno_copies): Ditto.  Ignore modes.
6127
6128         * ira-color.c (conflict_allocno_vec): New.
6129         (COST_HOP_DIVISOR): New macro.
6130         (update_copy_costs_1): Use it.
6131         (update_conflict_hard_regno_costs): New function.
6132         (assign_hard_reg): Use it.
6133         (ira_color): Allocate and free conflict_allocno_vec.
6134
6135 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6136
6137         PR rtl-opt/37296
6138
6139         * ira-int.h (ira_sort_insn_chain): Remove.
6140
6141         * ira.c (basic_block_order_nums, chain_insn_order,
6142         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
6143         (ira): Don't call ira_sort_insn_chain.
6144
6145         * reload1.c (reload): Don't call ira_sort_insn_chain.
6146
6147 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6148
6149         PR middle-end/37293
6150         * cgraphunit.c (update_call_expr): Remove eh regions from statements
6151         which become non throw.
6152         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
6153         update_call_expr after updating the flags on the decl.
6154
6155 2008-09-03  Jan Hubicka  <jh@suse.cz>
6156
6157         PR tree-optimization/37315
6158         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
6159         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
6160         (cgraph_analyze_functions): Use node->analyzed
6161         (cgraph_mark_functions_to_output): Likewise.
6162         (cgraph_expand_function): All functions can be released after
6163         expanding.
6164         (cgraph_optimize): Use gimple_has_body_p.
6165         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
6166         (cgraph_decide_inlining_incrementally): Likewise.
6167         (inline_transform): Inline transform.
6168         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
6169         copy fields needed.
6170         (inlinable_function_p): Drop gimple_body check.
6171         (expand_call_inline): Use gimple_has_body_p.
6172         * gimple.c (gimple_has_body_p): New.
6173         * gimple.h (gimple_has_body_p): Add prototype.
6174         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
6175         (dump_function_to_file): Use gimple_has_body_p check.
6176
6177 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
6178
6179         PR c++/37346
6180         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
6181         substatements.
6182         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
6183
6184 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6185
6186         From Michael Frysinger  <michael.frysinger@analog.com>
6187         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
6188         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
6189         for bf538.
6190
6191 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
6192
6193         Add picoChip port.
6194         * doc/extend.texi: Document picoChip builtin functions.
6195         * doc/invoke.texi: Document picoChip options.
6196         * doc/contrib.texi: Add picoChip contribution.
6197         * doc/md.texi: Document picoChip constraints.
6198         * config.gcc: Add picochip-*-*.
6199         * config/picochip/: Add new port.
6200
6201 2008-09-03  Richard Guenther  <rguenther@suse.de>
6202
6203         PR tree-optimization/37328
6204         * tree-sra.c (sra_build_assignment): Gimplify properly.
6205         (generate_copy_inout): Take the correct stmt as definition,
6206         remove bogus assert.
6207
6208 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6209
6210         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
6211         attributes.
6212
6213         From Michael Frysinger  <michael.frysinger@analog.com>
6214         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
6215
6216 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
6217
6218         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
6219         (__gthread_setspecific): Revert 2008-08-31 change to
6220         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
6221
6222 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
6223
6224         * diagnostic.c (error_at): New.
6225         * toplev.h (error_at): New prototype.
6226         * c-typeck.c (build_array_ref): Call error_at instead of error.
6227         Pass location to pedwarn.
6228
6229 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
6230
6231         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
6232
6233 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6234
6235         * dwarf2out.c (tree_add_const_value_attribute): Only handle
6236         VAR_DECL and CONST_DECL.
6237
6238 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6239             Jakub Jelinek  <jakub@redhat.com>
6240
6241         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
6242         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
6243         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
6244         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
6245         Don't set ix86_save_varrargs_registers.
6246         (ix86_setup_incoming_varargs): Assume cum != NULL.
6247         (ix86_va_start): Check ix86_varargs_gpr_size and
6248         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
6249         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
6250         from frame pointer if ix86_varargs_gpr_size == 0.
6251         (ix86_compute_frame_layout): Updated.
6252         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
6253         (ix86_varargs_gpr_size): Define.
6254         (ix86_varargs_fpr_size): Likewise.
6255         (machine_function): Remove save_varrargs_registers.
6256         Add varargs_gpr_size and varargs_fpr_size.
6257
6258 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6259
6260         * config/alpha/alpha.c (va_list_skip_additions,
6261         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
6262         (alpha_gimplify_va_arg): Call unshare_expr on second use of
6263         offset_field.
6264
6265         PR tree-optimization/36766
6266         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
6267         for already removed basic blocks.
6268
6269         PR target/36332
6270         * real.c (real_maxval): Clear a lower bit to make real_maxval
6271         match get_max_float for IBM long double format.
6272
6273 2008-09-02  Andreas Schwab  <schwab@suse.de>
6274
6275         * configure.ac: Use m4_quote to quote the expansion of m4_do.
6276         * configure: Regenerate.
6277
6278 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
6279
6280         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
6281         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
6282         checking for a non-VOID CONSTANT_P.
6283
6284 2008-09-02  Jan Hubicka  <jh@suse.cz>
6285
6286         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
6287         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
6288         sdiv_pow2_cheap
6289
6290 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6291
6292         * expr.c (emit_group_store): Don't assert stack temp mode size.
6293
6294 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
6295             Tobias Grosser  <grosser@fim.uni-passau.de>
6296             Jan Sjodin  <jan.sjodin@amd.com>
6297             Harsha Jagasia  <harsha.jagasia@amd.com>
6298             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6299             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
6300             Adrien Eliche  <aeliche@isty.uvsq.fr>
6301
6302         Merge from graphite branch.
6303         * graphite.c: New.
6304         * graphite.h: New.
6305         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
6306         * doc/invoke.texi (-floop-block, -floop-interchange,
6307         -floop-strip-mine): Document new flags.
6308         * tree-into-ssa.c (gimple_vec): Moved...
6309         * tree-loop-distribution.c (rdg_component): Moved...
6310         * cfgloopmanip.c: Include tree-flow.h.
6311         (update_dominators_in_loop): New.
6312         (create_empty_if_region_on_edge): New.
6313         (create_empty_loop_on_edge): New.
6314         (loopify): Use update_dominators_in_loop.
6315         * tree-pass.h (pass_graphite_transforms): Declared.
6316         * configure: Regenerate.
6317         * tree-phinodes.c (make_phi_node): Export.
6318         (add_phi_node_to_bb): New, split from create_phi_node.
6319         * tree-chrec.c (for_each_scev_op): New.
6320         * tree-chrec.h (for_each_scev_op): Declared.
6321         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
6322         (remove_statement): Call get_phi_with_result.
6323         * config.in (HAVE_cloog): Undef.
6324         * gdbinit.in (pgg): New.
6325         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
6326         * tree-ssa-loop.c (graphite_transforms): New.
6327         (gate_graphite_transforms): New.
6328         (pass_graphite_transforms): New.
6329         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
6330         HAVE_cloog): Defined.
6331         * tree-vectorizer.c (rename_variables_in_bb): Export.
6332         * tree-data-ref.c (dr_may_alias_p): Export.
6333         (stmt_simple_memref_p): New.
6334         (find_data_references_in_stmt): Export.
6335         (find_data_references_in_loop): Export.
6336         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
6337         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
6338         (create_rdg_vertices): Export.
6339         (build_empty_rdg): New.
6340         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
6341         * tree-data-ref.h (rdg_component): ... here.
6342         (scop_p): New.
6343         (struct data_reference): Add a field scop.
6344         (DR_SCOP): New.
6345         (find_data_references_in_loop): Declared.
6346         (find_data_references_in_stmt): Declared.
6347         (create_rdg_vertices): Declared.
6348         (dr_may_alias_p): Declared.
6349         (stmt_simple_memref_p): Declared.
6350         (struct rdg_edge): Add a field ddr_p relation.
6351         (build_empty_rdg): Declared.
6352         * lambda.h (lambda_matrix): Declare a VEC of.
6353         (find_induction_var_from_exit_cond): Declared.
6354         (lambda_vector_compare): New.
6355         * common.opt (fgraphite, floop-strip-mine,
6356         floop-interchange, floop-block): New flags.
6357         * lambda-code.c (find_induction_var_from_exit_cond): Export.
6358         * cfgloop.c (is_loop_exit): New.
6359         * cfgloop.h (is_loop_exit): Declared.
6360         (create_empty_if_region_on_edge): Declared.
6361         (create_empty_loop_on_edge): Declared.
6362         * tree-flow.h (add_phi_node_to_bb): Declared.
6363         (make_phi_node): Declared.
6364         (rename_variables_in_bb): Declared.
6365         (perfect_loop_nest_depth): Declared.
6366         (graphite_transform_loops): Declared.
6367         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
6368         (graphite.o-warn): Add -Wno-error.
6369         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
6370         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
6371         (INCLUDES): Add PPLINC, CLOOGINC.
6372         (OBJS-common): Add graphite.o.
6373         (graphite.o): Add rule.
6374         * gimple.h (gimple_vec): ... here.
6375         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
6376         * passes.c (init_optimization_passes): Schedule
6377         pass_graphite_transforms.
6378
6379 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
6380
6381         PR target/37283
6382         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
6383         and -fno-toplevel-reorder after handle_options.
6384
6385 2008-09-02  Paul Brook  <paul@codesourcery.com>
6386
6387         * config/arm/arm.c (arm_tune_cortex_a9): Define.
6388         (arm_override_options): Set arm_tune_cortex_a9.
6389         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
6390         (arm_issue_rate): Handle cortexa9.
6391         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
6392         * config/arm/arm-cores.def: Add cortex-a9.
6393         * config/arm/arm-tune.md: Regenerate.
6394         * config/arm/arm.md: Include cortex-a9.md.
6395         (generic_sched, generic_vfp): Add cortexa9.
6396         * config/arm/cortex-a9.md: New file.
6397
6398 2008-09-02  Richard Guenther  <rguenther@suse.de>
6399
6400         PR tree-optimization/37327
6401         * tree-vrp.c (register_new_assert_for): Make sure to not have
6402         TREE_OVERFLOW set on the bound.
6403
6404 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
6405
6406         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
6407
6408         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
6409         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
6410         spec_info->mask.
6411
6412 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
6413
6414         * gcc/config/spu/spu.md (divdf3): Removed.
6415
6416 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6417
6418         PR tree-optimization/37095
6419         * cgraph.c (cgraph_node): When creating new cgraph node after
6420         assembler_name_hash has been populated, record it in the hash
6421         table.
6422
6423 2008-09-01  Paul Brook  <paul@codesourcery.com>
6424
6425         * doc/invoke.texi: Document -mword-relocations.
6426         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6427         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6428         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6429         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
6430         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
6431         (arm_emit_movpair): New function.
6432         (arm_print_operand <c>): Handle sybolic addresses.
6433         * config/arm/arm.h (TARGET_USE_MOVT): Define.
6434         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6435         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
6436         * config/arm/arm.opt: Add -mword-relocations.
6437         * config/arm/arm.md (movsi): Use arm_emit_movpair.
6438         (arm_movt, arm_movw): New.
6439
6440 2008-09-01  Paul Brook  <paul@codesourcery.com>
6441
6442         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
6443         Allow Interworking on ARMv4 EABI based targets.
6444         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
6445         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
6446
6447 2008-09-01  Paul Brook  <paul@codesourcery.com>
6448
6449         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
6450         optimized LT0 test.  Remove optimization for GT.
6451
6452 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6453
6454         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
6455         openmp applications.
6456         * pa-hpux11.h (LIB_SPEC): Likewise.
6457
6458         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
6459         is defined.
6460
6461 2008-09-01  Jan Hubicka  <jh@suse.cz>
6462
6463         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
6464         present, use only counts; when guessed use only frequencies.
6465         (estimate_bb_frequencies): Use function_frequency.
6466         * profile.c (compute_branch_probabilities): Exit early when
6467         profile reading failed. Set profile_status.
6468         (branch_prob): Do not set profile_status.
6469
6470 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
6471
6472         * tree.c (protected_set_expr_location): New.
6473         * tree.h (protected_set_expr_location): New prototype.
6474         * c-tree.h (build_array_ref): Add argument.
6475         (parser_build_unary_op): Same.
6476         * c-typeck.c (build_indirect_ref): Handle new location argument.
6477         (build_array_ref): Same.
6478         (parser_build_unary_op): Same.
6479         * gimplify.c (gimplify_asm_expr): Set input_location before calling
6480         error.
6481         * c-omp.c (c_finish_omp_atomic): Pass location when calling
6482         build_indirect_ref.
6483         * c-common.c (finish_label_address_expr): Handle new location argument.
6484         * c-common.h (build_indirect_ref): Add argument.
6485         (finish_label_address_expr): Same.
6486         * c-parser.c (c_parser_unary_expression): Pass location to build
6487         functions.
6488         (c_parser_postfix_expression): Same.
6489
6490 2008-09-01  Paul Brook  <paul@codesourcery.com>
6491
6492         * config/arm/arm.md: Include cortex-r4f.md.
6493         (attr fpu): Update type list.
6494         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
6495         fconstd, fcmps and fcmpd.
6496         (attr tune_cortexr4): Define.
6497         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
6498         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
6499         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
6500         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
6501         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
6502         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
6503         cortex_a8_vfp_farith: Ditto.
6504         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
6505         * config/arm/cortex-r4.md: Use tune_cortexr4.
6506         * config/arm/cortex-r4f.md: New file.
6507
6508 2008-09-01  Richard Guenther  <rguenther@suse.de>
6509
6510         PR tree-optimization/37305
6511         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
6512         the result of constant conversions.
6513         (fold_gimple_assign): Likewise.
6514
6515 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6516
6517         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
6518         #ifdef ENABLE_CHECKING.
6519
6520 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6521
6522         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
6523         * sched-int.h (print_insn, print_pattern, print_value): Declare also
6524         when !INSN_SCHEDULING.
6525
6526 2008-09-01  Andreas Schwab  <schwab@suse.de>
6527
6528         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
6529
6530 2008-09-01  Paul Brook  <paul@codesourcery.com>
6531
6532         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
6533
6534 2008-09-01  Jan Hubicka  <jh@suse.cz>
6535
6536         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
6537
6538         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
6539         Pass speed operand.
6540         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
6541         * gimplify.c (gimplify_init_constructor): Add speed operand.
6542         * tree-sra.c (decide_block_copy): Likewise.
6543         * tree-inline.c (estimate_move_cost): Likewise.
6544         * config/alpha/alpha.h (MOVE_RATIO): Update.
6545         * config/frv/frv.c (MOVE_RATIO): Update.
6546         * config/spu/spu.h (MOVE_RATIO): Update.
6547         * config/sparc/sparc.h (MOVE_RATIO): Update.
6548         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
6549         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
6550         * config/cris/cris.h (MOVE_RATIO): Update.
6551         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
6552         * config/arm/arm.h (MOVE_RATIO): Update.
6553         * config/pa/pa.md: Update uses of MOVE_RATIO
6554         * config/pa/pa.h (MOVE_RATIO): Update.
6555         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
6556         CLEAR_RATIO, SET_RATIO): Update.
6557         * config/h8300/h8300.h (MOVE_RATIO): Update.
6558         * config/v850/v850.h (MOVE_RATIO): Update.
6559         * config/bfin/bfin.h (MOVE_RATIO): Update.
6560
6561 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
6562             Dmitry Melnik  <dm@ispras.ru>
6563             Dmitry Zhurikhin  <zhur@ispras.ru>
6564             Alexander Monakov  <amonakov@ispras.ru>
6565             Maxim Kuvyrkov  <maxim@codesourcery.com>
6566
6567         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
6568         sel-sched-dump.c, sel-sched-ir.c: New files.
6569         * Makefile.in (OBJS-common): Add selective scheduling object files.
6570         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
6571         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
6572         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
6573         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
6574         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
6575         (make_forwarder_block): Update loop latch if we have redirected
6576         the loop latch edge.
6577         * cfgloop.c (get_loop_body_in_custom_order): New function.
6578         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
6579         (CP_FALLTHRU_PREHEADERS): Likewise.
6580         (get_loop_body_in_custom_order): Declare.
6581         * cfgloopmanip.c (has_preds_from_loop): New.
6582         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
6583         Assert that the preheader edge will be fall thru when it is set.
6584         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
6585         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
6586         fsel-sched-substitution, fselective-scheduling): New flags.
6587         * cse.c (hash_rtx_cb): New.
6588         (hash_rtx): Use it.
6589         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
6590         sel_sched_insn_cnt): New counters.
6591         * final.c (compute_alignments): Export.  Free dominance
6592         info after loop_optimizer_finalize.
6593         * genattr.c (main): Output maximal_insn_latency prototype.
6594         * genautomata.c (output_default_latencies): New.
6595         Factor its code from ...
6596         (output_internal_insn_latency_func): ... here.
6597         (output_internal_maximal_insn_latency_func): New.
6598         (output_maximal_insn_latency_func): New.
6599         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
6600         (struct hard_reg_set_iterator): New.
6601         (hard_reg_set_iter_init, hard_reg_set_iter_set,
6602         hard_reg_set_iter_next): New functions.
6603         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
6604         * lists.c (remove_free_INSN_LIST_node,
6605         remove_free_EXPR_LIST_node): New functions.
6606         * loop-init.c (loop_optimizer_init): When
6607         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
6608         calling create_preheaders.
6609         (loop_optimizer_finalize): Do not verify flow info after reload.
6610         * recog.c (validate_replace_rtx_1): New parameter simplify.
6611         Default it to true.  Update all uses.  Factor out simplifying
6612         code to ...
6613         (simplify_while_replacing): ... this new function.
6614         (validate_replace_rtx_part,
6615         validate_replace_rtx_part_nosimplify): New.
6616         * recog.h (validate_replace_rtx_part,
6617         validate_replace_rtx_part_nosimplify): Declare.
6618         * rtl.c (rtx_equal_p_cb): New.
6619         (rtx_equal_p): Use it.
6620         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
6621         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
6622         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
6623         * vecprim.h: Add a vector type for unsigned int.
6624         * haifa-sched.c: Include vecprim.h and cfgloop.h.
6625         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
6626         ready_try, cycle_issued_insns, spec_info): Make global.
6627         (readyp): Initialize.
6628         (dfa_lookahead): New global variable.
6629         (old_max_uid, old_last_basic_block): Remove.
6630         (h_i_d): Make it a vector.
6631         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
6632         through HID macro.
6633         (after_recovery, adding_bb_to_current_region_p):
6634         New variables to handle correct insertion of the recovery code.
6635         (struct ready_list): Move declaration to sched-int.h.
6636         (rgn_n_insns): Removed.
6637         (rtx_vec_t): Move to sched-int.h.
6638         (find_insn_reg_weight): Remove.
6639         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
6640         (haifa_init_h_i_d, haifa_finish_h_i_d):
6641         New functions to initialize / finalize haifa instruction data.
6642         (extend_h_i_d, init_h_i_d): Rewrite.
6643         (unlink_other_notes): Move logic to add_to_note_list.  Handle
6644         selective scheduler.
6645         (ready_lastpos, ready_element, ready_sort, reemit_notes,
6646         find_fallthru_edge): Make global, remove static prototypes.
6647         (max_issue): Make global.  Add privileged_n and state parameters.  Use
6648         them.
6649         (extend_global, extend_all): Removed.
6650         (init_before_recovery): Add new param.  Fix the handling of the case
6651         when we insert a recovery code before the EXIT which has a predecessor
6652         with a fallthrough edge to it.
6653         (create_recovery_block): Make global.  Rename to
6654         sched_create_recovery_block.  Update.
6655         (change_pattern): Rename to sched_change_pattern.  Make global.
6656         (speculate_insn): Rename to sched_speculate_insn.  Make global.
6657         Split haifa-specific functionality into ...
6658         (haifa_change_pattern): New static function.
6659         (sched_extend_bb): New static function.
6660         (sched_init_bbs): New function.
6661         (current_sched_info): Change type to struct haifa_sched_info.
6662         (insn_cost): Adjust for selective scheduling.
6663         (dep_cost_1): New function.  Move logic from ...
6664         (dep_cost): ... here.
6665         (dep_cost): Use dep_cost_1.
6666         (contributes_to_priority_p): Use sched_deps_info instead of
6667         current_sched_info.
6668         (priority): Adjust to work with selective scheduling.  Process the
6669         corner case when all dependencies don't contribute to priority.
6670         (rank_for_schedule): Use ds_weak instead of dep_weak.
6671         (advance_state): New function.  Move logic from ...
6672         (advance_one_cycle): ... here.
6673         (add_to_note_list, concat_note_lists): New functions.
6674         (rm_other_notes): Make static.  Adjust for selective scheduling.
6675         (remove_notes, restore_other_notes): New functions.
6676         (move_insn): Add two arguments.  Update assert.  Don't call
6677         reemit_notes.
6678         (choose_ready): Remove lookahead variable, use dfa_lookahead.
6679         Remove more_issue, max_points.  Move the code to initialize
6680         max_lookahead_tries to max_issue.
6681         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
6682         ready.  Adjust use of move_insn.  Call restore_other_notes.
6683         (luid): Remove.
6684         (sched_init, sched_finish): Move Haifa-specific initialization/
6685         finalization to ...
6686         (haifa_sched_init, haifa_sched_finish): ... respectively.
6687         New functions.
6688         (setup_sched_dump): New function.
6689         (haifa_init_only_bb): New static function.
6690         (haifa_speculate_insn): New static function.
6691         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
6692         (extend_ready, extend_all): Remove.
6693         (sched_extend_ready_list, sched_finish_ready_list): New functions.
6694         (create_check_block_twin, add_to_speculative_block): Use
6695         haifa_insns_init instead of extend_global.  Update to use new
6696         initialization functions.  Change parameter.  Factor out code from
6697         create_check_block_twin to ...
6698         (sched_create_recovery_edges) ... this new function.
6699         (add_block): Remove.
6700         (sched_scan_info): New.
6701         (extend_bb): Use sched_scan_info.
6702         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
6703         static functions for walking through scheduling region.
6704         (sched_luids): New vector variable to replace uid_to_luid.
6705         (luids_extend_insn): New function.
6706         (sched_max_luid): New variable.
6707         (luids_init_insn): New function.
6708         (sched_init_luids, sched_finish_luids): New functions.
6709         (insn_luid): New debug function.
6710         (sched_extend_target): New function.
6711         (haifa_init_insn): New static function.
6712         (sched_init_only_bb): New hook.
6713         (sched_split_block): New hook.
6714         (sched_split_block_1): New function.
6715         (sched_create_empty_bb): New hook.
6716         (sched_create_empty_bb_1): New function.
6717         (common_sched_info, ready): New global variables.
6718         (current_sched_info_var): Remove.
6719         (move_block_after_check): Use common_sched_info.
6720         (haifa_luid_for_non_insn): New static function.
6721         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
6722         (increase_insn_priority): New.
6723         * modulo-sched.c: (issue_rate): Remove static declaration.
6724         (sms_sched_info): Change type to haifa_sched_info.
6725         (sms_sched_deps_info, sms_common_sched_info): New variables.
6726         (setup_sched_infos): New.
6727         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
6728         Do not call regstat_free_calls_crossed.
6729         (sms_print_insn): Use const_rtx.
6730         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
6731         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
6732         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
6733         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
6734         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
6735         current_sched_info to use it.
6736         (enum reg_pending_barrier_mode): Move to sched-int.h.
6737         (h_d_i_d): New variable. Initialize to NULL.
6738         ({true, output, anti, spec, forward}_dependency_cache): Initialize
6739         to NULL.
6740         (estimate_dep_weak): Remove static declaration.
6741         (sched_has_condition_p): New function.  Adjust users of
6742         sched_get_condition to use it instead.
6743         (conditions_mutex_p): Add arguments indicating which conditions are
6744         reversed.  Use them.
6745         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
6746         argument to indicate whether returned condition is reversed.  Do not
6747         generate new rtx when condition should be reversed; indicate it by
6748         setting new argument instead.
6749         (add_dependence_list_and_free): Add deps parameter.
6750         Update all users.  Do not free dependence list when
6751         deps context is readonly.
6752         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
6753         contexts.
6754         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
6755         (remove_from_deps): New. Use the above functions.
6756         (cur_insn, can_start_lhs_rhs_p): New static variables.
6757         (add_or_update_back_dep_1): Initialize present_dep_type.
6758         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
6759         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
6760         haifa_note_dep): New functions implementing dependence hooks for
6761         the Haifa scheduler.
6762         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
6763         note_dep): New functions.
6764         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
6765         functions.
6766         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
6767         (free_deps): Initialize deps->reg_last.
6768         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
6769         sched_analyze_insn): Update to use dependency hooks infrastructure
6770         and readonly contexts.
6771         (deps_analyze_insn): New function.  Move part of logic from ...
6772         (sched_analyze): ... here.  Also move some logic to ...
6773         (deps_start_bb): ... here.  New function.
6774         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
6775         sel_sched_p.
6776         (sched_deps_init): New function.  Move code from ...
6777         (init_dependency_caches): ... here.  Remove.
6778         (init_deps_data_vector): New.
6779         (sched_deps_finish): New function.  Move code from ...
6780         (free_dependency_caches): ... here.  Remove.
6781         (init_deps_global, finish_deps_global): Adjust for use with
6782         selective scheduling.
6783         (get_dep_weak): Move logic to ...
6784         (get_dep_weak_1): New function.
6785         (ds_merge): Move logic to ...
6786         (ds_merge_1): New static function.
6787         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
6788         (ds_get_max_dep_weak): New function.
6789         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
6790         (n_insns): Rename to rgn_n_insns.
6791         (debug_ebb_dependencies): New function.
6792         (init_ready_list): Use it.
6793         (begin_schedule_ready): Use sched_init_only_bb.
6794         (ebb_print_insn): Indicate when an insn starts a new cycle.
6795         (contributes_to_priority, compute_jump_reg_dependencies,
6796         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
6797         (add_block1): Remove to ebb_add_block.
6798         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
6799         (schedule_ebb): Initialize them.  Use remove_notes instead of
6800         rm_other_notes.  Use haifa_local_init/finish.
6801         (schedule_ebbs): Use haifa_sched_init/finish.
6802         * sched-int.h: Include vecprim.h, remove rtl.h.
6803         (struct ready_list): Delete declaration.
6804         (sched_verbose_param, enum sched_pass_id_t,
6805         bb_vec_t, insn_vec_t, rtx_vec_t): New.
6806         (struct sched_scan_info_def): New structure.
6807         (sched_scan_info, sched_scan, sched_init_bbs,
6808         sched_init_luids, sched_finish_luids, sched_extend_target,
6809         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
6810         (struct common_sched_info_def): New.
6811         (common_sched_info, haifa_common_sched_info,
6812         sched_emulate_haifa_p): Declare.
6813         (sel_sched_p): New.
6814         (sched_luids): Declare.
6815         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
6816         (sched_max_luid, insn_luid): Declare.
6817         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
6818         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
6819         print_insn, print_pattern, print_value, haifa_classify_insn,
6820         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
6821         setup_sched_dump, sched_init, sched_finish,
6822         sel_insn_is_speculation_check): Export.
6823         (struct ready_list): Move from haifa-sched.c.
6824         (ready_try, ready, max_issue): Export.
6825         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
6826         sched_init_only_bb, sched_split_block, sched_split_block_1,
6827         sched_create_empty_bb, sched_create_empty_bb_1,
6828         sched_create_recovery_block, sched_create_recovery_edges): Export.
6829         (enum reg_pending_barrier_mode): Export.
6830         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
6831         (deps_t): New.
6832         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
6833         print_insn field.  Move add_block and fix_recovery_cfg to
6834         common_sched_info_def.  Move compute_jump_reg_dependencies,
6835         use_cselib  ...
6836         (struct sched_deps_info_def): ... this new structure.
6837         (sched_deps_info): Declare.
6838         (struct spec_info_def): Remove weakness_cutoff, add
6839         data_weakness_cutoff and control_weakness_cutoff.
6840         (spec_info): Declare.
6841         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
6842         dep_count field.
6843         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
6844         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
6845         (current_sched_info): Change type to struct haifa_sched_info.
6846         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
6847         (h_d_i_d): New variable.
6848         (HDID): New accessor macro.
6849         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
6850         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
6851         and HDID.
6852         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
6853         (enum SCHED_FLAGS): Update for selective scheduler.
6854         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
6855         (init_dependency_caches, free_dependency_caches): Delete declarations.
6856         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
6857         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
6858         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
6859         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
6860         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
6861         ds_to_dt): Export.
6862         (rm_other_notes): Delete declaration.
6863         (schedule_block): Remove one argument.
6864         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
6865         ready_element, ready_lastpos, sched_extend_ready_list,
6866         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
6867         concat_note_lists): Export.
6868         (struct region): Move from sched-rgn.h.
6869         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6870         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6871         BLOCK_TO_BB, CONTAINING_RGN): Export.
6872         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
6873         (current_nr_blocks, current_blocks, target_bb): Likewise.
6874         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
6875         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
6876         sched_rgn_local_init, extend_regions,
6877         rgn_make_new_region_out_of_new_block, compute_priorities,
6878         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
6879         extend_rgns, deps_join rgn_setup_common_sched_info,
6880         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
6881         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
6882         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
6883         increase_insn_priority): Likewise.
6884         * sched-rgn.c: Include sel-sched.h.
6885         (ref_counts): New static variable.  Use it ...
6886         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
6887         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
6888         (sched_is_disabled_for_current_region_p): Delete static declaration.
6889         (struct region): Move to sched-int.h.
6890         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6891         ebb_head): Define and initialize.
6892         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6893         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
6894         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
6895         sched-int.h.
6896         (find_single_block_region): Add new argument to indicate that EBB
6897         regions should be constructed.
6898         (debug_live): Delete declaration.
6899         (current_nr_blocks, current_blocks, target_bb):
6900         Remove static qualifiers.
6901         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
6902         declaration.
6903         (init_regions): Delete declaration.
6904         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
6905         rgn_estimate_number_of_insns): New.
6906         (too_large): Use estimate_number_of_insns.
6907         (haifa_find_rgns): New. Move the code from ...
6908         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
6909         (free_trg_info): New.
6910         (compute_trg_info): Allocate candidate tables here instead of ...
6911         (init_ready_list): ... here.
6912         (rgn_print_insn): Use const_rtx.
6913         (contributes_to_priority, extend_regions): Delete static declaration.
6914         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
6915         (add_block1): Rename to rgn_add_block.
6916         (debug_rgn_dependencies): Delete static qualifier.
6917         (new_ready): Use sched_deps_info.  Simplify.
6918         (rgn_common_sched_info, rgn_const_sched_deps_info,
6919         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
6920         New.
6921         (region_sched_info): Rename to rgn_const_sched_info.
6922         (deps_join): New, extracted from ...
6923         (propagate_deps): ... here.
6924         (compute_block_dependences, debug_dependencies): Update for selective
6925         scheduling.
6926         (free_rgn_deps, compute_priorities): New functions.
6927         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
6928         sched_rgn_compute_dependencies): New functions.
6929         (schedule_region): Use them.
6930         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
6931         rgn_setup_common_sched_info, rgn_setup_sched_infos):
6932         New functions.
6933         (schedule_insns): Call new functions that were split out.
6934         (rgn_make_new_region_out_of_new_block): New.
6935         (get_rgn_sched_max_insns_priority): New.
6936         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
6937         scheduling when appropriate.
6938         * sched-vis.c: Include insn-attr.h.
6939         (print_value, print_pattern): Make global.
6940         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
6941         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
6942         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
6943         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
6944         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
6945         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
6946         hooks.  Initialize them to 0.
6947         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
6948         * target.h (struct gcc_target): Add them.  Rename gen_check field to
6949         gen_spec_check.
6950         * flags.h (sel_sched_switch_set): Declare.
6951         * opts.c (sel_sched_switch_set): New variable.
6952         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
6953         pipelining is disabled from command line.
6954         (common_handle_option): Record whether selective scheduling is
6955         requested from command line.
6956         * doc/invoke.texi: Document new flags and parameters.
6957         * doc/tm.texi: Document new target hooks.
6958         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
6959         ia64_gen_check.
6960         (dfa_state_size): Do not declare locally.
6961         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
6962         * config/rs6000/rs6000.c (rs6000_init_sched_context,
6963         rs6000_alloc_sched_context, rs6000_set_sched_context,
6964         rs6000_free_sched_context): New functions.
6965         (struct _rs6000_sched_context): New.
6966         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
6967         scheduling.
6968         (rs6000_sched_finish): Do not run for selective scheduling.
6969
6970 2008-08-31  Jan Hubicka  <jh@suse.cz>
6971
6972         * frv.c (frv_rtx_costs): Update forward declaration.
6973         * spu.c (spu_rtx_costs): Likewise.
6974         * pdp11.c: Include df.h
6975         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
6976         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
6977         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
6978         * iq2000.c (iq2000_address_cost): Add speed argument.
6979         (iq2000_rtx_costs): Likewise.
6980         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
6981         update call of mn10300_address_cost.
6982         * mcore.c: Include df.h
6983         (mcore_rtx_costs): Update prototype.
6984         * score3.c: Include df.h
6985         (score3_rtx_costs): Remove speed argument.
6986         * score7.c: Include df.h
6987         (score7_address_cost): Remove speed argument.
6988         * score-protos.h (score_address_cost): Update prototype.
6989         * score.c: Include df.h
6990         (score_rtx_costs): Update call of costs functions.
6991         * v850.c (v850_rtx_costs): Add bool argument.
6992
6993 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
6994
6995         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
6996
6997 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6998
6999         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
7000         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
7001
7002 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7003
7004         * mkmap-flat.awk: Add option pe_dll.
7005         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
7006         * config/i386/t-cygwin (SHLIB_LC): Add.
7007         * config/i386/t-mingw32 (SHLIB_LC): Add.
7008         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
7009         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
7010         (LINK_SPEC): Support libgcc_s.
7011         (LIBGCC_SPEC): Support libgcc_s.
7012         (LIBGCC_SONAME): New.
7013
7014 2008-08-31  Jan Hubicka  <jh@suse.cz>
7015
7016         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
7017         mistakely had old version of patch.
7018
7019         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
7020         (ipcp_estimate_growth): New.
7021         (ipcp_insert_stage): Use ipcp_estimate_growth.
7022         * profile.c (branch_prob): When reading failed, do not consider
7023         profile as read.
7024
7025 2008-08-31  Jan Hubicka  <jh@suse.cz>
7026
7027         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
7028         loop is optimized for speed.
7029
7030 2008-08-31  Richard Guenther  <rguenther@suse.de>
7031
7032         PR middle-end/37289
7033         * fold-const.c (fold_binary): Retain conversions in folding
7034         ~A + 1 to -A.
7035
7036 2008-08-31  Jan Hubicka  <jh@suse.cz>
7037
7038         * postreload-gcse.c (eliminate_partially_redundant_loads):
7039         Use optimize_bb_for_size_p.
7040         * predict.c (maybe_hot_frequency_p): Make inline.
7041         (maybe_hot_count_p): Break out from ...
7042         (maybe_hot_bb_p): ... this one.
7043         (maybe_hot_edge_p): Simplify.
7044         * basic-block.h (probably_cold_bb_p): Remove.
7045
7046 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7047
7048         PR target/37168
7049         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
7050         prototype.
7051         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
7052         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
7053         Also split V4SFmode.
7054         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
7055         vector float modes.
7056
7057 2008-08-31  Jan Hubicka  <jh@suse.cz>
7058
7059         * predict.c (PROB_VERY_LIKELY): Make small enough so things
7060         become cold.
7061         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
7062
7063 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7064
7065         PR debug/37287
7066         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
7067         add source coords.
7068
7069         * dwarf2out.c (native_encode_initializer): Subtract min_index for
7070         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
7071
7072 2008-08-31  Jan Hubicka  <jh@suse.cz>
7073
7074         * sparc.h (BRANCH_COST): Fix macro definition.
7075         * avr.c (avr_operand_rtx_cost): Add speed argument.
7076         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
7077
7078 2008-08-31  Richard Guenther  <rguenther@suse.de>
7079
7080         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
7081         types instead of operands.  Re-instantiate verifying of
7082         binary expression operands.
7083
7084 2008-08-30  Jan Hubicka  <jh@suse.cz>
7085
7086         * fwprop.c (should_replace_address): Add speed attribute.
7087         (PR_OPTIMIZE_FOR_SPEED): New flag.
7088         (propagate_rtx_1): Use it.
7089         (propagate_rtx): Set it.
7090         (try_fwprop_subst): Update call of rtx_costs.
7091         (forward_propagate_and_simplify): LIkewise.
7092         * hooks.c (hook_int_rtx_bool_0): New
7093         (hook_bool_rtx_int_int_intp_false): Replace by ...
7094         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7095         * hooks.h (hook_int_rtx_bool_0): New
7096         (hook_bool_rtx_int_int_intp_false): Replace by ...
7097         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7098         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
7099         (prepare_cmp_insn): UPdate call of rtx_cost.
7100         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
7101         (reload_cse_simplify_operands): Update call of rtx_cost.
7102         (reload_cse_move2add): call of rtx_cost.
7103         * target.h (struct gcc_target): Update rtx_costs and address_costs.
7104         * rtlanal.c (rtx_cost): Add speed argument.
7105         (address_cost): Add speed argument
7106         (default_address_cost): Likewise.
7107         (insn_rtx_cost): Likewise.
7108         * cfgloopanal.c (seq_cost): Add speed argument.
7109         (target_reg_cost, target_spill_cost): Turn to array.
7110         (init_set_costs): Update for speed.
7111         (estimate_reg_pressure_cost): Add speed argument.
7112         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
7113         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
7114         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
7115         (seq_cost): Add speed argument.
7116         (computation_cost): Add speed arugment.
7117         (add_cost, multiply_by_const, get_address_cost): add speed argument.
7118         (force_expr_to_var_cost): Update for profile info.
7119         (force_var_cost): Likewise.
7120         (split_address_cost): Likewise.
7121         (ptr_difference_cost): Likewise.
7122         (difference_cost): Likewise.
7123         (get_computation_cost_at): Likewise.
7124         (determine_iv_cost): Likewise.
7125         (ivopts_global_cost_for_size): Likewise.
7126         (rewrite_use_address): Likewise.
7127         (tree_ssa_iv_optimize_loop): Initialize speed field.
7128         * cse.c (optimize_this_for_speed_p): New static var.
7129         (notreg_cost): Update call of rtx_cost.
7130         (cse_extended_basic_block): set optimize_this_for_speed_p.
7131         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
7132         (noce_try_cmove_arith): Likewise.
7133         (noce_try_sign_mask): LIkewise.
7134         * expr.c (compress_float_constant): Update rtx_cost calls.
7135         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
7136         argument.
7137         (addr_to_parts): Likewise.
7138         (create_mem_ref): Likewise.
7139         * dse.c (find_shift_sequence): Add speed argument.
7140         (replace_read): Update call.
7141         * calls.c (precompute_register_parameters): Update call of rtx_cost.
7142         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
7143         * neg_cost, shift_cost, shiftadd_cost,
7144         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
7145         mul_highpart_cost): Increase dimension.
7146         (init_expmed): Initialize for both size and speed.
7147         (expand_shift): Use profile.
7148         (synth_mult): Use profile.
7149         (choose_mult_variant): Use profile.
7150         (expand_mult): Use profile.
7151         (expand_mult_highpart_optab): Use profile.
7152         (expand_mult_highpart): Use profile.
7153         (expand_smod_pow2): Use profile.
7154         (expand_divmod): Use profile.
7155         * simplify-rtx.c (simplify_binary_operation_1): Update call of
7156         rtx_cost.
7157         * loop-invariant.c (create_new_invariant): Use profile.
7158         (gain_for_invariant): Add speed parameter.
7159         (best_gain_for_invariant): Likewise.
7160         (find_invariants_to_move): Likewise.
7161         (move_single_loop_invariants): Set it.
7162         * target-def.h (TARGET_RTX_COSTS): Use hook.
7163         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
7164         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
7165         * output.h (default_address_cost): Update prototype.
7166         * combine.c (optimize_this_for_speed_p): New static var.
7167         (combine_validate_cost): Update call of rtx_cost.
7168         (combine_instructions): Set optimize_this_for_speed_p.
7169         (expand_compound_operation): Update call of rtx_cost.
7170         (make_extraction):Update call of rtx_cost.
7171         (force_to_mode):Update call of rtx_cost.
7172         (distribute_and_simplify_rtx):Update call of rtx_cost.
7173         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
7174         (estimate_reg_pressure_cost): Update prototype.
7175         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
7176         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
7177         Remove.
7178         * config/alpha/alpha.c (alpha_rtx_costs): Update.
7179         (alpha_rtx_costs): Update.
7180         * config/frv/frv.c (frv_rtx_costs): Update.
7181         * config/s390/s390.c (s390_rtx_costs): Update.
7182         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
7183         (m32c_rtx_costs): Update.
7184         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
7185         (spu_rtx_costs): Update.
7186         * config/sparc/sparc.c (sparc_rtx_costs): Update.
7187         * config/m32r/m32r.c (m32r_rtx_costs): Update.
7188         * config/i386/i386.c (:ix86_address_cost): Update.
7189         (ix86_rtx_costs): Update.
7190         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
7191         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
7192         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
7193         * config/crx/crx.c (crx_address_cost): Update.
7194         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
7195         * config/stormy16/stormy16.c
7196         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
7197         * config/m68hc11/m68hc11.c
7198         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
7199         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
7200         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
7201         Update.
7202         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
7203         Update
7204         * config/ia64/ia64.c (ia64_rtx_costs): Update.
7205         * config/m68k/m68k.c (m68k_rtx_costs): Update.
7206         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
7207         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
7208         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
7209         (mcore_rtx_costs): update.
7210         * config/score/score3.c (score3_rtx_costs): Update.
7211         * config/score/score7.c (score7_rtx_costs): Update.
7212         * config/score/score3.h (score3_rtx_costs):Update.
7213         * config/score/score7.h (score7_rtx_costs): Update.
7214         * config/score/score.c (score_rtx_costs): Update.
7215         * config/arm/arm.c (arm_address_cost): Update.
7216         (arm_rtx_costs_1): Update.
7217         (arm_rtx_costs_1): Update.
7218         (arm_size_rtx_costs): Update.
7219         (arm_size_rtx_costs): Update.
7220         (arm_size_rtx_costs): Update.
7221         (arm_xscale_rtx_costs): Update.
7222         (arm_thumb_address_cost): Update.
7223         * config/pa/pa.c (hppa_address_cost): Update.
7224         * config/mips/mips.c (mips_rtx_costs): Update.
7225         * config/vax/vax.c (vax_address_cost): Update.
7226         * config/h8300/h8300.c (h8300_shift_costs): Update.
7227         (h8300_rtx_costs): Update.
7228         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
7229         (v850_rtx_costs): Update.
7230         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
7231         * config/bfin/bfin.c
7232         (bfin_address_cost): Update.
7233         (bfin_rtx_costs): Update.
7234         * stmt.c (lshift_cheap_p): Update.
7235
7236 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7237
7238         PR middle-end/36444
7239         * expmed.c (extract_bit_field_1): Check the mode size to make
7240         sure the vector modes have the same size.
7241
7242 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
7243
7244         * dojump.c (top level): Include basic-block.h to declare
7245         optimize_insn_for_speed_p
7246
7247         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
7248
7249         * opts.h (CL_SAVE): New option class for marking options that are
7250         target specific options usable in the target attribute.
7251         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
7252
7253         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
7254         can easily find the target specific options that are safe to use
7255         in the attribute or pragma.
7256
7257         * attribs.c (decl_attributes): Change #pragma GCC option to
7258         #pragma GCC target, and attribute((option(...))) to
7259         attribute((target(...))).
7260
7261         * doc/extend.texi (target attribute): Change from option
7262         attribute.  Delete push/pop/reset.
7263         (#pragma GCC target): Change from #pragma GCC option.  Delete
7264         push/pop/reset.
7265         (#pragma GCC push_options): Document new pragma.
7266         (#pragma GCC pop_options): Document new pragma.
7267         (#pragma GCC reset_options): Document new pragma.
7268
7269         * targhooks.c (default_target_option_valid_attribute_p): Add
7270         warning about port not supporting target attributes.
7271         (default_target_option_pragma_parse): New function, warn about
7272         #pragma GCC target not being supported.
7273
7274         * targhooks.h (default_target_option_pragma_parse): Add
7275         declaration.
7276
7277         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
7278         TI_CURRENT_OPTION_PRAGMA.
7279         (current_target_pragma): Rename from current_option_pragma.
7280
7281         * target.h: (struct target_option): Delete booleans for changing
7282         the optimization level on hot/cold functions.  Change signature of
7283         pragma_parse hook to take a second tree.
7284
7285         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
7286
7287         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
7288         that the declaration is done at global scope.
7289
7290         * langhooks.c (add_builtin_function_common): Move most of the code
7291         from add_builtin_function here, calling the hook passed in.
7292         (add_builtin_function): Call add_builtin_function_common with
7293         standard builtin hook.
7294         (add_builtin_function_ext_scope): New function to add builtins to
7295         global scope.
7296
7297         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
7298         hook.
7299         (add_builtin_function_ext_scope): Add declaration.
7300
7301         * c-pragma.c (handle_pragma_target): Rename from
7302         handle_pragma_option, #pragma GCC option is now #pragma GCC
7303         target.  Move warning about port not supporting target options to
7304         default pragma parse hook.  Remove push/pop/reset from this
7305         pragma.
7306         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
7307         (option_stack): Delete static variable.
7308         (optimize_stack): Ditto.
7309         (optons_stack): New stack of saved target and optimization
7310         options.
7311         (handle_pragma_push_options): New function to handle pushing both
7312         target and optimization options.
7313         (handle_pragma_pop_options): New function to handle popping both
7314         target and optimization options.
7315         (handle_pragma_reset_options): New function to handle resetting
7316         both target and optimization options to their initial state.
7317         (init_pragma): Rename handle_pragma_option to
7318         handle_pragma_target.  Add support for push_options, pop_options,
7319         and reset_options pragmas.
7320
7321         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
7322         default_target_option_pragma_parse.
7323         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
7324         default_target_option_valid_attribute_p.
7325         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7326         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7327         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
7328         optimization level on hot/cold functions.
7329
7330         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
7331         if the caller and callee have different optimization levels.
7332
7333         * c-common.c (handle_target_attribute): Rename from
7334         handle_option_attribute, attribute((option(...))) is now
7335         attribute((target(...))).  Move warning if the port does not
7336         support target attributes to the default hook.
7337         (handle_hot_attribute): Delete code to change the optimization
7338         level of hot functions.
7339         (handle_cold_attribute): Ditto.
7340
7341         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
7342         argument that is the binary tree options to use if there are no
7343         arguments.  Call ix86_valid_target_attribute_tree instead of
7344         ix86_valid_option_attribute_tree.
7345         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
7346         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
7347         ix86_pragma_option_parse.
7348
7349         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
7350         Rename from ix86_valid_option_attribute_tree.
7351
7352         * config/i386/i386.c (ix86_add_new_builtins): New function to add
7353         new builtins when the ISA changes.
7354         (ix86_valid_target_attribute_tree): Rename from
7355         ix86_valid_option_attribute_tree.  Change callers.  If the
7356         function specified optimization options, use those as the starting
7357         point before setting up the target attributes.  If the
7358         optimization options were changed in the course of setting the
7359         target attributes, record the new optimization options.
7360         (ix86_valid_target_attribute_tree_inner_p): Rename from
7361         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
7362         ix86_add_new_builtins if the ISA changed.
7363         (ix86_valid_target_attribute_p): Rename from
7364         ix86_valid_option_attribute_p.  Change callers.
7365         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
7366         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
7367         as delayed builtin functions.
7368         (struct builtin_isa): New structure to record builtin functions
7369         that should be delayed until the ISA for that function is used.
7370         (ix86_builtins_isa): Change from int to struct to track builtin
7371         functions we want to declare at some point.
7372         (def_builtin): If the front end can delay defining the builtin
7373         functions, don't create builtins for ISAs not part of the default
7374         options.
7375         (def_builtin_const): Ditto.
7376         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
7377         __builtin_ia32_pcmov_v2di to be different builtin functions.
7378         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
7379         a structure instead of an int.
7380         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
7381         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
7382         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7383         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7384
7385         * config/ia64/ia64.h
7386         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7387         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7388
7389         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
7390         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
7391         (LANG_HOOKS_INITIALIZER): Add
7392         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
7393
7394 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
7395
7396         PR target/37270
7397         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
7398         the reload address with the index register for SFmode
7399         access with a displacement.
7400
7401 2008-08-30  Jan Hubicka  <jh@suse.cz>
7402
7403         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
7404         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
7405         * dojump.c (do_jump): Likewise.
7406         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
7407         (note-if_info): Add BRANCH_COST.
7408         (noce_try_store_flag_constants, noce_try_addcc,
7409         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
7410         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
7411         find_if_case_2): Use computed branch cost.
7412         * expr.h (BRANCH_COST): Update default.
7413         * predict.c (predictable_edge_p): New function.
7414         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
7415         Update BRANCH_COST call.
7416         * basic-block.h (predictable_edge_p): Declare.
7417         * config/alpha/alpha.h (BRANCH_COST): Update.
7418         * config/frv/frv.h (BRANCH_COST): Update.
7419         * config/s390/s390.h (BRANCH_COST): Update.
7420         * config/spu/spu.h (BRANCH_COST): Update.
7421         * config/sparc/sparc.h (BRANCH_COST): Update.
7422         * config/m32r/m32r.h (BRANCH_COST): Update.
7423         * config/i386/i386.h (BRANCH_COST): Update.
7424         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
7425         BRANCH_COST.
7426         * config/sh/sh.h (BRANCH_COST): Update.
7427         * config/pdp11/pdp11.h (BRANCH_COST): Update.
7428         * config/avr/avr.h (BRANCH_COST): Update.
7429         * config/crx/crx.h (BRANCH_COST): Update.
7430         * config/xtensa/xtensa.h (BRANCH_COST): Update.
7431         * config/stormy16/stormy16.h (BRANCH_COST): Update.
7432         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
7433         * config/iq2000/iq2000.h (BRANCH_COST): Update.
7434         * config/ia64/ia64.h (BRANCH_COST): Update.
7435         * config/rs6000/rs6000.h (BRANCH_COST): Update.
7436         * config/arc/arc.h (BRANCH_COST): Update.
7437         * config/score/score.h (BRANCH_COST): Update.
7438         * config/arm/arm.h (BRANCH_COST): Update.
7439         * config/pa/pa.h (BRANCH_COST): Update.
7440         * config/mips/mips.h (BRANCH_COST): Update.
7441         * config/vax/vax.h (BRANCH_COST): Update.
7442         * config/h8300/h8300.h (BRANCH_COST): Update.
7443         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
7444         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
7445         * doc/tm.texi (BRANCH_COST): Update.
7446
7447 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
7448
7449         PR target/37283
7450         * config/arm/arm.c (arm_optimization_options): Set
7451         flag_section_anchors to 2 instead of 1 to distinguish it from
7452         -fsection-anchors given explicitely on the command line.
7453
7454 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
7455
7456         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
7457         final insn of a split.
7458
7459 2008-08-30  Jan Hubicka  <jh@suse.cz>
7460
7461         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
7462         optimized for speed.
7463         * final.c (compute_alignments): Use optimize_bb_for_size_p.
7464         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
7465         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
7466         flag_gcse_after_reload_set): New static vars.
7467         (common_handle_option): Enable those flags for profile-use.
7468         (decode_options): Remove optimize_size flags that are handled
7469         on higher granuality.
7470         * tree-vectorizer.c (vectorize_loops): Use
7471         optimize_loop_nest_for_speed_p.
7472         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
7473         * tree-predcom.c (tree_predictive_commoning): Use
7474         optimize_loop_for_speed_p.
7475         * varasm.c (assemble_start_function): Use
7476         optimize_function_for_speed_p.
7477         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
7478         * predict.c (optimize_loop_for_speed_p): Fix walk.
7479
7480 2008-08-30  Jan Hubicka  <jh@suse.cz>
7481
7482         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
7483         functions.
7484         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
7485         profile presence locally.
7486
7487 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
7488
7489         PR bootstrap/37086
7490         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
7491         versions before 4.0.
7492
7493 2008-08-29  Jan Hubicka  <jh@suse.cz>
7494
7495         * tree-inline.c (insert_init_stmt): Insert sequence even when
7496         not in SSA form.
7497
7498 2008-08-29  Jeff Law  <law@redhat.com>
7499
7500         * mn10300.c (mn10300_secondary_reload_class): We need secondary
7501         reloads for AM33-2 if IN is a pseudo with an equivalent memory
7502         location and class is an FP register.
7503
7504 2008-08-29  Jan Hubicka  <jh@suse.cz>
7505
7506         * see.c (see_merge_one_def_extension): Silence used uninitialized
7507         warning.
7508         * matrix-reorg.c (check_allocation_function): Likewise.
7509         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
7510
7511 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
7512
7513         PR c/37261
7514         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
7515         compute new & and | in type rather than TREE_TYPE (arg0).
7516
7517         * dwarf2out.c (fortran_common): Update comment.
7518         (gen_variable_die): Swap com_die and var_die variables in Fortran
7519         COMMON block handling code.
7520
7521         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
7522
7523         * dwarf2out.c (gen_const_die): New function.
7524         (size_of_die, value_format, output_die): Output larger
7525         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
7526         (native_encode_initializer): New function.
7527         (tree_add_const_value_attribute): Call it.
7528         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
7529
7530         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
7531         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
7532         TREE_THIS_VOLATILE to add_type_attribute.
7533
7534         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
7535         types.
7536         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
7537         types.
7538
7539         * dwarf2out.c (loc_by_reference): New function.
7540         (add_location_or_const_value_attribute): Use it.
7541
7542         PR fortran/23057
7543         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
7544         as DW_TAG_variable children of DW_TAG_common_block rather than
7545         DW_TAG_member children.  Put DW_AT_external to individual
7546         DW_TAG_variable DIEs, not to DW_TAG_common_block.
7547
7548         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
7549         loc_descriptor_from_tree_1.
7550
7551         PR fortran/29635
7552         PR fortran/23057
7553         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
7554         arguments to imported_module_or_decl.
7555         (debug_nothing_tree_tree): Removed.
7556         (debug_nothing_tree_tree_tree_bool): New prototype.
7557         * debug.c (do_nothing_debug_hooks): Adjust.
7558         (debug_nothing_tree_tree): Removed.
7559         (debug_nothing_tree_tree_tree_bool): New function.
7560         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
7561         (gen_variable_die): Put all common vars for the
7562         same COMMON block under one DW_TAG_common_block.
7563         (declare_in_namespace): Return new context_die, for Fortran
7564         return the module DIE instead of adding extra declarations into
7565         the namespace.
7566         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
7567         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
7568         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
7569         DW_AT_declaration.
7570         (dwarf2out_global_decl): Don't skip Fortran global vars.
7571         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
7572         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
7573         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
7574         DW_TAG_imported_declaration as child of previous
7575         DW_TAG_imported_module.
7576         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
7577         * sdbout.c (sdb_debug_hooks): Likewise.
7578         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
7579
7580 2008-08-29  Jan Hubicka  <jh@suse.cz>
7581
7582         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
7583
7584         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
7585         * ipa-cp.c (n_cloning_candidates): New static variable.
7586         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
7587         (ipcp_print_all_lattices): Improve debug output.
7588         (ipcp_cloning_candidate_p): New function.
7589         (ipcp_initialize_node_lattices): Use it.
7590         (ipcp_init_stage): Do only analyzis here; prettier debug output.
7591         (ipcp_propagate_stage): Prettier debug output.
7592         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
7593         (ipcp_print_all_structures): Remove.
7594         (ipcp_need_redirect_p): Test !n_cloning_candidates.
7595         (ipcp_insert_stage): Prettier debug output; call
7596         cgraph_remove_unreachable_nodes before propagating.
7597         (pass_ipa_cp): Schedule function removal pass.
7598         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
7599         debug output.
7600         (cgraph_maybe_hot_edge_p): Move to ...
7601         * predict.c (cgraph_maybe_hot_edge_p) ... here.
7602         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
7603         (common_handle_option): Set them; enable ipa-cp when profiling.
7604         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
7605         (ipa_print_all_jump_functions): Likewise.
7606         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
7607         (ipa_print_node_params, ipa_print_all_params): New.
7608         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
7609         ipa_print_all_param_flags): Remove.
7610         (ipa_print_node_params, ipa_print_all_params): New.
7611
7612 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
7613
7614         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
7615         change from 2008-04-03.
7616         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
7617
7618 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7619
7620         PR rtl-opt/37251
7621         * ira-color.c (push_allocnos_to_stack): Truncate
7622         removed_splay_allocno_vec.
7623
7624 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7625
7626         PR rtl-opt/37243
7627         * ira-color (ira_fast_allocation): Don't assign hard registers to
7628         global allocnos.
7629
7630 2008-08-29  Jan Hubicka  <jh@suse.cz>
7631
7632         PR middle-end/37278
7633         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
7634         for cold internal loops.
7635
7636 2008-08-29  Richard Guenther  <rguenther@suse.de>
7637
7638         * tree-ssa-structalias.c (create_variable_info_for): Do not
7639         create fields for heap vars or vars with a noalias state.
7640         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
7641         from ESCAPED.
7642
7643 2008-08-29  Richard Guenther  <rguenther@suse.de>
7644
7645         * common.opt (ftree-store-ccp): Mark as preserved for
7646         backward compatibility.
7647         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
7648         * tree-pass.h (pass_store_ccp): Remove.
7649         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
7650         (first_vdef): Remove declaration.
7651         (get_value_loaded_by): Likewise.
7652         * tree-ssa-ccp.c (do_store_ccp): Remove.
7653         (get_default_value): Simplify as do_store_ccp is always false
7654         now.  Do not initialize mem_ref.
7655         (set_value_varying): Likewise.
7656         (canonicalize_float_value): Likewise.
7657         (set_lattice_value): Likewise.
7658         (likely_value): Likewise.
7659         (surely_varying_stmt_p): Likewise.
7660         (ccp_initialize): Likewise.
7661         (ccp_lattice_meet): Likewise.
7662         (ccp_visit_phi_node): Likewise.
7663         (ccp_fold): Likewise.
7664         (evaluate_stmt): Likewise.
7665         (visit_assignment): Likewise.
7666         (ccp_visit_stmt): Likewise.
7667         (execute_ssa_ccp): Fold into ...
7668         (do_ssa_ccp): ... this.
7669         (do_ssa_store_ccp): Remove.
7670         (gate_store_ccp): Likewise.
7671         (pass_store_ccp): Likewise.
7672         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
7673         initialize mem_ref.
7674         * tree-ssa-propagate.c (first_vdef): Remove.
7675         (get_value_loaded_by): Likewise.
7676         (replace_vuses_in): Likewise.
7677         (substitute_and_fold): Do not call replace_vuses_in.
7678         * opts.c (decode_options): Do not set flag_tree_store_ccp.
7679
7680 2008-08-29  Richard Guenther  <rguenther@suse.de>
7681
7682         PR middle-end/37236
7683         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
7684         PARAM_NOALIAS tags with is_heapvar.
7685         * tree-ssa-operands.c (access_can_touch_variable): Offset
7686         based tests do not apply for heapvars.  Fix offset test.
7687
7688 2008-08-29  Jan Hubicka  <jh@suse.cz>
7689
7690         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
7691         (-fipa-cp-clone): Enabled by default at -O3.
7692         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
7693         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
7694
7695 2008-08-29  Jan Hubicka  <jh@suse.cz>
7696
7697         * tree.c (build_function_type_skip_args,
7698         build_function_decl_skip_args): New functions.
7699         * tree.h (build_function_type_skip_args,
7700         build_function_decl_skip_args): Declare.
7701         * gimple.c (giple_copy_call_skip_args): New function.
7702         (giple_copy_call_skip_args): Declare.
7703
7704         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
7705         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
7706         (ipcp_node_modifiable_p): ... this one; use
7707         tree_versionable_function_p.
7708         (ipcp_create_replace_map): Improve debug output.
7709         (ipcp_need_redirect_p): Return false when not clonning.
7710         (ipcp_update_callgraph): Skip args.
7711         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
7712         skip args.
7713         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
7714         (save_inline_function_body): Update call of tree_function_versioning.
7715         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
7716         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
7717         argument.
7718         (tree_function_versioning): Likewise.
7719         * tree-inline.h (tree_function_versioning): Update prototype.
7720
7721 2008-08-29  Jan Hubicka  <jh@suse.cz>
7722
7723         * loop-unswitch.c (unswitch_single_loop): Use
7724         optimize_loop_for_speed_p.
7725         * tree-ssa-threadupdate.c (mark_threaded_blocks):
7726         Use optimize_function_for_size_p.
7727         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
7728         * postreload-gcse.c (eliminate_partially_redundant_load):
7729         Use optimize_bb_for_size_p.
7730         * value-prof.c (gimple_divmod_fixed_value_transform,
7731         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
7732         gimple_stringops_transform): Use optimize_bb_for_size_p.
7733         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
7734         * final.c (compute_alignments): Use optimize_function_for_size_p.
7735         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
7736         (fold_builtin_strcpy, fold_builtin_fputs): Use
7737         optimize_function_for_size_p.
7738         * fold-const.c (tree_swap_operands_p): Use
7739         optimize_function_for_size_p.
7740         * recog.c (relax_delay_slots): Likewise.
7741         * tree-ssa-math-opts.c (replace_reciprocal):
7742         Use optimize_bb_for_speed_p.
7743         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
7744         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
7745         optimize_function_for_size_p.
7746         (cgraph_decide_inlining_of_small_function): Use
7747         optimize_function_for_size_p.
7748         * global.c (find_reg): Use optimize_function_for_size_p.
7749         * opts.c (decode_options): Do not clear flag_tree_ch,
7750         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
7751         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
7752         work it out from profile.
7753         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
7754         optimize_loop_for_speed_p.
7755         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7756         Constify argument.
7757         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
7758         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
7759         * tree-eh.c (decide_copy_try_finally): Use
7760         optimize_function_for_size_p.
7761         * local-alloc.c (block_alloc): Pass BB pointer.
7762         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
7763         * gcse.c (gcse_main): Use optimize_function_for_size_p.
7764         * loop-unroll.c (decide_unrolling_and_peeling):
7765         Use optimize_loop_for_size_p.
7766         (decide_peel_completely): Likewise.
7767         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
7768         optimize_loop_for_size_p.
7769         (vect_enhance_data_refs_alignment): Likewise.
7770         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
7771         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
7772         Update call.
7773         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
7774         (try_crossjump_bb): Use optimize_bb_for_size_p.
7775         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
7776         optimize_loop_for_speed_p.
7777         * bb-reorder.c (find_traces_1_round): Likewise.
7778         (copy_bb): Use optimize_bb_for_speed_p.
7779         (duplicate_computed_gotos): Likewise.
7780         * basic-block.h (optimize_loop_nest_for_size_p,
7781         optimize_loop_nest_for_speed_p): New.
7782         * stmt.c (expand_case): Use optimize_insn_for_size_p.
7783
7784 2008-08-29  Tristan Gingold  <gingold@adacore.com>
7785
7786         * gcov.c (main): Call expandargv.
7787
7788 2008-08-29  Jan Hubicka  <jh@suse.cz>
7789
7790         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
7791         is not cold.
7792         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7793         Constify arguments.
7794         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
7795         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7796         Constify.
7797         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
7798
7799 2008-08-29  Jan Hubicka  <jh@suse.cz>
7800
7801         * tree-pass.h (pass_strip_predict_hints): Declare.
7802         * predict.c (strip_builtin_expect): Rename to ...
7803         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
7804         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
7805         (tree_estimate_probability): Do not strip builtin_expect.
7806         (pass_strip_predict_hints): New pass.
7807         * tree-inline.c (expand_call_inline): When inlining cold function,
7808         predict it as unlikely.
7809         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
7810
7811 2008-08-29  Richard Guenther  <rguenther@suse.de>
7812
7813         PR tree-optimization/37207
7814         * tree-vrp.c (extract_range_from_binary_expr): Also try
7815         to constant fold if only one of the operands is a constant.
7816
7817 2008-08-29  Nick Clifton  <nickc@redhat.com>
7818
7819         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
7820         the same way as SYMBOL_REFs.
7821
7822 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
7823
7824         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
7825
7826 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7827
7828         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
7829         * config/mips/mips.md (branch_likely): Remove const.  Fix
7830         comment formatting.
7831         (define_delay for type "branch"): Change to only apply for branch
7832         with likely variant.
7833         (define_delay for type "branch" and "branch_likely" no).  New delay
7834         definition.
7835         (equality_op): New code iterator.
7836         (bbv, bbinv): New code attributes.
7837         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
7838         patterns.
7839
7840 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7841             Andrew Pinski  <pinskia@gcc.gnu.org>
7842
7843         PR 18050
7844         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
7845
7846 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
7847
7848         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
7849         rule that a symbolic constant must be defined and >= 0 for the
7850         corresponding facility to be present at compile-time.
7851         * gthr-posix.c: Likewise.
7852
7853 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7854
7855         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
7856         * config/mips/mips.md (D): New mode attribute.
7857         (mulsi3, muldi3): Merge it into ...
7858         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
7859         (muldi3_mul3): New pattern.
7860         (mulsi3_mult3): Rename to mulsi3_mul3.
7861
7862 2008-08-28  Jan Hubicka  <jh@suse.cz>
7863
7864         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
7865         to fail.
7866         * predict.c (always_optimize_for_size_p): Rename to ...
7867         (optimize_function_for_size): ... this one; make extern.
7868         (optimize_function_for_speed_p): New.
7869         (optimize_bb_for_size_p, optimize_bb_for_size_p,
7870         optimize_edge_for_size_p,optimize_edge_for_size_p,
7871         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
7872         * basic-block.h (optimize_function_for_size_p,
7873         optimize_function_for_speed_p): Declare.
7874         * i386.md (optimize_size checks): Replace them by appropriate
7875         predicate.
7876         (standard_80387_constant_p, ix86_compute_frame_layout,
7877         ix86_expand_epilogue, ix86_decompose_address,
7878         print_operand, emit_i387_cw_initialization,
7879         inline_memory_move_cost, ix86_pad_returns,
7880         ix86_reorg): Replace optimize_size checks.
7881
7882 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
7883
7884         * rtl.h (simplify_subreg_regno): Declare.
7885         * rtlanal.c (simplify_subreg_regno): New function, split out from...
7886         * simplify-rtx.c (simplify_subreg): ...here.
7887         * reload.c (find_reloads): Use simplify_subreg_regno instead of
7888         subreg_offset_representable_p.
7889
7890 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7891
7892         PR c/30949
7893         * c-typeck.c (convert_for_assignment): Give a note describing what
7894         was passed and what was expected.
7895
7896 2008-08-28  Joey Ye  <joey.ye@intel.com>
7897
7898         * doc/extend.texi: Document AVX built-in functions.
7899         * doc/invoke.texi: Document -mavx.
7900
7901 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
7902             Joey Ye  <joey.ye@intel.com>
7903             Xuepeng Guo  <xuepeng.guo@intel.com>
7904
7905         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
7906
7907         * config/i386/cpuid.h (bit_FMA): New.
7908         (bit_XSAVE): Likewise.
7909         (bit_OSXSAVE): Likewise.
7910         (bit_AVX): Likewise.
7911
7912         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
7913         define.  Use ASM_OUTPUT_AVX_PREFIX.
7914
7915         * config/i386/gmmintrin.h: New.
7916
7917         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
7918         (OPTION_MASK_ISA_AVX_SET): New.
7919         (OPTION_MASK_ISA_FMA_SET): Likewise.
7920         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
7921         (OPTION_MASK_ISA_FMA_SET): Likewise.
7922         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
7923         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
7924         (pta_flags): Add PTA_AVX and PTA_FMA.
7925         (override_options): Handle PTA_AVX and PTA_FMA.
7926         (init_cumulative_args): Handle warn_avx.
7927         (classify_argument): Return 0 for COImode and OImode.  Return
7928         1 and X86_64_AVX_CLASS for 256bit vector types.
7929         (examine_argument): Handle X86_64_AVX_CLASS.
7930         (construct_container): Likewise.
7931         (function_arg_advance_32): Pass OImode and 256bit vector types
7932         in AVX register.
7933         (function_arg_advance_64): Take a new argument to indicate if a
7934         parameter is named.  Handle 256bit vector types.  Return
7935         immediately for unnamed 256bit vector mode parameters.
7936         (function_arg_advance): Updated.
7937         (function_arg_32): Add comments for TImode.  Handle OImode
7938         and 256bit vector types.
7939         (function_arg_64): Take a new argument to indicate if a
7940         parameter is named.  Handle 256bit vector types.  Return NULL
7941         for unnamed 256bit vector mode parameters.
7942         (function_arg): Updated.
7943         (setup_incoming_varargs_64): Support
7944         AVX encoding for *sse_prologue_save_insn.
7945         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
7946         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
7947         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
7948         enabled, otherwise return -3.
7949         (standard_sse_constant_opcode): Handle AVX and 256bit vector
7950         modes.
7951         (print_reg): Support AVX registers.  Handle 'x' and 't'.
7952         Handle 'd' to duplicate the operand.
7953         (print_operand): Likewise.  Also support AVX vector compare
7954         instructions.
7955         (output_387_binary_op): Support AVX.
7956         (output_fp_compare): Likewise.
7957         (ix86_expand_vector_move_misalign): Likewise.
7958         (ix86_attr_length_vex_default): New.
7959         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7960         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7961         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7962         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7963         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
7964         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7965         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
7966         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
7967         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
7968         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
7969         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
7970         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
7971         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
7972         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
7973         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7974         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
7975         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
7976         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7977         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
7978         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
7979         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7980         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7981         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7982         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
7983         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
7984         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
7985         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
7986         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7987         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
7988         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
7989         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
7990         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
7991         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
7992         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7993         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7994         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7995         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
7996         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
7997         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
7998         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
7999         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
8000         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
8001         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
8002         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
8003         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
8004         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
8005         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8006         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8007         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8008         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8009         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8010         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8011         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8012         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8013         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8014         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8015         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8016         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8017         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8018         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8019         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8020         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8021         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8022         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
8023         and IX86_BUILTIN_MOVMSKPS256,
8024         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
8025         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
8026         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
8027         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
8028         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
8029         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
8030         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
8031         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
8032         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
8033         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
8034         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
8035         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
8036         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
8037         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
8038         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
8039         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
8040         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
8041         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
8042         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
8043         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
8044         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
8045         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
8046         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
8047         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
8048         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
8049         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
8050         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
8051         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
8052         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
8053         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
8054         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
8055         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
8056         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
8057         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
8058         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
8059         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
8060         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
8061         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
8062         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
8063         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
8064         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
8065         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
8066         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
8067         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
8068         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
8069         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
8070         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
8071         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
8072         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
8073         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
8074         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
8075         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
8076         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
8077         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
8078         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
8079         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
8080         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
8081         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
8082         IX86_BUILTIN_CMPPS,
8083         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
8084         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
8085         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
8086         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
8087         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
8088         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
8089         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
8090         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
8091         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
8092         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8093         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
8094         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8095         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
8096         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
8097         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
8098         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
8099         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8100         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8101         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8102         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8103         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8104         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8105         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8106         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8107         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8108         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8109         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8110         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8111         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8112         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8113         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8114         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8115         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8116         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
8117         IX86_BUILTIN_MOVMSKPS256.
8118         (ix86_init_mmx_sse_builtins): Support AVX builtins.
8119         (ix86_expand_args_builtin): Likewise.
8120         (ix86_expand_special_args_builtin): Likewise.
8121         (ix86_hard_regno_mode_ok): Handle AVX modes.
8122         (ix86_expand_vector_init_duplicate): Likewise.
8123         (ix86_expand_vector_init_one_nonzero): Likewise.
8124         (ix86_expand_vector_init_one_var): Likewise.
8125         (ix86_expand_vector_init_concat): Likewise.
8126         (ix86_expand_vector_init_general): Likewise.
8127         (ix86_expand_vector_set): Likewise.
8128         (ix86_vector_mode_supported_p): Likewise.
8129         (x86_extended_reg_mentioned_p): Check INSN_P before using
8130         PATTERN.
8131
8132         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
8133         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
8134
8135         * config/i386/i386.h (TARGET_AVX): New.
8136         (TARGET_FMA): Likewise.
8137         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
8138         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
8139         (VALID_AVX256_REG_MODE): New.
8140         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8141         (AVX_FLOAT_MODE_P): Likewise.
8142         (AVX128_VEC_FLOAT_MODE_P): Likewise.
8143         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8144         (AVX_VEC_FLOAT_MODE_P): Likewise.
8145         (ASM_OUTPUT_AVX_PREFIX): Likewise.
8146         (ASM_OUTPUT_OPCODE): Likewise.
8147         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
8148         support.
8149         (SSE_REG_MODE_P): Allow 256bit vector modes.
8150         (ix86_args): Add a warn_avx field.
8151
8152         * config/i386/i386.md (UNSPEC_PCMP): New.
8153         (UNSPEC_VPERMIL): Likewise.
8154         (UNSPEC_VPERMIL2): Likewise.
8155         (UNSPEC_VPERMIL2F128): Likewise.
8156         (UNSPEC_MASKLOAD): Likewise.
8157         (UNSPEC_MASKSTORE): Likewise.
8158         (UNSPEC_CAST): Likewise.
8159         (UNSPEC_VTESTP): Likewise.
8160         (UNSPECV_VZEROALL): Likewise.
8161         (UNSPECV_VZEROUPPER): Likewise.
8162         (XMM0_REG): Likewise.
8163         (XMM1_REG): Likewise.
8164         (XMM2_REG): Likewise.
8165         (XMM3_REG): Likewise.
8166         (XMM4_REG): Likewise.
8167         (XMM5_REG): Likewise.
8168         (XMM6_REG): Likewise.
8169         (XMM8_REG): Likewise.
8170         (XMM9_REG): Likewise.
8171         (XMM10_REG): Likewise.
8172         (XMM11_REG): Likewise.
8173         (XMM12_REG): Likewise.
8174         (XMM13_REG): Likewise.
8175         (XMM14_REG): Likewise.
8176         (XMM15_REG): Likewise.
8177         (prefix): Likewise.
8178         (prefix_vex_imm8): Likewise.
8179         (prefix_vex_w): Likewise.
8180         (length_vex): Likewise.
8181         (maxmin): Likewise.
8182         (movoi): Likewise.
8183         (*avx_ashlti3): Likewise.
8184         (*avx_lshrti3): Likewise.
8185         (*avx_setcc<mode>): Likewise.
8186         (*fop_<mode>_comm_mixed_avx): Likewise.
8187         (*fop_<mode>_comm_avx): Likewise.
8188         (*fop_<mode>_1_mixed_avx): Likewise.
8189         (*fop_<mode>_1_avx): Likewise.
8190         (*avx_<code><mode>3): Likewise.
8191         (*avx_ieee_smin<mode>3): Likewise.
8192         (*avx_ieee_smax<mode>3): Likewise.
8193         (mode): Add OI, V8SF and V4DF.
8194         (length): Support VEX prefix.
8195         (*cmpfp_i_mixed): Set prefix attribute.
8196         (*cmpfp_i_sse): Likewise.
8197         (*cmpfp_iu_mixed): Likewise.
8198         (*cmpfp_iu_sse): Likewise.
8199         (*movsi_1): Support AVX.
8200         (*movdi_2): Likewise.
8201         (*movdi_1_rex64): Likewise.
8202         (*movti_internal): Likewise.
8203         (*movti_rex64): Likewise.
8204         (*movsf_1): Likewise.
8205         (*movdf_nointeger): Likewise.
8206         (*movdf_integer_rex64): Likewise.
8207         (*movtf_internal): Likewise.
8208         (zero_extendsidi2_32): Likewise.
8209         (zero_extendsidi2_rex64): Likewise.
8210         (*extendsfdf2_mixed): Likewise.
8211         (*extendsfdf2_sse): Likewise.
8212         (*truncdfsf_fast_mixed): Likewise.
8213         (*truncdfsf_fast_sse): Likewise.
8214         (*truncdfsf_mixed): Likewise.
8215         (fix_trunc<mode>di_sse): Likewise.
8216         (fix_trunc<mode>si_sse): Likewise.
8217         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
8218         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
8219         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
8220         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
8221         (*rcpsf2_sse): Likewise.
8222         (*rsqrtsf2_sse): Likewise.
8223         (*sqrt<mode>2_sse): Likewise.
8224         (sse4_1_round<mode>2): Likewise.
8225         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
8226         Support AVX.  Set length attribute properly for AVX.
8227
8228         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
8229         (VECTOR_MODES (FLOAT, 32)): Likewise.
8230         (VECTOR_MODE (INT, DI, 8)): Likewise.
8231         (VECTOR_MODE (INT, HI, 32)): Likewise.
8232         (VECTOR_MODE (INT, QI, 64)): Likewise.
8233         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
8234         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
8235         (VECTOR_MODE (INT, DI, 4)): Removed.
8236         (VECTOR_MODE (INT, SI, 8)): Likewise.
8237         (VECTOR_MODE (INT, HI, 16)): Likewise.
8238         (VECTOR_MODE (INT, QI, 32)): Likewise.
8239         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
8240         (INT_MODE (OI, 32)): Likewise.
8241
8242         * config/i386/i386.opt (mavx): New.
8243         (mfma): Likewise.
8244
8245         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
8246
8247         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
8248         (*mov<mode>_internal_avx): New.
8249         (*movv2sf_internal_rex64_avx): Likewise.
8250         (*movv2sf_internal_avx): Likewise.
8251
8252         * config/i386/predicates.md (const_4_to_5_operand): New.
8253         (const_6_to_7_operand): Likewise.
8254         (const_8_to_11_operand): Likewise.
8255         (const_12_to_15_operand): Likewise.
8256         (avx_comparison_float_operator): Likewise.
8257
8258         * config/i386/sse.md (AVX256MODEI): New.
8259         (AVX256MODE): Likewise.
8260         (AVXMODEQI): Likewise.
8261         (AVXMODE): Likewise.
8262         (AVX256MODEF2P): Likewise.
8263         (AVX256MODE2P): Likewise.
8264         (AVX256MODE4P): Likewise.
8265         (AVX256MODE8P): Likewise.
8266         (AVXMODEF2P): Likewise.
8267         (AVXMODEF4P): Likewise.
8268         (AVXMODEDCVTDQ2PS): Likewise.
8269         (AVXMODEDCVTPS2DQ): Likewise.
8270         (avxvecmode): Likewise.
8271         (avxvecpsmode): Likewise.
8272         (avxhalfvecmode): Likewise.
8273         (avxscalarmode): Likewise.
8274         (avxcvtvecmode): Likewise.
8275         (avxpermvecmode): Likewise.
8276         (avxmodesuffixf2c): Likewise.
8277         (avxmodesuffixp): Likewise.
8278         (avxmodesuffixs): Likewise.
8279         (avxmodesuffix): Likewise.
8280         (vpermilbits): Likewise.
8281         (pinsrbits): Likewise.
8282         (mov<mode>): Likewise.
8283         (*mov<mode>_internal): Likewise.
8284         (push<mode>1): Likewise.
8285         (movmisalign<mode>): Likewise.
8286         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8287         (avx_movdqu<avxmodesuffix>): Likewise.
8288         (avx_lddqu<avxmodesuffix>): Likewise.
8289         (<plusminus_insn><mode>3): Likewise.
8290         (*avx_<plusminus_insn><mode>3): Likewise.
8291         (*avx_vm<plusminus_insn><mode>3): Likewise.
8292         (mul<mode>3): Likewise.
8293         (*avx_mul<mode>3): Likewise.
8294         (*avx_vmmul<mode>3): Likewise.
8295         (divv8sf3): Likewise.
8296         (divv4df3): Likewise.
8297         (avx_div<mode>3): Likewise.
8298         (*avx_div<mode>3): Likewise.
8299         (*avx_vmdiv<mode>3): Likewise.
8300         (avx_rcpv8sf2): Likewise.
8301         (*avx_vmrcpv4sf2): Likewise.
8302         (sqrtv8sf2): Likewise.
8303         (avx_sqrtv8sf2): Likewise.
8304         (*avx_vmsqrt<mode>2): Likewise.
8305         (rsqrtv8sf2): Likewise.
8306         (avx_rsqrtv8sf2): Likewise.
8307         (*avx_vmrsqrtv4sf2): Likewise.
8308         (<code><mode>3): Likewise.
8309         (*avx_<code><mode>3_finite): Likewise.
8310         (*avx_<code><mode>3): Likewise.
8311         (*avx_vm<code><mode>3): Likewise.
8312         (*avx_ieee_smin<mode>3): Likewise.
8313         (*avx_ieee_smax<mode>3): Likewise.
8314         (avx_addsubv8sf3): Likewise.
8315         (avx_addsubv4df3): Likewise.
8316         (*avx_addsubv4sf3): Likewise.
8317         (*avx_addsubv2df3): Likewise.
8318         (avx_h<plusminus_insn>v4df3): Likewise.
8319         (avx_h<plusminus_insn>v8sf3): Likewise.
8320         (*avx_h<plusminus_insn>v4sf3): Likewise.
8321         (*avx_h<plusminus_insn>v2df3): Likewise.
8322         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
8323         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
8324         (*avx_maskcmp<mode>3): Likewise.
8325         (avx_nand<mode>3): Likewise.
8326         (*avx_<code><mode>3): Likewise.
8327         (*avx_nand<mode>3): Likewise.
8328         (*avx_<code><mode>3): Likewise.
8329         (*avx_cvtsi2ss): Likewise.
8330         (*avx_cvtsi2ssq): Likewise.
8331         (*avx_cvtsi2sd): Likewise.
8332         (*avx_cvtsi2sdq): Likewise.
8333         (*avx_cvtsd2ss): Likewise.
8334         (avx_cvtss2sd): Likewise.
8335         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
8336         (avx_cvtps2dq<avxmodesuffix>): Likewise.
8337         (avx_cvttps2dq<avxmodesuffix>): Likewise.
8338         (*avx_cvtsi2sd): Likewise.
8339         (*avx_cvtsi2sdq): Likewise.
8340         (avx_cvtdq2pd256): Likewise.
8341         (avx_cvtpd2dq256): Likewise.
8342         (avx_cvttpd2dq256): Likewise.
8343         (*avx_cvtsd2ss): Likewise.
8344         (*avx_cvtss2sd): Likewise.
8345         (avx_cvtpd2ps256): Likewise.
8346         (avx_cvtps2pd256): Likewise.
8347         (*avx_movhlps): Likewise.
8348         (*avx_movlhps): Likewise.
8349         (avx_unpckhps256): Likewise.
8350         (*avx_unpckhps): Likewise.
8351         (avx_unpcklps256): Likewise.
8352         (*avx_unpcklps): Likewise.
8353         (avx_movshdup256): Likewise.
8354         (avx_movsldup256): Likewise.
8355         (avx_shufps256): Likewise.
8356         (avx_shufps256_1): Likewise.
8357         (*avx_shufps_<mode>): Likewise.
8358         (*avx_loadhps): Likewise.
8359         (*avx_storelps): Likewise.
8360         (*avx_loadlps): Likewise.
8361         (*avx_movss): Likewise.
8362         (*vec_dupv4sf_avx): Likewise.
8363         (*vec_concatv2sf_avx): Likewise.
8364         (*vec_concatv4sf_avx): Likewise.
8365         (*vec_setv4sf_0_avx): Likewise.
8366         (*vec_setv4sf_avx): Likewise.
8367         (*avx_insertps): Likewise.
8368         (avx_vextractf128<mode>): Likewise.
8369         (vec_extract_lo_<mode>): Likewise.
8370         (vec_extract_hi_<mode>): Likewise.
8371         (vec_extract_lo_<mode>): Likewise.
8372         (vec_extract_hi_<mode>): Likewise.
8373         (vec_extract_lo_v16hi): Likewise.
8374         (vec_extract_hi_v16hi): Likewise.
8375         (vec_extract_lo_v32qi): Likewise.
8376         (vec_extract_hi_v32qi): Likewise.
8377         (avx_unpckhpd256): Likewise.
8378         (*avx_unpckhpd): Likewise.
8379         (avx_movddup256): Likewise.
8380         (*avx_movddup): Likewise.
8381         (avx_unpcklpd256): Likewise.
8382         (*avx_unpcklpd): Likewise.
8383         (avx_shufpd256): Likewise.
8384         (avx_shufpd256_1): Likewise.
8385         (*avx_punpckhqdq): Likewise.
8386         (*avx_punpcklqdq): Likewise.
8387         (*avx_shufpd_<mode>): Likewise.
8388         (*avx_storehpd): Likewise.
8389         (*avx_loadhpd): Likewise.
8390         (*avx_loadlpd): Likewise.
8391         (*avx_movsd): Likewise.
8392         (*vec_concatv2df_avx): Likewise.
8393         (*avx_<plusminus_insn><mode>3): Likewise.
8394         (*avx_<plusminus_insn><mode>3): Likewise.
8395         (*avx_mulv8hi3): Likewise.
8396         (*avxv8hi3_highpart): Likewise.
8397         (*avx_umulv8hi3_highpart): Likewise.
8398         (*avx_umulv2siv2di3): Likewise.
8399         (*avx_mulv2siv2di3): Likewise.
8400         (*avx_pmaddwd): Likewise.
8401         (*avx_mulv4si3): Likewise.
8402         (*avx_ashr<mode>3): Likewise.
8403         (*avx_lshr<mode>3): Likewise.
8404         (*avx_ashl<mode>3): Likewise.
8405         (*avx_<code><mode>3): Likewise.
8406         (*avx_eq<mode>3): Likewise.
8407         (*avx_gt<mode>3): Likewise.
8408         (*avx_nand<mode>3): Likewise.
8409         (*avx_nand<mode>3): Likewise.
8410         (*avx_<code><mode>3): Likewise.
8411         (*avx_<code><mode>3): Likewise.
8412         (*avx_packsswb): Likewise.
8413         (*avx_packssdw): Likewise.
8414         (*avx_packuswb): Likewise.
8415         (*avx_punpckhbw): Likewise.
8416         (*avx_punpcklbw): Likewise.
8417         (*avx_punpckhwd): Likewise.
8418         (*avx_punpcklwd): Likewise.
8419         (*avx_punpckhdq): Likewise.
8420         (*avx_punpckldq): Likewise.
8421         (*avx_pinsr<avxmodesuffixs>): Likewise.
8422         (*avx_pinsrq): Likewise.
8423         (*avx_loadld): Likewise.
8424         (*vec_extractv2di_1_rex64_avx): Likewise.
8425         (*vec_extractv2di_1_avx): Likewise.
8426         (*vec_dupv2di_avx): Likewise.
8427         (*vec_concatv2si_avx): Likewise.
8428         (*vec_concatv4si_1_avx): Likewise.
8429         (*vec_concatv2di_avx): Likewise.
8430         (*vec_concatv2di_rex64_avx): Likewise.
8431         (*avx_uavgv16qi3): Likewise.
8432         (*avx_uavgv8hi3): Likewise.
8433         (*avx_psadbw): Likewise.
8434         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
8435         (*avx_phaddwv8hi3): Likewise.
8436         (*avx_phadddv4si3): Likewise.
8437         (*avx_phaddswv8hi3): Likewise.
8438         (*avx_phsubwv8hi3): Likewise.
8439         (*avx_phsubdv4si3): Likewise.
8440         (*avx_phsubswv8hi3): Likewise.
8441         (*avx_pmaddubsw128): Likewise.
8442         (*avx_pmulhrswv8hi3): Likewise.
8443         (*avx_pshufbv16qi3): Likewise.
8444         (*avx_psign<mode>3): Likewise.
8445         (*avx_palignrti): Likewise.
8446         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8447         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8448         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8449         (*avx_mpsadbw): Likewise.
8450         (*avx_packusdw): Likewise.
8451         (*avx_pblendvb): Likewise.
8452         (*avx_pblendw): Likewise.
8453         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8454         (avx_ptest256): Likewise.
8455         (avx_roundp<avxmodesuffixf2c>256): Likewise.
8456         (*avx_rounds<ssemodesuffixf2c>): Likewise.
8457         (*avx_aesenc): Likewise.
8458         (*avx_aesenclast): Likewise.
8459         (*avx_aesdec): Likewise.
8460         (*avx_aesdeclast): Likewise.
8461         (avx_vzeroupper): Likewise.
8462         (avx_vzeroupper_rex64): Likewise.
8463         (avx_vpermil<mode>): Likewise.
8464         (avx_vpermilvar<mode>3): Likewise.
8465         (avx_vpermil2<mode>3): Likewise.
8466         (avx_vperm2f128<mode>3): Likewise.
8467         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8468         (avx_vbroadcastss256): Likewise.
8469         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
8470         (avx_vinsertf128<mode>): Likewise.
8471         (vec_set_lo_<mode>): Likewise.
8472         (vec_set_hi_<mode>): Likewise.
8473         (vec_set_lo_<mode>): Likewise.
8474         (vec_set_hi_<mode>): Likewise.
8475         (vec_set_lo_v16hi): Likewise.
8476         (vec_set_hi_v16hi): Likewise.
8477         (vec_set_lo_v32qi): Likewise.
8478         (vec_set_hi_v32qi): Likewise.
8479         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8480         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8481         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
8482         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
8483         (vec_init<mode>): Likewise.
8484         (*vec_concat<mode>_avx): Likewise.
8485         (blendbits): Support V8SF and V4DF.
8486         (sse2_movq128): Support AVX.
8487         (<sse>_movnt<mode>): Likewise.
8488         (sse2_movntv2di): Likewise.
8489         (sse_rcpv4sf2): Likewise.
8490         (sse_sqrtv4sf2): Likewise.
8491         (sse_rsqrtv4sf2): Likewise.
8492         (<sse>_comi): Likewise.
8493         (<sse>_ucomi): Likewise.
8494         (sse_cvtss2si): Likewise.
8495         (sse_cvtss2si_2): Likewise.
8496         (sse_cvtss2siq): Likewise.
8497         (sse_cvtss2siq_2): Likewise.
8498         (sse_cvttss2si): Likewise.
8499         (sse_cvttss2siq): Likewise.
8500         (sse2_cvtsd2si): Likewise.
8501         (sse2_cvtsd2si_2): Likewise.
8502         (sse2_cvtsd2siq): Likewise.
8503         (sse2_cvtsd2siq_2): Likewise.
8504         (sse2_cvttsd2si): Likewise.
8505         (sse2_cvttsd2siq): Likewise.
8506         (sse2_cvtdq2pd): Likewise.
8507         (*sse2_cvtpd2dq): Likewise.
8508         (*sse2_cvttpd2dq): Likewise.
8509         (*sse2_cvtpd2ps): Likewise.
8510         (sse2_cvtps2pd): Likewise.
8511         (sse3_movshdup): Likewise.
8512         (sse3_movsldup): Likewise.
8513         (sse_storehps): Likewise.
8514         (*sse4_1_extractps): Likewise.
8515         (sse2_storelpd): Likewise.
8516         (vec_dupv2df_sse3): Likewise.
8517         (*vec_concatv2df_sse3): Likewise.
8518         (*sse4_1_pextrb): Likewise.
8519         (*sse4_1_pextrb_memory): Likewise.
8520         (*sse2_pextrw): Likewise.
8521         (*sse4_1_pextrw_memory): Likewise.
8522         (*sse4_1_pextrd): Likewise.
8523         (*sse4_1_pextrq): Likewise.
8524         (sse2_pshufd_1): Likewise.
8525         (sse2_pshuflw_1): Likewise.
8526         (sse2_pshufhw_1): Likewise.
8527         (*sse2_storeq_rex64): Likewise.
8528         (*vec_dupv4si): Likewise.
8529         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
8530         (sse2_pmovmskb): Likewise.
8531         (*sse2_maskmovdqu): Likewise.
8532         (*sse2_maskmovdqu_rex64): Likewise.
8533         (sse_ldmxcsr): Likewise.
8534         (sse_stmxcsr): Likewise.
8535         (abs<mode>2): Likewise.
8536         (sse4_1_movntdqa): Likewise.
8537         (sse4_1_phminposuw): Likewise.
8538         (sse4_1_extendv8qiv8hi2): Likewise.
8539         (*sse4_1_extendv8qiv8hi2): Likewise.
8540         (sse4_1_extendv4qiv4si2): Likewise.
8541         (*sse4_1_extendv4qiv4si2): Likewise.
8542         (sse4_1_extendv2qiv2di2): Likewise.
8543         (*sse4_1_extendv2qiv2di2): Likewise.
8544         (sse4_1_extendv4hiv4si2): Likewise.
8545         (*sse4_1_extendv4hiv4si2): Likewise.
8546         (sse4_1_extendv2hiv2di2): Likewise.
8547         (*sse4_1_extendv2hiv2di2): Likewise.
8548         (sse4_1_extendv2siv2di2): Likewise.
8549         (*sse4_1_extendv2siv2di2): Likewise.
8550         (sse4_1_zero_extendv8qiv8hi2): Likewise.
8551         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
8552         (sse4_1_zero_extendv4qiv4si2): Likewise.
8553         (*sse4_1_zero_extendv4qiv4si2): Likewise.
8554         (sse4_1_zero_extendv2qiv2di2): Likewise.
8555         (*sse4_1_zero_extendv2qiv2di2): Likewise.
8556         (sse4_1_zero_extendv4hiv4si2): Likewise.
8557         (*sse4_1_zero_extendv4hiv4si2): Likewise.
8558         (sse4_1_zero_extendv2hiv2di2): Likewise.
8559         (*sse4_1_zero_extendv2hiv2di2): Likewise.
8560         (sse4_1_zero_extendv2siv2di2): Likewise.
8561         (*sse4_1_zero_extendv2siv2di2): Likewise.
8562         (sse4_1_ptest): Likewise.
8563         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
8564         (sse4_2_pcmpestri): Likewise.
8565         (sse4_2_pcmpestrm): Likewise.
8566         (sse4_2_pcmpistri): Likewise.
8567         (sse4_2_pcmpistrm): Likewise.
8568         (aesimc): Likewise.
8569         (aeskeygenassist): Likewise.
8570
8571 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
8572
8573         * config/i386/predicates.md (vzeroall_operation): New.
8574
8575         * config/i386/sse.md (avx_vzeroall): New.
8576         (*avx_vzeroall): Likewise.
8577
8578 2008-08-28  Paul Brook  <paul@codesourcery.com>
8579             Mark Shinwell  <shinwell@codesourcery.com>
8580             Richard Earnshaw  <richard.earnshaw@arm.com>
8581
8582         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
8583         (TARGET_MIN_ANCHOR_OFFSET): New.
8584         (arm_override_options): Set correct anchor ranges for Thumb-1
8585         and Thumb-2 if required.
8586         (legitimize_pic_address): Handle case involving a TLS symbol
8587         reference with an addend.
8588         (arm_optimization_options): Enable section anchors at -O1 and
8589         above.
8590         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
8591         * config/arm/arm-protos.h (arm_optimization_options): New.
8592
8593 2008-08-28  Nick Clifton  <nickc@redhat.com>
8594
8595         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
8596         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
8597         attribute.
8598
8599         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
8600         * config/v850/v850.md (return): Remove frame size restriction.
8601
8602         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
8603
8604         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
8605
8606         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
8607
8608         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
8609
8610 2008-08-28  Paul Brook  <paul@codesourcery.com>
8611
8612         * config/arm/vfp11.md: Update license notice.
8613         * config/arm/cortex-r4.md: Ditto.
8614
8615 2008-08-28  Richard Guenther  <rguenther@suse.de>
8616
8617         PR tree-optimization/37207
8618         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
8619         tuplification bug.
8620
8621 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
8622
8623         PR c++/36741
8624         * tree.c (int_fits_type_p): Don't forget unsigned integers
8625           of type sizetype which higher end word equals -1.
8626
8627 2008-08-28  Ira Rosen  <irar@il.ibm.com>
8628
8629         * target.h (struct vectorize): Add new target builtin.
8630         * tree-vectorizer.c (destroy_loop_vec_info): Call
8631         vect_free_slp_instance instead of vect_free_slp_node.
8632         * tree-vectorizer.h (enum slp_load_perm_type): New.
8633         (struct _slp_instance): Add new fields.
8634         (SLP_INSTANCE_LOAD_PERMUTATION): New.
8635         (SLP_INSTANCE_LOADS): New.
8636         (vect_free_slp_tree): Remove.
8637         (vect_free_slp_instance): Declare.
8638         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
8639         (vectorizable_load): Add argument.
8640         (vect_transform_slp_perm_load): New.
8641         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
8642         vectorizable_load.
8643         (vect_get_place_in_interleaving_chain): New function.
8644         (vect_free_slp_tree): Make static.
8645         (vect_free_slp_instance): New function.
8646         (vect_build_slp_tree): Add new arguments. Allow load permutations and
8647         collect the load location in the interleaving chain.
8648         (vect_supported_slp_permutation_p): New function.
8649         (vect_supported_load_permutation_p): Likewise.
8650         (vect_analyze_slp_instance): In case of loads permutation, call
8651         vect_supported_load_permutation_p to check that the permutation is
8652         supported.
8653         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
8654         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
8655         (vect_create_mask_and_perm): New function.
8656         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
8657         (vectorizable_load): Add an argument. Don't keep the created vectors
8658         statements in the node if permutation is required. Call
8659         vect_transform_slp_perm_load to generate the permutation.
8660         (vect_transform_stmt): Add new argument. Call vectorizable_load with
8661         additional argument.
8662         (vect_schedule_slp_instance): In case of loads permutation, allocate
8663         vectorized statements structure for all the related SLP nodes. Call
8664         vect_transform_stmt with addditional argument.
8665         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
8666         * config/spu/spu.c (spu_builtin_vec_perm): New.
8667         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8668         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
8669         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
8670         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8671
8672 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
8673
8674         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
8675         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
8676         __gthread_cond_signal, __gthread_cond_timedwait,
8677         __gthread_cond_timedwait_recursive): New functions.
8678         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
8679         Likewise.
8680         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
8681         thread interfaces.
8682
8683 2008-08-28  Richard Guenther  <rguenther@suse.de>
8684
8685         PR middle-end/37005
8686         * fold-const.c (maybe_canonicalize_comparison_1): Require
8687         undefined overflow only for canonicalizing A +- CST cmp CST.
8688         Make sure to not generate new constants that are not inside
8689         their TYPE_MIN/MAX_VALUE range.
8690         (maybe_canonicalize_comparison): Remove undefined overflow
8691         checking from here.
8692         (fold_binary): Remove now duplicate folding.
8693
8694 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8695
8696         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
8697         use not updated in the last change.
8698
8699 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8700
8701         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
8702         (IRA_COVER_CLASSES): Add FPUL_REGS.
8703
8704 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8705
8706         PR 37217
8707         * c-common.c (conversion_warning): Check for null operands.
8708
8709 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8710
8711         PR c/31673
8712         * c-decl.c (check_for_loop_decls): Improve error message. Give
8713         hint.
8714
8715 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8716
8717         PR c/37186
8718         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
8719         (convert_for_assignment): Pass corrent OPT_W* parameter to
8720         WARN_FOR_ASSIGNMENT.
8721
8722 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8723
8724         PR c++/35321
8725         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
8726
8727 2008-08-27  Paul Brook  <paul@codesourcery.com>
8728
8729         * config.gcc: Loosen checks for arm uclinux eabi targets.
8730
8731 2008-08-27  Paul Brook  <paul@codesourcery.com>
8732
8733         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
8734         _clzsi2.
8735         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
8736
8737 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
8738
8739         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
8740         the enumerators of an ENUMERAL_TYPE.
8741         * dbxout.c (dbxout_type): Ditto.
8742
8743 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8744
8745         PR rtl-opt/37219
8746         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
8747         (fwprop_addr): Check that the loop_father is not the outer loop.
8748
8749 2008-08-26  Paul Brook  <paul@codesourcery.com>
8750
8751         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
8752         Remove documentation entry for fmul type.
8753         Use fmuls to annotate single-precision multiplication patterns,
8754         fmuld to annotate double-precision multiplication patterns,
8755         fmacs to annotate single-precision multiply-accumulate patterns
8756         and fmacd to annotate double-precision multiply-accumulate patterns.
8757         * config/arm/vfp11.md: Update reservations accordingly.
8758         * config/arm/arm.md: Note that certain values of the "type"
8759         attribute are documented in vfp.md.
8760         * config/arm/arm1020e.md: Remove out of date duplicate comment.
8761         (v10_cvt): Use new fmul types.
8762
8763 2008-08-26  Paul Brook  <paul@codesourcery.com>
8764
8765         * config/arm/vfp.md: Move pipeline description for VFP11 to...
8766         * config/arm/vfp11.md: ...here.  New.
8767         * config/arm/arm.md: Include vfp11.md.
8768
8769 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
8770
8771         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
8772         parameter to inform call.
8773
8774 2008-08-26  Jeff Law  <law@redhat.com>
8775
8776         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
8777         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
8778         preferred class when copying a constant into a partial word register.
8779
8780 2008-08-26  Ben Elliston  <bje@au.ibm.com>
8781
8782         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
8783         * cp/typeck.c: Likewise.
8784         * cp/tree.c: Likewise.
8785         * gimple-low.c: Likewise.
8786         * jump.c: Likewise.
8787
8788 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
8789
8790         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
8791         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
8792
8793         * doc/passes.texi: Describe IRA.
8794
8795         * doc/tm.texi (IRA_COVER_CLASSES,
8796         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
8797
8798         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
8799         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
8800         -fira-propagate-cost, -fno-ira-share-save-slots,
8801         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
8802
8803         * flags.h (ira_algorithm): New enumeration.
8804         (flag_ira_algorithm, flag_ira_verbose): New external variable
8805         declarations.
8806
8807         * postreload.c (gate_handle_postreload): Don't do post reload
8808         optimizations unless the reload is completed.
8809
8810         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
8811         IRA.
8812
8813         * tree-pass.h (pass_ira): New external variable declaration.
8814
8815         * reload.h: Add 2008 to the Copyright.
8816
8817         * cfgloopanal.c: Include params.h.
8818         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
8819         mode.
8820
8821         * params.h (IRA_MAX_LOOPS_NUM): New macro.
8822
8823         * toplev.c (ira.h): New include.
8824         (flag_ira_algorithm, flag_ira_verbose): New external variables.
8825         (backend_init_target): Call ira_init.
8826         (backend_init): Call ira_init_once.
8827         (finalize): Call finish_ira_once.
8828
8829         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
8830         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
8831         external variables.
8832
8833         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
8834         may_move_out_cost): New external variable declarations.
8835         (move_table): New typedef.
8836
8837         * caller-save.c: Include headers output.h and ira.h.
8838         (no_caller_save_reg_set): New global variable.
8839         (save_slots_num, save_slots): New variables.
8840         (reg_save_code, reg_restore_code, add_stored_regs): Add
8841         prototypes.
8842         (init_caller_save): Set up no_caller_save_reg_set.
8843         (init_save_areas): Reset save_slots_num.
8844         (saved_hard_reg): New structure.
8845         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
8846         (initiate_saved_hard_regs, new_saved_hard_reg,
8847         finish_saved_hard_regs, saved_hard_reg_compare_func): New
8848         functions.
8849         (setup_save_areas): Add code for sharing stack slots.
8850         (all_blocks): New variable.
8851         (save_call_clobbered_regs): Process pseudo-register too.
8852         (mark_set_regs): Process pseudo-register too.
8853         (insert_one_insn): Put the insn after bb note in a empty basic
8854         block.  Add insn check.
8855
8856         * global.c (eliminable_regset): Make it external.
8857         (mark_elimination): Use DF_LR_IN for IRA.
8858         (pseudo_for_reload_consideration_p): New.
8859         (build_insn_chain): Make it external.  Don't ignore spilled
8860         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
8861         (gate_handle_global_alloc): New function.
8862         (pass_global_alloc): Add the gate function.
8863
8864         * opts.c (decode_options): Set up flag_ira.  Print the warning for
8865         -fira.
8866         (common_handle_option): Process -fira-algorithm and -fira-verbose.
8867
8868         * timevar.def (TV_IRA, TV_RELOAD): New passes.
8869
8870         * regmove.c (regmove_optimize): Don't do replacement of output for
8871         IRA.
8872
8873         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
8874         New external variable declarations.
8875
8876         * local-alloc.c (update_equiv_regs): Make it external.  Return
8877         true if jump label rebuilding should be done.  Rescan new_insn for
8878         notes.
8879         (gate_handle_local_alloc): New function.
8880         (pass_local_alloc): Add the gate function.
8881
8882         * alias.c (value_addr_p, stack_addr_p): New functions.
8883         (nonoverlapping_memrefs_p): Use them for IRA.
8884
8885         * common.opt (fira, fira-algorithm, fira-coalesce,
8886         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
8887         fira-verbose): New options.
8888
8889         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
8890         move_cost, may_move_in_cost, may_move_out_cost): Make the
8891         variables external.
8892         (move_table): Remove typedef.
8893         (init_move_cost): Make it external.
8894         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
8895         functions.
8896
8897         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
8898         setup_reg_classes): New function prototypes.
8899         (eliminable_regset): New external variable declaration.
8900         (build_insn_chain, update_equiv_regs): New function prototypes.
8901
8902         * Makefile.in (IRA_INT_H): New definition.
8903         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
8904         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
8905         (reload1.o, toplev.o): Add dependence on ira.h.
8906         (cfgloopanal.o): Add PARAMS_H.
8907         (caller-save.o): Add dependence on output.h and ira.h.
8908         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
8909         ira-emit.o, ira-lives.o): New entries.
8910
8911         * passes.c (pass_ira): New pass.
8912
8913         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
8914
8915         * reload1.c (ira.h): Include the header.
8916         (changed_allocation_pseudos): New bitmap.
8917         (init_reload): Initiate the bitmap.
8918         (compute_use_by_pseudos): Permits spilled registers in FROM.
8919         (temp_pseudo_reg_arr): New variable.
8920         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
8921         IRA.  Call alter_reg with the additional parameter.  Don't clear
8922         spilled_pseudos for IRA.  Restore original insn chain for IRA.
8923         Clear changed_allocation_pseudos at the end of reload.
8924         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
8925         (hard_regno_to_pseudo_regno): New variable.
8926         (count_pseudo): Check spilled pseudos.  Set up
8927         hard_regno_to_pseudo_regno.
8928         (count_spilled_pseudo): Check spilled pseudos. Update
8929         hard_regno_to_pseudo_regno.
8930         (find_reg): Use better_spill_reload_regno_p.  Check
8931         hard_regno_to_pseudo_regno.
8932         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
8933         code for IRA.
8934         (eliminate_regs_1): Use additional parameter for alter_reg.
8935         (finish_spills): Set up pseudo_previous_regs only for spilled
8936         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
8937         more arguments.  Don't clear live_throughout and dead_or_set for
8938         spilled pseudos.  Use additional parameter for alter_reg.  Call
8939         mark_allocation_change.  Set up changed_allocation_pseudos.
8940         Remove sanity check.
8941         (emit_input_reload_insns, delete_output_reload): Use additional
8942         parameter for alter_reg.  Call mark_allocation_change.
8943         (substitute, gen_reload_chain_without_interm_reg_p): New
8944         functions.
8945         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
8946
8947         * testsuite/gcc.dg/20080410-1.c: New file.
8948
8949         * config/s390/s390.h (IRA_COVER_CLASSES,
8950         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
8951
8952         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
8953
8954         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
8955
8956         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
8957
8958         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
8959
8960         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
8961
8962         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
8963
8964         2008-08-24  Jeff Law  <law@redhat.com>
8965         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
8966         when ignoring unavailable registers.
8967
8968         2008-08-24  Jeff Law  <law@redhat.com>
8969         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
8970         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
8971         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
8972         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
8973
8974         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
8975         * ira-build.c (allocno_range_compare_func): Stabilize sort.
8976
8977         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
8978         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
8979         * reload1.c (find_reg): Process registers in register allocation order.
8980
8981         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8982         * toplev.c (backend_init_target): Move ira_init call from
8983         here...
8984         (lang_dependent_init_target): ...to here.
8985
8986         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8987         * ira.c (setup_class_subset_and_memory_move_costs): Don't
8988         calculate memory move costs for NO_REGS.
8989
8990         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
8991         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
8992         STACK_REGS is defined.
8993
8994         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
8995         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
8996
8997         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
8998         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
8999
9000         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
9001         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
9002         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
9003         barrier.
9004
9005 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
9006             Dorit Nuzman  <dorit@il.ibm.com>
9007
9008         * gcc/config/spu/spu.md (vec_extract_evenv4si,
9009         vec_extract_evenv4sf, vec_extract_evenv8hi,
9010         vec_extract_evenv16qi, vec_extract_oddv4si,
9011         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
9012         vec_interleave_highv4sf, vec_interleave_lowv4sf,
9013         vec_interleave_highv4si, vec_interleave_lowv4si,
9014         vec_interleave_highv8hi, vec_interleave_lowv8hi,
9015         vec_interleave_highv16qi, vec_interleave_lowv16qi,
9016         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
9017
9018 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
9019
9020         PR target/36756
9021         * config/rs6000/rs6000.c (optimization_options): Don't default to
9022         section anchors without toplevel reorder.
9023
9024 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9025
9026         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
9027         (mfc_end_critical_section): Likewise.
9028
9029 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9030
9031         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
9032         all type qualifiers from element type to vector type.
9033
9034 2008-08-25  David Daney  <ddaney@avtrex.com>
9035
9036         * config/mips/mips.md (immediate_insn): Move up in file, fix
9037         comment typo, reformat.
9038         (fetchop_bit, atomic_hiqi_op memory_barrier,
9039         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
9040         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
9041         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
9042         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
9043         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
9044         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
9045         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
9046         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
9047         sync_old_nand<mode>, sync_new_nand<mode>,
9048         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
9049         test_and_set_12): Moved to sync.md.
9050         (sync.md): Include.
9051         * config/mips/sync.md: New file.
9052
9053 2008-08-25  Richard Henderson  <rth@redhat.com>
9054
9055         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
9056         (regsave): Likewise.
9057         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
9058         (output_cfi_directive): Likewise.
9059         (div_data_align): New.
9060         (output_cfi): Use it.
9061
9062 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
9063
9064         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
9065         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
9066         (TARGET_OCTEON): New macro.
9067         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
9068         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
9069         (ISA_HAS_POP): New macro.
9070         * config/mips/driver-native.c (host_detect_local_cpu): Handle
9071         Octeon.
9072         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
9073         Handle Octeon.
9074         * config/mips/mips.md (cpu): Add octeon.
9075         (type): Add pop attribute value.
9076         (popcount<mode>2): New pattern.
9077         * doc/invoke.texi (-march=@var{arch}): Add octeon.
9078
9079 2008-08-24  Jan Hubicka  <jh@suse.cz>
9080
9081         * doc/invoke.texi (-fipa-cp-clone): New option.
9082         (-fipa-cp): Update docs.
9083         (--param ipcp-unit-growth):New.
9084         * ipa-cp.c: Include fibheap.h, params.h
9085         (ipcp_initialize_node_lattices): When not cloning, all externally
9086         visible functions are bottom.
9087         (ipcp_need_redirect_p): Accept clones.
9088         (ipcp_insert_stage): Use cost driven heuristics.
9089         (max_count, dead_nodes): New static vars.
9090         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
9091         ipcp_const_param_count): New functions.
9092         * common.opt (ipa-cp-clone): New command line option.
9093         * params.def (ipcp-unit-growth): New.
9094
9095 2008-08-24  Jan Hubicka  <jh@suse.cz>
9096
9097         * tree-inline.c (tree_function_versioning): Look harder
9098         for referenced vars.
9099
9100 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
9101
9102         PR tree-optimization/37185
9103         * matrix-reorg.c (transform_access_sites): Update changed stmt.
9104
9105 2008-08-23  Jan Hubicka  <jh@suse.cz>
9106
9107         * ipa-cp.c (ipcp_analyze_node): New function.
9108         (ipcp_update_cloned_node): Use it.
9109         (ipcp_init_stage): Likewise.
9110         * ipa-inline.c (function_insertion_hook_holder): New static var.
9111         (analyze_function): Break out from ....
9112         (inline_generate_summary): Here; register insertion hook.
9113         (cgraph_decide_inlining): Remove hook.
9114         (add_new_function): New function.
9115
9116 2008-08-23  Jan Hubicka  <jh@suse.cz>
9117
9118         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
9119
9120 2008-08-23  Jan Hubicka  <jh@suse.cz>
9121
9122         * ipa-cp.c (constant_val_insert): Remove.
9123         (ipcp_propagate_one_const): Remove.
9124         (ipcp_create_replace_map): Always insert replacements to the map.
9125         (ipcp_insert_stage): Do not try to insert statements by hand.
9126         * tree-inline.c (insert_init_stmt): Break out from ...
9127         (setup_one_parameter): ... here; allow NULL BB pointer.
9128         (tree_function_versioning): Use setup_one_parameter to process
9129         replacement map.
9130
9131 2008-08-23  Jan Hubicka  <jh@suse.cz>
9132
9133         * tree.c (decl_address_ip_invariant_p): New function.
9134         * tree.h (decl_address_ip_invariant_p): Declare.
9135         * gimple.c (strip_invariant_refs): Break out from ...
9136         (is_gimple_invariant_address): ... here
9137         (is_gimple_ip_invariant_address): New function.
9138         (is_gimple_ip_invariant): New function.
9139         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
9140         Declare.
9141
9142         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
9143         (ipcp_lat_is_insertable): All constants are insertable.
9144         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
9145         IPA_CONST_VALUE_REF.
9146         (ipcp_initialize_node_lattices): Propagate all types of operands.
9147         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
9148         (ipcp_create_replace_map): Reformat.
9149         (ipcp_need_redirect_p): Simplify.
9150         (ipcp_insert_stage): Check that argument is used before clonning.
9151         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
9152         IPA_CONST_REF.
9153         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
9154         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
9155         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
9156         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
9157         (jump_func_type): Remove IPA_CONST_VALUE_REF.
9158         * tree-inline.c (tree_function_versioning): Add variables referenced
9159         by replacing trees.
9160
9161 2008-08-23  Jan Hubicka  <jh@suse.cz>
9162
9163         PR target/37094
9164         * i386.c (standard_80387_constant_p): Use optimize_size.
9165
9166 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9167
9168         PR tree-optimization/37161
9169         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
9170         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
9171         (vect_determine_vectorization_factor): Move the scalar type
9172         retrieval to vect_get_smallest_scalar_type.
9173         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
9174         scalar type. Remove redundant computation.
9175         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
9176         (vect_get_slp_defs): Take the type of RHS into account if
9177         necessary by calling vect_get_smallest_scalar_type. Call
9178         vect_get_constant_vectors with additional argument.
9179
9180 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9181
9182         PR 35648
9183         * doc/invoke.texi (Wwrite-strings): Clarify description.
9184
9185 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9186
9187         PR tree-optimization/37174
9188         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
9189         def stmt is a part of the loop before accessing its stmt_vec_info.
9190
9191 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
9192
9193         PR target/11259
9194         * config/avr/avr.md (UNSPEC_SWAP): New constants.
9195         (*swap): New insn pattern.
9196         (*ashlqi3): Rename from ashlqi3 insn pattern.
9197         (ashlqi3): New expanders.
9198         (*lshrqi3): Rename from lshrqi3 insn pattern.
9199         (lshrqi3): New expanders.
9200         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
9201         lshrqi3_const5, lshrqi3_const6): New splitters.
9202         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
9203         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
9204         peephole2 patterns.
9205
9206 2008-08-22  Richard Guenther  <rguenther@suse.de>
9207
9208         PR tree-optimization/37078
9209         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
9210         [+INF, +INF] ranges.
9211
9212 2008-08-22  Richard Guenther  <rguenther@suse.de>
9213
9214         PR tree-optimization/37143
9215         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
9216         a conversion statement instead of a copy.
9217
9218 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
9219
9220         PR target/37184
9221         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
9222         CCCmode, CCOmode and CCSmode destination modes.
9223
9224         PR target/37191
9225         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
9226         from different units in a single alternative.
9227         (*vec_extractv2sf_1): Ditto.
9228         (*vec_extractv2si_0): Ditto.
9229         (*vec_extractv2si_1): Ditto.
9230         * config/i386/sse.md (sse2_storehpd): Ditto.
9231         (sse2_storelpd): Ditto.
9232         (sse2_loadhpd): Ditto.
9233         (sse2_loadlpd): Ditto.
9234
9235         PR target/37197
9236         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
9237         (popcountsi2): Ditto.
9238         (clzdi2_abm): Ditto.
9239         (popcountdi2): Ditto.
9240         (clzhi2_abm): Ditto.
9241         (popcounthi2): Ditto.
9242
9243 2008-08-22  Richard Guenther  <rguenther@suse.de>
9244
9245         PR middle-end/36548
9246         PR middle-end/37125
9247         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
9248         if the multiplication does not overflow.
9249
9250 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
9251
9252         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
9253
9254 2008-08-21  Richard Henderson  <rth@redhat.com>
9255
9256         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
9257         spurrious comma from test.
9258         * configure: Rebuild.
9259
9260 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9261
9262         PR 30457
9263         * builtins.c (fold_builtin_next_arg): Add warning about undefined
9264         behaviour.
9265
9266 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
9267
9268         * c-tree.h (grokfield): New argument.
9269         * c-decl.c (grokfield): Handle new location argument.
9270         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
9271
9272 2008-08-21  Richard Guenther  <rguenther@suse.de>
9273
9274         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
9275
9276 2008-08-21  Jan Hubicka  <jh@suse.cz>
9277
9278         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
9279         (cgraph_add_function_insertion_hook,
9280         cgraph_remove_function_insertion_hook,
9281         cgraph_call_function_insertion_hooks): New functions.
9282         * cgraph.h (cgraph_add_function_insertion_hook,
9283         cgraph_remove_function_insertion_hook,
9284         cgraph_call_function_insertion_hooks): Declare.
9285         * ipa-reference.c (function_insertion_hook_holder): New variable.
9286         (check_operand, look_for_address_of): When checking late, do not care
9287         about module bitmaps.
9288         (add_new_function): New function.
9289         (generate_summary): Register hooks; zero module bitmaps.
9290         (propagate): Unregister hooks.
9291         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
9292         (add_new_function): New function.
9293         (generate_summary): Register hook.
9294         (propagate): Remove hook.
9295
9296         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
9297
9298         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
9299         * ipa-cp.c (ipcp_update_cloned_node): New function.
9300         (build_const_val): Handle functions correctly; bring type logic
9301         into sync with tree-inline.c
9302         (ipcp_init_stage):  Take care of computing stuff needed by
9303         indirect inlining; update clones.
9304         (ipcp_generate_summary): Break out of ipcp_driver.
9305         (ipcp_driver): Do only execution and transformation.
9306         (pass_ipa_cp): Make IPA_PASS.
9307         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
9308         offset to address.
9309         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
9310         ipcp, some info is already available.
9311         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
9312         * tree-inline.c (remap_ssa_name): Unshare expression.
9313
9314 2008-08-21  Richard Guenther  <rguenther@suse.de>
9315
9316         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
9317         a PHI ask VN if it is already available.
9318         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
9319         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
9320
9321 2008-08-21  Richard Guenther  <rguenther@suse.de>
9322
9323         PR middle-end/36817
9324         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
9325         makes sure to produce a result of the correct type.
9326
9327 2008-08-21  Jan Hubicka  <jh@suse.cz>
9328         Backport from LTO branch:
9329
9330         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
9331                     Jan Hubicka  <jh@suse.cz>
9332
9333         * ipa-pure-const.c
9334         (init_state, finish_state, set_function_state, generate_summary):
9335         New functions.
9336         (scan_stmt): Renamed from scan_function.  Changed to keep state in
9337         local static vars rather than cgraph aux field.
9338         (propagate): Renamed from static_execute. Changed to keep state in
9339         local static vars rather than cgraph aux field.
9340         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
9341         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
9342
9343         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
9344
9345         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
9346         * ipa-reference.c (init_function_info, generate_summary,
9347         propagate): New functions.
9348         (analyze_function):  Call init_function_info.
9349         (static_execute): Stripped into generate_summary and propagate.
9350         (pass_ipa_reference): Made into ipa_opt_pass.
9351
9352 2008-08-21  Richard Guenther  <rguenther@suse.de>
9353
9354         PR tree-optimization/37181
9355         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
9356         folding result.
9357         (extract_range_from_unary_expr): Likewise.
9358
9359 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9360
9361         * diagnostic.c (pedwarn_at): Rename as pedwarn.
9362         (pedwarn): Delete.
9363         * toplev.h (pedwarn_at): Likewise.
9364         * builtins.c: Update all calls to pedwarn.
9365         * c-lex.c: Likewise.
9366         * toplev.c: Likewise.
9367         * c-tree.h: Likewise.
9368         * c-decl.c: Likewise.
9369         * c-errors.c: Likewise.
9370         * c-typeck.c: Likewise.
9371         * c-common.c: Likewise.
9372         * c-parser.c: Likewise.
9373
9374 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
9375
9376         PR target/31070
9377         * config/sparc/sparc.c (function_arg_slotno): Handle structure
9378         with MODE_VECTOR_INT mode.
9379
9380 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9381
9382         PR middle-end/179
9383         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
9384         initialized outside the current module.
9385         (warn_uninitialized_var): Ignore left-hand side when walking the
9386         trees. Ignore address expressions. Examine VUSE operands in gimple
9387         statements with a variable declaration on the right-hand side.
9388
9389 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
9390
9391         PR bootstrap/37155
9392         * rtlanal.c (subreg_offset_representable_p): Revert last change.
9393
9394 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9395
9396         PR 35701
9397         * c-common.c (conversion_warning): Do not warn if applying bit-and
9398         operator to unsigned constant that fits in the target type.
9399
9400 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9401
9402         PR c++/35602
9403         * c-common.c (conversion_warning): Do not warn for artificial
9404         expressions.
9405
9406 2008-08-20  Richard Guenther  <rguenther@suse.de>
9407
9408         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
9409         (extract_range_from_binary_expr): Fall back to constant propagation.
9410         (extract_range_from_unary_expr): Likewise.
9411
9412 2008-08-20  Richard Guenther  <rguenther@suse.de>
9413
9414         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
9415         with TREE_THIS_VOLATILE on shared nodes.
9416         (fold_stmt_r): Likewise.
9417
9418 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
9419
9420         PR c/37171
9421         * c-parser.c (c_parser_attributes): For keywords use canonical
9422         spelling for attr_name.
9423
9424 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9425
9426         * value-prof.c (check_counter): Revert wrong call to error.
9427
9428 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9429
9430         * profile.c: Update calls to inform.
9431         * value-prof.c: Update calls to inform.
9432
9433 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9434
9435         * diagnostic.c (inform): Add an explicit location_t parameter.
9436         * toplev.h (inform): Update declaration.
9437         * builtins.c: Update all calls to inform.
9438         * c-common.c: Likewise.
9439         * c-decl.c: Likewise.
9440         * c-opts.c: Likewise.
9441         * c-pch.c: Likewise.
9442         * c-pragma.c: Likewise.
9443         * c-typeck.c: Likewise.
9444         * coverage.c: Likewise.
9445         * opts.c: Likewise.
9446         * toplev.c: Likewise.
9447         * tree-cfg.c: Likewise.
9448         * tree-ssa.c: Likewise.
9449
9450 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
9451
9452         PR target/37169
9453         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
9454         V2DI mode, for SSE4.1, use movq instead of vector set if the
9455         second element is zero and inter-unit moves are OK.
9456
9457 2008-08-20  Richard Guenther  <rguenther@suse.de>
9458
9459         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
9460         properly handle conversion/copy chains after tuplification.
9461
9462 2008-08-20  Richard Guenther  <rguenther@suse.de>
9463
9464         * passes.c (init_optimization_passes): Move the second
9465         forwprop pass before alias computation.  Remove the second
9466         DCE pass.  Remove the first dominator and phi copy/const
9467         prop passes.
9468
9469 2008-08-20  Nick Clifton  <nickc@redhat.com>
9470
9471         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
9472         support of this feature.  Do not assume that a sufficiently new
9473         assembler will support the feature regardless of the target type.
9474         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
9475         * configure: Regenerate.
9476
9477 2008-08-20  Richard Guenther  <rguenther@suse.de>
9478
9479         * tree-vrp.c (found_in_subgraph): Remove.
9480         (live): New global static.
9481         (live_on_edge): New function.
9482         (blocks_visited): Remove.
9483         (register_edge_assert_for_2): Use live_on_edge.
9484         (find_conditional_asserts): Remove code dealing with
9485         found_in_subgraph.  Do not walk the CFG.
9486         (find_switch_asserts): Likewise.
9487         (find_assert_locations_1): Renamed from find_assert_locations.
9488         Move finding assert locations for conditional and switch
9489         statements first.  Update live bitmap.  Do not walk the CFG.
9490         (find_assert_locations): New function.
9491         (insert_range_assertions): Remove entry of CFG walk.
9492         Adjust call to find_assert_locations.
9493         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
9494         that only can appear because of fake exit edges but assert we
9495         never try to insert on those.
9496         (fini_pre): Do not remove fake exit edges here...
9497         (execute_pre): ...but here, before committing edge inserts.
9498
9499 2008-08-19  Richard Guenther  <rguenther@suse.de>
9500
9501         * passes.c (init_optimization_passes): Exchange store-ccp
9502         with a ccp pass.
9503
9504 2008-08-19  Rafael Espíndola  <espindola@google.com>
9505
9506         * varasm.c (weak_decls): Move earlier in the file.
9507         (assemble_external): Add weak decls to the weak_decls list.
9508         (declare_weak): Don't add decls to the weak_decls list.
9509
9510 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
9511
9512         PR target/37157
9513         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
9514         before (sse2_shufpd_<mode>).
9515
9516 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
9517
9518         PR debug/37156
9519         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
9520         * tree.c (block_nonartificial_location): Likewise.
9521
9522 2008-08-19  Richard Guenther  <rguenther@suse.de>
9523
9524         PR tree-optimization/35972
9525         PR tree-optimization/23094
9526         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
9527         parameter.
9528         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
9529         handle MISALIGNED_INDIRECT_REF.
9530         (get_ref_from_reference_ops): New helper.
9531         (vn_reference_lookup_pieces): Walk the use-def chain using the
9532         alias-oracle if requested.
9533         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
9534         walking the use-def chain.
9535         (compute_avail): But not here.
9536         (create_component_ref_by_pieces_1): Properly handle
9537         MISALIGNED_INDIRECT_REF.
9538         (do_regular_insertion): Handle fully redundant
9539         expressions after PHI-translation also for SSA_NAME values, not
9540         only constants.  Correctly use edoubleprime for that.
9541
9542 2008-08-19  Ira Rosen  <irar@il.ibm.com>
9543
9544         * tree-vectorizer.c (supportable_widening_operation): Support
9545         multi-step conversion, return the number of steps in such conversion
9546         and the required intermediate types.
9547         (supportable_narrowing_operation): Likewise.
9548         * tree-vectorizer.h (vect_pow2): New function.
9549         (supportable_widening_operation): Change argument types.
9550         (supportable_narrowing_operation): Likewise.
9551         (vectorizable_type_promotion): Add an argument.
9552         (vectorizable_type_demotion): Likewise.
9553         * tree-vect-analyze.c (vect_analyze_operations): Call
9554         vectorizable_type_promotion and vectorizable_type_demotion with
9555         additional argument.
9556         (vect_get_and_check_slp_defs): Detect patterns.
9557         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
9558         types.
9559         (vect_analyze_slp_instance): Don't fail in case of multiple types.
9560         Call vect_build_slp_tree with correct arguments. Calculate unrolling
9561         factor according to the smallest type in the loop.
9562         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
9563         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
9564         supportable_widening_operation with correct arguments.
9565         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
9566         operands lists according to the number of vector statements in left
9567         or right node, if exists.
9568         (vect_gen_widened_results_half): Remove unused argument.
9569         (vectorizable_conversion): Call supportable_widening_operation,
9570         supportable_narrowing_operation, and vect_gen_widened_results_half
9571         with correct arguments.
9572         (vectorizable_assignment): Change documentation, support multiple
9573         types in SLP.
9574         (vectorizable_operation): Likewise.
9575         (vect_get_loop_based_defs): New function.
9576         (vect_create_vectorized_demotion_stmts): Likewise.
9577         (vectorizable_type_demotion): Support loop-aware SLP and general
9578         multi-step conversion. Call vect_get_loop_based_defs and
9579         vect_create_vectorized_demotion_stmts for transformation.
9580         (vect_create_vectorized_promotion_stmts): New function.
9581         (vectorizable_type_promotion): Support loop-aware SLP and general
9582         multi-step conversion. Call vect_create_vectorized_promotion_stmts
9583         for transformation.
9584         (vectorizable_store): Change documentation, support multiple
9585         types in SLP.
9586         (vectorizable_load): Likewise.
9587         (vect_transform_stmt): Pass SLP_NODE to
9588         vectorizable_type_promotion and vectorizable_type_demotion.
9589         (vect_schedule_slp_instance): Move here the calculation of number
9590         of vectorized statements for each node from...
9591         (vect_schedule_slp): ... here.
9592         (vect_transform_loop): Call vect_schedule_slp without the last
9593         argument.
9594
9595 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9596
9597         PR bootstrap/37152
9598         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
9599         to == in assert statement.
9600         (vectorizable_reduction): Fix typo.
9601
9602 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9603
9604         PR bootstrap/37153
9605         * value-prof.c (check_counter): Dereference pointer to overall
9606         count when printing it.
9607
9608 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9609
9610         * profile.h: Really add it.
9611
9612 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9613
9614         * mcf.c: Really add it.
9615
9616 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
9617             Vinodha Ramasamy  <vinodha@google.com>
9618
9619         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
9620         count_scale.
9621         * value-prof.c (check_counter): Fix the counter if
9622         flag_profile_correction is true.
9623         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
9624         tree_mod_subtract_transform):
9625         Follow check_counter parameter change.
9626         * common.opt (fprofile-correction): New option.
9627         * mcf.c: New file.
9628         * profile.h: Likewise.
9629         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
9630         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
9631         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
9632         functions.
9633         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
9634         flag_profile_correction is set.
9635
9636 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
9637
9638         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
9639
9640 2008-08-18  Tomas Bily  <tbily@suse.cz>
9641
9642         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
9643         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
9644         CONVERT_EXPR_P.
9645         * tree-data-ref.c (split_constant_offset_1): Likewise.
9646         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
9647         * tree-sra.c (sra_walk_expr): Likewise.
9648         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
9649         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
9650         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
9651         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
9652         Likewise.
9653         * gimple.c (gimple_assign_unary_nop_p): Likewise.
9654         * tree-vect-transform.c (vectorizable_type_demotion)
9655         (vectorizable_type_promotion): Likewise.
9656         * tree-inline.c (expand_call_inline):
9657         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
9658         (forward_propagate_addr_expr_1, forward_propagate_comparison)
9659         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9660         * expr.c (expand_expr_real_1): Likewise.
9661         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
9662         (gimple_assign_unary_useless_conversion_p): Likewise.
9663         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9664         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
9665         * fold-const.c (fold_unary): Likewise.
9666         * tree.h (CONVERT_EXPR_P): Likewise.
9667         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
9668         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
9669         * tree-vrp.c:
9670         (register_edge_assert_for_2, extract_range_from_unary_expr)
9671         (register_edge_assert_for_1): Likewise.
9672
9673 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9674
9675         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
9676         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
9677         (enum real_value_const): Delete.
9678         (get_real_const): Delete.
9679         * real.c (get_real_const): Delete.
9680         (dconst_e_ptr): Define.
9681         (dconst_third_ptr): Define.
9682         (dconst_sqrt2_ptr): Define.
9683         * builtins.c: Update all callers.
9684
9685 2008-08-18  Richard Guenther  <rguenther@suse.de>
9686
9687         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
9688         statement iterator after statement removal.
9689
9690 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
9691
9692         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
9693         (detect_processor_freebsd): Likewise.
9694         (host_detect_local_cpu): Call newly added functions for FreeBSD.
9695
9696 2008-08-18  Richard Guenther  <rguenther@suse.de>
9697
9698         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
9699         and loads have the correct types.
9700
9701 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9702
9703         PR cpp/7263
9704         * c-opts.c (cpp_opts): Remove static.
9705         * c-parser.c (cpp_opts): Declare it extern.
9706         (disable_extension_diagnostics): Handle cpp options.
9707         (enable_extension_diagnostics): Likewise.
9708
9709 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9710
9711         * diagnostics.c (permerror_at): Rename as permerror.
9712         (permerror): Delete.
9713         * toplev.h: Likewise.
9714
9715 2008-08-18  Richard Guenther  <rguenther@suse.de>
9716
9717         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
9718         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
9719         Move call_cdce before build_alias.  Move copyrename2,
9720         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
9721         right after final inlining.
9722         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
9723         (pass_build_cfg): But instead via TODO_dump_func.
9724
9725 2008-08-18  Richard Guenther  <rguenther@suse.de>
9726
9727         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
9728         element index.
9729         (scalarize_init): If we failed to generate some initializers
9730         do not generate zeros for not instantiated members.  Instead
9731         rely on the copy out.
9732         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
9733         about missing flow-sensitive alias info only if we have
9734         aliases computed.
9735
9736 2008-08-17  Nick Clifton  <nickc@redhat.com>
9737
9738         * doc/extend.texi (Function Attributes): Fix typo in description
9739         if hot function attribute.
9740
9741 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
9742             Richard Sandiford  <rdsandiford@googlemail.com>
9743
9744         * doc/install.texi (--with-mips-plt): Document.
9745         * doc/invoke.texi (-mplt, -mno-plt): Document.
9746         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
9747         and handle ${with_mips_plt}.
9748         * config/mips/mips.opt (mplt): New option.
9749         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
9750         (TARGET_ABICALLS_PIC2): Likewise.
9751         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
9752         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
9753         (ASM_SPEC): Use !mabi=* instead of !mabi*.
9754         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
9755         to decide whether to output ".option picX" directives.
9756         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
9757         Pass -call_nonpic rather than -KPIC for -mplt.
9758         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
9759         on the command line.  Also remove it when -mabi=64 is used without
9760         -msym32.
9761         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
9762         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
9763         TARGET_ABICALLS_PIC0.
9764         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
9765         TARGET_ABICALLS.
9766         (mips16_build_function_stub): Only output ".option pic" directives
9767         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
9768         (mips16_build_call_stub): Fix comment and remove redundant
9769         ".set at"/"set .noat" directives.
9770         (mips_function_rodata_section): Use the default behaviour for
9771         TARGET_ABSOLUTE_ABICALLS.
9772         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
9773         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
9774         (mips_restore_gp): Do nothing if the current function doesn't use
9775         a global pointer.
9776         (mips_expand_prologue): Only save $gp if the current function uses it.
9777         Use a normal move for TARGET_ABICALLS_PIC0.
9778         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
9779
9780 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
9781
9782         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
9783         of function when handling GLOBAL_POINTER_REGNUM.
9784
9785 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
9786
9787         PR ada/20548
9788         * common.opt (-fstack-check): Do not declare the variable here.
9789         (-fstack-check=): New option variant.
9790         * doc/invoke.texi (Code Gen Options): Document it.
9791         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
9792         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
9793         (STACK_CHECK_STATIC_BUILTIN): New macro.
9794         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
9795         * opts.c: Include expr.h.
9796         (common_handle_option) <OPT_fold_stack_check_>: New case.
9797         <OPT_fstack_check>: Likewise.
9798         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
9799         consistently in the test for variable-sized types.  Adjust for
9800         new behaviour of flag_stack_check.
9801         * explow.c: Include except.h.
9802         (allocate_dynamic_stack_space): Do not take into account
9803         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
9804         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
9805         for variable-sized parameters.  Treat all parameters whose size is
9806         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
9807         stack checking is enabled.
9808         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
9809         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
9810         if generic stack checking is enabled.
9811         (expand_function_end): Adjust for new behaviour of flag_stack_check.
9812         * reload1.c (reload): Likewise.
9813         * stmt.c (expand_decl): Assert that all automatic variables have
9814         fixed size at this point and remove dead code.
9815         * flags.h (stack_check_type): New enumeration type.
9816         (flag_stack_check): Declare.
9817         * toplev.c (flag_stack_check): New global variable.
9818         * Makefile.in (opts.o): Add dependency on EXPR_H.
9819         (explow.o): Add dependency on except.h.
9820
9821 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
9822
9823         * config/avr/avr.c (avr_override_options): Reduce value of
9824         PARAM_INLINE_CALL_COST.
9825
9826 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
9827
9828         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
9829         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
9830         lieu of TYPE_MODE (type) throughout.
9831
9832 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
9833
9834         * config/arm/arm.c (add_minipool_backward_ref): Check for
9835         8-byte-aligned entries in second case of forcing insertion after a
9836         particular entry.  Change third case to avoid inserting
9837         non-8-byte-aligned entries before 8-byte-aligned ones.
9838
9839 2008-08-15  Richard Guenther  <rguenther@suse.de>
9840
9841         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
9842         strip components for unknown size accesses.
9843
9844 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
9845
9846         * config/s390/2097.md New file.
9847         * config/s390/s390.md ("z10prop" attribute): Define none,
9848         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
9849         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
9850         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
9851         possible values and apply them to insns as appropriate.
9852         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
9853         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
9854         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
9855         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
9856         ("bfp" mode attribute): Removed.  Every occurence replaced
9857         with <mode>.
9858         * config/s390/s390.c (struct "z10_cost"): Updated entries.
9859         * config/s390/2084.md (insn_reservation "x_itof"): Updated
9860         type attribute.
9861
9862 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9863
9864         PR c/28152
9865         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
9866         for keywords.
9867
9868 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
9869
9870         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
9871         additional argument. Support reduction when duplication is needed due
9872         to data-types of different sizes in the loop.
9873         (get_initial_def_for_induction): Fix printout.
9874         (vect_get_vec_def_for_stmt_copy): Support case where the
9875         vec_stmt_for_operand is a phi node.
9876         (vectorizable_reduction): Support reduction when duplication is needed
9877         due to data-types of different sizes in the loop.
9878         (vectorizable_call): Remove restriction to not vectorize in case we
9879         have data-types of different sizes in the loop.
9880         (vectorizable_conversion): Likewise.
9881         (vectorizable_operation): Likewise.
9882         (vectorizable_type_demotion): Likewise.
9883         (vectorizable_type_promotion): Likewise.
9884         (vectorizable_induction): Add restriction to not vectorize in case
9885         we have data-types of different sizes in the loop.
9886
9887 2008-08-14  Christophe Saout  <christophe@saout.de>
9888             Uros Bizjak  <ubizjak@gmail.com>
9889
9890         PR target/37101
9891         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
9892         (*vec_concatv2di_rex64_sse4_1): Ditto.
9893         (*vec_concatv2di_rex64_sse): Ditto.
9894
9895 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
9896
9897         PR middle-end/37103
9898         * fold-const.c (fold_widened_comparison): Do not allow
9899         sign changes that change the result even if shorter type
9900         is wider than arg1_unw's type.
9901
9902 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
9903
9904         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
9905         Skip if the multilib testing specifies -march that does not
9906         agree with the one specified in the testcase.
9907
9908 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9909
9910         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
9911         zero extend SImode values being converted to TFmode before passing
9912         to libcalls.
9913
9914 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9915
9916         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
9917         __PPU__ when targeting the Cell/B.E. PPU processor.
9918
9919 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
9920
9921         * gimple.h (gimple_call_set_chain): Accept SSA variables.
9922         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
9923         Rematerialize the static chain, if any.
9924         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
9925         static chain.
9926
9927 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9928
9929         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
9930         (new_loc_descr): Likewise.
9931         (add_loc_descr): Likewise.
9932         (size_of_loc_descr): Likewise.
9933         (size_of_locs): Likewise.
9934         (output_loc_operands): Likewise.
9935         (output_loc_sequence): Likewise.
9936         (new_reg_loc_descr): New.
9937         (build_cfa_loc): Use it.
9938         (build_cfa_aligned_loc): Likewise.
9939         (one_reg_loc_descriptor): Likewise.
9940         (based_loc_descr): Likewise.
9941
9942 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9943
9944         PR 30551
9945         * doc/invoke.texi (Wmain): Update.
9946         * c-decl.c (start_decl): warn_main is only 0 or 1.
9947         (start_function): Likewise. Fix formatting.
9948         (finish_function): Delete redundant warning.
9949         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
9950         * c-opts (c_common_handle_option): -Wall only has effect if
9951         warn_main is uninitialized. OPT_Wmain is automatically
9952         handled. -pedantic also enables Wmain.
9953         (c_common_post_options): Handle all logic for Wmain here.
9954         * c-common.c (warn_main): Delete.
9955         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
9956         * c-common.h (warn_main): Delete.
9957
9958 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9959
9960         PR middle-end/36701
9961         * expr.c (emit_group_store): Allocate stack temp with the
9962         largest alignment when copying from register to stack.
9963
9964 2008-08-13  Richard Guenther  <rguenther@suse.de>
9965
9966         * tree.h (maybe_fold_offset_to_address): Declare.
9967         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
9968         (ccp_fold): Handle pointer conversions the same as fold_stmt.
9969         Likewise for POINTER_PLUS_EXPR.
9970         (maybe_fold_offset_to_reference): Enable disabled code.
9971         (maybe_fold_offset_to_address): New function.
9972         (fold_stmt_r): Use it.
9973         (fold_gimple_assign): Likewise.
9974         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
9975         (gimplify_expr): Likewise.
9976
9977 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9978
9979         * toplev.h (pedwarn_at): Fix declaration.
9980
9981 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9982
9983         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
9984         LINK_SPEC): Use %R in -Y P argument.
9985
9986 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9987
9988         PR c/15236
9989         * diagnostic.c (pedwarn_at): New.
9990         * toplev.h (pedwarn_at): Declare.
9991         * c-tree.h (build_enumerator): Update declaration.
9992         * c-decl.c (finish_enum): Update comment.
9993         (build_enumerator): Take a location parameter. Give a pedwarn but do
9994         not perform any conversion.
9995         * c-parser.c (c_parser_enum_specifier): Set correct location for
9996         enumerator.
9997
9998 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9999
10000         PR 35635
10001         * c-common.c (conversion_warning): Use a switch. Ignore boolean
10002         expressions except for conversions to signed:1 bitfields. Handle
10003         COND_EXPR with constant operands.
10004
10005 2008-08-13  Richard Guenther  <rguenther@suse.de>
10006
10007         PR tree-optimization/15255
10008         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
10009         (struct oecount_s): New struct and VEC types.
10010         (cvec): New global.
10011         (oecount_hash): New function.
10012         (oecount_eq): Likewise.
10013         (oecount_cmp): Likewise.
10014         (zero_one_operation): New function.
10015         (build_and_add_sum): Likewise.
10016         (undistribute_ops_list): Perform un-distribution of multiplication
10017         and division on the chain of summands.
10018         (should_break_up_subtract): Also break up subtracts for factors.
10019         (reassociate_bb): Delete dead visited statements.
10020         Call undistribute_ops_list.  Re-sort and optimize if it did something.
10021         * passes.c (init_optimization_passes): Move DSE before
10022         reassociation.
10023         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
10024         PHI nodes.
10025
10026 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
10027
10028         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
10029
10030         * doc/invoke.texi: Revert unintended checkin.
10031
10032 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
10033
10034         PR libgomp/26165
10035         * gcc.c (include_spec_function): Tweak call to find_a_file.
10036
10037 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10038
10039         PR middle-end/37014
10040         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
10041         and TRUTH_ORIF_EXPR.
10042         * dojump.c (do_jump): Likewise.
10043
10044         PR tree-optimization/37084
10045         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
10046         if id->regimplify, don't assume stmt is a cast assignment.
10047
10048 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
10049
10050         * final.c (final_scan_insn): Use app_enable/app_disable functions.
10051
10052 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10053
10054         PR bootstrap/37097
10055         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
10056         by last change.
10057
10058 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10059
10060         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
10061         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
10062
10063         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
10064         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
10065         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
10066         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
10067         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
10068
10069         * doc/tm.texi (Storage Layout): Remove documentation for
10070         TARGET_FLOAT_FORMAT.
10071
10072         * simplify-rtx.c (simplify_binary_operation_1): Replace
10073         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
10074
10075 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10076
10077         * real.h (struct real_format): New member has_sign_dependent_rounding.
10078         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
10079         spu_single_format, ieee_double_format, mips_double_format,
10080         motorola_double_format, ieee_extended_motorola_format,
10081         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10082         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10083         mips_extended_format, ieee_quad_format, mips_quad_format,
10084         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10085         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10086
10087         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10088         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10089         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10090         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10091         (ROUND_TOWARDS_ZERO): Likewise.
10092
10093         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
10094         (FLOAT_MODE_FORMAT): New macro.
10095         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
10096         (MODE_COMPOSITE_P): ... this new macro.
10097         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10098         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
10099         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
10100
10101         * flags.h: Include "real.h".
10102
10103         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
10104         REAL_MODE_FORMAT_COMPOSITE_P.
10105         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
10106
10107         * doc/tm.texi (Storage Layout): Remove documentation of
10108         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10109         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
10110         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
10111         they only apply to libgcc2.a.
10112
10113 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10114
10115         * config/spu/float_disf.c: New file.
10116         * config/spu/float_unsdisf.c: New file.
10117         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
10118         (LIB2FUNCS_EXCLUDE): Define.
10119
10120 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10121             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10122
10123         * real.h (struct real_format): New member round_towards_zero.
10124         * real.c (round_for_format): Respect fmt->round_towards_zero.
10125         (ieee_single_format, mips_single_format, motorola_single_format,
10126         spu_single_format, ieee_double_format, mips_double_format,
10127         motorola_double_format, ieee_extended_motorola_format,
10128         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10129         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10130         mips_extended_format, ieee_quad_format, mips_quad_format,
10131         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10132         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10133
10134         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
10135         real_format to choose rounding mode when calling MPFR functions.
10136         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
10137         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
10138
10139         * real.h (real_to_decimal_for_mode): Add prototype.
10140         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
10141         Respect target rounding mode when generating decimal representation.
10142         (real_to_decimal): New stub for backwards compatibility.
10143         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
10144         real_to_decimal_for_mode instead of real_to_decimal.
10145
10146         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
10147
10148 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10149             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10150
10151         * real.c (spu_single_format): New variable.
10152         * real.h (spu_single_format): Declare.
10153
10154         * config/spu/spu.c (spu_override_options): Install SFmode format.
10155         (spu_split_immediate): Use integer mode to operate on pieces of
10156         floating-point values in all cases.
10157
10158         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
10159         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
10160         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
10161
10162 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10163
10164         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
10165
10166 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10167
10168         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
10169
10170 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10171
10172         PR c++/36688
10173         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
10174         on the VAR_DECL instead of TYPE_READONLY on its type.
10175
10176 2008-08-12  Ira Rosen  <irar@il.ibm.com>
10177
10178         * tree-vectorizer.c: Depend on langhooks.h.
10179         (supportable_widening_operation): Add two arguments. Support double
10180         type conversions.
10181         (supportable_narrowing_operation): Likewise.
10182         * tree-vectorizer.h (supportable_widening_operation): Add two
10183         arguments.
10184         (supportable_narrowing_operation): Likewise.
10185         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
10186         supportable_widening_operation with correct arguments.
10187         * tree-vect-transform.c (vectorizable_conversion): Likewise.
10188         (vectorizable_type_demotion): Support double type conversions.
10189         (vectorizable_type_promotion): Likewise.
10190         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
10191
10192 2008-08-11  Michael Matz  <matz@suse.de>
10193
10194         * i386/i386.c (override_options): Move initialisation from
10195         flag_schedule_insns_after_reload to here from ...
10196         (optimization_options): ... here.
10197
10198 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
10199
10200         PR rtl-optimization/36998
10201         * dwarf2out.c (compute_barrier_args_size_1,
10202         compute_barrier_args_size): Temporarily remove assertions.
10203
10204 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10205
10206         PR middle-end/20644
10207         * tree-ssa.c (struct walk_data): Add new flag
10208         warn_possibly_uninitialized.
10209         (warn_uninitialized_var): Use it.
10210         (warn_uninitialized_vars): New.
10211         (execute_early_warn_uninitialized): Call it.
10212         (execute_late_warn_uninitialized): Likewise.
10213
10214 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10215
10216         PR middle-end/36238
10217         * reload1.c (gen_reload): Guard calls to get_secondary_mem
10218         for memory subregs.
10219
10220 2008-08-09  Jan Hubicka  <jh@suse.cz>
10221
10222         PR target/37055
10223         * optabs.c (maybe_emit_unop_insn): Remove produced code if
10224         expansion failed.
10225         (expand_fix): Be prepared for expansion to fail.
10226         (expand_sfix_optab): Remove instructions if expansion failed.
10227
10228 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
10229
10230         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
10231         avr31 architecture.
10232         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
10233         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10234
10235 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10236
10237         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
10238         mips/t-libgcc-mips16 to tmake_file.
10239         * config/mips/mips-protos.h (mips_call_type): New enum.
10240         (mips_pic_base_register, mips_got_load): Declare.
10241         (mips_restore_gp): Take an rtx argument.
10242         (mips_use_pic_fn_addr_reg_p): Declare.
10243         (mips_expand_call): Replace the sibcall_p argument with
10244         a mips_call_type argument.  Add a lazy_p parameter.
10245         (mips_split_call): Declare.
10246         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
10247         (MIPS16_PIC_TEMP): Likewise.
10248         (reg_class): Delete M16_NA_REGS.
10249         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
10250         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
10251         (mips_split_hi_p): Declare.
10252         * config/mips/mips.c (mips_split_hi_p): New array.
10253         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
10254         (mips_got_symbol_type_p): New function.
10255         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
10256         (mips16_stub_function_p): New function.
10257         (mips16_local_function_p): Likewise.
10258         (mips_use_pic_fn_addr_reg_p): Likewise.
10259         (mips_cannot_force_const_mem): Return false for HIGHs.
10260         Extend CONST_INT and symbolic handling to MIPS16, using
10261         mips_symbol_insns to check that the base symbol type is a
10262         legitimate constant.  Reject GOT-based constants if
10263         TARGET_MIPS16_PCREL_LOADS.
10264         (mips_const_insns): Check targetm.cannot_force_const_mem when
10265         decomposing a symbolic base and a large offset.
10266         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
10267         When calling a function that needs $25 from MIPS16 code,
10268         move the target address into $25 separately and add a USE
10269         to the call insn.
10270         (mips16_gp_pseudo_reg): Insert the initializer immediately
10271         before the first real insn.
10272         (mips_pic_base_register, mips_got_load): New functions.
10273         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
10274         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
10275         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
10276         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
10277         (mips_call_tls_get_addr): Update the call to mips_expand_call,
10278         also passing NULL_RTX rather than const0_rtx as the aux argument.
10279         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
10280         instead of TARGET_EXPLICIT_RELOCS.
10281         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
10282         (mips_load_call_address): Replace the sibcall_p argument with
10283         a mips_call_type argument.  Use mips_got_load.
10284         (mips16_local_alias): New structure.
10285         (mips16_local_aliases): New variable.
10286         (mips16_local_aliases_hash): New function.
10287         (mips16_local_aliases_eq): Likewise.
10288         (mips16_local_alias): Likewise.
10289         (mips16_stub_function): Likewise.
10290         (mips16_build_function_stub): Create a local alias for the target
10291         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
10292         .cpload directive and an R_MIPS_NONE relocation for the target
10293         function, then load the alias rather than the function itself.
10294         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
10295         (mips16_copy_fpr_return_value): Use mips16_stub_function and
10296         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
10297         (mips16_build_call_stub): Replace the FN parameter with an
10298         FN_PTR parameter.  Force the address into a register if it
10299         isn't a call_insn_operand; don't rely on the caller to do this.
10300         If a call to a locally-defined and locally-binding MIPS16
10301         function must be made indirectly, redirect the call to the
10302         function's local alias.  Use mips16_stub_function_p,
10303         mips16_stub_function, mips_expand_call and use_reg.
10304         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
10305         Use explicit %hi and %lo accesses where possible.
10306         Use MIPS_CALL to generate the correct code form of a
10307         jal instruction.  Add clobbers of $18 instead of uses.
10308         Update the call to mips_emit_call_insn.
10309         (mips_expand_call): Replace the SIBCALL_P argument with a
10310         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
10311         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
10312         allowing it to modify the call address.  Update the calls to
10313         mips_load_call_address and mips_emit_call_insn.
10314         (mips_split_call): New function.
10315         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
10316         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
10317         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
10318         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
10319         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
10320         if TARGET_MIPS16.
10321         (mips_cprestore_slot): New function.
10322         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
10323         and use mips_cprestore_slot.
10324         (mips_output_function_prologue): Handle TARGET_MIPS16 for
10325         LOADGP_OLDABI.
10326         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
10327         then use a copygp_mips16 instruction to set up $28.
10328         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
10329         (mips16_lay_out_constants): Call split_all_insns_noflow.
10330         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
10331         false if TARGET_MIPS16.
10332         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
10333         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
10334         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
10335         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
10336         MIPS16 code.  Allow MIPS16 o32 PIC.
10337         (mips_override_options): Allow MIPS16 o32 PIC.
10338         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
10339         after reload if TARGET_USE_GOT.
10340         (UNSPEC_COPYGP): New constant.
10341         (length): Use a default length of 8 for MIPS16 GOT loads.
10342         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
10343         (*got_page<mode>): Check mips_split_hi_p.
10344         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
10345         (unspec_got<mode>, unspec_call<mode>): New expanders.
10346         (load_got<mode>, load_call<mode>): Remove the length attributes.
10347         Use a got attribute instead of a type attribute.
10348         (copygp_mips16): New insn.
10349         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
10350         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
10351         (sibcall, sibcall_value, call, call_value): Update the calls
10352         to mips_expand_call.
10353         (call_internal, call_value_internal): Use mips_split_call.
10354         (call_value_multiple_internal): Likewise.
10355         (call_split): Move after call_internal (the insn it is split from).
10356         (call_internal_direct, call_value_internal_direct): Turn into
10357         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
10358         (call_direct_split, call_value_direct_split): New patterns.
10359         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
10360         and use M16_REGS instead of M16_NA_REGS.
10361         * config/mips/predicates.md (const_call_insn_operand): Replace
10362         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
10363         mips_use_pic_fn_addr_reg_p check.
10364         (move_operand): Reject HIGHs if mips_split_hi_p.
10365         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
10366         (__mips16_floatunsisf): Inline __mips16_floatsisf.
10367         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
10368         * config/mips/libgcc-mips16.ver: New file.
10369         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
10370         $(srcdir)/config/mips/libgcc-mips16.ver.
10371
10372 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10373
10374         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
10375         in file.
10376         (mips_unspec_address, mips_unspec_offset_high): Likewise.
10377         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
10378         (mips16_cfun_returns_in_fpr_p): Likewise.
10379
10380 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10381
10382         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
10383         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
10384         rather than 4 to PC.
10385
10386 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10387
10388         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
10389         (FUNCTION_PROFILER): Save the static chain pointer into $2
10390         beforehand and restore it aftewards.
10391         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
10392         address directly into $25 and call the function through $25;
10393         do not clobber $3.  Pad the DImode version to cover the space
10394         left by the deleted $25 <- $3 move.
10395         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
10396         the removal of the $25 <- $3 move.
10397         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
10398         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10399
10400 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10401             Daniel Jacobowitz  <dan@codesourcery.com>
10402
10403         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
10404         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
10405         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
10406         * config/mips/mips.c (mips_start_function_definition): New function.
10407         (mips_end_function_definition): Likewise.
10408         (mips_output_function_prologue): Use mips_start_function_definition.
10409         (mips_output_function_epilogue): Use mips_end_function_definition.
10410         (build_mips16_function_stub): Use mips_start_function_definition
10411         and mips_end_function_definition.
10412         (build_mips16_call_stub): Likewise.
10413
10414 2008-08-09  Richard Guenther  <rguenther@suse.de>
10415
10416         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
10417         * gimple.h (gimple_call_fn): Adjust comment.
10418         (gimple_call_set_fndecl): New function.
10419         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
10420         longer having bare FUNCTION_DECL operand.
10421         (gimple_call_return_type): Likewise.
10422         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
10423
10424         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
10425         (gimple_mod_pow2): Likewise.
10426         (gimple_mod_subtract): Likewise.
10427         (gimple_ic): Likewise.
10428         (gimple_stringop_fixed_value): Likewise.
10429         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
10430         longer having bare FUNCTION_DECL operand.
10431         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
10432         * omp-low.c (optimize_omp_library_calls): Likewise.
10433         * cgraphunit.c (update_call_expr): Likewise.
10434         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
10435         (execute_convert_to_rsqrt): Likewise.
10436         * cfgexpand.c (gimple_to_tree): Simplify.
10437         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
10438         bare FUNCTION_DECL operand.
10439         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
10440         (convert_gimple_call): Use gimple_call_fndecl.
10441         * c-common.c (c_warn_unused_result): Likewise.
10442
10443 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10444
10445         PR c/17880
10446         * c-typeck.c (digest_init): Call verify_sequence_points from here.
10447         (c_finish_return): Likewise.
10448         (c_start_case): Likewise.
10449         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
10450         * c-parser.c (c_parser_condition): New. Call
10451         verify_sequence_points.
10452         (c_parser_paren_condition): Call c_parser_condition.
10453         (c_parser_for_statement): Call c_parser_condition.
10454
10455 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10456
10457         PR 36901
10458         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
10459         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
10460         Moved from diagnostic.h
10461         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
10462         DK_PERMERROR.
10463         (emit_diagnostic): New.
10464         (warning0, pedwarn0): Delete.
10465         (warning, warning_at, pedwarn, permerror): Return bool.
10466         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
10467         Moved to diagnostic.c.
10468         (struct diagnostic_context): Use correct type for
10469         classify_diagnostic.
10470         (diagnostic_report_diagnostic): Update declaration.
10471         (emit_diagnostic): Declare.
10472         * errors.c (warning): Return bool.
10473         * errors.h (warning): Update declaration.
10474         * toplev.h (warning0, pedwarn0): Delete.
10475         (warning, warning_at, pedwarn, permerror): Return bool.
10476         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
10477         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
10478         inform. Update all calls.
10479         (diagnose_mismatched_decls): Check return value of warning/pedwarn
10480         before giving informative note.
10481         (implicit_decl_warning): Likewise.
10482         * c-typeck.c (build_function_call): Likewise.
10483         * tree-sssa.c (warn_uninit): Likewise.
10484         * builtins.c (gimplify_va_arg_expr): Likewise.
10485
10486 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10487
10488         PR 7651
10489         * doc/invoke.texi (-Wextra): Move warning from here...
10490         (-Wuninitialized): ... to here.
10491
10492 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10493
10494         PR 28875
10495         * flags.h (set_Wunused): Delete
10496         * toplev.c (process_options): Handle Wunused flags here.
10497         * opts.c (maybe_warn_unused_parameter): Delete.
10498         (common_handle_option): Replace set_Wunused by warn_unused.
10499         (set_Wextra): Do not handle Wunused-parameter here.
10500         (set_Wunused): Delete.
10501         * c-opts.c (c_common_handle_option): Replace set_Wunused by
10502         warn_unused.
10503         * common.opt (Wunused): Add Var and Init.
10504         (Wunused-function): Likewise.
10505         (Wunused-label): Likewise.
10506         (Wunused-parameter): Likewise.
10507         (Wunused-value): Likewise.
10508         (Wunused-variable): Likewise.
10509
10510 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
10511
10512         * doc/invoke.texi: Add cpu_type power7.
10513         * config.in (HAVE_AS_VSX): New.
10514         * config.gcc: Add cpu_type power7.
10515         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
10516         VSX instructions.
10517         * configure: Regenerate.
10518         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
10519         power5.
10520         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
10521         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
10522         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
10523
10524 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
10525
10526         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
10527         type to vectorize.builtin_conversion.
10528         (vectorizable_conversion): Likewise.
10529         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
10530         integral type as input.
10531         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
10532         FIX_TRUNC_EXPR.
10533         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
10534         and ALTIVEC_BUILTIN_VCTSXS.
10535         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
10536         formatting.
10537
10538 2008-08-08  Richard Guenther  <rguenther@suse.de>
10539
10540         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
10541         (surely_varying_stmt_p): Calls are varying only if they are
10542         non-builtin and not indirect or have no result.
10543         (ccp_fold): Re-instantiate code before the tuples merge.
10544
10545 2008-08-08  Richard Guenther  <rguenther@suse.de>
10546
10547         PR tree-optimization/37056
10548         * gimple.h (gimple_assign_rhs_class): New helper function.
10549         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
10550         unary operations properly.
10551
10552 2008-08-07  Jan Hubicka  <jh@suse.cz>
10553
10554         * i386.h (ix86_size_cost): Declare.
10555         (ix86_cur_cost): New function macro.
10556         * i386.md (peepholes expanding size and splitters): Predicate by
10557         optimize_insn_for_speed_p.
10558         (peepholes reduce size and splitters): Predicate by
10559         optimize_insn_for_size_p.
10560         * i386.c (ix86_size_cost): Rename from ...
10561         (size_cost): This one.
10562         (override_options): Update.
10563         (decide_alg): Likewise.
10564         (ix86_expand_clear): Use RTL profile.
10565         (ix86_pad_returns): Use RTL profile.
10566
10567 2008-08-07  Jan Hubicka  <jh@suse.cz>
10568
10569         * recog.c (split_all_insns): Set RTL profile
10570         (peephole2_optimize): Likewise.
10571         * function.c (thread_prologue_and_epilogue_insns): Likewise.
10572         * combine.c (combine_instructions): Likewise.
10573
10574 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10575
10576         * c-common.c (c_common_reswords): Also warn about keyword "bool".
10577
10578 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
10579
10580         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
10581         value in a6 after the set_frame_ptr insn.
10582
10583 2008-08-07  Richard Henderson  <rth@redhat.com>
10584
10585         PR debug/37033
10586         * gcc.c (cpp_options): Pass along -g*.
10587
10588 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10589
10590         * config/arm/arm.c (output_move_neon): Update comment describing
10591         big-endian vector layout.
10592         (arm_assemble_integer): Do not handle big-endian NEON vectors
10593         specially.
10594         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
10595         neon_vget_lane<mode>_sext_internal,
10596         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
10597         element indices for big-endian.
10598
10599 2008-08-07  Richard Henderson  <rth@redhat.com>
10600
10601         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
10602         * configure, config.in: Rebuild.
10603         * debug.h (dwarf2out_do_cfi_asm): Declare.
10604         * c-cppbuiltin.c (c_cpp_builtins): Use it.
10605         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
10606         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
10607         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
10608
10609 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10610
10611         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10612         movv2si_internal): Combine into mov<mode>_internal.
10613         (movv2si_internal_2): Remove.
10614
10615 2008-08-07  Jan Hubicka  <jh@suse.cz>
10616
10617         PR target/37048
10618         * i386.md (single stringop patterns): Enable unconditionally.
10619
10620 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
10621
10622         PR target/36992
10623         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
10624
10625         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
10626         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
10627
10628         * config/i386/sse.md (sse2_movq128): New.
10629
10630         * doc/extend.texi: Document __builtin_ia32_movq128.
10631
10632 2008-08-07  Richard Guenther  <rguenther@suse.de>
10633
10634         PR middle-end/37042
10635         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
10636         pointers can access anything.
10637
10638 2008-08-06  Jan Hubicka  <jh@suse.cz>
10639
10640         * optabs.c (emit_unop_insn): Break out to ...
10641         (maybe_emit_unop_insn): ... this one.
10642         (expand_sfix_optab): Use maybe variant.
10643         * optabs.h (maybe_emit_unop_insn): Declare.
10644
10645         * i386.md (mov0 patterns): Enable by default.
10646         (FP conversion expanders): Disable expansion of code expanding
10647         sequences when instruction should be optimized for size.
10648         (single strinop patterns): Enable when optimizing for size.
10649         (string expanders): Disable expanding of code expanding sequences
10650         when optimizning instruction for size.
10651         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
10652         per BB basis.
10653         (ix86_fp_comparison_sahf_cost): Likewise.
10654         (ix86_expand_branch): Likewise.
10655         (ix86_expand_ashl_const): Likewise.
10656         (ix86_split_ashl): Likewise.
10657         (ix86_expand_strlen): Likewise.
10658         (ix86_emit_fp_unordered_jump): Likewie.
10659
10660 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10661
10662         * c-common.c: Fix typo.
10663         (c_common_reswords): Activate more C++ keyword warnings.
10664
10665         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
10666
10667 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10668
10669         PR 26785
10670         * diagnostic.c (permerror_at): New.
10671         * toplev.h (permerror_at): Declare.
10672
10673 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
10674             Ira Rosen  <irar@il.ibm.com>
10675
10676         * tree-vect-transform.c (vect_model_simple_cost): Return
10677         immediately if stmt is pure SLP.
10678         (vect_model_store_cost): Ditto.
10679         (vect_model_load_cost): Ditto.
10680         (vectorizable_store): Remove PURE_SLP check before call
10681         to vect_model_store_cost.
10682         (vect_model_store_cost): When checking whether stmt describe
10683         strided access, add a check that it is not slp_node.
10684
10685 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10686
10687         PR 8715
10688         * c-common.c (warn_for_sign_compare): New. Handle separately the
10689         case that 'constant' is zero.
10690         * c-typeck.c (build_binary_op): Move code to c-common.c
10691
10692 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10693
10694         * config/alpha/alpha.c (alpha_preferred_reload_class,
10695         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
10696         alpha_output_mi_thunk_osf): Avoid C++ keywords.
10697         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
10698         * config/arm/arm.md: Likewise.
10699         * config/avr/avr-protos.h (preferred_reload_class,
10700         test_hard_reg_class, avr_simplify_comparison_p,
10701         out_shift_with_cnt, class_max_nregs): Likewise.
10702         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
10703         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
10704         preferred_reload_class, test_hard_reg_class): Likewise.
10705         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
10706         bfin_memory_move_cost, bfin_secondary_reload,
10707         bfin_output_mi_thunk): Likewise.
10708         * config/crx/crx.c (crx_secondary_reload_class,
10709         crx_memory_move_cost): Likewise.
10710         * config/frv/frv-protos.h (frv_secondary_reload_class,
10711         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
10712         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
10713         frv_secondary_reload_class, frv_class_likely_spilled_p,
10714         frv_class_max_nregs): Likewise.
10715         * config/h8300/h8300.c (h8300_classify_operand,
10716         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
10717         Likewise.
10718         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
10719         * config/ia64/ia64.c (ia64_preferred_reload_class,
10720         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
10721         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
10722         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
10723         Likewise.
10724         * config/m68hc11/m68hc11.c (preferred_reload_class,
10725         m68hc11_memory_move_cost): Likewise.
10726         * config/mcore/mcore.c (mcore_secondary_reload_class,
10727         mcore_reload_class): Likewise.
10728         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
10729         mips_class_max_nregs, mips_cannot_change_mode_class,
10730         mips_preferred_reload_class, mips_secondary_reload_class,
10731         mips_output_mi_thunk): Likewise.
10732         * config/mmix/mmix.c (mmix_preferred_reload_class,
10733         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
10734         Likewise.
10735         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
10736         Likewise.
10737         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
10738         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
10739         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10740         * config/rs6000/rs6000.c (paired_expand_vector_init,
10741         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
10742         compare_section_name, rs6000_memory_move_cost): Likewise.
10743         * config/s390/s390.c (s390_emit_compare_and_swap,
10744         s390_preferred_reload_class, s390_secondary_reload,
10745         legitimize_pic_address, legitimize_tls_address,
10746         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
10747         s390_class_max_nregs): Likewise.
10748         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10749         * config/s390/s390.md: Likewise.
10750         * config/score/score-protos.h (score_secondary_reload_class,
10751         score_preferred_reload_class): Likewise.
10752         * config/score/score.c (score_preferred_reload_class,
10753         score_secondary_reload_class): Likewise.
10754         * config/score/score3.c (score3_output_mi_thunk,
10755         score3_preferred_reload_class, score3_secondary_reload_class,
10756         score3_hard_regno_mode_ok): Likewise.
10757         * config/score/score3.h (score3_preferred_reload_class,
10758         score3_secondary_reload_class): Likewise.
10759         * config/score/score7.c (score7_output_mi_thunk,
10760         score7_preferred_reload_class, score7_secondary_reload_class,
10761         score7_hard_regno_mode_ok): Likewise.
10762         * config/score/score7.h (score7_preferred_reload_class,
10763         score7_secondary_reload_class): Likewise.
10764         * config/sh/sh.c (prepare_move_operands, output_far_jump,
10765         output_branchy_insn, add_constant, gen_block_redirect,
10766         sh_insn_length_adjustment, sh_cannot_change_mode_class,
10767         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
10768         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10769         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
10770         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
10771         xstormy16_preferred_reload_class): Likewise.
10772         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
10773         xtensa_expand_atomic, override_options,
10774         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
10775         Likewise.
10776         * reorg.c (try_merge_delay_insns): Likewise.
10777         * tree.c (merge_dllimport_decl_attributes): Likewise.
10778
10779         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
10780
10781 2008-08-06  Michael Matz  <matz@suse.de>
10782
10783         * Makefile.in (write_entries_to_file): Quote words.
10784         * gengtype.c: (read_input_line): Skip over leading white-space.
10785
10786 2008-08-06  Marc Gauthier  <marc@tensilica.com>
10787
10788         * config.gcc: Match more processor names for Xtensa.
10789         * configure.ac: Likewise.
10790         * doc/install.texi (Specific): Likewise.
10791         * configure: Regenerate.
10792
10793 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10794
10795         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
10796         * calls.c (avoid_likely_spilled_reg): Likewise.
10797         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
10798         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
10799         * config/i386/i386.c (ix86_expand_special_args_builtin,
10800         ix86_secondary_reload): Likewise.
10801         * except.c (struct eh_region, gen_eh_region_catch,
10802         remove_unreachable_regions, duplicate_eh_regions,
10803         assign_filter_values, build_post_landing_pads,
10804         sjlj_find_directly_reachable_regions, remove_eh_handler,
10805         reachable_next_level, foreach_reachable_handler,
10806         can_throw_internal_1, can_throw_external_1,
10807         collect_one_action_chain): Likewise.
10808         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
10809         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
10810         * function.c (update_temp_slot_address, instantiate_new_reg,
10811         instantiate_virtual_regs_in_rtx,
10812         instantiate_virtual_regs_in_insn): Likewise.
10813         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
10814         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
10815         gimplify_cleanup_point_expr): Likewise.
10816         * ipa-cp.c (ipcp_lattice_changed): Likewise.
10817         * passes.c (next_pass_1): Likewise.
10818         * print-tree.c (print_node_brief, print_node): Likewise.
10819         * profile.c (branch_prob): Likewise.
10820         * tree-dump.c (dump_register): Likewise.
10821         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
10822         Likewise.
10823         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
10824         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
10825         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
10826         copy_arguments_for_versioning, copy_static_chain): Likewise.
10827         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
10828         add_new_name_mapping, register_new_name_mapping): Likewise.
10829         * tree-mudflap.c (mf_xform_derefs): Likewise.
10830         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
10831         get_init_expr, combine_chains): Likewise.
10832         * tree-pretty-print.c (dump_generic_node): Likewise.
10833         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
10834         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
10835         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
10836         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
10837
10838 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10839
10840         PR middle-end/37010
10841         * calls.c (expand_call): Use the biggest preferred stack
10842         boundary.
10843
10844 2008-08-06  Michael Matz  <matz@suse.de>
10845
10846         PR target/36613
10847         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
10848         for reused reload, instead of overwriting them.
10849
10850 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10851
10852         PR middle-end/37009
10853         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
10854         for incoming stack boundary.
10855
10856         * function.c (assign_parm_find_entry_rtl): Update
10857         parm_stack_boundary.
10858
10859         * function.h (rtl_data): Add parm_stack_boundary.
10860
10861         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
10862         parm_stack_boundary for incoming stack boundary.
10863
10864 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
10865
10866         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
10867         for unrepresentable subregs or treat them as equal to other regs
10868         or subregs with the same register number.
10869
10870 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
10871
10872         PR middle-end/35432
10873         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
10874         if want_value.
10875
10876 2008-08-06  Jan Hubicka  <jh@suse.cz>
10877
10878         * predict.c (maybe_hot_frequency_p): When profile is absent, all
10879         frequencies might be hot.
10880
10881 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
10882
10883         * reload.c (find_reloads): Force constants into literal pool
10884         also if they are wrapped in a SUBREG.
10885
10886 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10887
10888         PR target/35659
10889         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
10890         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
10891         Don't allow predicated instructions for data speculation.
10892         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
10893         declaration.
10894
10895 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10896
10897         * haifa-sched.c (extend_global): Split to extend_global_data and
10898         extend_region_data.  Update all uses.
10899         (extend_all): Rename to extend_block_data.
10900
10901 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10902
10903         * sched-rgn.c (new_ready): Check if instruction can be
10904         speculatively scheduled before attempting speculation.
10905         (debug_rgn_dependencies): Remove wrongful assert.
10906
10907 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10908
10909         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
10910
10911 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10912
10913         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
10914         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
10915         va_size, and type_size.
10916
10917 2008-08-04  Jason Merrill  <jason@redhat.com>
10918
10919         PR c++/37016
10920         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
10921         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
10922
10923 2008-08-05  Richard Henderson  <rth@redhat.com>
10924
10925         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
10926         * configure: Rebuild.
10927
10928 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10929
10930         PR tree-opt/37024
10931         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
10932         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
10933         is a conversion.
10934
10935 2008-08-05  Richard Henderson  <rth@redhat.com>
10936
10937         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
10938         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
10939         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
10940         * common.opt (fdwarf2-cfi-asm): New.
10941         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
10942         * config.in, configure: Rebuild.
10943         * dwarf2asm.c (dw2_asm_output_data_raw): New.
10944         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
10945         New.
10946         (dw2_force_const_mem): Externalize.
10947         * dwarf2asm.h: Update.
10948         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
10949         generate a real label.
10950         (output_cfi_directive): New.
10951         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
10952         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
10953         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
10954         and .cfi_lsda.
10955         (dwarf2out_end_epilogue): Emit .cfi_endproc.
10956         (output_loc_operands_raw, output_loc_sequence_raw): New.
10957         (output_cfa_loc_raw): New.
10958
10959 2008-08-05  Paul Brook  <paul@codesourcery.com>
10960
10961         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
10962         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
10963         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
10964         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
10965         * config/arm/arm.h (TARGET_VFPD32): Define.
10966         (TARGET_VFP3): Use TARGET_VFPD32.
10967         (fputype): Add FPUTYPE_VFP3D16.
10968         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
10969         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
10970         * config/arm/arm-cores.def: Add cortex-r4f.
10971         * config/arm/arm-tune.md: Regenerate.
10972
10973 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10974
10975         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
10976         Reword some comments throughout the file.
10977
10978         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
10979         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
10980         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
10981         MFC_MIN_DMA_LIST_ELEMENTS.
10982         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
10983         MFC_MAX_DMA_LIST_ELEMENTS.
10984
10985         (MFC_START_ENABLE): Remove PPU-only define.
10986         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
10987         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
10988
10989         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
10990         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
10991         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
10992         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
10993         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
10994         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
10995         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
10996
10997         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
10998         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
10999         (mfc_sdcrt, mfc_sdcrtst): Likewise.
11000         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
11001
11002         (spu_read_machine_status): Fix typo.
11003
11004 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11005
11006         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
11007         SUBREG of multi-word hard register.
11008         * config/spu/spu.c (valid_subreg): Likewise.
11009         (adjust_operand): Handle SUBREGs of multi-word hard registers.
11010
11011 2008-08-04  Richard Guenther  <rguenther@suse.de>
11012
11013         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
11014         the candidate with the stripped base if that base is different
11015         from the original base even for offset zero.
11016
11017 2008-08-04  Richard Guenther  <rguenther@suse.de>
11018
11019         PR middle-end/36691
11020         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
11021         check for no_overflow.
11022
11023 2008-08-04  Richard Guenther  <rguenther@suse.de>
11024
11025         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
11026
11027 2008-08-04  Paul Brook  <paul@codesourcery.com>
11028
11029         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
11030         (arm_order_regs_for_local_alloc): New function.
11031         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
11032         prototype.
11033         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
11034
11035 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11036
11037         PR target/37012
11038         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
11039         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
11040         (ix86_expand_epilogue): Likewise.
11041
11042 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11043
11044         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
11045         in comments.
11046
11047 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11048
11049         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
11050         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
11051         (*movv2sf_internal_rex64): Ditto.
11052
11053 2008-08-03  Jan Hubicka  <jh@suse.cz>
11054
11055         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
11056         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
11057         * expmed.c (expand_smod_pow2): Likewise.
11058
11059 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11060
11061         PR target/36992
11062         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
11063         alternative 0 of operand 1.
11064         (*vec_concatv2di_rex64_sse): Ditto.
11065         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
11066         of operand 1.
11067         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
11068         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
11069         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
11070         (*movv2sf_internal_rex64): Ditto.
11071
11072 2008-08-02  Richard Guenther  <rguenther@suse.de>
11073
11074         PR target/35252
11075         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
11076         (ssedoublesizemode): New mode attribute.
11077         (sse_shufps): Call gen_sse_shufps_v4sf.
11078         (sse_shufps_1): Macroize.
11079         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
11080         (sse2_shufpd_1): Macroize.
11081         (vec_extract_odd, vec_extract_even): New expanders.
11082         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
11083         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
11084         * i386.c (ix86_expand_vector_init_one_nonzero): Call
11085         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
11086         (ix86_expand_vector_set): Likewise.
11087         (ix86_expand_reduc_v4sf): Likewise.
11088
11089 2008-08-01  Doug Kwan  <dougkwan@google.com>
11090
11091         * matrix-reorg.c: Re-enable all code.
11092         (struct malloc_call_data): Change CALL_STMT to gimple type.
11093         (collect_data_for_malloc_call): Tuplify.
11094         (struct access_site_info): Change STMT to gimple type.
11095         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
11096         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
11097         (struct free_info): Change STMT to gimple type.
11098         (struct matrix_access_phi_node):  Change PHI to gimple type.
11099         (get_inner_of_cast_expr): Remove.
11100         (may_flatten_matrices_1): Tuplify.
11101         (may_flatten_matrices): Ditto.
11102         (mark_min_matrix_escape_level): Ditto.
11103         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
11104         (ssa_accessed_in_call_rhs): New
11105         (ssa_accessed_in_assign_rhs): New
11106         (record_access_alloc_site_info): Tuplify.
11107         (add_allocation_site): Ditto.
11108         (analyze_matrix_allocation_site): Ditto.
11109         (analyze_transpose): Ditto.
11110         (get_index_from_offset): Ditto.
11111         (update_type_size): Ditto.
11112         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
11113         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
11114         (analyze_accesses_for_phi_node): Tuplify.
11115         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
11116         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
11117         (analyze_matrix_accesses): Tuplify.
11118         (check_var_data): New call-back type for check_var_notmodified_p.
11119         (check_var_notmodified_p): Tuplify and use call-back struct to
11120         return statement found.
11121         (can_calculate_expr_before_stmt): Factor out statement related code
11122         into ...
11123         (can_calculate_stmt_before_stmt): New.
11124         (check_allocation_function): Tuplify.
11125         (find_sites_in_func): Ditto.
11126         (record_all_accesses_in_func): Ditto.
11127         (transform_access_sites): Ditto.
11128         (transform_allocation_sites): Ditto.
11129         (matrix_reorg): Re-enable.
11130         (gate_matrix_reorg): Re-enable.
11131
11132 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
11133
11134         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
11135         for labels for which it hasn't been set yet.  If it has been set,
11136         stop walking insns and continue with next worklist item.
11137         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
11138         if the only BARRIER is at the very end of a function.
11139
11140 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11141
11142         * cfgexpand.c (expand_stack_alignment): Assert that
11143         stack_realign_drap and drap_rtx must match.
11144
11145         * function.c (instantiate_new_reg): If DRAP is used to realign
11146         stack, replace virtual_incoming_args_rtx with internal arg
11147         pointer.
11148
11149 2008-08-01  Richard Guenther  <rguenther@suse.de>
11150
11151         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
11152         loop information only if we initialized it.
11153         (execute_pre): Call fini_pre with in_fre.
11154         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
11155         if we do not unroll because we hit max-completely-peeled-insns.
11156         Use our estimation for consistency, do allow shrinking.
11157
11158 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11159
11160         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
11161         with MIN_STACK_BOUNDARY.
11162         (ix86_update_stack_boundary): Likewise.
11163         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
11164         STACK_BOUNDARY.
11165
11166         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
11167         (MIN_STACK_BOUNDARY): This.
11168
11169 2008-08-01  Richard Guenther  <rguenther@suse.de>
11170
11171         PR middle-end/36997
11172         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
11173
11174 2008-08-01  Richard Guenther  <rguenther@suse.de>
11175
11176         PR tree-optimization/36988
11177         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
11178         do not matter if that doesn't change volatile qualification.
11179
11180 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
11181
11182         * configure.ac: Do not generate libada-mk.  Do not subst
11183         host_cc_for_libada.
11184         * libada-mk.in: Remove.
11185         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
11186         * configure: Regenerate.
11187
11188 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
11189
11190         * tree-pass.h: Added comment about not dumping passes with name
11191         starting with star in struct opt_pass.
11192         * passes.c (register_dump_files_1): Don't do dump for a pass with
11193         name starting with star.
11194         * doc/passes.texi (Pass manager): Mention pass names and special
11195         meaning of star prefix to avoid dump.
11196
11197 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
11198
11199         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
11200         to MIPS64r2.
11201         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
11202         (ISA_MIPS64R2): New macro.
11203         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
11204         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
11205         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
11206         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
11207         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
11208         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
11209         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
11210         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
11211         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
11212         Move up to keep list alphabetically sorted.
11213         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
11214         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
11215         processor.
11216         * doc/invoke.texi (MIPS Options): Add -mips64r2.
11217         (-march=@var{arch}): Add mips64r2.
11218
11219 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11220
11221         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
11222
11223 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
11224
11225         * expr.c (expand_assignment): Check for complete type.
11226
11227 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11228
11229         PR debug/36977
11230         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
11231
11232         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
11233         for stack alignment.
11234
11235         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
11236
11237 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11238
11239         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
11240         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
11241
11242 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11243
11244         PR rtl-optimization/36419
11245         * dwarf2out.c (barrier_args_size): New variable.
11246         (compute_barrier_args_size, compute_barrier_args_size_1): New
11247         functions.
11248         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
11249         if not called yet in the current function, use barrier_args_size
11250         array to find the new args_size value.
11251         (dwarf2out_frame_debug): Free and clear barrier_args_size.
11252
11253 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11254
11255         PR debug/36980
11256         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
11257         rule 19.
11258
11259 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11260
11261         PR debug/36976
11262         * dwarf2out.c (dwarf2out_args_size_adjust): New.
11263         (dwarf2out_stack_adjust): Use it.
11264         (dwarf2out_frame_debug_expr): Likewise.
11265
11266 2008-07-31  Richard Guenther  <rguenther@suse.de>
11267
11268         PR tree-optimization/36978
11269         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
11270         the generated condition.
11271
11272 2008-07-31  Richard Guenther  <rguenther@suse.de>
11273
11274         * passes.c (init_optimization_passes): Always call
11275         pass_early_warn_uninitialized.
11276         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
11277         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
11278         * doc/passes.texi (Warn for uninitialized variables): Adjust.
11279
11280 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11281
11282         PR c/36970
11283         * builtins.c (maybe_emit_free_warning): New function.
11284         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
11285         maybe_emit_free_warning for BUILT_IN_FREE.
11286
11287         PR debug/36278
11288         * dwarf2out.c (get_context_die): New function.
11289         (force_decl_die, force_type_die): Use it.
11290         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
11291         returns NULL, force generation of DW_TAG_typedef and put that into
11292         DW_AT_import.
11293
11294         PR preprocessor/36649
11295         * c-pch.c (c_common_read_pch): Save and restore
11296         line_table->trace_includes across PCH restore.
11297
11298 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
11299
11300         PR ada/36554
11301         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
11302
11303 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11304
11305         PR 36974
11306         * final.c (call_from_call_insn): Handle COND_EXEC.
11307
11308 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11309
11310         * builtins.c (std_gimplify_va_arg_expr): Replace
11311         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
11312         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11313
11314 2008-07-30  Joey Ye  <joey.ye@intel.com>
11315             H.J. Lu  <hongjiu.lu@intel.com>
11316
11317         * builtins.c (expand_builtin_setjmp_receiver): Replace
11318         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
11319         (expand_builtin_apply_args_1): Likewise.
11320         (expand_builtin_longjmp): Need DRAP for stack alignment.
11321         (expand_builtin_apply): Likewise.
11322
11323         * caller-save.c (setup_save_areas): Call assign_stack_local_1
11324         instead of assign_stack_local to allow alignment reduction.
11325
11326         * calls.c (emit_call_1): Need DRAP for stack alignment if
11327         return pops.
11328         (expand_call): Replace virtual_incoming_args_rtx with
11329         crtl->args.internal_arg_pointer.
11330         * stmt.c (expand_nl_goto_receiver): Likewise.
11331
11332         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
11333         alignment and store to stack_alignment_estimated and
11334         max_used_stack_slot_alignment.
11335         (expand_one_var): Likewise.
11336         (expand_stack_alignment): New function.
11337         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
11338         and stack_alignment_estimated fields in rtl_data.  Call
11339         expand_stack_alignment at end.
11340
11341         * defaults.h (INCOMING_STACK_BOUNDARY): New.
11342         (MAX_STACK_ALIGNMENT): Likewise.
11343         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
11344         (SUPPORTS_STACK_ALIGNMENT): Likewise.
11345
11346         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
11347         stack alignment when generating virtual registers.
11348
11349         * function.c (assign_stack_local): Renamed to ...
11350         (assign_stack_local_1): This.  Add a parameter to indicate
11351         if it is OK to reduce alignment.
11352         (assign_stack_local): Use it.
11353         (instantiate_new_reg): Instantiate virtual incoming args rtx
11354         to vDRAP if stack realignment and DRAP is needed.
11355         (assign_parms): Collect parameter/return type alignment and
11356         contribute to stack_alignment_estimated.
11357         (locate_and_pad_parm): Likewise.
11358         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
11359         with crtl->args.internal_arg_pointer.
11360
11361         * function.h (rtl_data): Add new field drap_reg,
11362         max_used_stack_slot_alignment, stack_alignment_estimated,
11363         stack_realign_needed, need_drap, stack_realign_processed and
11364         stack_realign_finalized.
11365         (stack_realign_fp): New macro.
11366         (stack_realign_drap): Likewise.
11367
11368         * global.c (compute_regsets): Frame pointer is needed when
11369         stack is realigned.  Can eliminate frame pointer when stack is
11370         realigned and dynamic realigned argument pointer isn't used.
11371
11372         * reload1.c (update_eliminables):  Frame pointer is needed
11373         when stack is realigned.
11374         (init_elim_table): Can eliminate frame pointer when stack is
11375         realigned and dynamic realigned argument pointer isn't used.
11376
11377         * rtl.h (assign_stack_local_1): Declare new funtion.
11378
11379         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
11380         (TARGET_GET_DRAP_RTX): Likewise.
11381         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
11382         TARGET_GET_DRAP_RTX.
11383
11384         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
11385
11386         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
11387         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
11388
11389 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
11390             H.J. Lu  <hongjiu.lu@intel.com>
11391
11392         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
11393         vdrap_reg, stack_realign and drap_reg_saved.
11394         (add_cfi): Don't allow redefining CFA when DRAP is used.
11395         (reg_save): Handle stack alignment.
11396         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
11397         alignment.  Don't generate DWARF information for (set fp sp)
11398         when DRAP is used.
11399         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
11400         to INVALID_REGNUM.
11401         (int_loc_descriptor): Move prototype forward.  Also define if
11402         DWARF2_UNWIND_INFO is true.
11403         (output_cfa_loc): Handle DW_CFA_expression.
11404         (build_cfa_aligned_loc): New.
11405         (based_loc_descr): Update assert for stack realign.  For local
11406         variables, use sp+offset when stack is aligned without drap and
11407         fp+offset when stack is aligned with drap.  For arguments, use
11408         cfa+offset when drap is used to align stack.
11409
11410 2008-07-30  Joey Ye  <joey.ye@intel.com>
11411             H.J. Lu  <hongjiu.lu@intel.com>
11412
11413         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
11414         Break long line.
11415         (ix86_gen_andsp): New.
11416         (ix86_user_incoming_stack_boundary): Likewise.
11417         (ix86_default_incoming_stack_boundary): Likewise.
11418         (ix86_incoming_stack_boundary): Likewise.
11419         (ix86_can_eliminate): Likewise.
11420         (find_drap_reg): Likewise.
11421         (ix86_update_stack_boundary): Likewise.
11422         (ix86_get_drap_rtx): Likewise.
11423         (ix86_finalize_stack_realign_flags): Likewise.
11424         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
11425         (TARGET_GET_DRAP_RTX): Likewise.
11426         (override_options): Overide option value for new options.
11427         (ix86_function_ok_for_sibcall): Remove check for
11428         force_align_arg_pointer.
11429         (ix86_handle_cconv_attribute): Likewise.
11430         (ix86_function_regparm): Likewise.
11431         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
11432         (ix86_va_start): Replace virtual_incoming_args_rtx with
11433         crtl->args.internal_arg_pointer.
11434         (ix86_select_alt_pic_regnum): Check DRAP register.
11435         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
11436         (ix86_compute_frame_layout): Compute frame layout wrt stack
11437         realignment.
11438         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
11439         (ix86_expand_prologue): Decide if stack realignment is needed
11440         and generate prologue code accordingly.
11441         (ix86_expand_epilogue): Generate epilogue code wrt stack
11442         realignment is really needed or not.
11443
11444         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
11445         (ABI_STACK_BOUNDARY): Likewise.
11446         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
11447         (STACK_REALIGN_DEFAULT): Likewise.
11448         (INCOMING_STACK_BOUNDARY): Likewise.
11449         (MAX_STACK_ALIGNMENT): Likewise.
11450         (ix86_incoming_stack_boundary): Likewise.
11451         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
11452         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
11453         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
11454         (machine_function): Remove force_align_arg_pointer.
11455
11456         * config/i386/i386.md (BX_REG): New.
11457         (R13_REG): Likewise.
11458
11459         * config/i386/i386.opt (mforce_drap): New.
11460         (mincoming-stack-boundary): Likewise.
11461         (mstackrealign): Add Init(-1).
11462
11463         * config/i386/i386-protos.h (ix86_can_eliminate): New
11464
11465 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11466
11467         * doc/extend.texi: Update force_align_arg_pointer.
11468
11469         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
11470         -mstackrealign.
11471
11472         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
11473         (INCOMING_STACK_BOUNDARY): Likewise.
11474         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
11475         (TARGET_GET_DRAP_RTX): Likewise.
11476
11477 2008-07-30  Andreas Schwab  <schwab@suse.de>
11478
11479         PR rtl-optimization/36929
11480         * dse.c (replace_inc_dec): Use emit_insn_before instead of
11481         add_insn_before and fix argument order.
11482         (replace_inc_dec_mem): Handle NULL rtx.
11483
11484 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
11485
11486         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
11487         function.
11488         (arm_compute_initial_elimination_offset): Use it.
11489         (arm_compute_save_reg_mask): Include static chain save slot when
11490         calculating alignment.
11491         (arm_get_frame_offsets): Ditto.
11492         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
11493         that we can use to decrement the stack when the stack decrement
11494         could be too big for an immediate value in a single insn.
11495         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
11496
11497 2008-07-30  Richard Guenther  <rguenther@suse.de>
11498
11499         PR tree-optimization/36967
11500         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
11501         Release defs of statements we remove.
11502
11503 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11504
11505         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
11506         instead of NULL_RTVEC.
11507
11508 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11509
11510         PR target/35866
11511
11512         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
11513         vector modes.
11514
11515 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11516
11517         * final.c (call_from_call_insn): New.
11518         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
11519
11520 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
11521
11522         * configure.ac: Substitute ADA_CFLAGS.
11523         * configure: Regenerate.
11524         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
11525         * Makefile.in: Remove mention of X_* variables.
11526         * config/pa/x-ada-hpux10: Remove.
11527         * config/pa/x-ada: Remove.
11528
11529         * doc/fragments.texi: Update.
11530
11531 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11532
11533         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
11534         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
11535         __dso_handle explicitly here.
11536
11537 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11538
11539         PR 34389
11540         * c-typeck.c (build_binary_op): Encapsulate code into...
11541         * c-common.c (shorten_binary_op): ...this new function.
11542         (conversion_warning): Use the new function. Handle non-negative
11543         constant in bitwise-and.
11544         * c-common.h (shorten_binary_op): Declare.
11545
11546 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11547
11548         * scan.c (make_sstring_space): Add explicit conversions of
11549         allocator's return value.
11550         * fix-header.c (recognized_function): Likewise.
11551
11552 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11553
11554         * doc/cpp.texi: Update to GFDL 1.2.
11555         * doc/gcc.texi: Do not list GPL as Invariant Section.
11556         * doc/gccint.texi: Likewise.  Update copyright years.
11557         * doc/install.texi: Update copyright years.
11558
11559 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
11560
11561         PR target/36955
11562         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
11563         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
11564
11565 2008-07-29  Jan Hubicka  <jh@suse.cz>
11566
11567         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
11568         (grokdeclarator): Likewise.
11569         * langhooks.c (lhd_warn_unused_global_decl): Use
11570         DECL_DECLARED_INLINE_P.
11571         * print-tree.c (print_node): Remove DECL_INLINE check.
11572
11573 2008-07-29  Richard Guenther  <rguenther@suse.de>
11574
11575         PR tree-optimization/36945
11576         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
11577         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
11578         Record invariant addresses un-decomposed.
11579         (copy_reference_ops_from_call): Record reference call
11580         arguments properly.  Simplify.
11581         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
11582         helper split out from ...
11583         (create_component_ref_by_pieces): ... here.  Simplify.
11584         Prepare for recursive invocation for call arguments.
11585         (create_expression_by_pieces): Adjust call to
11586         create_component_ref_by_pieces.
11587         (compute_avail): Process operand 2 of reference ops.
11588
11589 2008-07-29  Richard Guenther  <rguenther@suse.de>
11590
11591         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
11592
11593 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
11594
11595         * c-format.c (check_format_types): Revert unwanted checkin.
11596
11597 2008-07-29  Jan Hubicka  <jh@suse.cz>
11598
11599         * flags.h (flag_really_no_inline): Remove.
11600         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
11601         * toplev.c (flag_really_no_inline): Remove.
11602         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
11603         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
11604         (cgraph_decide_inlining_incrementally): Likewise.
11605         (compute_inline_parameters): Likewise.
11606         * opts.c (decode_options): Simplify.
11607         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
11608         * common.opt (finline): Initialize to 1.
11609         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
11610
11611 2008-07-29  Jan Hubicka  <jh@suse.cz>
11612
11613         * predict.c (always_optimize_for_size_p): New function.
11614         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11615         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11616         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
11617         functions.
11618         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
11619         * function.c (prepare_function_start): Set default profile.
11620         * function.h (rtl_data): Add maybe_hot_insn_p.
11621         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
11622         (construct_exit_block): Likewise.
11623         (tree_expand_cfg): Likewise.
11624         * basic-block.h
11625         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11626         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11627         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
11628         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
11629         Declare.
11630
11631 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11632
11633         PR 34985
11634         * c-decl.c (merge_decls): Merge USED flags.
11635
11636 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11637
11638         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
11639         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
11640         next_stack, lab_false and lab_over trees.
11641
11642 2008-07-28  Richard Guenther  <rguenther@suse.de>
11643
11644         PR tree-optimization/36957
11645         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
11646         (useless_type_conversion_p): Remove.
11647         (types_compatible_p): Remove.
11648         * gimple.h (tree_ssa_useless_type_conversion): Declare.
11649         (useless_type_conversion_p): Declare.
11650         (types_compatible_p): Declare.
11651         (gimple_expr_type): Return the base type only if it is
11652         trivially convertible to the subtype.
11653
11654 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
11655
11656         * configure.ac: Use the m4_do macro to concatenate the warnings into
11657         one string in ACX_PROG_CC_WARNING_OPTS,
11658         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
11659         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
11660         * configure: Regenerate.
11661
11662 2008-07-28  Richard Guenther  <rguenther@suse.de>
11663
11664         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
11665         (insert_fake_stores): Remove.
11666         (realify_fake_stores): Likewise.
11667         (execute_pre): Remove dead code.
11668         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
11669         (find_func_aliases): Deal with it here instead.
11670         Re-enable gcc_unreachable call.
11671
11672 2008-07-28  Richard Guenther  <rguenther@suse.de>
11673
11674         Merge from gimple-tuples-branch.
11675
11676         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
11677         * gimple.def: New file.
11678         * gsstruct.def: Likewise.
11679         * gimple-iterator.c: Likewise.
11680         * gimple-pretty-print.c: Likewise.
11681         * tree-gimple.c: Removed.  Merged into ...
11682         * gimple.c: ... here.  New file.
11683         * tree-gimple.h: Removed.  Merged into ...
11684         * gimple.h: ... here.  New file.
11685
11686         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
11687         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
11688         --enable-checking=gimple flag.
11689         * config.in: Likewise.
11690         * configure: Regenerated.
11691
11692         * tree-ssa-operands.h: Tuplified.
11693         * tree-vrp.c: Likewise.
11694         * tree-loop-linear.c: Likewise.
11695         * tree-into-ssa.c: Likewise.
11696         * tree-ssa-loop-im.c: Likewise.
11697         * tree-dump.c: Likewise.
11698         * tree-complex.c: Likewise.
11699         * cgraphbuild.c: Likewise.
11700         * tree-ssa-threadupdate.c: Likewise.
11701         * tree-ssa-loop-niter.c: Likewise.
11702         * tree-pretty-print.c: Likewise.
11703         * tracer.c: Likewise.
11704         * gengtype.c: Likewise.
11705         * tree-loop-distribution.c: Likewise.
11706         * tree-ssa-loop-unswitch.c: Likewise.
11707         * cgraph.c: Likewise.
11708         * cgraph.h: Likewise.
11709         * tree-ssa-loop-manip.c: Likewise.
11710         * value-prof.c: Likewise.
11711         * tree-ssa-loop-ch.c: Likewise.
11712         * tree-tailcall.c: Likewise.
11713         * value-prof.h: Likewise.
11714         * tree.c: Likewise.
11715         * tree.h: Likewise.
11716         * tree-pass.h: Likewise.
11717         * ipa-cp.c: Likewise.
11718         * tree-scalar-evolution.c: Likewise.
11719         * tree-scalar-evolution.h: Likewise.
11720         * target.h: Likewise.
11721         * lambda-mat.c: Likewise.
11722         * tree-phinodes.c: Likewise.
11723         * diagnostic.h: Likewise.
11724         * builtins.c: Likewise.
11725         * tree-ssa-alias-warnings.c: Likewise.
11726         * cfghooks.c: Likewise.
11727         * fold-const.c: Likewise.
11728         * cfghooks.h: Likewise.
11729         * omp-low.c: Likewise.
11730         * tree-ssa-dse.c: Likewise.
11731         * ipa-reference.c: Likewise.
11732         * tree-ssa-uncprop.c: Likewise.
11733         * toplev.c: Likewise.
11734         * tree-gimple.c: Likewise.
11735         * tree-gimple.h: Likewise.
11736         * tree-chrec.c: Likewise.
11737         * tree-chrec.h: Likewise.
11738         * tree-ssa-sccvn.c: Likewise.
11739         * tree-ssa-sccvn.h: Likewise.
11740         * cgraphunit.c: Likewise.
11741         * tree-ssa-copyrename.c: Likewise.
11742         * tree-ssa-ccp.c: Likewise.
11743         * tree-ssa-loop-ivopts.c: Likewise.
11744         * tree-nomudflap.c: Likewise.
11745         * tree-call-cdce.c: Likewise.
11746         * ipa-pure-const.c: Likewise.
11747         * c-format.c: Likewise.
11748         * tree-stdarg.c: Likewise.
11749         * tree-ssa-math-opts.c: Likewise.
11750         * tree-ssa-dom.c: Likewise.
11751         * tree-nrv.c: Likewise.
11752         * tree-ssa-propagate.c: Likewise.
11753         * ipa-utils.c: Likewise.
11754         * tree-ssa-propagate.h: Likewise.
11755         * tree-ssa-alias.c: Likewise.
11756         * gimple-low.c: Likewise.
11757         * tree-ssa-sink.c: Likewise.
11758         * ipa-inline.c: Likewise.
11759         * c-semantics.c: Likewise.
11760         * dwarf2out.c: Likewise.
11761         * expr.c: Likewise.
11762         * tree-ssa-loop-ivcanon.c: Likewise.
11763         * predict.c: Likewise.
11764         * tree-ssa-loop.c: Likewise.
11765         * tree-parloops.c: Likewise.
11766         * tree-ssa-address.c: Likewise.
11767         * tree-ssa-ifcombine.c: Likewise.
11768         * matrix-reorg.c: Likewise.
11769         * c-decl.c: Likewise.
11770         * tree-eh.c: Likewise.
11771         * c-pretty-print.c: Likewise.
11772         * lambda-trans.c: Likewise.
11773         * function.c: Likewise.
11774         * langhooks.c: Likewise.
11775         * ebitmap.h: Likewise.
11776         * tree-vectorizer.c: Likewise.
11777         * function.h: Likewise.
11778         * langhooks.h: Likewise.
11779         * tree-vectorizer.h: Likewise.
11780         * ipa-type-escape.c: Likewise.
11781         * ipa-type-escape.h: Likewise.
11782         * domwalk.c: Likewise.
11783         * tree-if-conv.c: Likewise.
11784         * profile.c: Likewise.
11785         * domwalk.h: Likewise.
11786         * tree-data-ref.c: Likewise.
11787         * tree-data-ref.h: Likewise.
11788         * tree-flow-inline.h: Likewise.
11789         * tree-affine.c: Likewise.
11790         * tree-vect-analyze.c: Likewise.
11791         * c-typeck.c: Likewise.
11792         * gimplify.c: Likewise.
11793         * coretypes.h: Likewise.
11794         * tree-ssa-phiopt.c: Likewise.
11795         * calls.c: Likewise.
11796         * tree-ssa-coalesce.c: Likewise.
11797         * tree.def: Likewise.
11798         * tree-dfa.c: Likewise.
11799         * except.c: Likewise.
11800         * except.h: Likewise.
11801         * cfgexpand.c: Likewise.
11802         * tree-cfgcleanup.c: Likewise.
11803         * tree-ssa-pre.c: Likewise.
11804         * tree-ssa-live.c: Likewise.
11805         * tree-sra.c: Likewise.
11806         * tree-ssa-live.h: Likewise.
11807         * tree-predcom.c: Likewise.
11808         * lambda.h: Likewise.
11809         * tree-mudflap.c: Likewise.
11810         * ipa-prop.c: Likewise.
11811         * print-tree.c: Likewise.
11812         * tree-ssa-copy.c: Likewise.
11813         * ipa-prop.h: Likewise.
11814         * tree-ssa-forwprop.c: Likewise.
11815         * ggc-page.c: Likewise.
11816         * c-omp.c: Likewise.
11817         * tree-ssa-dce.c: Likewise.
11818         * tree-vect-patterns.c: Likewise.
11819         * tree-ssa-ter.c: Likewise.
11820         * tree-nested.c: Likewise.
11821         * tree-ssa.c: Likewise.
11822         * lambda-code.c: Likewise.
11823         * tree-ssa-loop-prefetch.c: Likewise.
11824         * tree-inline.c: Likewise.
11825         * tree-inline.h: Likewise.
11826         * tree-iterator.c: Likewise.
11827         * tree-optimize.c: Likewise.
11828         * tree-ssa-phiprop.c: Likewise.
11829         * tree-vect-transform.c: Likewise.
11830         * tree-object-size.c: Likewise.
11831         * tree-outof-ssa.c: Likewise.
11832         * cfgloop.c: Likewise.
11833         * system.h: Likewise.
11834         * tree-profile.c: Likewise.
11835         * cfgloop.h: Likewise.
11836         * c-gimplify.c: Likewise.
11837         * c-common.c: Likewise.
11838         * tree-vect-generic.c: Likewise.
11839         * tree-flow.h: Likewise.
11840         * c-common.h: Likewise.
11841         * basic-block.h: Likewise.
11842         * tree-ssa-structalias.c: Likewise.
11843         * tree-switch-conversion.c: Likewise.
11844         * tree-ssa-structalias.h: Likewise.
11845         * tree-cfg.c: Likewise.
11846         * passes.c: Likewise.
11847         * ipa-struct-reorg.c: Likewise.
11848         * ipa-struct-reorg.h: Likewise.
11849         * tree-ssa-reassoc.c: Likewise.
11850         * cfgrtl.c: Likewise.
11851         * varpool.c: Likewise.
11852         * stmt.c: Likewise.
11853         * tree-ssanames.c: Likewise.
11854         * tree-ssa-threadedge.c: Likewise.
11855         * langhooks-def.h: Likewise.
11856         * tree-ssa-operands.c: Likewise.
11857         * config/alpha/alpha.c: Likewise.
11858         * config/frv/frv.c: Likewise.
11859         * config/s390/s390.c: Likewise.
11860         * config/m32c/m32c.c: Likewise.
11861         * config/m32c/m32c-protos.h: Likewise.
11862         * config/spu/spu.c: Likewise.
11863         * config/sparc/sparc.c: Likewise.
11864         * config/i386/i386.c: Likewise.
11865         * config/sh/sh.c: Likewise.
11866         * config/xtensa/xtensa.c: Likewise.
11867         * config/stormy16/stormy16.c: Likewise.
11868         * config/ia64/ia64.c: Likewise.
11869         * config/rs6000/rs6000.c: Likewise.
11870         * config/pa/pa.c: Likewise.
11871         * config/mips/mips.c: Likewise.
11872
11873 2008-07-28  Simon Baldwin  <simonb@google.com>
11874
11875         * c-pragma.c (handle_pragma_message): New function.
11876         (init_pragma): Register handle_pragma_message.
11877         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
11878         documentation.
11879
11880 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
11881
11882         PR tree-optimization/35252
11883         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
11884         REALPART_EXPR to be considered as same load operation.
11885
11886 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
11887
11888         PR tree-optimization/36830
11889         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
11890         (expressions_equal_p): Return false if only one operand is null.
11891
11892 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
11893
11894         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
11895         version requirements.
11896
11897 2008-07-26  Olivier Hainque  <hainque@adacore.com>
11898
11899         * collect2.c (symkind): New enum.  Symbol kinds we care about.
11900         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
11901         code and head comment accordingly.
11902         (scan_prog_file): Use symkind names instead of bare integers.
11903
11904 2008-07-25  Jan Hubicka  <jh@suse.cz>
11905
11906         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
11907         DECL_INLINE.
11908         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
11909         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
11910         * dojump.c (clear_pending_stack_adjust): Likewise.
11911         * print-tree.c (print_node): Ignore DECL_INLINE.
11912         * tree-inline.c (inlinable_function_p): Likewise.
11913
11914 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
11915
11916         * doc/extend.texi (hot attribute): Document that the hot attribute
11917         turns on -O3 for some ports.
11918         (cold attribute): Document that the cold attribute turns on -Os
11919         for some ports
11920
11921         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
11922         reflect function specific option support.
11923
11924         * target.h (struct target_option_hooks): Add fields to say whether
11925         the cold attribute implies -Os and the hot attribute implies -O3.
11926
11927         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
11928         By default, do not turn on -Os for cold functions.
11929         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
11930         not turn on -O3 for hot functions.
11931
11932         * c-common.c (handle_hot_attribute): Use target hook to determine
11933         if hot functions should enable -O3.
11934         (handle_cold_attribute): Use target hook to determine if cold
11935         functions should enable -Os.
11936
11937         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
11938         (override_options): Move disable scheduling to
11939         optimization_options.
11940         (optimization_options): Disable scheduling here, not
11941         override_options.
11942         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11943         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11944
11945         * config/ia64/ia64.c (ia64_override_options): Move setting
11946         scheduling flags to ia64_optimization_options.
11947         (ia64_optimization_options): Disable scheduling options here, and
11948         not in ia64_override_options.
11949         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11950         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11951
11952 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
11953
11954         PR target/36936
11955         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
11956
11957 2008-07-25  Martin Jambor  <mjambor@suse.cz>
11958
11959         PR tree-optimization/36926
11960         * ipa-prop.c (ipa_analyze_call_uses): Call
11961         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
11962
11963 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
11964
11965         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
11966         movv2si_internal): Add mem = reg alternative.
11967
11968 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11969
11970         PR bootstrap/36918
11971         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
11972         DEFAULT_PCC_STRUCT_RETURN to 127.
11973
11974 2008-07-24  Jan Hubicka  <jh@suse.cz>
11975
11976         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
11977         (build_cgraph_edges): Likewise.
11978         * cgraph.c (cgraph_node): Do not update assembler hash.
11979         (cgraph_remove_node): Drop non-unit-at-a-time code.
11980         * tree-pass.h (pass_O0_always_inline): Remove.
11981         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
11982         * toplev.c (process_options): Flag unit-at-a-time does not imply
11983         no section anchors.
11984         * cgraphunit.c: Update comments.
11985         (decide_is_function_needed): Drop non-unit-at-a-time mode.
11986         (cgraph_assemble_pending_functions): Remove.
11987         (cgraph_reset_node): Drop non-unit-at-a-time code.
11988         (cgraph_finalize_function): Likewise.
11989         (cgraph_analyze_function): Likewise.
11990         (cgraph_finalize_compilation_unit): Likewise.
11991         (cgraph_expand_function): Likewise.
11992         (cgraph_optimize): Likesise.
11993         (save_inline_function_body): Likewise.
11994         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
11995         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
11996         * ipa-inline.c: Update comments.
11997         (enum inlining_mode): remove INLINE_SPEED.
11998         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
11999         (cgraph_mark_inline_edge): Likewise.
12000         (try_inline): Likewise.
12001         (cgraph_decide_inlining_incrementally): Likewise.
12002         (cgraph_gate_inlining): Remove.
12003         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
12004         (cgraph_gate_early_inlining): Likewise.
12005         (gate_inline_passes): Remove.
12006         (pass_inline_parameters, pass_ipa_inline): Remove gates.
12007         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
12008         pass_O0_always_inline): Remove.
12009         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
12010         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
12011         * opts.c (no_unit_at_a_time_default): Remove.
12012         (decode_options): Remove flag_unit_at_a_time reset and warning.
12013         * opts.h (no_unit_at_a_time_default): Remove.
12014         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
12015         early in GNU dialect.
12016         (merge_decls): Update comment; drop unit-at-a-time check.
12017         (finish_decl): Likewise.
12018         (grok_declaration): Remove flag_inline_trees code.
12019         (finish_functions): Return on function returning non-void on all
12020         statics.
12021         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
12022         * cfgexpand.c (expand_one_static_var): Remove.
12023         (expand_one_var): Remove expand_one_static_var call.
12024         (expand_used_vars_for_block): Remove flag_unit_a_time check.
12025         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
12026         and flag_unit_at_a-time compatibility checks.
12027         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
12028         * tree-inline.c (flag_inline_trees): Remove.
12029         (inlinable_function_p): Don't check it.
12030         (expand_call_inline): Remove non-unit-at-a-time code.
12031         * tree-inline.h (flag_inline_trees): Remove.
12032         * tree-optimize.c (execute_early_local_optimizations): Remove
12033         unit-at-a-time checks.
12034         (tree_rest_of_compilation): Likewise.
12035         * combine.c (setup_incoming_promotions): Likewise.
12036         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
12037         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
12038         * passes.c (pass_inline_parameters): Update comments; remove
12039         O0_alwaysinline pass.
12040         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
12041         (execute_one_pass): Likewise.
12042         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
12043         (ix86_function_sseregparm): Likewise.
12044         * arm.c (arm_function_in_section_p): Likewise.
12045         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
12046         * varpool.c: Update comments.
12047         (decide_is_variable_needed): Remove unit-at-a-time checks.
12048         (varpool_finalize_decl): Likewise.
12049
12050 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12051
12052         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
12053         to 2 instead of -1.
12054         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
12055
12056 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
12057
12058         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
12059         imp symbol extension.
12060
12061         2008-07-23  Ian Lance Taylor  <iant@google.com>
12062
12063         * tree-vrp.c (infer_value_range): Ignore asm statements when
12064         looking for memory accesses for -fdelete-null-pointer-checks.
12065
12066 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12067
12068         * config/spu/spu-c.c (__vector_keyword): New variable.
12069         (vector_keyword): Likewise.
12070         (spu_categorize_keyword): New function.
12071         (spu_macro_to_expand): Likewise.
12072         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
12073         compiling an ISO C dialect.
12074
12075 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12076
12077         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
12078         conventional usage.
12079
12080 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12081
12082         * configure: Regenerate.
12083         * configure.ac: Require texinfo 4.7.
12084         * doc/install.texi: Document texinfo 4.7 requirement.
12085
12086 2008-07-23  Martin Jambor  <mjambor@suse.cz>
12087
12088         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
12089         rather than for DECL_SAVED_TREE.
12090         * ipa-prop.c: Include diagnostic.h.
12091         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
12092         thoroughly.
12093         (ipa_detect_param_modifications): Function rewritten from scratch.
12094         (ipa_compute_jump_functions): Changed accesses to modification flags.
12095         (ipa_free_node_params_substructures): Update flags destruction.
12096         (ipa_node_duplication_hook): Update flags duplication.
12097         (ipa_print_all_params_modified): Updated flag access.
12098         * ipa-prop.h (struct ipa_param_flags): New structure.
12099         (struct ipa_node_params): New field modification_analysis_done,
12100         modified_flags changed into param_flags.
12101         (ipa_is_ith_param_modified): Changed to use new flags.
12102         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
12103
12104         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
12105         ipa-cp.c and split into two functions.
12106         (ipa_print_node_jump_functions): New function.
12107         (compute_scalar_jump_functions): New function.
12108         (type_like_member_ptr_p): New function.
12109         (compute_pass_through_member_ptrs): New function.
12110         (fill_member_ptr_cst_jump_function): New function.
12111         (determine_cst_member_ptr): New function.
12112         (compute_cst_member_ptr_arguments): New function.
12113         (ipa_compute_jump_functions): Complete rewrite.
12114         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
12115         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
12116         (struct ipa_member_ptr_cst): New structure.
12117         (union jump_func_value): New field member_cst.
12118         * ipa-cp.c (ipcp_lat_is_insertable): New function.
12119         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
12120         jump function types.
12121         (ipcp_print_all_lattices): Slight fprintf rearrangement.
12122         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
12123         instead of ipcp_print_all_jump_functions.
12124         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
12125         only for replacable scalars.
12126
12127         * doc/invoke.texi (Optimize options): Add description of
12128         -findirect-inlining.
12129         * common.opt (flag_indirect_inlining): New flag.
12130         * opts.c (decode_options): Set flag_indirect_inlining when
12131         optimize >= 3.
12132
12133         * ipa-inline.c: Include ipa-prop.h.
12134         (inline_indirect_intraprocedural_analysis): New function.
12135         (inline_generate_summary): Allocate parameter and argument info
12136         structures, call inline_indirect_intraprocedural_analysis on each
12137         node when doing indirect inlining and deallocate indirect inlining
12138         data structures in the end.
12139         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
12140         (free_all_ipa_structures_after_iinln): New function.
12141         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
12142         done.
12143         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
12144
12145         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
12146         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12147         of computing the frequency separately.
12148         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12149         of computing the frequency separately.
12150         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
12151         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
12152         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
12153         (ipa_get_stmt_member_ptr_load_param): New function.
12154         (ipa_is_ssa_with_stmt_def): New function.
12155         (ipa_note_param_call): New function.
12156         (ipa_analyze_call_uses): New function.
12157         (ipa_analyze_stmt_uses): New function.
12158         (ipa_analyze_params_uses): New function.
12159         (ipa_free_node_params_substructures): Also free the param_calls linked
12160         list.
12161         (ipa_node_duplication_hook): Also duplicate the param_calls
12162         linked list.
12163         (ipa_print_node_param_flags): New function.
12164         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
12165         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
12166         * ipa-prop.h (struct ipa_param_flags): New field called.
12167         (struct ipa_param_call_note): New structure.
12168         (struct ipa_node_params): New fields param_calls and
12169         uses_analysis_done.
12170         (ipa_is_ith_param_called): New function.
12171         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
12172         ipa_analyze_params_uses and dump parameter flags.
12173
12174         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
12175         ipa_propagate_indirect_call_infos if performing indirect inlining,
12176         pass a new parameter new_edges to it.
12177         (add_new_edges_to_heap): New fucntion.
12178         (cgraph_decide_inlining_of_small_functions): New vector
12179         new_indirect_edges for newly found indirect edges , call
12180         ipa_propagate_indirect_call_infos after inlining.
12181         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
12182         inlining if performing indirect inlining.  Call
12183         free_all_ipa_structures_after_iinln when doing so too.
12184         (inline_generate_summary): Do not call
12185         free_all_ipa_structures_after_iinln here.
12186         * ipa-prop.c (update_jump_functions_after_inlining): New function.
12187         (print_edge_addition_message): New function.
12188         (update_call_notes_after_inlining): New function.
12189         (propagate_info_to_inlined_callees): New function.
12190         (ipa_propagate_indirect_call_infos): New function.
12191         * ipa-prop.h: Include cgraph.h
12192         (struct ipa_param_call_note): Fields reordered, new field processed.
12193         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
12194         flag indirect_call.
12195         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
12196         rediscovered call statements.
12197         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
12198         (dump_cgraph_node): Dump also the indirect_call flag.
12199         (cgraph_clone_edge): Copy also the indirect_call flag.
12200         * tree-inline.c (copy_bb): Do not check for fndecls from call
12201         expressions, check for edge availability when moving clones.
12202         (get_indirect_callee_fndecl): New function.
12203         (expand_call_inline): If callee declaration is not apprent from
12204         the statement, try calling get_indirect_callee_fndecl.  Do not
12205         issue warnings or call sorry when not inlinings an indirect edge.
12206         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
12207
12208         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
12209         bit more frandly to matching.
12210         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
12211         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
12212         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
12213
12214 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12215
12216         PR 36907
12217         * opth-gen.awk: Suppress function specific features when building
12218         target libraries.
12219         * optc-gen.awk: Ditto.
12220
12221 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12222
12223         PR 35058
12224         * diagnostic.c (pedwarn): Add opt parameter.
12225         (pedwarn0): New.
12226         * c-tree.h (pedwarn_init): Add opt parameter.
12227         (pedwarn_c90): Likewise.
12228         (pedwarn_c99): Likewise.
12229         * c-errors.c (pedwarn_c99): Likewise.
12230         (pedwarn_c90): Likewise.
12231         * toplev.h (pedwarn): Update declaration.
12232         (pedwarn0): Declare.
12233         * c-lex.c: All calls to pedwarn changed.
12234         * builtins.c: All calls to pedwarn changed.
12235         * toplev.c: All calls to pedwarn changed.
12236         * c-decl.c: All calls to pedwarn changed.
12237         * c-typeck.c: All calls to pedwarn changed.
12238         * c-common.c: All calls to pedwarn changed.
12239         * c-parser.c: All calls to pedwarn changed.
12240
12241 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12242             Karthik Kumar  <karthikkumar@gmail.com>
12243
12244         * attribs.c (file scope): Include c-common.h.
12245         (decl_attributes): Add support for #pragma GCC optimize and
12246         #pragma GCC option.
12247
12248         * targhooks.c (default_can_inline_p): New function that is the
12249         default for the TARGET_CAN_INLINE_P target hook.
12250
12251         * targhooks.h (default_can_inline_p): Add declaration.
12252
12253         * tree.c (cl_optimization_node): New static tree for building
12254         OPTIMIZATION_NODE tree.
12255         (cl_target_option_node): New static tree for building
12256         TARGET_OPTION_NODE tree.
12257         (cl_option_hash_table): New hash table for hashing
12258         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12259         (cl_option_hash_hash): New function to provide the hash value for
12260         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12261         (cl_option_hash_eq): New function to provide an equality test for
12262         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12263         (tree_code_size): Add support for OPTIMIZATION_NODE and
12264         TARGET_OPTION_NODE trees.
12265         (tree_code_structure): Add support for OPTIMIZATION_NODE and
12266         TARGET_OPTION_NODE trees.
12267         (build_optimization_node): Build a tree that has all of the
12268         current optimization options.
12269         (build_target_option_node): Build a tree that has the target
12270         options that might be changed on a per function basis.
12271
12272         * tree.h (file scope): Include options.h.
12273         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
12274         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12275         (TREE_OPTIMIZATION): Ditto.
12276         (TREE_TARGET_SPECIFIC): Ditto.
12277         (struct tree_function_decl): Add fields for remembering the
12278         current optimization options and target specific options.
12279         (struct tree_optimization_option): New tree variant that remembers
12280         the optimization options.
12281         (struct tree_target_option): New tree variant that remembers the
12282         target specific flags that might change for compiling a particular
12283         function.
12284         (union tree_node): Include tree_optimization_option and
12285         tree_target_option fields.
12286         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
12287         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
12288         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
12289         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
12290         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
12291         optimization and target options.
12292         (optimization_default_node): New macro to refer to global_trees
12293         field.
12294         (optimization_current_node): Ditto.
12295         (optimization_cold_node): Ditto.
12296         (optimization_hot_node): Ditto.
12297         (target_option_default_node): Ditto.
12298         (target_option_current_node): Ditto.
12299         (current_option_pragma): Ditto.
12300         (current_optimize_pragma): Ditto.
12301
12302         * target.h (struct gcc_target): Add valid_option_attribute_p,
12303         target_option_save, target_option_restore, target_option_print,
12304         target_option_pragma_parse, and can_inline_p hooks.
12305
12306         * toplev.h (parse_optimize_options): Add declaration.
12307         (fast_math_flags_struct_set_p): Ditto.
12308
12309         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
12310         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
12311         optimize is used.
12312
12313         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
12314         tree_can_inline_p hook to see if one function can inline another.
12315         (cgraph_decide_inlining): Ditto.
12316         (cgraph_decide_inlining_incrementally): Ditto.
12317
12318         * opts.c (decode_options): Add support for running multiple times
12319         to allow functions with different target or optimization options
12320         than was specified on the command line.
12321         (fast_math_flags_struct_set_p): New function that is similar to
12322         fast_math_flags_set_p, except it uses the values in the
12323         cl_optimization structure instead of global variables.
12324
12325         * optc-gen.awk: Add support for TargetSave to allow a back end to
12326         declare new fields that need to be saved when using function
12327         specific options.  Include flags.h and target.h in the options.c
12328         source.  Add support for Save to indicate which options can be set
12329         for individual functions.  Generate cl_optimize_save,
12330         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
12331         cl_target_option_restore, cl_target_option_print functions to
12332         allow functions to use different optimization or target options.
12333
12334         * opt-functions.awk (var_type_struct): Return the type used for
12335         storing the field in a structure.
12336
12337         * opth-gen.awk: Add support for TargetSave to allow a back end to
12338         declare new fields that need to be saved when using function
12339         specific options.  Add support for Save to indicate which options
12340         can be set for individual functions.  Only generate one extern for
12341         Mask fields.  Generate cl_optimization and cl_target_option
12342         structures to remember optimization and target options.
12343
12344         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
12345         collecting new tree nodes.
12346         (TS_TARGET_OPTION): Ditto.
12347
12348         * c-decl.c (merge_decls): Merge function specific target and
12349         optimization options.
12350
12351         * function.c (invoke_set_current_function_hook): If the function
12352         uses different optimization options, change the global variables
12353         to reflect this.
12354
12355         * coretypes.h (struct cl_optimization): Add forward reference.
12356         (struct cl_target_option): Ditto.
12357
12358         * c-pragma.c (option_stack): New static vector to remember the
12359         current #pragma GCC option stack.
12360         (handle_pragma_option): New function to support #pragma GCC option
12361         to change target options.
12362         (optimize_stack): New static vector to remember the current
12363         #pragma GCC optimize stack.
12364         (handle_pragma_optimize): New function to support #pragma GCC
12365         optimize to change optimization options.
12366         (init_pragma): Add support for #pragma GCC optimize and #pragma
12367         GCC option.
12368
12369         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
12370         optimization options.
12371         (TARGET_OPTION_NODE): New tree code for remembering certain target
12372         options.
12373
12374         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
12375         TARGET_OPTION_NODE trees.
12376
12377         * common.opt (-O): Add Optimization flag.
12378         (-Os): Ditto.
12379         (-fmath-errno): Ditto.
12380         (-falign-functions): Add UInteger flag to make sure flag gets full
12381         int in cl_optimization structure.
12382         (-falign-jumps): Ditto.
12383         (-falign-labels): Ditto.
12384         (-falign-loops): Ditto.
12385         (-fsched-stalled-insns): Ditto.
12386         (-fsched-stalled-insns-dep): Ditto.
12387
12388         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
12389         definition.
12390         (TARGET_OPTION_SAVE): Ditto.
12391         (TARGET_OPTION_RESTORE): Ditto.
12392         (TARGET_OPTION_PRINT): Ditto.
12393         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12394         (TARGET_CAN_INLINE_P): Ditto.
12395         (TARGET_INITIALIZER): Add new hooks.
12396
12397         * tree-inline.c (tree_can_inline_p): New function to determine
12398         whether one function can inline another.  Check if the functions
12399         use compatible optimization options, and also call the backend
12400         can_inline_p hook.
12401
12402         * tree-inline.h (tree_can_inline_p): Add declaration.
12403
12404         * c-common.c (c_common_attribute): Add support for option and
12405         optimize attributes.
12406         (handle_option_attribute): Add support for the option attribute to
12407         allow the user to specify different target options for compiling a
12408         specific function.
12409         (handle_optimize_attribute): Add support for the optimize
12410         attribute to allow the user to specify different optimization
12411         options for compiling a specific function.
12412         (handle_hot_attribute): Turn on -O3 optimization for this one
12413         function if it isn't the default optimization level.
12414         (handle_cold_attribute): Turn on -Os optimization for this one
12415         function if it insn't the default optimization.
12416         (const_char_p): New const char * typedef.
12417         (optimize_args): New static vector to remember the optimization
12418         arguments.
12419         (parse_optimize_options): New function to set up the optimization
12420         arguments from either the optimize attribute or #pragma GCC optimize.
12421
12422         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
12423         (builtin_define_std): Ditto.
12424
12425         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
12426         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
12427         (x86_64-*-*): Ditto.
12428
12429         * Makefile.in (TREE_H): Add options.h.
12430         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
12431
12432         * doc/extend.texi (option attribute): Document new attribute.
12433         (optimize attribute): Ditto.
12434         (hot attribute): Document hot attribute sets -O3.
12435         (cold attribute): Document cold attribute sets -Os.
12436         (#pragma GCC option): Document new pragma.
12437         (#pragma GCC optimize): Ditto.
12438
12439         * doc/options.texi (TargetSave): Document TargetSave syntax.
12440         (UInteger): Document UInteger must be used for certain flags.
12441         (Save): Document Save option to create target specific options
12442         that can be saved/restored on a function specific context.
12443
12444         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
12445         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12446
12447         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
12448         (TARGET_OPTION_SAVE): Ditto.
12449         (TARGET_OPTION_RESTORE): Ditto.
12450         (TARGET_OPTION_PRINT): Ditto.
12451         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12452         (TARGET_CAN_INLINE_P): Ditto.
12453
12454         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
12455         -mfpmath=sse,387.
12456         (-mfpmath=both): Ditto.
12457
12458 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12459             Karthik Kumar  <karthikkumar@gmail.com>
12460
12461         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
12462         (TARGET_POPCNT): Ditto.
12463         (TARGET_SAHF): Ditto.
12464         (TARGET_AES): Ditto.
12465         (TARGET_PCLMUL): Ditto.
12466         (TARGET_CMPXCHG16B): Ditto.
12467         (TARGET_RECIP): Move switch into target_flags.
12468         (TARGET_FUSED_MADD): Ditto.
12469         (ix86_arch_features): Make an unsigned char type.
12470         (ix86_tune_features): Ditto.
12471         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
12472         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
12473         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
12474
12475         * config/i386/i386.opt (arch): New TargetSave field to define
12476         fields that need to be saved for function specific option support.
12477         (tune): Ditto.
12478         (fpmath): Ditto.
12479         (branch_cost): Ditto.
12480         (ix86_isa_flags_explicit): Ditto.
12481         (tune_defaulted): Ditto.
12482         (arch_specified): Ditto.
12483         (-m128-long-double): Add Save flag to save option for target
12484         specific option support.
12485         (-m80387): Ditto.
12486         (-maccumulate-outgoing-args): Ditto.
12487         (-malign-double): Ditto.
12488         (-malign-stringops): Ditto.
12489         (-mfancy-math-387): Ditto.
12490         (-mhard-float): Ditto.
12491         (-mieee-fp): Ditto.
12492         (-minline-all-stringops): Ditto.
12493         (-minline-stringops-dynamically): Ditto.
12494         (-mms-bitfields): Ditto.
12495         (-mno-align-stringops): Ditto.
12496         (-mno-fancy-math-387): Ditto.
12497         (-mno-push-args): Ditto.
12498         (-mno-red-zone): Ditto.
12499         (-mpush-args): Ditto.
12500         (-mred-zone): Ditto.
12501         (-mrtd): Ditto.
12502         (-msseregparm): Ditto.
12503         (-mstack-arg-probe): Ditto.
12504         (-m32): Ditto.
12505         (-m64): Ditto.
12506         (-mmmx): Ditto.
12507         (-m3dnow): Ditto.
12508         (-m3dnowa): Ditto.
12509         (-msse): Ditto.
12510         (-msse2): Ditto.
12511         (-msse3): Ditto.
12512         (-msse4.1): Ditto.
12513         (-msse4.2): Ditto.
12514         (-msse4): Ditto.
12515         (-mno-sse4): Ditto.
12516         (-msse4a): Ditto.
12517         (-msse5): Ditto.
12518         (-mrecip): Move flag into target_flags.
12519         (-mcld): Ditto.
12520         (-mno-fused-madd): Ditto.
12521         (-mfused-madd): Ditto.
12522         (-mabm): Move flag into ix86_isa_flags.
12523         (-mcx16): Ditto.
12524         (-mpopcnt): Ditto.
12525         (-msahf): Ditto.
12526         (-maes): Ditto.
12527         (-mpclmul): Ditto.
12528
12529         * config/i386/i386-c.c: New file for #pragma support.
12530         (ix86_target_macros_internal): New function to #define or #undef
12531         target macros based when the user uses the #pragma GCC option to
12532         change target options.
12533         (ix86_pragma_option_parse): New function to add #pragma GCC option
12534         support.
12535         (ix86_target_macros): Move defining the target macros here from
12536         TARGET_CPU_CPP_BUILTINS in i386.h.
12537         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
12538         defined, initialize any subtarget #pragmas.
12539
12540         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
12541         REGISTER_TARGET_PRAGMAS.
12542
12543         * config/i386/t-i386: New file for x86 dependencies.
12544         (i386.o): Make dependencies mirror the include files used.
12545         (i386-c.o): New file, add dependencies.
12546
12547         * config/i386/i386-protos.h (override_options): Add bool argument.
12548         (ix86_valid_option_attribute_tree): Add declaration.
12549         (ix86_target_macros): Ditto.
12550         (ix86_register_macros): Ditto.
12551
12552         * config/i386/i386.c (ix86_tune_features): Move initialization of
12553         the target masks to initial_ix86_tune_features to allow functions
12554         to have different target options.  Make type unsigned char,
12555         instead of unsigned int.
12556         (initial_ix86_tune_features): New static vector to hold processor
12557         masks for the tune variables.
12558         (ix86_arch_features): Move initialization of the target masks to
12559         initial_ix86_arch_features to allow functions to have different
12560         target options.  Make type unsigned char, instead of unsigned int.
12561         (initial_ix86_arch_features): New static vector to hold processor
12562         masks for the arch variables.
12563         (enum ix86_function_specific_strings): New enum to describe the
12564         string options used for attribute((option(...))).
12565         (ix86_target_string): New function to return a string that
12566         describes the target options.
12567         (ix86_debug_options): New function to print the current options in
12568         the debugger.
12569         (ix86_function_specific_save): New function hook to save the
12570         function specific global variables in the cl_target_option structure.
12571         (ix86_function_specific_restore): New function hook to restore the
12572         function specific variables from the cl_target_option structure to
12573         the global variables.
12574         (ix86_function_specific_print): New function hook to print the
12575         target specific options in the cl_target_option structure.
12576         (ix86_valid_option_attribute_p): New function hook to validate
12577         attribute((option(...))) arguments.
12578         (ix86_valid_option_attribute_tree): New function that is common
12579         code between attribute((option(...))) and #pragma GCC option
12580         support that parses the options and returns a tree holding the options.
12581         (ix86_valid_option_attribute_inner_p): New helper function for
12582         ix86_valid_option_attribute_tree.
12583         (ix86_can_inline_p): New function hook to decide if one function
12584         can inline another on a target specific basis.
12585         (ix86_set_current_function); New function hook to switch target
12586         options if the user used attribute((option(...))) or #pragma GCC
12587         option.
12588         (ix86_tune_defaulted): Move to static file scope from
12589         override_options.
12590         (ix86_arch_specified): Ditto.
12591         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
12592         ix86_isa_flags.
12593         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
12594         (OPTION_MASK_ISA_ABM_SET): Ditto.
12595         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
12596         (OPTION_MASK_ISA_CX16_SET): Ditto.
12597         (OPTION_MASK_ISA_SAHF_SET): Ditto.
12598         (OPTION_MASK_ISA_AES_UNSET): Ditto.
12599         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12600         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
12601         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
12602         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
12603         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
12604         (struct ptt): Move to static file scope from override_options.
12605         (processor_target_table): Ditto.
12606         (cpu_names): Ditto.
12607         (ix86_handle_option): Add support for options that are now isa options.
12608         (override_options): Add support for declaring functions that
12609         support different target options than were specified on the
12610         command line.  Move struct ptt, processor_target_table, cpu_names,
12611         ix86_tune_defaulted, ix86_arch_specified to static file scope.
12612         Add bool argument.  Fix up error messages so the appropriate error
12613         is given for either command line or attribute.
12614         (ix86_previous_fndecl): New static to remember previous function
12615         declaration to see if we need to change target options.
12616         (ix86_builtins_isa): New array to record the ISA of each builtin
12617         function.
12618         (def_builtin): Always create the builtin function, even if the
12619         current ISA doesn't support it.
12620         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
12621         tests for those builtins.
12622         (ix86_init_builtins): Remove TARGET_MMX test for calling
12623         ix86_init_mmx_sse_builtins.
12624         (ix86_expand_builtin): If the current ISA doesn't support a given
12625         builtin, signal an error.
12626         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
12627         (TARGET_SET_CURRENT_FUNCTION): Ditto.
12628         (TARGET_OPTION_SAVE): Ditto.
12629         (TARGET_OPTION_RESTORE): Ditto.
12630         (TARGET_OPTION_PRINT): Ditto.
12631         (TARGET_CAN_INLINE_P): Ditto.
12632
12633 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
12634
12635         * c-typeck.c (build_external_ref): Don't call assemble_external.
12636         * final.c (output_operand): Call assemble_external.
12637
12638 2008-07-21  DJ Delorie  <dj@redhat.com>
12639
12640         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
12641         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12642
12643 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12644
12645         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
12646         original insn and splitter contents into ...
12647         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
12648         flag_unsafe_math_optimizations.  Add dummy scratch register.
12649         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
12650         !flag_unsafe_math_optimizations.  Returns number with next
12651         highest magnitude if this is still less or equal to the true
12652         quotient in magnitude.
12653
12654 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
12655
12656         * Makefile.in: Replace toplev.h with TOPLEV_H.
12657         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
12658         * c-lex.c (fe_file_change): Don't set in_system_header.
12659         * c-parser.c (c_token): Remove in_system_header.
12660         (c_lex_one_token): Don't set in_system_header.
12661         (c_parser_set_source_position_from_token): Don't set in_system_header.
12662         * diagnostic.c (diagnostic_report_diagnostic): Use location from
12663         diagnostic_info.
12664         (warning_at): New.
12665         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
12666         * flags.h (in_system_header): Remove.
12667         * function.c (saved_in_system_header): Remove.
12668         (push_cfun): Don't set in_system_header.
12669         (pop_cfun): Don't set in_system_header.
12670         (push_struct_function): Don't set in_system_header.
12671         * input.h (expanded_location): Add sysp.
12672         (in_system_header_at): New.
12673         (in_system_header): New.
12674         * toplev.c (in_system_header): Remove.
12675         * toplev.h: Include input.h
12676         (warning_at): New.
12677         * tree-cfg.c (execute_warn_function_return): Call warning_at.
12678         * tree-ssa.c (warn_uninit): Call warning_at.
12679         (warn_uninitialized_var): Update calls to warn_uninit.
12680         (warn_uninitialized_phi): Update calls to warn_uninit.
12681         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
12682         (expand_location): Initialize xloc.sysp.
12683         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
12684         (tree_decl_with_vis): Remove in_system_header_flag.
12685
12686 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
12687
12688         PR target/36822
12689         * recog.c (asm_operand_ok): Change the order of the extra
12690         memory constraint checks.
12691
12692 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12693
12694         PR tree-opt/36879
12695         * tree-switch-conversion.c (build_one_array): Call
12696         varpool_mark_needed_node and varpool_finalize_decl
12697         instead of assemble_variable.
12698
12699 2008-07-19  Jan Hubicka  <jh@suse.cz>
12700
12701         * cgraph.c (cgraph_add_new_function): Do early local passes.
12702         * tree-nrv.c (gate_pass_return_slot): New gate.
12703         (pass_nrv): Add the gate.
12704         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
12705         functions.
12706         (coalesce_ssa_name): Coalesce SSA names.
12707         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
12708         not optimizing so unused user vars remains visible.
12709         * common.opt (flag_tree_ter): Always enable by default.
12710         * tree-ssa-ter.c: Include flags.h
12711         (is_replaceable_p): Check that locations match; when aliasing
12712         is missing be conservative about loads.
12713         * tree-optimize.c (gate_init_datastructures): Remove.
12714         (pass_init_datastructures): New.
12715         * passes.c: Reorder passes so we always go into SSA.
12716
12717 2008-07-19  Jan Hubicka  <jh@suse.cz>
12718
12719         * doc/extend.texi (flatten attribute): Remove note about
12720         unit-at-a-time.
12721         * doc/invoke.texi (--combine): Likewise.
12722         (-finline-functions-called-once): Update levels when enabled.
12723         (-funit-at-a-time): Document new behaviour.
12724         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
12725         -fno-section-anchors when disabled explicitly.
12726         (inline params): They are not ignored now.
12727         (precompiled headers): Remove unit-at-a-time as being incompatible.
12728         * opts.c (decode_options): Handle unit-at-a-time as alias;
12729         imply -fno-section-anchors when toplevel reorder is disabled
12730         explicitly.
12731         * common.opt (ftoplevel-reorder): Set default value to 2.
12732         (funit-at-a-time): Set default value to 1.
12733         * config/rs6000/rs6000.c (optimization_options): Set section anchors
12734         to 2.
12735
12736 2008-07-19  Jan Hubicka  <jh@suse.cz>
12737
12738         * builtins.c (expand_builtin_int_roundingfn,
12739         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
12740         it is not useful.
12741
12742 2008-07-19  Richard Guenther  <rguenther@suse.de>
12743
12744         PR bootstrap/36864
12745         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
12746         * tree-ssa-sccvn.c (get_constant_value_id): New function.
12747         * tree-ssa-pre.c (get_expr_value_id): For newly created
12748         constant value-ids make sure to add the expression to its
12749         expression-set.
12750
12751 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
12752
12753         PR middle-end/36877
12754         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
12755         return value of the builtin is ignored.
12756
12757 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12758
12759         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
12760         bits, a C conformant malloc implementation has to provide.
12761         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
12762
12763 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
12764
12765         PR target/36780
12766         PR target/36827
12767         * reload.c (find_reloads_subreg_address): Only reload address if
12768         reloaded == 0, not for reloaded != 1.
12769
12770         Revert:
12771         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12772         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12773         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12774         m32c_legitimize_reload_address.
12775
12776         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12777         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12778         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12779
12780 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12781
12782         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
12783         argument, saying whether nested array are to be collapsed
12784         into a single array type DIE with multiple subscripts.
12785         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
12786         issues, centralize the nested array types collapsing control and
12787         disable the transformation for Ada.
12788
12789 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
12790
12791         PR target/36786
12792         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
12793         x86_64_shift_adj.
12794         (x86_64_shift_adj_2): New expander.
12795         (x86_64_shift_adj_3): Ditto.
12796         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
12797         to split TImode operands.
12798         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
12799         (ix86_split_lshr): Ditto.
12800
12801 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
12802
12803         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
12804         and __CHAR32_TYPE__.
12805         * c-typeck.c (digest_init): Support char16_t and char32_t.
12806         (set_nonincremental_init_from_string): Idem.
12807
12808 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12809
12810         PR middle-end/36859
12811         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
12812         PREFERRED_STACK_BOUNDARY.
12813         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
12814
12815 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12816
12817         PR middle-end/36858
12818         * function.c (locate_and_pad_parm): Cap boundary earlier.
12819
12820 2008-07-17  Julian Brown  <julian@codesourcery.com>
12821
12822         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
12823         no-op for targets which don't use DLLs.
12824
12825 2008-07-17  Martin Jambor  <mjambor@suse.cz>
12826
12827         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
12828         that nodes are relevant by examining the node->analyzed flag.
12829         (ipcp_init_stage): Check which nodes are relevant, assert that the
12830         relevant ones are also required.
12831         (ipcp_propagate_stage): Check on the side arrays are properly
12832         allocated.
12833         (ipcp_print_all_jump_functions): Make sure not to touch any node
12834         that is not analyzed or an edge that does not have a corresponding
12835         entry in the on-the-side vectors.
12836         (ipcp_function_scale_print): Likewise.
12837         (ipcp_update_callgraph): Check that the node is relevant.
12838         (ipcp_insert_stage): Check that the node is relevant.  Check there is
12839         an info for every node and edge.
12840         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
12841         (ipa_print_all_tree_maps): Likewise and a new variable info.
12842         (ipa_print_all_params_modified): Likewise.
12843         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
12844
12845 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
12846
12847         PR target/25343
12848         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
12849
12850 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
12851
12852         PR rtl-optimization/36753
12853         * fwprop.c (use_killed_between): Don't shortcut
12854         single-definition global registers.
12855
12856 2008-07-16  Jan Hubicka  <jh@suse.cz>
12857
12858         * cgraph.h (varpool_empty_needed_queue): Declare.
12859         * cgraphunit.c (output_in_order): Mark all variables as needed;
12860         empty the queue.
12861         * varpool.c (varpool_assemble_node): Update debug queue.
12862         (varpool_assemble_pending_decls): Don't do it here.
12863         (varpool_empty_needed_queue):  New function.
12864
12865 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12866
12867         * recog.c (peephole2_optimize): Fix formatting.
12868
12869 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12870
12871         * c-pch.c (get_ident): Avoid C++ keywords.
12872         * combine-stack-adj.c (single_set_for_csa): Likewise.
12873         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
12874         output_asm_insn): Likewise.
12875         * reload.c (push_secondary_reload, find_reusable_reload,
12876         push_reload, combine_reloads, find_reloads,
12877         debug_reload_to_stream): Likewise.
12878         * reload.h (struct reload): Likewise.
12879         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
12880         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
12881         emit_output_reload_insns): Likewise.
12882         * targhooks.c (default_secondary_reload): Likewise.
12883         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
12884
12885 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12886
12887         * recog.c (validate_change_1, validate_change,
12888         validate_unshare_change, validate_replace_rtx_1, struct
12889         funny_match, constrain_operands, peephole2_optimize): Avoid C++
12890         keywords.
12891         * reload.c (push_secondary_reload, secondary_reload_class,
12892         scratch_reload_class, find_valid_class, find_reusable_reload,
12893         push_reload, find_dummy_reload, find_reloads_address_1,
12894         find_reloads_address_part, find_equiv_reg): Likewise.
12895         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
12896         choose_reload_regs): Likewise.
12897         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
12898         Likewise.
12899         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
12900         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
12901         * sched-rgn.c (concat_INSN_LIST): Likewise.
12902         * stor-layout.c (mode_for_size, mode_for_size_tree,
12903         smallest_mode_for_size): Likewise.
12904
12905 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12906
12907         * cfg.c (dump_reg_info): Avoid C++ keywords.
12908         * dwarf2asm.c (dw2_force_const_mem,
12909         dw2_asm_output_encoded_addr_rtx): Likewise.
12910         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
12911         * expmed.c (expand_shift): Likewise.
12912         * global.c (find_reg): Likewise.
12913         * graph.c (draw_edge): Likewise.
12914         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
12915         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
12916         widen_clz, widen_bswap, expand_parity, expand_unop,
12917         emit_cmp_and_jump_insn_1): Likewise.
12918         * postreload.c (reload_cse_simplify_operands): Likewise.
12919         * ra.h (add_neighbor): Likewise.
12920         * reg-stack.c (remove_regno_note, change_stack): Likewise.
12921         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
12922         record_reg_classes, copy_cost, record_address_regs,
12923         invalid_mode_change_p): Likewise.
12924         * regrename.c (regrename_optimize, scan_rtx_reg,
12925         dump_def_use_chain, find_oldest_value_reg,
12926         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
12927
12928 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12929
12930         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
12931         MASK_POWERPC64 for power4 in previous commit.
12932
12933 2008-07-16  Olivier Hainque  <hainque@adacore.com>
12934
12935         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
12936         instead of bare conversion to cast const-ness away.
12937
12938 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
12939
12940         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
12941         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
12942         * config/xtensa/xtensa.c (xtensa_function_value): New function.
12943         (TARGET_FUNCTION_VALUE): Define.
12944
12945 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12946
12947         * config/rs6000/rs6000.c (processor_target_table): Add
12948         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
12949
12950 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12951
12952         PR target/36827
12953         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12954         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12955         m32c_legitimize_reload_address.
12956
12957 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
12958
12959         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
12960         DECL_IN_SYSTEM_HEADER in sync.
12961
12962 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
12963
12964         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
12965         * tree-ssa-pre.c (pre_expr_eq): Ditto
12966         (get_constant_for_value_id): Take a type as an argument.
12967         (fully_constant_expression): Pass in type.
12968         (find_or_generate_expression): Short circuit constant case.
12969         (create_expression_by_pieces): Remove special casing of
12970         pointer_plus.
12971         (do_regular_insertion): Short circuit constant case.
12972         (do_partial_partial_insertion): Ditto.
12973
12974 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12975
12976         PR target/36782
12977         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
12978
12979 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
12980
12981         * config/xtensa/libgcc-xtensa.ver: New file.
12982         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
12983
12984 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12985
12986         * df-problems.c (df_set_note): Avoid C++ keywords.
12987         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
12988         * dse.c (record_store, remove_useless_values): Likewise.
12989         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
12990         gen_reg_rtx_offset, operand_subword, change_address_1,
12991         change_address, adjust_address_1, offset_address,
12992         widen_memory_access, emit_copy_of_insn_after): Likewise.
12993         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
12994         * fwprop.c (should_replace_address, propagate_rtx_1,
12995         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
12996         Likewise.
12997         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
12998         gcse_emit_move_after, update_ld_motion_stores): Likewise.
12999         * lcm.c (compute_insert_delete, pre_edge_lcm,
13000         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
13001         * lower-subreg.c (resolve_reg_notes): Likewise.
13002         * mode-switching.c (optimize_mode_switching): Likewise.
13003
13004 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13005
13006         * bt-load.c (add_btr_def, migrate_btr_def,
13007         branch_target_load_optimize): Avoid C++ keywords.
13008         * caller-save.c (insert_restore, insert_save, insert_one_insn):
13009         Likewise.
13010         * combine.c (subst, simplify_set, make_extraction,
13011         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
13012         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
13013         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
13014
13015 2008-07-15  Richard Guenther  <rguenther@suse.de>
13016
13017         PR middle-end/36369
13018         * c-common.c (strict_aliasing_warning): Do not warn for
13019         TYPE_REF_CAN_ALIAS_ALL pointers.
13020         (c_common_get_alias_set): may_alias types are not special.
13021         * tree.c (build_pointer_type_for_mode): Look up the may_alias
13022         attribute and set can_ref_all accordingly.
13023         (build_reference_type_for_mode): Likewise.
13024         * doc/extend.texi (may_alias): Clarify.
13025
13026 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13027
13028         PR target/36780
13029         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
13030         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
13031
13032 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13033
13034         PR target/31568
13035         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
13036         gcc_assert, instead call output_operand_lossage.
13037
13038 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
13039
13040         * builtins.c (std_canonical_va_list): Treat structure based
13041         va_list types.
13042
13043 2008-07-15  Ben Elliston  <bje@au.ibm.com>
13044
13045         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
13046
13047 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
13048
13049         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
13050         is set.
13051
13052 2008-07-14  Jan Hubicka  <jh@suse.cz>
13053
13054         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
13055         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
13056         fix predicates and constraints.
13057         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
13058         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
13059
13060 2008-07-14  Doug Kwan  <dougkwan@google.com>
13061
13062         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
13063         additional option file arm/eabi.opt.
13064         * config/arm/eabi.h (File): New configuration file for EABI targets.
13065         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
13066         SUBSUBTARGET_EXTRA_SPECS.
13067         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
13068         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
13069         from STARTFILE_SPEC so that it can be referenced in an override.
13070         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
13071         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
13072         can be referenced in an override.
13073         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
13074         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
13075         so that it can be referenced in an override.
13076         (LINK_SPEC): Use BPABI_LINK_SPEC.
13077         * config/arm/eabi.opt (File): New.
13078
13079 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13080
13081         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
13082         (FIXED_VALUE_H): New variable.
13083         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
13084         input.h, fixed-value.h.
13085         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
13086         (BASIC_BLOCK_H): Use $(BITMAP_H).
13087         (FUNCTION_H): Add varray.h.
13088         (IPA_REFERENCE_H): Use $(BITMAP_H).
13089         (CGRAPH_H): Add $(BASIC_BLOCK_H).
13090         (DF_H): Use $(BITMAP_H).
13091         (GGC_H): Add statistics.h.
13092         (INSN_ADDR_H): New.
13093         (INSN_ATTR_H): Use it.
13094         (SYSTEM_H): Add safe-ctype.h, filenames.h.
13095         (INPUT_H): New.
13096         (SYMTAB_H): Add $(OBSTACK_H).
13097         (CPP_INTERNAL_H): New.
13098         (TREE_DUMP_H): Add tree-pass.h.
13099         (TREE_FLOW_H): Use $(BITMAP_H)
13100         (PRETTY_PRINT_H): Use $(INPUT_H).
13101         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
13102         (GSTAB_H): New.
13103         (BITMAP_H): New.
13104         (many object files): Fix lots of header dependencies throughout.
13105
13106 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13107
13108         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
13109         New macros.
13110         (s-gtyp-input): Use them to write tmp-gi.list.
13111         (echo_to_gi.list): Remove.
13112
13113 2008-07-14  Richard Guenther  <rguenther@suse.de>
13114
13115         * tree-ssa-sccvn.c (pre_info): Remove.
13116         (switch_to_PRE_table): Likewise.
13117         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
13118         (set_hashtable_value_ids): Do not create value-ids for the
13119         optimistic tables.
13120         (run_scc_vn): Remove double test.  Remove bogus special-case
13121         in value-number printing.
13122         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
13123         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
13124         SSA_NAME_VALUE.
13125         * tree-flow-inline.h (get_value_handle): Remove.
13126         * tree-flow.h (get_value_handle): Remove.
13127
13128 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13129
13130         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
13131         in which we generate arithmetics is not a subrange.
13132
13133 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13134
13135         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
13136
13137 2008-07-14  Richard Guenther  <rguenther@suse.de>
13138
13139         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
13140
13141 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
13142
13143         PR target/36745
13144         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
13145         reload for symbol refs moved to r0 with -fPIC.
13146         (legitimize_pic_address): Use the target register as temporary
13147         reg if possible.
13148         (emit_symbolic_move): Adjust comment.
13149         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
13150         New expanders.
13151
13152 2008-07-14  Ben Elliston  <bje@au.ibm.com>
13153
13154         * c-common.h (C_CPP_HASHNODE): New macro.
13155         * coretypes.h (struct cpp_token): Forward declare.
13156         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
13157         the context-sensitive keyword method.
13158         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
13159         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
13160         expand_bool_pixel): New.
13161         (altivec_categorize_keyword): New function.
13162         (init_vector_keywords): New function.
13163         (rs6000_macro_to_expand): Likewise.
13164         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
13165         compiling an ISO C dialect.
13166
13167 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
13168
13169         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
13170         (create_expression_by_pieces): Fix typo.
13171         (do_regular_insertion): Use debug counter here too.
13172
13173 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
13174
13175         PR target/35492.
13176         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
13177         CONST_OK_FOR_LETTER_P.  All port-local users changed.
13178         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
13179         implement Kp matching power-of-two.
13180         (CONSTRAINT_LEN): Define to match.
13181         * config/cris/cris.md: Replace all use of constraint K with Kc.
13182         ("*btst*): Use Kp for operand 0 of last alternative.
13183
13184 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13185
13186         PR testsuite/36440
13187         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
13188         and quad formats.
13189
13190 2008-07-13  Jan Hubicka  <jh@suse.cz>
13191
13192         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
13193         to be mangled too.
13194
13195 2008-07-13  Richard Guenther  <rguenther@suse.de>
13196
13197         PR middle-end/36811
13198         * langhooks.c (lhd_print_error_function): Deal with recursive
13199         BLOCK trees.
13200
13201 2008-07-12  Jan Hubicka  <jh@suse.cz>
13202
13203         * cgraph.c (assembler_name_hash): New static var.
13204         (hash_node_by_assembler_name, eq_assembler_name): New.
13205         (cgraph_node_for_asm): Use hashtable.
13206         (cgraph_remove_node): Maintain hashtable.
13207         (change_decl_assembler_name): Sanity check that names are not changing
13208         after aliasing was processed.
13209         * cgraph.h (varpoon_node): Add next GGC marker.
13210         * tree.c (decl_assembler_name_equal): Constify.
13211         (decl_assembler_name_hash): New.
13212         * tree.h (decl_assembler_name_equal): Constify.
13213         (decl_assembler_name_hash): Update.
13214
13215 2008-07-12  David Daney  <ddaney@avtrex.com>
13216
13217         * config/mips/driver-native.c (host_detect_local_cpu): Handle
13218         sb1 and r5000 cpus.
13219
13220 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
13221
13222         * doc/md.texi: Document the MIPS "v" constraint.
13223         * config/mips/mips.h (reg_class): Revert last change.
13224         (REG_CLASS_NAMES): Likewise.
13225         (REG_CLASS_CONTENTS): Likewise.
13226         * config/mips/mips.c (mips_regno_to_class): Likewise.
13227         * config/mips/constraints.md (v): Likewise, but add documentation.
13228         Add a comment to say that this constraint should not be used in
13229         gcc code.
13230
13231 2008-07-11  DJ Delorie  <dj@redhat.com>
13232
13233         * config/h8300/h8300.md (length): Fix branch offset limit.
13234
13235 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
13236
13237         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
13238         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
13239         (avr_hard_regno_scratch_ok): New function.
13240         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
13241         * config/avr/avr.md (all peepholes that request a scratch register):
13242         Remove avr_peep2_scratch_safe use.
13243
13244 2008-07-11  Tom Tromey  <tromey@redhat.com>
13245             Ian Lance Taylor  <iant@google.com>
13246
13247         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
13248         (struct c_common_resword): Define.
13249         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
13250         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
13251         (c_common_reswords, num_c_common_reswords): Declare.
13252         * c-common.c (c_common_reswords): New global const array.
13253         (num_c_common_reswords): New const int.
13254         * c-parser.c (struct resword, reswords): Don't define.
13255         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
13256         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
13257         than reswords.  If warning about C++ keywords, give them a special
13258         RID code.
13259         (c_lex_one_token): Warn about C++ keywords.  Call
13260         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
13261         (c_parser_external_declaration): Look for RID_xxx rather than
13262         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
13263         (c_parser_statement_after_labels): Likewise.
13264         (c_parser_objc_class_instance_variables): Likewise.
13265         (c_parser_objc_class_declaration): Likewise.
13266         (c_parser_objc_try_catch_statement): Likewise.
13267         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
13268         (declspecs_add_type): Likewise.
13269
13270 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
13271
13272         * ggc-page.c (alloc_page):
13273         Substituting xmalloc, xcalloc with
13274         XNEWVEC and XCNEWVAR macros which add the
13275         needed casts.
13276
13277 2008-07-11  Richard Guenther  <rguenther@suse.de>
13278
13279         PR tree-optimization/36765
13280         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
13281         aliases from HEAP vars to SMTs.
13282
13283 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13284
13285         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
13286         * configure.ac (loose_warn): Move -Wc++-compat from here...
13287         (strict_warn): ...to here.
13288         * configure: Regenerate.
13289
13290 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
13291
13292         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
13293         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
13294         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
13295         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
13296         excluding more specific h8300-*-* and sh-*-* targets.
13297
13298 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
13299
13300         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
13301         (eliminate): Ditto.
13302         (execute_pre): Call loop_optimizer_finalize in early exit.
13303
13304 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
13305
13306         PR middle-end/36790
13307         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
13308         uids in the bitmap, not just VAR_DECL uids.
13309
13310         PR rtl-optimization/36419
13311         * combine-stack-adj.c (adjust_frame_related_expr): New function.
13312         (combine_stack_adjustments_for_block): Call it if needed.  Delete
13313         correct insn.
13314         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
13315         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
13316         prologue sp adjustment.
13317
13318 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
13319
13320         PR other/28322
13321         * opts.c (print_ignored_options): Report postponed diagnostics for
13322         unknown -Wno-* options as warnings, not errors.
13323         (postpone_unknown_option_error): Renamed to...
13324         (postpone_unknown_option_warning): ... this.
13325
13326 2008-07-09  Doug Kwan  <dougkwan@google.com>
13327
13328         Revert:
13329         2008-07-08  Doug Kwan  <dougkwan@google.com>
13330
13331         * config/arm/arm.opt (mandroid): New option.
13332         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13333         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13334         (CC1_SPEC): Same.
13335         (CC1PLUS_SPEC): Same.
13336         (LIB_SPEC): Same.
13337         (STARTFILE_SPEC): Same.
13338         (ENDFILE_SPEC): Same.
13339         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13340         used.
13341
13342 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
13343
13344         PR target/35802
13345         * config/mips/mips.h (reg_class): Remove V1_REG.
13346         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13347         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
13348         instead of V1_REGS.
13349         (mips_get_tp): New function.
13350         (mips_legitimize_tls_address): Use it.
13351         * config/mips/constraints.md (v): Delete.
13352         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
13353         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
13354         After reload, split into a move and ...
13355         (*tls_get_tp_<mode>_split): ...this new instruction.
13356
13357 2008-07-09  David Daney  <ddaney@avtrex.com>
13358
13359         * config/mips/driver-native.c: Include coretypes.h and tm.h.
13360
13361 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
13362
13363         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
13364         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
13365         Add c argument.
13366         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
13367         htab_delete should be called.  Don't free c.
13368         (lookup_tmp_var): Create temp_htab lazily.
13369         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
13370         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
13371         callers.
13372         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
13373         lower_omp_ordered, lower_omp_critical, lower_omp_for,
13374         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
13375         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
13376         * tree-sra.c (generate_element_init): Likewise.
13377         * tree-mudflap.c (execute_mudflap_function_ops,
13378         execute_mudflap_function_decls): Likewise.
13379         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
13380         * tree-gimple.h (struct gimplify_ctx): New type.
13381         (push_gimplify_context): Adjust prototype.
13382
13383 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
13384
13385         * tree-ssa-pre.c (phi_translate_1): Update placement of
13386         add_to_value calls.
13387
13388 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
13389
13390         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
13391         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
13392         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
13393         * targhooks.c (default_hard_regno_scratch_ok): New function.
13394         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
13395         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
13396         * recog.c:  Include "target.h".
13397         (peep2_find_free_register): Add check for global regs. Add target
13398         specific check.
13399         * Makefile.in (recog.o): Depend on target.h.
13400
13401 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13402
13403         * config/sh/sh.c (sh_canonical_va_list_type): New.
13404         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
13405
13406 2008-07-09  Raksit Ashok <raksit@google.com>
13407
13408         * doc/invoke.texi (Option Summary): Mention new option
13409         -Wdisallowed-function-list=...
13410         (Warning Options): Document -Wdisallowed-function-list=...
13411         * common.opt (Wdisallowed-function-list=): New flag.
13412         * flags.h (warn_disallowed_functions): External definition of new
13413         boolean warning flag.
13414         (warn_if_disallowed_function_p): Declare new function.
13415         * opts.c (warning_disallowed_functions): New static variable.
13416         (warn_disallowed_functions): New boolean warning flag.
13417         (warn_if_disallowed_function_p): New function.
13418         (add_comma_separated_to_vector): Rename
13419         add_instrument_functions_exclude_list to this.
13420         (common_handle_option): Handle new option. Rename calls to
13421         add_instrument_functions_exclude_list into calls to
13422         add_comma_separated_to_vector.
13423         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
13424         based on flag warn_disallowed_functions.
13425
13426 2008-07-09  Christian Bruel  <christian.bruel@st.com>
13427
13428         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
13429          instead of get_attr_length.
13430
13431 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13432
13433         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
13434         keywords.
13435         * genemit.c (gen_insn): Likewise.
13436         * gengtype.c (note_def_vec): Likewise.
13437         * gengtype.h (note_def_vec): Likewise.
13438         * genoutput.c (struct data, output_insn_data, process_template,
13439         gen_expand, gen_split, note_constraint): Likewise.
13440         * genrecog.c (new_decision, add_to_sequence, factor_tests,
13441         make_insn_sequence): Likewise.
13442         * gensupport.c (record_insn_name): Likewise.
13443
13444 2008-07-08  Doug Kwan  <dougkwan@google.com>
13445
13446         * config/arm/arm.opt (mandroid): New option.
13447         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13448         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13449         (CC1_SPEC): Same.
13450         (CC1PLUS_SPEC): Same.
13451         (LIB_SPEC): Same.
13452         (STARTFILE_SPEC): Same.
13453         (ENDFILE_SPEC): Same.
13454         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13455         used.
13456
13457 2008-07-08  Raksit Ashok  <raksit@google.com>
13458
13459         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
13460         (set_storage_via_setmem): Fix expected_align parameter.
13461         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
13462         missing from the list.
13463         * doc/md.texi (movmem): Explicitly state that expected alignment is
13464         to be expressed in bytes.
13465         (setmem): Explicitly state that expected alignment is to be expressed
13466         in bytes.
13467
13468 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
13469
13470         * reload.c (find_reloads_subreg_address): Do not require validity
13471         of address in original mode before reloading address.
13472
13473 2008-07-07  Tianwei Sheng  <tianweis@google.com>
13474
13475         * df-core.c (df_remove_problem): Adjust the access to avoid out of
13476         bounds array access.
13477
13478 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
13479
13480         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
13481
13482 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
13483
13484         Fix PR tree-optimization/23455
13485         Fix PR tree-optimization/35286
13486         Fix PR tree-optimization/35287
13487         * Makefile.in (OBJS-common): Remove tree-vn.o.
13488         (tree-vn.o): Remove.
13489         * dbgcnt.def: Add treepre_insert debug counter.
13490         * gcc/tree-flow.h (add_to_value): Updated for other changes.
13491         (debug_value_expressions): Ditto.
13492         (print_value_expressions): Ditto.
13493         * tree-pretty-print.c (dump_generic_node): Updated for
13494         VALUE_HANDLE removal.
13495         * tree-ssa-dom.c (record_equality): Ditto.
13496         (cprop_operand): Ditto.
13497         (lookup_avail_expr): Ditto.
13498         * tree-ssa-threadedge.c
13499         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
13500         (simplify_control_stmt_condition): Ditto.
13501         * tree.c (tree_code_size): Ditto.
13502         (tree_node_structure): Ditto.
13503         (iterative_hash_expr): Ditto.
13504         * tree.def: Ditto.
13505         * tree.h (VALUE_HANDLE_ID): Ditto.
13506         (VALUE_HANDLE_EXPR_SET): Ditto.
13507         (struct tree_value_handle): Ditto.
13508         (union tree_node): Ditto.
13509         * treestruct.def: Ditto.
13510         * tree-vn.c: Removed.
13511         * tree-ssa-pre.c: Rewritten entirely.
13512         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
13513         (constant_value_ids): Ditto.
13514         (vn_nary_op_t): Moved to header.
13515         (vn_phi_t): Ditto.
13516         (vn_reference_op_t): Ditto
13517         (vn_reference_t): Ditto.
13518         (next_value_id): New variable.
13519         (VN_INFO): Add an assert.
13520         (vn_constant_eq): New function.
13521         (vn_constant_hash): Ditto.
13522         (get_or_alloc_constant_value_id): Ditto.
13523         (value_id_constant_p): Ditto.
13524         (vn_reference_compute_hash): De-staticify.
13525         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
13526         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
13527         (valueize_refs): Update opcode if it changes from ssa name to constant.
13528         (vn_reference_lookup_1): Add new argument.
13529         (vn_reference_lookup):  Ditto.
13530         (vn_reference_lookup_pieces): New function.
13531         (vn_reference_insert): Add return type. Modify to deal with value ids.
13532         (vn_reference_insert_pieces):  New function.
13533         (vn_nary_op_compute_hash): De-staticify.
13534         (vn_nary_op_eq): Ditto.
13535         (vn_nary_op_lookup_pieces): New function.
13536         (vn_nary_op_lookup): Add new argument.
13537         (vn_nary_op_insert_pieces): New function.
13538         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
13539         (vn_phi_insert): Ditto.
13540         (visit_unary_op): Update for callee changes.
13541         (visit_binary_op): Ditto.
13542         (visit_reference_op_load): Ditto.
13543         (visit_reference_op_store): Ditto.
13544         (init_scc_vn): Init next_value_id, constant_to_value_id and
13545         constant_value_ids.
13546         (free_scc_vn): Free them.
13547         (set_hashtable_value_ids): New function.
13548         (run_scc_vn): Use it.
13549         (get_max_value_id): New function.
13550         (get_next_value_id): Ditto.
13551         (expressions_equal_p): Moved from tree-vn.c
13552         (sort_vuses): Ditto.
13553         (sort_vuses_heap): Ditto.
13554         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
13555         above).
13556         * tree.c (iterative_hash_hashval_t): Made non-static
13557         * tree.h (iterative_hash_hashval_t): Declare it.
13558
13559 2008-07-08  Martin Jambor  <mjambor@suse.cz>
13560
13561         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
13562         instead of ipa_create_node_params.
13563         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
13564         ipa_check_create_edge_args, free them with
13565         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
13566
13567         * ipa-prop.c: Include flags.h and tree-inline.h.
13568         (ipa_node_params_vector): New variable.
13569         (ipa_edge_args_vector): New variable.
13570         (edge_removal_hook_holder): New variable.
13571         (node_removal_hook_holder): New variable.
13572         (edge_duplication_hook_holder): New variable.
13573         (node_duplication_hook_holder): New variable.
13574         (ipa_detect_param_modifications): Check for presence of modified flags.
13575         (ipa_compute_jump_functions): Check for presence of jump functions.
13576         (ipa_free_edge_args_substructures): New function.
13577         (ipa_create_node_params): Removed.
13578         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
13579         (ipa_free_node_params_substructures): New function.
13580         (ipa_free_all_node_params): Changed to deallocate the on-the-side
13581         vector.
13582         (ipa_edge_removal_hook): New function.
13583         (ipa_node_removal_hook): New function.
13584         (duplicate_array): New function.
13585         (ipa_edge_duplication_hook): New function.
13586         (ipa_node_duplication_hook): New function.
13587         (ipa_register_cgraph_hooks): New function.
13588         (ipa_unregister_cgraph_hooks): New function.
13589         (free_all_ipa_structures_after_ipa_cp): New function.
13590
13591         * ipa-prop.h: Include vec.h.
13592         (ipa_node_params_t): New typedef with vector types for it.
13593         (ipa_edge_args_t):  New typedef with vector types for it.
13594         (IPA_NODE_REF): Changed to access an on-the-side vector.
13595         (IPA_EDGE_REF): Changed to access an on-the-side vector.
13596         (ipa_check_create_node_params): New function.
13597         (ipa_check_create_edge_args): New function.
13598
13599         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
13600         all users.
13601
13602 2008-07-07  Tom Tromey  <tromey@redhat.com>
13603
13604         * configure, config.in: Rebuilt.
13605         * configure.ac: Don't check for scandir or alphasort.
13606
13607 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13608
13609         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
13610         types immediately after creating them.
13611
13612 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13613
13614         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
13615
13616 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
13617
13618         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
13619         dump_constraint_graph.
13620         (dump_constraint_edge): New function.
13621         (dump_constraint_graph): New function.
13622         (debug_constraint_graph): New function.
13623         (dump_constraint): Removed useless comparison.
13624         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
13625         (dump_constraint_graph): Declare.
13626         (debug_constraint_graph): Declare.
13627         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
13628
13629 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
13630
13631         * config/i386/i386.c (is_va_list_char_pointer): New.
13632         (ix86_va_start): Replace compare with ms_va_list_type_node
13633         by is_va_list_char_pointer.
13634         (ix86_gimplify_va_arg): Likewise.
13635
13636 2008-07-07  Martin Jambor  <mjambor@suse.cz>
13637
13638         * cgraph.c (cgraph_edge_max_uid): New variable.
13639         (struct cgraph_edge_hook_list): New type.
13640         (struct cgraph_node_hook_list): New type.
13641         (struct cgraph_2edge_hook_list): New type.
13642         (struct cgraph_2node_hook_list): New type.
13643         (first_cgraph_edge_removal_hook): New variable.
13644         (first_cgraph_node_removal_hook): New variable.
13645         (first_cgraph_edge_duplicated_hook): New variable.
13646         (first_cgraph_node_duplicated_hook): New variable.
13647         (cgraph_add_edge_removal_hook): New function.
13648         (cgraph_remove_edge_removal_hook): New function.
13649         (cgraph_call_edge_removal_hooks):  New function.
13650         (cgraph_add_node_removal_hook):  New function.
13651         (cgraph_remove_node_removal_hook):  New function.
13652         (cgraph_call_node_removal_hooks):  New function.
13653         (cgraph_add_edge_duplication_hook):  New function.
13654         (cgraph_remove_edge_duplication_hook):  New function.
13655         (cgraph_call_edge_duplication_hooks):  New function.
13656         (cgraph_add_node_duplication_hook):  New function.
13657         (cgraph_remove_node_duplication_hook):  New function.
13658         (cgraph_call_node_duplication_hooks):  New function.
13659         (cgraph_create_edge): Assign to edge uid.
13660         (cgraph_remove_edge): Call edge removal hooks.
13661         (cgraph_node_remove_callees): Call edge removal hooks.
13662         (cgraph_node_remove_callers): Call edge removal hooks.
13663         (cgraph_remove_node): Call node removal hooks.
13664         (cgraph_clone_edge): Call edge duplication hooks.
13665         (cgraph_clone_node): Call node duplication hooks.
13666
13667         * cgraph.h (cgraph_edge): New field uid.
13668         (cgraph_edge_hook): New type.
13669         (cgraph_node_hook): New type.
13670         (cgraph_2edge_hook): New type.
13671         (cgraph_2node_hook): New type.
13672
13673 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
13674
13675         * config.in: Regenerate.
13676
13677 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
13678
13679         * gcc.c (print_sysroot): New.
13680         (option_map, display_help, process_command): Handle the
13681         -print-sysroot option.
13682         (main): Print the sysroot if requested.
13683         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
13684
13685 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13686
13687         PR target/34780
13688         * unwind-pe.h (size_of_encoded_value): add attribute unused.
13689
13690 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
13691
13692         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
13693         (assign_parm_setup_block_p): Also check mode of entry_parm.
13694
13695 2008-07-07  Richard Guenther  <rguenther@suse.de>
13696
13697         * tree-ssa-structalias.h (set_used_smts): Remove.
13698         * tree-ssa-structalias.c (used_smts): Likewise.
13699         (set_used_smts): Likewise.
13700         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
13701         call to set_used_smts.
13702
13703 2008-07-07  Richard Guenther  <rguenther@suse.de>
13704
13705         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
13706         (new_var_info): Set it to false.
13707         (solution_set_add): Correctly handle pointers outside a var and
13708         inside a field.
13709         (type_safe): Treat variables with is_full_var properly.
13710         (do_sd_constraint): Likewise.
13711         (do_ds_constraint): Likewise.
13712         (process_constraint): Remove zeroing offset for !use_field_sensitive.
13713         (get_constraint_for_ptr_offset): New function.
13714         (get_constraint_for_component_ref): For addresses at least include
13715         the last field of the variable.  Handle is_full_vars properly.
13716         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
13717         (handle_ptr_arith): Remove.
13718         (find_func_aliases): Simplify assignment handling.
13719         (create_function_info_for): For parameter and result varinfos set
13720         is_full_var flag.
13721         (create_variable_info_for): Set is_full_var flag whenever we
13722         just created a single varinfo for a decl.
13723         (init_alias_vars): Initialize use_field_sensitive from
13724         max-fields-for-field-sensitive parameter.
13725
13726 2008-07-07  Richard Guenther  <rguenther@suse.de>
13727
13728         PR tree-optimization/36713
13729         * tree-flow-inline.h (is_call_used): New function.
13730         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
13731         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
13732         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
13733
13734 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13735
13736         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
13737
13738 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
13739
13740         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
13741
13742 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13743             Nathan Sidwell  <nathan@codesourcery.com>
13744
13745         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
13746         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
13747         tmake_file.
13748         * config/m68k/t-linux: New.
13749         * doc/install.texi: Document m68k-*-linux is now multilibbed by
13750         default.
13751
13752 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
13753
13754         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
13755         * config/m68k/m68k-devices.def: Remove multilibs that only differ
13756         by MAC/EMAC.
13757
13758 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13759
13760         * gcc.c (execute): Fix -Wc++-compat warning.
13761
13762 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
13763
13764         PR target/36720
13765         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
13766         constant for little endian.
13767
13768 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
13769
13770         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
13771         mips_base_mips16 instead of TARGET_MIPS16.
13772         (mips_base_mips16): Declare.
13773         * config/mips/mips.c (mips_base_mips16): Make global.
13774         (was_mips16_p): Remove GTY marker.
13775         (was_mips16_pch_p): New variable.
13776         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
13777         (mips_override_options): Force to non-MIPS16 mode initially.
13778         Do not complain about MIPS16 PIC incompatibilities here.
13779         Only allow -mgpopt if -mexplicit-relocs is in force for
13780         non-MIPS16 code.
13781
13782 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
13783
13784         * configure.ac: Check for caddr_t, define to char * if not defined.
13785         * configure: Regenerate.
13786         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
13787         (mmap_gt_pch_use_address): Likewise.
13788         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
13789
13790 2008-07-06  Richard Guenther  <rguenther@suse.de>
13791
13792         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
13793         (new_var_info): Deal with it.
13794         (solution_set_add): Likewise.
13795         (bitpos_of_field): Make signed, fix.
13796         (struct fieldoff): Remove type and decl fields.  Make size field
13797         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
13798         flags.
13799         (fieldoff_compare): Deal with it.
13800         (push_fields_onto_fieldstack): Remove has_union argument, glob
13801         adjacent non-pointer fields together.
13802         (create_function_info_for): Do not set has_union.
13803         (create_variable_info_for): Simplify.
13804
13805 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
13806
13807         * config.gcc (extra_headers): Add cross-stdarg.h for target
13808         x86_64-*-* and i?86-*-*.
13809         * config/i386/cross-stdarg.h: New.
13810         * builtins.c (std_fn_abi_va_list): New.
13811         (std_canonical_va_list_type): New.
13812         (stabilize_va_list): Replace va_list_type_node use by
13813         mtarget.canonical_va_list_type.
13814         (gimplify_va_arg_expr): Likewise.
13815         (expand_builtin_va_copy): Replace va_list_type_node use by
13816         mtarget.fn_abi_va_list.
13817         * tree-sra.c (is_va_list_type): New helper.
13818         (decl_can_be_decomposed_p): Replace
13819         va_list_type_node use by is_va_list_type.
13820         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
13821         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
13822         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
13823         * config/i386/i386-protos.h (ix86_get_valist_type): New.
13824         (ix86_enum_va_list): New.
13825         * config/i386/i386.c (sysv_va_list_type_node): New.
13826         (ms_va_list_type_node): New.
13827         (ix86_function_type_abi): Remove sorry.
13828         (ix86_build_builtin_va_list_abi): New.
13829         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
13830         for 64-bit targets.
13831         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
13832         (ix86_init_builtins_va_builtins_abi): New.
13833         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
13834         for 64-bit targets.
13835         (ix86_handle_abi_attribute): New.
13836         (attribute_spec): Add sysv_abi and ms_abi.
13837         (ix86_fn_abi_va_list): New.
13838         (ix86_canonical_va_list_type): New.
13839         (ix86_enum_va_list): New.
13840         (TARGET_FN_ABI_VA_LIST): New.
13841         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13842         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
13843         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
13844         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13845         (TARGET_ENUM_VA_LIST): New.
13846         * expr.h (std_fn_abi_va_list): New.
13847         (std_canonical_va_list_type): New.
13848         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
13849         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13850         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
13851         TARGET_CANONICAL_VA_LIST_TYPE.
13852         * target.h (struct gcc_target): Add fn_abi_va_list hook
13853         and canonical_va_list_type hook.
13854
13855 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13856
13857         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
13858         integral and pointer types.
13859
13860 2008-07-04  Roger Sayle  <roger@eyesopen.com>
13861
13862         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
13863         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
13864
13865 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13866
13867         PR target/36684
13868         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
13869
13870 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
13871
13872         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
13873         build_gimple_modify_stmt.
13874         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
13875         gimple operand.  Use fold_build* instead of build*.
13876
13877 2008-07-04  Richard Guenther  <rguenther@suse.de>
13878
13879         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
13880         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
13881         properly to compute the reachability set if we do field-sensitive PTA.
13882         * invoke.texi (max-fields-for-field-sensitive): Document default.
13883         * opts.c (decode_options): Set max-fields-for-field-sensitive to
13884         100 for optimize >= 2.
13885
13886 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13887
13888         * ggc-zone.c (lookup_page_table_if_allocated,
13889         set_page_table_entry, zone_find_object_size, alloc_small_page,
13890         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
13891         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
13892         -Wc++-compat and/or -Wcast-qual warnings.
13893
13894 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
13895
13896         PR target/36634
13897         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
13898         pic_offset_table_rtx to be marked as used here.
13899         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
13900         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
13901         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
13902         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
13903         !TARGET_SECURE_PLT.
13904
13905 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13906
13907         * alloc-pool.c (hash_descriptor, eq_descriptor,
13908         alloc_pool_descriptor): Fix -Wc++-compat warnings.
13909         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
13910         Likewise.
13911         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
13912         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
13913         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
13914         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
13915         Likewise.
13916
13917 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
13918
13919         * tree-flow.h (loop_only_exit_p): Declare.
13920         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
13921         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
13922         the number of iterations if it is constant.  Otherwise, if this is the
13923         only possible exit of the loop, use the conservative estimate on the
13924         number of iterations of the entire loop if available.
13925
13926 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
13927
13928         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
13929         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
13930         Add synchronization functions.
13931         * config/sync.c: New file.
13932         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
13933         (LIBGCC_SYNC_CFLAGS): Likewise.
13934
13935 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
13936
13937         PR target/36710
13938         * config/i386/i386.md (mode): Add TF to "mode" attribute.
13939         (*pushtf_sse): New insn pattern.
13940         (pushtf splitters): New splitters.
13941
13942 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
13943
13944         PR middle-end/35736
13945         * predict.c (build_predict_expr): Use void_type_node for the tree
13946         type, instead of NULL_TREE.
13947
13948 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13949
13950         * config/i386/i386.c (contains_aligned_value_p): Return true
13951         for TCmode.
13952         (ix86_data_alignment): Align TCmode to 128bits.
13953         (ix86_local_alignment): Likewise.
13954
13955 2008-07-03  Andrew Haley  <aph@redhat.com>
13956
13957         PR bootstrap/33304
13958         * vec.h (VEC_TA): New.
13959         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
13960         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
13961         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
13962         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
13963         (C_COMMON_FIXED_TYPES): Remove first arg.
13964         (C_COMMON_FIXED_MODE_TYPES): Likewise.
13965         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
13966         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
13967         not to use empty macro arguments.
13968
13969 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
13970
13971         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
13972         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
13973         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
13974         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
13975         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
13976         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
13977         config/ia64/crtn.asm, config/m68hc11/larith.asm,
13978         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
13979         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
13980         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
13981         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
13982         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
13983         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
13984         config/rs6000/e500crtres64gpr.asm,
13985         config/rs6000/e500crtres64gprctr.asm,
13986         config/rs6000/e500crtrest32gpr.asm,
13987         config/rs6000/e500crtrest64gpr.asm,
13988         config/rs6000/e500crtresx32gpr.asm,
13989         config/rs6000/e500crtresx64gpr.asm,
13990         config/rs6000/e500crtsav32gpr.asm,
13991         config/rs6000/e500crtsav64gpr.asm,
13992         config/rs6000/e500crtsav64gprctr.asm,
13993         config/rs6000/e500crtsavg32gpr.asm,
13994         config/rs6000/e500crtsavg64gpr.asm,
13995         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
13996         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
13997         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
13998         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
13999         config/sparc/sol2-cn.asm: Remove .file directives.
14000
14001 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
14002
14003         * resource.c (mark_referenced_resources): Look inside
14004         UNSPEC_VOLATILEs and ASM_INPUTs.
14005
14006 2008-07-02  Ian Lance Taylor  <iant@google.com>
14007
14008         * rtlanal.c (add_reg_note): New function.
14009         * rtl.h (add_reg_note): Declare.
14010         * auto-inc-dec.c (attempt_change): Use add_reg_note.
14011         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
14012         * builtins.c (expand_builtin_longjmp): Likewise.
14013         (expand_builtin_nonlocal_goto): Likewise.
14014         * calls.c (emit_call_1, expand_call): Likewise.
14015         * cfgexpand.c (add_reg_br_prob_note): Likewise.
14016         * cfglayout.c (fixup_reorder_chain): Likewise.
14017         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
14018         (commit_one_edge_insertion): Likewise.
14019         * combine.c (move_deaths, distribute_notes): Likewise.
14020         * df-problems.c (df_set_note): Likewise.
14021         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
14022         (set_unique_reg_note): Likewise.
14023         (emit_copy_of_insn_after): Likewise.
14024         * expr.c (expand_expr_real): Likewise.
14025         * gcse.c (add_label_notes): Likewise.
14026         * haifa-sched.c (create_check_block_twin): Likewise.
14027         * jump.c (mark_jump_label_1): Likewise.
14028         * loop-doloop.c (add_test, doloop_modify): Likewise.
14029         * loop-unswitch.c (compare_and_jump_seq): Likewise.
14030         * lower-subreg.c (move_eh_region_note): Likewise.
14031         * optabs.c (emit_libcall_block): Likewise.
14032         * predict.c (predict_insn): Likewise.
14033         (combine_predictions_for_insn): Likewise.
14034         * recog.c (peephole2_optimize): Likewise.
14035         * regmove.c (try_auto_increment): Likewise.
14036         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
14037         * reload.c (find_reloads): Likewise.
14038         * reload1.c (fixup_eh_region_note): Likewise.
14039         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
14040         * reorg.c (delete_prior_computation): Likewise.
14041         (delete_computation, dbr_schedule): Likewise.
14042         * config/pa/pa.c (legitimize_pic_address): Likewise.
14043         * config/sh/sh.c (sh_reorg): Likewise.
14044
14045 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14046
14047         PR target/36669
14048         * config/libgcc-glibc.ver: Add %exclude.
14049         * config/m32r/libgcc-glibc.ver: Likwise.
14050         * config/s390/libgcc-glibc.ver: Likwise.
14051         * config/sh/libgcc-glibc.ver: Likwise.
14052         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
14053
14054         * config/i386/libgcc-glibc.ver: New.
14055
14056         * config/i386/libgcc-x86_64-glibc.ver: Removed.
14057
14058 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14059
14060         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
14061         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
14062         i[34567]86-*-linux*, x86_64-*-linux*.  Add
14063         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
14064         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
14065         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
14066         i[34567]86-*-linux*, x86_64-*-linux*.
14067
14068         * libgcc-std.ver: Add empty GCC_4.4.0.
14069
14070         * mkmap-symver.awk: Support multiple versions per symbol.
14071
14072         * config/i386/i386.c (ix86_init_builtins): Always define
14073         __builtin_fabsq and __builtin_copysignq with fallbacks.
14074         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
14075         and __builtin_copysignq if SSE2 isn't available.
14076
14077         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
14078         (LIBGCC2_TF_CEXT): Likwise.
14079         (TF_SIZE): Likwise.
14080
14081         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
14082
14083         * config/i386/sfp-machine.h: Moved to libgcc.
14084
14085         * config/i386/sfp-machine.h: New.
14086         * config/i386/t-linux: Likwise.
14087
14088         * config/i386/t-darwin: Remove softfp_wrap_start and
14089         softfp_wrap_end.
14090         * config/i386/t-darwin64: Likewise.
14091
14092         * config/i386/t-fprules-softfp64: Renamed to ...
14093         * config/i386/t-fprules-softfp: This.
14094
14095         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
14096         and softfp_wrap_end.
14097
14098 2008-07-02  Jason Merrill  <jason@redhat.com>
14099
14100         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
14101
14102         * tree.c (ctor_to_list): New fn.
14103         * tree.h: Declare it.
14104         (CONSTRUCTOR_ELT): New macro.
14105         (CONSTRUCTOR_NELTS): New macro.
14106
14107 2008-07-02  Richard Guenther  <rguenther@suse.de>
14108
14109         * tree-ssa-structalias.c (struct variable_info): Reorder
14110         to fill padding on 64bit hosts.  Make collapsed_to an int.
14111         (get_varinfo_fc): Deal with that.
14112         (new_var_info): Likewise.
14113         (collapse_rest_of_var): Likewise.
14114
14115 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
14116
14117         * doc/install.texi (--enable-java-home): Document.
14118         (--enable-aot-compile-rpm): Likewise.
14119         (--with-arch-directory): Likewise.
14120         (--with-os-directory): Likewise.
14121         (--with-origin-name): Likewise.
14122         (--with-arch-suffix): Likewise.
14123         (--with-jvm-root-dir): Likewise.
14124         (--with-jvm-jar-dir): Likewise.
14125         (--with-python-dir): Likewise.
14126
14127 2008-07-02  Richard Guenther  <rguenther@suse.de>
14128
14129         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
14130         from decls explicitly.  Merge operand checking from tuples.
14131
14132 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14133
14134         * tree-switch-conversion.c: Included timevar.h which I forgot before.
14135
14136 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14137
14138         * tree-switch-conversion.c: Included timevar.h
14139         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
14140
14141         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
14142
14143 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14144
14145         * tree-switch-conversion.c: Corrected various comments and
14146         whitespace issues
14147         (build_constructors): Fixed minor formatting mistakes.
14148
14149         * invoke.texi (Optimize Options): Corrected the
14150         switch-conversion-max-branch-ratio parameter.
14151
14152 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
14153
14154         * final.c (asm_insn_count): Return zero for an empty asm body.
14155
14156 2008-07-02  Richard Guenther  <rguenther@suse.de>
14157
14158         * bitmap.h (bitmap_set_bit): Return bool.
14159         (bitmap_clear_bit): Likewise.
14160         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
14161         write to the bitmap if it would.
14162         (bitmap_clear_bit): Likewise.
14163         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
14164         bitmap_set_bit return value.
14165         (add_pred_graph_edge): Likewise.
14166         (add_graph_edge): Likewise.
14167         (do_sd_constraint): Likewise.
14168         (do_ds_constraint): Likewise.
14169
14170 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14171
14172         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
14173         Fix -Wc++-compat and/or -Wcast-qual warnings.
14174         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
14175         gen_regparm_prefix): Likewise.
14176         * vmsdbgout.c (write_modbeg, lookup_filename,
14177         vmsdbgout_source_line, vmsdbgout_init): Likewise.
14178
14179 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
14180
14181         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
14182         defaults.h definition apply.
14183
14184 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14185
14186         * function.c (assign_parm_remove_parallels): New.
14187         (assign_parm_setup_block_p): Do not return true for non-BLKmode
14188         PARALLELs.
14189         (assign_parm_setup_block): Do not handle them.
14190         (assign_parm_setup_reg, assign_parm_setup_stack): Call
14191         assign_parm_remove_parallels.
14192
14193 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14194
14195         * c-typeck.c (convert_for_assignment): Use
14196         vector_targets_convertible_p.
14197         * c-common.c (vector_targets_convertible_p): New.
14198         * c-common.h (vector_targets_convertible_p): New prototype.
14199         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
14200         opaque_p_V2SI_type_node.
14201
14202 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
14203
14204         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
14205         RFmode constants.
14206
14207 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
14208
14209         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
14210         TFmode constants via two element DImode vector for hosts with
14211         HOST_BITS_PER_WIDE_INT < 64.
14212         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
14213         also for HOST_BITS_PER_WIDE_INT < 64.
14214
14215 2008-07-01  Richard Guenther  <rguenther@suse.de>
14216
14217         PR tree-optimization/36666
14218         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
14219         (get_constraint_exp_from_ssa_var): Split into ...
14220         (get_constraint_exp_for_temp): ... this ...
14221         (get_constraint_for_ssa_var): ... and that.
14222         Return constraint expressions for all touched sub-fields
14223         if the results address is not taken.
14224         (process_constraint): Remove assertion that aggregate
14225         assignments do not happen at this place.
14226         (get_constraint_for_component_ref): Add address_p argument.
14227         Return constraint expressions for all touched sub-fields
14228         if the results address is not taken.
14229         (do_deref): Use get_constraint_exp_for_temp.
14230         (get_constraint_for_1): Rename from ...
14231         (get_constraint_for): ... this.  Add the old function as wrapper.
14232         (do_structure_copy): Use get_constraint_for_1.
14233
14234 2008-07-01  Martin Jambor  <mjambor@suse.cz>
14235
14236         * Makefile.in (tree-switch-conversion.o): Add.
14237         (OBJS-common): Add tree-swtch-conversion.o.
14238         * passes.c (init_optimization_passes): Add pass_convert_switch.
14239         * tree-pass.h: (pass_convert_switch): Add.
14240         * tree-switch-conversion.c: New file.
14241         * gcc.dg/tree-ssa/cswtch.c: New testcase.
14242         * common.opt (ftree-cswtch): New option.
14243         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14244         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14245         * opts.c (decode_options): Set flag_tree_switch_conversion when
14246         optimization level is >= 2.
14247         * doc/invoke.texi (Optimize Options): Added description of
14248         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
14249
14250 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14251
14252         * config/darwin-driver.c (darwin_default_min_version): Fix
14253         -Wc++-compat warnings.
14254
14255 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
14256
14257         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
14258         of operand 0.
14259
14260 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14261
14262         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
14263
14264 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14265
14266         PR rtl-optimization/34744
14267         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
14268         (df_scan_free_internal): Free data structures not
14269         allocated in storage pools.
14270         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
14271         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
14272         df_scan_free_mws_vec.
14273         * dse.c (dse_step6): Free offset_map_p and offset_map_n
14274         unconditionally.
14275
14276 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
14277
14278         * config/i386/i386.c (contains_aligned_value_p): Return true
14279         for __float128.
14280         (ix86_function_arg_boundary): Return its natural boundary
14281         for __float128.
14282         (return_in_memory_32): Don't check TDmode.
14283         (ix86_split_to_parts): Support splitting into 4 parts and
14284         support TFmode for 32bit target.
14285         (ix86_split_long_move): Support splitting into 4 parts.
14286         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
14287         for SSE2.
14288         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
14289         (ix86_init_builtins): Here.
14290         (ix86_scalar_mode_supported_p): Always return true for TFmode.
14291         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
14292         'q' and 'w', respectively.
14293
14294         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
14295         TARGET_64BIT.
14296         (movtf_internal): Likewise.
14297         (<code>tf2): Likewise.
14298         (*absnegtf2_sse): Likewise.
14299         (copysign<mode>3): Likewise.
14300         (copysign<mode>3_const): Likewise.
14301         (copysign<mode>3_var): Likewise.
14302         (define_split UNSPEC_COPYSIGN): Likewise.
14303         * config/i386/sse.md (*nandtf3): Likewise.
14304         (<code>tf3): Likewise.
14305         (*<code>tf3): Likewise.
14306
14307 2008-06-30  Joey Ye  <joey.ye@intel.com>
14308             H.J. Lu  <hongjiu.lu@intel.com>
14309
14310         * global.c (compute_regsets): Set frame_pointer_needed here.
14311         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
14312
14313 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14314
14315         * doc/install.texi (specific): Expand Windows build notes.
14316
14317 2008-06-30  Ira Rosen  <irar@il.ibm.com>
14318
14319         PR tree-optimization/36648
14320         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
14321         number of prolog iterations by step. Fix the comment.
14322
14323 2008-06-30  Richard Guenther  <rguenther@suse.de>
14324
14325         PR middle-end/36671
14326         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
14327         handle calls from ECF_MALLOC functions.
14328         (handle_pure_call): ECF_MALLOC functions do not return
14329         call-used memory.
14330         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
14331
14332 2008-06-29  Andreas Schwab  <schwab@suse.de>
14333
14334         * config/m68k/m68k.c (print_operand): Always print a float
14335         constant in hex.
14336         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
14337         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
14338         Remove macros.
14339
14340         * config/rs6000/x-linux64: Remove never used file.
14341
14342 2008-06-29  Richard Guenther  <rguenther@suse.de>
14343
14344         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
14345         prototype.
14346         (struct alias_info): Move ...
14347         * tree-ssa-alias.c: ... here.
14348         (update_alias_info): Declare.
14349         (compute_may_aliases): Call it.
14350         (update_alias_info): New function.
14351         * tree-ssa-structalias.c (update_alias_info): Move ...
14352         * tree-ssa-alias.c (update_alias_info_1): ... here.
14353         * tree-ssa-structalias.c (process_constraint_1): Remove
14354         unused from_call argument.  Rename to ...
14355         (process_constraint): ... this.  Delete old wrapper.
14356         (make_constraint_to): Adjust callers.
14357         (handle_const_call): Likewise.
14358         (handle_pure_call): Likewise.
14359         (init_base_vars): Likewise.
14360         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
14361         (find_func_aliases): We don't need structure copies for
14362         complex types.
14363         (make_constraint_from_anything): Remove.
14364         (create_variable_info_for): For globals make constraints
14365         from escaped, not from anything.
14366         (compute_points_to_sets): Do not call update_alias_info.
14367         (ipa_pta_execute): Use make_constraint_from.
14368
14369 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14370
14371         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
14372         (bitmap.o-warn, dominance.o-warn): New.
14373         * configure.ac (cxx_compat_warn): Delete.
14374         (loose_warn): Add -Wcast-qual and -Wc++-compat.
14375         * system.h: Remove #pragma diagnostic for -Wcast-qual and
14376         -Wc++-compat.
14377         * configure: Regenerate.
14378
14379         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
14380         warnings.
14381
14382 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14383
14384         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
14385         * df-scan.c (df_notes_rescan): Likewise.
14386         * ggc-page.c (set_page_table_entry): Likewise.
14387         * intl.c (gcc_gettext_width): Likewise.
14388         * varasm.c (get_unnamed_section, get_noswitch_section,
14389         get_section): Likewise.
14390
14391 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
14392
14393         * regrename.c (build_def_use): Don't copy RTX.
14394
14395 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
14396
14397         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
14398         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
14399         punctuation.  Use @ref instead of @xref.
14400         (Function Names): Remove stray @display/@end display.
14401         (C++ Attributes): Use @ref instead of @xref.
14402         (Deprecated Features): Fix punctuation around @xref.
14403         (Backwards Compatibility): Likewise.
14404         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
14405
14406 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
14407
14408         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
14409         constants for E500 double.
14410
14411 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14412
14413         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
14414         element type of const_vector.
14415
14416 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
14417
14418         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
14419         Remove FLAGS_REG clobber from expander pattern.
14420         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
14421         (anddi3, andsi3, andhi3, andqi3): Ditto.
14422         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
14423         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
14424         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
14425         (ashlsi3, ashlhi3, ashlqi3): Ditto.
14426         (ashrsi3, ashrhi3, ashrqi3): Ditto.
14427         (lshrsi3, lshrhi3, lshrqi3): Ditto.
14428         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
14429         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
14430
14431 2008-06-28  Richard Guenther  <rguenther@suse.de>
14432
14433         * tree-ssa-structalias.c (callused_id, var_callused,
14434         callused_tree): Add.
14435         (handle_pure_call): New function.
14436         (find_func_aliases): Call it.
14437         (find_what_p_points_to): Handle the call-used set.
14438         (clobber_what_escaped): Likewise.
14439         (compute_call_used_vars): New function.
14440         (init_base_vars): Init the call-used variable.
14441         (do_sd_constraint): Do not propagate the solution from CALLUSED
14442         but use CALLUSED as a placeholder.
14443         (solve_graph): Likewise.
14444         * tree-flow-inline.h (gimple_call_used_vars): New function.
14445         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
14446         (compute_call_used_vars): Declare.
14447         * tree-ssa-alias.c (set_initial_properties): Call
14448         compute_call_used_vars.
14449         (reset_alias_info): Clear call-used variables.
14450         (add_call_clobber_ops): Assert we are not called for const/pure
14451         functions.  Remove handling of them.
14452         (add_call_read_ops): Handle pure functions by adding the
14453         call-used set of variables as VUSEs.
14454         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
14455         (delete_tree_ssa): Free it.
14456         * tree-dfa.c (remove_referenced_var): Clear the var from the
14457         call-used bitmap.
14458
14459 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
14460
14461         * tree.c (build_varargs_function_type_list): New.
14462         (build_function_type_list_1): New.
14463         (build_function_type_list): Use build_function_type_list_1.
14464         * tree.h (build_varargs_function_type_list): New.
14465
14466 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14467
14468         PR target/34856
14469         * config/spu/spu.c (spu_builtin_splats): Do not generate
14470         invalid CONST_VECTOR expressions.
14471         (spu_expand_vector_init): Likewise.
14472
14473 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
14474
14475         * optabs.c (libfunc_decls): New variable.
14476         (libfunc_decl_hash, libfunc_decl_eq): New functions.
14477         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
14478         for the same function twice.
14479
14480 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
14481
14482         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
14483         ix86_expand_binary_operator directly.
14484         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
14485         for operand 2.
14486         (*ashrti3_1): Ditto.
14487         (*lshrti3_1): Ditto.
14488         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
14489         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
14490         using only one splitter.  Conditionaly execute splitter before or
14491         after peephole2 pass.
14492         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
14493         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
14494         Use only one alternative in asm template.
14495         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
14496         in asm template.
14497         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
14498         "J" operand constraint for operand 2.
14499         (*ashldi3_cconly_rex64): Ditto.
14500         (*ashrdi3_cmp_rex64): Ditto.
14501         (*ashrdi3_cconly_rex64): Ditto.
14502         (*lshrdi3_cmp_rex64): Ditto.
14503         (*lshrdi3_cconly_rex64): Ditto.
14504         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
14505         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
14506         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
14507         gen_x86_shrd_1.
14508
14509 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
14510
14511         * gimplify.c (omp_is_private): Don't return true if decl is not
14512         already private on #pragma omp for or #pragma omp parallel for.
14513
14514         PR debug/36617
14515         * tree-cfg.c (struct move_stmt_d): Replace block field with
14516         orig_block and new_block fields.
14517         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
14518         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
14519         (move_block_to_fn): Replace vars_map and new_label_map arguments
14520         with struct move_stmt_d pointer.
14521         (replace_block_vars_by_duplicates): New function.
14522         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
14523         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
14524         all subblocks of ORIG_BLOCK to the new function.  Call
14525         replace_block_vars_by_duplicates.
14526         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
14527         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
14528         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
14529         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
14530         (expand_omp): Temporarily set input_location to the location of
14531         region's controlling stmt.
14532         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
14533         BIND_EXPR, push ctx->block_vars and gimplification vars into
14534         the BIND_EXPR and its block's BLOCK_VARS instead of directly
14535         into dest function.
14536         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
14537         there are any BLOCK_VARS.
14538         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
14539         OMP_PARALLEL or OMP_TASK stmt.
14540         (lower_omp): Save and restore input_location around the lower_omp_1
14541         call.
14542
14543 2008-06-27  Richard Guenther  <rguenther@suse.de>
14544
14545         PR tree-optimization/36400
14546         PR tree-optimization/36373
14547         PR tree-optimization/36344
14548         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
14549         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
14550         (update_alias_info): Remove call clobbering code.
14551         (make_constraint_to): New helper function.
14552         (make_escape_constraint): Likewise.
14553         (handle_rhs_call): Use it on all pointer containing arguments.
14554         Also mark the static chain escaped.
14555         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
14556         instead of ANYTHING.
14557         (make_constraint_from): New helper split out from ...
14558         (make_constraint_from_anything): ... here.
14559         (find_func_aliases): Add constraints for escape sites.
14560         (intra_create_variable_infos): Make constraints from NONLOCAL
14561         for parameters.
14562         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
14563         as ANYTHING.
14564         (clobber_what_p_points_to): Remove.
14565         (clobber_what_escaped): New function.
14566         (init_base_vars): Init NONLOCAL and ESCAPED.
14567         (do_sd_constraint): Do not propagate the solution from ESCAPED
14568         but use ESCAPED as a placeholder.
14569         (solve_graph): Likewise.
14570         * tree-flow.h (clobber_what_p_points_to): Remove.
14571         (clobber_what_escaped): Declare.
14572         * tree-ssa-alias.c (set_initial_properties): Call it.
14573         Remove code clobbering escaped pointers.
14574
14575 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14576
14577         * function.c (allocate_struct_function): Only allocate a unique
14578         funcdef_no if the decl is nonzero.
14579
14580 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14581
14582         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
14583         * config/mips/mips.c (mips_split_const_insns): New function.
14584         * config/mips/mips.md (move_type): New attribute.
14585         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
14586         (dword_mode): New attribute.
14587         (type): Avoid long line.  Map "move_type"s to "type"s,
14588         choosing "multi" for doubleword moves if appropriate.
14589         Swap MTC/MFC comments to match their declaration order.
14590         (extended_mips16): Default to "yes" if "move_type" is "sll0",
14591         "type" is "branch" or "jal" is "direct".
14592         (length): Handle "extended_mips16" first.  Make the default
14593         "0" for "ghost" instructions.  Set the length from "move_type".
14594         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
14595         of "type", with "sll0" for the register alternative.  Remove the
14596         "extended_mips16" attribute.
14597         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
14598         of "type", with "shift_shift" for the register alternative.
14599         Remove the "length" attribute.
14600         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
14601         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
14602         of "type", with "andi" for the register alternative.
14603         (*zero_extendqihi2): Likewise.
14604         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
14605         of "andi" instead of a "type" of "arith".
14606         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
14607         instead of "type".
14608         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
14609         (mov_<store>r, *mov<mode>_ra): Likewise.
14610         (extendsidi2): Use "move_type" instead of "type", with "move"
14611         for the register alternative.
14612         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
14613         of "type", with "signext" for the register alternative.
14614         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
14615         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
14616         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
14617         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
14618         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
14619         (unnamed branch insn): Likewise.
14620         (*movdi_gp32_fp64): Fold into...
14621         (*movdi_32bit): ...here.
14622         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
14623         (*movdf_hardfloat): ...this new pattern.
14624         (*movdf_softfloat): Remove redundant FPR alternatives.
14625         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
14626         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
14627         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
14628         the "move" attribute.
14629         (*movdi_32bit): Use "move_type" instead of "type" and remove the
14630         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
14631         and "store" for COP loads and stores.
14632         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
14633         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
14634         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
14635         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
14636         (*movtf_mips16, *movv2sf): Likewise.
14637         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
14638         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
14639         (mfhc1<mode>): Use "move_type" instead of "move".
14640         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
14641         (loadgp_blockage): Remove the "length" attribute.
14642         (blockage, set_got_version, update_got_version): Likewise.
14643         (call_internal): Remove the "extended_mips16" attribute.
14644         (call_value_internal, call_value_multiple_internal): Likewise.
14645         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
14646         instead of "move".
14647         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
14648         the "length" attribute.
14649
14650 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14651
14652         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
14653         -Wcast-qual warnings.
14654         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
14655         handle_pragma_pop_macro): Likewise.
14656         * collect2.c (resolve_lib_name): Likewise.
14657         * config/arc/arc.c (arc_init): Likewise.
14658         * config/arm/arm.c (neon_builtin_compare,
14659         locate_neon_builtin_icode): Likewise.
14660         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
14661         * config/bfin/bfin.c (bfin_init_machine_status,
14662         bfin_optimize_loop): Likewise.
14663         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
14664         * config/cris/cris.c (cris_init_expanders): Likewise.
14665         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
14666         * config/darwin.c (machopic_indirection_eq,
14667         machopic_indirection_name, machopic_output_indirection): Likewise.
14668         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
14669         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
14670         frv_optimize_membar): Likewise.
14671         * config/i386/cygwin.h (mingw_scan,
14672         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
14673         * config/i386/cygwin1.c (mingw_scan): Likewise.
14674         * config/i386/i386.c (machopic_output_stub): Likewise.
14675         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
14676         i386_pe_unique_section): Likewise.
14677         * config/ia64/ia64.c (ia64_init_machine_status,
14678         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
14679         Likewise.
14680         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
14681         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
14682         * config/m68k/m68k.c (m68k_handle_option,
14683         m68k_sched_md_init_global): Likewise.
14684         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
14685         mcore_unique_section): Likewise.
14686         * config/mips/mips.c (mips_block_move_straight,
14687         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
14688         Likewise.
14689         * config/mmix/mmix.c (mmix_init_machine_status,
14690         mmix_encode_section_info): Likewise.
14691         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
14692         * config/rs6000/rs6000.c (rs6000_init_machine_status,
14693         print_operand_address, output_toc, redefine_groups,
14694         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
14695         * config/s390/s390.c (s390_init_machine_status): Likewise.
14696         * config/score/score.c (score_block_move_straight,
14697         score_block_move_loop_body): Likewise.
14698         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
14699         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
14700         * emit-rtl.c (find_auto_inc): Likewise.
14701         * gcc.c (translate_options, process_command): Likewise.
14702         * reorg.c (dbr_schedule): Likewise.
14703         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
14704         * xcoffout.c (xcoffout_declare_function): Likewise.
14705
14706 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
14707
14708         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
14709         ipa-pta working again.
14710
14711 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
14712
14713         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
14714         genautomata.
14715
14716 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
14717
14718         * config.gcc (powerpc*-*-*): Add new core e500mc.
14719         * config/rs6000/e500mc.md: New file.
14720         * config/rs6000/rs6000.c (processor_costs): Add new costs for
14721         e500mc.
14722         (rs6000_override_options): Add e500mc case to
14723         processor_target_table. Altivec and Spe options not allowed
14724         with e500mc. Add isel instruction to e500mc by
14725         default. Initialize rs6000_cost for e500mc.
14726         (rs6000_issue_rate): Set issue rate for e500mc.
14727         * config/rs6000/rs6000.h (processor_type): Add
14728         PROCESSOR_PPCE500MC.
14729         (ASM_CPU_SPEC): Add e500mc.
14730         Set TARGET_ISEL to rs6000_isel.
14731         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
14732         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
14733         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
14734         Include e500mc.md.
14735         * doc/invoke.texi: Add e500mc to list of cpus.
14736
14737 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14738
14739         PR c/34867
14740         * c-lex.c (lex_charconst): Initialize unsignedp.
14741
14742 2008-06-27  Olivier Hainque  <hainque@adacore.com>
14743
14744         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
14745         documented assumptions.
14746
14747 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14748
14749         * dwarf2out.c: Remove trailing white spaces.  Break long line
14750         in comments.
14751
14752 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
14753
14754         * libfuncs.h (LTI_synchronize): New libfunc_index.
14755         (synchronize_libfunc): Declare.
14756         * builtins.c (expand_builtin_synchronize): Consider using
14757         synchronize_libfunc before falling back on an asm blockage.
14758         * config/mips/mips.c: Include libfuncs.h
14759         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
14760
14761 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
14762
14763         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
14764         parameter.  Copy stack_reg to r11 where appropriate.
14765         (no_global_regs_above): Add gpr parameter.
14766         (rs6000_stack_info): Only add padding for SPE save area if we
14767         are saving SPE GPRs and CR.
14768         (saveres_routine_syms): New variable.
14769         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
14770         Define.
14771         (rs6000_savres_routine_sym): New function.
14772         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
14773         split out of...
14774         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
14775         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
14776         Tweak FPR out-of-line saving.
14777         (rs6000_make_savres_rtx): New function.
14778         (rs6000_use_multiple_p): New function.
14779         (rs6000_savres_strategy): New function.
14780         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
14781         out-of-line if appropriate.
14782         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
14783         if we are optimizing for size.
14784         (GP_SAVE_INLINE): Define.
14785         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
14786         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
14787         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
14788         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
14789         (*save_fpregs_<mode>): Add use of r11.
14790         (*restore_gpregs_<mode>): New insn.
14791         (*return_and_restore_gpregs_<mode>): New insn.
14792         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
14793         use r11.
14794         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
14795         (*restore_gpregs_spe): New insn.
14796         (*return_and_restore_gpregs_spe): New insn.
14797         * config/rs6000/predicates.md (save_world_operation): Fix check.
14798
14799 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14800
14801         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
14802         this point, so assert that.
14803
14804 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14805
14806         * cfganal.c: Include vec.h and vecprim.h.
14807         (compute_idf): Import from...
14808         * tree-into-ssa (compute_idf): ...here.
14809         * basic-block.h (compute_idf): Export.
14810
14811 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
14812
14813         * c-decl.c (merge_decls): Use !current_function_decl to check for
14814         extern declaration of C99 inline function being at file scope.
14815
14816 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
14817
14818         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
14819
14820 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14821
14822         * alias.c (record_alias_subset, init_alias_analysis): Fix
14823         -Wc++-compat and/or -Wcast-qual warnings.
14824         * attribs.c (lookup_attribute_spec): Likewise.
14825         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
14826         copy_bb, connect_traces,
14827         find_rarely_executed_basic_blocks_and_cr): Likewise.
14828         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
14829         note_btr_set, migrate_btr_defs): Likewise.
14830         * builtins.c (result_vector, expand_builtin_memcpy,
14831         expand_builtin_mempcpy_args, expand_builtin_strncpy,
14832         builtin_memset_read_str, expand_builtin_printf,
14833         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
14834         Likewise.
14835         * caller-save.c (mark_set_regs): Likewise.
14836         * calls.c (expand_call, emit_library_call_value_1): Likewise.
14837         * cgraph.c (cgraph_edge): Likewise.
14838         * combine.c (likely_spilled_retval_1): Likewise.
14839         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
14840         htab_counts_entry_del, get_coverage_counts): Likewise.
14841         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
14842         new_cselib_val): Likewise.
14843         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
14844         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
14845         Likewise.
14846         * df-core.c (df_compact_blocks): Likewise.
14847         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
14848         * df-scan.c (df_grow_reg_info, df_ref_create,
14849         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
14850         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
14851         df_record_entry_block_defs, df_record_exit_block_uses,
14852         df_bb_verify): Likewise.
14853         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
14854         DF_REF_EXTRACT_MODE_CONST): New.
14855         * dominance.c (get_immediate_dominator, get_dominated_by,
14856         nearest_common_dominator, root_of_dom_tree,
14857         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
14858         -Wc++-compat and/or -Wcast-qual warnings.
14859         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
14860         record_store, replace_read, check_mem_read_rtx, scan_insn,
14861         dse_step1, dse_record_singleton_alias_set): Likewise.
14862         * dwarf2asm.c (dw2_force_const_mem): Likewise.
14863
14864 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14865
14866         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
14867         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
14868         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
14869         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
14870         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
14871         add_ranges_num, add_ranges_by_labels, file_info_cmp,
14872         file_name_acquire, output_file_names, add_const_value_attribute,
14873         premark_used_types_helper, file_table_eq, file_table_hash,
14874         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
14875         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
14876         -Wcast-qual warnings.
14877         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
14878         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
14879         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
14880         gen_reg_rtx, start_sequence, init_emit): Likewise.
14881         * et-forest.c (et_new_occ, et_new_tree): Likewise.
14882         * except.c (init_eh_for_function, gen_eh_region,
14883         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
14884         arh_to_landing_pad, arh_to_label, add_action_record,
14885         add_call_site, switch_to_exception_section): Likewise.
14886         * expmed.c (synth_mult): Likewise.
14887         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
14888         store_expr): Likewise.
14889         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
14890         Likewise.
14891         * function.c (assign_stack_temp_for_type,
14892         allocate_struct_function, match_asm_constraints_1): Likewise.
14893         * gcov-io.c (gcov_allocate): Likewise.
14894         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
14895         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
14896         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
14897         record_one_set, insert_expr_in_table, insert_set_in_table,
14898         dump_hash_table, compute_hash_table_work, alloc_hash_table,
14899         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
14900         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
14901         -Wcast-qual warnings.
14902
14903 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14904
14905         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
14906         -Wcast-qual warnings.
14907         * gcc.c (process_command): Likewise.
14908         * genattrtab.c (oballoc): Use XOBNEW.
14909         (oballocvec): Define.
14910         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
14911         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
14912         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
14913         -Wc++-compat and/or -Wcast-qual warnings.
14914         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
14915         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
14916         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
14917         gen_presence_absence_set, gen_automaton, gen_regexp_el,
14918         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
14919         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
14920         add_excls, process_presence_absence_names,
14921         process_presence_absence_patterns, add_presence_absence,
14922         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
14923         get_free_state, add_arc, get_free_automata_list_el,
14924         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
14925         transform_3, cache_presence, create_ainsns, create_automata,
14926         create_state_ainsn_table, dfa_insn_code_enlarge,
14927         output_trans_func, output_min_issue_delay_func,
14928         output_dead_lock_func, output_reset_func,
14929         output_get_cpu_unit_code_func, output_dfa_start_func,
14930         expand_automata): Likewise.
14931         * genextract.c (gen_insn): Likewise.
14932         * gengtype-lex.l: Likewise.
14933         * gengtype.c (read_input_list, adjust_field_type,
14934         process_gc_options): Likewise.
14935         * genoutput.c (note_constraint): Likewise.
14936         * genpreds.c (mangle, add_constraint): Likewise.
14937         * genrecog.c (process_define_predicate, new_decision,
14938         add_to_sequence): Likewise.
14939         * gensupport.c (record_insn_name): Likewise.
14940
14941 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14942
14943         * config/i386/driver-i386.c (detect_caches_amd,
14944         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
14945         and/or -Wcast-qual warnings.
14946         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
14947         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
14948         gt_pch_save): Likewise.
14949         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
14950         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
14951         * global.c (compute_regsets): Likewise.
14952         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
14953         finish_graph_dump_file): Likewise.
14954         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
14955         unlink_bb_notes): Likewise.
14956         * integrate.c (get_hard_reg_initial_val): Likewise.
14957         * ipa-prop.c (ipa_push_func_to_list): Likewise.
14958         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
14959         * local-alloc.c (update_equiv_regs): Likewise.
14960         * loop-invariant.c (check_invariant_table_size,
14961         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
14962         Likewise.
14963         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
14964         altered_reg_used, mark_altered): Likewise.
14965         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
14966         insert_var_expansion_initialization,
14967         combine_var_copies_in_loop_exit, apply_opt_in_copies,
14968         release_var_copies): Likewise.
14969         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
14970         analyze_matrix_decl, add_allocation_site, analyze_transpose,
14971         analyze_accesses_for_phi_node, check_var_notmodified_p,
14972         check_allocation_function, find_sites_in_func,
14973         record_all_accesses_in_func, transform_access_sites,
14974         transform_allocation_sites): Likewise.
14975         * omp-low.c (new_omp_region, create_omp_child_function_name,
14976         check_omp_nesting_restrictions, check_combined_parallel,
14977         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
14978         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
14979         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
14980         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
14981         Likewise.
14982         * opts-common.c (prune_options): Likewise.
14983         * opts.c (add_input_filename, print_filtered_help,
14984         get_option_state): Likewise.
14985         * params.c (add_params): Likewise.
14986         * passes.c (set_pass_for_id, next_pass_1,
14987         do_per_function_toporder, pass_fini_dump_file): Likewise.
14988         * postreload.c (reload_cse_simplify_operands): Likewise.
14989         * predict.c (tree_predicted_by_p, tree_predict_edge,
14990         clear_bb_predictions, combine_predictions_for_bb): Likewise.
14991
14992 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14993
14994         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
14995         warnings.
14996         * recog.c (check_asm_operands, validate_change_1): Likewise.
14997         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
14998         subst_asm_stack_regs): Likewise.
14999         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
15000         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
15001         * regmove.c (reg_is_remote_constant_p): Likewise.
15002         * regrename.c (regrename_optimize, scan_rtx_reg,
15003         kill_clobbered_value, kill_set_value, kill_autoinc_value):
15004         Likewise.
15005         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
15006         regstat_compute_calls_crossed): Likewise.
15007         * reload1.c (init_reload, new_insn_chain,
15008         has_nonexceptional_receiver, reload, copy_reloads,
15009         calculate_needs_all_insns, init_elim_table): Likewise.
15010         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
15011         * rtl.c (shallow_copy_rtx_stat): Likewise.
15012         * rtlanal.c (parms_set): Likewise.
15013         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
15014         sbitmap_resize, sbitmap_vector_alloc): Likewise.
15015         * sched-ebb.c (earliest_block_with_similiar_load,
15016         add_deps_for_risky_insns): Likewise.
15017         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
15018         schedule_region): Likewise.
15019         * see.c (eq_descriptor_pre_extension,
15020         hash_descriptor_pre_extension, hash_del_pre_extension,
15021         eq_descriptor_properties, hash_descriptor_properties,
15022         hash_del_properties, see_seek_pre_extension_expr,
15023         see_initialize_data_structures, see_print_register_properties,
15024         see_print_pre_extension_expr, see_delete_merged_def_extension,
15025         see_delete_unmerged_def_extension, see_emit_use_extension,
15026         see_pre_delete_extension, see_map_extension, see_commit_changes,
15027         see_analyze_merged_def_local_prop,
15028         see_analyze_merged_def_local_prop,
15029         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
15030         see_set_prop_merged_def, see_set_prop_unmerged_def,
15031         see_set_prop_unmerged_use, see_print_one_extension,
15032         see_merge_one_use_extension, see_merge_one_def_extension,
15033         see_store_reference_and_extension, see_update_uses_relevancy,
15034         see_update_defs_relevancy): Likewise.
15035         * statistics.c (hash_statistics_hash, hash_statistics_eq,
15036         hash_statistics_free, curr_statistics_hash): Likewise.
15037         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
15038         expand_asm_operands, expand_return, case_bit_test_cmp,
15039         expand_case): Likewise.
15040         * stor-layout.c (start_record_layout): Likewise.
15041         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
15042         gt_pch_save_stringpool): Likewise.
15043         * tree-data-ref.c (hash_stmt_vertex_info,
15044         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
15045         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
15046
15047 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
15048
15049         PR target/36627
15050         * config/i386/i386.md : Change constraints of HImode and QImode
15051         immediate operands from "i" to "n".  Change SImode "ni" constraint to
15052         "i" and SImode "rmi" constraint to "g".  Remove all constraints
15053         from const0_operand and const1_operand predicated operands.
15054         (i): Change QImode and HImode attribute from "i" to "n".
15055         (*subqi_2): Change HImode operands to QImode.
15056         (*subqi_3): Ditto.
15057
15058 2008-06-25  Olivier Hainque  <hainque@adacore.com>
15059
15060         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
15061         sed substitutions.
15062
15063 2008-06-25  Richard Guenther  <rguenther@suse.de>
15064
15065         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
15066         not overflow the result type.
15067
15068 2008-06-25  Richard Guenther  <rguenther@suse.de>
15069
15070         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
15071         (vn_lookup): Likewise.
15072
15073 2008-06-25  Richard Guenther  <rguenther@suse.de>
15074
15075         PR tree-optimization/35518
15076         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
15077         * tree-sra.c (instantiate_element): Use fold_build3 to build
15078         BIT_FIELD_REFs.
15079         (try_instantiate_multiple_fields): Likewise.
15080
15081 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15082
15083         * config/rs6000/rs6000.md: Change all string instruction's clobber to
15084         be early clobbers.
15085
15086 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15087
15088         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
15089         use_backchain_to_restore_sp to true
15090         if the offset of the link register save area would go over the 32k - 1
15091         offset limit of the load
15092         instructions.
15093
15094 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
15095
15096         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
15097         anchor for the type-punning blurb.  Cross-reference "Structures
15098         unions enumerations and bit-fields implementation".  Provide a
15099         cast-through-pointer example.  Make final sentence self-contained.
15100         * doc/implement-c.texi (Structures unions enumerations and
15101         bit-fields implementation): Cross-reference the type-punning blurb
15102         in the -fstrict-aliasing documentation.
15103
15104 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15105
15106         PR middle-end/36594
15107         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
15108         the memory instead of the memory itself for the save area.
15109
15110 2008-06-24  Olivier Hainque  <hainque@adacore.com>
15111             Nicolas Roche  <roche@adacore.com>
15112
15113         * gengtype.c (srcdir_len): size_t instead of int.
15114         (get_file_realbasename): New function.  For F a filename, the real
15115         basename of F, with all the path components stripped.
15116         (get_file_srcdir_relative_path): New function.  For F a filename, the
15117         relative path to F from $(srcdir).
15118         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
15119         get_file_realbasename.  Adjust the head comment.
15120         (get_prefix_langdir_index): New function. For F a filename, return the
15121         lang_dir_names[] relative index of the language directory that is
15122         a prefix in F.
15123         (get_file_langdir): For F a filename, return the name of the language
15124         directory where F is located.
15125         (get_file_gtfilename): New function. The gt- output file name for an
15126         input filename F.
15127         (get_output_file_with_visibility): Replace in-line computations with
15128         uses of get_file_gtfilename and get_prefix_langdir_index.
15129         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
15130
15131 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
15132
15133         PR tree-optimization/36504
15134         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
15135         references without base address.
15136
15137 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15138
15139         PR middle-end/36584
15140         * calls.c (expand_call): Increase alignment for recursive functions.
15141
15142 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
15143
15144         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
15145         (TARGET_FUNCTION_VALUE): New define.
15146         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
15147         * config/avr/avr.h (FUNCTION_VALUE): Remove.
15148
15149 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15150
15151         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
15152         (fmod<mode>3): Ditto.
15153         (remainderxf3): Ditto.
15154         (remainder<mode>3): Ditto.
15155
15156 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
15157
15158         PR target/36533
15159         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
15160         REG is a hard register.
15161
15162         PR tree-optimization/36508
15163         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
15164         499, don't check it at all in release compilers.
15165
15166 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15167
15168         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
15169         together with SSE_TARGET_MATH to disable insn pattern.
15170         (*fop_<MODEF:mode>_2_i387): Ditto.
15171         (*fop_<MODEF:mode>_3_i387): Ditto.
15172
15173 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
15174
15175         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
15176
15177 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
15178
15179         PR middle-end/34906
15180         * gimplify.c (gimplify_asm_expr): Check the return code of
15181         parse_output_constraint call, set function return and is_inout
15182         value if it failed.
15183
15184 2008-06-22  Ian Lance Taylor  <iant@google.com>
15185
15186         * c-lex.c (narrowest_unsigned_type): Change itk to int.
15187         (narrowest_signed_type): Likewise.
15188         * c-typeck.c (c_common_type): Change local variable mclass to enum
15189         mode_class, twice.
15190         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
15191         tcc_comparison, not the tree code itself.
15192         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
15193         (c_expand_expr): Cast modifier to enum expand_modifier.
15194         * c-common.h (C_RID_CODE): Add casts.
15195         (C_SET_RID_CODE): Define.
15196         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
15197         (c_lex_one_token): Add cast to avoid warning.
15198         (c_parser_objc_type_name): Rename local typename to type_name.
15199         (check_no_duplicate_clause): Change code parameter to enum
15200         omp_clause_code.
15201         (c_parser_omp_var_list_parens): Change kind parameter to enum
15202         omp_clause_code.
15203         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
15204         c_parser_omp_list_var_parens.
15205         (c_parser_omp_threadprivate): Likewise.
15206         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
15207         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
15208         * c-format.c (NO_FMT): Define.
15209         (printf_length_specs): Use NO_FMT.
15210         (asm_fprintf_length_specs): Likewise.
15211         (gcc_diag_length_specs): Likewise.
15212         (scanf_length_specs): Likewise.
15213         (strfmon_length_specs): Likewise.
15214         (gcc_gfc_length_specs): Likewise.
15215         (printf_flag_specs): Change 0 to STD_C89.
15216         (asm_fprintf_flag_specs): Likewise.
15217         (gcc_diag_flag_specs): Likewise.
15218         (gcc_cxxdiag_flag_specs): Likewise.
15219         (scanf_flag_specs): Likewise.
15220         (strftime_flag_specs): Likewise.
15221         (strfmon_flag_specs): Likewise.
15222         (print_char_table): Likewise.
15223         (asm_fprintf_char_table): Likewise.
15224         (gcc_diag_char_table): Likewise.
15225         (gcc_tdiag_char_table): Likewise.
15226         (gcc_cdiag_char_table): Likewise.
15227         (gcc_cxxdiag_char_table): Likewise.
15228         (gcc_gfc_char_table): Likewise.
15229         (scan_char_table): Likewise.
15230         (time_char_table): Likewis.
15231         (monetary_char_table): Likewise.
15232         * c-format.h (BADLEN): Likewise.
15233
15234 2008-06-21  Ian Lance Taylor  <iant@google.com>
15235
15236         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
15237         Define END_OF_BASE_TREE_CODES around inclusion.
15238         * tree.c (tree_code_type): New global array.
15239         (tree_code_length, tree_code_name): Likewise.
15240         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
15241         $(lang_tree_files).
15242         (all-tree.def, s-alltree): New targets.
15243         (gencheck.h, s-gencheck): Remove.
15244         (tree.o): Depend upon all-tree.def.
15245         (build/gencheck.o): Remove gencheck.h dependency.
15246         (mostlyclean): Don't remove gencheck.h.
15247         * c-common.h (enum c_tree_code): Remove.
15248         * c-lang.c (tree_code_type): Remove.
15249         (tree_code_length, tree_code_name): Remove.
15250         * gencheck.c (tree_codes): Include all-tree.def, rather than
15251         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
15252         after it is used.
15253         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
15254         than tree.def.
15255         * cp/cp-tree.h (enum cplus_tree_code): Remove.
15256         (operator_name_info): Size to MAX_TREE_CODES.
15257         (assignment_operator_name_info): Likewise.
15258         * cp/cp-lang.c (tree_code_type): Remove.
15259         (tree_code_length, tree_code_name): Remove.
15260         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
15261         (assignment_operator_name_info): Likewise.
15262         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
15263         MAX_TREE_CODES.
15264         * cp/mangle.c (write_expression): Likewise.
15265         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
15266         * fortran/f95-lang.c (tree_code_type): Remove.
15267         (tree_code_length, tree_code_name): Remove.
15268         * java/java-tree.h (enum java_tree_code): Remove.
15269         * java/lang.c (tree_code_type): Remove.
15270         (tree_code_length, tree_code_name): Remove.
15271         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
15272         * objc/objc-act.h (enum objc_tree_code): Remove.
15273         * objc/objc-lang.c (tree_code_type): Remove.
15274         (tree_code_length, tree_code_name): Remove.
15275         * objcp/objcp-lang.c (tree_code_type): Remove.
15276         (tree_code_length, tree_code_name): Remove.
15277         * ada/ada-tree.h (enum gnat_tree_code): Remove.
15278         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
15279         * ada/misc.c (tree_code_type): Remove.
15280         (tree_code_length, tree_code_name): Remove.
15281
15282 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
15283
15284         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
15285         the grand_bitmap_obstack.
15286
15287 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15288
15289         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
15290         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
15291         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
15292         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
15293         move_stmt_r, new_label_mapper): Likewise.
15294         * tree-complex.c (cvc_lookup): Likewise.
15295         * tree-dfa.c (create_function_ann): Likewise.
15296         * tree-dump.c (dump_register): Likewise.
15297         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
15298         find_phi_replacement_condition): Likewise.
15299         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
15300         tree_function_versioning): Likewise.
15301         * tree-into-ssa.c (cmp_dfsnum): Likewise.
15302         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
15303         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
15304         get_nonlocal_debug_decl, convert_nonlocal_reference,
15305         convert_nonlocal_omp_clauses, get_local_debug_decl,
15306         convert_local_reference, convert_local_omp_clauses,
15307         convert_nl_goto_reference, convert_nl_goto_receiver,
15308         convert_tramp_reference, convert_call_expr): Likewise.
15309         * tree-outof-ssa.c (contains_tree_r): Likewise.
15310         * tree-parloops.c (reduction_phi, initialize_reductions,
15311         eliminate_local_variables_1, add_field_for_reduction,
15312         add_field_for_name, create_phi_for_local_result,
15313         create_call_for_reduction_1, create_loads_for_reductions,
15314         create_stores_for_reduction, create_loads_and_stores_for_name):
15315         Likewise.
15316         * tree-phinodes.c (allocate_phi_node): Likewise.
15317         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
15318         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
15319         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
15320         * tree-ssa-coalesce.c (compare_pairs): Likewise.
15321         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
15322         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
15323         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
15324         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
15325         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
15326         vn_nary_op_insert): Likewise.
15327         * tree-ssa.c (redirect_edge_var_map_add,
15328         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
15329         * tree-vectorizer.c (vectorize_loops): Likewise.
15330         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
15331         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
15332         tree_cons_stat, build1_stat, build_variant_type_copy,
15333         decl_init_priority_lookup, decl_fini_priority_lookup,
15334         decl_priority_info, decl_restrict_base_lookup,
15335         decl_restrict_base_insert, decl_debug_expr_lookup,
15336         decl_debug_expr_insert, decl_value_expr_lookup,
15337         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
15338         type_hash_add, get_file_function_name, tree_check_failed,
15339         tree_not_check_failed, tree_range_check_failed,
15340         omp_clause_range_check_failed, build_omp_clause,
15341         build_vl_exp_stat): Likewise.
15342         * value-prof.c (gimple_histogram_value,
15343         gimple_duplicate_stmt_histograms): Likewise.
15344         * var-tracking.c (attrs_list_insert, attrs_list_copy,
15345         unshare_variable, variable_union_info_cmp_pos, variable_union,
15346         dataflow_set_different_1, dataflow_set_different_2,
15347         vt_find_locations, variable_was_changed, set_variable_part,
15348         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
15349         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
15350         section_entry_hash, object_block_entry_eq,
15351         object_block_entry_hash, create_block_symbol,
15352         initialize_cold_section_name, default_function_rodata_section,
15353         strip_reg_name, set_user_assembler_name, const_desc_eq,
15354         build_constant_desc, output_constant_def, lookup_constant_def,
15355         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
15356         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
15357         default_internal_label): Likewise.
15358         * varray.c (varray_init, varray_grow): Likewise.
15359         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
15360
15361 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
15362
15363         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
15364         operators for "test" insn.  Macroize insn using SWI mode macro.
15365         (*jcc_fused_2): Ditto.
15366         (*jcc_fused_3): Macroize insn using SWI mode macro.
15367         (*jcc_fused_4): Ditto.
15368
15369 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
15370
15371         * tree-ssa-pre.c: Fix typo in comment.
15372         (init_antic, fini_antic): Add explicit funtions for
15373         initializing and deinitializing ANTIC and AVAIL sets.
15374         (create_expression_by_pieces): Fix typo in comment.
15375         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
15376         (execute_pre): Eventually dump details about ANTIC_IN.
15377
15378 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15379
15380         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
15381         * gcc.c (translate_options, init_spec, store_arg, read_specs,
15382         add_to_obstack, file_at_path, find_a_file, execute,
15383         add_preprocessor_option, add_assembler_option, add_linker_option,
15384         process_command, insert_wrapper, do_option_spec, do_self_spec,
15385         spec_path, do_spec_1, is_directory, main, used_arg,
15386         getenv_spec_function): Likewise.
15387         * tlink.c (symbol_hash_lookup, file_hash_lookup,
15388         demangled_hash_lookup, symbol_push, file_push, frob_extension):
15389         Likewise.
15390
15391 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15392
15393         * doc/rtl.texi: Updated subreg section.
15394
15395 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
15396
15397         PR c++/36523
15398         * cgraphunit.c (cgraph_process_new_functions): Don't clear
15399         node->needed and node->reachable.
15400         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
15401         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
15402         (expand_task_call): Don't call expand_task_copyfn.
15403         (expand_task_copyfn): Renamed to...
15404         (finalize_task_copyfn): ... this.
15405
15406 2008-06-19  Jan Hubicka  <jh@suse.cz>
15407
15408         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
15409         clobbering framepointer.
15410
15411 2008-06-19  Jan Hubicka  <jh@suse.cz>
15412
15413         * tree-optimize.c (execute_early_local_optimizations): Set
15414         cgraph_state only at first invocation.
15415
15416 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15417
15418         * system.h (-Wc++-compat): Activate as a warning, no an error.
15419
15420 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15421
15422         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
15423         instead of "#" in insn asm template.
15424         (*jcc_fused_2): Ditto.
15425
15426 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15427
15428         * config/i386/i386.h (ix86_tune_indices)
15429         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
15430         (TARGET_FUSE_CMP_AND_BRANCH): New define.
15431         * config/i386/i386.md (*jcc_fused_1): New insn pattern
15432         (*jcc_fused_2): Ditto.
15433         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
15434         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
15435         (print operand): Handle 'E' and 'e' code.
15436
15437 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
15438
15439         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
15440         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
15441         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15442
15443 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
15444
15445         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
15446         node->decl.
15447         (cgraph_expand_function): Use local copy of decl.
15448         (cgraph_expand_all_functions): Remove redundant initialization of
15449         order_pos.
15450         (cgraph_optimize): Reword internal_error message.
15451
15452 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
15453
15454         * arm-protos.h (arm_return_in_memory): Remove public
15455         arm_return_in_memory() prototype.
15456         * arm.c (arm_return_in_memory): Add static prototype, add target
15457         hook macro, change definition and comments.
15458         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
15459
15460 2008-06-19  Ben Elliston  <bje@au.ibm.com>
15461
15462         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
15463         real.c: Remove references to IEEE 754R.
15464         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
15465         * doc/libgcc.texi (Decimal float library routines): Likewise.
15466
15467 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15468
15469         * targhooks.h (struct gcc_target): New member unwind_word_mode.
15470         (default_unwind_word_mode): Add prototype.
15471         * targhooks.c (default_unwind_word_mode): New function.
15472         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
15473         instead of word_mode.
15474         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
15475         (TARGET_INITIALIZER): Use it.
15476
15477         * c-common.c (handle_mode_attribute): Support "unwind_word"
15478         mode attribute.
15479         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
15480
15481         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
15482         word_mode to access SjLj_Function_Context member "data".
15483         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
15484         conversion from targetm.eh_return_filter_mode () to
15485         targetm.unwind_word_mode () if they differ.
15486
15487         * builtin-types.def (BT_UNWINDWORD): New primitive type.
15488         (BT_FN_UNWINDWORD_PTR): New function type.
15489         (BT_FN_WORD_PTR): Remove.
15490         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
15491         * except.c (expand_builtin_extend_pointer): Convert pointer to
15492         targetm.unwind_word_mode () instead of word_mode.
15493
15494         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
15495         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
15496         (spu_unwind_word_mode): New function.
15497         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
15498         (TARGET_UNWIND_WORD_MODE): Define.
15499         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
15500
15501 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15502
15503         * config/spu/spu.c (reg_align): Remove.
15504         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
15505         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
15506         (spu_split_store): Likewise.
15507
15508 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
15509
15510         * gcc/tree-vn.c: Fix typo in comment.
15511
15512 2008-06-18  Jan Hubicka  <jh@suse.cz>
15513
15514         * cgraphunit.c (cgraph_optimize): Output debug info when doing
15515         toplevel reorder too.
15516
15517 2008-06-18  Jan Hubicka  <jh@suse.cz>
15518
15519         * c-opts.c (c_common_post_options): PCH is not compatible with
15520         no-unit-at-a-time.
15521         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
15522         -fno-toplevel-reorder by default now.
15523
15524 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15525
15526         PR documentation/30739
15527         * doc/install.texi (Prerequisites): Document dependency on awk.
15528
15529 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
15530             Ian Lance Taylor  <iant@google.com>
15531
15532         PR rtl-optimization/35604
15533         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
15534         only want to change jump destinations, not eventual label comparisons.
15535
15536 2008-06-16  Jan Hubicka  <jh@suse.cz>
15537
15538         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
15539         syntax errors.
15540         (cgraph_analyze_function): Likewise.
15541
15542 2008-06-16  Jan Hubicka  <jh@suse.cz>
15543
15544         * cgraph.h (cgraph_mark_if_needed): New function.
15545         * cgraphunit.c (cgraph_mark_if_needed): New function.
15546         * c-decl.c (duplicate_decl): Use it.
15547
15548 2008-06-16  Jan Hubicka  <jh@suse.cz>
15549
15550         * cgraph.c (cgraph_add_new_function): When in expansion state, do
15551         lowering.
15552
15553 2008-06-16  Jan Hubicka  <jh@suse.cz>
15554
15555         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
15556
15557 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
15558             Kazu Hirata  <kazu@codesourcery.com>
15559             Maxim Kuvyrkov  <maxim@codesourcery.com
15560
15561         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
15562         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
15563         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
15564         EXTRA_SPEC_FUNCTIONS.
15565         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
15566         (DRIVER_SELF_SPECS): Adjust.
15567         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
15568         * config/mips/st.h, config/mips/t-st: New.
15569         * config/mips/driver-native.c, config/mips/x-native: New.
15570         * doc/invoke.texi (MIPS): Document 'native' value for -march and
15571         -mtune options.
15572
15573 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15574
15575         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
15576         from it.
15577         (ISA_HAS_FP_CONDMOVE): New macro.
15578         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
15579         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
15580         (ISA_HAS_NMADD3_NMSUB3): New macro.
15581         * config/mips/mips.c (mips_rtx_costs): Update.
15582         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
15583         compiling for ST Loongson 2E/2F.
15584         (madd<mode>): Rename to madd4<mode>.  Update.
15585         (madd3<mode>): New pattern.
15586         (msub<mode>): Rename to msub4<mode>.  Update.
15587         (msub3<mode>): New pattern.
15588         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
15589         (nmadd3<mode>): New pattern.
15590         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
15591         (nmadd3<mode>_fastmath): New pattern.
15592         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
15593         (nmsub3<mode>): New pattern.
15594         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
15595         (nmsub3<mode>_fastmath): New pattern.
15596         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
15597
15598 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
15599
15600         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
15601         (DF_REF_INSN_INFO): New.
15602         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
15603         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
15604         with a NULL DF_REF_INSN_INFO.
15605         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
15606         DF_INSN_SET.
15607         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
15608         DF_INSN_INFO_EQ_USES): New.
15609         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
15610         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
15611         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
15612         * df-core.c: Update comment for above changes.
15613         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
15614         DF_INSN_UID_* macros.
15615         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
15616         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
15617         insn rtx.  Update all callers.
15618         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
15619         df_ref_create_structure, df_insn_refs_collect): Likewise.
15620         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
15621         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
15622         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
15623         macros to access the insn refs.
15624         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
15625         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
15626         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
15627         for accessing the refs.
15628         (try_fwprop_subst): Likewise.
15629         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
15630         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
15631         for accessing the refs.
15632         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
15633         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
15634         to look at the insn refs.
15635         (record_uses): Likewise.
15636         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
15637         function anymore.
15638         (mark_artificial_uses): Don't mark_insn for artificial refs.
15639         (mark_reg_rependencies): Likewise.
15640
15641         * doc/rtl.texi: Remove documentation of ADDRESSOF.
15642
15643 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15644
15645         * configure: Regenerate.
15646
15647 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15648
15649         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
15650         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15651         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15652
15653 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15654
15655         * config/avr/avr.c (avr_mcu_t): Add attiny167.
15656         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15657         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15658
15659 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15660
15661         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
15662         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15663         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15664
15665 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15666
15667         * tree-ssa-sccvn.c: Fix format of comments.
15668
15669 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15670
15671         * cgraph.c: Remove unneeded forward declarations of eq_node()
15672         and hash_node().
15673
15674 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
15675
15676         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
15677         REG_RETVAL notes.
15678         (see_update_relevancy): Likewise.
15679         * fwprop.c (try_fwprop_subst): Likewise.
15680         * rtlanal.c (noop_move_p): Likewise.
15681         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
15682         notes to non-existing libcall blocks.
15683         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
15684         Remove orig_set.
15685         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
15686         (dead_libcall_p): Remove.
15687         (delete_trivially_dead_insns): Don't use it.
15688         * web.c (union_defs): Remove comment about keeping nops.
15689         * gcse.c (hash_scan_insn): Don't take libcall pointers.
15690         (compute_hash_table_work): Don't track libcall notes.
15691         (do_local_cprop): Don't take libcall pointers.  Don't update
15692         libcall notes.
15693         (adjust_libcall_notes): Deleted.
15694         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
15695         ever have existed in the first place).
15696         (replace_store_insn): Don't try to remove libcall notes.
15697         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
15698         (resolve_reg_notes): Don't call them.
15699         (resolve_simple_move): Likewise.
15700         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
15701         Don't remove REG_RETVAL notes.
15702         * emit-rtl.c (try_split): Don't update libcall notes.
15703         (emit_copy_of_insn_after): Dito.
15704         * cselib.c (cselib_current_insn_in_libcall): Remove.
15705         (cselib_process_insn): Don't set/clear it.
15706         (new_elt_loc_list): Don't record it.
15707         (cselib_init): Don't initialize it.
15708         * cselib.c (struct elt_loc_list): Remove in_libcall field.
15709         * loop-invariant.c (find_invariant_insn): Don't look for libcall
15710         notes.
15711         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
15712         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
15713         (init_deps): Don't initialize it.
15714         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
15715         * combine.c (delete_noop_moves): Don't update libcall notes.
15716         (can_combine_p): Remove now pointless #if 0 block.
15717         (try_combine): Remove another obsolete #if 0 block.
15718         (distribute_notes): Don't distribute libcall notes.
15719         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
15720         * dce.c (libcall_dead_p): Remove.
15721         (delete_unmarked_insns): Don't handle libcall blocks.
15722         (preserve_libcall_for_dce): Remove.
15723         (prescan_insns_for_dce): Don't special-case libcall block insns.
15724         * reload1 (reload): Don't handle libcall notes.
15725         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
15726         documentation.
15727
15728 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15729
15730         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
15731         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15732         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15733
15734 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15735
15736         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
15737         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15738         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15739
15740 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15741
15742         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
15743
15744 2008-06-16  Ira Rosen  <irar@il.ibm.com>
15745
15746         PR tree-optimization/36493
15747         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
15748         the arguments list. Use VECTYPE to create vector pointer.
15749         (vectorizable_store): Fail if accesses through a pointer to vectype
15750         do not alias the original memory reference operands.
15751         Call vect_create_data_ref_ptr without the removed argument.
15752         (vectorizable_load): Likewise.
15753         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
15754         removed argument.
15755
15756 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
15757
15758         PR target/36336
15759         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
15760         reg_equiv_constant.
15761
15762 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15763
15764         * config/mips/loongson2ef.md: New file.
15765         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
15766         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
15767         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
15768         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
15769         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
15770         and loongson_2f.
15771         (loongson2ef.md): New include.
15772         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
15773         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
15774         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
15775         (loongson_gt_<mode>, loongson_extract_halfword)
15776         (loongson_insert_halfword_0, loongson_insert_halfword_2)
15777         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
15778         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
15779         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
15780         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
15781         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
15782         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
15783         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
15784         (vec_interleave_low<mode>): Define type attribute.
15785         * config/mips/mips.c (mips_ls2): New static variable.
15786         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
15787         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
15788         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
15789         Implement target scheduling hooks.
15790         (mips_multipass_dfa_lookahead): Update to handle tuning for
15791         Loongson 2E/2F.
15792         (mips_sched_init): Initialize data for Loongson scheduling.
15793         (mips_ls2_variable_issue): New static function.
15794         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
15795         Add sanity check.
15796         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
15797         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
15798         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
15799         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
15800         Handle ST Loongson 2E/2F cores.
15801         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
15802
15803 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15804
15805         * omp-low.c (extract_omp_for_data): Fix comment typo.
15806         * c.opt: Fix typo.
15807
15808 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15809
15810         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
15811         FIXME note about gcc/config.guess.
15812         * doc/options.texi (Option file format): Remove non-ASCII bytes.
15813         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
15814         * doc/cppopts.texi: Likewise.
15815         * doc/extend.texi: Likewise.
15816         * doc/gcc.texi: Likewise.
15817         * doc/gccint.texi: Likewise.
15818         * doc/gcov.texi: Likewise.
15819         * doc/gty.texi: Likewise.
15820         * doc/hostconfig.texi: Likewise.
15821         * doc/install.texi: Likewise.
15822         * doc/invoke.texi: Likewise.
15823         * doc/loop.texi: Likewise.
15824         * doc/makefile.texi: Likewise.
15825         * doc/md.texi: Likewise.
15826         * doc/passes.texi: Likewise.
15827         * doc/tm.texi: Likewise.
15828         * doc/tree-ssa.texi: Likewise.
15829         * doc/trouble.texi: Likewise.
15830
15831 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
15832             Nathan Sidwell  <nathan@codesourcery.com>
15833             Maxim Kuvyrkov  <maxim@codesourcery.com>
15834             Richard Sandiford  <rdsandiford@googlemail.com>
15835
15836         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
15837         * config/mips/mips-protos.h (mips_expand_vector_init): New.
15838         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
15839         builtins.
15840         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
15841         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
15842         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
15843         V8QImode cases.
15844         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
15845         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
15846         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
15847         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
15848         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
15849         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
15850         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
15851         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
15852         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
15853         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
15854         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
15855         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
15856         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
15857         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
15858         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
15859         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
15860         (mips_builtins): Add Loongson builtins.
15861         (mips_loongson_2ef_bdesc): New.
15862         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
15863         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
15864         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
15865         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
15866         New.
15867         (mips_expand_vector_init): New.
15868         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
15869         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
15870         if appropriate.
15871         * config/mips/mips.md: Add unspec numbers for Loongson
15872         builtins.  Include loongson.md.
15873         (MOVE64): Include Loongson vector modes.
15874         (SPLITF): Include Loongson vector modes.
15875         (HALFMODE): Handle Loongson vector modes.
15876         * config/mips/loongson.md: New.
15877         * config/mips/loongson.h: New.
15878         * config.gcc: Add loongson.h header for mips*-*-* targets.
15879         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
15880
15881 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
15882
15883         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
15884         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
15885         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
15886         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
15887         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
15888         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
15889         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
15890         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
15891         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
15892         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
15893         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
15894         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
15895         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
15896         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
15897         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
15898         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
15899         Remove use_fixproto=yes.
15900         (ia64*-*-hpux*): Remove comment about using fixproto.
15901         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
15902
15903 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15904
15905         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
15906         library rebuilds.
15907         * configure: Regenerate.
15908
15909 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
15910
15911         PR middle-end/36520
15912         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
15913         before evaluating it.
15914
15915 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
15916
15917         PR c/36507
15918         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
15919         nested inline functions.
15920         (start_decl, start_function): Don't invert DECL_EXTERNAL
15921         for nested inline functions.
15922
15923 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15924
15925         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
15926         splits that must be made for correctness.
15927
15928 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15929
15930         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
15931         (AVAIL_NON_MIPS16): Likewise.
15932         (mips_builtin_description): Replace target_flags with a predicate.
15933         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
15934         (dspr2_32): New availability predicates.
15935         (MIPS_BUILTIN): New macro.
15936         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
15937         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
15938         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
15939         Replace the TARGET_FLAGS parameters with AVAIL parameters.
15940         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
15941         (mips_dsp_32only_bdesc): Merge into...
15942         (mips_builtins): ...this new array.
15943         (mips_bdesc_map, mips_bdesc_arrays): Delete.
15944         (mips_init_builtins): Update after above changes.
15945         (mips_expand_builtin_1): Merge into...
15946         (mips_expand_builtin): ...here and update after above changes.
15947
15948 2008-06-12  Paul Brook  <paul@codesourcery.com>
15949
15950         * longlong.h (__arm__): Define count_leading_zeros.
15951         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
15952         (clzsi2, clzdi2): New functions.
15953         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
15954         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
15955         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
15956         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
15957         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
15958         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
15959         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
15960         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
15961         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
15962         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
15963
15964 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
15965
15966         * config/m68k/m68k.c (m68k_tune_flags): New.
15967         (override_options): Compute m68k_tune_flags.
15968         (MULL_COST, MULW_COST): Update for various variants of CFV2.
15969         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
15970
15971 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15972
15973         PR middle-end/36506
15974         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
15975
15976 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15977
15978         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
15979         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
15980
15981 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15982
15983         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
15984         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
15985
15986 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15987
15988         PR middle-end/36506
15989         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
15990         reductions.
15991
15992 2008-06-12  Richard Guenther  <rguenther@suse.de>
15993
15994         PR tree-optimization/36345
15995         * tree-flow.h (struct ptr_info_def): Align escape_mask,
15996         add memory_tag_needed flag.
15997         (may_alias_p): Declare.
15998         * tree-ssa-alias.c (may_alias_p): Export.
15999         (set_initial_properties): Use memory_tag_needed flag.
16000         (update_reference_counts): Likewise.
16001         (reset_alias_info): Reset memory_tag_needed flag.
16002         (create_name_tags): Check memory_tag_needed flag.
16003         (dump_points_to_info_for): Dump it.
16004         * tree-ssa-structalias.c (struct variable_info): Remove
16005         directly_dereferenced flag.
16006         (new_var_info): Do not initialize it.
16007         (process_constraint_1): Do not set it.
16008         (update_alias_info): Set is_dereferenced flag.
16009         (set_uids_in_ptset): Use may_alias_p.
16010         (set_used_smts): Check memory_tag_needed flag.
16011         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
16012         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
16013         memory_tag_needed flag.
16014         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
16015         from broken design.
16016
16017 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
16018
16019         * config/i386/i386.c (ix86_compute_frame_layout): Disable
16020         red zone for w64 abi.
16021         (ix86_expand_prologue): Likewise.
16022         (ix86_force_to_memory): Likewise.
16023         (ix86_free_from_memory): Likewise.
16024
16025 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
16026
16027         PR target/36425
16028         * config/rs6000/rs6000.c (rs6000_override_options): Set
16029         rs6000_isel conditionally to the absence of comand line override.
16030         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
16031         Remove duplicate rs6000_isel setting.
16032         * config/rs6000/eabispe.h: Ditto.
16033
16034 2008-06-11  Richard Guenther  <rguenther@suse.de>
16035
16036         * alias.c (get_alias_set): Use the element alias-set for arrays.
16037         (record_component_aliases): For arrays and vectors do nothing.
16038         * c-common.c (strict_aliasing_warning): Handle the cases
16039         of alias set zero explicitly.
16040         * Makefile.in (dfp.o-warn): Add -Wno-error.
16041
16042 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16043
16044         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
16045         tune_32 tune_64.
16046         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
16047         tune_32 tune_64 to supported_defaults.  Allow values not
16048         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
16049         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
16050         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
16051         with_cpu_64 to generic for 64-bit-supporting configurations, not
16052         with_cpu.  Remove FIXMEs.
16053         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
16054         --with-arch-64, --with-tune-32, --with-tune-64): Document.
16055         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
16056         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
16057         arch_32 and arch_64.
16058
16059 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16060             Olivier Hainque  <hainque@adacore.com>
16061
16062         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
16063         Use DECL_SIZE_UNIT to retrieve the size of the field.
16064
16065 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16066
16067         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
16068         with function calls after declarations.  Lay out
16069         neon_float_type_node before further use.
16070
16071 2008-06-11  Richard Guenther  <rguenther@suse.de>
16072
16073         * tree-flow.h (may_point_to_global_var): Declare.
16074         * tree-ssa-alias.c (may_point_to_global_var): New function.
16075         * tree-ssa-sink.c (is_hidden_global_store): Use it.
16076
16077 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
16078
16079         * configure.ac: Teach that fido supports .debug_line.
16080         * configure: Regenerate.
16081
16082 2008-06-10  Tom Tromey  <tromey@redhat.com>
16083
16084         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
16085         debug hook.
16086
16087 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16088
16089         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
16090         (encode_decimal64, decode_decimal64, encode_decimal128,
16091         decode_decimal128): Reverse order of 32-bit parts of value if host
16092         and target endianness differ.
16093
16094 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
16095
16096         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
16097         Avoid division by 0.
16098         (tree_mod_pow2_value_transform): Likewise.
16099         (tree_ic_transform): Likewise.
16100         (tree_stringops_transform): Likewise.
16101         (tree_mod_subtract_transform): Likewise.
16102         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
16103         (copy_edges_for_bb): Likewise.
16104         (initialize_cfun): Likewise.
16105
16106 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16107
16108         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
16109         nonmemory_operand. Add "N" operand constraint.
16110         (*btsi): Ditto.
16111         (*jcc_btdi_mask_rex64): New instruction and split pattern.
16112         (*jcc_btsi_mask): Ditto.
16113         (*jcc_btsi_mask_1): Ditto.
16114
16115 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16116
16117         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
16118         TYPE_CANONICAL for copied element type.
16119
16120 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16121
16122         PR target/36473
16123         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
16124         Add m_CORE2 and m_GENERIC.
16125         * config/i386/predicates.md (bt_comparison_operator): New predicate.
16126         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
16127         (*btsi): Ditto.
16128         (*jcc_btdi_rex64): New instruction and split pattern.
16129         (*jcc_btsi): Ditto.
16130         (*jcc_btsi_1): Ditto.
16131         (*btsq): Fix Intel asm dialect operand order.
16132         (*btrq): Ditto.
16133         (*btcq): Ditto.
16134
16135 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
16136
16137         PR middle-end/36447
16138         * simplify-rtx.c (simplify_subreg): Add check for shift count
16139         greater than size.
16140
16141 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
16142
16143         * doc/md.texi: Synchronize with later constraints.md change.
16144         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
16145         with a C implementation.
16146         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
16147         MFLO handling.
16148         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
16149         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
16150         when moving to and from MD_REGNUM.
16151         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
16152         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
16153         Handle byte and halfword moves.
16154         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
16155         separately.
16156         * config/mips/constraints.md (h): Turn into NO_REGS.
16157         (l, x): Update documentation.
16158         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
16159         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
16160         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
16161         (HILO): New mode iterator.
16162         (MOVE128): Add TI.
16163         (any_div): New code iterator.
16164         (u): Extend code attribute to div and udiv.
16165         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
16166         d_operand in the splitters.  Remove redundant CONST_INT checks.
16167         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
16168         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
16169         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
16170         accordingly, using normal moves instead of unspecs to move LO into
16171         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
16172         (<u>mulsidi3): Handle expansion in C code.
16173         (<u>mulsidi3_32bit_internal): Rename to...
16174         (<u>mulsidi3_32bit): ...this.
16175         (<u>mulsidi3_32bit_r4000): Fix insn separator.
16176         (*<u>mulsidi3_64bit): Rename to...
16177         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
16178         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
16179         to set LO and HI to the multiplication result.  Use a normal move
16180         for MFLO and an unspec for MFHI.
16181         (*<u>mulsidi3_64bit_parts): Replace with...
16182         (<u>mulsidi3_64bit_hilo): ...this new instruction.
16183         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
16184         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
16185         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
16186         instead of HI.  Split the instruction into a separate multiplication
16187         and MFHI if !TARGET_FIX_R4000.
16188         (<su>muldi3_highpart): Likewise.
16189         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
16190         and the "=h" clobber.
16191         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
16192         (<u>mulditi3): New expander.
16193         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
16194         (madsi): Remove "=h" clobber.
16195         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
16196         Force the modulus result to be a GPR and split the instruction into
16197         a division followed by an MFHI after reload.
16198         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
16199         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
16200         the MIPS16 HIGH define_split.
16201         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
16202         of acc<->gpr moves to "multi".
16203         (*movdi_64bit): Replace the single "x" alternative with
16204         alternatives for moving into and out of "a".
16205         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
16206         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
16207         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
16208         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
16209         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
16210         (movti): New expander.
16211         (*movti, *movti_mips16): New insns.
16212         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
16213         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
16214         (mthi<GPR:mode>_<HILO:mode>): Likewise.
16215         * config/mips/predicates.md (fpr_operand): Delete.
16216         (d_operand): New predicate.
16217
16218 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
16219
16220         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
16221         failure on some Bourne shells.
16222         (x86_64-*-*): Ditto.
16223
16224 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
16225
16226         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
16227
16228 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
16229
16230         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
16231         (sparc-sun-solaris2*): Likewise.
16232
16233 2008-06-09  Arnaud Charlet  <charlet@adacore.com
16234
16235         * doc/install.texi: Update requirements to build the Ada compiler.
16236
16237 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
16238
16239         * df-scan.c (struct df_scan_problem_data): Remove the
16240         mw_link_pool alloc pool.
16241         (df_scan_free_internal): Don't free it.
16242         (df_scan_alloc): Don't allocate it.
16243         * df.h (struct df_link): Update comment.
16244
16245 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
16246
16247         * except.h: Correct checks for when SJLJ exceptions must be used.
16248
16249 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16250
16251         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
16252         default.
16253
16254 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
16255
16256         PR tree-optimization/36218
16257         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
16258         configure for the build system.
16259         (BUILD_LDFLAGS): Define.
16260         * configure: Regenerate.
16261         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
16262
16263 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
16264
16265         PR target/36424
16266         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
16267         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
16268         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
16269
16270 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
16271
16272         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
16273
16274 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
16275
16276         * config.gcc (Obsolete configurations): Remove list of
16277         configurations.
16278         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
16279         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
16280         targets matched by those patterns.
16281         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
16282         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
16283         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
16284         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
16285         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
16286         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
16287         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
16288         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
16289         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
16290         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
16291         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
16292         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
16293         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
16294         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
16295         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
16296         Make code for Solaris 7 and greater unconditional for Solaris.
16297         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
16298         Remove --with-* handling.
16299         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
16300         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
16301         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
16302         LINK_OS_WINDISS_SPEC): Remove.
16303         * config/rs6000/sysv4.opt (mwindiss): Remove.
16304         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
16305         * configure: Regenerate.
16306         * doc/cpp.texi: Don't mention BeOS.
16307         * doc/extend.texi (interrupt): Don't mention MS1.
16308         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
16309         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
16310         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
16311         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
16312         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
16313         Remove.
16314         * doc/invoke.texi (MT Options): Remove.
16315         (-mwindiss): Remove.
16316         (CRIS Options): Remove cris-axis-aout references.
16317         (HPPA Options): Don't mention hppa1.1-*-pro.
16318         * doc/md.texi: (MorphoTech family): Remove.
16319         * libgcc2.c: Don't handle UWIN.
16320         * config/alpha/t-unicosmk: Remove.
16321         * config/alpha/unicosmk.h: Remove.
16322         * config/arm/kaos-arm.h: Remove.
16323         * config/arm/kaos-strongarm.h: Remove.
16324         * config/arm/strongarm-coff.h: Remove.
16325         * config/arm/strongarm-elf.h: Remove.
16326         * config/arm/strongarm-pe.h: Remove.
16327         * config/arm/t-strongarm-pe: Remove.
16328         * config/arm/t-xscale-coff: Remove.
16329         * config/arm/t-xscale-elf: Remove.
16330         * config/arm/xscale-coff.h: Remove.
16331         * config/arm/xscale-elf.h: Remove.
16332         * config/chorus.h: Remove.
16333         * config/cris/aout.h: Remove.
16334         * config/cris/aout.opt: Remove.
16335         * config/cris/t-aout: Remove.
16336         * config/i386/beos-elf.h: Remove.
16337         * config/i386/kaos-i386.h: Remove.
16338         * config/i386/ptx4-i.h: Remove.
16339         * config/i386/sco5.h: Remove.
16340         * config/i386/sco5.opt: Remove.
16341         * config/i386/sysv4-cpp.h: Remove.
16342         * config/i386/sysv5.h: Remove.
16343         * config/i386/t-beos: Remove.
16344         * config/i386/t-sco5: Remove.
16345         * config/i386/t-uwin: Remove.
16346         * config/i386/uwin.asm: Remove.
16347         * config/i386/uwin.h: Remove.
16348         * config/kaos.h: Remove.
16349         * config/mips/windiss.h: Remove.
16350         * config/mt: Remove directory.
16351         * config/pa/pa-osf.h: Remove.
16352         * config/pa/pa-pro-end.h: Remove.
16353         * config/pa/t-pro: Remove.
16354         * config/ptx4.h: Remove.
16355         * config/rs6000/beos.h: Remove.
16356         * config/rs6000/kaos-ppc.h: Remove.
16357         * config/rs6000/t-beos: Remove.
16358         * config/rs6000/windiss.h: Remove.
16359         * config/sh/kaos-sh.h: Remove.
16360         * config/sol2-6.h: Remove.
16361         * config/sparc/sol26-sld.h: Remove.
16362         * config/sparc/sysv4-only.h: Remove.
16363         * config/vax/bsd.h: Remove.
16364         * config/vax/t-memfuncs: Remove.
16365         * config/vax/ultrix.h: Remove.
16366         * config/vax/vaxv.h: Remove.
16367         * config/windiss.h: Remove.
16368
16369 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
16370
16371         PR rtl-optimization/36438
16372         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
16373         for vector shifts with constant scalar shift operands.
16374
16375 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
16376
16377         * doc/invoke.texi: Document -march=xlr.
16378         * config/mips/xlr.md: New file.
16379         * config/mips/mips.md: Include it.
16380         (cpu): Add "xlr".
16381         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
16382         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
16383         (mips_rtx_cost_data): Likewise.
16384
16385 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16386
16387         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
16388         PRE_INC and PRE_DEC cases.
16389
16390 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16391
16392         PR rtl-optimization/36419
16393         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
16394         the emitting jump insn.
16395
16396         PR target/36362
16397         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
16398         is not bool, boolify the whole *expr_p and convert to the desired type.
16399
16400 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16401
16402         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
16403         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
16404         Add omp_private_outer_ref hook, add another argument to
16405         omp_clause_default_ctor hook.
16406         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
16407         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
16408         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
16409         hook_tree_tree_tree_tree_null.
16410         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
16411         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
16412         * hooks.c (hook_tree_tree_tree_tree_null): New function.
16413         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
16414         * tree.def (OMP_TASK): New tree code.
16415         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
16416         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
16417         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
16418         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
16419         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
16420         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
16421         OMP_CLAUSE_COLLAPSE_EXPR): Define.
16422         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16423         (OMP_DIRECTIVE_P): Add OMP_TASK.
16424         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
16425         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
16426         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
16427         and OMP_CLAUSE_UNTIED entries.
16428         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
16429         num_ops to 2.
16430         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16431         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
16432         * tree-pretty-print.c (dump_omp_clause): Handle
16433         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
16434         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16435         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
16436         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
16437         warning about unsigned iterators.  Change decl/init/cond/incr
16438         arguments to TREE_VECs, check arguments for all collapsed loops.
16439         (c_finish_omp_taskwait): New function.
16440         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
16441         ws_clauses.
16442         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
16443         default_function_array_conversion on init.  Add par_clauses argument.
16444         If decl is present in parallel's lastprivate clause, change it to
16445         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
16446         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
16447         collapse count in clauses.
16448         (c_parser_omp_for, c_parser_omp_parallel): Adjust
16449         c_parser_omp_for_loop callers.
16450         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
16451         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
16452         (c_parser_omp_clause_name): Handle collapse and untied clauses.
16453         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
16454         functions.
16455         (c_parser_omp_clause_schedule): Handle schedule(auto).
16456         Include correct location in the error message.
16457         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
16458         and PRAGMA_OMP_CLAUSE_UNTIED.
16459         (OMP_TASK_CLAUSE_MASK): Define.
16460         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
16461         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
16462         * tree-nested.c (convert_nonlocal_omp_clauses,
16463         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
16464         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
16465         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16466         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
16467         OMP_CLAUSE_DECL.
16468         (conver_nonlocal_reference, convert_local_reference,
16469         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
16470         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
16471         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
16472         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
16473         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
16474         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
16475         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
16476         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
16477         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16478         OMP_CLAUSE_UNTIED.
16479         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
16480         * c-common.h (c_finish_omp_taskwait): New prototype.
16481         * gimple-low.c (lower_stmt): Handle OMP_TASK.
16482         * tree-parloops.c (create_parallel_loop): Create 1 entry
16483         vectors for OMP_FOR_{INIT,COND,INCR}.
16484         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16485         (make_edges): Handle OMP_TASK.
16486         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
16487         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16488         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
16489         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
16490         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
16491         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16492         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16493         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
16494         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
16495         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
16496         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
16497         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
16498         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
16499         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
16500         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
16501         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
16502         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
16503         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
16504         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
16505         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
16506         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
16507         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
16508         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
16509         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
16510         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
16511         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
16512         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
16513         original iterator is present in lastprivate clause or if
16514         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
16515         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16516         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
16517         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
16518         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
16519         if it is set, lookup var in outer contexts too.  Handle
16520         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
16521         to be implicitly determined firstprivate for task regions.
16522         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
16523         if it is set, lookup var in outer contexts too.  Set
16524         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
16525         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
16526         OMP_CLAUSE_UNTIED.  Take region_type as last argument
16527         instead of in_parallel and in_combined_parallel.
16528         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
16529         Adjust callers.
16530         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
16531         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
16532         (new_omp_context): Set default_kind to
16533         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
16534         (omp_region_type): New enum.
16535         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
16536         fields, add region_type.
16537         (new_omp_context): Take region_type as argument instead of is_parallel
16538         and is_combined_parallel.
16539         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
16540         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
16541         ctx->is_combined_parallel checks.
16542         (gimplify_omp_task): New function.
16543         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16544         OMP_CLAUSE_UNTIED.
16545         * omp-low.c (extract_omp_for_data): Use schedule(static)
16546         for schedule(auto).  Handle pointer and unsigned iterators.
16547         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
16548         Add loops argument.  Extract data for collapsed OMP_FOR loops.
16549         (expand_parallel_call): Assert sched_kind isn't auto,
16550         map runtime schedule to index 3.
16551         (struct omp_for_data_loop): New type.
16552         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
16553         Add loop, loops, collapse and iter_type fields.
16554         (workshare_safe_to_combine_p): Disallow combined for if
16555         iter_type is unsigned long long.  Don't combine collapse > 1 loops
16556         unless all bounds and steps are constant.  Adjust extract_omp_for_data
16557         caller.
16558         (expand_omp_for_generic): Handle pointer, unsigned and long long
16559         iterators.  Handle collapsed OMP_FOR loops.  Adjust
16560         for struct omp_for_data changes.  If libgomp function doesn't return
16561         boolean_type_node, add comparison of the return value with 0.
16562         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
16563         pointer, unsigned and long long iterators.  Adjust for struct
16564         omp_for_data changes.
16565         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
16566         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
16567         unsigned long long.  Allocate loops array, pass it to
16568         extract_omp_for_data.  For collapse > 1 loops use always
16569         expand_omp_for_generic.
16570         (omp_context): Add sfield_map and srecord_type fields.
16571         (is_task_ctx, lookup_sfield): New functions.
16572         (use_pointer_for_field): Use is_task_ctx helper.  Change first
16573         argument's type from const_tree to tree.  Clarify comment.
16574         In OMP_TASK disallow copy-in/out sharing.
16575         (build_sender_ref): Call lookup_sfield instead of lookup_field.
16576         (install_var_field): Add mask argument.  Populate both record_type
16577         and srecord_type if needed.
16578         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
16579         in srecord_type.
16580         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
16581         and DECL_FIELD_OFFSET.
16582         (scan_sharing_clauses): Adjust install_var_field callers.  For
16583         firstprivate clauses on explicit tasks allocate the var by value in
16584         record_type unconditionally, rather than by reference.
16585         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
16586         Use is_taskreg_ctx instead of is_parallel_ctx.
16587         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16588         (create_omp_child_function_name): Add task_copy argument, use
16589         *_omp_cpyfn* names if it is true.
16590         (create_omp_child_function): Add task_copy argument, if true create
16591         *_omp_cpyfn* helper function.
16592         (scan_omp_parallel): Adjust create_omp_child_function callers.
16593         Rename parallel_nesting_level to taskreg_nesting_level.
16594         (scan_omp_task): New function.
16595         (lower_rec_input_clauses): Don't run constructors for firstprivate
16596         explicit task vars which are initialized by *_omp_cpyfn*.
16597         Pass outer var ref to omp_clause_default_ctor hook if
16598         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
16599         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
16600         OMP_CLAUSE_REDUCTION_INIT.
16601         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
16602         avoid duplicate setting of fields.  Handle
16603         OMP_CLAUSE_PRIVATE_OUTER_REF.
16604         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
16605         copy-out if TREE_READONLY, only copy-in.
16606         (expand_task_copyfn): New function.
16607         (expand_task_call): New function.
16608         (struct omp_taskcopy_context): New type.
16609         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
16610         New functions.
16611         (lower_omp_parallel): Rename to...
16612         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16613         Call create_task_copyfn if srecord_type is needed.  Adjust
16614         sender_decl type.
16615         (task_shared_vars): New variable.
16616         (check_omp_nesting_restrictions): Warn if work-sharing,
16617         barrier, master or ordered region is closely nested inside OMP_TASK.
16618         Add warnings for barrier if closely nested inside of work-sharing,
16619         ordered, or master region.
16620         (scan_omp_1): Call check_omp_nesting_restrictions even for
16621         GOMP_barrier calls.  Rename parallel_nesting_level to
16622         taskreg_nesting_level.  Handle OMP_TASK.
16623         (lower_lastprivate_clauses): Even if some lastprivate is found on a
16624         work-sharing construct, continue looking for them on parent parallel
16625         construct.
16626         (lower_omp_for_lastprivate): Add lastprivate clauses
16627         to the beginning of dlist rather than end.  Adjust for struct
16628         omp_for_data changes.
16629         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
16630         not after it.  Handle collapsed OMP_FOR loops, adjust for
16631         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
16632         (get_ws_args_for): Adjust extract_omp_for_data caller.
16633         (scan_omp_for): Handle collapsed OMP_FOR
16634         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16635         (lower_omp_single_simple): If libgomp function doesn't return
16636         boolean_type_node, add comparison of the return value with 0.
16637         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
16638         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
16639         (parallel_nesting_level): Rename to...
16640         (taskreg_nesting_level): ... this.
16641         (is_taskreg_ctx): New function.
16642         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
16643         of is_parallel_ctx.
16644         (execute_lower_omp): Rename parallel_nesting_level to
16645         taskreg_nesting_level.
16646         (expand_omp_parallel): Rename to...
16647         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16648         Call omp_task_call for OMP_TASK regions.
16649         (expand_omp): Adjust caller, handle OMP_TASK.
16650         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
16651
16652         * bitmap.c (bitmap_default_obstack_depth): New variable.
16653         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
16654         if argument is NULL and bitmap_default_obstack is already initialized.
16655         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
16656         at the end.
16657         * matrix-reorg.c (matrix_reorg): Likewise.
16658
16659 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
16660
16661         * config/i386/i386.md (*indirect_jump): Macroize using P
16662         mode iterator.  Remove !TARGET_64BIT from insn constraints.
16663         (*tablejump_1): Ditto.
16664         (*indirect_jump_rex64): Remove insn pattern.
16665         (*tablejump_1_rex64): Ditto.
16666         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
16667         and eh_return_si insn patterns.
16668
16669 2008-06-06  Richard Guenther  <rguenther@suse.de>
16670
16671         * tree-ssa-structalias.c (merge_smts_into): Remove.
16672         (find_what_p_points_to): Do not bother to compute the
16673         points-to set for pt_anything pointers.
16674         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
16675         for pt_anything pointers is ok.
16676
16677 2008-06-06  Jan Hubicka  <jh@suse.cz>
16678
16679         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
16680
16681 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16682
16683         * cgraph.c: Fix typos in comments.
16684         (cgraph_availability_names): Fix string typo.
16685         * fold-const.c: Fix typos in comments.
16686         (fold_binary): Fix typo in warning.
16687         * genautomata.c: Fix typos in comments.
16688         (check_presence_pattern_sets): Fix typo in local variable.
16689         (output_description): Fix typo in output.
16690         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
16691         * hwint.h: Likewise.
16692         * matrix-reorg.c (check_allocation_function): Likewise.
16693         * omega.c (smooth_weird_equations): Likewise.
16694         * auto-inc-dec.c: Fix typos in comments.
16695         * bb-reorder.c: Likewise.
16696         * builtins.c: Likewise.
16697         * c-common.c: Likewise.
16698         * c-cppbuiltin.c: Likewise.
16699         * c-parser.c: Likewise.
16700         * c-pretty-print.c: Likewise.
16701         * cfgcleanup.c: Likewise.
16702         * cfgexpand.c: Likewise.
16703         * cfghooks.c: Likewise.
16704         * cfglayout.c: Likewise.
16705         * cfgloopmanip.c: Likewise.
16706         * cgraphunit.c: Likewise.
16707         * coverage.c: Likewise.
16708         * dbxout.c: Likewise.
16709         * df-byte-scan.c: Likewise.
16710         * df-core.c: Likewise.
16711         * df-problems.c: Likewise.
16712         * df-scan.c: Likewise.
16713         * dfp.c: Likewise.
16714         * dominance.c: Likewise.
16715         * domwalk.c: Likewise.
16716         * dse.c: Likewise.
16717         * dwarf2out.c: Likewise.
16718         * emit-rtl.c: Likewise.
16719         * et-forest.c: Likewise.
16720         * function.c: Likewise.
16721         * function.h: Likewise.
16722         * gcc.c: Likewise.
16723         * gcov-io.c: Likewise.
16724         * gcov.c: Likewise.
16725         * gcse.c: Likewise.
16726         * genattrtab.c: Likewise.
16727         * ggc-page.c: Likewise.
16728         * gimplify.c: Likewise.
16729         * gthr-lynx.h: Likewise.
16730         * haifa-sched.c: Likewise.
16731         * ipa-cp.c: Likewise.
16732         * ipa-inline.c: Likewise.
16733         * ipa-prop.h: Likewise.
16734         * ipa-pure-const.c: Likewise.
16735         * ipa-struct-reorg.c: Likewise.
16736         * ipa-struct-reorg.h: Likewise.
16737         * ipa-type-escape.c: Likewise.
16738         * ipa.c: Likewise.
16739         * loop-doloop.c: Likewise.
16740         * mips-tfile.c: Likewise.
16741         * mkmap-flat.awk: Likewise.
16742         * mkmap-symver.awk: Likewise.
16743         * modulo-sched.c: Likewise.
16744         * omp-low.c: Likewise.
16745         * optabs.c: Likewise.
16746         * optabs.h: Likewise.
16747         * opts.c: Likewise.
16748         * passes.c: Likewise.
16749         * postreload-gcse.c: Likewise.
16750         * postreload.c: Likewise.
16751         * predict.c: Likewise.
16752         * pretty-print.h: Likewise.
16753         * profile.c: Likewise.
16754         * protoize.c: Likewise.
16755         * ra-conflict.c: Likewise.
16756         * real.c: Likewise.
16757         * recog.c: Likewise.
16758         * regclass.c: Likewise.
16759         * regs.h: Likewise.
16760         * reload.c: Likewise.
16761         * rtl-error.c: Likewise.
16762         * rtlanal.c: Likewise.
16763         * scan.h: Likewise.
16764         * sched-rgn.c: Likewise.
16765         * see.c: Likewise.
16766         * stmt.c: Likewise.
16767         * target.h: Likewise.
16768         * tree-dfa.c: Likewise.
16769         * tree-eh.c: Likewise.
16770         * tree-flow-inline.h: Likewise.
16771         * tree-inline.c: Likewise.
16772         * tree-into-ssa.c: Likewise.
16773         * tree-loop-distribution.c: Likewise.
16774         * tree-nested.c: Likewise.
16775         * tree-parloops.c: Likewise.
16776         * tree-pass.h: Likewise.
16777         * tree-pretty-print.c: Likewise.
16778         * tree-profile.c: Likewise.
16779         * tree-scalar-evolution.c: Likewise.
16780         * tree-sra.c: Likewise.
16781         * tree-ssa-alias-warnings.c: Likewise.
16782         * tree-ssa-ccp.c: Likewise.
16783         * tree-ssa-coalesce.c: Likewise.
16784         * tree-ssa-dom.c: Likewise.
16785         * tree-ssa-dse.c: Likewise.
16786         * tree-ssa-forwprop.c: Likewise.
16787         * tree-ssa-live.c: Likewise.
16788         * tree-ssa-live.h: Likewise.
16789         * tree-ssa-loop-im.c: Likewise.
16790         * tree-ssa-loop-ivopts.c: Likewise.
16791         * tree-ssa-loop-niter.c: Likewise.
16792         * tree-ssa-loop-prefetch.c: Likewise.
16793         * tree-ssa-phiopt.c: Likewise.
16794         * tree-ssa-phiprop.c: Likewise.
16795         * tree-ssa-sccvn.c: Likewise.
16796         * tree-ssa-ter.c: Likewise.
16797         * tree-ssa-threadupdate.c: Likewise.
16798         * tree-ssa.c: Likewise.
16799         * tree-vect-analyze.c: Likewise.
16800         * tree-vect-transform.c: Likewise.
16801         * tree-vectorizer.c: Likewise.
16802         * tree-vn.c: Likewise.
16803         * tree-vrp.c: Likewise.
16804         * tree.c: Likewise.
16805         * tree.def: Likewise.
16806         * tree.h: Likewise.
16807         * unwind-dw2-fde.c: Likewise.
16808         * unwind.inc: Likewise.
16809         * value-prof.c: Likewise.
16810         * vmsdbgout.c: Likewise.
16811
16812 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
16813
16814         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
16815         always place FP constants in the TOC for TARGET_POWERPC64.
16816         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
16817
16818 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
16819
16820         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
16821         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
16822         enable for TARGET_E500_DOUBLE.
16823         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
16824         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
16825         floating-point modes like integer modes for E500 double.
16826         (rs6000_legitimate_offset_address_p): Likewise.
16827         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
16828         addressing for DDmode for E500 double.
16829         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
16830         modes as using 64-bits of registers for E500 double.
16831         (spe_build_register_parallel): Do not handle DDmode or TDmode.
16832         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
16833         specially for E500 double.
16834         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
16835         TDmode for E500 double.
16836         (rs6000_gimplify_va_arg): Only handle SDmode in registers
16837         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
16838         (rs6000_split_multireg_move): Do not handle TDmode specially for
16839         E500 double.
16840         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
16841         using 64-bit registers for E500 double.
16842         (emit_frame_save): Do not handle DDmode specially for E500 double.
16843         (gen_frame_mem_offset): Likewise.
16844         (rs6000_function_value): Do not call spe_build_register_parallel
16845         for DDmode or TDmode.
16846         (rs6000_libcall_value): Likewise.
16847         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
16848         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
16849         for E500 double.
16850
16851 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
16852
16853         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
16854         in comments.
16855
16856 2008-06-04  Junjie Gu <jgu@tensilica.com>
16857
16858         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
16859         comparison for frame pointers.
16860
16861 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16862
16863         PR target/27386
16864         * config/avr/avr.h (PUSH_ROUNDING): Remove.
16865
16866 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16867
16868         PR target/30243
16869         * builtins.c (expand_builtin_signbit): Don't take lowpart when
16870         register is already smaller or equal to required mode.
16871
16872 2008-06-04  Xinliang David Li  <davidxl@google.com>
16873
16874         * tree-call-cdce.c: New file.
16875         (cond_dead_built_in_calls): New static variable.
16876         (input_domain): New struct.
16877         (check_pow): New function.
16878         (check_builtin_call): Ditto.
16879         (check_target_format): Ditto.
16880         (is_call_dce_candidate): Ditto.
16881         (gen_one_condition): Ditto.
16882         (gen_conditions_for_domain): Ditto.
16883         (get_domain): Ditto.
16884         (gen_conditions_for_pow_cst_base): Ditto.
16885         (gen_conditions_for_pow_int_base): Ditto.
16886         (gen_conditions_for_pow): Ditto.
16887         (get_no_error_domain): Ditto.
16888         (gen_shrink_wrap_conditions): Ditto.
16889         (shrink_wrap_one_built_in_call): Ditto.
16890         (shink_wrap_conditional_dead_built_in_calls): Ditto.
16891         (tree_call_cdce): Ditto.
16892         (gate_call_cdce): Ditto.
16893         (pass_call_cdce): New gimple pass.
16894         * passes.c: (init_optimization_passes): New pass.
16895         * tree-pass.h: New pass declaration.
16896         * opts.c (decode_options): New flag setting.
16897         * common.opt: Add -ftree-builtin-call-dce flag.
16898         * Makefile.in: Add new source file.
16899         * tempvar.def: New tv_id.
16900         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
16901
16902 2008-06-04  Richard Guenther  <rguenther@suse.de>
16903
16904         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
16905         (is_call_clobbered): Always check var_ann->call_clobbered.
16906         (mark_call_clobbered): Always set var_ann->call_clobbered.
16907         (clear_call_clobbered): Always clear var_ann->call_clobbered.
16908         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
16909         (reset_alias_info): Clear call clobbering info on MTAGs and
16910         globals as well.
16911         (set_pt_anything): Set pt_global_mem.
16912         (create_tag_raw): Adjust comment.
16913         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
16914
16915 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
16916             Maxim Kuvyrkov  <maxim@codesourcery.com>
16917
16918         * config/m68k/m68k.opt (mxgot): New option.
16919         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
16920         (m68k_output_addr_const_extra): New.
16921         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
16922         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
16923         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
16924         * doc/invoke.texi (M680x0 Options): Document -mxgot.
16925
16926 2008-06-04  Richard Guenther  <rguenther@suse.de>
16927
16928         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
16929         negative or non-representable offsets.
16930
16931 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
16932
16933         * config/i386/i386.c (ix86_gen_leave): New.
16934         (ix86_gen_pop1): Likewise.
16935         (ix86_gen_add3): Likewise.
16936         (ix86_gen_sub3): Likewise.
16937         (ix86_gen_sub3_carry): Likewise.
16938         (ix86_gen_one_cmpl2): Likewise.
16939         (ix86_gen_monitor): Likewise.
16940         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
16941         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
16942         ix86_gen_one_cmpl2 and ix86_gen_monitor.
16943         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
16944         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
16945         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
16946         (ix86_expand_epilogue): Updated.
16947         (print_operand): Handle integer register operand for 'z'.
16948         (ix86_expand_strlensi_unroll_1): Likewise.
16949         (ix86_expand_strlen): Likewise.
16950         (ix86_expand_builtin): Likewise.
16951         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
16952         mov{q}/mov{l} and add{q}/add{l}.
16953
16954 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16955
16956         * config/i386/i386.md (P): New mode iterator.
16957         (SFmode push_operand splitter): Macroize DImode and SImode pushes
16958         using P mode iterator.
16959         (DFmode push_operand splitter): Ditto.
16960         (XFmode push_operand splitter): Ditto.
16961         (DFmode float_extend SFmode push_operand splitter): Ditto.
16962         (XFmode float_extend SFmode push_operand splitter): Do not generate
16963         SImode pushes for 64bit target.  Macroize Dimode and SImode
16964         pushes using P mode iterator.
16965         (XFmode float_extend DFmode push_operand splitter): Ditto.
16966
16967 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16968
16969         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
16970         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
16971         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
16972         return type to int.
16973         (ix86_call_abi_override): Remove check for call_used_regs.
16974
16975 2008-06-03  Richard Guenther  <rguenther@suse.de>
16976
16977         * tree-ssa-structalias.c (find_func_aliases): Add constraints
16978         for the lhs of calls if the return type contains pointers.
16979
16980 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16981
16982         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
16983         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
16984         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
16985         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
16986         of cfun and DEFAULT_ABI to deceide abi mode.
16987         (DEFAULT_ABI): New.
16988         (REG_PARM_STACK_SPACE): Removed.
16989         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
16990         (STACK_BOUNDARY): Use default target to deceide stack boundary.
16991         * config/i386/i386-protos.h (ix86_cfun_abi): New.
16992         (ix86_function_abi): Likewise.
16993         (ix86_function_type_abi): Likewise.
16994         (ix86_call_abi_override): Likewise.
16995         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
16996         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
16997         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
16998         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
16999         specific defines.
17000         (X86_64_REGPARM_MAX): New.
17001         (X86_64_SSE_REGPARM_MAX): New.
17002         (X64_REGPARM_MAX): New.
17003         (X64_SSE_REGPARM_MAX): New.
17004         (X86_32_REGPARM_MAX): New.
17005         (X86_32_SSE_REGPARM_MAX): New.
17006         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
17007         (ix86_function_regparm): Handle user calling abi.
17008         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
17009         by DEFAULT_ABI versus SYSV_ABI check.
17010         (ix86_reg_parm_stack_space): New.
17011         (ix86_function_type_abi): New.
17012         (ix86_call_abi_override): New.
17013         (ix86_function_abi): New.
17014         (ix86_cfun_abi): New.
17015         (init_cumulative_args): Call abi specific initialization.
17016         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
17017         (function_arg_64): Extend SSE_REGPARM_MAX check.
17018         (function_arg (): Remove TARGET_64BIT_MS_ABI.
17019         (ix86_pass_by_reference): Likewise.
17020         (ix86_function_value_regno_p): Likewise.
17021         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
17022         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
17023         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
17024         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
17025         (setup_incoming_varargs_64): Adjust regparm for call abi.
17026         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
17027         (ix86_va_start): Likewise.
17028         (ix86_gimplify_va_arg): Likewise.
17029         (ix86_expand_prologue): Likewise.
17030         (output_pic_addr_const): Likewise.
17031         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
17032         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
17033         (x86_output_mi_thunk): Likewise.
17034         (x86_function_profiler): Likewise.
17035         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
17036         (SYSV_ABI, MS_ABI): New constants.
17037         (DEFAULT_ABI): New.
17038         (init_regs): Add prototype of function in regclass.c file.
17039         (OVERRIDE_ABI_FORMAT): New.
17040         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
17041         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
17042         (OUTGOING_REG_PARM_STACK_SPACE): New.
17043         (ix86_reg_parm_stack_space): New prototype.
17044         (CUMULATIVE_ARGS): Add call_abi member.
17045         (machine_function): Add call_abi member.
17046         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
17047         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
17048
17049 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
17050
17051         PR target/34879
17052         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
17053         (avr_builtin_setjmp_frame_value): New function.
17054         * config/avr/avr.md (nonlocal_goto_receiver): Define.
17055         (nonlocal_goto): Define.
17056
17057 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
17058
17059         * config/mips/mips.c (mips_emit_loadgp): Return early if
17060         there is nothing do to, otherwise emit a blockage if
17061         !TARGET_EXPLICIT_RELOCS || crtl->profile.
17062         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
17063
17064 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17065
17066         * configure.ac: Drop unneeded backslash ending up in config.in.
17067         * acinclude.m4: Likewise.
17068         * config.in: Regenerate.
17069
17070 2008-05-26  Jan Hubicka  <jh@suse.cz>
17071
17072         * predict.c (maybe_hot_frequency_p): Break out of...
17073         (maybe_hot_bb_p): ... here.
17074         (maybe_hot_edge_p): New.
17075         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
17076         * basic-block.h (maybe_hot_edge_p): Declare.
17077
17078 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17079
17080         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
17081         (*cmpfp_<mode>_cc): Ditto.
17082         (*fp_jcc_8<mode>_387): Ditto.
17083         (*fop_<MODEF:mode>_2_i387): Ditto.
17084         (*fop_<MODEF:mode>_3_i387): Ditto.
17085         (*fop_xf_2_i387): Ditto.
17086         (*fop_xf_3_i387): Ditto.
17087
17088 2008-06-02  Tomas Bily  <tbily@suse.cz>
17089
17090         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
17091
17092 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17093
17094         * config/mips/mips.c (mips_valid_offset_p): New function.
17095         (mips_valid_lo_sum_p): Likewise.
17096         (mips_classify_address): Use them.
17097         (mips_force_address): New function.
17098         (mips_legitimize_address): Use it.
17099         * config/mips/mips.md (MOVE128): New mode iterator.
17100         (movtf): Require TARGET_64BIT.  Remove empty strings.
17101         (*movtf_internal): Rename to...
17102         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
17103         of "R" and use {,fp}{load,store} attributes instead of "multi".
17104         Use a separate define_split.
17105         (*movtf_mips16): New pattern.
17106
17107 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17108
17109         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
17110         * config/mips/mips.c (mips_expand_before_return): New function.
17111         (mips_expand_epilogue): Call it.
17112         * config/mips/mips.md (return): Turn into a define_expand.
17113         (*return): New insn.
17114
17115 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17116
17117         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
17118         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
17119         functions.  Do not emit uses and clobbers of CONCATs; individually
17120         use and clobber their operands.
17121         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
17122         gen_clobber, emit_use and gen_use.
17123         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
17124         (expand_builtin_return): Likewise.
17125         * cfgbuild.c (count_basic_blocks): Likewise.
17126         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
17127         * explow.c (emit_stack_restore): Likewise.
17128         * expmed.c (extract_bit_field_1): Likewise.
17129         * expr.c (convert_move, emit_move_complex_parts): Likewise.
17130         (emit_move_multi_word, store_constructor): Likewise.
17131         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
17132         (thread_prologue_and_epilogue_insns): Likewise.
17133         * lower-subreg.c (resolve_simple_move): Likewise.
17134         * optabs.c (widen_operand, expand_binop): Likewise.
17135         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
17136         * reload.c (find_reloads): Likewise.
17137         * reload1.c (eliminate_regs_in_insn): Likewise.
17138         * stmt.c (expand_nl_goto_receiver): Likewise.
17139         * config/alpha/alpha.md (builtin_longjmp): Likewise.
17140         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
17141         * config/arm/arm.c (arm_load_pic_register): Likewise.
17142         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
17143         * config/arm/arm.md (untyped_return): Likewise.
17144         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
17145         * config/avr/avr.c (expand_prologue): Likewise.
17146         * config/bfin/bfin.c (do_unlink): Likewise.
17147         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
17148         * config/cris/cris.c (cris_expand_prologue): Likewise.
17149         * config/darwin.c (machopic_indirect_data_reference): Likewise.
17150         (machopic_legitimize_pic_address): Likewise.
17151         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
17152         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
17153         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
17154         (ix86_expand_convert_uns_didf_sse): Likewise.
17155         (ix86_expand_vector_init_general): Likewise.
17156         * config/ia64/ia64.md (eh_epilogue): Likewise.
17157         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
17158         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
17159         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
17160         (config/iq2000/iq2000.c): Likewise.
17161         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
17162         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
17163         (builtin_longjmp): Likewise.
17164         * config/mn10300/mn10300.md (call, call_value): Likewise.
17165         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
17166         * config/pdp11/pdp11.md (abshi2): Likewise.
17167         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
17168         * config/s390/s390.c (s390_emit_prologue): Likewise.
17169         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
17170         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
17171         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
17172         * config/sh/sh.c (prepare_move_operands): Likewise.
17173         (output_stack_adjust, sh_expand_epilogue): Likewise.
17174         (sh_set_return_address, sh_expand_t_scc): Likewise.
17175         * config/sparc/sparc.c (load_pic_register): Likewise.
17176         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
17177         * config/spu/spu.c (spu_expand_epilogue): Likewise.
17178         * config/v850/v850.c (expand_epilogue): Likewise.
17179
17180 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
17181
17182         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
17183         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
17184         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
17185         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
17186         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
17187         stack pointer register.
17188         (output_movhi): Remove code for interrupt specific writing to the
17189         stack pointer register.
17190
17191 2008-05-31  Richard Guenther  <rguenther@suse.de>
17192
17193         PR tree-optimization/34244
17194         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
17195         (tree_expr_nonzero_warnv_p): Likewise.
17196         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
17197         ssa_name_nonnegative_p.
17198         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
17199         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
17200         not tree_expr_nonzero_warnv_p.
17201
17202         PR tree-optimization/36262
17203         Revert
17204         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
17205
17206         PR tree-optimization/34244
17207         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
17208         (record_numbers_of_iterations): New function.
17209         (execute_vrp): Cache the numbers of iterations of loops.
17210         * tree-scalar-evolution.c (scev_reset_except_niters):
17211         New function.
17212         (scev_reset): Use scev_reset_except_niters.
17213         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
17214
17215 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
17216
17217         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
17218         __WORKAROUND_RETS when appropriate.
17219
17220 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17221
17222         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
17223         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
17224         mode iterator.
17225         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
17226         *fop_df_comm_sse insn patterns using MODEF mode iterator.
17227         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
17228         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
17229         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
17230         *fop_df_1_mixed insn patterns using MODEF mode iterator.
17231         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
17232         *fop_df_1_sse insn patterns using MODEF mode iterator.
17233         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
17234         *fop_df_1_i387 insn patterns using MODEF mode iterator.
17235         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
17236         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
17237         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
17238         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
17239         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
17240         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
17241         (*fop_xf_4_i387): Use <MODE> for mode attribute.
17242         (*fop_xf_5_i387): Ditto.
17243         (*fop_xf_6_i387): Ditto.
17244
17245 2008-05-30  Richard Guenther  <rguenther@suse.de>
17246
17247         * builtins.c (build_string_literal): Avoid generating
17248         a non-gimple_val result.
17249
17250 2008-05-30  DJ Delorie  <dj@redhat.com>
17251
17252         * exec-tool.in: Use an environment variable (private) instead of a
17253         file (shared) as a semaphore, so as to not break parallel builds.
17254
17255 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17256
17257         * optabs.c (maybe_encapsulate_block): Remove.
17258         (emit_libcall_block): Adjust accordingly.
17259         * optabs.h (maybe_encapsulate_block): Remove prototype.
17260
17261         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
17262         Don't use maybe_encapsulate_block.
17263
17264 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17265
17266         * config/rs6000/rs6000.c (rs6000_legitimize_address,
17267         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
17268         rtx is a SYMBOL_REF before calling get_pool_constant.
17269
17270 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
17271
17272         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
17273
17274 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
17275
17276         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
17277         rather than OS names to choose INO_T_EQ definition.
17278         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
17279         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
17280
17281 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
17282
17283         PR target/36348
17284         * config/darwin-f.c: New.
17285         * config/t-darwin: Added rule to build darwin-f.o.
17286         * config.gcc: Defined new variable, fortran_target_objs.
17287         (*-*-darwin*): Set fortran_target_objs.
17288         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
17289         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
17290         * configure: Regenerated.
17291
17292 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
17293
17294         PR target/35771
17295         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
17296         canonical type if needed.
17297
17298 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17299
17300         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
17301
17302 2008-05-29  Richard Guenther  <rguenther@suse.de>
17303
17304         PR tree-optimization/36343
17305         PR tree-optimization/36346
17306         PR tree-optimization/36347
17307         * tree-flow.h (clobber_what_p_points_to): Declare.
17308         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
17309         pointed-to variable is dereferenced is irrelevant to whether
17310         the pointer can access the pointed-to variable.
17311         (clobber_what_p_points_to): New function.
17312         * tree-ssa-alias.c (set_initial_properties): Use it.
17313         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
17314         call clobber check for NMTs.
17315
17316 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17317
17318         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
17319         for printing gcov_type.
17320
17321 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17322
17323         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
17324         and the eh region information.
17325         * value-prof.c (gimple_move_stmt_histograms): New function.
17326         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
17327
17328 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
17329
17330         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
17331
17332 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
17333
17334         * value-prof.c (tree_ic_transform): Print counts.
17335         * tree-profile.c (tree_gen_ic_func_profiler):
17336         Clear __gcov_indreict_call_callee variable to avoid misattribution
17337         of the profile.
17338
17339 2008-05-28  Rafael Espíndola  <espindola@google.com>
17340
17341         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
17342         invalid sharing.
17343
17344 2008-05-28  Richard Guenther  <rguenther@suse.de>
17345
17346         PR tree-optimization/36339
17347         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
17348         and clobbering code out of the loop.
17349
17350 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17351
17352         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
17353         letters defined.
17354
17355         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
17356         s390_contiguous_bitmask_p, s390_symref_operand_p,
17357         s390_check_symref_alignment, s390_reload_larl_operand,
17358         s390_reload_symref_address): New functions.
17359         (s390_branch_condition_mnemonic): Support compare and branch
17360         instructions.
17361         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
17362         and 'W' constraints.
17363         (s390_secondary_reload): Add secondary reloads for unaligned
17364         symbol refs or symbol refs to floating point or QI/TI mode
17365         integer values.
17366         (legitimate_address_p): Accept symbol references as addresses.
17367         (s390_expand_insv): Use rotate and insert selected bits
17368         instruction for insv when building for z10.
17369         (print_operand_address): Handle symbol ref addresses.
17370         (print_operand): Output modifier 'c' added for signed byte values.
17371         (s390_encode_section_info): Mark symbol refs with
17372         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
17373
17374         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
17375         (length attribute): RRF, RRR have 4 byte length.
17376         (FPALL, INTALL): New mode iterators added.
17377         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
17378         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
17379         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
17380         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
17381         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
17382         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
17383         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
17384         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
17385         instructions.
17386         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
17387         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
17388         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
17389         reload<INTALL:mode><P:mode>_toreg_z10,
17390         reload<FPALL:mode><P:mode>_tomem_z10,
17391         reload<FPALL:mode><P:mode>_toreg_z10,
17392         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
17393         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
17394         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
17395         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
17396         definition.
17397         (movmem, clrmem, cmpmem): New splitters added.
17398
17399         * config/s390/predicates.md (larl_operand): Use
17400         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
17401         SYMBOL_REF_ALIGN1_P.
17402         (s390_signed_integer_comparison,
17403         s390_unsigned_integer_comparison): New predicates.
17404
17405         * config/s390/s390-protos.h (s390_check_symref_alignment,
17406         s390_contiguous_bitmask_p, s390_reload_larl_operand,
17407         s390_reload_symref_address,
17408         s390_compare_and_branch_condition_mask): Prototypes added.
17409
17410         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
17411         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
17412         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
17413
17414 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17415
17416         * config/s390/s390.c (z10_cost): New cost function for z10.
17417         (s390_handle_arch_option, override_options): Support -march=z10 switch.
17418         (s390_issue_rate): Adjust issue rate for z10.
17419         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
17420         (processor_flags): Add PF_Z10.
17421         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
17422         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
17423         * gcc/config.gcc: Add z10.
17424
17425 2008-05-28  Richard Guenther  <rguenther@suse.de>
17426
17427         PR tree-optimization/36291
17428         * tree-flow. h (struct gimple_df): Remove var_anns member.
17429         * tree-flow-inline.h (gimple_var_anns): Remove.
17430         (var_ann): Simplify.
17431         * tree-dfa.c (create_var_ann): Simplify.
17432         (remove_referenced_var): Clear alias info from var_anns of globals.
17433         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
17434         (delete_tree_ssa): Clear alias info from var_anns of globals.
17435         Do not free var_anns.
17436         (var_ann_eq): Remove.
17437         (var_ann_hash): Likewise.
17438
17439 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
17440
17441         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
17442         and loongson2f entries.
17443         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
17444         * config/mips/mips.h (processor_type): Add Loongson-2E
17445         and Loongson-2F entries.
17446         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
17447         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
17448         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
17449         * doc/invoke.texi (MIPS Options): Document loongson2e
17450         and loongson2f processor names.
17451
17452 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17453
17454         PR target/35767
17455         PR target/35771
17456         * config/i386/i386.c (ix86_function_arg_boundary): Use
17457         alignment of canonical type.
17458         (ix86_expand_vector_move): Check unaligned memory access for
17459         all SSE modes.
17460
17461 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17462
17463         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
17464         Moved to the front of file.
17465
17466 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
17467             H.J. Lu  <hongjiu.lu@intel.com>
17468
17469         * dwarf2out.c (current_fde): New.
17470         (add_cfi): Use it.
17471         (lookup_cfa:): Likewise.
17472         (dwarf2out_end_epilogue): Likewise.
17473         (dwarf2out_note_section_used): Likewise.
17474
17475 2008-05-27  Michael Matz  <matz@suse.de>
17476
17477         PR c++/27975
17478         * c.opt (Wenum-compare): New warning option.
17479         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
17480
17481 2008-05-27  Michael Matz  <matz@suse.de>
17482
17483         PR middle-end/36326
17484         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
17485         non-BLKmode types.
17486         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
17487         into memory as tail calls.
17488
17489 2008-05-27  Richard Guenther  <rguenther@suse.de>
17490
17491         PR tree-optimization/36339
17492         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
17493         pointers cause all addressable variables to be call clobbered.
17494
17495 2008-05-27  Richard Guenther  <rguenther@suse.de>
17496
17497         PR tree-optimization/36245
17498         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
17499
17500 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17501
17502         * config/s390/s390.md: Replace all occurences of the 'm'
17503         constraint with 'RT'.
17504
17505 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17506
17507         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
17508         definitions added.
17509         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
17510         "*movdi_64".
17511         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
17512         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
17513         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
17514
17515 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17516
17517         * reload.c: (find_reloads): Skip alternatives according to the
17518         "enabled" attribute. Constify the constraint variable.
17519         * recog.c (get_attr_enabled): Add default implementation.
17520         (extract_insn): Set the alternative_enabled_p array
17521         in the recog_data struct.
17522         (preprocess_constraints, constrain_operands): Skip
17523         alternatives according to the "enabled" attribute
17524         * recog.h (struct recog_data): New field alternative_enabled_p.
17525         (skip_alternative): New inline function.
17526         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
17527         (record_reg_classes): Skip alternative according to the
17528         "enabled" attribute.
17529
17530         * doc/md.texi: Add documention for the "enabled" attribute.
17531
17532 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17533
17534         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
17535         * postreload.c (reload_cse_simplify_operands): Replace 'm'
17536         constraint with TARGET_MEM_CONSTRAINT.
17537         * recog.c (asm_operand_ok, preprocess_constraints,
17538         constrain_operands): Likewise.
17539         * regclass.c (record_reg_classes): Likewise.
17540         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
17541         * reload1.c (maybe_fix_stack_asms): Likewise.
17542         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
17543         * recog.h: Adjust comment.
17544         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
17545         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
17546         * doc/md.texi: Add a note to description of 'm' constraint.
17547         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
17548
17549 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
17550
17551         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
17552         that the bitfield is of integral type before testing its precision.
17553
17554 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17555             Sa Liu  <saliu@de.ibm.com>
17556
17557         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
17558         __modti3, __udivti3, __umodti3 and __udivmodti4.
17559         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
17560         that implement TImode mul and div functions.
17561         * config/spu/multi3.c: New. Implement __multi3.
17562         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
17563         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
17564         functions on SPU.
17565
17566 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
17567
17568         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
17569         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
17570         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
17571         tls_sysv_suffix): New mode and mode attribute iterators.
17572         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
17573         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
17574         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
17575         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
17576         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
17577         iterators.
17578
17579 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
17580
17581         PR tree-optimization/36329
17582         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
17583         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
17584         * cgraphbuild.c (initialize_inline_failed): Use the latter
17585         macro in lieu of the former.
17586         * ipa-inline.c (cgraph_mark_inline): Likewise.
17587         (cgraph_decide_inlining_of_small_function): Likewise.
17588         (cgraph_decide_inlining): Likewise.
17589         (cgraph_decide_inlining_incrementally): Likewise.
17590
17591 2008-05-26  Tristan Gingold  <gingold@adacore.com>
17592             Anatoly Sokolov  <aesok@post.ru>
17593
17594         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
17595         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
17596         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
17597         optimization for 'avr6' architecture.
17598
17599 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
17600
17601         PR target/34932
17602         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
17603
17604 2008-05-26  Richard Guenther  <rguenther@suse.de>
17605
17606         * tree-ssa-sccvn.c (expr_has_constants): Declare.
17607         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
17608
17609 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17610
17611         PR middle-end/36253
17612         * caller-save.c (insert_restore): Verify alignment of spill space.
17613         (insert_save): Likewise.
17614         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
17615         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
17616         (STACK_SLOT_ALIGNMENT): Likewise.
17617         * function.c (LOCAL_ALIGNMENT): Removed.
17618         (get_stack_local_alignment): New.
17619         (assign_stack_local): Use it.  Set alignment on stack slot.
17620         (assign_stack_temp_for_type): Use get_stack_local_alignment.
17621         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
17622         (STACK_SLOT_ALIGNMENT): New.
17623         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
17624         stack slot in XFmode.
17625
17626         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
17627
17628 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
17629
17630         PR/36321
17631         * config/i386/i386.md (allocate_stack_worker_64): Make sure
17632         argument operand in rax isn't removed.
17633
17634 2008-05-26  Richard Guenther  <rguenther@suse.de>
17635
17636         PR middle-end/36300
17637         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
17638         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
17639
17640 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17641
17642         PR bootstrap/36331
17643         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
17644
17645 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
17646
17647         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
17648         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
17649
17650 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17651
17652         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
17653         build a trampoline if we don't want one.
17654         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
17655         return zero for nested functions if we don't want a trampoline.
17656
17657 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17658
17659         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
17660
17661 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17662
17663         PR fortran/18428
17664         * c.opt: Removed undocumented option '-lang-fortran'.
17665         * c-common.h: Removed global variable 'lang_fortran'.
17666         * c-opts.c (c_common_handle_option): Removed code to handle
17667         option '-lang-fortran'. Updated includes.
17668         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
17669         definition of '__GFORTRAN__'.
17670         (define__GNUC__): Reimplemented to use BASEVER and
17671         cpp_define_formatted.
17672         (builtin_define_with_value_n): Removed.
17673         * c-incpath.h: Renamed to ...
17674         * incpath.h: ... this.
17675         * c-incpath.c: Renamed to ...
17676         * incpath.c: ... this. Updated includes.
17677         * fix-header.c: Updated includes.
17678         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
17679         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
17680         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
17681
17682 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17683
17684         * tree.h: Update the table of flags used on tree nodes.
17685         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
17686         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
17687         (FORCED_LABEL): Add access check.
17688         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
17689         (ASM_INPUT_P): Likewise.
17690         (ASM_VOLATILE_P): Likewise.
17691         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
17692         (OMP_SECTION_LAST): Access private_flag directly.
17693         (OMP_RETURN_NOWAIT): Likewise.
17694         (OMP_PARALLEL_COMBINED): Likewise.
17695         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
17696         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
17697         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
17698         deprecated_flag directly.
17699
17700 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17701
17702         * final.c (frame_pointer_needed): Removed.
17703         * flags.h (frame_pointer_needed): Likewise.
17704
17705         * function.h (rtl_data): Add frame_pointer_needed.
17706         (frame_pointer_needed): New.
17707
17708 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
17709
17710         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
17711
17712 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
17713
17714         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
17715         SRC is a REG.
17716
17717 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
17718
17719         * c-common.c (strip_array_types): Move function to..
17720         * tree.c: ..here.
17721         (get_inner_array_type): Delete.
17722         * c-common.h (strip_array_types): Move declaration to..
17723         * tree.h: ..here.
17724         (get_inner_array_type): Delete.
17725         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
17726         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
17727         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
17728         * config/pa/pa.c (emit_move_sequence): Likewise.
17729
17730 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17731
17732         * config/i386/i386.md (*sse_prologue_save_insn): Set length
17733         attribute to 34.
17734
17735 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
17736
17737         * function.c: Include target hook for nonlocal_goto frame value.
17738
17739 2008-05-24  Richard Guenther  <rguenther@suse.de>
17740
17741         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
17742         variable can be only accessed through a pointer or a union.
17743
17744 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17745
17746         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
17747         * doc/extend.texi: Likewise.
17748
17749 2008-05-23  DJ Delorie  <dj@redhat.com>
17750
17751         * config/m32c/jump.md (untyped_call): Add.
17752
17753         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
17754         for A24 to PSImode.
17755         (m32c_address_cost): Detail costs for indirect offsets.
17756
17757 2008-05-23  Rafael Espíndola  <espindola@google.com>
17758
17759         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
17760         if a node is a SUBREG.
17761         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
17762         is a SUBREG.
17763
17764 2008-05-23  Paul Brook  <paul@codesourcery.com>
17765             Carlos O'Donell  <carlos@codesourcery.com>
17766
17767         * doc/extend.texi: Clarify use of __attribute__((naked)).
17768         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17769         * target.h (gcc_target): Add allocate_stack_slots_for_args.
17770         * function.c (use_register_for_decl): Use
17771         targetm.calls.allocate_stack_slots_for_args.
17772         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17773         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
17774         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
17775
17776 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
17777
17778         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
17779
17780 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
17781
17782         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
17783         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
17784         is only rounded once.
17785
17786 2008-05-23  Richard Guenther  <rguenther@suse.de>
17787
17788         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
17789
17790 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
17791             Jakub Jelinek  <jakub@redhat.com>
17792
17793         PR target/36079
17794         * configure.ac: Handle --enable-cld.
17795         * configure: Regenerated.
17796         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
17797         * config/i386/i386.h (struct machine_function): Add needs_cld field.
17798         (ix86_current_function_needs_cld): New define.
17799         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
17800         (cld): New isns pattern.
17801         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
17802         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
17803         * config/i386/i386.opt (mcld): New option.
17804         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
17805         TARGET_CLD and ix86_current_function_needs_cld.
17806         (override_options): Use -mcld by default for 32-bit code if
17807         USE_IX86_CLD.
17808
17809         * doc/install.texi (Options specification): Document --enable-cld.
17810         * doc/invoke.texi (Machine Dependent Options)
17811         [i386 and x86-64 Options]: Add -mcld option.
17812         (Intel 386 and AMD x86-64 Options): Document -mcld option.
17813
17814 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
17815         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
17816         (return_in_memory_64): Likewise.
17817         (return_in_memory_ms_64): Likewise.
17818
17819 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17820
17821         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
17822         * builtins.c (fold_builtin_fpclassify): New.
17823         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
17824         * builtins.def (BUILT_IN_FPCLASSIFY): New.
17825         * c-common.c (handle_type_generic_attribute): Adjust to accept
17826         fixed arguments before an elipsis.
17827         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
17828         * doc/extend.texi: Document __builtin_fpclassify.
17829
17830 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
17831
17832         * omp-low.c (gate_expand_omp_ssa): Remove.
17833         (pass_expand_omp_ssa): Remove.
17834         (gate_expand_omp): Do not check for flag_openmp_ssa.
17835         * common.opt (-fopenmp-ssa): Remove.
17836         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
17837
17838 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
17839
17840         * config/sh/sh.opt (mfixed-range): New option.
17841         * config/sh/sh-protos.h (sh_fix_range): Declare.
17842         * config/sh/sh.c (sh_fix_range): New function.
17843         * config/sh/sh.h (sh_fixed_range_str): Declare.
17844         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
17845         is not empty.
17846         * doc/invoke.texi (SH Options): Document -mfixed-range.
17847
17848 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
17849
17850         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
17851         it before the redeclaration.
17852
17853 2008-05-22  Anatoly Sokolov <aesok@post.ru>
17854
17855         * config/avr/avr.c (get_sequence_length): Add new function.
17856         (expand_prologue, expand_epilogue): Remove duplicate code.
17857
17858 2008-05-22  Rafael Espíndola  <espindola@google.com>
17859
17860         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
17861         sharing.
17862
17863 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17864
17865         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
17866         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
17867
17868         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
17869         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
17870         (vect_update_misalignment_for_peel): Likewise.
17871         (vector_alignment_reachable_p): Likewise.
17872         * tree-vect-transform.c (vectorizable_load): Likewise.
17873         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
17874         (get_vectype_for_scalar_type): Pass mode of scalar_type
17875         to UNITS_PER_SIMD_WORD.
17876
17877         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
17878         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
17879         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
17880         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
17881         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
17882
17883 2008-05-22  Ira Rosen  <irar@il.ibm.com>
17884
17885         PR tree-optimization/36293
17886         * tree-vect-transform.c (vect_transform_strided_load): Don't check
17887         if the first load must be skipped because of a gap.
17888
17889 2008-05-22  Richard Guenther  <rguenther@suse.de>
17890
17891         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
17892         more cases of offset disambiguation that is possible if
17893         strict-aliasing rules apply.
17894         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
17895         for basic offset and type-based disambiguation.
17896
17897 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17898
17899         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
17900         ix86_expand_vector_set on V16QImode for SSE4.1.
17901
17902 2008-05-21  Tom Tromey  <tromey@redhat.com>
17903
17904         * c.opt (Wimport): Mark as undocumented.
17905         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
17906         -Wno-import.
17907         (Warning Options): Likewise.
17908         * doc/cppopts.texi: Don't mention -Wimport.
17909
17910 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
17911
17912         PR tree-optimization/36287
17913         PR tree-optimization/36286
17914         * lambda-code.c (build_access_matrix): Do not use the loop->num
17915         for computing the number of induction variables: use the loop depth
17916         instead.
17917
17918 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
17919
17920         PR/36280
17921         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
17922         option -f(no-)leading-underscore.
17923
17924 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17925
17926         * config/i386/i386.c (ix86_expand_vector_init_general): Use
17927         GET_MODE_NUNITS (mode).
17928
17929 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
17930
17931         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
17932         (-mmulhw): Add 464 to description.
17933         (-mdlmzb): Likewise.
17934         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
17935         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
17936         464fp entries.
17937         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
17938         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
17939         * config/rs6000/rs6000.md: Update comments for 464.
17940
17941 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
17942
17943         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
17944
17945 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17946
17947         * config/i386/sse.md (vec_extractv4sf): Removed.
17948         (vec_extractv2df): Likewise.
17949         (vec_extractv2di): Likewise.
17950         (vec_extractv4si): Likewise.
17951         (vec_extractv8hi): Likewise.
17952         (vec_extractv16qi): Likewise.
17953         (vec_extract<mode>): New.
17954
17955 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17956
17957         * config/i386/sse.md (vec_setv4sf): Removed.
17958         (vec_setv2df): Likewise.
17959         (vec_setv2di): Likewise.
17960         (vec_setv4si): Likewise.
17961         (vec_setv8hi): Likewise.
17962         (vec_setv16qi): Likewise.
17963         (vec_set<mode>): New.
17964
17965 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17966
17967         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
17968         goto for vec_concat and vec_interleave.
17969
17970 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17971
17972         * config/i386/sse.md (vec_initv4sf): Removed.
17973         (vec_initv2df): Likewise.
17974         (vec_initv2di): Likewise.
17975         (vec_initv4si): Likewise.
17976         (vec_initv8hi): Likewise.
17977         (vec_initv16qi): Likewise.
17978         (vec_init<mode>): New.
17979
17980 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
17981
17982         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
17983
17984 2008-05-21  Tom Tromey  <tromey@redhat.com>
17985
17986         * ggc-zone.c (lookup_page_table_if_allocated): New function.
17987         (zone_find_object_offset): Likewise.
17988         (gt_ggc_m_S): Likewise.
17989         (highest_bit): Likewise.
17990         * ggc-page.c (gt_ggc_m_S): New function.
17991         * stringpool.c (string_stack): Remove.
17992         (init_stringpool): Update.
17993         (ggc_alloc_string): Use ggc_alloc.
17994         (maybe_delete_ident): New function.
17995         (ggc_purge_stringpool): Likewise.
17996         (gt_ggc_m_S): Remove.
17997         * ggc-common.c (ggc_protect_identifiers): New global.
17998         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
17999         ggc_protect_identifiers.
18000         * ggc.h (ggc_protect_identifiers): Declare.
18001         (gt_ggc_m_S): Update.
18002         (ggc_purge_stringpool): Declare.
18003         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
18004         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
18005         special case.
18006         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
18007
18008 2008-05-21  David S. Miller  <davem@davemloft.net>
18009
18010         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
18011         tmake_file.
18012
18013 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
18014
18015         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
18016         once finished.
18017
18018 2008-05-20  David Daney  <ddaney@avtrex.com>
18019
18020         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
18021         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
18022         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
18023         UNSPEC_UPDATE_GOT_VERSION): Renumber.
18024         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
18025         (atomic_hiqi_op): New define_code_iterator.
18026         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
18027         mips_expand_compare_and_swap_12.
18028         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
18029         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
18030         (sync_<optab><mode>, sync_old_<optab><mode>,
18031         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
18032         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
18033         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
18034         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
18035         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
18036         (test_and_set_12): New insn.
18037         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
18038         sync_new_<optab><mode>, sync_old_nand<mode>,
18039         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
18040         clobber to operand 0 for SI and DI mode insns.
18041         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
18042         mips_gen_fn_4): New typedefs.
18043         (mips_gen_fn_ptrs): Define new union type.
18044         (mips_expand_compare_and_swap_12): Remove declaration.
18045         (mips_expand_atomic_qihi): Declare function.
18046         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
18047         (mips_expand_atomic_qihi): ... this.  Use new generator function
18048         parameter.
18049         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
18050         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
18051         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
18052         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
18053         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
18054         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
18055         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
18056         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
18057         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
18058         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
18059         New macros.
18060
18061 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
18062
18063         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
18064         the missing break.
18065
18066 2008-05-20  Anatoly Sokolov <aesok@post.ru>
18067
18068         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
18069         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
18070         (avr_attribute_table): Add 'OS_main' function attribute.
18071         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
18072         functions with 'OS_main' attribute.
18073
18074 2008-05-20  Richard Guenther  <rguenther@suse.de>
18075
18076         PR tree-optimization/35204
18077         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
18078         helper, split out from ...
18079         (DFS): ... here.  Make the DFS walk non-recursive.
18080
18081 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
18082             Jan Sjodin  <jan.sjodin@amd.com>
18083
18084         PR tree-optimization/36181
18085         * tree-parloops.c (loop_has_vector_phi_nodes): New.
18086         (parallelize_loops): Don't parallelize when the loop has vector
18087         phi nodes.
18088
18089 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18090             Sebastian Pop  <sebastian.pop@amd.com>
18091
18092         * tree-loop-linear.c (gather_interchange_stats): Look in the access
18093         matrix, and never look at the tree representation of the memory
18094         accesses.
18095         (linear_transform_loops): Computes parameters and access matrices.
18096         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
18097         when fails.
18098         (access_matrix_get_index_for_parameter): New.
18099         * tree-data-ref.h (struct access_matrix): New.
18100         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
18101         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
18102         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
18103         am_vector_index_for_loop): New.
18104         (struct data_reference): Add field access_matrix.
18105         (DR_ACCESS_MATRIX): New.
18106         (compute_data_dependences_for_loop): Update declaration.
18107         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
18108         * lambda.h (lambda_vector_vec_p): Declared.
18109         * lambda-code.c: Depend on pointer-set.h.
18110         (lambda_collect_parameters_from_af, lambda_collect_parameters,
18111         av_for_af_base, av_for_af, build_access_matrix,
18112         lambda_compute_access_matrices): New.
18113         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
18114
18115 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
18116
18117         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
18118         $SOURCEDIR/include.
18119
18120 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18121             Sebastian Pop  <sebastian.pop@amd.com>
18122
18123         PR tree-optimization/36206
18124         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
18125         FOLD_CONVERSIONS.
18126         (instantiate_scev_1): Rename flags to fold_conversions.
18127         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
18128         outeside instantiation_loop.
18129         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
18130         (evolution_function_is_affine_or_constant_p): Removed.
18131         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
18132         instantiate_scev.
18133         (analyze_siv_subscript): Pass in the loop nest number.
18134         Call evolution_function_is_affine_in_loop instead of
18135         evolution_function_is_affine_p.
18136         (analyze_overlapping_iterations): Pass in the loop nest number.
18137
18138 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18139             Sebastian Pop  <sebastian.pop@amd.com>
18140
18141         PR tree-optimization/36206
18142         * tree-chrec.h (chrec_fold_op): New.
18143         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
18144         and other trees.
18145
18146 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
18147
18148         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
18149         (DIRS_EQ): New.
18150         (remove_duplicates): Do not set inode on non-inode systems.
18151         Use DIRS_EQ.
18152
18153 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
18154
18155         * config.gcc (tm_file): Update comments about relative pathnames.
18156
18157 2008-05-20  Richard Guenther  <rguenther@suse.de>
18158
18159         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
18160         * tree-ssa-sccvn.c (process_scc): Likewise.
18161         * tree-ssa-sink.c (execute_sink_code): Likewise.
18162         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
18163         * tree-vrp.c (process_assert_insertions): Likewise.
18164         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18165         (perform_tree_ssa_dce): Likewise.
18166         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
18167         (dump_dominator_optimization_stats): Likewise.
18168         * tree-vectorizer.c (vectorize_loops): Likewise.
18169
18170 2008-05-20  Richard Guenther  <rguenther@suse.de>
18171
18172         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
18173
18174 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
18175
18176         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
18177         (ix86_i386elf_return_in_memory): Likewise.
18178         (ix86_i386interix_return_in_memory): Likewise.
18179         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
18180         (SUBTARGET_RETURN_IN_MEMORY): New.
18181         * config/i386/i386elf.h: Likewise.
18182         * config/i386/ptx4-i.h: Likewise.
18183         * config/i386/sol2-10.h: Likewise.
18184         * config/i386/sysv4.h: Likewise.
18185         * config/i386/vx-common.h: Likewise.
18186         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
18187         * config/i386/i386.c (ix86_return_in_memory): Made static and
18188         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
18189         (ix86_i386elf_return_in_memory): Removed.
18190         (ix86_i386interix_return_in_memory): Removed.
18191         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
18192         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
18193
18194 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
18195
18196         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
18197
18198 2008-05-19  Xinliang David Li  <davidxl@google.com>
18199
18200         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
18201         * opts.c: Ditto.
18202         * common.opt: Ditto.
18203         * doc/invoke.texi: Ditto.
18204
18205 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
18206
18207         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
18208         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
18209
18210 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18211
18212         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
18213         sizes of operand array from 8/4 to 4/2.
18214         (ix86_expand_vector_init_general): Change size of operand array
18215         from 32 to 16.  Remove op0, op1 and half_mode.
18216
18217 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18218
18219         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
18220         (ix86_expand_vector_init_interleave): Likewise.
18221         (ix86_expand_vector_init_general): Use them.  Assert
18222         word_mode == SImode when n_words == 4.
18223
18224 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
18225
18226         * config/i386/i386.c (ix86_secondary_reload): New static function.
18227         (TARGET_SECONDARY_RELOAD): New define.
18228         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
18229         * config/i386/i386.md (reload_outqi): Remove.
18230
18231 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18232
18233         PR middle-end/35509
18234         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
18235         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
18236         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
18237         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
18238         (fold_builtin_1): Likewise.
18239         * builtins.def (BUILT_IN_ISINF_SIGN): New.
18240         c-common.c (check_builtin_function_arguments): Handle
18241         BUILT_IN_ISINF_SIGN.
18242         * doc/extend.texi: Document __builtin_isinf_sign.
18243         * fold-const.c (operand_equal_p): Handle COND_EXPR.
18244
18245 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
18246
18247         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
18248         EH cleanup at the end of the pass, search for those that have been
18249         turned into forwarder blocks and do the cleanup on their successor.
18250
18251 2008-05-18  Richard Guenther  <rguenther@suse.de>
18252
18253         * tree-cfg.c (verify_gimple_expr): Allow conversions from
18254         pointers to sizetype and vice versa.
18255
18256 2008-05-18 Xinliang David Li   <davidxl@google.com>
18257
18258         * gcc/tree-ssa-dce.c: Coding style fix.
18259         (check_pow): Documentation comment.
18260         (check_log): Documenation comment. Coding style fix.
18261         (is_unnecessary_except_errno_call): Ditto.
18262         (gen_conditions_for_pow): Ditto.
18263         (gen_conditions_for_log): Ditto.
18264         (gen_shrink_wrap_conditions): Ditto.
18265         (shrink_wrap_one_built_in_calls): Ditto.
18266         * gcc/doc/invoke.texi: Better documentation string.
18267         * ChangeLog: Fix wrong change log entries from
18268         May 17 checkin on function call DCE.
18269
18270 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
18271
18272         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
18273
18274 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
18275
18276         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
18277         * df-problems.c (simulation routines): Fixed block comment to
18278         properly say how to add forwards scanning functions.
18279
18280 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18281
18282         * tree-inline.c (setup_one_parameter): Remove dead code.
18283
18284 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18285
18286         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
18287         a BIT_AND_EXPR only for an INTEGER_TYPE.
18288
18289 2008-05-17 Xinliang David Li   <davidxl@google.com>
18290
18291         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
18292         (check_pow, check_log, is_unnecessary_except_errno_call): New
18293         functions to check for eliminating math functions that are pure
18294         except for setting errno.
18295         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
18296         general condition expressions for shrink-wrapping pow/log calls.
18297         (gen_shrink_wrap_conditions): Ditto.
18298         (shrink_wrap_one_built_in_call): Ditto.
18299         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
18300         (mark_operand_necessary): If debugging, output if OP is necessary.
18301         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
18302         unnecessary.
18303         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
18304         opt level >= 2.
18305         * gcc/common.opt: New user flag -ftree-builtin-dce.
18306         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
18307
18308 2008-05-16  David S. Miller  <davem@davemloft.net>
18309
18310         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
18311         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18312
18313 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
18314
18315         PR target/36246
18316         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
18317
18318 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18319
18320         * ifcvt.c (dead_or_predicable): Rename
18321         df_simulate_one_insn_backwards to df_simulate_one_insn.
18322         * recog.c (peephole2_optimize): Ditto.
18323         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
18324         Ditto.
18325         * df.h: Rename df_simulate_one_insn_backwards to
18326         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
18327         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
18328         scanning of defs and uses.
18329         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
18330         (df_simulate_one_insn_forwards): Removed.
18331
18332 2008-05-16  Doug Kwan  <dougkwan@google.com>
18333
18334         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
18335         QNaN & SNaN.
18336         (real_from_string): Handle NaNs and Inf as approriate.
18337
18338 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18339
18340         * doc/gty.texi (Source Files Containing Type Information): Note
18341         that headers should appear first in the gtfiles list.
18342
18343 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18344
18345         * tree.def (COND_EXEC): Properly documented this code.
18346
18347 2008-05-16  Diego Novillo  <dnovillo@google.com>
18348
18349         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
18350         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
18351         the new field.
18352
18353 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18354
18355         * tree-ssa-dse (max_stmt_uid): Removed.
18356         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
18357         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
18358         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
18359         * function.h (cfun.last_stmt_uid): New field.
18360         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
18361         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
18362         New functions.
18363         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
18364         (create_stmt_ann): Initialize the ann->uid field.
18365         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
18366         with new calls.
18367         * tree-flow.h (renumber_gimple_stmt_uids): New function.
18368
18369 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18370
18371         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
18372         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
18373         (init_empty_tree_cfg): Call it.
18374
18375 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18376
18377         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
18378         Update all users.
18379
18380 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18381
18382         * doc/invoke.text (-fdump-tree-*-verbose): New option.
18383         * tree-dump.c (dump_options): New verbose option.
18384         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
18385         Add verbose dump.
18386         * tree-pass.h (TDF_VERBOSE): New dump flag.
18387         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
18388         (tree-flow.h): Added include.
18389         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
18390
18391 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
18392
18393         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
18394
18395         From Jie Zhang  <jie.zhang@analog.com>
18396         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18397         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
18398         mcpu=bf561-none and mcpu=bf561-0.2.
18399         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18400         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18401         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18402         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18403         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
18404         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
18405         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
18406         option.
18407         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
18408         (cputype_selected): Remove.
18409         (bfin_handle_option): Don't use cputype_selected.
18410         (override_options): When no mcpu option, enable all workarounds.
18411         Don't use bfin_workarounds.
18412         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
18413         processor type.
18414         (DEFAULT_CPU_TYPE): Don't define.
18415
18416 2008-05-16  Richard Guenther  <rguenther@suse.de>
18417
18418         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
18419         on deletion of the last stmt.
18420
18421 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18422
18423         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
18424         V8HImode for SSE2 and V16QImode for SSE4.1.
18425
18426 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
18427
18428         * cgraph.h (compute_inline_parameters): Made public.
18429         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
18430         variable_generate_summary, function_write_summary,
18431         variable_write_summary, variable_read_summary.  Added generate_summary,
18432         write_summary, read_summary.
18433         * cgraphunit.c (cgraph_process_new_functions): Changed call from
18434         pass_ipa_inline.function_generate_summary, to
18435         compute_inline_parameters.
18436         * ipa-inline.c (compute_inline_parameters): Made public and added
18437         node parameter.
18438         (compute_inline_parameters_for_current): New function.
18439         (pass_inline_param): Now calls compute_inline_parameters_for_current.
18440         (inline_generate_summary): Removed parameter and made to loop over
18441         all cgraph nodes.
18442         (pass_ipa_inline): Updated for new IPA_PASS structure.
18443         * passes.c (execute_ipa_summary_passes): Now is called once per
18444         pass rather than once per node*pass.
18445
18446 2008-05-15  Anatoly Sokolov <aesok@post.ru>
18447
18448         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
18449         avr_have_mul_p, avr_asm_only_p): Remove variables.
18450         (avr_override_options): Remove initialization of removed variables.
18451         (avr_file_start):  Convert removed variables to fields of
18452         'struct base_arch_s *avr_current_arch'.
18453         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
18454         (AVR_HAVE_MUL): (Ditto.).
18455         (AVR_HAVE_MOVW): (Ditto.).
18456         (AVR_HAVE_LPMX): (Ditto.).
18457         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
18458         avr_asm_only_p): Remove declaration.
18459
18460 2008-05-15  Diego Novillo  <dnovillo@google.com>
18461
18462         * config/arm/arm.c (arm_return_in_memory): Fix return type.
18463         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
18464
18465 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
18466
18467         PR middle-end/36194
18468         * combine.c (check_conversion): Rename back to check_promoted_subreg.
18469         Don't call record_truncated_value from here.
18470         (record_truncated_value): Turn it into a for_each_rtx callback.
18471         (record_truncated_values): New function.
18472         (combine_instructions): Call note_uses with record_truncated_values.
18473         Change name of check_conversion to check_promoted_subreg.
18474
18475 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
18476
18477         * doc/sourcebuild.texi: Document support for torture tests.
18478
18479 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18480
18481         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
18482         to alternative 4 of operand 2.
18483
18484 2008-05-15  Richard Guenther  <rguenther@suse.de>
18485
18486         * tree-pass.h (current_pass): Declare.
18487         (get_pass_for_id): Likewise.
18488         * passes.c (passes_by_id, passes_by_id_size): New globals.
18489         (set_pass_for_id): New function.
18490         (get_pass_for_id): Likewise.
18491         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
18492         (execute_function_todo): Flush per function statistics.
18493         * toplev.c (compile_file): Init statistics.
18494         (general_init): Do early statistics initialization.
18495         (finalize): Finish statistics.
18496         * statistics.h (statistics_early_init): Declare.
18497         (statistics_init): Likewise.
18498         (statistics_fini): Likewise.
18499         (statistics_fini_pass): Likewise.
18500         (statistics_counter_event): Likewise.
18501         (statistics_histogram_event): Likewise.
18502         * statistics.c: New file.
18503         * Makefile.in (OBJS-common): Add statistics.o.
18504         (statistics.o): Add dependencies.
18505         * doc/invoke.texi (-fdump-statistics): Document.
18506
18507         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
18508         (insert): Likewise.
18509         (execute_pre): Use statistics_counter_event.
18510         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
18511         (substitute_and_fold): Increment it.  Use statistics_counter_event.
18512
18513 2008-05-15  Diego Novillo  <dnovillo@google.com>
18514
18515         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
18516
18517         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
18518         * tree-ssa-alias.c (new_type_alias): Remove references to
18519         sub-variables from comment.
18520         * tree-ssa-operands.c (swap_tree_operands): Likewise.
18521
18522 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18523
18524         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
18525         attribute to 1 only for insertps alternative.
18526
18527 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18528
18529         * config/bfin/bfin.md (loadbytes): New pattern.
18530         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
18531         (bfin_init_builtins): Initialize it.
18532         (bdesc_1arg): Add it.
18533
18534 2008-05-15  Sa Liu  <saliu@de.ibm.com>
18535
18536         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
18537         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
18538         * testsuite/lib/target-supports.exp: Add
18539         check_effective_target_fortran_integer_16.
18540
18541 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18542
18543         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
18544         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
18545         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
18546         (TARGET_RETURN_IN_MEMORY): Define.
18547
18548 2008-05-15  Richard Guenther  <rguenther@suse.de>
18549
18550         PR middle-end/36244
18551         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
18552         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
18553         represent unmodifiable vars.
18554
18555 2008-05-15  Richard Guenther  <rguenther@suse.de>
18556
18557         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
18558         INDIRECT_REF and TARGET_MEM_REF.
18559         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
18560         TARGET_MEM_REF.
18561
18562 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18563             H.J. Lu  <hongjiu.lu@intel.com>
18564
18565         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
18566         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
18567         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
18568         insn alternatives.  Add missing alternatives.
18569         (*vec_concatv2di_rex64_sse4_1): Likewise.
18570         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
18571         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
18572         Require TARGET_SSE.
18573
18574 2008-05-15  Richard Guenther  <rguenther@suse.de>
18575
18576         PR tree-optimization/36009
18577         PR tree-optimization/36204
18578         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
18579         (determine_invariantness_stmt): Record the loop a store is
18580         always executed in.
18581         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
18582         dependency.
18583
18584 2008-05-15  Richard Guenther  <rguenther@suse.de>
18585
18586         PR tree-optimization/34330
18587         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
18588         through the pointer will alias the SMT.
18589
18590 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
18591
18592         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
18593
18594 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18595
18596         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
18597
18598 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18599             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18600
18601         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
18602         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
18603         (vashl_optab): New optab for vector/vector shifts.
18604         (vashr_optab): Ditto.
18605         (vlshr_optab): Ditto.
18606         (vrotl_optab): Ditto.
18607         (vrotr_optab): Ditto.
18608         (optab_subtype): New enum for optab_for_tree_code call.
18609         (optab_for_tree_code): Add enum optab_subtype argument.
18610
18611         * optabs.c (optab_for_tree_code): Take an additional argument to
18612         distinguish between a vector shift by a scalar and vector shift by
18613         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
18614         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
18615         vector shift by a vector.
18616         (expand_widen_pattern_expr): Pass additional argument to
18617         optab_for_tree_code.
18618
18619         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
18620         vrotl_optab, vrotr_optab.
18621
18622         * expr.c (expand_expr_real_1): Update calls to
18623         optab_for_tree_code to distinguish between vector shifted by a
18624         scalar and vector shifted by a vector.
18625         * tree-vectorizer.c (supportable_widening_operation): Ditto.
18626         (supportable_narrowing_operation): Ditto.
18627         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
18628         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
18629         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
18630         (vect_create_epilog_for_reduction): Ditto.
18631         (vectorizable_reduction): Ditto.
18632         (vectorizable_operation): Ditto.
18633         (vect_strided_store_supported): Ditto.
18634         (vect_strided_load_supported): Ditto.
18635         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18636         * expmed.c (expand_shift): Ditto.
18637
18638         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
18639         scalar type.
18640         (ashr@var{m}3): Ditto.
18641         (vashl@var{m}3): Document new vector/vector shift standard name.
18642         (vashr@var{m}3): Ditto.
18643         (vlshr@var{m}3): Ditto.
18644         (vrotl@var{m}3): Ditto.
18645         (vrotr@var{m}3): Ditto.
18646
18647         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
18648         (PPERM_INVERT): Ditto.
18649         (PPERM_REVERSE): Ditto.
18650         (PPERM_REV_INV): Ditto.
18651         (PPERM_ZERO): Ditto.
18652         (PPERM_ONES): Ditto.
18653         (PPERM_SIGN): Ditto.
18654         (PPERM_INV_SIGN): Ditto.
18655         (PPERM_SRC1): Ditto.
18656         (PPERM_SRC2): Ditto.
18657
18658         * config/i386/sse.md (mulv2di3): Add SSE5 support.
18659         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
18660         allows a memory operand to be the value being added, and split it
18661         to improve vectorization.
18662         (sse5_pmacsdqh_mem): Ditto.
18663         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
18664         (sse5_mulv2div2di3_high): Ditto.
18665         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
18666         (vec_pack_trunc_v4si): Ditto.
18667         (vec_pack_trunc_v2di): Ditto.
18668         (sse5_pcmov_<mode>): Remove code that tried to use use
18669         andps/andnps instead of pcmov.
18670         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
18671         pmacsdqh instructions.
18672         (vec_widen_smult_lo_v4si): Ditto.
18673
18674         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
18675         (PPERM_INVERT): Ditto.
18676         (PPERM_REVERSE): Ditto.
18677         (PPERM_REV_INV): Ditto.
18678         (PPERM_ZERO): Ditto.
18679         (PPERM_ONES): Ditto.
18680         (PPERM_SIGN): Ditto.
18681         (PPERM_INV_SIGN): Ditto.
18682         (PPERM_SRC1): Ditto.
18683         (PPERM_SRC2): Ditto.
18684         (ix86_expand_sse_movcc): Move the SSE5 test after the if
18685         true/false tests.
18686         (ix86_expand_int_vcond): If SSE5 generate all possible integer
18687         comparisons.
18688         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
18689         says ignore whether the last reference is a memory operand.
18690
18691 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18692             Paolo Bonzini <bonzini at gnu dot org>
18693
18694         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
18695         shift patterns.
18696
18697         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
18698         (vlshr<mode>3): Rename from vlshr<mode>3.
18699         (vashr<mode>3): Rename from vashr<mode>3.
18700         (mulv4sf3): Change the names of vector shift patterns.
18701         (mulv4si3): Ditto.
18702         (negv4sf2): Ditt.
18703
18704         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
18705         shift insns.
18706
18707         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
18708         (SI_SHLHI): Ditto.
18709         (SI_SHL): Ditto.
18710         (SI_SHLI): Ditto.
18711         (SI_ROTH): Ditto.
18712         (SI_ROTHI): Ditto.
18713         (SI_ROT): Ditto.
18714         (SI_ROTI): Ditto.
18715         (SPU_RL_0): Ditto.
18716         (SPU_RL_1): Ditto.
18717         (SPU_RL_2): Ditto.
18718         (SPU_RL_3): Ditto.
18719         (SPU_RL_4): Ditto.
18720         (SPU_RL_5): Ditto.
18721         (SPU_RL_6): Ditto.
18722         (SPU_RL_7): Ditto.
18723         (SPU_SL_0): Ditto.
18724         (SPU_SL_1): Ditto.
18725         (SPU_SL_2): Ditto.
18726         (SPU_SL_3): Ditto.
18727         (SPU_SL_4): Ditto.
18728         (SPU_SL_5): Ditto.
18729         (SPU_SL_6): Ditto.
18730         (SPU_SL_7): Ditto.
18731
18732         * config/spu/spu.md (v): New iterator macro to add v for vector types.
18733         (floatunssidf2_internal): Change vector/vector shift names.
18734         (floatunsdidf2_internal): Ditto.
18735         (mulv8hi3): Ditto.
18736         (ashrdi3): Ditto.
18737         (ashrti3): Ditto.
18738         (cgt_df): Ditto.
18739         (cgt_v2df): Ditto.
18740         (dftsv): Ditto.
18741         (vashl<mode>3): Rename from ashl<mode>3.
18742         (vashr<mode>3): Rename from ashr<mode>3.
18743         (vlshr<mode>3): Rename from lshr<mode>3.
18744         (vrotl<mode>3): Rename from rotl<mode>3.
18745
18746 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18747
18748         PR target/36224
18749         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
18750         multiply gives the wrong value when doing widening multiplies.
18751         (vec_widen_smult_lo_v4si): Ditto.
18752
18753 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18754
18755         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
18756         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
18757         emit_library_call_value.
18758         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
18759         * tree.h (ECF_LIBCALL_BLOCK): Removed.
18760         * calls.c (initialize_argument_information, precompute_arguments,
18761         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
18762         (precompute_arguments): Removed flags parameter.
18763         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
18764
18765 2008-05-14  Richard Guenther  <rguenther@suse.de>
18766
18767         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
18768         Make sure to register the store if the use is a PHI_NODE.
18769
18770 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18771
18772         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
18773         memory if the component is to be referenced in BLKmode according
18774         to get_inner_reference.
18775
18776 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
18777
18778         * calls.c (emit_library_call_value_1): Restore code clearing
18779         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
18780
18781 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18782             Nicolas Roche  <roche@adacore.com>
18783
18784         * configure.ac: Add support for a "gcc_subdir" variable in
18785         config-lang.in, to denote a subdirectory where the language/GCC
18786         integration files are to be found.
18787         * configure: Regenerate.
18788
18789 2008-05-14  Ira Rosen  <irar@il.ibm.com>
18790
18791         PR tree-optimization/36098
18792         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
18793         value for the first load in the group in case of a gap.
18794         (vect_build_slp_tree): Check that there are no gaps in loads.
18795
18796 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18797
18798         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
18799         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
18800         expand_copysign_bit, ): Change call to emit_no_conflict_block to
18801         emit_insn and remove unneeded code to construct extra args.
18802         (emit_no_conflict_block): Removed.
18803         * optabls.h: (emit_no_conflict_block): Removed.
18804         * cse.c (cse_extended_basic_block): Remove search for
18805         REG_NO_CONFLICT note.
18806         * global.c: Removed incorrect comment added in revision 117.
18807         * expr.c (convert_move): Change call to emit_no_conflict_block to
18808         emit_insn.
18809         * recog.c: Change comments so that they do not mention
18810         REG_NO_CONFLICT.
18811         * local_alloc.c (combine_regs): Removed last parameter.
18812         (no_conflict_p): Removed.
18813         (block_alloc): Removed note, no_conflict_combined_regno and set
18814         local vars. Removed all code to process REG_NO_CONFLICT blocks.
18815         (combine_regs): Removed already_dead and code to look for
18816         REG_NO_CONFLICT notes.
18817         * lower_subreg (remove_retval_note): Removed code to look for
18818         REG_NO_CONFLICT block.
18819         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
18820         (resolve_clobber): Remove code to process libcalls that have
18821         REG_NO_CONFLICT notes.
18822         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
18823         case.
18824         * combine.c (can_combine_p, distribute_notes):  Removed
18825         REG_NO_CONFLICT case.
18826         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
18827         to emit_insns.
18828         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
18829         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
18830         Ditto.
18831         * reg-notes.def (NO_CONFLICT): Removed.
18832
18833 2008-05-14  David S. Miller  <davem@davemloft.net>
18834
18835         * config/sparc/sparc.c (sparc_profile_hook): If
18836         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
18837         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
18838         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18839
18840 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
18841
18842         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
18843
18844 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
18845
18846         PR target/36222
18847         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
18848         and op1 expansion before vector concat to have less live pseudos.
18849
18850 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
18851
18852         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
18853         ix86_expand_vector_set if supported.
18854
18855 2008-05-13  Diego Novillo  <dnovillo@google.com>
18856             Kenneth Zadeck  <zadeck@naturalbridge.com>
18857
18858         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
18859
18860         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
18861         phinodes_print_statistics, init_ssanames, fini_ssanames,
18862         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
18863         release_ssa_name, release_defs, replace_ssa_name_symbol,
18864         ssanames_print_statistics): Move ...
18865         * tree-flow.h: ... here.
18866         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
18867         Use FN instead of cfun.
18868         (make_ssa_name_fn): Rename from make_ssa_name.
18869         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
18870         * tree-flow-inline.h (make_ssa_name): Move from
18871         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
18872         * omp-low.c (expand_omp_parallel):
18873         * tree-flow-inline.h (redirect_edge_var_map_result):
18874         * tree-ssa.c (init_tree_ssa): Add argument FN.
18875         Use it instead of cfun.  Update all users.
18876
18877 2008-05-13  Tom Tromey  <tromey@redhat.com>
18878
18879         PR preprocessor/22168:
18880         * doc/cpp.texi (Top): Update menu.
18881         (Alternatives to Wrapper #ifndef): New node.
18882         (Other Directives): Document deprecation.
18883         (Obsolete Features): Remove menu.
18884         (Assertions): Merge node into Obsolete Features.
18885         (Obsolete once-only headers): Move earlier; rename to Alternatives
18886         to Wrapper #ifndef.
18887         * doc/cppopts.texi: Update.
18888         * c.opt (Wdeprecated): Enable for C and ObjC.
18889         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
18890         (C++ Dialect Options): Move -Wno-deprecated from here to...
18891         (Warning Options): ... here.
18892
18893 2008-05-13  Richard Guenther  <rguenther@suse.de>
18894
18895         PR middle-end/36227
18896         * fold-const.c (fold_sign_changed_comparison): Do not allow
18897         changes in pointer-ness.
18898
18899 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
18900
18901         PR target/24713
18902         * config/sh/sh.c (sh_expand_prologue): Don't clear
18903         RTX_FRAME_RELATED_P for push insns.
18904
18905 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
18906
18907         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
18908
18909 2008-05-12  Anatoly Sokolov <aesok@post.ru>
18910
18911         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
18912         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
18913         Use 'machine->is_leaf' instead of 'leaf_func_p'.
18914
18915 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
18916
18917         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
18918         (*vec_concatv4sf_sse): This.
18919         (*sse2_concatv2si): Renamed to ...
18920         (*vec_concatv2si_sse2): This.
18921         (*sse1_concatv2si): Renamed to ...
18922         (*vec_concatv2si_sse): This.
18923         (*vec_concatv2di_rex): Renamed to ...
18924         (*vec_concatv2di_rex64): This.
18925         (*vec_concatv2si_sse4_1): New.
18926         (*vec_concatv2di_rex64_sse4_1): Likewise.
18927
18928 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
18929
18930         PR rtl-optimization/36111
18931         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
18932         that was created for swappable operands.
18933
18934 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
18935
18936         PR ada/36001
18937         * Makefile.in: Substitute GNATMAKE and GNATBIND.
18938         * configure.ac: Add call to ACX_PROG_GNAT.
18939
18940 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
18941
18942         * optc-gen.awk: Fix comment typo.
18943
18944 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
18945
18946         * pretty-print.c (pp_integer_with_precision): Use
18947         HOST_LONG_LONG_FORMAT.
18948
18949 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
18950
18951         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
18952
18953 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
18954
18955         * config/i386/i386.c (bdesc_ptest): Removed.
18956         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
18957         (bdesc_args): Add __builtin_ia32_ptestz128,
18958         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
18959         (ix86_init_mmx_sse_builtins): Updated.
18960         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
18961         (ix86_expand_builtin): Updated.
18962
18963 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
18964
18965         * tree-cfg.c (valid_fixed_convert_types_p): New function.
18966         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
18967
18968 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
18969
18970         * value-prof.c (interesting_stringop_to_profile): Do not
18971         return early for BUILT_IN_MEMPCPY.
18972
18973 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
18974
18975         * calls.c (expand_call): Don't use callgraph to increase
18976         preferred_stack_boundary.
18977
18978         * cgraph.h (cgraph_rtl_info): Use unsigned on
18979         preferred_incoming_stack_boundary.
18980
18981         * final.c (rest_of_clean_state): Use unsigned on
18982         preferred_stack_boundary.
18983
18984 2008-05-09  Tom Tromey  <tromey@redhat.com>
18985
18986         PR preprocessor/22231:
18987         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
18988         proceeding.
18989
18990 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
18991
18992         PR tree-optimization/36129
18993         * tree-ssa-ccp.c: Include value-prof.h.
18994         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
18995         built-in function was folded to a constant.
18996         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
18997
18998 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
18999             Sebastian Pop  <sebastian.pop@amd.com>
19000
19001         * tree-scalar-evolution.c: Document instantiate_scev.
19002         (instantiate_parameters_1): Renamed instantiate_scev_1.
19003         Don't use the same loop for instantiation_loop and evolution_loop.
19004         (instantiate_scev): New.
19005         (instantiate_parameters): Moved...
19006         (resolve_mixers): Update call to instantiate_scev_1 to pass the
19007         same loop twice.  Maintains the semantics for this function.
19008         * tree-scalar-evolution.h (instantiate_scev): Declare.
19009         (instantiate_parameters): ...here.  Now static inline.
19010         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
19011         instead of resolve_mixers.
19012
19013 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
19014
19015         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
19016
19017 2008-05-09  Tomas Bily  <tbily@suse.cz>
19018
19019         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
19020         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
19021         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19022         * c-common.c (c_common_truthvalue_conversion): Likewise.
19023         * tree-object-size.c (compute_object_offset): Likewise.
19024         * tree-inline.c (estimate_num_insns_1): Likewise.
19025         * varasm.c (const_hash_1, compare_constant, copy_constant)
19026         (compute_reloc_for_constant, output_addressed_constants)
19027         (initializer_constant_valid_p): Likewise.
19028         * c-omp.c (check_omp_for_incr_expr): Likewise.
19029         * gimplify.c (gimplify_expr): Likewise.
19030         * c-typeck.c (c_finish_return): Likewise.
19031         * tree-vectorizer.c (supportable_widening_operation)
19032         (supportable_narrowing_operation): Likewise.
19033         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
19034         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
19035         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
19036         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
19037         (descr_info_loc): Likewise.
19038         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19039         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
19040         (fold_unary): Likewise.
19041         * builtins.c (get_pointer_alignment): Likewise.
19042         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
19043         (instantiate_parameters_1): Likewise.
19044         * tree.c (expr_align, stabilize_reference): Likewise.
19045         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
19046         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
19047         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
19048         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19049         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
19050         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
19051         Likewise.
19052         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
19053         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
19054         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
19055         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
19056         (forward_propagate_comparison)
19057         (tree_ssa_forward_propagate_single_use_vars): Likewise.
19058         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
19059         * emit-rtl.c (component_ref_for_mem_expr)
19060         (set_mem_attributes_minus_bitpos): Likewise.
19061         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
19062         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
19063         Likewise.
19064         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
19065         (build_function_call, pointer_diff, build_compound_expr)
19066         (c_finish_return): Likewise.
19067         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
19068         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
19069         Likewise.
19070         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
19071         * expr.c (is_aligning_offset): Likewise.
19072         * tree-ssa-alias.c (is_escape_site): Likewise.
19073         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
19074         (check_all_va_list_escapes): Likewise.
19075         * tree-ssa-loop-ivopts.c (determine_base_object)
19076         (determine_common_wider_type): Likewise.
19077         * dojump.c (do_jump): Likewise.
19078         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
19079         * tree-gimple.c (is_gimple_cast): Likewise.
19080         * fold-const.c (decode_field_reference, )
19081         (fold_sign_changed_comparison, fold_unary, fold_comparison)
19082         (fold_binary): Likewise.
19083         * tree-ssa-alias-warnings.c (find_alias_site_helper)
19084         (already_warned_in_frontend_p): Likewise.
19085         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
19086         * tree.c (really_constant_p, get_unwidened): Likewise.
19087         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
19088         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
19089         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
19090         Likewise.
19091         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
19092         CONVERT_EXPR_P.
19093         (CONVERT_EXPR_P): Define.
19094         (CASE_CONVERT): Define.
19095
19096 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
19097
19098         PR middle-end/36117
19099         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
19100         (delete_unmarked_insns): When deleting a call, call
19101         delete_unreachable_blocks.
19102         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19103         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
19104
19105 2008-05-08  Richard Guenther  <rguenther@suse.de>
19106
19107         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
19108         (-ftree-salias): Likewise.
19109         (salias-max-implicit-fields): Remove param documentation.
19110         (salias-max-array-elements): Likewise.
19111         * tree-pass.h (pass_create_structure_vars): Remove.
19112         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19113         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19114         * tree-ssa-alias.c (create_structure_vars): Remove.
19115         (gate_structure_vars): Likewise.
19116         (pass_create_structure_vars): Likewise.
19117         (gate_build_alias): Likewise.
19118         (pass_build_alias): Adjust to run always and dump the function.
19119         * common.opt (ftree-salias): Hide.
19120         * passes.c (init_optimization_passes): Remove
19121         pass_create_structure_vars, adjust comment.
19122         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19123         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19124         * opts.c (decode_options): Do not set flag_tree_salias.
19125         (common_handle_option): Add OPT_ftree_salias to the backward
19126         compatibility section.
19127
19128 2008-05-08  Richard Guenther  <rguenther@suse.de>
19129
19130         * tree-flow-inline.h (var_can_have_subvars): Move ...
19131         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
19132         * tree-flow.h (var_can_have_subvars): Remove.
19133         (push_fields_onto_fieldstack): Remove.
19134         (sort_fieldstack): Likewise.
19135         (struct fieldoff): Move ...
19136         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
19137         alias_set and base_for_components fields.
19138         (sort_fieldstack): Make static.
19139         (push_fields_onto_fieldstack): Likewise.  Remove code that
19140         handles anything but RECORD_TYPEs.  Remove alias_set and
19141         base_for_components handling.
19142         (create_variable_info_for): Adjust.
19143
19144 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
19145
19146         * common.opt (Wframe-larger-than=): Shorten the help message
19147         to one line.
19148         * doc/invoke.texi (Wframe-larger-than=): Add more description.
19149
19150 2008-05-08  Rafael Espíndola  <espindola@google.com>
19151
19152         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
19153         trap.
19154         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
19155         trap and that both operands are gimple values.
19156         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
19157         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
19158         is a fp operation.
19159
19160 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19161
19162         * read-rtl.c (join_c_conditions): Return the first string if the
19163         two strings are equal.
19164
19165 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19166
19167         * gensupport.h (pred_data): Add a "num_codes" field.
19168         (add_predicate_code): Declare.
19169         * gensupport.c (add_predicate_code): New function.
19170         (std_pred_table): Add an "allows_const_p" field.
19171         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
19172         Remove the (incomplete) list of such codes from the codes field.
19173         (init_predicate_table): Use add_predicate_code.  Add all
19174         RTX_CONST_OBJs if allows_const_p is true.
19175         * genrecog.c (process_define_predicate): Use add_predicate_code.
19176
19177 2008-05-08  David Daney  <ddaney@avtrex.com>
19178             Richard Sandiford  <rsandifo@nildram.co.uk>
19179
19180         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
19181         special case of constant zero operands.
19182         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
19183         old and new values.  Special case constant zero values.
19184         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
19185         fails.
19186         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
19187         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
19188
19189 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
19190
19191         PR target/36090
19192         * simplify-rtx.c (simplify_plus_minus): Create CONST of
19193         similar RTX_CONST_OBJ before CONST_INT.
19194
19195 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
19196
19197         * stmt.c (expand_stack_restore): Change sa mode if needed.
19198
19199 2008-05-08  Richard Guenther  <rguenther@suse.de>
19200
19201         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
19202         return type to bool.
19203         (ix86_sol10_return_in_memory): Likewise.
19204         (ix86_i386elf_return_in_memory): Likewise.
19205         (ix86_i386interix_return_in_memory): Likewise.
19206         * config/i386/i386.c (ix86_return_in_memory): Likewise.
19207         (ix86_sol10_return_in_memory): Likewise.
19208         (ix86_i386elf_return_in_memory): Likewise.
19209         (ix86_i386interix_return_in_memory): Likewise.
19210
19211 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19212
19213         PR bootstrap/36180
19214         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
19215         fndecl argument.
19216         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
19217         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
19218         declared in front.
19219
19220 2008-05-08  Richard Guenther  <rguenther@suse.de>
19221
19222         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
19223         * tree-data-ref.h (struct dr_alias): Remove subvars field.
19224         (DR_SUBVARS): Remove.
19225         * tree-dfa.c (dump_subvars_for): Remove.
19226         (debug_subvars_for): Likewise.
19227         (dump_variable): Do not dump subvars.
19228         (remove_referenced_var): Do not remove subvars.
19229         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
19230         (lookup_subvars_for_var): Remove.
19231         (get_subvars_for_var): Likewise.
19232         (get_subvars_at): Likewise.
19233         (get_first_overlapping_subvar): Likewise.
19234         (overlap_subvar): Likewise.
19235         * tree-flow.h (subvar_t): Remove.
19236         (struct var_ann_d): Remove subvars field.
19237         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
19238         argument.  Remove special handling of SFTs.
19239         (compute_tag_properties): Likewise.
19240         (set_initial_properties): Likewise.
19241         (compute_call_clobbered): Likewise.
19242         (count_mem_refs): Likewise.
19243         (compute_memory_partitions): Likewise.
19244         (compute_flow_insensitive_aliasing): Likewise.
19245         (setup_pointers_and_addressables): Likewise.
19246         (new_type_alias): Likewise.
19247         (struct used_part): Remove.
19248         (used_portions): Likewise.
19249         (struct used_part_map): Likewise.
19250         (used_part_map_eq): Likewise.
19251         (used_part_map_hash): Likewise.
19252         (free_used_part_map): Likewise.
19253         (up_lookup): Likewise.
19254         (up_insert): Likewise.
19255         (get_or_create_used_part_for): Likewise.
19256         (create_sft): Likewise.
19257         (create_overlap_variables_for): Likewise.
19258         (find_used_portions): Likewise.
19259         (create_structure_vars): Likewise.
19260         * tree.def (STRUCT_FIELD_TAG): Remove.
19261         * tree.h (MTAG_P): Adjust.
19262         (struct tree_memory_tag): Remove base_for_components and
19263         unpartitionable flags.
19264         (struct tree_struct_field_tag): Remove.
19265         (SFT_PARENT_VAR): Likewise.
19266         (SFT_OFFSET): Likewise.
19267         (SFT_SIZE): Likewise.
19268         (SFT_NONADDRESSABLE_P): Likewise.
19269         (SFT_ALIAS_SET): Likewise.
19270         (SFT_UNPARTITIONABLE_P): Likewise.
19271         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
19272         (union tree_node): Remove sft field.
19273         * alias.c (get_alias_set): Remove special handling of SFTs.
19274         * print-tree.c (print_node): Remove handling of SFTs.
19275         * tree-dump.c (dequeue_and_dump): Likewise.
19276         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
19277         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
19278         * tree-predcom.c (set_alias_info): Do not set subvars.
19279         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
19280         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
19281         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
19282         (add_vars_for_offset): Remove.
19283         (add_virtual_operand): Remove special handling of SFTs.
19284         (add_call_clobber_ops): Likewise.
19285         (add_call_read_ops): Likewise.
19286         (get_asm_expr_operands): Likewise.
19287         (get_modify_stmt_operands): Likewise.
19288         (get_expr_operands): Likewise.
19289         (add_to_addressable_set): Likewise.
19290         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
19291         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
19292         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
19293         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
19294         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
19295         (tree_node_structure): Likewise.
19296         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
19297         handling of SFTs.
19298         (find_what_p_points_to): Likewise.
19299
19300 2008-05-08  Sa Liu  <saliu@de.ibm.com>
19301
19302         * config/spu/spu.md: Fixed subti3 pattern.
19303
19304 2008-05-08  Richard Guenther  <rguenther@suse.de>
19305
19306         PR middle-end/36154
19307         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
19308         sure to create a representative for trailing arrays for PTA.
19309
19310 2008-05-08  Richard Guenther  <rguenther@suse.de>
19311
19312         PR middle-end/36172
19313         * fold-const.c (operand_equal_p): Two objects which types
19314         differ in pointerness are not equal.
19315
19316 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19317
19318         * calls.c (compute_argument_block_size): Add argument tree fndecl.
19319         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
19320         (emit_library_call_value_1): Add new variable fndecl initialized by
19321         NULL_TREE. It should be the decl type of orgfun, but this information
19322         seems not to be available here, so it uses the default calling abi.
19323         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
19324         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
19325         by TARGET_RETURN_IN_MEMORY.
19326         * config/i386/i386-interix.h: Likewise.
19327         * config/i386/i386.h: Likewise.
19328         * config/i386/i386elf.h: Likewise.
19329         * config/i386/ptx4-i.h: Likewise.
19330         * config/i386/sol2-10.h: Likewise.
19331         * config/i386/sysv4.h: Likewise.
19332         * config/i386/vx-common.h: Likewise.
19333         * config/cris/cris.h: Removed #if 0 clause.
19334         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
19335         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
19336         argument.
19337         (ix86_sol10_return_in_memory): Likewise.
19338         (ix86_i386elf_return_in_memory): New.
19339         (ix86_i386interix_return_in_memory): New.
19340         * config/mt/mt-protos.h (mt_return_in_memory): New.
19341         * config/mt/mt.c: Likewise.
19342         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19343         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
19344         * config/bfin/bfin.h: Likewise.
19345         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
19346         argument.
19347         * config/bfin/bfin.c: Likewise.
19348         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19349         * config/alpha/unicosmk.h: Likewise.
19350         * config/i386/cygming.h: Likewise.
19351         * config/iq2000/iq2000.h: Likewise.
19352         * config/mips/mips.h: Likewise.
19353         * config/mn10300/mn10300.h: Likewise.
19354         * config/rs6000/rs6000.h: Likewise.
19355         * config/score/score.h: Likewise.
19356         * config/spu/spu.h: Likewise.
19357         * config/v850/v850.h: Likewise.
19358         * defaults.h: Likewise.
19359         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
19360         * expr.c (emit_block_move): Adjust use of
19361         OUTGOING_REG_PARM_STACK_SPACE.
19362         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
19363         OUTGOING_REG_PARM_STACK_SPACE.
19364         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
19365
19366 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
19367
19368         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
19369         on OMP_RETURN for OMP_FOR.
19370
19371         PR debug/35896
19372         * dwarf2out.c (dw_expand_expr, common_check): Removed.
19373         (fortran_common): New function.
19374         (gen_variable_die): Call fortran_common instead of common_check,
19375         adjust for it returning tree instead of rtx.  Formatting.
19376
19377 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19378
19379         PR rtl/7335
19380         PR rtl/33826
19381         * see.c (see_copy_insn): Copy new pure const attributes for new call.
19382         * c-decl.c (merge_decls): Ditto.
19383         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
19384         to RTL_CONST_OR_PURE_CALL_P.
19385         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
19386         Initialized DECL_LOOPING_CONST_PURE.
19387         (process_call_operands): Set tree_side_effects properly.
19388         * tree.h (TREE_READONLY_DECL_P): Removed.
19389         (DECL_IS_PURE): Renamed to DECL_PURE_P.
19390         (DECL_LOOPING_OR_CONST_P): New macro.
19391         (struct tree_function_decl): Added looping_const_or_pure_p.
19392         (ECF_*) Renumbered.
19393         (ECF_LOOPING_OR_CONST_P): New macro.
19394         * rtlanal.c (pure_const_p): Removed.
19395         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
19396         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
19397         to RTL_CONST_CALL_P.
19398         * ipa-pure-const.c (pure_const_state_e): Added looping field.
19399         (check_decl, check_tree, check_call, scan_function): Initialize
19400         looping.
19401         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
19402         (static_execute): Set looping true for recursive functions.
19403         Undo setting state to IPA_NEITHER for recursive functions.
19404         * cse.c (cse_insn):
19405         * ifcvt.c (noce_can_store_speculate_p): Changed
19406         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
19407         RTL_CONST_OR_PURE_CALL_P.
19408         * dse.c (scan_insn): Ditto.
19409         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
19410         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
19411         RTL_CONST_OR_PURE_CALL_P.
19412         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
19413         pure_call_p to RTL_CONST_CALL_P.
19414         * gimplify.c (gimplify_call_expr): Clear side effects for
19415         non-looping pure and constant calls.
19416         * calls.c (emit_call_1): Set rtl flags from ecf flags.
19417         (flags_from_decl_or_type): Set ecf flags from decl flags.
19418         (initialize_argument_information): Turn off
19419         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
19420         Change const to pure if callee_copies is true rather than just
19421         turning off const.
19422         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
19423         way of marking pure calls.
19424         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
19425         Remove hack that was supposed to fix pr7335 and remove old
19426         way of marking pure calls.
19427         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
19428         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
19429         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
19430         RTL_CONST_OR_PURE_CALL_P.
19431         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
19432         * loop-invariant.c (find_exits, find_invariant_bb): Changed
19433         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
19434         * sched-deps.c (schedule_analyze): Ditto.
19435         * rtl.h (struct rtx_def): Use call field, unchanging field, and
19436         return_val field of calls to represent pure and const function info.
19437         (CONST_OR_PURE_CALL_P): Deleted macro.
19438         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19439         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
19440         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
19441         TREE_READONLY.
19442         * tree-optimize.c (execute_fixup_cfg): Added test for
19443         ECF_LOOPING_CONST_OR_PURE.
19444         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
19445         DECL_PURE_P.
19446         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
19447         effects for looping pure or const calls.
19448         (verify_gimple_expr): Added verification code.
19449         * config/alpha/alpha.c (alpha_legitimize_address,
19450         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
19451         RTL_CONST_CALL_P.
19452         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
19453         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
19454         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
19455         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
19456         RTL_CONST_OR_PURE_CALL_P.
19457         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
19458         and const calls to be deleted.
19459
19460 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19461
19462         PR target/35714
19463         * config/i386/mmx.md (mmx_subv2sf3): New expander.
19464         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
19465         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
19466         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19467         to handle nonimmediate operands.
19468         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
19469         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
19470         to handle nonimmediate operands.
19471         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
19472         (mmx_pmulhrwv4hi3): New expander.  Use
19473         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19474         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
19475         (sse2_umulv1siv1di3): New expander.  Use
19476         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19477         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
19478         (mmx_eq<mode>3): New expander.  Use
19479         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19480         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
19481         (mmx_uavgv8qi3): New expander.  Use
19482         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19483         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
19484         (mmx_uavgv4hi3): New expander.  Use
19485         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19486
19487         * config/i386/sse.md
19488         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
19489         to handle nonimmediate operands.
19490         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
19491         to handle nonimmediate operands.
19492         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
19493         to handle nonimmediate operands.
19494         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
19495         to handle nonimmediate operands.
19496         (sse2_unpckhpd_exp): New expander.  Use
19497         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19498         (sse2_unpcklpd_exp): New expander.  Use
19499         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19500         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
19501         to handle nonimmediate operands.
19502         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
19503         to handle nonimmediate operands.
19504         (*sse2_<plusminus_insn><mode>3): Rename from
19505         sse2_<plusminus_insn><mode>3 insn pattern.
19506         (sse2_<plusminus_insn><mode>3): New expander.  Use
19507         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19508         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
19509         (sse2_umulv2siv2di3): New expander.  Use
19510         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19511         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
19512         (sse4_1_mulv2siv2di3): New expander.  Use
19513         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19514         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
19515         (sse2_pmaddwd): New expander.  Use
19516         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19517         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
19518         (sse2_eq<mode>3): New expander.  Use
19519         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19520         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
19521         (sse4_1_eqv2di3): New expander.  Use
19522         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19523         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19524         (sse2_uavgv16qi3): New expander.  Use
19525         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19526         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19527         (sse2_uavgv16qi3): New expander.  Use
19528         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19529         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
19530         (sse2_uavgv8hi3): New expander.  Use
19531         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19532         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
19533         (ssse3_pmulhrswv8hi3): New expander.  Use
19534         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19535         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
19536         (ssse3_pmulhrswv4hi3): New expander.  Use
19537         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19538
19539         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
19540         (<sse>_vmmul<mode>3): Ditto.
19541         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
19542         (divv2df3): Ditto.
19543         (ssse3_pmaddubsw128): Use register_operand for operand 1.
19544         (ssse3_pmaddubsw): Ditto.
19545
19546         * config/i386/i386.c (struct_builtin_description)
19547         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
19548         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
19549         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
19550         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
19551         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
19552         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
19553         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
19554         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
19555         (ix86_fixup_binary_operands): Assert that src1
19556         and src2 must have the same mode when swapped.
19557         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
19558         and ix86_binary_operator_ok.  Do not force operands in registers
19559         when optimizing.
19560
19561 2008-05-07  Jan Hubicka  <jh@suse.cz>
19562
19563         * cgraph.c (dump_cgraph_node): Update.
19564         * cgraph.h (cgraph_local_info): Break out inline summary.
19565         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
19566         hook.
19567         * ipa-inline (inline_summary): New accestor function.
19568         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
19569         cgraph_decide_inlining, compute_inline_parameters): Update.
19570         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
19571
19572 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
19573
19574         Cleanup ColdFire scheduling support and add V4 pipeline model.
19575
19576         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
19577         (define_attr cpu): Add cfv4 value.
19578         (define_attr type, define_attr type1): Merge into a single 'type'
19579         attribute.  Update all uses.
19580         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
19581         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
19582         Update all uses.
19583         (define_attr opx_mem, define_attr opy_mem): Remove.
19584         (define_attr op_mem): Clean up, update comment.
19585         (define_attr size): Use specific values instead of general int.
19586         (define_attr guess, define_attr split): Remove.  Update all uses.
19587         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
19588         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
19589         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
19590         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
19591         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
19592         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
19593         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
19594         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
19595         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
19596         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
19597         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
19598         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
19599         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
19600         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
19601         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
19602         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
19603         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
19604         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
19605         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
19606         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
19607         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
19608         Update or set attributes.
19609         (stack_tie): New fake instruction.
19610
19611         * config/m68k/m68k.h (TUNE_CFV4): New macro.
19612         (m68k_sched_attr_size): Update declaration.
19613         (m68k_sched_attr_type2): Remove.
19614         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
19615         Declare new bypass predicates.
19616
19617         * config/m68k/m68k.c (m68k_sched_issue_rate,
19618         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
19619         implementations.
19620         (TARGET_SCHED_ISSUE_RATE,
19621         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
19622         (override_options): Handle scheduling for ColdFire V4 core.
19623         (m68k_expand_prologue): Emit stack_tie.
19624         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
19625         'OP_TYPE_FPN'.  Update all uses.
19626         (sched_guess_p): Remove.
19627         (sched_address_type): Handle symbolic addresses.
19628         (sched_get_operand): New static function.
19629         (sched_operand_type): Merge into sched_attr_op_type.
19630         (sched_attr_op_type): Handle FP registers, handle quick constants,
19631         update.
19632         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
19633         (m68k_sched_attr_size): Update.  Move logic to ...
19634         (sched_get_attr_size_int): New static function.
19635         (sched_get_opxy_mem_type): New static function.
19636         (m68k_sched_attr_op_mem): Update.
19637         (m68k_sched_attr_type2): Remove.
19638         (sched_cfv4_bypass_data): New static variable.
19639         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
19640         (m68k_sched_issue_rate): Implement scheduler hook.
19641         (struct _sched_ib: enabled_p): New field.
19642         (m68k_sched_variable_issue): Update.  Handle V4.
19643         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
19644         sched_dump_class_func_t, sched_dump_split_class,
19645         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
19646         sched_dump_dfa_class, m68k_sched_dump): Remove.
19647         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
19648         hook.
19649         (m68k_sched_init_global): Remove statisctics dumping, introduce
19650         sanity check that all instructions have pipeline reservations.  Handle
19651         ColdFire V4 core.
19652         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19653         Handle ColdFire V4 core.
19654         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
19655         New static functions.
19656         (m68k_sched_address_bypass_p): New bypass predicate.
19657         (sched_get_indexed_address_scale): New static function.
19658         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
19659
19660         * cf.md: Update comments.
19661         (define_attr type2): Remove.  Use 'type' attribute instead.
19662         Update all uses.
19663         (cf_ib): Rename to cfv123_ib.  Update all uses.
19664         (cf_oep): Rename to cfv123_oep.  Update all uses.
19665         (cf_chr): Rename to cfv123_chr.  Update all uses.
19666         (cf_mem): Rename to cfv123_mem.  Update all uses.
19667         (cf_mac): Move to more appropriate place.
19668         (cfv123_guess): New automaton and cpu_unit.
19669         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
19670         Update uses of 'size' attribute.  Handle before reload scheduling.
19671         (cfv123_guess): New dummy reservation for unhandled instructions.
19672         (cfv4_*): Pipeline description of ColdFire V4 core.
19673         (ignore): New reservation to handle 'ignore' type.
19674
19675 2008-05-07  Ian Lance Taylor  <iant@google.com>
19676
19677         PR middle-end/36013
19678         * gimplify.c (find_single_pointer_decl_1): Don't look through
19679         indirections.
19680         (find_single_pointer_decl): Adjust comments.
19681
19682 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
19683
19684         PR middle-end/36137
19685         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
19686         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
19687
19688         PR middle-end/36106
19689         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
19690         integral type rather than floating point, then VIEW_CONVERT_EXPR
19691         to the floating point type.
19692
19693 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19694
19695         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
19696         TFmode op0 to register.
19697
19698 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
19699
19700         * c-decl.c (grokdeclarator): Comment typo.
19701
19702 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
19703
19704         * tree-flow.h: Remove prototype for computed_goto_p.
19705         * tree-cfg.c (computed_goto_p): Make static.
19706
19707 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19708
19709         PR target/35657
19710         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
19711         (contains_aligned_value_p): This.  Handle _Decimal128.
19712         (ix86_function_arg_boundary): Only align _Decimal128 to its
19713         natural boundary and handle it properly.
19714
19715 2008-05-06  Martin Jambor  <mjambor@suse.cz>
19716
19717         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
19718         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
19719         (ipcp_method_set_orig_node): Removed.
19720         (ipcp_cval_get_cvalue_type): Removed.
19721         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
19722         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
19723         (ipcp_cval_set_cvalue_type): Removed.
19724         (ipcp_cval_get_cvalue): Removed.
19725         (ipcp_cval_set_cvalue): Removed.
19726         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
19727         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
19728         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
19729         (ipcp_cval_meet): Renamed to ipa_lattice_meet
19730         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
19731         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
19732         (ipcp_get_ith_lattice): Changed parameters.
19733         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
19734         (ipcp_lattice_from_jfunc): Changed parameters.
19735         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
19736         (ipcp_method_cval_print): Added temporary variable info.
19737         (ipcp_redirect): Removed already unused local variable caller.
19738         (ipcp_redirect): New temporary variable orig_callee_info
19739         (ipcp_redirect): Removed newly unused local variable callee.
19740         (ipcp_redirect): Removed (a bit confusing) local variable type.
19741         (ipcp_insert_stage): Added local variable info.
19742         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
19743         renamed too
19744         (ipcp_formal_create): Removed.
19745         (ipcp_method_cval_set): Removed.
19746         (ipcp_propagate_stage): Renamed lattice variables.
19747         (ipcp_method_cval_set_cvalue_type): Removed.
19748         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
19749         (ipcp_print_all_lattices): Changed printed strings to refer to
19750         lattices rather than cvals.
19751         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
19752         (ipcp_propagate_const): Changed formal parameters.
19753         (build_const_val): Changed formal parameters.
19754         (ipcp_insert_stage): Removed useless variable cvalue
19755         (build_const_val): Changed formal parameters.
19756         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
19757         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
19758         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
19759         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
19760         (ipcp_print_func_profile_counts): Changed string from "method" to
19761         "function"
19762         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
19763         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
19764         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
19765         (ipcp_structures_print): Renamed to ipcp_print_all_structures
19766         (ipcp_profile_print): Renamed to ipcp_print_profile_data
19767         (ipcp_lat_is_const): Changed parameters and made inline.
19768         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
19769         (ipcp_redirect): Renamed to ipcp_need_redirect_p
19770         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
19771         the predicate condition directly
19772         (ipcp_propagate_stage): Added local variable args. Removed local
19773         variable callee.  (Both are mere code simplifications.)
19774         (ipcp_method_dont_insert_const): Renamed to
19775         ipcp_node_not_modifiable_p.
19776         (ipcp_node_not_modifiable_p): Made inline.
19777         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
19778         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
19779         (ipcp_print_all_lattices): Removed variable cvalue
19780         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
19781         Updated comments.
19782
19783 2008-05-06  Olivier Hainque  <hainque@adacore.com>
19784
19785         * tree-sra.c (try_instantiate_multiple_fields): Early return
19786         if field has POINTER_TYPE.
19787
19788 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
19789
19790         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
19791         by using 'q' specifier for instruction.
19792         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
19793
19794 2008-05-06  Anatoly Sokolov <aesok@post.ru>
19795
19796         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
19797         Change mode of zero_extract from QImode to HImode.
19798         (sign bit tests peepholes): (Ditto.).
19799
19800 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
19801
19802         * config/i386/mmx.md: Remove double backslashes from asm templates.
19803         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
19804         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19805         to handle nonimmediate operands.
19806         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
19807         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19808         to handle nonimmediate operands.
19809         (*mmx_<code>v2sf3_finite): New insn pattern.
19810         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
19811         (mmx_<code>v2sf3): New expander.  Use
19812         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19813         (mmx_<plusminus_insn><mode>3): New expander.  Use
19814         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19815         (*mmx_<plusminus_insn><mode>3): New insn pattern.
19816         (mmx_add<mode>3): Removed.
19817         (mmx_ssadd<mode>3): Ditto.
19818         (mmx_usadd<mode>3): Ditto.
19819         (mmx_sub<mode>3): Ditto.
19820         (mmx_sssub<mode>3): Ditto.
19821         (mmx_ussub<mode>3): Ditto.
19822         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
19823         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
19824         to handle nonimmediate operands.
19825         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
19826         insn pattern.
19827         (mmx_smulv4hi3_highpart): New expander.  Use
19828         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19829         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
19830         insn pattern.
19831         (mmx_umulv4hi3_highpart): New expander.  Use
19832         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19833         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
19834         (mmx_<code>v4hi3): New expander.  Use
19835         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19836         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
19837         (mmx_<code>v8qi3): New expander.  Use
19838         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19839         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
19840         (mmx_<code><mode>3): New expander.  Use
19841         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19842
19843 2008-05-05  Jan Hubicka  <jh@suse.cz>
19844
19845         PR tree-optimization/36118
19846         * passes.c (pass_init_dump_file): Fix dump header.
19847
19848 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19849
19850         PR middle-end/36141
19851         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
19852         VCE for function decls.
19853
19854 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19855
19856         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
19857
19858 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19859
19860         * config/i386/i386.md (sat_plusminus): New.
19861         (plusminus_insn): Likewise.
19862         (plusminus_mnemonic): Likewise.
19863         (addsub): Removed.
19864         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
19865         (*<addsub><mode>3_cc_overflow): Renamed to ...
19866         (*<plusminus_insn><mode>3_cc_overflow): This.
19867         (*<addsub>si3_zext_cc_overflow): Renamed to ...
19868         (*<plusminus_insn>si3_zext_cc_overflow): This.
19869
19870         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
19871         (<plusminus_insn><mode>3): This.
19872         (*<addsub><mode>3): Renamed to ...
19873         (*<plusminus_insn><mode>3): This.
19874         (<sse>_vm<addsub><mode>3): Renamed to ...
19875         (<sse>_vm<plusminus_insn><mode>3): This.
19876         (sse3_h<addsub>v4sf3): Renamed to ...
19877         (sse3_h<plusminus_insn>v4sf3): This.
19878         (sse3_h<addsub>v2df3): Renamed to ...
19879         (sse3_h<plusminus_insn>v2df3): This.
19880         (<plusminus_insn><mode>3): New.
19881         (*<plusminus_insn><mode>3): Likewise.
19882         (sse2_<plusminus_insn><mode>3): Likewise.
19883         (add<mode>): Removed.
19884         (*add<mode>3): Likewise.
19885         (sse2_ssadd<mode>3): Likewise.
19886         (sse2_usadd<mode>3): Likewise.
19887         (sub<mode>3): Likewise.
19888         (*sub<mode>3): Likewise.
19889         (sse2_sssub<mode>3): Likewise.
19890         (sse2_ussub<mode>3): Likewise.
19891
19892 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
19893
19894         * gthr-single.h: Add in required interface elements as per gthr.h.
19895         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
19896         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
19897         Generalize UNUSED macro.
19898         (__gthread_once): Add.
19899         (__gthread_key_create): Add.
19900         (__gthread_key_delete): Add.
19901         (__gthread_getspecific): Add.
19902         (__gthread_setspecific): Add.
19903
19904 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
19905
19906         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
19907         the same size types for the indirect reference on the rhs, then
19908         create a VCE.
19909
19910 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
19911
19912         * config/i386/i386.md
19913         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
19914         one insn template instead of template series.
19915         (*xordi_1_rex64): Ditto.
19916         (*xordi_2_rex64): Ditto.
19917
19918 2008-05-05  Ira Rosen  <irar@il.ibm.com>
19919
19920         PR tree-optimization/36119
19921         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
19922         in case of SLP.
19923
19924 2008-06-04  Jan Hubicka  <jh@suse.cz>
19925
19926         tree-optimization/36100
19927         * tree-pass.h (pass_O0_always_inline): Declare.
19928         * ipa-inline.c (inline_transform): Remove dead code.
19929         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
19930         pass_O0_always_inline): New.
19931         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
19932
19933 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
19934
19935         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
19936         mnemonic in this_param move for TARGET_64BIT.
19937
19938 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
19939
19940         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
19941         (*strmovsi_rex_1): Ditto.
19942         (*strsetsi_1): Ditto.
19943         (*strsetsi_rex_1): Ditto.
19944
19945         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
19946         adddicc expanders using SWI mode iterator.
19947
19948 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
19949
19950         PR target/36121
19951         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
19952         argument handling.
19953
19954 2008-05-04  David S. Miller  <davem@davemloft.net>
19955
19956         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
19957         (sparc*-*-linux*): Use linux.h in tm_file.
19958         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
19959         compiler defaulting to 32-bit.
19960         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
19961         no longer needed.
19962         * config/sparc/linux.h: Remove definitions now obtained
19963         properly from linux.h
19964         * config/sparc/linux64.h: Likewise.
19965         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
19966         don't want this setting for 32-bit builds in a biarch compiler.
19967         * doc/install.texi: Add sparc-linux to list of targets
19968         supporting --enable-targets=all.
19969
19970 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
19971
19972         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
19973
19974 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
19975
19976         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
19977         after V4SI_FTYPE_V8HI.
19978         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
19979         case V4SI_FTYPE_V2DF.
19980
19981 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
19982
19983         * doc/invoke.texi (max-flow-memory-locations): Removed.
19984         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
19985
19986 2008-05-03  Richard Guenther  <rguenther@suse.de>
19987
19988         PR middle-end/34973
19989         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
19990
19991 2008-05-02  David S. Miller  <davem@davemloft.net>
19992
19993         * config.gcc (need_64bit_hwint): Document libcpp dependency.
19994
19995 2008-05-02  Simon Baldwin <simonb@google.com>
19996
19997         PR bootstrap/36108
19998         * c-common.h (warn_array_subscript_range): Removed.
19999         * c-common.c (warn_array_subscript_range): Ditto.
20000         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
20001         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
20002
20003 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20004
20005         * config/i386/i386.c (ix86_special_builtin_type): New.
20006         (bdesc_special_args): Likewise.
20007         (ix86_expand_special_args_builtin): Likewise.
20008         (ix86_init_mmx_sse_builtins): Updated.
20009         (ix86_expand_builtin): Updated.
20010         (ix86_expand_store_builtin): Removed.
20011         (ix86_expand_unop_builtin): Likewise.
20012
20013         * config/i386/mm3dnow.h (__v2sf): Moved to ...
20014         * config/i386/mmintrin.h (__v2sf): Here.
20015
20016         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
20017         const __v2sf.
20018         (_mm_loadl_pi): Likewise.
20019         (_mm_storeh_pi): Replace __v2si with __v2sf.
20020         (_mm_storel_pi): Likewise.
20021
20022         * doc/extend.texi: Correct __builtin_ia32_loadhps,
20023         __builtin_ia32_loadlps, __builtin_ia32_storehps,
20024         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
20025         __builtin_ia32_loadlpd.
20026
20027 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20028
20029         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
20030         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
20031         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
20032         (ix86_init_mmx_sse_builtins): Updated.
20033         (ix86_expand_args_builtin): Likewise.
20034         (ix86_expand_builtin): Likewise.
20035         (ix86_expand_unop1_builtin): Renamed to ...
20036         (ix86_expand_unop_vec_merge_builtin): This.
20037
20038 2008-05-01  Jan Hubicka  <jh@suse.cz>
20039
20040         PR bootstrap/36100
20041         * ipa-inline.c (inline_generate_summary): Make static.
20042         (inline_transform): Do not call inlining at -O0; make static.
20043         * passes.c (execute_todo): Add sanity check.
20044         (execute_one_ipa_transform_pass): Execute proper flags.
20045
20046 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
20047
20048         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
20049         (DECL_NONADDRESSABLE_P): Likewise.
20050         * alias.c (record_component_aliases): Fix comment.
20051
20052 2008-05-01  Simon Baldwin <simonb@google.com>
20053
20054         * c-common.h (warn_array_subscript_range): New function.
20055         * c-common.c (warn_array_subscript_range): Ditto.
20056         * tree-vrp.c (check_array_ref): Corrected code to agree with
20057         comment, ignoring only arrays of size 0 or size 1.
20058         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
20059
20060 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20061
20062         * config/i386/i386.c (ix86_builtin_type): Replace
20063         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
20064         (bdesc_args): Updated.
20065         (ix86_init_mmx_sse_builtins): Likewise.
20066         (ix86_expand_args_builtin): Likewise.
20067
20068         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
20069         with __v1di.
20070
20071         * doc/extend.texi: Correct __builtin_ia32_palignr.
20072
20073 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20074
20075         PR target/36095
20076         * config/i386/i386.c (bdesc_crc32): Removed.
20077         (ix86_expand_crc32): Likewise.
20078         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
20079         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
20080         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
20081         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
20082         UINT_FTYPE_UINT_UCHAR.
20083         (bdesc_args): Updated. Add crc32 builtins.
20084         (ix86_init_mmx_sse_builtins): Updated.
20085         (ix86_expand_args_builtin): Updated to support subreg.
20086
20087         * doc/extend.texi: Correct __builtin_ia32_crc32di.
20088
20089 2008-05-01  Jan Hubicka  <jh@suse.cz>
20090
20091         * tree-pass.h (opt_pass): Add IPA_PASS.
20092         (varpool_node, cgraph_node): Forward declare.
20093         (ipa_opt_pass): Define.
20094         (pass_ipa_inline): Turn into ipa_opt_pass.
20095         (pass_apply_inline): Remove.
20096         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
20097         (apply_inline): Turn into ....
20098         (inline_transform): ... this one.
20099         (inline_generate_summary): New function.
20100         (pass_apply_inline): Remove.
20101         * function.h (ipa_opt_pass): Forward declare structure; typedef;
20102         vector.
20103         (struct function): Add ipa_transforms_to_apply.
20104         * passes.c (register_one_dump_file): Work on IPA_PASS.
20105         (init_optimization_passes): Remove pass_inline_parameters and
20106         pass_apply_inline.
20107         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
20108         (execute_one_pass) ... here; apply transforms when possible.
20109         (add_ipa_transform_pass, execute_ipa_summary_asses,
20110         execute_one_ipa_transform_pass): New.
20111         (execute_ipa_pass_list): Update for IPA_PASS type.
20112
20113 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20114
20115         * config/i386/i386.c (ix86_builtin_type): Add
20116         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
20117         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
20118         (bdesc_args): Add SSE4a builtins.
20119         (ix86_init_mmx_sse_builtins): Updated.
20120         (ix86_expand_args_builtin): Likewise.
20121         (ix86_expand_builtin): Likewise.
20122
20123 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20124
20125         * config/i386/i386.c (ix86_builtin_type): Add
20126         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
20127         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
20128         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
20129         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
20130         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
20131         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
20132         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
20133         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
20134         and DI_FTYPE_DI_DI_INT.
20135         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
20136         (ix86_init_mmx_sse_builtins): Updated.
20137         (ix86_expand_args_builtin): Likewise.
20138         (ix86_expand_builtin): Likewise.
20139         (ix86_expand_binop_imm_builtin): Removed.
20140
20141         * doc/extend.texi: Correct __builtin_ia32_palignr128.
20142
20143 2008-04-30  Richard Guenther  <rguenther@suse.de>
20144
20145         PR tree-optimization/32921
20146         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
20147
20148 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
20149
20150         * config/arm/arm.c (arm_unwind_emit): Use
20151         crtl->all_throwers_are_sibcalls instead of
20152         cfun->all_throwers_are_sibcalls.
20153         (arm_output_fn_unwind): Likewise.
20154         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
20155         instead of cfun->uses_pic_offset_table.
20156         (frv_expand_prologue): Likewise.
20157         (frv_frame_pointer_required): Likewise.
20158         (frv_expand_fdpic_call): Likewise.
20159         (frv_emit_movsi): Likewise.
20160         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
20161         cfun->returns_pcc_struct instead of
20162         current_function_returns_pcc_struct.
20163         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
20164         instead of cfun->calls_eh_return.
20165         (m32c_pushm_popm): Likewise.
20166         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
20167         "extern" declaration.
20168
20169 2008-04-30  Richard Guenther  <rguenther@suse.de>
20170
20171         PR tree-optimization/21636
20172         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
20173         constant address.
20174         (evaluate_stmt): Print the likely value.
20175         (ccp_visit_stmt): Avoid excessive vertical spacing.
20176
20177 2008-04-30  Rafael Espíndola  <espindola@google.com>
20178
20179         * builtins.c (fold_call_expr): Return realret.
20180         * tree-ssa-threadedge.c
20181         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
20182         __builtin_object_size.
20183
20184 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
20185
20186         * gcc.c (wrapper_string): New variable.
20187         (insert_wrapper): New function.
20188         (execute): New option -wrapper.
20189         * doc/invoke.texi (Overall Options): New driver option -wrapper.
20190
20191 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
20192
20193         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
20194         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
20195         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
20196         from...
20197         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
20198         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
20199         config/rs6000/e500crtres64gprctr.asm,
20200         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
20201         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
20202         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
20203         config/rs6000/e500crtsav64gprctr.asm,
20204         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
20205         config/rs6000/e500crtsavg64gprctr.asm: New files.
20206         * config/rs6000/t-ppccomm: Add build rules for new files.
20207         (LIB2FUNCS_STATIC_EXTRA): Add new files.
20208         * config/rs6000/t-netbsd: Add build rules for new files.
20209         (LIB2FUNCS_STATIC_EXTRA): New variable.
20210         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
20211         (CRTSAVRES_DEFAULT_SPEC): Likewise.
20212         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
20213
20214 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
20215
20216         * config/i386/i386.c (ix86_builtin_type): Add
20217         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
20218         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
20219         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
20220         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
20221         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
20222         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
20223         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
20224         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
20225         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
20226         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
20227         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
20228         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
20229         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
20230         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
20231         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
20232         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
20233         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
20234         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
20235         V1DI_FTYPE_V2SI_V2SI.
20236         (bdesc_2arg): Moved to ...
20237         (bdesc_args): Here.
20238         (ix86_init_mmx_sse_builtins): Updated.
20239         (ix86_expand_args_builtin): Updated.  Take a pointer
20240         to const struct builtin_description.  Handle comparison
20241         builtin functions.
20242         (ix86_expand_sse_compare): Take a new argument for swapping operands.
20243         (ix86_expand_builtin): Updated.
20244
20245         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
20246         (ssse3_pmaddubsw128): This.
20247         (ssse3_pmaddubswv4hi3): Renamed to ...
20248         (ssse3_pmaddubsw): This.
20249
20250         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
20251         (__builtin_ia32_packssdw128): Likewise.
20252         (__builtin_ia32_packuswb128): Likewise.
20253         (__builtin_ia32_pmaddubsw): Likewise.
20254         (__builtin_ia32_pmaddubsw128): Likewise.
20255
20256 2008-04-30  Richard Guenther  <rguenther@suse.de>
20257
20258         PR tree-optimization/14847
20259         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
20260         (recognize_bits_test): Use it.
20261         (recognize_single_bit_test): Likewise.
20262
20263 2008-04-30  Martin Jambor  <mjambor@suse.cz>
20264
20265         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
20266         instead of setting number of formal parameters to zero.
20267         (ipcp_init_stage): Do not set the number of actual parameters to zero
20268         either.
20269         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
20270         which are called with variable number of arguments.
20271         (ipcp_insert_stage): Explicitely skipping all nodes which are
20272         called with variable number of arguments.
20273         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
20274         number of parameters.
20275
20276         * ipa-prop.h (struct ipa_node_params): Added flag
20277         called_with_var_arguments
20278         (ipa_set_param_count): Added.  Changed sole setter to use it.
20279         (ipa_get_param_count): Added.  All readers of param_count
20280         converted to use it instead.
20281         (ipa_set_called_with_variable_arg): Added.
20282         (ipa_is_called_with_var_arguments): Added.
20283         (ipa_get_ith_param): Added.  All readers of param_decls converted
20284         to use it instead.
20285         (ipa_set_cs_argument_count): Added, sole writer to argument_count
20286         changed to use it.
20287         (ipa_get_cs_argument_count): Added, all readers of argument_count
20288         changed to cal it.
20289         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
20290         to use it.
20291
20292         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
20293         (struct ipcp_lattice): Renamed cval_type to type
20294         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
20295
20296         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
20297         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
20298         (ipcp_insert_stage): Changed the type of variable cvalue to tree
20299         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
20300         (build_const_val): Changed the type of parameter cvalue to tree
20301         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
20302         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
20303
20304         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
20305         constant
20306
20307         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
20308         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
20309         (ipa_add_method): Renamed to ipa_push_func_to_list
20310         (ipa_remove_method): Renamed to ipa_pop_func_from_list
20311         (ipa_callsite_param_count): Removed.
20312         (ipa_callsite_param_count_set): Removed.
20313         (ipa_callsite_param): Removed.
20314         (ipa_callsite_callee): Removed.
20315         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
20316         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
20317         (ipa_method_formal_count): Removed.
20318         (ipa_method_formal_count_set): Removed.
20319         (ipa_method_get_tree): Removed.
20320         (ipa_method_tree_map_create): Removed.
20321         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
20322         (ipa_create_param_decls_array): Creates the array itself
20323         (ipa_create_param_decls_array): Temporary variable info instead of
20324         a few dereferences.
20325         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
20326         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
20327         (get_type): Removed.
20328         (ipa_jf_get_info_type): Removed.
20329         (ipa_node_create): Renamed to ipa_create_node_params
20330         (ipa_free): Renamed to ipa_free_all_node_params
20331         (ipa_nodes_create): Renamed to ipa_create_all_node_params
20332         (ipa_edges_create): Renamed to ipa_create_all_edge_args
20333         (ipa_edges_free): Renamed to ipa_free_all_edge_args
20334         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
20335         (ipa_free_all_node_params): Deallocation to jump_functions moved to
20336         ipa_free_all_edge_args
20337         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
20338         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
20339         (ipa_create_methodlist_node): Removed.
20340         (ipa_methodlist_method): Removed.
20341         (ipa_methodlist_method_set): Removed.
20342         (ipa_methodlist_next_method): Removed.
20343         (ipa_methodlist_next_method_set): Removed.
20344         (ipa_method_is_modified): Removed.
20345         (ipa_method_modify_create): Removed.
20346         (ipa_method_modify_init): Temporary variable info instead of a few
20347         dereferences.
20348         (ipa_detect_param_modifications): Temporary variable info instead of
20349         a few dereferences.
20350         (ipa_compute_jump_functions): Temporary variable info instead of
20351         a few dereferences.
20352         (ipa_method_modify_set): Removed.
20353         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
20354         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
20355         than craph_node as the first parameter.
20356         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
20357         (ipa_method_modify_init): Removed.
20358         (ipa_compute_jump_functions): Added a temp variable instead of
20359         repeatadly dereferencing the cgraph_edge.aux pointer
20360         (ipa_callsite_param_set_type): Removed.
20361         (ipa_compute_jump_functions): i renamed to index and moved to
20362         an inner block
20363         (ipa_callsite_param_set_info_type_formal): Removed.
20364         (ipa_callsite_param_set_info_type): Removed.
20365         (ipa_callsite_param_map_create): Removed.
20366         (ipa_callsite_tree): Removed.
20367         (ipa_callsite_caller): Removed.
20368         (ipa_pop_func_from_list): return_method removed to return_func
20369
20370         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
20371         prefixed all values with IPA_. Changed all users.
20372         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
20373         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
20374         and FORMAL_IPATYPE IPA_PASS_THROUGH.
20375         (union parameter_info): Renamed to jump_func_value.
20376         (union jump_func_value): Renamed value to constant
20377         (struct ipa_jump_func): Renamed info_type to value
20378         (struct ipa_node): Renamed to ipa_node_params
20379         (struct ipa_node_params): Renamed ipa_arg_num to param_count
20380         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
20381         (struct ipa_node_params): Renamed ipa_mod to modified_flags
20382         (struct ipa_edge): Renamed to ipa_edge_args
20383         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
20384         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
20385         (struct ipa_methodlist): Renamed to ipa_func_list
20386         (struct ipa_func_list): method_p renamed to node, next_method
20387         renamed to next
20388         (ipa_methodlist_p): Removed, switched all users to struct pointer
20389         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
20390
20391 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
20392
20393         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
20394         (rs6000_emit_epilogue): Use backchain to restore only when we
20395         have a large frame.  Make use of frame pointer to restore if we
20396         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
20397
20398 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
20399
20400         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20401         Add mode to zero_extract.
20402         (sign bit tests peepholes): (Ditto.).
20403
20404 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20405
20406         * config/i386/i386.c (ix86_builtins): Replace Prescott New
20407         Instructions in comments with SSE3.
20408         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
20409         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
20410         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
20411         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
20412         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
20413         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
20414         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
20415         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
20416         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
20417         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
20418         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
20419         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
20420         (bdesc_sse_args): Renamed to ...
20421         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
20422         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
20423         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
20424         IX86_BUILTIN_FABSQ.
20425         (bdesc_1arg): Moved to ...
20426         (bdesc_args): Here.
20427         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
20428         Instructions in comments with SSE3.
20429         (ix86_expand_sse_operands_builtin): Renamed to ...
20430         (ix86_expand_args_builtin): This.  Updated.
20431         (ix86_expand_unop1_builtin): Update comments.
20432         (ix86_expand_builtin): Updated.
20433
20434 2008-04-29  Richard Guenther  <rguenther@suse.de>
20435
20436         PR tree-optimization/36078
20437         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
20438         Update virtual SSA form after cleaning up the CFG.
20439
20440 2008-04-29  Richard Guenther  <rguenther@suse.de>
20441
20442         PR middle-end/15255
20443         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
20444
20445 2008-04-29  Richard Guenther  <rguenther@suse.de>
20446
20447         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
20448         (compute_may_aliases): Do not call finalize_ref_all_pointers.
20449         (compute_flow_insensitive_aliasing): Do not treat
20450         PTR_IS_REF_ALL pointers special.
20451         (get_smt_for): Likewise.
20452         (may_alias_p): Re-structure.
20453         (is_escape_site): A ref-all pointer conversion is not an escape site.
20454         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
20455         PTR_IS_REF_ALL pointers special.
20456         * tree-ssa-structalias.h (struct alias_info): Remove
20457         ref_all_symbol_mem_tag field.
20458         (PTR_IS_REF_ALL): Remove.
20459
20460 2008-04-29  Richard Guenther  <rguenther@suse.de>
20461
20462         PR middle-end/36077
20463         * fold-const.c (extract_muldiv_1): In combining division constants
20464         make sure to never overflow.
20465
20466 2008-04-29  Nick Clifton  <nickc@redhat.com>
20467
20468         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
20469
20470 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20471
20472         PR bootstrap/35169
20473         * optc-gen.awk: Work around HP-UX/IA awk bug.
20474
20475 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
20476
20477         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
20478         2008-04-25 commit.
20479
20480 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20481
20482         PR target/36073
20483         * config/i386/i386.md
20484         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
20485         Change operand 1 predicate to nonimmediate_operand.
20486
20487 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
20488
20489         PR debug/36060
20490         * dwarf2out.c (struct die_struct): Mark as chain_circular through
20491         die_sub field.
20492         * gengtype.c (walk_type, write_func_for_structure): Handle
20493         chain_circular.
20494         * doc/gty.texi: Document chain_circular.
20495
20496 2008-04-28  Richard Guenther  <rguenther@suse.de>
20497
20498         PR tree-optimization/36066
20499         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
20500         SCEV and loop.
20501
20502 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20503
20504         PR target/36064
20505         * config/i386/i386.md
20506         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
20507         Use match_scratch instead of match_operand for operands 3 and 4.
20508
20509 2008-04-27  Richard Guenther  <rguenther@suse.de>
20510
20511         PR tree-optimization/18754
20512         PR tree-optimization/34223
20513         * tree-pass.h (pass_complete_unrolli): Declare.
20514         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
20515         loop size before and after unconditionally of UL_NO_GROWTH in effect.
20516         Rewrite loop into loop closed SSA form if it is not already.
20517         (tree_unroll_loops_completely): Re-structure to iterate over
20518         innermost loops with intermediate CFG cleanups.
20519         Unroll outermost loops only if requested or the code does not grow
20520         doing so.
20521         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
20522         loops are available.
20523         (tree_vectorize): Instead do so here.
20524         (tree_complete_unroll): Also unroll outermost loops.
20525         (tree_complete_unroll_inner): New function.
20526         (gate_tree_complete_unroll_inner): Likewise.
20527         (pass_complete_unrolli): New pass.
20528         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
20529         uses outside of the loop.
20530         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
20531         form if it is available.
20532         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
20533         * passes.c (init_optimization_passes): Schedule complete inner
20534         loop unrolling pass before the first CCP pass after final inlining.
20535
20536 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
20537
20538         * targhooks.h (default_emutls_var_fields,
20539         default_emutls_var_init): Declare.
20540         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
20541         * target.h (struct gcc_target): Add struct emutls member.
20542         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
20543         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
20544         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
20545         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
20546         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
20547         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
20548         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
20549         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
20550         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
20551         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
20552         emit debug information.
20553         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
20554         * varasm.c: Include targhooks.h.
20555         (emutls_object_section, emutls_tmpl_section): New.
20556         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
20557         (EMUTLS_SEPARATOR): New.
20558         (prefix_name): New.
20559         (get_emutls_object_name): New.
20560         (default_emutls_var_fields): New, broken out of ...
20561         (get_emutls_object_type): ... here.  Adjust to use target hooks.
20562         (get_emutls_init_templ_addr): Adjust to use target hooks.
20563         (emutls_decl): Adjust to use target hooks.
20564         (emutls_finish): Likewise.
20565         (default_emutls_var_init): New, broken out of ...
20566         (assemble_variable): ... here.  Adjust to use target hooks.
20567         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
20568         SECCAT_EMUTLS_TMPL.
20569         * c-common.c (handle_section_attribute): Prevent overriding
20570         sections for emulated tls with special sections.
20571         * config/i386/i386.c (x86_64_elf_select_section): Add
20572         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
20573         (x86_64_elf_unique_section): Likewise.
20574         * config/vxworks.c: Include tree.h.
20575         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
20576         (vxworks_override_options): Set TLS scheme.
20577         * doc/tm.texi (Emulated TLS): New node.
20578
20579 2008-04-26  Simon Baldwin <simonb@google.com>
20580
20581         PR c/35652
20582         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
20583         with propagated string constants.
20584
20585 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
20586
20587         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
20588         constraint for operand 2 when operand 0 is memory operand.
20589         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
20590         operand 0 is memory operand.
20591         (fix_trunc<mode>_i387_with_temp): Ditto.
20592         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
20593         operand 2 when operand 1 is memory operand.
20594         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
20595         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
20596         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
20597         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20598         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
20599         operands 2,3 and 4 when operand 1 is memory operand.
20600         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
20601         is memory operand.
20602         (fistdi2_floor_with_temp): Ditto.
20603         (fist<mode>2_floor_with_temp): Ditto.
20604         (fistdi2_ceil_with_temp): Ditto.
20605         (fist<mode>2_ceil_with_temp): Ditto.
20606         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
20607
20608 2008-04-26  David Daney  <ddaney@avtrex.com>
20609
20610         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
20611         unspec_volitile.
20612         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
20613         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
20614         UNSPEC_UPDATE_GOT_VERSION): Renumber.
20615         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
20616         (compare_and_swap_12): New insn.
20617         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
20618         * config/mips/mips.c (mips_force_binary): New function.
20619         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
20620         (mips_expand_compare_and_swap_12): New function.
20621         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
20622
20623 2008-04-25  Jan Hubicka  <jh@suse.cz>
20624
20625         PR testsuite/35843
20626         * cfgexpand.c (pass_expand): Turn into RTL pass.
20627         * passes.c (execute_one_pass): Do pass typechecking after execution.
20628         * tree-pass.h (pass_expand): Turn into RTL pass.
20629
20630         * function.h (struct rtl_data): Move here fields
20631         accesses_prior_frames, calls_eh_return, saves_all_registers,
20632         has_nonlocal_goto, has_asm_statement, is_thunk,
20633         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
20634         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
20635         arg_pointer_save_area_init from struct function; turn into bool.
20636         (struct function): Move
20637         calls_eh_return, saves_all_registers, has_nonlocal_goto,
20638         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
20639         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
20640         tail_call_emit, arg_pointer_save_area_init
20641         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
20642         (current_function_returns_struct, current_function_returns_pcc_struct,
20643         current_function_calls_setjmp, current_function_calls_alloca,
20644         current_function_accesses_prior_frames,
20645         current_function_calls_eh_return, current_function_is_thunk,
20646         current_function_stdarg, current_function_profile,
20647         current_function_limit_stack, current_function_uses_pic_offset_table,
20648         current_function_uses_const_pool, current_function_has_nonlocal_label,
20649         current_function_saves_all_registers,
20650         current_function_has_nonlocal_goto,
20651         current_function_has_asm_statement): Remove accesor macros.
20652         * ra-conflict.c (global_conflicts): Update.
20653         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
20654         (suitable_for_tail_call_opt_p): Update.
20655         * builtins.c (expand_builtin_return_addr): Update.
20656         (expand_builtin_setjmp_setup): Update.
20657         (expand_builtin_nonlocal_goto): Update.
20658         * final.c (final_start_function): Update.
20659         (profile_function): Update.
20660         (leaf_function_p): Update.
20661         (only_leaf_regs_used): Update.
20662         * df-scan.c (df_get_exit_block_use_set): Update.
20663         * dojump.c (clear_pending_stack_adjust): Update.
20664         * tree-stdarg.c (gate_optimize_stdarg): Update.
20665         * gimple-low.c (lower_function_body): Update.
20666         * global.c (compute_regsets): Update.
20667         (global_alloc): Update.
20668         * dwarf2out.c (dwarf2out_begin_prologue): Update.
20669         * expr.c (expand_assignment): Update.
20670         * dse.c (dse_step0): Update.
20671         (dse_step1): Update.
20672         * c-decl.c (store_parm_decls): Update.
20673         * local-alloc.c (combine_regs): Update.
20674         (find_free_reg): Update.
20675         * function.c (assign_parms_augmented_arg_list): Update.
20676         (assign_parm_find_data_types): Update.
20677         (assign_parms): Update.
20678         (allocate_struct_function): Update.
20679         (expand_function_start): Update.
20680         (expand_function_end): Update.
20681         (get_arg_pointer_save_area): Update.
20682         (thread_prologue_and_epilogue_insns): Update.
20683         (rest_of_match_asm_constraints): Update.
20684         * stor-layout.c (variable_size): Update.
20685         * gcse.c (gcse_main): Update.
20686         (bypass_jumps): Update.
20687         * gimplify.c (gimplify_function_tree): Update.
20688         * calls.c (emit_call_1): Update.
20689         (expand_call): Update.
20690         * bt-load.c (compute_defs_uses_and_gen): Update.
20691         * except.c (sjlj_assign_call_site_values): Update.
20692         (sjlj_emit_function_enter): Update.
20693         (can_throw_external): Update.
20694         (set_nothrow_function_flags): Update.
20695         (expand_builtin_unwind_init): Update.
20696         (expand_eh_return): Update.
20697         (convert_to_eh_region_ranges): Update.
20698         (output_function_exception_table): Update.
20699         * emit-rtl.c (gen_tmp_stack_mem): Update.
20700         * cfgexpand.c (expand_used_vars): Update.
20701         (tree_expand_cfg): Update.
20702         * cfgcleanup.c (rest_of_handle_jump): Update.
20703         * explow.c (allocate_dynamic_stack_space): Update.
20704         * varasm.c (assemble_start_function): Update.
20705         (force_const_mem): Update.
20706         (mark_constant_pool): Update.
20707         * tree-optimize.c (tree_rest_of_compilation): Update.
20708         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
20709         * tree-cfg.c (notice_special_calls): Update.
20710         (is_ctrl_altering_stmt): Update.
20711         (tree_can_make_abnormal_goto): Update.
20712         (tree_purge_dead_abnormal_call_edges): Update.
20713         * config/alpha/predicates.md: Update.
20714         * config/alpha/alpha.c (alpha_sa_mask): Update.
20715         (alpha_sa_size): Update.
20716         (alpha_does_function_need_gp): Update.
20717         (alpha_expand_prologue): Update.
20718         (alpha_start_function): Update.
20719         (alpha_output_function_end_prologue): Update.
20720         (alpha_expand_epilogue): Update.
20721         * config/frv/frv.c (frv_stack_info): Update.
20722         (frv_expand_epilogue): Update.
20723         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
20724         (s390_register_info): Update.
20725         (s390_frame_info): Update.
20726         (s390_init_frame_layout): Update.
20727         (s390_can_eliminate): Update.
20728         (save_gprs): Update.
20729         * config/spu/spu.c (spu_split_immediate): Update.
20730         (need_to_save_reg): Update.
20731         (spu_expand_prologue): Update.
20732         (spu_expand_epilogue): Update.
20733         * config/sparc/sparc.md: Update.
20734         * config/sparc/sparc.c (eligible_for_return_delay): Update.
20735         (sparc_tls_got): Update.
20736         (legitimize_pic_address): Update.
20737         (sparc_emit_call_insn): Update.
20738         (sparc_expand_prologue): Update.
20739         (output_return): Update.
20740         (print_operand): Update.
20741         (sparc_function_ok_for_sibcall): Update.
20742         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
20743         * config/m32r/m32r.md: Update.
20744         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
20745         (m32r_compute_frame_size): Update.
20746         (m32r_expand_prologue): Update.
20747         (m32r_expand_epilogue): Update.
20748         (m32r_legitimize_pic_address): Update.
20749         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
20750         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20751         * config/i386/i386.c (ix86_frame_pointer_required): Update.
20752         (gen_push): Update.
20753         (ix86_save_reg): Update.
20754         (ix86_compute_frame_layout): Update.
20755         (ix86_expand_prologue): Update.
20756         (ix86_expand_epilogue): Update.
20757         * config/sh/sh.c (output_stack_adjust): Update.
20758         (calc_live_regs): Update.
20759         (sh5_schedule_saves): Update.
20760         (sh_expand_prologue): Update.
20761         (sh_expand_epilogue): Update.
20762         (sh_setup_incoming_varargs): Update.
20763         (sh_allocate_initial_value): Update.
20764         (sh_get_pr_initial_val): Update.
20765         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
20766         * config/sh/sh.md (label:): Update.
20767         * config/avr/avr.c (out_movhi_mr_r): Update.
20768         * config/crx/crx.h (enum): Update.
20769         * config/xtensa/xtensa.h (along): Update.
20770         * config/stormy16/stormy16.c Update.
20771         (xstormy16_compute_stack_layout): Update.
20772         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
20773         (fr30_expand_prologue): Update.
20774         * config/cris/cris.c (cris_conditional_register_usage): Update.
20775         (cris_reg_saved_in_regsave_area): Update.
20776         (cris_initial_frame_pointer_offset): Update.
20777         (cris_simple_epilogue): Update.
20778         (cris_expand_prologue): Update.
20779         (cris_expand_epilogue): Update.
20780         (cris_expand_pic_call_address): Update.
20781         (cris_asm_output_symbol_ref): Update.
20782         (cris_asm_output_label_ref): Update.
20783         * config/cris/cris.md Update.
20784         * config/iq2000/iq2000.c (compute_frame_size): Update.
20785         (iq2000_expand_epilogue): Update.
20786         * config/mt/mt.h (save_direction): Update.
20787         * config/mn10300/mn10300.c (mn10300_function_value): Update.
20788         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20789         (ia64_secondary_reload_class): Update.
20790         * config/m68k/m68k.c (m68k_save_reg): Update.
20791         (m68k_expand_prologue): Update.
20792         (m68k_expand_epilogue): Update.
20793         (legitimize_pic_address): Update.
20794         * config/rs6000/rs6000.c (rs6000_got_register): Update.
20795         (first_reg_to_save): Update.
20796         (first_altivec_reg_to_save): Update.
20797         (compute_vrsave_mask): Update.
20798         (compute_save_world_info): Update.
20799         (rs6000_stack_info): Update.
20800         (spe_func_has_64bit_regs_p): Update.
20801         (rs6000_ra_ever_killed): Update.
20802         (rs6000_emit_eh_reg_restore): Update.
20803         (rs6000_emit_allocate_stack): Update.
20804         (rs6000_emit_prologue): Update.
20805         (rs6000_emit_epilogue): Update.
20806         (rs6000_output_function_epilogue): Update.
20807         (output_profile_hook): Update.
20808         (rs6000_elf_declare_function_name): Update.
20809         * config/rs6000/rs6000.h (rs6000_args): Update.
20810         * config/rs6000/rs6000.md: Update.
20811         * config/mcore/mcore.c (mcore_expand_prolog): Update.
20812         * config/arc/arc.c (arc_output_function_epilogue): Update.
20813         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
20814         * config/darwin.c (machopic_function_base_name): Update.
20815         * config/score/score3.c (score3_compute_frame_size): Update.
20816         (rpush): Update.
20817         (rpop): Update.
20818         (score3_epilogue): Update.
20819         * config/score/score7.c (score7_compute_frame_size): Update.
20820         (score7_prologue): Update.
20821         (score7_epilogue): Update.
20822         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
20823         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20824         * config/arm/arm.c (use_return_insn): Update.
20825         (require_pic_register): Update.
20826         (arm_load_pic_register): Update.
20827         (arm_compute_save_reg0_reg12_mask): Update.
20828         (arm_compute_save_reg_mask): Update.
20829         (thumb1_compute_save_reg_mask): Update.
20830         (output_return_instruction): Update.
20831         (arm_output_function_prologue): Update.
20832         (arm_output_epilogue): Update.
20833         (arm_get_frame_offsets): Update.
20834         (arm_expand_prologue): Update.
20835         (thumb_pushpop): Update.
20836         (thumb_exit): Update.
20837         (thumb1_expand_prologue): Update.
20838         (thumb1_expand_epilogue): Update.
20839         (arm_unwind_emit): Update.
20840         (arm_output_fn_unwind): Update.
20841         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
20842         * config/arm/arm.md: Update.
20843         * config/pa/pa.md: Update.
20844         * config/pa/pa.c (legitimize_pic_address): Update.
20845         (compute_frame_size): Update.
20846         (hppa_expand_prologue): Update.
20847         (hppa_expand_epilogue): Update.
20848         (borx_reg_operand): Update.
20849         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
20850         (HARD_REGNO_RENAME_OK): Update.
20851         * config/mips/mips.c (mips_global_pointer): Update.
20852         (mips_save_reg_p): Update.
20853         (mips_compute_frame_info): Update.
20854         (mips_frame_pointer_required): Update.
20855         (mips_expand_prologue): Update.
20856         (mips_expand_epilogue): Update.
20857         (mips_can_use_return_insn): Update.
20858         (mips_reorg_process_insns): Update.
20859         * config/v850/v850.c (compute_register_save_size): Update.
20860         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
20861         * config/mmix/mmix.c (along): Update.
20862         (mmix_expand_epilogue): Update.
20863         * config/bfin/bfin.c (legitimize_pic_address): Update.
20864         (must_save_p): Update.
20865         (stack_frame_needed_p): Update.
20866         (add_to_reg): Update.
20867         (bfin_expand_prologue): Update.
20868         * stmt.c (expand_asm_operands): Update.
20869         * reload1.c (reload): Update.
20870         (init_elim_table): Update.
20871
20872 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
20873
20874         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
20875
20876 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
20877
20878         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
20879         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
20880         (mov<mode>): Removed.
20881         (*movv4sf_internal): Likewise.
20882         (*movv2df_internal): Likewise.
20883
20884 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
20885
20886         * config.gcc (crx-*-elf): Remove deprecation.
20887
20888 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
20889
20890         * config/i386/cygming-crtend.c (register_frame_ctor): Register
20891         __gcc_deregister_frame with atexit.
20892         (deregister_frame_dtor): Remove.
20893
20894 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20895             Nathan Sidwell  <nathan@codesourcery.com>
20896
20897         * config/rs6000/rs6000.opt (mspe): Remove Var property.
20898         (misel): Likewise.
20899         * config/rs6000/rs6000.h (rs6000_spe): Declare.
20900         (rs6000_isel): Likewise.
20901         * config/rs6000/rs6000.c (rs6000_spe): New variable.
20902         (rs6000_isel): New variable.
20903         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
20904
20905 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20906
20907         PR c++/35758
20908         * c-common.c (handle_vector_size_attribute): Call
20909         lang_hooks.types.reconstruct_complex_type instead of
20910         reconstruct_complex_type.
20911         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
20912         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
20913         * langhooks.h (struct lang_hooks_for_types): Add
20914         reconstruct_complex_type hook.
20915         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
20916         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
20917
20918 2008-04-24  Richard Guenther  <rguenther@suse.de>
20919
20920         * c-common.h (check_builtin_function_arguments): Declare.
20921         * c-common.c (validate_nargs): New function.
20922         (check_builtin_function_arguments): Likewise.
20923         * c-typeck.c (build_function_call): Call
20924         check_builtin_function_arguments.
20925         * builtins.c (fold_builtin_classify): Remove error reporting code.
20926         (fold_builtin_unordered_cmp): Likewise.
20927         (fold_builtin_1): Likewise.
20928         (fold_builtin_n): Likewise.
20929
20930 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20931
20932         PR tree-optimization/36008
20933         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
20934         the original op1, rather than delta by step.
20935
20936 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
20937             Sebastian Pop  <sebastian.pop@amd.com>
20938
20939         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
20940         eliminate_local_variables_stmt, eliminate_local_variables,
20941         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
20942         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
20943         of code delimited by two edges in the CFG.
20944         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
20945         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
20946         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
20947         the case of parallelisation of reductions.
20948         (expr_invariant_in_region_p): New.
20949
20950         * tree-flow.h (gather_blocks_in_sese_region): Declared.
20951         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
20952
20953 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20954             Richard Guenther  <rguenther@suse.de>
20955
20956         PR tree-optimization/36034
20957         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
20958         incapable of dealing with loads with gaps.
20959
20960 2008-04-24  Rafael Espíndola  <espindola@google.com>
20961
20962         * tree-flow.h (vrp_evaluate_conditional): Change signature.
20963         * tree-ssa-propagate.c (fold_predicate_in): Update call to
20964         vrp_evaluate_conditional.
20965         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
20966         (vrp_evaluate_conditional): Split the cond argument.
20967         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
20968         (simplify_stmt_for_jump_threading): Update call to
20969         vrp_evaluate_conditional.
20970
20971 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20972
20973         PR tree-optimization/35982
20974         * tree-vect-analyze.c (vect_check_interleaving): Check that the
20975         interleaved data-refs are of the same type.
20976
20977 2008-04-24  Danny Smith  <dannysmith@users.net>
20978
20979         * c-format.c (check_format_info_main): Use strncmp rather than a
20980         magic prefix to handle multichar length specs.
20981         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
20982         Don't prefix "I64" and "I32" with '\0'.
20983
20984 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20985
20986         PR target/36015
20987         * config/i386/i386.c (init_cumulative_args): Don't pass anything
20988         in registers for -m32 only if stdarg_p (fntype).
20989
20990 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
20991
20992         PR rtl-optimization/36006
20993         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
20994         temp to op0 in order to avoid invalid rtx sharing.
20995
20996 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
20997
20998         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
20999         check TREE_INVARIANT.
21000         * tree-gimple.c (is_gimple_address): New.
21001         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
21002         * tree-gimple.h (is_gimple_address): New.
21003         * tree.h (decl_address_invariant_p): New.
21004         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
21005         (build_string): Likewise.
21006         (decl_address_invariant_p): New, from is_gimple_invariant_address.
21007         (tree_invariant_p_1): Likewise.
21008         (save_expr): Use it.
21009         (tree_invariant_p): New.
21010         (skip_simple_arithmetic): Use it.
21011         (stabilize_reference_1): Use it.
21012         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
21013         simplify.
21014         (build1_stat): Drop code to compute TREE_INVARIANT.
21015         (build2_stat): Drop code to compute TREE_INVARIANT.
21016         (build3_stat): Drop code to compute TREE_INVARIANT.
21017         (build4_stat): Drop code to compute TREE_INVARIANT.
21018         (build5_stat): Drop code to compute TREE_INVARIANT.
21019         (build7_stat): Drop code to compute TREE_INVARIANT.
21020         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
21021         * tree.h (struct tree_base): Remove invariant_flag.
21022         (TREE_INVARIANT): Remove.
21023         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
21024         (fold_builtin_expect): Check TREE_CONSTANT.
21025         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
21026         * c-tree.h (c_expr_to_decl): Drop third parameter.
21027         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
21028         (build_c_cast): Don't set TREE_INVARIANT.
21029         (pop_init_level): Don't set TREE_INVARIANT.
21030         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
21031         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
21032         TREE_CONSTANT.
21033         (gimplify_init_constructor): Don't set TREE_INVARIANT.
21034         (gimplify_addr_expr): Adjust comment.
21035         * tree-mudflap.c (mf_build_string):
21036         * print-tree.c (print_node): Don't print TREE_INVARIANT.
21037         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
21038         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
21039         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
21040         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
21041         * langhooks.h (struct lang_hooks): Drop third parameter from
21042         expr_to_decl.
21043
21044 2008-04-23  Richard Guenther  <rguenther@suse.de>
21045
21046         PR tree-optimization/27799
21047         PR tree-optimization/32921
21048         PR tree-optimization/32624
21049         * tree-ssa-structalias.c (merge_smts_into): Only merge the
21050         SMTs aliases and the tag itself into the solution.
21051         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
21052         merge the points-to solution back into the SMT aliases.
21053         (may_alias_p): Use alias_set_subset_of instead of
21054         aliases_conflict_p.  A pointer which points to
21055         memory with alias set zero may access any variable.
21056
21057 2008-04-23  Richard Guenther  <rguenther@suse.de>
21058
21059         * alias.c (alias_set_subset_of): Correctly handle asking
21060         if zero is a subset of an alias set with zero child.
21061         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
21062         (compute_flow_insensitive_aliasing): Correctly walk all
21063         pointers.  Do not unnecessarily union sets.
21064
21065 2008-04-23  Richard Guenther  <rguenther@suse.de>
21066
21067         PR middle-end/36021
21068         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
21069
21070 2008-04-22  Tomas Bily  <tbily@suse.cz>
21071
21072         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
21073         unreachable case.
21074         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
21075         NON_LVALUE_EXPR.
21076         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
21077         * tree-ssa-structalias.c (get_constraint_for): Likewise.
21078         * tree-inline.c (estimate_num_insns_1): Likewise.
21079         * varasm.c (const_hash_1, compare_constant, copy_constant)
21080         (compute_reloc_for_constant, output_addressed_constants): Likewise.
21081         * emit-rtl.c (component_ref_for_mem_expr)
21082         (set_mem_attributes_minus_bitpos): Likewise.
21083         * expr.c (highest_pow2_factor, expand_expr_real_1, )
21084         (is_aligning_offset): Likewise.
21085         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
21086         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
21087         * dojump.c (do_jump): Likewise.
21088         * builtins.c (get_pointer_alignment, get_memory_rtx)
21089         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
21090         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
21091
21092 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
21093
21094         PR rtl-optimization/36017
21095         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
21096         expanding the library call.
21097
21098 2008-04-22  Ian Lance Taylor  <iant@google.com>
21099
21100         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
21101         than size_in_bytes.
21102
21103 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
21104
21105         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
21106         of LR/CTR moves for Power6.
21107
21108 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
21109
21110         PR middle-end/36003
21111         * passes.c (init_optimization_passes): Remove
21112         pass_fast_rtl_byte_dce.
21113
21114 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
21115
21116         PR target/29096
21117         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
21118         builtin functions to generate faster code.
21119         (_mm_cvtpu16_ps): Ditto.
21120         (_mm_cvtpi32x2_ps): Ditto.
21121
21122 2008-04-22  Nick Clifton  <nickc@redhat.com>
21123
21124         * common.opt (ftree-loop-distribution): Add Optimization
21125         attribute.
21126
21127         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
21128         (frv_expand_builtin_va_start): Likewise.
21129
21130         * config/arm/arm.c (thumb_find_work_register): Fix location of
21131         argument register count.
21132
21133 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21134
21135         Support scheduling for ColdFire V1 and V3 microarchitecture.
21136         Improve scheduling of multiplication instructions.
21137
21138         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
21139         (mac): New instruction attribute.
21140         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
21141         (m68k_sched_mac): New variable.
21142         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
21143         Handle cfv1 and cfv3.
21144         (max_insn_size): New static variable.
21145         (struct _sched_ib): New type.
21146         (sched_ib): New static variable.
21147         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
21148         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
21149         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
21150         Update.
21151         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
21152         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
21153         new variables.  Update.
21154         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
21155         Add modeling of cfv3 instruction buffer.  Update.
21156         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
21157         * config/m68k/m68k.h (TUNE_CFV3): New macro.
21158         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
21159         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
21160         a particular reservation applies to.
21161         (type2): Reorganize attribute values.  Rename alu to alu_reg,
21162         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
21163         to mul_l and mul_w.
21164         (cf_ib_*): Simplify description of instruction buffer.
21165         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
21166         (cf_mem): Split into cf_mem1 and cf_mem2.
21167         (cf_v2_move_??): Rename to cfv12_alu_??.
21168         (cf_v2_move_l_??): Rename to cfv12_omove_??.
21169         (cf_v2_mul_??): Remove reservations.
21170         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
21171         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
21172         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
21173         appropriate place.
21174         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
21175         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
21176         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
21177         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
21178         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
21179         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
21180         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
21181         expansions of the above reservations for instructions of sizes
21182         1, 2 and 3 words.
21183
21184 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21185
21186         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
21187
21188 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
21189
21190         * coverage.c: Include tree-pass.h.
21191         (coverage_counter_alloc): Print da_file_name to the dump file.
21192
21193 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
21194
21195         * sbitmap.c (sbitmap_range_empty_p): New function.
21196         * sbitmap.h (sbitmap_range_empty_p): New function.
21197         * bitmap.h: Now includes obstack.h.
21198
21199 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
21200             Kenneth Zadeck  <zadeck@naturalbridge.com>
21201
21202         * dbgcnt.def (ra_byte_scan): Added.
21203         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
21204         when the last hit happens for a counter.
21205         * timevar.def (TV_DF_BYTE_LR): New variable.
21206         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
21207         * passes.c (pass_fast_rtl_byte_dce): New pass.
21208         * fwprop.c (update_df): Added mode to call df_ref_create.
21209         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21210         DF_REF_EXTRACT_OFFSET.
21211         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
21212         DF_BYTE_LR_OUT, df_byte_lr): New macro.
21213         (df_mm): New enum.
21214         (df_ref_extract): Added mode field.
21215         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
21216         DF_REF_EXTRACT_OFFSET.
21217         (DF_REF_EXTRACT_MODE): New macro.
21218         (df_byte_lr_bb_info): New structure.
21219         (df_print_byte_regset, df_compute_accessed_bytes,
21220         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
21221         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
21222         df_byte_lr_simulate_uses,
21223         df_byte_lr_simulate_artificial_refs_at_top,
21224         df_byte_lr_simulate_artificial_refs_at_end,
21225         df_compute_accessed_bytes): New function.
21226         (df_ref_create): Add parameter.
21227         (df_byte_lr_get_bb_info): New inline function.
21228         * df-scan.c (df_ref_record, df_uses_record,
21229         df_ref_create_structure): Added mode parameter.
21230         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
21231         df_defs_record, df_uses_record, df_get_conditional_uses,
21232         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
21233         df_entry_block_defs_collect, df_exit_block_uses_collect):
21234         Added mode parameter to calls to df_ref_record, df_uses_record,
21235         df_ref_create_structure.
21236         (df_ref_equal_p, df_ref_compare): Added test for modes.
21237         (df_ref_create_structure): Added code to set mode.  Renamed
21238         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21239         DF_REF_EXTRACT_OFFSET.
21240         * df-core.c (df_print_byte_regset): New function.
21241         * df-byte-scan.c: New file.
21242         * df-problems.c (df_rd_transfer_function): Removed unnecessary
21243         calls to BITMAP_FREE.
21244         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
21245         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
21246         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
21247         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
21248         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
21249         df_byte_lr_local_compute, df_byte_lr_init,
21250         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
21251         df_byte_lr_transfer_function, df_byte_lr_free,
21252         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
21253         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
21254         df_byte_lr_simulate_uses,
21255         df_byte_lr_simulate_artificial_refs_at_top,
21256         df_byte_lr_simulate_artificial_refs_at_end): New function.
21257         * dce.c (byte_dce_process_block): New function.
21258         (dce_process_block): au is now passed in rather than computed
21259         locally.  Changed loops that look at artificial defs to not look
21260         for conditional or partial ones, because there never are any.
21261         (fast_dce): Now is able to drive byte_dce_process_block or
21262         dce_process_block depending on the kind of dce being done.
21263         (rest_of_handle_fast_dce): Add parameter to fast_dce.
21264         (rest_of_handle_fast_byte_dce): New function.
21265         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
21266         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
21267
21268 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
21269
21270         PR fortran/35019
21271         * gcc.h: Added fortran options that take arguments to
21272         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
21273         macros.
21274
21275 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
21276
21277         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
21278         scalarization if on the LHS and not a full access.
21279
21280 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21281
21282         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
21283
21284 2008-04-18  Rafael Espíndola  <espindola@google.com>
21285
21286         * tree-vrp.c (find_case_label_index): Fix the binary search.
21287         (find_case_label_range): New.
21288         (vrp_visit_switch_stmt): Use find_case_label_range.
21289         (simplify_switch_using_ranges): Use find_case_label_range.
21290
21291 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
21292
21293         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
21294         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
21295
21296 2008-04-18  Tom Tromey  <tromey@redhat.com>
21297
21298         PR libcpp/15500:
21299         * doc/cpp.texi (Implementation-defined behavior): Mention
21300         -finput-charset.
21301
21302 2008-04-18  Ian Lance Taylor  <iant@google.com>
21303
21304         * fold-const.c (pointer_may_wrap_p): New static function.
21305         (fold_comparison): Add another test for pointer overflow.  Use
21306         pointer_may_wrap_p to disable some false positives.
21307
21308 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
21309
21310         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
21311         (fname_as_string): Match updated cpp_interpret_string prototype.
21312         (fix_string_type): Support char16_t* and char32_t*.
21313         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
21314         derivative) nodes.  Register as builtin if C++0x.
21315         (c_parse_error): Support CPP_CHAR{16,32}.
21316         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
21317         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
21318         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
21319         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
21320         CTI_CHAR32_ARRAY_TYPE>: New elements.
21321         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
21322         char32_type_node, signed_char32_type_node, char16_array_type_node,
21323         char32_array_type_node): New defines.
21324         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
21325         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
21326         (lex_string): Support CPP_STRING{16,32}, match updated
21327         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
21328         (lex_charconst): Support CPP_CHAR{16,32}.
21329         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
21330         and CPP_STRING{16,32}.
21331
21332 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
21333
21334         PR bootstrap/35457
21335         * aclocal.m4: Regenerate.
21336         * configure: Regenerate.
21337
21338 2008-04-18  Jan Hubicka  <jh@suse.cz>
21339
21340         * except.c (dw2_size_of_call_site_table,
21341         sjlj_size_of_call_site_table): Use vector API for call_site_record.
21342
21343         * cgraphbuild.c (build_cgraph_edges): Update.
21344         * tree-pass.h: Update comment.
21345         * final.c (leaf_function_p): Update.
21346         (leaf_renumber_regs): Update.
21347         (rest_of_clean_state): Update.
21348         * omp-low.c (expand_omp_parallel): Update.
21349         * ipa-reference.c (analyze_function): Update.
21350         * reorg.c (find_end_label): Update.
21351         (optimize_skip): Update.
21352         (fill_simple_delay_slots): Update.
21353         (fill_simple_delay_slots): Update.
21354         (make_return_insns): Update.
21355         (dbr_schedule): Update.
21356         * gimple-low.c (record_vars_into): Update.
21357         * cfgbuild.c (make_edges): Update.
21358         * function.c (assign_stack_local): Update.
21359         (assign_parm_adjust_stack_rtl): Update.
21360         (locate_and_pad_parm): Update.
21361         (allocate_struct_function): Do not initialize stack_alignment_needed
21362         and preferred_stack_boundary here.
21363         (stack_protect_prologue): Update.
21364         (stack_protect_epilogue): Update.
21365         (expand_function_start): Initialize stack_alignment_needed,
21366         preferred_stack_boundary and max_jumptable_ents.
21367         (expand_function_end): Update.
21368         (free_after_compilation): Do not NULLify epilogue_delay_list.
21369         * function.h (struct rtl_data): Add stack_protect_guard,
21370         stack_alignment_needed,
21371         preferred_stack_boundary, epilogue_delay_list.
21372         (struct function): Remove value_histograms, stack_alignment_needed,
21373         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
21374         last_label_uid,
21375         unexpanded_var_list, stack_protect_guard.
21376         (current_function_epilogue_delay_list): Remove.
21377         * ipa-type-escape.c (analyze_function): Update.
21378         * gimplify.c (pop_gimplify_context): Update comment.
21379         * calls.c (expand_call): Update.
21380         (emit_library_call_value_1): Update.
21381         * except.c (set_nothrow_function_flags): Update.
21382         * cfgexpand.c (get_decl_align_unit): Update.
21383         (create_stack_guard): Update.
21384         (estimated_stack_frame_size): Update.
21385         (expand_used_vars): Update.
21386         (tree_expand_cfg): Free histogram earliers, init expansion variables.
21387         * explow.c (allocate_dynamic_stack_space): Update.
21388         * tree-ssa-live.c (remove_unused_locals): Update.
21389         * varasm.c (mark_constant_pool): Update.
21390         * tree-inline.c (remap_decls): Update.
21391         (initialize_cfun): Update.
21392         (declare_return_variable): Update.
21393         (inline_forbidden_p): Update.
21394         (expand_call_inline): Update.
21395         (declare_inline_vars): Update.
21396         (tree_function_versioning): Update.
21397         * tree-flow.h (value_histograms): New.
21398         (VALUE_HISTOGRAMS): New macro.
21399         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
21400         last_label_uid.
21401         * tree-cfg.c (set_bb_for_stmt): Update.
21402         (replace_by_duplicate_decl): Update.
21403         (move_block_to_fn): Update.
21404         (new_label_mapper): Update.
21405         (dump_function_to_file): Update.
21406         * ipa-struct-reorg.c (build_data_structure): Update.
21407         * cfgrtl.c (print_rtl_with_bb): Update.
21408         * reload1.c (reload): Update.
21409         (reload): Update.
21410         * config/i386/i386.c (setup_incoming_varargs_64,
21411         ix86_compute_frame_layout): Update.
21412         * config/arc/arc.c (arc_output_function_epilogue): Update.
21413
21414 2008-04-18  Marius Strobl <marius@FreeBSD.org>
21415
21416         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
21417         for FreeBSD as well.
21418         * gthr-posix95.h: Likewise.
21419
21420 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
21421
21422         PR rtl-optimization/35838
21423         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
21424         out the byte offset of the first subreg.
21425
21426 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
21427
21428         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
21429         to split_ti instead of three separate calls with single member arrays.
21430         (subti3 splitter): Ditto.
21431         (adddi3 splitter): Ditto with split_di.
21432         (subdi3 splitter): Ditto.
21433         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
21434         two separate calls with single member arrays.  Swap match_dup
21435         operands 1 and 2 to better fit into the array.
21436         (negdi2 splitter): Ditto with split_di.
21437         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
21438         two separate calls with single member arrays.  Swap match_dup operands
21439         6 and 7 to better fit into the array.
21440
21441 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21442
21443         * config/i386/i386.c (sse_builtin_type): New.
21444         (bdesc_sse_args): Likewise.
21445         (bdesc_sse_3arg): Removed.
21446         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21447         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
21448         IX86_BUILTIN_ROUNDPS.
21449         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
21450         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
21451         IX86_BUILTIN_ROUNDPS.
21452         (ix86_expand_sse_4_operands_builtin): Removed.
21453         (ix86_expand_sse_operands_builtin): New.
21454         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
21455         and CODE_FOR_sse4_1_roundps.
21456         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21457         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
21458
21459 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
21460
21461         PR target/35907
21462         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
21463         regs before frame pop when needed.  If use_backchain_to_restore_sp
21464         then load backchain into a temp reg to restore vr and vrsave.  Add
21465         code to restore vr after frame pop if possible.
21466
21467 2008-04-17  Richard Guenther  <rguenther@suse.de>
21468
21469         * tree-vn.c (expressions_equal_p): Do not check type
21470         equality or compatibility before calling operand_equal_p.
21471         * fold-const.c (operand_equal_p): Check equivalence of
21472         integer constants before bailing out due to signedness or
21473         precision differences.
21474         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
21475         spurious differences in type qualification.  Ignore types
21476         for COMPONENT_REFs at all.
21477
21478 2008-04-17  Christian Bruel  <christian.bruel@st.com>
21479
21480         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
21481         msw_skip comparison.
21482
21483 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
21484
21485         PR c/35739
21486         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
21487         reg type.
21488
21489         PR tree-optimization/35899
21490         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
21491         rather than TREE_OPERAND.
21492
21493 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
21494
21495         PR target/35944
21496         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
21497         temporary registers.  Change operand predicate to general_operand.
21498         (remainderxf3): Ditto.
21499
21500 2008-04-16  Richard Guenther  <rguenther@suse.de>
21501
21502         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
21503         * tree-affine.c (aff_combination_expand): Look through some
21504         conversions.
21505
21506 2008-04-15  Doug Kwan  <dougkwan@google.com>
21507
21508         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
21509         for hex printing.
21510         * tree-pretty-print.c (dump_generic_node): Ditto.
21511         * final.c (output_addr_const): Ditto.
21512         * dwarf2out.c (output_cfi): Ditto.
21513         * c-pretty-print.c (pp_c_integer_constant): Ditto.
21514         * print-rtl.c (print_rtx): Ditto.
21515         * print-tree.c (print_node_brief, print_node): Ditto.
21516         * c-common.c (match_case_to_enum_1): Ditto.
21517         * sched-vis.c (print_value): Ditto.
21518         * config/i386/i386.c (print_operand): Cast to long unsigned int
21519         for hex printing.
21520
21521 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
21522         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
21523         MS Windows VirtualProtect function.
21524
21525 2008-04-15  Jan Hubicka  <jh@suse.cz>
21526
21527         * gengtype.c (write_root): Param_is argument is OK.
21528         * expr.c (expand_expr_real_1): Update call of get_exception_*.
21529         * function.h: Include varray.h
21530         (rtl_eh): New stucture based on except.c one.
21531         (call_site_record): New forward declaration and vector type.
21532         * calls.c (emit_call_1): Do not call
21533         note_current_region_may_contain_throw.
21534         * except.c (eh_status): Remove cur_region, try_region since they are
21535         unused.
21536         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
21537         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
21538         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
21539         Remove call_site_data_used, call_site_data_size.
21540         Turn call_site_record into vector in function.h.
21541         (note_current_region_may_contain_throw): Remove.
21542         (get_exception_pointer, get_exception_filter): Do not take struct
21543         function argument; update.
21544         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
21545         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
21546         build_post_landing_pads, dw2_build_landing_pads,
21547         sjlj_assign_call_site_values, sjlj_mark_call_sites,
21548         sjlj_emit_function_enter, sjlj_emit_function_enter,
21549         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
21550         sjlj_build_landing_pads, finish_eh_generation,
21551         remove_exception_handler_label, remove_eh_handler,
21552         maybe_remove_eh_handler, add_reachable_handler,
21553         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
21554         add_action_record, collect_one_action_chain, add_call_site,
21555         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
21556         sjlj_output_call_site_table, output_function_exception_table,
21557         * except.h (note_current_region_may_contain_throw): Remove
21558         (get_exception_pointer, get_exception_filter): Do not take struct
21559         function argument.
21560         * Makefile.in (GTFILES): Put varargs before struct function.
21561
21562 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21563
21564         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
21565         punt for STRING_CST.
21566         (get_constraint_for): Deal with STRING_CST here instead.
21567
21568 2008-04-15  Richard Guenther  <rguenther@suse.de>
21569
21570         * tree-ssa-propagate.c (substitute_and_fold): Substitute
21571         statements in a basic-block with a backward walk.  Do not
21572         substitute into dead statements but instead remove those.
21573
21574 2008-04-15  Richard Guenther  <rguenther@suse.de>
21575
21576         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
21577         to zero, thus disable creation of SFTs.
21578
21579 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21580
21581         * tree-predcom.c (suitable_reference_p): Return false if the
21582         reference can throw.
21583
21584 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
21585
21586         PR c/35751
21587         * c-decl.c (finish_decl): If extern or static var has variable
21588         size, set TREE_TYPE (decl) to error_mark_node.
21589
21590 2008-04-15  Rafael Espíndola  <espindola@google.com>
21591
21592         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
21593         variable arg1.
21594
21595 2008-04-15  Richard Guenther  <rguenther@suse.de>
21596
21597         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
21598         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
21599         (visit_reference_op_load): Do walk vuse-vdef chains on
21600         vn_reference_lookup.
21601         (visit_reference_op_store): But do not here.
21602         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
21603         vn_reference_lookup.
21604         (vn_lookup_with_vuses): But do so here.
21605
21606 2008-04-14  Ian Lance Taylor  <iant@google.com>
21607
21608         * fold-const.c (fold_overflow_warning): Remove assertion.
21609
21610 2008-04-15  Ben Elliston  <bje@au.ibm.com>
21611
21612         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
21613         temp1 local variables.
21614
21615 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
21616
21617         PR target/35661
21618         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
21619         ".text.unlikely" section as executable.
21620
21621 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
21622
21623         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21624         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
21625         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
21626         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
21627         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
21628         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
21629         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
21630
21631 2008-04-14  Ian Lance Taylor  <iant@google.com>
21632
21633         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
21634         * fold-const.c (fold_comparison): If appropriate, test
21635         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
21636         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
21637         reassociating a pointer type.
21638         * doc/invoke.texi (Optimize Options): Document that
21639         -fstrict-overflow applies to pointer wraparound.
21640
21641 2008-04-13  Jan Hubicka  <jh@suse.cz>
21642
21643         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
21644
21645 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
21646
21647         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
21648         we are going to "save the world".
21649
21650 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
21651
21652         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
21653         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
21654         operand 0 constraint, not "=".
21655
21656 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
21657
21658         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
21659
21660 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21661
21662         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
21663         of size of positions_needed * CHAR_BIT.
21664
21665 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21666
21667         PR middle-end/35897
21668         * dse.c (store_info): Change positions_needed to unsigned
21669         HOST_WIDE_INT.
21670         (lowpart_bitmask): New.
21671         (record_store): Cast to unsigned HOST_WIDE_INT for
21672         positions_needed.  Assert width <= size of positions_needed *
21673         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
21674         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
21675         lowpart_bitmask to set mask.
21676
21677 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21678
21679         * config/bfin/constraints.md: New file.
21680         * config/bfin/bfin.md: Include it.
21681         (adddi3): Use satisfies_constraint functions instead of the old macros.
21682         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
21683         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
21684         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
21685         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
21686         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
21687         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
21688         EXTRA_CONSTRAINT): Delete.
21689         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
21690         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
21691         of the old macros.
21692         * config/bfin/bfin.c: Include "tm-constrs.h".
21693         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
21694         Use satisfies_constraint functions instead of the old macros.
21695         * doc/md.texi (Blackfin Constraints): Update file name reference.
21696
21697 2008-04-11  Richard Guenther  <rguenther@suse.de>
21698
21699         PR tree-optimization/35869
21700         * tree-vrp.c (execute_vrp): Move switch statement update after
21701         jump threading.  Schedule another cfg cleanup run.
21702
21703 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
21704
21705         PR c/35744
21706         * attribs.c (decl_attributes): Return early on errorneous node.
21707
21708 2008-04-10  Oleg Ryjkov  <olegr@google.com>
21709
21710         * tree.h (struct tree_base): Added a new flag default_def_flag.
21711         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
21712
21713 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
21714
21715         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
21716
21717 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21718
21719         PR target/35768
21720         * pa.md: Define mode iterator P.  Define mode attribute dwc.
21721         (dcacheflush): Update pattern to use iterator P and attribute dwc.
21722         (icacheflush): Likewise.
21723         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
21724         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
21725
21726 2008-04-11  Ben Elliston  <bje@au.ibm.com>
21727
21728         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
21729
21730 2008-04-10  Rafael Espíndola  <espindola@google.com>
21731
21732         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
21733         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
21734         (extract_range_from_expr): The same.
21735
21736 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21737
21738         * config/mips/mips.md (GPR2): New mode iterator.
21739         (seq): Add comment.
21740         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
21741         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
21742         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
21743         Rewrite these to take two modes, the mode of comparison and the
21744         mode of the destination.
21745         * config/mips/mips.c (mips_expand_scc): Instead of having
21746         paradoxical subreg as destination, expand "narrowing" scc if mode
21747         of comparison is SI and target is requested in DI mode.
21748         (mips_emit_int_order_test): Update comment.  Make mode of
21749         comparison match CMP0 rather than TARGET.  When creating inverse
21750         target use mode of TARGET.
21751
21752 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21753
21754         * gcov-dump.c (tag_summary): Only print summaries for the first
21755         GCOV_COUNTERS_SUMMABLE counters.
21756
21757 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
21758
21759         * config/i386/i386.md (absneg): New code iterator.
21760         (absnegprefix): New code attribute.
21761         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
21762         patterns using absneg code iterator.
21763         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
21764         using absneg code iterator.
21765         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
21766         *neg<mode>2 patterns using absneg code iterator.
21767         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21768         *negextendsfdf2 patterns using absneg code iterator.
21769         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
21770         *negextendsfxf2 patterns using absneg code iterator.
21771         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21772         *negextendsfdf2 patterns using absneg code iterator.
21773         * config/i386/sse.md (<code><mode>2): Macroize expander from
21774         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
21775
21776 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
21777
21778         * config/s390/s390.h: Remove the remains of the recent search
21779         & replace action of current_function_outgoing_args_size.
21780
21781 2008-04-10  Ira Rosen  <irar@il.ibm.com>
21782
21783         PR tree-optimization/35821
21784         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
21785         NEW_STMT_LIST is not NULL.
21786
21787 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
21788
21789         PR libstdc++/35597
21790         * toplev.c (process_options): Remove -ffunction-sections debugging
21791         warning.
21792
21793 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
21794
21795         PR middle-end/PR28690
21796         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
21797         than gen_rtx_fmt_ee to perform more canonicalizations.
21798
21799 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21800
21801         PR driver/35665
21802         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
21803
21804 2008-04-09  Richard Guenther  <rguenther@suse.de>
21805
21806         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
21807         (dump_function_to_file): Dump function arguments with types.
21808
21809 2008-04-08  Richard Guenther  <rguenther@suse.de>
21810
21811         * fold-const.c (fold_widened_comparison): Do not allow
21812         sign-changes that change the result.
21813
21814 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
21815
21816         PR target/35839
21817         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
21818         kinds of indirect references.
21819
21820 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
21821
21822         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
21823         GNU Fortran language string.
21824
21825 2008-04-08  Rafael Espíndola  <espindola@google.com>
21826
21827         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
21828         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
21829         * tree.h (tree_call_nonnegative_warnv_p): New.
21830
21831 2008-04-08  Jan Hubicka  <jh@suse.cz>
21832
21833         * function.c (free_after_compilation): Clear out regno_reg_rtx
21834         pointer.
21835
21836 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
21837
21838         Revert
21839         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21840
21841         PR middle-end/PR28690
21842         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
21843         same precedence as REG_POINTER and MEM_POINTER operands.
21844
21845 2008-04-08  Richard Guenther  <rguenther@suse.de>
21846
21847         PR middle-end/35834
21848         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
21849         for adding index to base.
21850
21851 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
21852
21853         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
21854         (MINGW_ENABLE_EXECUTE_STACK): New.
21855         (IN_LIBGCC2): For libgcc include windows.h file for
21856         function declarations.
21857
21858 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
21859
21860         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
21861         and tem2 if tem1 is not a REG or MULT.
21862
21863 2008-04-08  Jan Hubicka  <jh@suse.cz>
21864
21865         * function.h (incomming_args): Break out of struct function.
21866         (function_subsections): Break out of struct function.
21867         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
21868         return_rtx and hard_reg_initial_vals from struct function.
21869         Kill inl_max_label_num.
21870         (current_function_pops_args, current_function_args_info,
21871         current_function_args_size, current_function_args_size,
21872         current_function_pretend_args_size,
21873         current_function_outgoing_args_size,
21874         current_function_internal_arg_pointer, current_function_return_rtx):
21875         Kill compatibility accestor macros.
21876         * builtins.c (expand_builtin_apply_args_1): Update.
21877         (expand_builtin_next_arg): Update.
21878         * df-scan.c (df_get_call_refs): Update.
21879         * dbxout.c (dbxout_function_end): Update.
21880         * dwarf2out.c (dwarf2out_switch_text_section): Update.
21881         (output_line_info): Update.
21882         (secname_for_decl): Update.
21883         (dwarf2out_var_location): Update.
21884         * function.c (free_after_compilation): Update.
21885         (assign_parm_find_stack_rtl): Update.
21886         (assign_parms): Update.
21887         (expand_dummy_function_end): Update.
21888         (expand_function_end): Update.
21889         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
21890         (expand_call): Update.
21891         (emit_library_call_value_1): Update.
21892         (store_one_arg): Update.
21893         * varasm.c (initialize_cold_section_name): Update.
21894         (unlikely_text_section): Update.
21895         (unlikely_text_section_p): Update.
21896         (assemble_start_function): Update.
21897         (assemble_end_function): Update.
21898         (default_section_type_flags): Update.
21899         (switch_to_section): Update.
21900         * integrate.c (set_decl_abstract_flags): Update.
21901         (get_hard_reg_initial_val): Update.
21902         (has_hard_reg_initial_val): Update.
21903         (allocate_initial_values): Update.
21904         * resource.c (init_resource_info): Update.
21905         * config/alpha/alpha.c (NUM_ARGS): Update.
21906         (direct_return): Update.
21907         (alpha_va_start): Update.
21908         (alpha_sa_size): Update.
21909         (alpha_initial_elimination_offset): Update.
21910         (alpha_expand_prologue): Update.
21911         (alpha_start_function): Update.
21912         (alpha_expand_epilogue): Update.
21913         (unicosmk_initial_elimination_offset):
21914         * config/alpha/alpha.md (call expander): Update.
21915         * config/s390/s390.c (s390_register_info): Update.
21916         (s390_register_info): Update.
21917         (s390_frame_info): Update.
21918         (s390_initial_elimination_offset): Update.
21919         (s390_build_builtin_va_list): Update.
21920         (s390_va_start): Update.
21921         * config/spu/spu.c (direct_return): Update.
21922         (spu_expand_prologue): Update.
21923         (spu_initial_elimination_offset): Update.
21924         (spu_build_builtin_va_list): Update.
21925         (spu_va_start): Update.
21926         * config/sparc/sparc.c (sparc_init_modes): Update.
21927         (sparc_compute_frame_size): Update.
21928         (function_value): Update.
21929         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
21930         * config/i386/i386.md (return expander): Update.
21931         * config/i386/i386.c (ix86_va_start): Update.
21932         (ix86_can_use_return_insn_p): Update.
21933         (ix86_compute_frame_layout): Update.
21934         (ix86_expand_epilogue): Update.
21935         * config/sh/sh.c (output_stack_adjust): Update.
21936         (calc_live_regs): Update.
21937         (sh_expand_prologue): Update.
21938         (sh_builtin_saveregs): Update.
21939         (sh_va_start): Update.
21940         (initial_elimination_offset): Update.
21941         (sh_allocate_initial_value): Update.
21942         (sh_function_ok_for_sibcall): Update.
21943         (sh_get_pr_initial_val): Update.
21944         * config/sh/sh.md (return expander): Update.
21945         * config/avr/avr.c (frame_pointer_required_p): UPdate.
21946         * config/crx/crx.c (crx_compute_frame): UPdate.
21947         (crx_initial_elimination_offset): UPdate.
21948         * config/xtensa/xtensa.c (compute_frame_size): Update
21949         (xtensa_builtin_saveregs): Update.
21950         (xtensa_va_start): Update.
21951         (order_regs_for_local_alloc): Update.
21952         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
21953         (xstormy16_expand_builtin_va_start): Update.
21954         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
21955         * config/m68hc11/m68hc11.md (return expanders): Update.
21956         * config/m68hc11/m68hc11.c (expand_prologue): Update.
21957         (expand_epilogue): Update.
21958         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
21959         (cris_simple_epilogue): Update.
21960         (cris_expand_prologue): Update.
21961         (cris_expand_epilogue): Update.
21962         * config/iq2000/iq2000.c (iq2000_va_start): Update.
21963         (compute_frame_size): Update.
21964         * config/mt/mt.c (mt_compute_frame_size): Update.
21965         * config/mn10300/mn10300.c (expand_prologue): Update.
21966         (expand_epilogue): Update.
21967         (initial_offset): Update.
21968         (mn10300_builtin_saveregs):
21969         * config/mn10300/mn10300.md (return expander): Update.
21970         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21971         (ia64_initial_elimination_offset): Update.
21972         (ia64_initial_elimination_offset): Update.
21973         (ia64_expand_prologue): Update.
21974         * config/m68k/m68k.md (return expander): Update.
21975         * config/rs6000/rs6000.c (rs6000_va_start): Update.
21976         (rs6000_stack_info): Update.
21977         * config/mcore/mcore.c (layout_mcore_frame): Update.
21978         (mcore_expand_prolog): Update.
21979         * config/arc/arc.c (arc_compute_frame_size): Update.
21980         * config/score/score3.c (score3_compute_frame_size): Update.
21981         * config/score/score7.c (score7_compute_frame_size): Update.
21982         * config/arm/arm.c (use_return_insn): Update.
21983         (thumb_find_work_register): Update.
21984         (arm_compute_save_reg_mask): Update.
21985         (arm_output_function_prologue): Update.
21986         (arm_output_epilogue): Update.
21987         (arm_size_return_regs): Update.
21988         (arm_get_frame_offsets): Update.
21989         (arm_expand_prologue): Update.
21990         (thumb_exit): Update.
21991         (thumb_unexpanded_epilogue): Update.
21992         (thumb1_output_function_prologue): Update.
21993         * config/pa/pa.md (return expander): Update.
21994         * config/pa/pa.c (compute_frame_size): Update.
21995         (hppa_builtin_saveregs): Update.
21996         * config/mips/mips.c (mips_va_start): Update.
21997         (mips16_build_function_stub): Update.
21998         (mips_compute_frame_info): Update.
21999         (mips_restore_gp): Update.
22000         (mips_output_function_prologue): Update.
22001         (mips_expand_prologue): Update.
22002         * config/v850/v850.c (compute_frame_size): Update.
22003         (expand_prologue): * config/mmix/mmix.c (along): update.
22004         (mmix_initial_elimination_offset): update.
22005         (mmix_reorg): update.
22006         (mmix_use_simple_return): update.
22007         (mmix_expand_prologue): update.
22008         (mmix_expand_epilogue): Update.
22009         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
22010         (emit_link_insn): Update.
22011
22012 2008-04-08  Anatoly Sokolov <aesok@post.ru>
22013
22014         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
22015         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
22016         instructions.
22017         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
22018         atmega103 device.
22019
22020 2008-04-07  Jan Hubicka  <jh@suse.cz>
22021
22022         * function.h (rtl): Rename to x_rtl.
22023         (crtl): New define.
22024         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22025         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22026         used_temp_slots avail_temp_slots, temp_slot_level,
22027         nonlocal_goto_handler_labels): Update accesstors.
22028         (rtl): New global variable.
22029         (struct function): Move some fileds to rtl_data.
22030         (get_arg_pointer_save_area): Update prototype.
22031         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22032         get_arg_pointer_save_area.
22033         * expr.c (init_expr): Update
22034         * function.c (get_frame_size): Update
22035         (assign_stack_local): Update
22036         (expand_function_end): Update.
22037         (get_art_pointer_save_area): Update
22038         * function.h
22039         * emit-rtl.c (rtl): Declare.
22040         (regno_reg_rtx): Declare.
22041         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22042         Update.
22043         (gen_reg_rtx): Update.
22044         * varasm.c (n_deferred_constatns): Update accestor.
22045         (init_varasm_status): Do not allocate varasm_status.
22046         (force_const_mem, get_pool_size, output_constant_pool): Update.
22047         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22048         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22049         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
22050         * sparc/sparc.h (INIT_EXPANDERS): Update.
22051         * ia64/ia64.h (INIT_EXPANDERS): Update.
22052
22053 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
22054
22055         * reload.c (push_secondary_reload): Add missing break to for loop.
22056
22057 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
22058
22059         PR middle-end/PR28690
22060         * rtlanal.c: Update copyright years.
22061         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
22062         as REG_POINTER and MEM_POINTER operands.
22063         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
22064         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
22065         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
22066         * gcse.c: Update copyright years.
22067         (pre_delete): Call gen_reg_rtx_and_attrs.
22068         (hoist_code): Likewise.
22069         (build_store_vectors): Likewise.
22070         (delete_store): Likewise.
22071         * loop-invariant.c (move_invariant_reg): Likewise.
22072         Update copyright years.
22073
22074 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
22075
22076         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
22077         control string instead of quoted.
22078
22079 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
22080
22081         * doc/rtl.texi: Rewrite of subreg section.
22082
22083 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
22084
22085         PR/35842
22086         * config/i386/i386.c (legitimize_pic_address): Add treating
22087         of dllimport SYM_REF's.
22088         (legitimize_dllimport_symbol): Add prototype.
22089
22090 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22091
22092         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
22093         reference in constructor with non self-referential type.
22094
22095 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22096
22097         Removal of Return with Depressed Stack Pointer support
22098         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
22099         (ECF_SP_DEPRESSED): Likewise.
22100         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
22101         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
22102         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22103         (expand_call): Do not test ECF_SP_DEPRESSED.
22104         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22105         * function.c (keep_stack_depressed): Delete.
22106         (handle_epilogue_set): Likewise.
22107         (update_epilogue_consts): Likewise.
22108         (emit_equiv_load): Likewise.
22109         (thread_prologue_and_epilogue_insns): Remove support for Return with
22110         Depressed Stack Pointer.
22111         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22112
22113 2008-04-06  Richard Guenther  <rguenther@suse.de>
22114
22115         PR tree-optimization/35400
22116         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
22117         information from SSA_NAMEs.
22118
22119 2008-04-06  Anatoly Sokolov <aesok@post.ru>
22120
22121         * config/avr/avr.h (avr_mega_p): Remove declaration.
22122         (AVR_MEGA): Remove macro.
22123         * config/avr/avr.c (avr_mega_p): Remove variable.
22124         (avr_override_options): Remove inicializion of avr_mega_p.
22125         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22126         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22127         (avr_jump_mode): (Ditto.).
22128         (avr_output_progmem_section_asm_op): (Ditto.).
22129         (avr_asm_init_sections): (Ditto.).
22130         (avr_asm_init_sections): (Ditto.).
22131         (avr_rtx_costs): (Ditto.).
22132         * config/avr/avr.md: (Ditto.).
22133         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
22134         '__AVR_MEGA__'.
22135
22136 2008-04-06  Richard Guenther  <rguenther@suse.de>
22137
22138         PR tree-optimization/35842
22139         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
22140         is_gimple_invariant_address.
22141
22142 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
22143
22144         * gcc.c (default_compilers): Sync Fortran extensions list with
22145         that in fortran/lang-specs.h.
22146         * doc/invoke.texi: Likewise.
22147         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
22148         * dwarf2out.c (gen_compile_unit_die): Likewise.
22149
22150 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
22151
22152         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
22153
22154 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
22155
22156         PR target/12329
22157         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
22158         attribute is used for nested functions.
22159
22160 2008-04-05  Jan Hubicka  <jh@suse.cz>
22161
22162         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
22163
22164         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
22165         letter argument.
22166         (dump_files): Update.
22167         (enable_rtl_dump_file): Do not accept letter argument.
22168         * tree-pass.h (dump_file_info): Remove letter argument.
22169         * toplev.c (decode_d_option): Update -da handling.
22170         * toplev.h (enable_rtl_dump_file): Update prototype.
22171         * passes.c (register_one_dump_file): Do not accept IPA argument; work
22172         it out based on pass type.
22173         (register_dump_files_1): Likewise.
22174         (init_optimization_passes): Update register_one_dump_file calls.
22175         (execute_one_pass): Sanity check that IPA passes are called at IPA
22176         level and RTL passes at RTL level.
22177         (execute_pass_list): IPA pass can not be after or subpass of
22178         GIMPLE/RTL pass.
22179         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
22180         disallov RTL subpasses of IPA subpasses.
22181
22182 2008-04-05  Ben Elliston  <bje@au.ibm.com>
22183
22184         * tree-cfg.c (need_fake_edge_p): Return false for calls to
22185         builtins that return exactly once and do not throw. Cache call to
22186         call_expr_flags.
22187
22188 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
22189
22190         PR rtl-optimization/34916
22191         PR middle-end/35519
22192         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
22193         between instruction pairs.
22194
22195 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
22196
22197         * doc/invoke.texi: Document -mbitops for SH.
22198         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
22199         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
22200         * config/sh/sh.c (print_operand): Add %t operand code.
22201         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
22202         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
22203         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
22204         (extendqihi2): Likewise.
22205         (movqi_i): Likewise.
22206         (insv): Use bset, bclr and bst instructions for SH2A if possible.
22207         (extv): Use bld instruction for SH2A if possible.
22208         (extzv): Likewise.
22209         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
22210         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
22211         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
22212         (bset.b, bclr.b): Define peepholes.
22213         * config/sh/sh.opt (mbitops): New option.
22214
22215 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
22216
22217         PR target/35620
22218         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
22219         and view convert expression.
22220
22221 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22222
22223         PR target/35364
22224         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
22225
22226 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
22227
22228         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
22229
22230         * config/i386/cpuid.h (bit_AES): New.
22231         (bit_PCLMUL): Likewise.
22232
22233         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
22234         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
22235         SSE2 if AES or PCLMUL is enabled.
22236         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
22237         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22238         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
22239         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
22240         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
22241         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
22242         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22243         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
22244         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
22245         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
22246         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
22247         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
22248         __builtin_ia32_aeskeygenassist128 and
22249         __builtin_ia32_pclmulqdq128.
22250         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
22251         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
22252         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
22253
22254         * config/i386/i386.h (TARGET_AES): New.
22255         (TARGET_PCLMUL): Likewise.
22256         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
22257
22258         * config/i386/i386.md (UNSPEC_AESENC): New.
22259         (UNSPEC_AESENCLAST): Likewise.
22260         (UNSPEC_AESDEC): Likewise.
22261         (UNSPEC_AESDECLAST): Likewise.
22262         (UNSPEC_AESIMC): Likewise.
22263         (UNSPEC_AESKEYGENASSIST): Likewise.
22264         (UNSPEC_PCLMUL): Likewise.
22265
22266         * config/i386/i386.opt (maes): New.
22267         (mpclmul): Likewise.
22268
22269         * config/i386/sse.md (aesenc): New pattern.
22270         (aesenclast): Likewise.
22271         (aesdec): Likewise.
22272         (aesdeclast): Likewise.
22273         (aesimc): Likewise.
22274         (aeskeygenassist): Likewise.
22275         (pclmulqdq): Likewise.
22276
22277         * config/i386/wmmintrin.h: New.
22278
22279         * doc/extend.texi: Document AES and PCLMUL built-in function.
22280
22281         * doc/invoke.texi: Document -maes and -mpclmul.
22282
22283 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
22284
22285         * function.c (free_after_parsing): Replace with
22286         cxx_push_function_context from C++ front-end.
22287         (allocate_struct_function): Don't call langhook.
22288         * langhooks.h (struct lang_hooks_for_functions): Delete.
22289         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
22290         member "function".
22291         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
22292         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
22293         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
22294         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
22295         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
22296         remove LANG_HOOKS_FUNCTION_INITIALIZER.
22297         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
22298
22299         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
22300         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
22301
22302 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22303
22304         PR c/35440
22305         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
22306         for all types.
22307
22308 2008-04-04  Richard Guenther  <rguenther@suse.de>
22309
22310         PR middle-end/35823
22311         * fold-const.c (optimize_minmax_comparison): Use the correct
22312         type for the constant in the simplified comparison.
22313
22314 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
22315
22316         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
22317         Pass L2 size as "--param l2-cache-size" to the compiler.
22318         (decode_l2_cache): New function to decode L2 cache parameters using
22319         0x8000006 extended cpuid function.
22320         (detect_caches_amd): Determine parameters of L2 cache using
22321         decode_l2_caches function.
22322         (decode_caches_intel): Decode L2 cache parameters.
22323         (detect_caches_intel): Determine L2 cache parameters using
22324         decode_caches_intel and decode_l2_caches functions.
22325
22326 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
22327
22328         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
22329         secondary input reload for subword loads from the constant pool.
22330
22331 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
22332
22333         PR target/35713
22334         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
22335           constants of the appropriate size for runtime calculations.
22336
22337         PR c/35712
22338         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
22339           decimal-float literal constant zero.
22340
22341 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
22342
22343         PR c/35738
22344         * c-parser.c (c_parser_omp_atomic): Call
22345         default_function_array_conversion on the RHS.
22346
22347         PR middle-end/35818
22348         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
22349         call is_variable_sized if decl has incomplete type.
22350
22351 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
22352
22353         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
22354
22355 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
22356
22357         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
22358         iterators.
22359         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
22360         (sgt<u>): Merge sgt and sgtu into new expander.
22361         (sgt, sgtu): Remove expanders.
22362         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
22363         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
22364         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
22365         *sgtu_<mode>_mips16 into new pattern.
22366         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
22367         (sge<u>): Merge sge and sgeu into new expander.
22368         (sge, sgeu): Remove expanders.
22369         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
22370         new pattern.
22371         (*sge_<mode>, second *sge_<mode>): Remove patterns.
22372         (slt<u>): Merge slt and sltu into new expander.
22373         (slt, sltu): Remove expanders.
22374         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
22375         (*slt_<mode>, *sltu_<mode>): Remove patterns.
22376         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
22377         *sltu_<mode>_mips16 into new pattern.
22378         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
22379         (sle<u>): Merge sle and sleu into new expander.
22380         (sle, sleu): Remove expanders.
22381         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
22382         (*sle_<mode>, *sleu_<mode>): Remove patterns.
22383         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
22384         *sleu_<mode>_mips16 into new pattern.
22385         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
22386
22387 2008-04-03  Jan Hubicka  <jh@suse.cz>
22388
22389         PR tree-optimization/35795
22390         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
22391         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22392         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22393         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
22394         * score/score3.c (score3_output_mi_thunk): Likewise.
22395         * score/score7.c (score7_output_mi_thunk): Likewise.
22396         * mips/mips.c (mips_output_mi_thunk): Likewise.
22397
22398 2008-04-03  Richard Guenther  <rguenther@suse.de>
22399
22400         * tree-vrp.c (extract_range_from_unary_expr): Handle all
22401         conversions.  Simplify code.
22402
22403 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
22404
22405         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
22406
22407 2008-04-03  Tom Tromey  <tromey@redhat.com>
22408             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22409
22410         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22411         * config/bfin/t-bfin-linux (generated_files): Add
22412         linux-sysroot-suffix.h.
22413         * doc/install.texi (Prerequisites): Require make 3.80.
22414         * doc/sourcebuild.texi (Front End Directory): Document new
22415         variable.
22416         * Makefile.in (generated_files): New variable.
22417         (ALL_HOST_OBJS): New variable.
22418         ($(ALL_HOST_OBJS)): New target.
22419
22420 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22421
22422         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
22423         (remap_block): Call id->transform_lang_insert_block instead
22424         of langhook.
22425         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
22426         Set id.transform_lang_insert_block to NULL.
22427         (clone_body): Move to cp/optimize.c
22428         * tree-inline.h (struct copy_body_data): Change
22429         transform_lang_insert_block to function pointer.
22430         (copy_generic_body, copy_decl_no_change): Export.
22431         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
22432         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
22433         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
22434
22435         * c-tree.h (insert_block): Kill.
22436         * c-decl.c (insert_block): Kill.
22437
22438 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22439
22440         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22441         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22442         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
22443         argument.
22444         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
22445         argument, call {push,pop}_function_context from here.
22446         * c-parser.c: Use c_{push,pop}_function_context.
22447
22448         * function.c (push_function_context_to): Move meat ...
22449         (push_function_context): ... here.  Simplify.
22450         * function.c (pop_function_context_from): Move meat ...
22451         (pop_function_context): ... here.  Simplify.
22452         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
22453         leave_nested).
22454         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22455         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22456         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
22457         * tree.h (push_function_context_to, pop_function_context_from): Remove.
22458
22459 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22460
22461         * expmed.c (extract_force_align_mem_bit_field): Remove.
22462
22463 2008-04-03  Richard Guenther  <rguenther@suse.de>
22464
22465         PR middle-end/35800
22466         * expr.h (try_casesi): Adjust prototype.
22467         * expr.c (try_casesi): Take fallback label as extra parameter.
22468         Use that for gen_casesi if default_label is NULL.
22469         * stmt.c (expand_case): Pass fallback label to try_casesi,
22470         make sure to fill gaps with a fallback label if default_label
22471         is not present.
22472
22473 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
22474
22475         PR target/35801
22476         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
22477
22478 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22479
22480         * expmed.c (extract_split_bit_field): Remove if (0) code.
22481         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
22482         (do_ds_constraint): Likewise.
22483
22484 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
22485
22486         * doc/cppopts.texi (-dU): Document.
22487         * c-common.h (flag_dump_macros): Update comment.
22488         * c-opts.c (handle_OPT_d): Handle -dU.
22489         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
22490         dump_queued_macros, cb_used_define, cb_used_undef): New.
22491         (init_pp_output): Handle -dU.
22492         (cb_line_change): Call dump_queued_macros.
22493         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
22494
22495 2008-04-02  Anatoly Sokolov <aesok@post.ru>
22496
22497         * config/avr/predicates.md (io_address_operand): New predicate.
22498         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
22499         * config/avr/avr.c (avr_io_address_p): Remove function.
22500         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
22501         'avr_io_address_p' function.
22502         (out_movhi_r_mr): (Ditto.).
22503         (out_movqi_mr_r): (Ditto.).
22504         (out_movhi_mr_r): (Ditto.).
22505         (avr_address_cost): (Ditto.).
22506
22507 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
22508
22509         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
22510         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
22511         in 32bit mode when XMM registers are available to avoid store
22512         forwarding stalls.
22513         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
22514         corresponding post-reload splitters.
22515
22516 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22517
22518         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
22519         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
22520         __builtin_ia32_roundss.
22521         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
22522         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
22523         __builtin_ia32_roundss.
22524         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
22525         IX86_BUILTIN_SHUFPD here.
22526
22527 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22528
22529         * config/i386/i386.md (plogic): New.
22530         (plogicprefix): Likewise.
22531
22532         * config/i386/mmx.md (mmx_<code><mode>3): New.
22533         (mmx_and<mode>3): Removed.
22534         (mmx_ior<mode>3): Likewise.
22535         (mmx_xor<mode>3): Likewise.
22536
22537         * config/i386/sse.md (<code><mode>3): New.
22538         (*<code><mode>3): Likewise.
22539         (*<code><mode>3): Likewise.
22540         (<code><mode>3): Likewise.
22541         (*sse_<code><mode>3): Likewise.
22542         (*sse2_<code><mode>3): Likewise.
22543         (<code>tf3): Likewise.
22544         (*<code>tf3): Likewise.
22545         (and<mode>3): Likewise.
22546         (*and<mode>3): Likewise.
22547         (ior<mode>3): Removed.
22548         (*ior<mode>3): Likewise.
22549         (xor<mode>3): Likewise.
22550         (*xor<mode>3): Likewise.
22551         (*and<mode>3): Likewise.
22552         (*ior<mode>3): Likewise.
22553         (*xor<mode>3): Likewise.
22554         (and<mode>3): Likewise.
22555         (*sse_and<mode>3): Likewise.
22556         (*sse2_and<mode>3): Likewise.
22557         (andtf3): Likewise.
22558         (*andtf3): Likewise.
22559         (ior<mode>3): Likewise.
22560         (*sse_ior<mode>3): Likewise.
22561         (*sse2_ior<mode>3): Likewise.
22562         (iortf3): Likewise.
22563         (*iortf3): Likewise.
22564         (xor<mode>3): Likewise.
22565         (*sse_xor<mode>3): Likewise.
22566         (*sse2_xor<mode>3): Likewise.
22567         (xortf3): Likewise.
22568         (*xortf3): Likewise.
22569
22570 2008-04-02  Richard Guenther  <rguenther@suse.de>
22571
22572         PR tree-optimization/14495
22573         PR tree-optimization/34793
22574         * tree-vrp.c (struct switch_update): New structure.
22575         (to_remove_edges, to_update_switch_stmts): New VECs.
22576         (simplify_switch_using_ranges): New function.  Remove not taken
22577         case labels and edges.
22578         (simplify_stmt_using_ranges): Call it.
22579         (identify_jump_threads): Mark edges we have queued for removal
22580         so we don't thread them.
22581         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
22582         case label vector.
22583         * tree-cfg.c (group_case_labels): Deal with missing default label.
22584         (tree_verify_flow_info): Allow missing default label.
22585         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
22586         (emit_case_nodes): Likewise.
22587         (expand_case): Do not rely on the default label to be present.
22588         * expr.c (try_casesi): Deal with NULL default_label.
22589         (do_tablejump): Likewise.
22590
22591 2008-04-02  Richard Guenther  <rguenther@suse.de>
22592
22593         PR tree-optimization/14495
22594         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
22595         SWITCH_EXPR here ...
22596         (vrp_visit_switch_stmt): ... but here (new function).
22597         (find_case_label_index): New helper function.
22598         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
22599
22600 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22601
22602         * fwprop.c: Fix ISO-C99ism.
22603
22604 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22605
22606         PR bootstrap/35752
22607         * Makefile.in (objdir): Set it here.
22608         * configure.ac: Not here.  Find dynamic linker characteristics.
22609         * exec-tool.in: Use them.
22610         * aclocal.m4: Regenerate.
22611         * configure: Regenerate.
22612
22613 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22614
22615         * expr.c (expand_var): Delete it.
22616         * expr.h (expand_var): Delete prototype.
22617         * function.c (expand_function_start): Use expand_decl instead.
22618         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
22619         langhook.
22620
22621 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
22622
22623         PR rtl-optimization/35542
22624         * fwprop.c (forward_propagate_and_simplify): Replace
22625         loc_reg_mentioned_in_p with reg_mentioned_p.
22626
22627 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22628
22629         PR rtl-optimization/35281
22630         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
22631         (propagate_rtx_1): Handle PR_HANDLE_MEM.
22632         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
22633         (varying_mem_p): Move above propagate_rtx.
22634         (all_uses_available_at): Do not check MEMs.
22635
22636 2008-04-02  Rafael Espíndola  <espindola@google.com>
22637
22638         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
22639         (register_edge_assert_for_2): Split the cond argument.
22640         (register_edge_assert_for_1): Adjust for the change in
22641         register_edge_assert_for_2.
22642         (register_edge_assert_for): Split the cond argument.
22643         (find_switch_asserts): Adjust for the change in
22644         register_edge_assert_for.
22645
22646 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
22647
22648         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
22649         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
22650         offsets for 64-bit mingw.
22651         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
22652         abi for x86_64-pc-mingw.
22653
22654 2008-04-02  Richard Guenther  <rguenther@suse.de>
22655
22656         * tree-vrp.c (extract_range_from_assert): Make sure to not
22657         produce range min/max with TREE_OVERFOW set.
22658         If merging a anti-range and a range keep the anti-range if
22659         the range covers all values of the type.
22660         (register_edge_assert_for_2): Only allow sign-changing
22661         conversions in detecting canonical range checks.  Also
22662         register an assert for the unsigned name if useful.
22663
22664         PR tree-optimization/35787
22665         * tree-vrp.c (vrp_val_max): New function.
22666         (vrp_val_min): Likewise.
22667         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
22668         (vrp_val_is_min): Likewise.
22669         (supports_overflow_infinity): Use vrp_val_{min,max}.
22670         (negative_overflow_infinity): Likewise.
22671         (positive_overflow_infinity): Likewise.
22672         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
22673         (is_positive_overflow_infinity): Likewise.
22674         (is_overflow_infinity): Likewise.
22675         (avoid_overflow_infinity): Use vrp_val_{min,max} and
22676         vrp_val_is_{min,max}.
22677         (set_and_canonicalize_value_range): Canonicalize anti-ranges
22678         to ranges if possible.  Avoid empty ranges.
22679
22680 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22681
22682         PR middle-end/35705
22683         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
22684         the expression is a function address.
22685
22686 2008-04-01  George Helffrich  <george@gcc.gnu.org>
22687
22688         PR fortran/35154, fortran/23057
22689         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
22690         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
22691         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
22692         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
22693         in common.
22694         (dbxout_syms): Check for COMMON-based symbol and wrap in
22695         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
22696         in bracket for efficiency.
22697
22698         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
22699         using DW_TAG_common_block + member offset.
22700         (add_pubname_string): New function.
22701         (dw_expand_expr): New function to find block name and offset for
22702         COMMON var.
22703         (common_check): New function to check whether symbol in Fortran COMMON.
22704         (gen_variable_die): If COMMON, use DW_TAG_common_block.
22705
22706 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
22707
22708         PR c/35436
22709         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
22710
22711 2008-04-02  Ben Elliston  <bje@au.ibm.com>
22712
22713         * config/v850/v850.md (casesi): Remove if (0) code.
22714         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
22715         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
22716
22717 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
22718
22719         * config/i386/i386.md (rex64suffix): New mode attribute.
22720         (floathi<mode>2): Disable expander for SSE math.
22721         (*floathi<mode>2_1): New insn insn_and_split pattern.
22722         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
22723         corresponding post-reload splitters.
22724         (*floathi<mode>2_i387): New macroized insn pattern.
22725         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
22726         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
22727         insn_and_split pattern.
22728         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
22729         New macroized instruction patterns and corresponding post-reload
22730         splitters.
22731         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
22732         and corresponding post-reload splitters.
22733         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
22734         New macroized instruction patterns.
22735         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
22736         macroized instruction patterns and corresponding post-reload splitters.
22737         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
22738         corresponding post-reload splitters.
22739         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
22740         New macroized instruction patterns.
22741         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
22742         corresponding post-reload splitters.
22743         (*floatsi<mode>2_i387): New macroized instruction patterns.
22744
22745 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
22746
22747         * config/i386/i386.md (smaxmin): New.
22748         (umaxmin): Likewise.
22749         (maxminiprefix): Likewise.
22750         (maxminfprefix): Likewise.
22751         (<code><mode>3): Likewise.
22752         (smin<mode>3): Removed.
22753         (smax<mode>3): Likewise.
22754
22755         * config/i386/mmx.md (mmx_<code>v2sf3): New.
22756         (mmx_<code>v4hi3): Likewise.
22757         (mmx_<code>v8qi3): Likewise.
22758         (mmx_smaxv2sf3): Removed.
22759         (mmx_sminv2sf3): Likewise.
22760         (mmx_umaxv8qi3): Likewise.
22761         (mmx_smaxv4hi3): Likewise.
22762         (mmx_uminv8qi3): Likewise.
22763         (mmx_sminv4hi3): Likewise.
22764
22765         * config/i386/sse.md (<addsub><mode>3): New.
22766         (*<addsub><mode>3): Likewise.
22767         (<sse>_vm<addsub><mode>3): Likewise.
22768         (<maxmin><mode>3): Likewise.
22769         (*<maxmin><mode>3_finite): Likewise.
22770         (*<maxmin><mode>3): Likewise.
22771         (<sse>_vm<maxmin><mode>3): Likewise.
22772         (sse3_h<addsub>v4sf3): Likewise.
22773         (sse3_h<addsub>v2df3): Likewise.
22774         (<maxmin>v16qi3): Likewise.
22775         (*<maxmin>v16qi3): Likewise.
22776         (<maxmin>v8hi3): Likewise.
22777         (*<maxmin>v8hi3): Likewise.
22778         (*sse4_1_<maxmin><mode>3): Likewise.
22779         (*sse4_1_<maxmin><mode>3): Likewise.
22780         (add<mode>3): Removed.
22781         (*add<mode>3): Likewise.
22782         (<sse>_vmadd<mode>3): Likewise.
22783         (sub<mode>3): Likewise.
22784         (*sub<mode>3): Likewise.
22785         (<sse>_vmsub<mode>3): Likewise.
22786         (smin<mode>3): Likewise.
22787         (*smin<mode>3_finite): Likewise.
22788         (*smin<mode>3): Likewise.
22789         (<sse>_vmsmin<mode>3): Likewise.
22790         (smax<mode>3): Likewise.
22791         (*smax<mode>3_finite): Likewise.
22792         (*smax<mode>3): Likewise.
22793         (<sse>_vmsmax<mode>3): Likewise.
22794         (sse3_haddv4sf3): Likewise.
22795         (sse3_haddv2df3): Likewise.
22796         (sse3_hsubv4sf3): Likewise.
22797         (sse3_hsubv2df3): Likewise.
22798         (umaxv16qi3): Likewise.
22799         (*umaxv16qi3): Likewise.
22800         (smaxv8hi3): Likewise.
22801         (*smaxv8hi3): Likewise.
22802         (*sse4_1_smax<mode>3): Likewise.
22803         (*sse4_1_umax<mode>3): Likewise.
22804         (uminv16qi3): Likewise.
22805         (*uminv16qi3): Likewise.
22806         (sminv8hi3): Likewise.
22807         (*sminv8hi3): Likewise.
22808         (*sse4_1_smin<mode>3): Likewise.
22809         (*sse4_1_umin<mode>3): Likewise.
22810
22811 2008-04-01  Rafael Espíndola  <espindola@google.com>
22812
22813         * tree-cfg.c (verify_expr): remove in_phi.
22814         (verify_stmt): Don't call walk_tree with verify_expr. Use
22815         is_gimple_min_invariant instead of is_gimple_val.
22816
22817 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
22818
22819         * doc/include/gpl_v3.texi: Update for manpage generation.
22820         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
22821         gpl.texi.
22822         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
22823         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
22824         gpl_v3.texi instead of gpl.texi.
22825         (gpl.pod): New.
22826
22827 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
22828
22829         PR pch/13675
22830         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
22831
22832 2008-04-01  Rafael Espíndola  <espindola@google.com>
22833
22834         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
22835         (extract_code_and_val_from_cond): Use
22836         extract_code_and_val_from_cond_with_ops.
22837
22838 2008-04-01  Jan Hubicka  <jh@suse.cz>
22839
22840         * function.c (free_after_compilation): Free epilogue_delay_list.
22841         (prepare_function_start): Assert that previous compilation was freed.
22842
22843 2008-04-01  Jan Hubicka  <jh@suse.cz>
22844             Jim Wilson  <wilson@tuliptree.org>
22845             Andreas Tobler <andreast@gcc.gnu.org>
22846
22847         PR middle-end/35781
22848         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
22849         rtl.emit instead cfun->emit.
22850         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
22851         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
22852
22853 2008-04-01  Ben Elliston  <bje@au.ibm.com>
22854
22855         * doc/c-tree.texi (Function Basics): Fix grammatical error.
22856
22857 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
22858
22859         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
22860         New options
22861         (fprofile-use): Add var flag_profile_use
22862         * coverage.c (coverage_begin_output): Do not open a gcno file for
22863         output only if -ftest-coverage is set.
22864         Do not add getpwd() to gcda file path.
22865         (build_gcov_info): Check the new flag
22866         flag_profile_datafile_relative_path.
22867         (coverage_init): Use profile_data_prefix.
22868         Read profile counter only if flag_profile_use is set.
22869         * opts.c (common_handle_option): New option fprofile-use=,
22870         fprofile-dir=, fprofile-generate=.
22871         * toplev.c (profile_data_prefix): New variable definition.
22872         * toplev.h (profile_data_prefix): New declaration.
22873         * doc/invoke.tex (Option Summary, Optimization Options):
22874         Add new options.
22875
22876 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
22877
22878         * varasm.c (output_constant_pool_1): In LABEL_REF check,
22879         use tmp consistently.
22880
22881         PR target/35695
22882         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
22883         * config/ia64/ia64.c (rtx_needs_barrier): Handle
22884         UNSPEC_FR_RECIP_APPROX_RES.
22885         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
22886
22887 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
22888
22889         PR c/35750
22890         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
22891
22892 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22893
22894         PR middle-end/30186
22895         * fold-const.c (fold_indirect_ref_1): Support accessing non first
22896         element of the vector via a pointer.
22897
22898 2008-03-31  Ian Lance Taylor  <iant@google.com>
22899
22900         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
22901
22902 2008-03-31  Jan Hubicka  <jh@suse.cz>
22903
22904         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22905         get_arg_pointer_save_area.
22906         * expr.c (init_expr): Just clear out rtl.expr.
22907         * function.c (free_after_compilation): Clear out whole RTL structure.
22908         (get_func_frame_size): Merge into ...
22909         (get_frame_size): ... this one.
22910         (assign_stack_local_1): Merge into ...
22911         (assign_stack_local): ... this one.
22912         (expand_function_end): Update call of get_arg_pointer_save_area.
22913         (get_art_pointer_save_area): Remove cfun argument.
22914         * function.h (emit_status): regno_pointer_align does not need length
22915         attribute. Move x_regno_reg_rtx to ...
22916         (regno_reg_rtx): ... new global array.
22917         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
22918         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
22919         apply_args_value, forced_labels, stack_pointer_delta):
22920         Update accestors.
22921         (struct varasm_status): Move here from varasm.c
22922         (struct rtl_data): New. Move here some fields from struct function.
22923         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22924         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22925         used_temp_slots avail_temp_slots, temp_slot_level,
22926         nonlocal_goto_handler_labels): Update accesstors.
22927         (rtl): New global variable.
22928         (struct function): Move some fileds to rtl_data.
22929         (get_arg_pointer_save_area): Update prototype.
22930         * emit-rtl.c (rtl): Declare.
22931         (regno_reg_rtx): Declare.
22932         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22933         Update.
22934         (gen_reg_rtx): Update.
22935         (init_virtual_regs): Do not tate emit_status argument.
22936         (init_emit): Do not allocate emit.
22937         * varasm.c (varasm_statuc): Move to function.h.
22938         (n_deferred_constatns): Update accestor.
22939         (init_varasm_status): Do not allocate varasm_status.
22940         (force_const_mem, get_pool_size, output_constant_pool): Update.
22941         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22942         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22943
22944 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
22945
22946         PR rtl-optimization/35729
22947         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
22948         references.
22949
22950 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
22951
22952         PR target/32000
22953         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
22954         load/store if memory is unaligned.
22955         (*movti_rex64): Likewise.
22956
22957         * config/i386/predicates.md (misaligned_operand): New.
22958
22959 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
22960
22961         PR tree-opt/35431
22962         * tree-ssa-phiopt.c (conditional_replacement): Return early for
22963         complex types.
22964
22965 2008-03-31  Jan Beulich  <jbeulich@novell.com>
22966
22967         * config/ia64/constraints.md: Add 'j' constraint.
22968         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
22969         (movdi_internal): Likewise.
22970
22971 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
22972
22973         PR c/35748
22974         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
22975
22976 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22977
22978         PR target/35757
22979         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
22980         proper error message for the third argument on blendpd and
22981         blendps.
22982
22983         * config/i386/sse.md (blendbits): New.
22984         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
22985
22986 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
22987
22988         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
22989
22990 2008-03-30  Richard Guenther  <rguenther@suse.de>
22991
22992         PR middle-end/31023
22993         * fold-const.c (fold_sign_changed_comparison): Do leave
22994         conversions to base-types alone.
22995
22996 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22997
22998         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
22999         the link register if one altivec register is be saved.
23000
23001 2008-03-30  Ben Elliston  <bje@au.ibm.com>
23002
23003         * final.c (final_scan_insn): Remove if (0) code.
23004
23005 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
23006
23007         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
23008
23009 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
23010
23011         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
23012         of V4SFmode to ix86_binary_operator_ok.
23013
23014 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
23015
23016         * config/i386/i386.c (override_options): Initialize
23017         ix86_veclib_handler to ix86_veclibabi_svml when
23018         -mveclibabi=svml is used.
23019         (ix86_veclibabi_svml): New function for SVML ABI style
23020         vectorization support.
23021         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
23022
23023 2008-03-28  Rafael Espíndola  <espindola@google.com>
23024
23025         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
23026         (tree_binary_nonnegative_warnv_p): Make it public.
23027         (tree_single_nonnegative_warnv_p): Make it public.
23028         (tree_invalid_nonnegative_warnv_p): Make it public.
23029         (tree_unary_nonzero_warnv_p): Make it public.
23030         (tree_binary_nonzero_warnv_p): Make it public
23031         (tree_single_nonzero_warnv_p): Make it public.
23032         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
23033         (extract_range_from_binary_expr): Split the expr argument.
23034         (extract_range_from_unary_expr): Split the expr argument.
23035         (extract_range_from_comparison): Split the expr argument.
23036         (extract_range_from_expr): Use the new aux functions.
23037         (vrp_evaluate_conditional_warnv): Use
23038         vrp_evaluate_conditional_warnv_with_ops.
23039         * tree.h (tree_unary_nonzero_warnv_p): Declare.
23040         (tree_binary_nonzero_warnv_p): Declare.
23041         (tree_single_nonzero_warnv_p): Declare.
23042         (tree_expr_nonzero_warnv_p): Declare.
23043         (tree_unary_nonnegative_warnv_p): Declare.
23044         (tree_binary_nonnegative_warnv_p): Declare.
23045         (tree_single_nonnegative_warnv_p): Declare.
23046         (tree_invalid_nonnegative_warnv_p): Declare.
23047
23048 2008-03-28  Richard Guenther  <rguenther@suse.de>
23049
23050         PR tree-optimization/30317
23051         PR tree-optimization/30911
23052         PR tree-optimization/34793
23053         * tree-vrp.c (set_and_canonicalize_value_range): New function.
23054         (struct assert_locus_d): New member EXPR.
23055         (register_new_assert_for): Add EXPR parameter to support
23056         ASSERT_EXPR <name, expr OP limit>.
23057         (register_edge_assert_for_1): Adjust callers.
23058         (find_assert_locations): Likewise.
23059         (process_assert_insertions_for): Build condition from expression.
23060         (extract_range_from_assert): Handle ASSERT_EXPRs
23061         of the form ASSERT_EXPR <name, expr OP limit>.
23062         (register_edge_assert_for_2): New helper registering
23063         asserts for comparisons.  Recognize range tests of the form
23064         (unsigned)i - CST1 OP CST2.
23065         (register_edge_assert_for_1): Use it.
23066         (register_edge_assert_for): Likewise.
23067         (needs_overflow_infinity): Integer sub-types
23068         do not need overflow infinities.
23069         (vrp_val_is_max): The extreme values of integer sub-types
23070         are those of the base type.
23071         (vrp_val_is_min): Likewise.
23072         * tree.def (ASSERT_EXPR): Document extra allowed conditional
23073         expressions.
23074
23075 2008-03-28  Nick Clifton  <nickc@redhat.com>
23076
23077         PR target/31110
23078         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
23079         Return GENERAL_REGS for stack adjustment reloads.
23080
23081 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23082
23083         PR target/31334
23084         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
23085         const_vector when all the vectors are constant.
23086
23087 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
23088
23089         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
23090         comparisons.
23091         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
23092         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
23093         (scc_sf): New.
23094         (s<code>_sf): Use new scc_sf attribute for opcode names.
23095
23096 2008-03-27  Tom Tromey  <tromey@redhat.com>
23097
23098         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
23099         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
23100         config/spu/t-spu-elf, config/i386/t-interix,
23101         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
23102         config/i386/x-darwin, config/i386/x-mingw32,
23103         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
23104         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
23105         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
23106         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
23107         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
23108         config/rs6000/x-darwin, config/rs6000/t-rs6000,
23109         config/score/t-score-elf, config/arm/t-strongarm-pe,
23110         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
23111         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
23112         Revert automatic dependency patch.
23113
23114 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23115
23116         PR target/35657
23117         * config/i386/i386.c (ix86_function_arg_boundary): Align
23118         decimal floating point to its natural boundary.
23119
23120 2008-03-27  Richard Guenther  <rguenther@suse.de>
23121
23122         PR middle-end/35716
23123         * fold-const.c (fold_comparison): Restrict distinct decl
23124         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
23125         solely rely on operand_equal_p.
23126
23127 2008-03-27  Richard Guenther  <rguenther@suse.de>
23128
23129         PR c/32511
23130         * c-common.c (handle_weak_attribute): Reject combination of
23131         weak and inline.
23132
23133 2008-03-27  Richard Guenther  <rguenther@suse.de>
23134
23135         PR tree-optimization/32810
23136         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
23137         conversions from DECL_INITIAL.
23138         (fold_const_aggregate_ref): Likewise from constructor elements.
23139
23140 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
23141
23142         * tree-affine.h (aff_combination_expand): Declare.
23143         (get_inner_reference_aff): Likewise.
23144         * tree-affine.c (aff_combination_expand): Split out from
23145         tree_to_aff_combination_expand.
23146         (get_inner_reference_aff): New function.
23147         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
23148         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
23149         (struct lim_aux_data): sm_done field removed.
23150         (mem_ref_loc_p, mem_ref_locs_p): New types.
23151         (struct mem_ref): Added id, stored, accesses_in_loop,
23152         indep_loop, dep_loop, indep_ref, dep_ref fields.
23153         Removed is_stored, locs and next fields.
23154         (memory_accesses): New variable.
23155         (movement_possibility): Do not allow moving statements
23156         that store to memory.
23157         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
23158         New functions.
23159         (determine_max_movement): For statements with memory references,
23160         find the outermost loop in that the reference is independent.
23161         (move_computations_stmt): Mark the virtual operands for renaming.
23162         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
23163         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
23164         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
23165         add_vop_ref_mapping, create_vop_ref_mapping_loop,
23166         create_vop_ref_mapping, analyze_memory_references,
23167         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
23168         get_all_locs_in_loop, ref_always_accessed_p,
23169         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
23170         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
23171         store_motion_loop, store_motion): New functions.
23172         (struct vop_to_refs_elt): New type.
23173         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
23174         memref_hash, memref_eq, hoist_memory_references): Rewritten.
23175         (schedule_sm): Replaced by...
23176         (execute_sm): ... this.
23177         (determine_lsm_ref, hoist_memory_references,
23178         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
23179         find_more_ref_vops, free_mem_ref, free_mem_refs,
23180         determine_lsm_loop, determine_lsm): Removed.
23181         (tree_ssa_lim_finalize): Free data structures used by store motion.
23182         (tree_ssa_lim): Call analyze_memory_references.  Use
23183         store_motion instead of determine_lsm.
23184
23185 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23186
23187         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
23188         rename tmake_file to m68hc11/t-m68hc11.
23189         (mcore): Set inhibit_libc to true.
23190         * config.host (alpha*-dec-*vms*): Set extra_programs.
23191         (interix3*): Don't use host_xmake_file.
23192         * configure.ac: Let config.gcc override inhibit_libc.
23193         * configure: Regenerate.
23194
23195         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
23196         * config/t-openbsd-thread: Remove commented out lines.
23197
23198         * config/x-interix: Remove.
23199
23200         * config/m68hc11/t-m68hc11-gas: Rename to...
23201         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
23202
23203         * config/mcore/t-mcore: Remove T_CFLAGS.
23204         * config/mcore/t-mcore-pe: Likewise.
23205
23206 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23207
23208         * configure.ac: Replace custom __GNU_SOURCE test with
23209         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
23210         * aclocal.m4: Regenerate.
23211         * configure: Regenerate.
23212         * config.in: Regenerate.
23213
23214 2008-03-27  Richard Guenther  <rguenther@suse.de>
23215
23216         * fold-const.c (target.h): Include.
23217         (fold_comparison): Fold comparison of addresses of decls
23218         that bind locally or of constants.  Consolidate address folding code.
23219         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
23220         results from fold_binary_to_constant.
23221         (compare_values_warnv): Likewise.
23222
23223 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
23224
23225         PR middle-end/35429
23226         * fold-const.c (fold_truthop): Check for integeral types when folding
23227         a == 0 && b == 0 and a != 0 || b != 0 .
23228
23229 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
23230
23231         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
23232
23233 2008-03-26  Andreas Schwab  <schwab@suse.de>
23234
23235         * doc/invoke.texi: Fix use of @item vs. @itemx.
23236
23237 2008-03-26  Tom Tromey  <tromey@redhat.com>
23238
23239         * Makefile.in (build/gensupport.o, build/print-rtl.o,
23240         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
23241         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
23242         build/gencodes.o, build/genconditions.o, build/genconfig.o,
23243         build/genconstants.o, build/genemit.o, build/genextract.o,
23244         build/genflags.o, build/genmddeps.o, build/genopinit.o,
23245         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
23246         options.h.
23247
23248 2008-03-26  Richard Guenther  <rguenther@suse.de>
23249
23250         Revert
23251         2008-03-26  Richard Guenther  <rguenther@suse.de>
23252
23253         * fold-const.c (target.h): Include.
23254         (fold_comparison): Fold comparison of addresses of two decls
23255         that bind locally.  Consolidate address folding code.
23256
23257 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23258
23259         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
23260         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
23261         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
23262         dconstsqrt2, dconstthird, dconste and/or dconst10.
23263         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
23264         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
23265         dconstsqrt2, dconste): Delete.
23266         (init_emit_once): Likewise.  Simplify initializing dconstm1.
23267         Constify variable.
23268         * real.c (get_real_const): New.
23269         * real.h (dconst3, dconst10, dconstm2, dconstthird,
23270         dconstsqrt2, dconste): Delete.
23271         (real_value_const, get_real_const): New.
23272
23273 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
23274
23275         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
23276
23277         * config/i386/i386.c (ix86_function_arg_boundary): Check
23278         BIGGEST_ALIGNMENT instead of 128.
23279         (setup_incoming_varargs_64): Likewise.
23280
23281 2008-03-26  Tom Tromey  <tromey@redhat.com>
23282
23283         * Makefile.in (DEPFILES): Add missing '/'.
23284
23285 2008-03-26  Richard Guenther  <rguenther@suse.de>
23286
23287         * fold-const.c (target.h): Include.
23288         (fold_comparison): Fold comparison of addresses of two decls
23289         that bind locally.  Consolidate address folding code.
23290
23291 2008-03-26  Nick Clifton  <nickc@redhat.com>
23292
23293         PR target/31232
23294         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
23295         not allow INT+INT as a legitimate addressing mode.
23296
23297 2008-03-26  Richard Guenther  <rguenther@suse.de>
23298
23299         * tree-flow.h (widen_bitfield): Remove declaration.
23300         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
23301         (widen_bitfield): Remove function.
23302         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
23303         code.
23304
23305 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23306
23307         PR target/31558
23308         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
23309         error_mark_node's.
23310
23311 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23312
23313         PR rtl-optimization/35232
23314         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
23315         (forget_old_reloads_1, forget_marked_reloads): Don't clear
23316         reg_reloaded_call_part_clobbered here.
23317         (reload_regs_reach_end_p): New function.
23318         (reload_reg_rtx_for_input): New variable.
23319         (reload_reg_rtx_for_output): Likewise.
23320         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
23321         when reassigning a pseudo register.  Load reloadreg from
23322         reload_reg_rtx_for_input, moving the mode and register
23323         calculation to...
23324         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
23325         instead of the original when deciding whether an input reload
23326         would be a no-op or whether an output reload can be deleted.
23327         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
23328         when setting up new_spill_reg_store.  Load it from
23329         reload_reg_rtx_for_output, moving the mode and register
23330         calculation to...
23331         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
23332         instead of the original when deciding whether an output reload
23333         would be a no-op.  Do the same when modifying insn notes.
23334         Use rtx_equal_p instead of == to compare the registers.
23335         (inherit_piecemeal_p): Take a mode and two register numbers
23336         as argument.
23337         (emit_reload_insns): Clear new_spill_reg_store for every hard
23338         register in the reload register.  Remove spill registers
23339         from reg_reloaded_valid before considering whether to record
23340         inheritance information for them.  Use reload_reg_rtx_for_output
23341         instead of reg_rtx when recording output reloads.  Use
23342         reload_reg_rtx_for_input instead of reg_rtx when recording
23343         input reloads.  Set or clear reg_reloaded_call_part_clobbered
23344         at the same time as setting reg_reloaded_valid.
23345         (delete_output_reload): Add a new_reload_reg parameter and use it
23346         instead of rld[j].reg_rtx.
23347         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
23348         calls accordingly.
23349
23350 2008-03-25  Tom Tromey  <tromey@redhat.com>
23351
23352         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
23353         (build/genattr.o): Likewise.
23354         (build/genattrtab.o): Likewise.
23355         (build/gencodes.o): Likewise.
23356         (build/genconfig.o): Likewise.
23357         (build/genconstants.o): Likewise.
23358         (build/genemit.o): Likewise.
23359         (build/genextract.o): Likewise.
23360         (build/genflags.o): Likewise.
23361
23362 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
23363
23364         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
23365         instead of size_int for integer types.
23366         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
23367         to match type of MINUS_EXPR.
23368
23369 2008-03-25  Tom Tromey  <tromey@redhat.com>
23370
23371         * configure: Rebuilt.
23372         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
23373         Makefile.
23374
23375 2008-03-25  Tom Tromey  <tromey@redhat.com>
23376
23377         * config/x-solaris (host-solaris.o): Update.
23378         * config/x-linux (host-linux.o): Update.
23379         * config/x-hpux (host-hpux.o): Update.
23380         * config/x-darwin (host-darwin.o): Update.
23381         * config/v850/t-v850e (v850-c.o): Update.
23382         * config/v850/t-v850 (v850-c.o): Update.
23383         * config/t-vxworks (vxworks.o): Update.
23384         * config/t-sol2 (sol2-c.o, sol2.o): Update.
23385         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
23386         * config/spu/t-spu-elf (spu-c.o): Update.
23387         (spu.o): Remove.
23388         * config/sh/t-symbian (sh-c.o): Update.
23389         (symbian.o): Update.
23390         * config/sh/t-sh (sh-c.o): Update.
23391         * config/score/t-score-elf (score7.o, score3.o): Update.
23392         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
23393         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
23394         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
23395         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
23396         (rs6000.o): Remove.
23397         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
23398         * config/m32c/t-m32c (m32c-pragma.o): Update.
23399         * config/ia64/t-ia64 (ia64-c.o): Update.
23400         * config/i386/x-mingw32 (host-mingw32.o): Update.
23401         * config/i386/x-i386 (driver-i386.o): Update.
23402         * config/i386/x-darwin (host-i386-darwin.o): Update.
23403         * config/i386/x-cygwin (host-cygwin.o): Update.
23404         * config/i386/t-nwld (nwld.o): Update.
23405         * config/i386/t-netware (netware.o): Update.
23406         * config/i386/t-interix (winnt.o): Update.
23407         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
23408         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
23409         msformat-c.o): Update.
23410         * config/bfin/t-bfin-linux (generated_files): Add
23411         linux-sysroot-suffix.h.
23412         * config/arm/t-wince-pe (pe.o): Update.
23413         * config/arm/t-strongarm-pe (pe.o): Update.
23414         * config/arm/t-pe (pe.o): Update.
23415         * config/arm/t-arm (arm-c.o): Update.
23416         * doc/install.texi (Prerequisites): Require make 3.80.
23417         * Makefile.in: Remove .o targets.
23418         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
23419         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
23420         (simple_generated_h, simple_generated_c): Move earlier.
23421         (generated_files): New variable.
23422         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
23423         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
23424         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
23425         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
23426         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
23427         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
23428         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
23429         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
23430         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
23431         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
23432         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
23433         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
23434         (.c.o): Remove.
23435         (COMPILE.base, COMPILE): New variables.
23436         (%.o): New pattern rule.
23437         (ALL_HOST_OBJS): New variable.
23438         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
23439         (dummy-checksum.o, cc1-checksum.o): Remove.
23440         (DRIVER_SHLIB): New variable.
23441         (DRIVER_DEFINES): Use it.
23442         (gencondmd.c): Move out of build/.
23443         (s-conditions): Update.
23444         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
23445         (ALL_BUILD_OBJS): Likewise.
23446         (build/%.o): Use BUILDCOMPILE.
23447         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
23448         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
23449         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
23450         build/gencheck.o, build/gencodes.o, build/genconditions.o,
23451         build/genconfig.o, build/genconstants.o, build/genemit.o,
23452         build/genextract.o, build/genflags.o, build/genmddeps.o,
23453         build/genopinit.o, build/genoutput.o, build/genpeep.o,
23454         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
23455         build/gen-protos.o, build/scan.o, build/fix-header.o,
23456         build/scan-decls.o): Simplify.
23457         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
23458         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
23459         prefix.o, toplev.o): Reduce to variable setting.
23460         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
23461         ($(out_object_file), gcc-options.o): New targets.
23462         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
23463         * configure: Rebuilt.
23464         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
23465         * doc/sourcebuild.texi (Front End Directory): Document new variable.
23466
23467 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
23468
23469         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
23470         complain when we hit an error, return ERROR_MARK_NODE.
23471
23472 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23473
23474         * config/sh/constraints.md (Pso, Psz): New constraints.
23475         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
23476         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
23477
23478 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23479
23480         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
23481         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
23482
23483 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23484
23485         * config/sh/sh.md (prefetch): Add condition for SH2A target.
23486         (prefetch_sh2a): New.
23487
23488 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23489             Naveen.H.S  <naveen.hs@kpitcummins.com>
23490
23491         * config/sh/constraints.md (I28): New constraint.
23492         * config/sh/sh.c (broken_move): Add support for movi20s.
23493         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
23494
23495 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
23496             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23497             Naveen.H.S  <naveen.hs@kpitcummins.com>
23498
23499         * config/sh/sh.c (SH_ATTRIBUTES): Define.
23500         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
23501         (print_operand): Handle resbank in %@ operand code.
23502         (sh_encode_section_info): New.
23503         (push_regs): Add conditions for resbank.
23504         (sh_expand_epilogue): Likewise.
23505         (sh_insert_attributes): Likewise.
23506         (sh_attribute_table): Likewise.
23507         (sh_handle_resbank_handler_attribute): New.
23508         (sh2a_handle_function_vector_handler_attribute): New.
23509         (sh2a_is_function_vector_call): New.
23510         (sh2a_get_function_vector_number): New.
23511         (sh2a_function_vector_p): New.
23512         (sh_cfun_resbank_handler_p): New.
23513         * config/sh/sh.md (calli): Emit jsr/n if possible.
23514         (calli_tbr_rel): New.
23515         (calli_pcrel): Emit jsr/n if possible.
23516         (return_i): Emit rts/n if possible.
23517         (call_valuei_tbr_rel): New.
23518         (call_valuei_pcrel): Add condition for SH2A target.
23519         (call_value): Likewise.
23520         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
23521         (sh2a_get_function_vector_number): Likewise.
23522         (sh2a_is_function_vector_call): Likewise.
23523         * doc/extend.texi: Document TBR relative addressing of SH2A.
23524         (resbank): Add description for SH2A.
23525
23526 2008-03-24  Richard Guenther  <rguenther@suse.de>
23527
23528         PR c/22371
23529         * gimplify.c (gimplify_modify_expr): For frontend type-correct
23530         pointer assignments change conversions according to middle-end rules.
23531         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
23532         * configure.ac: Include type checking in yes.
23533         * configure: Regenerate.
23534
23535 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23536
23537         * diagnostic.c (diagnostic_count_diagnostic): Delete.
23538         (diagnostic_report_diagnostic): Update. Handle ICEs here.
23539
23540 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
23541
23542         * gthr-vxworks.h (UNUSED): Define.
23543
23544 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
23545
23546         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
23547
23548 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
23549
23550         * doc/extend.texi (Function Attributes): Add missing comma in the
23551         example of the "alloc_size" attribute.
23552
23553 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
23554
23555         Revert:
23556         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23557
23558         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23559         32bit host.
23560
23561         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23562
23563         PR target/35496
23564         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23565         of the underlying type of a MS bitfield layout to the natural
23566         alignment of the type.
23567
23568         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23569
23570         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23571         to their natural alignment to avoid store forwarding stalls.
23572
23573 2008-03-22  Richard Guenther  <rguenther@suse.de>
23574
23575         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
23576         For PHI nodes verify the address is invariant.
23577         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
23578         (get_symbol_constant_value): Use is_gimple_min_invariant.
23579         (maybe_fold_stmt_indirect): Likewise.
23580
23581 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
23582
23583         PR rtl-optimization/33927
23584         * Makefile.in (dse.o): Depend on $(TM_P_H).
23585         * expr.h (extract_low_bits): Declare.
23586         * expmed.c (extract_low_bits): New function.
23587         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
23588         * dse.c: Include tm_p.h.
23589         (find_shift_sequence): Remove the read_reg argument and return the
23590         read value.  Emit the instructions instead of returning them.
23591         Iterate on new_mode rather than calculating it each time.
23592         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
23593         source to NEW_MODE and extract_low_bits to convert the shifted
23594         value to READ_MODE.
23595         (replace_read): Allow the load and store to have different mode
23596         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
23597         or extraction instructions before trying the replacement.  Update
23598         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
23599
23600 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23601
23602         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23603         to their natural alignment to avoid store forwarding stalls.
23604
23605 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23606
23607         PR target/27946
23608         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
23609         encouraging but not allowing gprs for input;
23610         change the input constraint to !f#r.
23611         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
23612         gprs for output;
23613         change the output constraint to !f#r.
23614
23615 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
23616
23617         PR target/13958
23618         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
23619         corresponding post-reload splitters.
23620         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
23621         when x87 FP math is selected.
23622         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
23623         New function prototype.
23624         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
23625         unreachable function to ease macroization of insn patterns.
23626
23627 2008-03-21  Martin Jambor  <mjambor@suse.cz>
23628
23629         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
23630         reference dumps if ddr is NULL or dependence is unknown.
23631
23632 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23633
23634         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
23635         unsigned extension into account.
23636         (ATOMIC_COMPARE_AND_SWAP): Likewise.
23637         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
23638         Do computations on a scratch register.
23639
23640 2008-03-21  Richard Guenther  <rguenther@suse.de>
23641
23642         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
23643         Use is_gimple_min_invariant instead of TREE_INVARIANT.
23644         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
23645         * tree-ssa-dom.c (record_equality): Likewise.
23646         * tree-inline.c (copy_body_r): Likewise.
23647         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
23648         TREE_INVARIANT.
23649
23650 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23651
23652         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
23653         as 'delete_unused' argument.
23654
23655 2008-03-20  Richard Guenther  <rguenther@suse.de>
23656
23657         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23658         special casing of constant qualifiers.
23659         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
23660         care about them in general.
23661         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
23662         regardless of their type.
23663         (fold_stmt_r): Forcefully fold *& if we end up with that.
23664
23665 2008-03-20  Paul Brook  <paul@codesourcery.com>
23666
23667         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
23668         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
23669         linker flags.
23670         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
23671         definition.
23672         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
23673         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
23674
23675 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
23676
23677         * common.opt (Wmudflap): New option.
23678         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
23679         (mx_register_decls): Likewise.
23680         (mudflap_finish_file): Likewise.
23681         * doc/invoke.texi: Document -Wno-mudflap.
23682
23683 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
23684
23685         * c-format.c (replace_format_name_to_system_name): New.
23686         (cmp_attribs): New.
23687         (convert_format_name_to_system_name): New.
23688         (decode_format_attr): Add use of convert_format_name_to_system_name.
23689         (format_types_orig): Add gnu_ prefix to names.
23690         (check_format_info_main): Special treating of \0 escaped names for
23691         supporting multi-character format specifiers as I32, I64.
23692         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
23693         (gnu_target_overrides_format_attributes): New.
23694         * c-format.h: Add structure target_ovr_attr to hold
23695         system specific formatter names.
23696         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
23697         msformat-c.o file to c_target_objs and cxx_target_objs.
23698         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23699         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
23700         (TARGET_N_FORMAT_TYPES): New.
23701         * config/i386/msformat-c.c: New.
23702         * config/i386/t-cygming: Add build rule for msformat-c.o.
23703         * doc/extend.texi: Add new format names gnu_* and ms_* and
23704         further details.
23705         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23706
23707 2008-03-20  Ira Rosen  <irar@il.ibm.com>
23708
23709         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
23710         optimizations turned on under -O3.
23711         (ftree-vectorize): Add that the flag is turned on with -O3.
23712
23713 2008-03-20  Ben Elliston  <bje@au.ibm.com>
23714
23715         * regmove.c (try_auto_increment): Fix spelling error in comment.
23716         * final.c (final_scan_insn): Likewise.
23717
23718 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
23719
23720         PR target/14552
23721         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
23722         allocator preferences for "y" and "r" class registers.
23723         ("*mov<mode>_internal"): Ditto.
23724         ("*movv2sf_internal_rex64"): Ditto.
23725         ("*movv2sf_internal"): Ditto.
23726
23727 2008-03-19  Michael Matz  <matz@suse.de>
23728
23729         PR middle-end/35616
23730         * calls.c (expand_call): Check overlap of arguments with call
23731         address for sibcalls.
23732
23733 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23734
23735         PR target/35496
23736         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23737         of the underlying type of a MS bitfield layout to the natural
23738         alignment of the type.
23739
23740 2008-03-19  Jan Hubicka  <jh@suse.cz>
23741
23742         PR other/35094
23743         * toplev.c (decode_d_option): Handle all CPP flags.
23744         * tree-vrp.c: Update tree_pass descriptors.
23745         * regrename.c: Update tree_pass descriptors.
23746         * fwprop.c: Update tree_pass descriptors.
23747         * doc/invoke.texi: Remove documentation of dropped -d? flags.
23748         * tree-into-ssa.c: Update tree_pass descriptors.
23749         * tree-dump.c: Update tree_pass descriptors.
23750         * tree-complex.c: Update tree_pass descriptors.
23751         * tree-dump.h: Update tree_pass descriptors.
23752         * see.c: Update tree_pass descriptors.
23753         * cgraphbuild.c: Update tree_pass descriptors.
23754         * tracer.c: Update tree_pass descriptors.
23755         * tree-loop-distribution.c: Update tree_pass descriptors.
23756         * cgraph.c: Update tree_pass descriptors.
23757         * postreload-gcse.c: Update tree_pass descriptors.
23758         * postreload.c: Update tree_pass descriptors.
23759         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
23760         * tree-tailcall.c: Update tree_pass descriptors.
23761         * tree-pass.h (tree_opt_pass): Rename to ...
23762         (opt_pass) ... this one; add "type" field and remove letter field.
23763         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
23764         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
23765         all_lowering_passes): Update declaration.
23766         * ipa-cp.c: Update tree_pass descriptors.
23767         * final.c: Update tree_pass descriptors.
23768         * omp-low.c: Update tree_pass descriptors.
23769         * tree-ssa-dse.c: Update tree_pass descriptors.
23770         * ipa-reference.c: Update tree_pass descriptors.
23771         * tree-ssa-uncprop.c: Update tree_pass descriptors.
23772         * auto-inc-dec.c: Update tree_pass descriptors.
23773         * reorg.c: Update tree_pass descriptors.
23774         * cgraphunit.c: Update tree_pass descriptors.
23775         * tree-ssa-copyrename.c: Update tree_pass descriptors.
23776         * tree-ssa-ccp.c: Update tree_pass descriptors.
23777         * df-core.c: Update tree_pass descriptors.
23778         * mode-switching.c: Update tree_pass descriptors.
23779         * tree-nomudflap.c: Update tree_pass descriptors.
23780         * modulo-sched.c: Update tree_pass descriptors.
23781         * ipa-pure-const.c: Update tree_pass descriptors.
23782         * cse.c: Update tree_pass descriptors.
23783         * web.c: Update tree_pass descriptors.
23784         * tree-stdarg.c: Update tree_pass descriptors.
23785         * tree-ssa-math-opts.c: Update tree_pass descriptors.
23786         * tree-ssa-dom.c: Update tree_pass descriptors.
23787         * tree-nrv.c: Update tree_pass descriptors.
23788         * tree-ssa-alias.c: Update tree_pass descriptors.
23789         * loop-init.c: Update tree_pass descriptors.
23790         * gimple-low.c: Update tree_pass descriptors.
23791         * ipa-inline.c: Update tree_pass descriptors.
23792         * tree-ssa-sink.c: Update tree_pass descriptors.
23793         * global.c: Update tree_pass descriptors.
23794         * ifcvt.c: Update tree_pass descriptors.
23795         * jump.c: Update tree_pass descriptors.
23796         * predict.c: Update tree_pass descriptors.
23797         * tree-ssa-loop.c: Update tree_pass descriptors.
23798         * recog.c: Update tree_pass descriptors.
23799         * dse.c: Update tree_pass descriptors.
23800         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
23801         * tree-eh.c: Update tree_pass descriptors.
23802         * regmove.c: Update tree_pass descriptors.
23803         * local-alloc.c
23804         * function.c: Update tree_pass descriptors.
23805         * tree-vectorizer.c: Update tree_pass descriptors.
23806         * gcse.c: Update tree_pass descriptors.
23807         * ipa-type-escape.c: Update tree_pass descriptors.
23808         * tree-if-conv.c: Update tree_pass descriptors.
23809         * init-regs.c: Update tree_pass descriptors.
23810         * ipa.c: Update tree_pass descriptors.
23811         * tree-ssa-phiopt.c: Update tree_pass descriptors.
23812         * rtl-factoring.c: Update tree_pass descriptors.
23813         * lower-subreg.c: Update tree_pass descriptors.
23814         * bt-load.c: Update tree_pass descriptors.
23815         * tree-dfa.c: Update tree_pass descriptors.
23816         * except.c: Update tree_pass descriptors.
23817         * emit-rtl.c: Update tree_pass descriptors.
23818         * cfgexpand.c: Update tree_pass descriptors.
23819         * tree-cfgcleanup.c: Update tree_pass descriptors.
23820         * cfgcleanup.c: Update tree_pass descriptors.
23821         * tree-ssa-pre.c: Update tree_pass descriptors.
23822         * tree-sra.c: Update tree_pass descriptors.
23823         * tree-mudflap.c: Update tree_pass descriptors.
23824         * tree-ssa-copy.c: Update tree_pass descriptors.
23825         * cfglayout.c: Update tree_pass descriptors.
23826         * tree-ssa-forwprop.c: Update tree_pass descriptors.
23827         * tree-ssa-dce.c: Update tree_pass descriptors.
23828         * tree-ssa.c: Update tree_pass descriptors.
23829         * regclass.c: Update tree_pass descriptors.
23830         * integrate.c: Update tree_pass descriptors.
23831         * tree-optimize.c: Update tree_pass descriptors.
23832         * tree-ssa-phiprop.c: Update tree_pass descriptors.
23833         * tree-object-size.c: Update tree_pass descriptors.
23834         * combine.c: Update tree_pass descriptors.
23835         * tree-outof-ssa.c: Update tree_pass descriptors.
23836         * bb-reorder.c: Update tree_pass descriptors.
23837         * stack-ptr-mod.c: Update tree_pass descriptors.
23838         * var-tracking.c: Update tree_pass descriptors.
23839         * tree-profile.c: Update tree_pass descriptors.
23840         * tree-vect-generic.c: Update tree_pass descriptors.
23841         * reg-stack.c: Update tree_pass descriptors.
23842         * sched-rgn.c: Update tree_pass descriptors.
23843         * tree-ssa-structalias.c: Update tree_pass descriptors.
23844         * tree-cfg.c: Update tree_pass descriptors.
23845         * passes.c (current_pass): Update declaration.
23846         (finish_optimization_passes): Update.
23847         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
23848         (register_one_dump_file, register_dump_files_1, next_pass_1):
23849         Update arguments.
23850         (init_optimization_passes): Update handling of new types.
23851         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
23852         * ipa-struct-reorg.c: Update tree_pass descriptors.
23853         * tree-ssa-reassoc.c: Update tree_pass descriptors.
23854         * combine-stack-adj.c: Update tree_pass descriptors.
23855         * cfgrtl.c: Update tree_pass descriptors.
23856         * dce.c: Update tree_pass descriptors.
23857         * tree-ssanames.c: Update tree_pass descriptors.
23858
23859 2008-03-19  Richard Guenther  <rguenther@suse.de>
23860
23861         PR middle-end/35609
23862         * tree-ssa.c (walk_data): New structure.
23863         (warn_uninitialized_var): If not always_executed warn with "maybe"
23864         instead of "is".
23865         (execute_early_warn_uninitialized): Compute post-dominators.
23866         Initialize always_executed before processing each basic block.
23867
23868 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
23869
23870         PR target/35504
23871         * config/i386/i386.c (x86_this_parameter): Calculate correct location
23872         of "this" pointer when "regparm = N" or "fastcall" is in effect.
23873
23874 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23875
23876         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
23877
23878 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
23879
23880         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
23881         is true.
23882         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
23883         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
23884         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
23885         target after ignore has been set, and move there also the commputation
23886         of subtarget and original_target.
23887         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
23888         (LANG_HOOKS_INITIALIZER): Remove it.
23889         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
23890
23891 2008-03-18  Richard Guenther  <rguenther@suse.de>
23892
23893         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
23894         found an expression with constants, note that in the VN for the lhs.
23895         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
23896         fold them to constants if possible.  Run cleanup_cfg if done so.
23897         (execute_pre): Return todo.
23898         (do_pre): Likewise.
23899         (execute_fre): Likewise.
23900         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
23901         of constants.
23902         (get_prop_source_stmt): Look through pointer conversions.
23903
23904 2008-03-18  Jan Hubicka  <jh@suse.cz>
23905
23906         * tree-pretty-print.c: Include predict.h.
23907         (dump_generic_node): Dump predictor.
23908         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
23909         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
23910         * gimple-low.c (lower_stmt): Likewise.
23911         * expr.c (expand_expr_real): Likewise.
23912         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
23913         them.
23914         (build_predict_expr, build_predict_expr): New.
23915         * predict.h (predictor_name, build_predict_expr): Update.
23916         * c-typeck.c (c_finish_bc_stmt): Add prediction.
23917         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
23918         * predict.def (PRED_CONTINUE): Update hitrate.
23919         * tree.def (PREDICT_EXPR): Define.
23920         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
23921         do not handle BIND_EXPR.
23922         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
23923         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
23924         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
23925         operands.
23926
23927 2008-03-18  Michael Matz  <matz@suse.de>
23928
23929         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
23930
23931 2008-03-18  Richard Guenther  <rguenther@suse.de>
23932
23933         * tree-gimple.h (is_gimple_invariant_address): Declare.
23934         (is_gimple_constant): Likewise.
23935         * tree-gimple.c (is_gimple_constant): New function.
23936         (is_gimple_invariant_address): Likewise.
23937         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
23938         and is_gimple_invariant_address.
23939         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
23940         previous change.
23941         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
23942         an addressable base.
23943
23944 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
23945
23946         PR middle-end/35611
23947         * gimplify.c (gimplify_expr): Gimplify second operand of
23948         OMP_ATOMIC_LOAD.
23949
23950 2008-03-17  Richard Guenther  <rguenther@suse.de>
23951
23952         PR tree-optimization/19637
23953         * fold-const.c (fold_unary): Remove restrictions of removing
23954         intermediate pointer-conversions (P2)(P1)P0.
23955         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
23956         conversion to void pointer.
23957         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
23958
23959 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
23960
23961         PR debug/31510
23962         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
23963         emulated thread local variables.
23964
23965 2008-03-16  Richard Guenther  <rguenther@suse.de>
23966
23967         PR middle-end/35607
23968         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
23969         expand TREE_INVARIANT operations that are not gimple invariant.
23970
23971 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
23972
23973         * doc/extend.texi (Alignment): Say that the ABI controls
23974         the __alignof__ for non-strict-alignment targets rather
23975         than being a recommendation.
23976
23977 2008-03-15  Paul Brook  <paul@codesourcery.com>
23978
23979         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
23980         annotations.
23981         (arm_output_fn_unwind): Mark functions that can not be unwound.
23982
23983 2008-03-15  Paul Brook  <paul@codesourcery.com>
23984
23985         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
23986         extension instructions.
23987
23988 2008-03-15  Richard Guenther  <rguenther@suse.de>
23989
23990         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
23991         and fold constant aggregate refs.
23992         (fold_const_aggregate_ref): Handle string constants
23993         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
23994         (evaluate_stmt): Simplify now that ccp_fold folds constant
23995         aggregate refs.
23996
23997 2008-03-15  Paul Brook  <paul@codesourcery.com>
23998
23999         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
24000         (extzv): Use gen_extzv_t2.
24001         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
24002
24003 2008-03-15  Richard Guenther  <rguenther@suse.de>
24004
24005         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
24006         (fold_const_aggregate_ref): Likewise.
24007         (get_value): Return NULL if we don't have any values.
24008         (ccp_finalize): Set const_val to NULL after freeing it.
24009         * tree-flow.h (get_symbol_constant_value): Declare.
24010         (fold_const_aggregate_ref): Likewise.
24011         * tree-ssa-sccvn.c (try_to_simplify): Use them.
24012
24013 2008-03-15  Richard Guenther  <rguenther@suse.de>
24014
24015         PR middle-end/35593
24016         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
24017         to not produce negative array indices if not allowed.  Add
24018         parameter to indicate that.
24019         (maybe_fold_offset_to_component_ref): Allow negative array
24020         indices only for the first member of a structure.
24021         (maybe_fold_offset_to_reference): Allow negative array indices.
24022         (maybe_fold_stmt_addition): Likewise.
24023
24024 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
24025             Anatoly Sokolov <aesok@post.ru>
24026
24027         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
24028         (avr_arch): Add ARCH_AVR6.
24029         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
24030         (initial_elimination_offset): Initialize and use 'avr_pc_size'
24031         instead of fixed value 2.
24032         (print_operand_address): Use gs() asm specifier instead of pm().
24033         (avr_assemble_integer): (Ditto.).
24034         (avr_output_addr_vec_elt): (Ditto.).
24035         (print_operand): Handle "!" code.
24036         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
24037         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
24038         (AVR_HAVE_EIJMP_EICALL): Define.
24039         (AVR_3_BYTE_PC): Redefine.
24040         (AVR_2_BYTE_PC): (Ditto.).
24041         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
24042         (LINK_SPEC): Add atmega2560 and atmega2561.
24043         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
24044         (crtm2561.o).
24045         * config/avr/avr.md (call_insn): Use eicall instead of icall
24046         for 3 byte PC devices.
24047         (call_value_insn): (Ditto.).
24048         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
24049         (indirect_jump): Use only for for 2 byte PC devices.
24050         (*tablejump): (Ditto.).
24051         (*indirect_jump_avr6): Add insn.
24052         (*tablejump_rjmp): Don't use for 3 byte PC devices.
24053         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
24054         instead of ijmp for 3 byte PC devices.
24055         (__tablejump2__): (Ditto.).
24056         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
24057         (MULITLIB_DIRNAMES): (Ditto.).
24058         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
24059
24060 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
24061
24062         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
24063         "sse2_umulsidi3".  Use V1DI mode for operand 0.
24064         ("mmx_psadbw"): Use V1DI mode for operand 0.
24065         * config/i386/i386-modes.def (V1SI): New vector mode.
24066         * config/i386/i386.c (struct builtin_description)
24067         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
24068         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
24069         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
24070         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
24071         v1di_ftype_v8qi_v8qi type.
24072         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
24073
24074         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
24075         __builtin_ia32_pmuludq]: Fix the mode of return value.
24076
24077 2008-03-15  Richard Guenther  <rguenther@suse.de>
24078
24079         PR middle-end/35595
24080         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
24081         being a PHI_NODE.
24082
24083 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
24084
24085         * doc/invoke.texi (Option Summary, Xtensa Options): Document
24086         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
24087         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
24088         unless TARGET_SERIALIZE_VOLATILE is enabled.
24089         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
24090         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
24091         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
24092
24093 2008-03-14  Richard Guenther  <rguenther@suse.de>
24094
24095         PR tree-optimization/34172
24096         * tree-flow.h (refs_may_alias_p): Declare.
24097         (get_single_def_stmt): Likewise.
24098         (get_single_def_stmt_from_phi): Likewise.
24099         (get_single_def_stmt_with_phi): Likewise.
24100         * tree-dfa.c (refs_may_alias_p): New function.
24101         (get_single_def_stmt): Likewise.
24102         (get_single_def_stmt_from_phi): Likewise.
24103         (get_single_def_stmt_with_phi): Likewise.
24104         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
24105         (vn_reference_lookup_1): New helper function.
24106         (vn_reference_lookup): Walk the virtual use-def chain to
24107         continue searching for a match if the def does not alias the
24108         reference we are looking for.
24109
24110 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
24111
24112         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
24113         archive and Perzl.  Update The Written Word listing.
24114
24115 2008-03-14  Richard Guenther  <rguenther@suse.de>
24116
24117         PR tree-optimization/34043
24118         PR tree-optimization/33989
24119         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
24120         when doing FRE.
24121         (bitmap_find_leader): Use extra argument to verify dominance
24122         relationship inside a basic-block.
24123         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
24124         (find_leader_in_sets): Adjust.
24125         (create_component_ref_by_pieces): Take extra argument for
24126         dominance check, handle lookup failures.
24127         (find_or_generate_expression): Likewise.
24128         (create_expression_by_pieces): Likewise.
24129         (insert_into_preds_of_block): Adjust.
24130         (create_value_expr_from): If asked for, verify all operands
24131         are in the blocks AVAIL_OUT set.
24132         (make_values_for_stmt): Check for SSA_NAMEs that are life
24133         over an abnormal edge.
24134         (compute_avail): Remove such check.
24135         (do_SCCVN_insertion): New function.
24136         (eliminate): If we do not find a leader suitable for replacement
24137         insert a replacement expression from SCCVN if available.
24138         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
24139         (struct vn_ssa_aux): Add needs_insertion flag.
24140         * tree-ssa-sccvn.c (may_insert): New global flag.
24141         (copy_reference_ops_from_ref): Value-number union member access
24142         based on its size, not type and member if insertion is allowed.
24143         (visit_reference_op_load): For a weak match from union type
24144         punning lookup a view-converted value and insert a SSA_NAME
24145         for that value if that is not found.
24146         (visit_use): Make dumps shorter.  Do not disallow value numbering
24147         SSA_NAMEs that are life over an abnormal edge to constants.
24148         (free_scc_vn): Release inserted SSA_NAMEs.
24149         (run_scc_vn): New flag to specify whether insertion is allowed.
24150         Process SSA_NAMEs in forward order.
24151         * tree-ssa-loop-im.c (for_each_index): Handle invariant
24152         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
24153         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
24154         pointer type to/from integral types that do not change the
24155         precision to regular conversions.
24156
24157 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24158
24159         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24160         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24161         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
24162         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
24163         input arguments and the mode of return value.  Built-in functions
24164         that operate on whole 64-bit MMX register now use V1DI mode.
24165
24166 2008-03-13  Alon Dayan  <alond@il.ibm.com>
24167             Olga Golovanevsky  <olga@il.ibm.com>
24168
24169         PR tree-optimization/35041
24170         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
24171         to locate the right position in a statement.
24172
24173 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24174
24175         PR target/34000
24176         PR target/35553
24177         * config/i386/xmmintrin.h:  Change all static inline functions to
24178         extern inline and add __gnu_inline__ attribute.
24179         * config/i386/bmintrin.h: Ditto.
24180         * config/i386/smmintrin.h: Ditto.
24181         * config/i386/tmmintrin.h: Ditto.
24182         * config/i386/mmintrin-common.h: Ditto.
24183         * config/i386/ammintrin.h: Ditto.
24184         * config/i386/emmintrin.h: Ditto.
24185         * config/i386/pmmintrin.h: Ditto.
24186         * config/i386/mmintrin.h: Ditto.
24187         * config/i386/mm3dnow.h: Ditto.
24188
24189 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
24190
24191         PR middle-end/35185
24192         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
24193         (lower_omp_2): New function.
24194         (lower_omp_1, lower_omp): Rewritten.
24195
24196 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
24197
24198         PR 35054
24199         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
24200         with the phrase "Microsoft Windows compilers".
24201         (Push/Pop Macro Pragmas): New subsection. Document
24202         #pragma push_macro and pragma pop_macro.
24203
24204 2008-03-12  Paul Brook  <paul@codesourcery.com>
24205
24206         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
24207
24208 2008-03-12  Paul Brook  <paul@codesourcery.com>
24209
24210         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
24211         (thumb2_alusi3_short): Exclude PLUS and MINUS.
24212         (thumb2_addsi_shortim): Rename ...
24213         (thumb2_addsi_short): ... to this.  Allow register operands.
24214         (thumb2_subsi_short): New pattern.
24215         (thumb2_one_cmplsi2_short,
24216         thumb2_negsi2_short): New patterns and peepholes.
24217
24218 2008-03-12  Paul Brook  <paul@codesourcery.com>
24219
24220         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
24221
24222 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
24223
24224         * config/i386/i386.md (int_cond): New code iterator.
24225         (fp_cond): Ditto.
24226         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
24227         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
24228         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
24229         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
24230         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
24231         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
24232         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
24233         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
24234
24235 2008-03-12  Paul Brook  <paul@codesourcery.com>
24236
24237         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
24238         instead of {arm,thumb}_compute_save_reg_mask.
24239         (output_return_instruction): Ditto.
24240         (thumb_unexpanded_epilogue): Ditto.
24241         (thumb1_expand_prologue): Ditto.
24242         (thumb1_output_function_prologue): Ditto.
24243         (arm_set_return_address): Ditto.
24244         (thumb_set_return_address): Ditto.
24245         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
24246         regs to achieve stack alignment.
24247         (thumb1_compute_save_reg_mask): Fix compiler warning.
24248         (arm_output_epilogue): Use offsets->saved_regs_mask.
24249         Adjust stack pointer by poping call clobered registers.
24250         (arm_expand_prologue): Use offsets->saved_regs_mask.
24251         Adjust stack pointer by pushing extra registers.
24252         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
24253
24254 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
24255
24256         PR tree-opt/35422
24257         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
24258         conversion to the operands of a multiplication.
24259
24260 2008-03-12  Richard Guenther  <rguenther@suse.de>
24261
24262         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
24263         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
24264         * timevar.def (TV_TREE_PHIPROP): Add.
24265         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
24266         pass description.  Use TV_TREE_PHIPROP.
24267         * tree-ssa-forwprop.c: Remove phiprop code.
24268
24269 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
24270
24271         PR middle-end/35549
24272         * omp-low.c (maybe_lookup_decl): Constify first argument.
24273         (use_pointer_for_field): Change last argument from bool to
24274         omp_context *.  Disallow shared copy-in/out in nested
24275         parallel if decl is shared in outer parallel too.
24276         (build_outer_var_ref, scan_sharing_clauses,
24277         lower_rec_input_clauses, lower_copyprivate_clauses,
24278         lower_send_clauses, lower_send_shared_vars): Adjust callers.
24279
24280 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
24281             Ira Rosen  <irar@il.ibm.com>
24282
24283         * tree-vectorizer.c (free_stmt_vec_info): New function.
24284         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
24285         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
24286         * tree-vectorizer.h (free_stmt_vec_info): Declare.
24287         * tree-vect-transform.c (vectorizable_conversion): Free
24288         vec_oprnds0 if it was allocated.
24289         (vect_permute_store_chain): Remove unused VECs.
24290         (vectorizable_store): Free VECs that are allocated in the..
24291         function.
24292         (vect_transform_strided_load, vectorizable_load): Likewise.
24293         (vect_remove_stores): Simplify the code.
24294         (vect_transform_loop): Move code to vect_remove_stores().
24295         Call vect_remove_stores() and free_stmt_vec_info().
24296
24297 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24298
24299         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
24300         TARGET_HPUX.  Revise comment.
24301         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
24302         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
24303         Use sr4 variant of `be' instruction when not generating PIC code.
24304         (attr_length_call): Adjust for above change.
24305
24306 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24307
24308         * ipa-reference.c (static_execute): Remove module_statics_const and
24309         associated setting code.
24310
24311 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24312
24313         PR target/35540
24314         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
24315         predicate for operand 1.
24316         (paritysi2_cmp): Use register_operand predicate for operand 2.
24317         Use earlyclobber modifier for operand 1.  Remove support for
24318         memory operands.
24319         (paritydi2_cmp): Use register_operand predicate for operand 3.
24320         Use earlyclobber modifier for operand 1.  Remove support for
24321         memory operands.
24322
24323 2008-03-11  Paul Brook  <paul@codesourcery.com>
24324             Vladimir Prus  <vladimir@codesourcery.com>
24325
24326         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
24327         (arm_compute_save_reg0_reg12_mask): Always
24328         check if register 11 must be saved.  Always safe hard frame pointer
24329         when frame_pointer_needeed.
24330         (arm_compute_save_reg_mask): Save IP and PC
24331         only with apcs frames.
24332         (arm_output_epilogue): Adjust Thumb2 codepath to
24333         be also invoked and work for ARM non-apcs frames.
24334         (arm_expand_prologue): Don't bother saving IP
24335         for non-apcs frame, since it's not clobbered by
24336         prologue code.  Implement non-apcs frame
24337         layout.
24338
24339 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24340
24341         PR rtl-optimization/35281
24342         * expr.c (convert_move): Use a new pseudo for the intermediate
24343         from_mode->word_mode result.
24344
24345 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24346
24347         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
24348         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
24349         * toplev.c (compile_file): Don't call it.
24350
24351 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24352
24353         PR middle-end/35526
24354         * expr.c (store_expr): Call emit_block_move if the mode
24355         of "temp" RTX is BLKmode.
24356
24357 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24358             Richard Guenther  <rguenther@suse.de>
24359
24360         PR tree-optimization/31358
24361         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
24362         the step with a NULL_TREE.
24363         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
24364         to sizetype if type is a pointer type.
24365         (add_candidate_1): Don't convert the base and step to
24366         the generic type if the orginal type is a pointer type.
24367         (add_iv_value_candidates): Use sizetype for the step
24368         if type is a pointer type.
24369         (cand_value_at): Likewise.
24370         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
24371         for pointer types.
24372         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
24373         Don't convert the tem affine to the type.
24374         (add_elt_to_tree): Use sizetype for the step if a pointer.
24375         Use POINTER_PLUS_EXPR for pointers.
24376         (aff_combination_to_tree): Use sizetype for the step if a
24377         pointer.
24378
24379 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
24380
24381         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
24382         Remove commutativity hint.
24383
24384 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
24385
24386         PR c/35438
24387         PR c/35439
24388         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
24389         errorneous type.  Check that v is a VAR_DECL.
24390
24391         PR middle-end/35099
24392         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
24393
24394 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
24395
24396         PR tree-optimization/35494
24397         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
24398         may be overriden at link and run time.
24399
24400 2008-03-10  Richard Guenther  <rguenther@suse.de>
24401
24402         PR tree-optimization/34677
24403         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
24404         (poolify_tree): Likewise.
24405         (modify_expr_template): Likewise.
24406         (poolify_modify_stmt): Likewise.
24407         (insert_fake_stores): Handle all component-ref style stores
24408         in addition to INDIRECT_REF.  Also handle complex types.
24409         Do not poolify the inserted load.
24410         (realify_fake_stores): Do not rebuild the tree but only
24411         make it a SSA_NAME copy.
24412         (init_pre): Remove initialzation of modify_expr_template.
24413         Do not allocate modify_expr_node_pool.
24414         (fini_pre): Do not free modify_expr_node_pool.
24415
24416 2008-03-10  Paul Brook  <paul@codesourcery.com>
24417
24418         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
24419         to avoid conflicts.
24420
24421 2008-03-10  Paul Brook  <paul@codesourcery.com>
24422             Mark Shinwell  <shinwell@codesourcery.com>
24423
24424         * config/arm/cortex-r4.md: New.
24425         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
24426         insn attributes.
24427         * config/arm/arm.md: Include cortex-r4.md.
24428         (insn): Add smmls, sdiv and udiv values.
24429         (generic_sched): Don't use generic scheduling for Cortex-R4.
24430         (arm_issue_rate): New function.
24431         (TARGET_SCHED_ISSUE_RATE): Define.
24432
24433 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
24434
24435         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
24436
24437 2008-03-10  Richard Guenther  <rguenther@suse.de>
24438
24439         * tree-ssa-pre.c (get_sccvn_value): Simplify.
24440         (compute_avail): Do not add stmt uses to AVAIL_OUT.
24441
24442 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
24443
24444         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
24445         Set default to true.
24446
24447 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24448
24449         * c.opt (Wsynth): Deprecate.
24450         * doc/invoke.texi (Option Summary, Warning Options): Document
24451         -Wno-format-contains-nul.
24452
24453 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
24454
24455         PR target/35496
24456         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
24457         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
24458
24459 2008-03-09  Ira Rosen  <irar@il.ibm.com>
24460
24461         * config/rs6000/rs6000.c (builtin_description): Rename vector
24462         left shift operations.
24463         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
24464         (altivec_vsl<VI_char>): Rename to ...
24465         (ashl<mode>3): ... new name.
24466         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
24467         gen_ashlv4si3.
24468         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
24469
24470 2008-03-08  Richard Guenther  <rguenther@suse.de>
24471
24472         * coverage.h (tree_coverage_counter_addr): Declare.
24473         * coverage.c (tree_coverage_counter_addr): New function.
24474         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
24475         before using again.
24476         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
24477         (tree_gen_one_value_profiler): Likewise.
24478         (tree_gen_ic_profiler): Likewise.
24479         (tree_gen_average_profiler): Likewise.
24480         (tree_gen_ior_profiler): Likewise.
24481
24482 2008-03-08  Richard Guenther  <rguenther@suse.de>
24483
24484         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
24485         (vn_binary_op_insert): Likewise.
24486         (vn_unary_op_lookup): Likewise.
24487         (vn_unary_op_insert): Likewise.
24488         (vn_nary_op_lookup): Declare.
24489         (vn_nary_op_insert): Likewise.
24490         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
24491         and binary hashes, use a single obstack for unary_op_pool
24492         and binary_op_pool.
24493         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
24494         a single struct vn_nary_op_s.  Store tree code length and
24495         a variable number of operands.
24496         (struct vn_reference_op_struct): Remove unused op2.
24497         (vn_reference_op_eq): Do not compare op2.
24498         (vn_reference_op_compute_hash): Do not compute hash of op2.
24499         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
24500         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
24501         with vn_nary_op_compute_hash.
24502         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
24503         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
24504         vn_nary_op_lookup.
24505         (vn_unary_op_insert, vn_binary_op_insert): Replace with
24506         vn_nary_op_insert.
24507         (visit_unary_op): Call nary functions.
24508         (visit_binary_op): Likewise.
24509         (process_scc): Adjust for struct vn_tables_s changes.
24510         (allocate_vn_table): Likewise.
24511         (free_vn_table): Likewise.
24512         * tree-vn.c (vn_add): Call nary functions.
24513         (vn_lookup): Likewise.
24514
24515 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
24516
24517         PR target/35498
24518         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
24519         wdst back after sync_compare_and_swapqhi_internal.
24520
24521 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
24522
24523         PR target/22152
24524         * config/i386/i386-modes.def (V1DI): New vector mode.
24525         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
24526         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
24527         (MMXMODE248): Ditto.
24528         (MMXMODE): Add V1DI mode.
24529         (mmxvecsize): Change DI mode to V1DI mode.
24530         ("mov<mode>): Use MMXMODEI8 mode iterator.
24531         ("*mov<mode>_internal_rex64"): Ditto.
24532         ("*mov<mode>_internal"): Ditto.
24533         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
24534         ("mmx_sub<mode>3"): Ditto.
24535         ("mmx_adddi3"): Remove insn pattern.
24536         ("mmx_subdi3"): Ditto.
24537         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
24538         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
24539         ("mmx_ashl<mode>3"): Ditto.
24540         ("mmx_lshrdi3"): Remove insn pattern.
24541         ("mmx_ashldi3"): Ditto.
24542         * config/i386/i386.c (classify_argument): Handle V1DImode.
24543         (function_arg_advance_32): Ditto.
24544         (function_arg_32): Ditto.
24545         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
24546         mmx_addv1di3 insn pattern.
24547         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
24548         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
24549         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
24550         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
24551         Remove definitions of built-in functions.
24552         (V1DI_type_node): New node.
24553         (v1di_ftype_v1di_int): Ditto.
24554         (v1di_ftype_v1di_v1di): Ditto.
24555         (v2si_ftype_v2si_si): Ditto.
24556         (v4hi_ftype_v4hi_di): Remove node.
24557         (v2si_ftype_v2si_di): Ditto.
24558         (ix86_init_mmx_sse_builtins): Handle V1DImode.
24559         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
24560         Redefine builtins using def_builtin_const with *_ftype_*_int node.
24561         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
24562         Add new builtins using def_builtin_const.
24563         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
24564         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
24565         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
24566         * config/i386/mmintrin.h (__v1di): New typedef.
24567         (_mm_add_si64): Cast arguments to __v1di type.
24568         (_mm_sub_si64): Ditto.
24569         (_mm_sll_pi16): Cast __count to __v4hi type.
24570         (_mm_sll_pi32): Cast __count to __v2si type.
24571         (_mm_sll_si64): Cast arguments to __v1di type.
24572         (_mm_srl_pi16): Cast __count to __v4hi type.
24573         (_mm_srl_pi32): Cast __count to __v2si type.
24574         (_mm_srl_si64): Cast arguments to __v1di type.
24575         (_mm_sra_pi16): Cast __count to __v4hi type.
24576         (_mm_sra_pi32): Cast __count to __v2si type.
24577         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
24578         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
24579         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
24580         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
24581         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
24582         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
24583         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
24584         (_mm_srai_pi32): Use __builtin_ia32_psradi.
24585         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
24586         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24587         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24588         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
24589
24590 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
24591
24592         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
24593
24594 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
24595
24596         PR target/35373
24597         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
24598         reg+const addressing for Altivec modes.  Don't generate reg+reg
24599         addressing for TFmode or TDmode quantities.
24600
24601 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
24602
24603         * c-common.c (vector_types_convertible_p): Call langhook
24604         instead of comptypes.
24605
24606 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24607
24608         PR tree-opt/35402
24609         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
24610         integral and scalar float variables which have a
24611         NULL DECL_INITIAL.
24612
24613 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
24614
24615         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
24616         dwarf_register_span hook when emitting unwind information for
24617         register-to-memory saves.
24618         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
24619         (rs6000_frame_related): Remove call to spe_synthesize_frame.
24620
24621 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
24622
24623         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
24624         for the same VAR_DECL.
24625
24626 2008-03-06  Tom Tromey  <tromey@redhat.com>
24627
24628         * treelang: Delete.
24629         * doc/standards.texi (Standards): Don't mention treelang.
24630         * doc/invoke.texi (Overall Options): Don't mention treelang.
24631         * doc/install.texi (Prerequisites): Don't mention bison or
24632         treelang.
24633         (Configuration): Don't mention treelang.
24634         (Building): Likewise.
24635         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
24636
24637 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
24638
24639         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
24640         word-extractions out of a multi-word object.
24641
24642 2008-03-06  Richard Guenther  <rguenther@suse.de>
24643
24644         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
24645         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
24646         result type and precision.
24647         * expr.c (get_inner_reference): Set unsignedp based on the result
24648         type of BIT_FIELD_REF.
24649         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
24650         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
24651         (try_instantiate_multiple_fields): Likewise.  Use the correct type
24652         for BIT_FIELD_REF.
24653         (sra_build_assignment): Likewise.
24654         (sra_build_elt_assignment): Likewise.
24655         (sra_explode_bitfield_assignment): Likewise.
24656         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
24657         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
24658         set BIT_FIELD_REF_UNSIGNED.
24659         (vectorizable_load): Likewise.
24660
24661 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
24662
24663         * cse.c (cse_extended_basic_block): Invalidate artificial defs
24664         at bb start.
24665
24666 2008-03-06  Richard Guenther  <rguenther@suse.de>
24667
24668         * alias.c (struct alias_set_entry): Move has_zero_child field
24669         to pack with alias_set.
24670
24671 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
24672
24673         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24674         32bit host.
24675
24676 2008-03-05  Ian Lance Taylor  <iant@google.com>
24677
24678         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
24679
24680 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
24681
24682         * fwprop.c (update_df): Support width and offset parameters of
24683         df_ref_create.
24684         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
24685         global_conflicts): Change DF_REF_EXTRACT to either
24686         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24687         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24688         * df-scan.c (df_ref_record, df_defs_record,
24689         df_ref_create_structure, df_def_record_1, df_uses_record,
24690         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
24691         df_bb_refs_collect, df_entry_block_defs_collect,
24692         df_exit_block_uses_collect): Support new width and offset fields.
24693         (ref_extract_pool): New storage pool.
24694         (df_free_ref): New function.
24695         (df_reg_chain_unlink, df_free_collection_rec,
24696         df_sort_and_compress_refs): Call df_free_ref.
24697         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
24698         of df_ref_extract.
24699         (df_ref_create_structure): Allocate df_ref_extract if offset and
24700         width fields are used.
24701         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
24702         (df_uses_record): Get offset and width from ZERO_EXTRACT
24703         and SIGN_EXTRACT.
24704         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
24705         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24706         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24707         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
24708         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24709         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24710         (df_ref_extract): New structure.
24711         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
24712         (df_ref_create): Add width and offset parameters.
24713
24714 2008-03-05  Richard Guenther  <rguenther@suse.de>
24715
24716         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24717         Use ranges_overlap_p.
24718         (offset_overlaps_with_access): Rename
24719         to ranges_overlap_p and move ...
24720         * tree-flow-inline.h (ranges_overlap_p): ... here.
24721
24722         * tree.h (get_inner_reference, handled_component_p): Update
24723         comments.
24724
24725         * tree.h (record_component_aliases, get_alias_set,
24726         alias_sets_conflict_p, alias_sets_must_conflict_p,
24727         objects_must_conflict_p): Move declarations ...
24728         * alias.h (record_component_aliases, get_alias_set,
24729         alias_sets_conflict_p, alias_sets_must_conflict_p,
24730         objects_must_conflict_p): ... here.
24731         Include coretypes.h.
24732         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
24733
24734 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
24735
24736         * cfg.c: Include tree-flow.h.
24737         (remove_edge_raw): Call redirect_edge_var_map_clear.
24738         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
24739         * tree-flow-inline.h (redirect_edge_var_map_def): New.
24740         (redirect_edge_var_map_result): New.
24741         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
24742         PENDING_STMT use with redirect_edge_var_map_*.
24743         * tree-ssa.c (edge_var_maps): New definition.
24744         (redirect_edge_var_map_add): New.
24745         (redirect_edge_var_map_clear): New.
24746         (redirect_edge_var_map_dup): New.
24747         (redirect_edge_var_map_vector): New.
24748         (redirect_edge_var_map_destroy): New.
24749         (ssa_redirect_edge): Replace PENDING_STMT use with
24750         redirect_edge_var_map_*.
24751         (flush_pending_stmts): Same.
24752         (delete_tree_ssa): Destroy edge var map.
24753         * tree-flow.h (struct _edge_var_map): New.
24754         Define edge_var_map vector type.
24755         Declare redirect_edge_var_map_* prototypes.
24756         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
24757         * tree-cfg.c (reinstall_phi_args): Replace
24758         PENDING_STMT use with redirect_edge_var_map_*.
24759
24760 2008-03-05  Richard Guenther  <rguenther@suse.de>
24761
24762         PR tree-optimization/35472
24763         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
24764         whose single use_stmt has a overlapping set of loaded and
24765         stored symbols as that use_stmt might be a noop assignment then.
24766
24767 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
24768
24769         * gthr-rtems.h: Implement __gthread_mutex_destroy.
24770
24771 2008-03-05  Richard Guenther  <rguenther@suse.de>
24772
24773         PR c++/35336
24774         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
24775         should be constants.
24776         * tree-cfg.c (verify_expr): Verify it.
24777         * fold-const.c (fold_truthop): Remove code generating
24778         BIT_FIELD_REFs of structure bases.
24779         (fold_binary): Likewise.
24780         (fold_ternary): Position and size of BIT_FIELD_REFs are
24781         always host integers.
24782         (make_bit_field_ref): Remove.
24783         (optimize_bit_field_compare): Remove.
24784         (all_ones_mask_p): Remove.
24785
24786 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
24787
24788         PR gcc/33009
24789         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
24790         (split_block_and_df_analyze): New. Split basic block and rebuild
24791         dataflow.
24792         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
24793         SPLIT_BLOCK.
24794         (split_pattern_seq): Likewise.
24795         (erase_matching_seqs): Likewise.
24796         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
24797
24798 2008-03-04  Geoff Keating  <geoffk@apple.com>
24799
24800         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
24801         declaration and code.
24802         (tree_invalid_nonnegative_warnv_p): Likewise.
24803
24804 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
24805
24806         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
24807         examples.  Truncate option-names then causing overfull hbox.
24808
24809 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24810
24811         PR target/35222
24812         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
24813         on hpux10.
24814         * configure: Rebuilt.
24815
24816 2008-03-04  Rafael Espíndola  <espindola@google.com>
24817
24818         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
24819         (tree_unary_nonnegative_warnv_p): New.
24820         (tree_binary_nonnegative_warnv_p): New.
24821         (tree_single_nonnegative_warnv_p): New.
24822         (tree_invalid_nonnegative_warnv_p): New.
24823         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
24824
24825 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24826
24827         PR 28322
24828         * opts.c (handle_option): Postpone 'unknown option' errors only for
24829         warning options.
24830
24831 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
24832
24833         PR target/35453
24834         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
24835         (_SIDD_XXX): This.
24836
24837 2008-03-04  Rafael Espíndola  <espindola@google.com>
24838
24839         * fold-const.c (tree_unary_nonzero_warnv_p): New.
24840         (tree_binary_nonzero_warnv_p): New.
24841         (tree_single_nonzero_warnv_p): New.
24842         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
24843
24844 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
24845
24846         PR middle-end/35456
24847         * fold-const.c (fold_cond_expr_with_comparison): Prevent
24848         transformations for modes that have signed zeros.
24849         * ifcvt.c (noce_try_abs): Ditto.
24850
24851 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
24852
24853         * config/i386/i386.c (override_options): Force
24854         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
24855
24856 2008-03-04  Jan Hubicka  <jh@suse.cz>
24857
24858         PR c++/35262
24859         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
24860         in last commit.
24861
24862 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24863
24864         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
24865         label to probe the stack.
24866
24867 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24868
24869         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
24870         (__gthr_win32_mutex_destroy): Declare.
24871         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
24872         __gthr_win32_mutex_destroy.
24873         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
24874
24875 2008-03-03  Jan Hubicka  <jh@suse.cz>
24876
24877         PR c++/35262
24878         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
24879         aggressive on inlining cold calls.
24880
24881 2008-03-03  Richard Guenther  <rguenther@suse.de>
24882
24883         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
24884         struct copies into the expression table.
24885         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
24886         (try_to_simplify): Likewise.
24887         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
24888         integral and pointer arguments which do not change the
24889         precision to NOP_EXPRs.
24890         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
24891         VIEW_CONVERT_EXPR case.
24892
24893 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24894
24895         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
24896         defined in a loop at depth 0 is invariant.
24897         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
24898         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
24899         be called at loop depth 0.
24900
24901 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
24902
24903         PR driver/35420
24904         * gcc.c (process_command): Update copyright notice dates.
24905         * gcov.c (print_version): Likewise.
24906         * gcov-dump.c (print_version): Likewise.
24907         * mips-tfile.c (main): Likewise.
24908         * mips-tdump.c (main): Likewise.
24909
24910 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24911
24912         PR 24924
24913         * c-common.c (flag_permissive): Delete.
24914         (constant_expression_warnings): Check flags first.
24915         (constant_expression_error): New.
24916         * c-common.h (flag_permissive): Delete.
24917         (constant_expression_error): Declare.
24918         * flags.h (flag_permissive): Declare. Update description.
24919         * diagnostic.c (pedwarn): Update.
24920         (permerror): New.
24921         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
24922         (permissive_error_kind): New.
24923         * toplev.c (flag_permissive): Define. Update description.
24924         * toplev.h (permissive_error_kind): Declare.
24925         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
24926         (pedwarn_c90): Use pedantic_warning_kind.
24927         * c-opts.c (c_common_post_options): flag_permissive does not affect
24928         flag_pedantic_errors.
24929
24930 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
24931
24932         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
24933         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
24934         __absvsi2, __absvDI2): Use unsigned arithmetic.
24935
24936 2008-03-02  Andi Kleen  <ak@suse.de>
24937             Richard Guenther  <rguenther@suse.de>
24938
24939         * struct-equiv.c: Remove file.
24940         * cfg_cleanup.c (condjump_equiv_p): Remove.
24941         * Makefile.in (OBJS-common): Remove struct-equiv.o.
24942         (struct-equiv.o): Remove rule.
24943         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
24944         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
24945         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
24946
24947 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24948
24949         * ifcvt.c (noce_process_if_block): Try to handle only the then
24950         block if the else block exists but isn't suitable.
24951
24952 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24953
24954         PR gcc/35063
24955         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
24956         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
24957         regression from previous patch.
24958
24959 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24960
24961         PR gcc/35063
24962         * gthr.h: Add __gthread_mutex_destroy as a function that must be
24963         implemented.
24964         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
24965         * gthr-single.h (__gthread_mutex_destroy): Likewise.
24966         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
24967         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
24968         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
24969         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
24970         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
24971         (__gthread_mutex_destroy_function): Rename to
24972         __gthread_mutex_destroy.
24973         * gthr-dce.h (__gthread_mutex_destroy): Call
24974         pthread_mutex_destroy.
24975         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
24976         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
24977         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
24978
24979 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24980
24981         * df-scan.c (df_ref_chain_change_bb): Simplify.
24982         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
24983         set_block_for_insn if there's any change.
24984         * df.h ((df_insn_change_bb): Fix prototype.
24985         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
24986         df_insn_change_bb, don't call set_block_for_insn.
24987         * emit-rtl.c (reorder_insns): Likewise.
24988         * haifa-sched.c (move_insn): Likewise.
24989
24990 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24991
24992         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
24993
24994 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24995
24996         * tree-flow-inline.h (next_readonly_imm_use): Return
24997         NULL_USE_OPERAND_P after the end.
24998
24999 2008-03-01  Richard Guenther  <rguenther@suse.de>
25000
25001         PR tree-optimization/35411
25002         * tree-sra.c (sra_build_assignment): Split conversion to
25003         final type to a separate statement if we are not assigning
25004         to a register.
25005
25006 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25007
25008         * fold-const.c (fold_convertible_p): Correct the logic to follow
25009         that in fold_convert().
25010
25011 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
25012
25013         PR c++/35315
25014         * tree-inline.c (build_duplicate_type): When we make a
25015         duplicate type, make it unique in the canonical types system.
25016
25017 2008-02-29  Tom Tromey  <tromey@redhat.com>
25018
25019         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
25020         input_file_stack_history, input_file_stack_restored): Remove.
25021         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25022         * input.h (struct file_stack): Remove.
25023         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25024         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
25025         Likewise.
25026         * diagnostic.h (struct diagnostic_context) <last_module>: Change
25027         type.
25028         (diagnostic_last_module_changed): Add 'map' argument.
25029         (diagnostic_set_last_function): Likewise.
25030         * diagnostic.c (undiagnostic_report_current_module): Iterate using
25031         line map, not input_file_stack.
25032         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
25033
25034 2008-02-29  Paul Brook  <paul@codesourcery.com>
25035
25036         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
25037
25038 2008-02-29  Paul Brook  <paul@codesourcery.com>
25039
25040         * config/arm/ieee754-df.S (muldf3): Use RET macros.
25041
25042 2008-02-29  Richard Guenther  <rguenther@suse.de>
25043
25044         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
25045         vn_lookup_or_add.
25046         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
25047         value for comparing for a store match.
25048         (simplify_unary_expression): Do nothing for SSA_NAMEs.
25049         (try_to_simplify): Do not do a full-blown reference lookup.
25050
25051 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25052
25053         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
25054         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
25055
25056         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
25057
25058 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
25059
25060         * tree-loop-linear.c (try_interchange_loops): Compare memory access
25061         strides against cache sizes.
25062
25063 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25064
25065         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
25066         constant to fpul.
25067
25068 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
25069
25070         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
25071         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
25072         is smaller than the original promoted value.
25073         (simplify_subreg): If OP is a SUBREG, try to preserve its
25074         SUBREG_PROMOTED_VAR_P information.
25075
25076 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
25077
25078         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
25079         (VN_INFO_GET): Allocate new objects on the obstack.
25080         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
25081         for rpo_numbers_temp, for consistency.
25082         (free_scc_vn): Free the obstack.
25083
25084 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
25085
25086         * doc/invoke.texi: Document -ftree-loop-distribution.
25087         * tree-loop-distribution.c: New.
25088         * tree-pass.h (pass_loop_distribution): New.
25089         * graphds.h (struct graph): Add htab_t indices.
25090         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
25091         * tree-vectorizer.c (rename_variables_in_loop): Extern.
25092         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
25093         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
25094         * tree-data-ref.c (debug_data_dependence_relations): New.
25095         (dump_data_dependence_relation): Also print data references.
25096         (free_data_ref): Extern.
25097         (same_access_functions): Moved...
25098         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
25099         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25100         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
25101         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
25102         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
25103         (stmts_from_loop): Skip LABEL_EXPR.
25104         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
25105         New.
25106         (build_rdg): Initialize rdg->indices htab.
25107         (free_rdg, stores_from_loop, ref_base_address,
25108         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
25109         have_similar_memory_accesses_1, ref_base_address_1,
25110         remove_similar_memory_refs): New.
25111         * tree-data-ref.h: Depend on tree-chrec.h.
25112         (debug_data_dependence_relations, free_data_ref): Declared.
25113         (same_access_functions): ... here.
25114         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
25115         New.
25116         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
25117         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
25118         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
25119         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25120         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
25121         rdg_vertex_for_stmt): Declared.
25122         (struct rdg_edge): Add level.
25123         (RDGE_LEVEL): New.
25124         (free_rdg, stores_from_loop, remove_similar_memory_refs,
25125         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
25126         Declared.
25127         (rdg_has_similar_memory_accesses): New.
25128         * tree-vect-analyze.c: Remove unused static decls.
25129         * lambda.h (dependence_level): New.
25130         * common.opt (ftree-loop-distribution): New.
25131         * tree-flow.h (mark_virtual_ops_in_bb,
25132         slpeel_tree_duplicate_loop_to_edge_cfg,
25133         rename_variables_in_loop): Declared.
25134         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
25135         (OBJS-common): Add tree-loop-distribution.o.
25136         (tree-loop-distribution.o): New rule.
25137         * tree-cfg.c (mark_virtual_ops_in_bb): New.
25138         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
25139         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
25140
25141 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
25142
25143         PR target/33963
25144         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
25145         other than structures and unions.
25146
25147 2008-02-28  Richard Guenther  <rguenther@suse.de>
25148
25149         Revert:
25150         2008-02-26  Richard Guenther  <rguenther@suse.de>
25151
25152         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25153         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25154         (lookup_decl_from_uid): Declare.
25155         (remove_decl_from_map): Likewise.
25156         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25157         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25158         (decl_for_uid_map): New global hashtable mapping DECL_UID
25159         to the decl tree.
25160         (init_ttree): Allocate it.
25161         (insert_decl_to_uid_decl_map): New helper function.
25162         (make_node_stat): Insert new decls into the map.
25163         (copy_node_stat): Likewise.
25164         (lookup_decl_from_uid): New function.
25165         (remove_decl_from_map): Likewise.
25166         (print_decl_for_uid_map_statistics): New helper.
25167         (dump_tree_statistics): Call it.
25168
25169         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25170         (referenced_var_iterator): Adjust.
25171         (FOR_EACH_REFERENCED_VAR): Adjust.
25172         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25173         (num_referenced_vars): Adjust.
25174         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25175         (first_referenced_var): Remove.
25176         (end_referenced_vars_p): Likewise.
25177         (next_referenced_var): Likewise.
25178         (referenced_var_iterator_set): New helper function.
25179         * tree-dfa.c (referenced_var_lookup): Adjust.
25180         (referenced_var_check_and_insert): Likewise.
25181         (remove_referenced_var): Likewise.
25182         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25183         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25184         (verify_call_clobbering): Likewise.
25185         (verify_memory_partitions): Likewise.
25186         (init_tree_ssa): Allocate bitmap instead of hashtable for
25187         referenced_vars.
25188         (delete_tree_ssa): Adjust.
25189         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25190         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25191         (compute_tag_properties): Likewise.
25192         (set_initial_properties): Likewise.
25193         (find_partition_for): Likewise.
25194         (update_reference_counts): Likewise.
25195         (dump_may_aliases_for): Likewise.
25196         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25197         (add_call_clobber_ops): Likewise.
25198         (add_call_read_ops): Likewise.
25199         (get_asm_expr_operands): Likewise.
25200         * tree-into-ssa.c (dump_decl_set): Likewise.
25201         (update_ssa): Likewise.
25202         * tree-sra.c (scan_function): Likewise.
25203         (decide_instantiations): Likewise.
25204         (scalarize_parms): Likewise.
25205         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25206         (dsa_named_for): Likewise.
25207         * tree-ssa-structalias.c (update_alias_info): Likewise.
25208         (merge_smts_into): Likewise.
25209
25210 2008-02-27  David Daney  <ddaney@avtrex.com>
25211
25212         PR target/34409
25213         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
25214         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
25215         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
25216         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
25217         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
25218
25219 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
25220
25221         PR target/25477
25222         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
25223         (BUILT_IN_NEXTTOWARD): Remove.
25224         (BUILT_IN_NEXTTOWARDF): Ditto.
25225         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
25226         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
25227
25228 2008-02-27  Tom Tromey  <tromey@redhat.com>
25229
25230         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
25231         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
25232
25233 2008-02-27  Jan Beulich  <jbeulich@novell.com>
25234
25235         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
25236         update the respective field on newdecl.
25237
25238 2008-02-27  Revital Eres  <eres@il.ibm.com>
25239
25240         PR rtl-optimization/34999
25241         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
25242         crossing edges that ends with a call insn.
25243         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
25244         call insn and clear the EDGE_CROSSING flag of the crossing edge
25245         when fixing fallthru edges.
25246
25247 2008-02-27  Richard Guenther  <rguenther@suse.de>
25248
25249         PR middle-end/35390
25250         * fold-const.c (fold_unary): Return the correct argument,
25251         converted to the result type.
25252
25253 2008-02-27  Richard Guenther  <rguenther@suse.de>
25254
25255         PR middle-end/34971
25256         * expr.c (expand_expr_real_1): Assert on rotates that operate
25257         on partial modes.
25258         * fold-const.c (fold_binary): Use the types precision, not the
25259         bitsize of the mode if folding rotate expressions.  Build rotates
25260         only for full modes.
25261
25262 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
25263
25264         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
25265         and CPP_PRAGMA_EOL.
25266         * c-pragma.c (pragma_ns_name): New typedef.
25267         (registered_pp_pragmas): New variable.
25268         (c_pp_lookup_pragma): New function.
25269         (c_register_pragma_1): If flag_preprocess_only, do nothing
25270         for non-expanded pragmas, for expanded ones push pragma's
25271         namespace and name into registered_pp_pragmas vector.
25272         (c_invoke_pragma_handler): Register OpenMP pragmas even when
25273         flag_preprocess_only, don't register GCC pch_preprocess
25274         pragma if flag_preprocess_only.
25275         * c-opts.c (c_common_init): Call init_pragma even if
25276         flag_preprocess_only.
25277         * c-pragma.c (c_pp_lookup_pragma): New prototype.
25278         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
25279         cpp_register_pragma if flag_preprocess_only.
25280
25281 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25282
25283         PR c/28800
25284         * c-parser.c (c_parser_translation_unit): Warn for empty
25285         translation unit, not empty source file.
25286
25287 2008-02-26  Paul Brook  <paul@codesourcery.com>
25288
25289         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
25290         operand for Thumb-2.
25291         * config/arm/arm.h (reg_class): Add CORE_REGS.
25292         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
25293         (BASE_REG_CLASS): Use CORE_REGS.
25294         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
25295         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
25296         (REGNO_OK_FOR_INDEX_P): Exclude SP.
25297         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
25298         ARM_REGNO_OK_FOR_INDEX_P.
25299         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
25300         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
25301         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
25302         (ldm/stm peepholes): Ditto.
25303         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
25304         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
25305         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
25306         * config/arm/constraints.md: Enable "k" constraint on ARM.
25307
25308 2008-02-27  Ben Elliston  <bje@au.ibm.com>
25309
25310         * config/rs6000/rs6000.c: Annotate cache line size field in all
25311         instances of struct processor_costs.
25312
25313 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
25314
25315         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
25316         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
25317         jump_bypass): New counters.
25318         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
25319         * dce.c (gate_ud_dce): Same.
25320         (gate_fast_dce): Same.
25321         * dse.c (gate_dse1): New function.
25322         (gate_dse2): New function.
25323         (gate_dse): Merge results of new gate functions.
25324         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
25325         (gate_handle_jump_bypass): Add dbg_cnt.
25326         (gate_handle_gcse): Add dbg_cnt.
25327         * ifcvt.c (gate_handle_if_conversion): Same.
25328         (gate_handle_if_after_combine): Same.
25329         (gate_handle_if_after_reload): Same.
25330         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
25331
25332 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
25333
25334         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
25335         line sizes.
25336         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
25337
25338 2008-02-26  Jason Merrill  <jason@redhat.com>
25339
25340         PR c++/35315
25341         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
25342         alone if it's the naming decl for the type's main variant.
25343
25344 2008-02-26  Tom Tromey  <tromey@redhat.com>
25345
25346         * system.h (USE_MAPPED_LOCATION): Poison.
25347         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
25348         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
25349         (make_goto_expr_edges): Likewise.
25350         (remove_bb): Likewise.
25351         (execute_warn_function_return): Likewise.
25352         * basic-block.h (struct edge_def) <goto_locus>: Change type to
25353         location_t.
25354         * c-common.c (fname_decl): Remove old location code.
25355         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
25356         location code.
25357         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
25358         variant.
25359         (ASM_INPUT_SOURCE_LOCATION): Likewise.
25360         (gen_rtx_ASM_INPUT): Likewise.
25361         (gen_rtx_ASM_INPUT_loc): Likewise.
25362         (get_rtx_asm_OPERANDS): Remove.
25363         * cfglayout.c (insn_locators_alloc): Remove old location code.
25364         (set_curr_insn_source_location): Likewise.
25365         (curr_insn_locator): Likewise.
25366         * print-tree.c (print_node): Remove old location code.
25367         * tree-mudflap.c (mf_varname_tree): Remove old location code.
25368         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
25369         * cfgexpand.c (expand_gimple_cond_expr): Don't use
25370         location_from_locus.
25371         (construct_exit_block): Remove old location code.
25372         * emit-rtl.c (force_next_line_note): Remove old location code.
25373         * profile.c (branch_prob): Remove old location code.
25374         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
25375         LOC_LINE): Remove old-location variants.
25376         * langhooks.c (lhd_print_error_function): Remove old location
25377         code.
25378         * configure, config.in: Rebuilt.
25379         * configure.ac (--enable-mapped-location): Remove.
25380         * c-decl.c (c_init_decl_processing): Remove old location code.
25381         (finish_function): Likewise.
25382         * recog.c (decode_asm_operands): Remove old location code.
25383         * c-pch.c (c_common_read_pch): Remove old location code.
25384         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
25385         variants.
25386         * gimple-low.c (lower_function_body): Remove old location code.
25387         * toplev.c (unknown_location): Remove.
25388         (push_srcloc): Remove old-location variant.
25389         (process_options): Remove old location code.
25390         (lang_dependent_init): Likewise.
25391         * input.h (UNKNOWN_LOCATION): Move definition.
25392         (location_t): Undeprecate.
25393         (source_locus): Remove.
25394         (location_from_locus): Remove.
25395         (struct location_s): Remove.
25396         Remove all old-location code.
25397         (input_line, input_filename): Remove.
25398         * final.c (final_scan_insn): Remove old location code.
25399         * diagnostic.c (diagnostic_build_prefix): Remove
25400         USE_MAPPED_LOCATION test.
25401         * tree.h (gimple_stmt) <locus>: Now a location_t.
25402         (tree_exp) <locus>: Likewise.
25403         (DECL_IS_BUILTIN): Remove old-location variant.
25404         (annotate_with_file_line, annotate_with_locus): Likewise.
25405         (expr_locus, set_expr_locus): Update.
25406         * tree.c (build1_stat): Remove old location code.
25407         (last_annotated_node): Remove.
25408         (annotate_with_file_line): Remove old-location variant.
25409         (annotate_with_locus): Likewise.
25410         (expr_location): Remove old location code.
25411         (set_expr_location): Likewise.
25412         (expr_has_location): Likewise.
25413         (expr_locus): Likewise.
25414         (set_expr_locus): Likewise.
25415         (expr_filename): Don't use location_from_locus.
25416         (expr_lineno): Likewise.
25417         * rtl-error.c (location_for_asm): Remove old location code.
25418         * c-lex.c (cb_line_change): Remove old location code.
25419         (fe_file_change): Likewise.
25420         (cb_def_pragma): Likewise.
25421         (c_lex_with_flags): Likewise.
25422         * gengtype.c (do_typedef): Don't special-case location types.
25423         (define_location_structures): Remove.
25424         (main): Don't call define_location_structures.
25425         * tree-pretty-print.c (dump_implicit_edges): Remove old location
25426         code.
25427
25428 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25429
25430         PR 26264
25431         * builtins.def (BUILT_IN_STDARG_START): Remove.
25432         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
25433         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
25434         * tree-inline.c (inline_forbidden_p_1): Likewise.
25435
25436 2008-02-26  Richard Guenther  <rguenther@suse.de>
25437
25438         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25439         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25440         (lookup_decl_from_uid): Declare.
25441         (remove_decl_from_map): Likewise.
25442         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25443         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25444         (decl_for_uid_map): New global hashtable mapping DECL_UID
25445         to the decl tree.
25446         (init_ttree): Allocate it.
25447         (insert_decl_to_uid_decl_map): New helper function.
25448         (make_node_stat): Insert new decls into the map.
25449         (copy_node_stat): Likewise.
25450         (lookup_decl_from_uid): New function.
25451         (remove_decl_from_map): Likewise.
25452         (print_decl_for_uid_map_statistics): New helper.
25453         (dump_tree_statistics): Call it.
25454
25455         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25456         (referenced_var_iterator): Adjust.
25457         (FOR_EACH_REFERENCED_VAR): Adjust.
25458         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25459         (num_referenced_vars): Adjust.
25460         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25461         (first_referenced_var): Remove.
25462         (end_referenced_vars_p): Likewise.
25463         (next_referenced_var): Likewise.
25464         (referenced_var_iterator_set): New helper function.
25465         * tree-dfa.c (referenced_var_lookup): Adjust.
25466         (referenced_var_check_and_insert): Likewise.
25467         (remove_referenced_var): Likewise.
25468         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25469         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25470         (verify_call_clobbering): Likewise.
25471         (verify_memory_partitions): Likewise.
25472         (init_tree_ssa): Allocate bitmap instead of hashtable for
25473         referenced_vars.
25474         (delete_tree_ssa): Adjust.
25475         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25476         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25477         (compute_tag_properties): Likewise.
25478         (set_initial_properties): Likewise.
25479         (find_partition_for): Likewise.
25480         (update_reference_counts): Likewise.
25481         (dump_may_aliases_for): Likewise.
25482         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25483         (add_call_clobber_ops): Likewise.
25484         (add_call_read_ops): Likewise.
25485         (get_asm_expr_operands): Likewise.
25486         * tree-into-ssa.c (dump_decl_set): Likewise.
25487         (update_ssa): Likewise.
25488         * tree-sra.c (scan_function): Likewise.
25489         (decide_instantiations): Likewise.
25490         (scalarize_parms): Likewise.
25491         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25492         (dsa_named_for): Likewise.
25493         * tree-ssa-structalias.c (update_alias_info): Likewise.
25494         (merge_smts_into): Likewise.
25495
25496 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25497
25498         PR 34351
25499         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
25500         * c-opts.c (c_common_handle_option): Wall enables
25501         Wvolatile-register-var.
25502         * common.opt: Move Wvolatile-register-var to...
25503         * c.opt: ...here.
25504
25505 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25506
25507         * common.opt (Wlarger-than=): New.
25508         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
25509         -Wlarger-than=.
25510         * opts.c (common_handle_option): Handle -Wlarger-than=.
25511         * optc-gen.awk: Likewise.
25512         * opth-gen.awk: Likewise.
25513         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
25514         * tree-optimize.c (tree_rest_of_compilation): Likewise.
25515
25516 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25517
25518         * c-common.c (match_case_to_enum_1): Add appropriate
25519         OPT_W* parameter to warning.
25520         (c_do_switch_warnings): Likewise.
25521         * c-typeck.c (warning_init): Add one more parameter following
25522         'warning' function.
25523         (push_init_level): Update call to warning_init.
25524         (pop_init_level): Likewise.
25525         (add_pending_init): Likewise.
25526         (output_init_element: Likewise.
25527
25528 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25529
25530         PR 28322
25531         * toplev.c (toplev_main): If there are warnings or error, print
25532         errors for ignored options.
25533         * opts.c (ignored_options): New static variable.
25534         (postpone_unknown_option_error): New.
25535         (print_ignored_options): New.
25536         (handle_option): Postpone errors for unknown -Wno-* options.
25537         * opts.h (print_ignored_options): Declare.
25538
25539 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
25540
25541         * config/mips/mips.md (loadgp_blockage, blockage): Change type
25542         to "ghost".
25543
25544 2008-02-25  Richard Guenther  <rguenther@suse.de>
25545
25546         Revert:
25547         2008-02-25  Richard Guenther  <rguenther@suse.de>
25548
25549         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25550         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25551         (lookup_decl_from_uid): Declare.
25552         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25553         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25554         (decl_for_uid_map): New global hashtable mapping DECL_UID
25555         to the decl tree.
25556         (init_ttree): Allocate it.
25557         (insert_decl_to_uid_decl_map): New helper function.
25558         (make_node_stat): Insert new decls into the map.
25559         (copy_node_stat): Likewise.
25560         (lookup_decl_from_uid): New function.
25561         (print_decl_for_uid_map_statistics): New helper.
25562         (dump_tree_statistics): Call it.
25563
25564         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25565         (referenced_var_iterator): Adjust.
25566         (FOR_EACH_REFERENCED_VAR): Adjust.
25567         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25568         (num_referenced_vars): Adjust.
25569         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25570         (first_referenced_var): Remove.
25571         (end_referenced_vars_p): Likewise.
25572         (next_referenced_var): Likewise.
25573         (referenced_var_iterator_set): New helper function.
25574         * tree-dfa.c (referenced_var_lookup): Adjust.
25575         (referenced_var_check_and_insert): Likewise.
25576         (remove_referenced_var): Likewise.
25577         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25578         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25579         (verify_call_clobbering): Likewise.
25580         (verify_memory_partitions): Likewise.
25581         (init_tree_ssa): Allocate bitmap instead of hashtable for
25582         referenced_vars.
25583         (delete_tree_ssa): Adjust.
25584         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25585         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25586         (compute_tag_properties): Likewise.
25587         (set_initial_properties): Likewise.
25588         (find_partition_for): Likewise.
25589         (update_reference_counts): Likewise.
25590         (dump_may_aliases_for): Likewise.
25591         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25592         (add_call_clobber_ops): Likewise.
25593         (add_call_read_ops): Likewise.
25594         (get_asm_expr_operands): Likewise.
25595         * tree-into-ssa.c (dump_decl_set): Likewise.
25596         (update_ssa): Likewise.
25597         * tree-sra.c (scan_function): Likewise.
25598         (decide_instantiations): Likewise.
25599         (scalarize_parms): Likewise.
25600         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25601         (dsa_named_for): Likewise.
25602         * tree-ssa-structalias.c (update_alias_info): Likewise.
25603         (merge_smts_into): Likewise.
25604
25605 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25606
25607         PR fortran/29549
25608         * doc/invoke.texi (-fcx-limited-range): Document new option.
25609         * toplev.c (process_options): Handle -fcx-fortran-rules.
25610         * common.opt: Add documentation for -fcx-fortran-rules.
25611
25612 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25613
25614         PR c/35162
25615         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
25616         actual behaviour and C99.
25617
25618 2008-02-26  Ben Elliston  <bje@au.ibm.com>
25619
25620         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
25621         (ASM_CPU_POWER6_SPEC): Likewise.
25622         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
25623         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
25624         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
25625
25626 2008-02-25  Richard Guenther  <rguenther@suse.de>
25627
25628         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25629         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25630         (lookup_decl_from_uid): Declare.
25631         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25632         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25633         (decl_for_uid_map): New global hashtable mapping DECL_UID
25634         to the decl tree.
25635         (init_ttree): Allocate it.
25636         (insert_decl_to_uid_decl_map): New helper function.
25637         (make_node_stat): Insert new decls into the map.
25638         (copy_node_stat): Likewise.
25639         (lookup_decl_from_uid): New function.
25640         (print_decl_for_uid_map_statistics): New helper.
25641         (dump_tree_statistics): Call it.
25642
25643         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25644         (referenced_var_iterator): Adjust.
25645         (FOR_EACH_REFERENCED_VAR): Adjust.
25646         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25647         (num_referenced_vars): Adjust.
25648         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25649         (first_referenced_var): Remove.
25650         (end_referenced_vars_p): Likewise.
25651         (next_referenced_var): Likewise.
25652         (referenced_var_iterator_set): New helper function.
25653         * tree-dfa.c (referenced_var_lookup): Adjust.
25654         (referenced_var_check_and_insert): Likewise.
25655         (remove_referenced_var): Likewise.
25656         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25657         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25658         (verify_call_clobbering): Likewise.
25659         (verify_memory_partitions): Likewise.
25660         (init_tree_ssa): Allocate bitmap instead of hashtable for
25661         referenced_vars.
25662         (delete_tree_ssa): Adjust.
25663         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25664         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25665         (compute_tag_properties): Likewise.
25666         (set_initial_properties): Likewise.
25667         (find_partition_for): Likewise.
25668         (update_reference_counts): Likewise.
25669         (dump_may_aliases_for): Likewise.
25670         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25671         (add_call_clobber_ops): Likewise.
25672         (add_call_read_ops): Likewise.
25673         (get_asm_expr_operands): Likewise.
25674         * tree-into-ssa.c (dump_decl_set): Likewise.
25675         (update_ssa): Likewise.
25676         * tree-sra.c (scan_function): Likewise.
25677         (decide_instantiations): Likewise.
25678         (scalarize_parms): Likewise.
25679         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25680         (dsa_named_for): Likewise.
25681         * tree-ssa-structalias.c (update_alias_info): Likewise.
25682         (merge_smts_into): Likewise.
25683
25684 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
25685
25686         PR target/35258
25687         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
25688         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
25689         * alias.h (nonoverlapping_memrefs_p): Likewise.
25690
25691 2008-02-25  Jan Beulich  <jbeulich@novell.com>
25692
25693         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
25694         * config/i386/netware-libgcc.exp: Add __bswap?i2,
25695         __emultls_get_address, __emultls_register_common,
25696         __floatundi?f, and _Unwind_GetIPInfo.
25697         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
25698         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
25699         (gen_regparm_prefix): Likewise.
25700         (i386_nlm_encode_section_info): Sync with
25701         config/i386/winnt.c:i386_pe_encode_section_info().
25702         (i386_nlm_maybe_mangle_decl_assembler_name): New.
25703         i386_nlm_mangle_decl_assembler_name): New.
25704         (netware_override_options): New.
25705         * config/i386/netware.h (netware_override_options): Declare.
25706         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
25707         (i386_nlm_mangle_decl_assembler_name): Declare.
25708         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
25709
25710 2008-02-25  Ben Elliston  <bje@au.ibm.com>
25711
25712         PR other/32948
25713         * c-decl.c (grokdeclarator): Remove unused local variables
25714         `typedef_type' and `type_as_written'.
25715         * bb-reorder.c
25716         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
25717         unused local variable `has_hot_blocks'.
25718         (fix_crossing_conditional_branches): Remove unused local variable
25719         `prev_bb'.
25720
25721 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
25722
25723         PR middle-end/19984
25724         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
25725         using DEF_C99_BUILTIN.
25726         (BUILT_IN_NANF): Ditto.
25727         (BUILT_IN_NANL): Ditto.
25728
25729 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
25730             Revital Eres  <eres@il.ibm.com>
25731
25732         * modulo-sched.c (calculate_must_precede_follow): Address TODO
25733         regarding the order of two dependent insns in the same row.
25734
25735 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
25736
25737         * stor-layout.c (layout_decl): Do not bump the alignment of a
25738         bit-field to more than byte alignment if it is packed.
25739
25740 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
25741
25742         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
25743         e300c2 and e300c3.
25744
25745 2008-02-24  Diego Novillo  <dnovillo@google.com>
25746
25747         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
25748
25749         PR 33738
25750         * tree-vrp.c (vrp_evaluate_conditional): With
25751         -Wtype-limits, emit a warning when comparing against a
25752         constant outside the natural range of OP0's type.
25753         * c.opt (Wtype-limits): Move ...
25754         * common.opt (Wtype-limits): ... here.
25755
25756 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
25757
25758         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
25759         * config/rs6000/e300c2c3.md: New file.
25760         * config/rs6000/rs6000.c (processor_costs): Add new costs for
25761         e300c2 and e300c3.
25762         (rs6000_override_options): Add e300c2 and e300c3 cases to
25763         processor_target_table. Do not allow usage of Altivec or Spe
25764         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
25765         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
25766         * config/rs6000/rs6000.h (processor_type): Add
25767         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
25768         (ASM_CPU_SPEC): Add e300c2 and e300c3.
25769         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
25770         and ppce300c3. Include e300c2c3.md.
25771
25772 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
25773
25774         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
25775         instead of TARGET_STRICT_ALIGN.
25776
25777 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
25778
25779         * explow.c (memory_address): Assert that the generated address is
25780         valid.
25781
25782 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25783
25784         PR target/25477
25785         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
25786         * config/darwin-ppc-ldouble-patch.def: New file.
25787         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
25788         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
25789         SUBTARGET_INIT_BUILTINS if defined.
25790         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
25791         New functions.
25792
25793 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25794
25795         PR rtl-opt/33512
25796         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
25797         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
25798
25799 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25800
25801         PR pch/35027
25802         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
25803         file" warning condtional on -Winvalid-PCH.
25804
25805 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
25806
25807         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
25808
25809 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
25810
25811         PR target/22076
25812         PR target/34256
25813         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
25814         prevent reload from using MMX registers.
25815         (*mov<mode>_internal): Ditto.
25816         (*movv2sf_internal_rex64): Ditto.
25817         (*movv2sf_internal): Ditto.
25818
25819 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25820
25821         PR documentation/31569
25822         * doc/install.texi2html: Use makeinfo --no-number-sections.
25823
25824 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25825
25826         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
25827         ensure that we can address an entire entity > 8 bytes.  Don't
25828         generate reg+reg addressing for such data.
25829
25830 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25831
25832         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
25833         strings when optimizing for size, unless the target cares about
25834         alignment.
25835
25836 2008-02-22  Tom Tromey  <tromey@redhat.com>
25837
25838         * regclass.c (current_pass): Remove declaration.
25839
25840 2008-02-22  Anatoly Sokolov <aesok@post.ru>
25841
25842         * config/avr/libgcc.S (__RAMPZ__): Define.
25843         (__do_copy_data): Add for devices with 128KB code memory.
25844
25845 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25846
25847         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25848         Use spe_abi.
25849         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
25850
25851 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
25852
25853         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
25854         GENNONACR_REGS.
25855
25856 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25857
25858         PR c/19999
25859         * c-typeck.c (build_binary_op): Warn about floating point
25860         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
25861
25862 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
25863
25864         PR target/34526
25865         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
25866         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
25867         add vrsave.
25868         (rs6000_override_options): Set altivec_abi as default, not override,
25869         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
25870         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
25871         is used; use new member spe_abi.
25872         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
25873         spe_abi and altivec_abi.
25874
25875 2008-02-22  Tomas Bily  <tbily@suse.cz>
25876
25877         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
25878
25879 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25880
25881         PR bootstrap/35273
25882         * config.build (build_file_translate): Set to `CMD //c' only if
25883         it works.
25884         * Makefile.in (build_file_translate): Improve comment.
25885
25886 2008-02-21  Jan Hubicka  <jh@suse.cz>
25887
25888         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
25889         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
25890         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
25891
25892 2008-02-21  Michael Matz  <matz@suse.de>
25893
25894         PR target/35264
25895         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
25896
25897 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
25898
25899         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
25900         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
25901         as insn constraint.
25902         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
25903         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
25904         SSE_VEC_FLOAT_MODE_P as insn constraint.
25905         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
25906         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
25907         sse4a_movntdf using MODEF mode iterator.
25908         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
25909         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
25910         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
25911         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
25912         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
25913         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
25914         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
25915
25916 2008-02-21  Richard Guenther  <rguenther@suse.de>
25917
25918         * tree.def (PAREN_EXPR): New tree code.
25919         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
25920         and PAREN_EXPR.
25921         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
25922         * expr.c (expand_expr_real_1): Likewise.
25923         * tree-inline.c (estimate_num_insns_1): Likewise.
25924         * tree-complex.c (expand_complex_move): Likewise.
25925         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
25926         as plain x.
25927
25928 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25929
25930         PR target/35225
25931         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
25932
25933 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25934
25935         PR target/35190
25936         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
25937
25938         * config/sh/sh.c (find_barrier): Don't go past
25939         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
25940
25941 2008-02-20  DJ Delorie  <dj@redhat.com>
25942
25943         * config/h8300/h8300.md (insv): Force source operand to be a register.
25944
25945         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
25946         as a jump, not as a plain insn.
25947
25948 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
25949
25950         * doc/invoke.texi (Warning Options): Add new option
25951         -Wframe-larger-than=.
25952         (-Wframe-larger-than): Document.
25953
25954         * flags.h (warn_frame_larger_than, frame_larger_than_size):
25955         Add declarations for new option variables.
25956
25957         * final.c (final_start_function): Check the frame size
25958         before emission and issue a Wframe-larger-than warning.
25959
25960         * opts.c (warn_frame_larger_than, frame_larger_than_size):
25961         Add definitions for new option variables.
25962         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
25963
25964         * common.opt (Wframe-larger-than=): New option.
25965
25966 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25967
25968         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
25969         (<sse>_div<mode>3): Ditto.
25970         (<sse>_vmdiv<mode>3): Ditto.
25971         (<sse>_vmsqrt<mode>2): Ditto.
25972         (*smax<mode>3): Ditto.
25973         (sse5_frcz<mode>2): Ditto.
25974         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
25975         as insn constraint.
25976
25977 2008-02-20  Richard Guenther  <rguenther@suse.de>
25978
25979         PR middle-end/35265
25980         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
25981         be happy with INTEGRAL_TYPE_P.
25982
25983 2008-02-20  Richard Guenther  <rguenther@suse.de>
25984
25985         * fold-const.c (split_tree): Associate floatig-point expressions
25986         if flag_associative_math is set.
25987
25988 2008-02-20  Richard Guenther  <rguenther@suse.de>
25989
25990         * tree.h (fold_real_zero_addition_p): Declare.
25991         * fold-const.c (fold_real_zero_addition_p): Export.
25992         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
25993         floating-point operations with zero and one.
25994
25995 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
25996
25997         * doc/install.texi: Correct references to CFLAGS, replacing them
25998         with BOOT_CFLAGS.  Document flags used during bootstrap for
25999         target libraries.
26000
26001 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
26002
26003         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
26004         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
26005         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
26006         insn constraint.
26007         (smin<mode>3): Ditto from similar patterns.
26008         (smax<mode>3): Ditto.
26009         (*ieee_smin<mode>3): Ditto.
26010         (*ieee_smax<mode>3): Ditto.
26011         * config/i386/sse.md (sse): New mode attribute.
26012         (mov<mode>): Macroize expander from movv4sf and movv2df using
26013         SSEMODEF2P mode iterator.
26014         (<sse>_movnt<mode>): Ditto from similar patterns. Use
26015         SSE_VEC_FLOAT_MODE_P as insn constraint.
26016         (storent<mode>): Ditto.
26017         (storent<mode>): Macroize expander from storentsf and storentdf using
26018         MODEF mode iterator.
26019         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
26020         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
26021         (abs<mode>2): Ditto from similar patterns.
26022         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
26023         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
26024         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
26025         (<sse>_vmsqrt<mode>2): Ditto.
26026         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
26027         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
26028         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
26029         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
26030         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
26031         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
26032         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
26033         insn constraint.
26034         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
26035         iterator and SSE_FLOAT_MODE_P as insn constraint.
26036         (<sse>_ucomi): Ditto from similar patterns.
26037         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
26038         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
26039         SSE_VEC_FLOAT_MODE_P as insn constraint.
26040         (vcond<mode>): Ditto from similar patterns.
26041         (and<mode>3, *and<mode>3): Ditto.
26042         (<sse>_nand<mode>3): Ditto.
26043         (ior<mode>3, *ior<mode>3): Ditto.
26044         (xor<mode>3, *xor<mode>3): Ditto.
26045         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
26046         iterator and SSE_FLOAT_MODE_P as insn constraint.
26047         (*nand<mode>3): Ditto from similar patterns.
26048         (*ior<mode>3): Ditto.
26049         (*xor<mode>3): Ditto.
26050
26051 2008-02-20  Ira Rosen  <irar@il.ibm.com>
26052
26053         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
26054         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
26055         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
26056
26057 2008-02-19  Jan Hubicka  <jh@suse.cz>
26058
26059         * predict.c (tree_bb_level_predictions): Remove variable next
26060         mistakely introduced by previous commit.
26061
26062 2008-02-19  Jan Hubicka  <jh@suse.cz>
26063
26064         * predict.c (predict_paths_leading_to): Rewrite.
26065         (predict_paths_for_bb): New.
26066         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
26067
26068 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26069
26070         PR bootstrap/35218
26071         * Makefile.in (build_file_translate): New.
26072         (gcc-vers.texi): Use it for translating $(abs_srcdir).
26073         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
26074         * configure.ac (build_file_translate): Substitute it.
26075         * configure: Regenerate.
26076
26077 2008-02-19  Jan Hubicka  <jh@suse.cz>
26078
26079         PR rtl-optimization/34408
26080         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
26081         invalid sharing.
26082
26083 2008-02-19  Jan Hubicka  <jh@suse.cz>
26084
26085         PR middle-end/28779
26086         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
26087         call_expr.
26088
26089 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
26090
26091         PR Ada/35186
26092         * config/i386/i386-modes.def: Revert the last DI alignment
26093         change until Ada people can look into it.
26094
26095 2008-02-19  Nick Clifton  <nickc@redhat.com>
26096
26097         * opts.c (print_specific_help): Fix typo in --help text.
26098
26099 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
26100
26101         PR target/35239
26102         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
26103         32-bit inline asm without asm alternatives for host GCC < 3.0.
26104
26105 2008-02-19  Richard Guenther  <rguenther@suse.de>
26106
26107         PR tree-optimization/34989
26108         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
26109         Allow propagation to INDIRECT_REF if we can simplify only.
26110
26111 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26112
26113         * c-common.c (warn_for_collisions_1): Use appropriate option when
26114         warning.
26115
26116 2008-02-19  Nick Clifton  <nickc@redhat.com>
26117
26118         PR other/31349
26119         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
26120         (handle_options): Fix indentation.
26121         (print_filtered_help): If no language-specific options were
26122         displayed tell the user how to list all the options supported by
26123         the language's front-end.
26124         (print_specific_help): Fix indentation and remove duplicate line.
26125         (common_handle_option): Handle the -v option.
26126         For --help enable the display of undocumented options if the -v
26127         switch has been included on the command line.
26128         For --help= check for overlaps in the arguments between the option
26129         classes and the language names and issue a warning when they
26130         cannot be disambiguated.
26131         * c.opt (v): Pass on to the common option handler.
26132
26133 2008-02-19  Revital Eres  <eres@il.ibm.com>
26134
26135         * modulo-sched.c (sms_schedule): Change dump message when
26136         create_ddg function fails.
26137         (try_scheduling_node_in_cycle): Rename row to cycle.
26138         (print_partial_schedule): Rename CYCLE to ROW.
26139
26140 2008-02-19  Christian Bruel  <christian.bruel@st.com>
26141             Zdenek Dvorak  <ook@ucw.cz>
26142
26143         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
26144
26145 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26146
26147         PR target/33555
26148         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
26149         (*x86_movdicc_0_m1_se): Ditto.
26150
26151 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26152
26153         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
26154         (CMPtype): Define as __gcc_CMPtype.
26155         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
26156         (CMPtype): Define as __gcc_CMPtype.
26157
26158 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
26159
26160         Support valgrind 3.3 for --enable-checking=valgrind.
26161         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
26162         here.
26163         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
26164         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
26165         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
26166         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
26167         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
26168         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
26169         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
26170         respectively.
26171         * ggc-zone.c: Similar.
26172         * ggc-page.c: Similar.
26173
26174 2008-02-19  Paul Brook  <paul@codesourcery.com>
26175
26176         PR target/35071
26177         * config/arm/ieee754-df.S: Fix do_it typo.
26178         * config/arm/ieee754-sf.S: Fix do_it typo.
26179
26180 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26181
26182         PR target/35189
26183         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
26184         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
26185         (OPTION_MASK_ISA_SSE_SET): Likewise.
26186         (OPTION_MASK_ISA_SSE2_SET): Likewise.
26187         (OPTION_MASK_ISA_SSE3_SET): Likewise.
26188         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
26189         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
26190         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
26191         (OPTION_MASK_ISA_SSE4_SET): Likewise.
26192         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
26193         (OPTION_MASK_ISA_SSE5_SET): Likewise.
26194         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
26195         (OPTION_MASK_ISA_MMX_UNSET): Updated.
26196         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
26197         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
26198         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
26199         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
26200         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
26201         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
26202         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
26203         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
26204         (OPTION_MASK_ISA_SSE4): Removed.
26205         (ix86_handle_option): Turn on bits in ix86_isa_flags and
26206         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
26207         (override_options): Don't turn on implied SSE/MMX bits in
26208         ix86_isa_flags.
26209
26210 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26211
26212         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
26213         32bit host.
26214
26215 2008-02-18  Joey Ye  <joey.ye@intel.com>
26216
26217         PR middle-end/34921
26218         * tree-nested.c (insert_field_into_struct): Set type alignment
26219         to field alignment if the former is less than the latter.
26220
26221 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
26222
26223         * BASE-VER: Set to 4.4.0.
26224
26225 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26226
26227         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
26228         * doc/cfg.texi: Likewise.
26229         * doc/extend.texi: Likewise.
26230         * doc/gty.texi: Likewise.
26231         * doc/invoke.texi: Likewise.
26232         * doc/loop.texi: Likewise.
26233         * doc/md.texi: Likewise.
26234         * doc/passes.texi: Likewise.
26235         * doc/rtl.texi: Likewise.
26236         * doc/sourcebuild.texi: Likewise.
26237         * doc/tm.texi: Likewise.
26238         * doc/tree-ssa.texi: Likewise.
26239
26240 2008-02-17  Richard Guenther  <rguenther@suse.de>
26241
26242         PR middle-end/35227
26243         * tree-complex.c (init_parameter_lattice_values): Handle parameters
26244         without default definition.
26245
26246 2008-02-17  Richard Guenther  <rguenther@suse.de>
26247
26248         PR tree-optimization/35231
26249         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
26250         if A | B != 1.
26251
26252 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
26253
26254         Revert:
26255         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26256         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26257         libgcc_cmp_return mode.
26258
26259 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26260
26261         PR c/28368
26262         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
26263
26264 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
26265
26266         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
26267         multilibs.
26268
26269 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26270
26271         * doc/c-tree.texi: Use `@.' where appropriate.
26272         * doc/extend.texi: Likewise.
26273         * doc/install.texi: Likewise.
26274         * doc/invoke.texi: Likewise.
26275         * doc/loop.texi: Likewise.
26276         * doc/makefile.texi: Likewise.
26277         * doc/md.texi: Likewise.
26278         * doc/passes.texi: Likewise.
26279         * doc/standards.texi: Likewise.
26280         * doc/tm.texi: Likewise.
26281
26282 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26283
26284         PR middle-end/35196
26285         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
26286         in entry_bb.
26287         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
26288         rather than in entry_bb.
26289
26290 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26291
26292         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26293         libgcc_cmp_return mode.
26294
26295 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26296
26297         PR middle-end/35130
26298         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
26299         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
26300
26301 2008-02-15  Richard Guenther  <rguenther@suse.de>
26302             Zdenek Dvorak  <ook@ucw.cz>
26303
26304         PR tree-optimization/35164
26305         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
26306         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
26307         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26308         Only propagate addresses which do not have abnormal SSA_NAMEs
26309         in their operands.
26310
26311 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
26312
26313         PR target/35088
26314         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
26315
26316 2008-02-15  Jan Hubicka  <jh@suse.cz>
26317
26318         PR middle-end/35149
26319         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
26320
26321 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26322
26323         PR middle-end/34621
26324         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
26325         when calculating alignment_pad.
26326
26327 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26328
26329         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
26330         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
26331         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
26332         and STACK_BOUNDARY define.
26333
26334 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
26335
26336         PR preprocessor/35061
26337         * c-pragma.c (handle_pragma_pop_macro): Check that
26338         pushed_macro_table has been allocated.
26339
26340 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
26341
26342         PR middle-end/35136
26343         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
26344         (force_gimple_operand): Likewise.
26345         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
26346         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
26347         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
26348         (find_interesting_uses_address): Check addressability and alignment
26349         of the base expression only after substituting bases of IVs into it.
26350
26351 2008-02-14  Michael Matz  <matz@suse.de>
26352
26353         PR target/34930
26354         * function.c (instantiate_virtual_regs_in_insn): Reload address
26355         before falling back to reloading the whole operand.
26356
26357 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
26358
26359         * config/s390/s390.c (s390_mainpool_start): Emit the pool
26360         before the first section switch note.
26361
26362 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26363
26364         * doc/bugreport.texi: Update copyright years.
26365         * doc/c-tree.texi: Likewise.
26366         * doc/cfg.texi: Likewise.
26367         * doc/cpp.texi: Likewise.
26368         * doc/cppinternals.texi: Likewise.
26369         * doc/fragments.texi: Likewise.
26370         * doc/frontends.texi: Likewise.
26371         * doc/gcc.texi: Likewise.
26372         * doc/gty.texi: Likewise.
26373         * doc/hostconfig.texi: Likewise.
26374         * doc/implement-c.texi: Likewise.
26375         * doc/libgcc.texi: Likewise.
26376         * doc/loop.texi: Likewise.
26377         * doc/makefile.texi: Likewise.
26378         * doc/options.texi: Likewise.
26379         * doc/passes.texi: Likewise.
26380         * doc/rtl.texi: Likewise.
26381         * doc/sourcebuild.texi: Likewise.
26382         * doc/standards.texi: Likewise.
26383         * doc/tree-ssa.texi: Likewise.
26384         * doc/trouble.texi: Likewise.
26385
26386         * doc/extend.texi: Use @: or add comma where appropriate.
26387         * doc/invoke.texi: Likewise.
26388         * doc/tm.texi: Likewise.
26389
26390 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
26391
26392         PR target/34393
26393         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
26394         to a reg.
26395
26396 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
26397
26398         * doc/md.texi (clz, ctz): Add reference.
26399         * doc/rtl.texi (clz, ctz): Likewise.
26400
26401 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26402
26403         PR other/35148
26404         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
26405         srcdir.
26406
26407 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
26408
26409         * config/s390/s390.c (struct constant_pool): New field
26410         emit_pool_after added.
26411         (s390_mainpool_start): Set the emit_pool_after flag according
26412         to the section switch notes.
26413         (s390_mainpool_finish): Consider emit_pool_after when emitting
26414         the literal pool at the end of the function.
26415         (s390_chunkify_start): Force literal pool splits at section
26416         switch notes.
26417
26418 2008-02-13  Michael Matz  <matz@suse.de>
26419
26420         PR debug/35065
26421         * var-tracking.c (clobber_variable_part): Correctly traverse the
26422         list.
26423
26424 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26425
26426         PR 29673
26427         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
26428         Add -fdump-ipa-inline.
26429         * tree-dump.c (dump_files): Remove tree-inlined dump.
26430         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
26431
26432 2008-02-12  Richard Guenther  <rguenther@suse.de>
26433
26434         PR tree-optimization/35171
26435         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
26436         default defs.
26437
26438 2008-02-12  Richard Guenther  <rguenther@suse.de>
26439
26440         PR middle-end/35163
26441         * fold-const.c (fold_widened_comparison): Use get_unwidened in
26442         value-preserving mode.  Disallow final truncation.
26443
26444 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26445
26446         PR middle-end/35136
26447         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
26448         code from here to...
26449         (force_gimple_operand): ...here.
26450
26451 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
26452
26453         PR c++/35144
26454         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
26455         non-compatible pointers.
26456         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
26457         different FIELD_DECLs, try harder by comparing field offsets, sizes
26458         and types.
26459
26460         PR inline-asm/35160
26461         * function.c (match_asm_constraints_1): Don't replace the same input
26462         multiple times.
26463
26464 2008-02-12  Anatoly Sokolov <aesok@post.ru>
26465
26466         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
26467         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
26468         (expand_epilogue): Restore RAMPZ register.
26469         * config/avr/avr.md (RAMPZ_ADDR): New constant.
26470
26471 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
26472
26473         * config/i386/cygwin.asm: (__alloca): Correct calling
26474         convention and alignment.
26475         (__chkstk): Force 8 byte stack alignment.
26476
26477 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
26478             Richard Guenther  <rguenther@suse.de>
26479
26480         PR tree-optimization/33992
26481         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
26482         the zero we compare against.
26483
26484 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
26485
26486         PR libfortran/35063
26487         * gthr-win32.h (__gthread_mutex_destroy_function): New function
26488         to CloseHandle after unlocking to prevent accumulation of handle
26489         count.
26490
26491 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26492
26493         PR middle_end/34150
26494         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
26495         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
26496         and update LABEL_NUSES during and after reload.
26497
26498 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
26499
26500         PR middle-end/34627
26501         * combine.c (simplify_if_then_else): Make sure the comparison is
26502         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
26503
26504 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
26505
26506         PR bootstrap/35051
26507         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
26508         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
26509         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
26510         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
26511         * tree.h (get_type_static_bounds): Likewise.
26512
26513 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26514
26515         * doc/invoke.texi (Option Summary, C++ Dialect Options)
26516         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26517         Make -Wfoo language annotations match what the compiler outputs.
26518
26519 2008-02-08  Sa Liu  <saliu@de.ibm.com>
26520
26521         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
26522         intrinsics spu_convts, spu_convtu, spu_convtf.
26523
26524 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
26525
26526         * doc/extend.texi (Function Attributes) <noinline>: Mention
26527         asm ("") as method to keep calls.
26528
26529 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26530
26531         PR other/32754
26532         * doc/options.texi (Options): Replace references to opts.sh with
26533         optc-gen.awk.
26534         * opts-common.c: Likewise.
26535         * optc-gen.awk: Likewise.
26536
26537 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
26538
26539         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
26540
26541 2008-02-07  Richard Henderson  <rth@redhat.com>
26542
26543         PR rtl-opt/33410
26544         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
26545         EXPR_LIST for the REG_EQUAL instead of a comparison with a
26546         funny mode.
26547
26548 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
26549
26550         PR tree-optimization/35085
26551         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
26552         for operand entry oe2 in addition to operand entry oe3 in order to
26553         expose more opportunities for vectorizer sum reduction.
26554
26555 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26556
26557         PR other/35107
26558         * Makefile.in (LIBS): Remove $(GMPLIBS).
26559         (cc1-dummy, cc1): Add $(GMPLIBS).
26560
26561 2008-02-06  Jan Hubicka  <jh@suse.cz>
26562
26563         PR target/23322
26564         * i386.md (moddf_integer): Do not produce partial memory stalls for
26565         targets where it hurts.
26566
26567 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
26568
26569         PR target/35083
26570         * optabs.c (expand_float): Do not check for decimal modes when
26571         expanding unsigned integer through signed conversion.
26572
26573 2008-02-06  Nick Clifton  <nickc@redhat.com>
26574
26575         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
26576         inside the clobber with a match_operand and duplicated operand
26577         number in the constraint.
26578         (ineqbranchsi): Delete redundant comment.
26579
26580 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
26581
26582         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
26583         builtin_define ("__USE_INIT_FINI__").
26584         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
26585         -msx multilibs.
26586         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
26587
26588 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26589
26590         PR documentation/30330
26591         * doc/invoke.texi (C++ Dialect Options)
26592         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26593         For each warning option -Wfoo that allows -Wno-foo, ensure both
26594         -Wfoo and -Wno-foo are listed in the option index.  Fix index
26595         entry of -Wswitch-default, index -Wnormalized= including the
26596         `=', and -Wlarger-than-@var{len} including @var{len}.
26597
26598 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26599
26600         * config/i386/i386.md (floatunssisf2): Use
26601         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
26602         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
26603         Macroize expander using MODEF mode iterator.
26604
26605 2008-02-05  Diego Novillo  <dnovillo@google.com>
26606
26607         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
26608
26609         PR 33738
26610         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
26611
26612 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26613
26614         PR other/35070
26615         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
26616
26617 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
26618
26619         PR target/35084
26620         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
26621         to indicate if a message should be generated.
26622         (init_cumulative_args): Updated.
26623         (function_value_32): Likewise.
26624
26625 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
26626
26627         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
26628
26629 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26630
26631         PR target/35083
26632         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
26633         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
26634
26635 2008-02-04  Diego Novillo  <dnovillo@google.com>
26636
26637         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
26638
26639         PR 33738
26640         * tree-vrp.c (vrp_evaluate_conditional): With
26641         -Wtype-limits, emit a warning when comparing against a
26642         constant outside the natural range of OP0's type.
26643
26644 2008-02-04  Richard Guenther  <rguenther@suse.de>
26645
26646         PR middle-end/33631
26647         * expr.c (count_type_elements): Give for unions instead of
26648         guessing.
26649
26650 2008-02-04  Richard Guenther  <rguenther@suse.de>
26651
26652         PR middle-end/35043
26653         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
26654         to TYPE_DOMAINs base type instead of using bitsizetype here.
26655
26656 2008-02-03  Jason Merrill  <jason@redhat.com>
26657
26658         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
26659
26660 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26661
26662         PR other/29972
26663         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
26664         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
26665         (RS/6000 and PowerPC Options): Fix typos and markup.
26666         * doc/passes.texi (Tree-SSA passes): Likewise.
26667
26668 2008-02-02  Michael Matz  <matz@suse.de>
26669
26670         PR target/35045
26671         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
26672         from record_last_reg_set_info.
26673         (record_last_reg_set_info): Take an RTX argument, iterate over all
26674         constituent hardregs.
26675         (record_last_set_info, record_opr_changes): Change calls to
26676         new signature or to record_last_reg_set_info_regno.
26677
26678 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
26679
26680         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
26681
26682 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
26683
26684         PR rtl-optimization/34773
26685         * reg-notes.def (EQUAL): Mention significance of combination of
26686         REG_EQUAL and REG_RETVAL.
26687         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
26688         insn that has a REG_RETVAL.
26689
26690 2008-02-01  Roger Sayle  <roger@eyesopen.com>
26691
26692         PR bootstrap/33781
26693         * configure.ac (--enable-fixed-point): Disable unless explicitly
26694         requested on IRIX.
26695         * configure: Regenerate.
26696
26697 2008-02-01  Richard Guenther  <rguenther@suse.de>
26698
26699         PR other/35042
26700         * invoke.texi (-finline-limit): Remove no longer true parts
26701         of the documentation.  Note that there is no default value.
26702
26703 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
26704             Mark Mitchell  <mark@codesourcery.com>
26705             Ben Elliston  <bje@au.ibm.com>
26706
26707         PR c/29326
26708         * doc/extend.texi (Other Builtins): Document.
26709
26710 2008-01-31  Tom Browder <tom.browder@gmail.com>
26711
26712         * doc/c-tree.texi (Types): Fix grammar.
26713         (Expression trees): Ditto.
26714         * doc/passes.texi (Tree-SSA passes): Ditto.
26715
26716         * doc/configterms.texi (Configure Terms): Fix typo.
26717         * doc/cpp.texi (Common Predefined Macros): Ditto.
26718         * doc/md.texi (Machine Constraints): Ditto.
26719
26720         * doc/makefile.texi (Makefile): Add comma.
26721
26722 2008-01-31  Tom Browder  <tom.browder@gmail.com>
26723             Gerald Pfeifer  <gerald@pfeifer.com>
26724
26725         * doc/sourcebuild.texi (Front End): Remove references to CVS
26726         and CVSROOT/modules.
26727         (Texinfo Manuals): Replace reference to CVS by one to SVN.
26728         (Back End): Remove reference to CVS.
26729
26730 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26731
26732         PR target/34900
26733         * config/mips/mips.c (gen_load_const_gp): New function, taking a
26734         comment from...
26735         (mips16_gp_pseudo_reg): ...here.
26736         * config/mips/mips.md (load_const_gp): Replace with...
26737         (load_const_gp_<mode>): ...this :P-based insn.
26738
26739 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26740
26741         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
26742         options. Minor fixes.
26743         (-std): Move reference to standards closer to where language
26744         standards are first mentioned.
26745
26746 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26747
26748         PR rtl-optimization/34995
26749         * reload.c (alternative_allows_const_pool_ref): Take an rtx
26750         parameter and return a bool.  If the rtx parameter is nonnull,
26751         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
26752         (find_reloads): Update call accordingly.  Pass the new operand
26753         if it needed no address reloads, otherwise pass null.
26754
26755 2008-01-30  Richard Henderson  <rth@redhat.com>
26756
26757         PR c/34993
26758         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
26759         for unbounded arrays.
26760
26761 2008-01-30  Silvius Rus  <rus@google.com>
26762
26763         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
26764
26765 2008-01-30  Jan Hubicka  <jh@suse.cz>
26766
26767         PR target/34982
26768         * i386.c (init_cumulative_args): Use real function declaration when
26769         calling locally.
26770
26771 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
26772
26773         PR rtl-optimization/34998
26774         * global.c (build_insn_chain): Treat non-subreg_lowpart
26775         SUBREGs of pseudos as clobbering all the words covered by the
26776         SUBREG, not just all the bytes.
26777         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
26778         original df_ref rather than an extract parameter.
26779         (global_conflicts): Update call accordingly.
26780
26781 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
26782
26783         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
26784         the overflow check to make it easier to read.
26785         (__fixtfdi): Change the type of the ll member in union
26786         long_double to UDItype_x.
26787
26788 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
26789
26790         PR middle-end/34969
26791         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
26792         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
26793         * tree-inline.c (fold_marked_statements): Call
26794         cgraph_update_edges_for_call_stmt if folding a call statement.
26795         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
26796         debug_generic_stmt calls, reset it back afterwards.
26797
26798         PR c/35017
26799         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
26800         static decls.
26801         * c-typeck.c (build_external_ref): Don't pedwarn about
26802         static vars in current function's scope.
26803
26804 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
26805
26806         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
26807
26808 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
26809
26810         PR c/35002
26811         * ipa-struct-reorg.c: Fix spelling.
26812         * params.def: Ditto.
26813
26814 2008-01-29  Richard Guenther  <rguenther@suse.de>
26815
26816         PR middle-end/35006
26817         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
26818         field.
26819         * tree-inline.c (remap_type): Increment remapping_type_depth
26820         around remapping types.
26821         (copy_body_r): Only add referenced variables if they are referenced
26822         from code, not types.
26823
26824 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
26825
26826         PR c++/34055
26827         PR c++/34103
26828         PR c++/34219
26829         PR c++/34606
26830         PR c++/34753
26831         PR c++/34754
26832         PR c++/34755
26833         PR c++/34919
26834         PR c++/34961
26835         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
26836         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
26837
26838 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
26839
26840         PR target/34412
26841         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
26842         pointer for tiny stack.
26843
26844 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26845
26846         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
26847
26848 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26849
26850         * config/vx-common.h: Fix typo in comment.
26851
26852 2008-01-28  Ian Lance Taylor  <iant@google.com>
26853
26854         PR c++/34862
26855         PR c++/33407
26856         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
26857         coalesce pointers if they have different DECL_NO_TBAA_P values.
26858         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
26859         between variables with different DECL_NO_TBAA_P values.
26860
26861 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
26862
26863         PR 31535
26864         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
26865         are not legitimate small data references on SPE targets.
26866
26867 2008-01-28  David Daney  <ddaney@avtrex.com>
26868
26869         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
26870
26871 2008-01-28  David Daney  <ddaney@avtrex.com>
26872
26873         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
26874
26875 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
26876
26877         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
26878         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
26879         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
26880         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
26881         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
26882         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
26883         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
26884         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
26885
26886 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26887
26888         * basic-block.h (condjump_equiv_p): Fix comment.
26889
26890 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26891
26892         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
26893         print_generic_stmt_indented): Fix comment.
26894
26895 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26896
26897         * configure.ac (__stack_chk_fail): Add detecion for availability
26898         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
26899         * configure: Regenerate.
26900
26901 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
26902
26903         PR middle-end/34688
26904         * final.c (output_addr_const): Handle TRUNCATE.
26905
26906 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
26907
26908         PR target/34711
26909         * tree-ssa-loop-ivopts.c (comp_cost): New type.
26910         (zero_cost, infinite_cost): New constants.
26911         (struct cost_pair): Change type of cost to comp_cost.
26912         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
26913         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
26914         New functions.
26915         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
26916         split_address_cost, ptr_difference_cost, difference_cost,
26917         get_computation_cost_at, get_computation_cost,
26918         determine_use_iv_cost_generic, determine_use_iv_cost_address,
26919         determine_use_iv_cost_condition, determine_use_iv_costs,
26920         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
26921         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
26922         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
26923         Change type of cost to comp_cost.
26924         (determine_iv_cost): Increase cost of non-original ivs, instead
26925         of decreasing the cost of original ones.
26926         (get_address_cost): Indicate the complexity of the addressing mode
26927         in comp_cost.
26928         (try_add_cand_for): Prefer using ivs not specific to some object.
26929         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
26930
26931 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
26932             Janis Johnson  <janis187@us.ibm.com>
26933
26934         PR target/34814
26935         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
26936         (TARGET_INSTANTIATE_DECLS): Likewise.
26937         * target.h (expand_to_rtl_hook): New target hook.
26938         (instantiate_decls): Likewise.
26939         * function.c (instantiate_decl): Make non-static.  Rename to...
26940         (instantiate_decl_rtl): ... this.
26941         (instantiate_expr): Use instantiate_decl_rtl.
26942         (instantiate_decls_1): Likewise.
26943         (instantiate_decls): Likewise.
26944         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
26945         * function.h (instantiate_decl_rtl): Add prototype.
26946         * cfgexpand.c (target.h): New include.
26947         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
26948         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
26949         (TARGET_INSTANTIATE_DECLS): Likewise.
26950         (TARGET_INITIALIZER): New target hooks added.
26951         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
26952         New prototype.
26953         * config/rs6000/rs6000.c (tree-flow.h): New include.
26954         (machine_function): Add sdmode_stack_slot field.
26955         (rs6000_alloc_sdmode_stack_slot): New function.
26956         (rs6000_instantiate_decls): Likewise.
26957         (rs6000_secondary_memory_needed_rtx): Likewise.
26958         (rs6000_check_sdmode): Likewise.
26959         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
26960         (TARGET_INSTANTIATE_DECLS): Likewise.
26961         (rs6000_hard_regno_mode_ok): Allow SDmode.
26962         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
26963         (rs6000_emit_move): Handle SDmode.
26964         (function_arg_advance): Likewise.
26965         (function_arg): Likewise.
26966         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
26967         SDmode var args for 32-bit compiles.
26968         (rs6000_secondary_reload_class): Handle SDmode.
26969         (rs6000_output_function_epilogue): Likewise.
26970         (rs6000_function_value): Simplify if statement.
26971         (rs6000_libcall_value): Likewise.
26972         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
26973         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
26974         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
26975         (movsd_hardfloat): New define_insn.
26976         (movsd_softfloat): Likewise.
26977         (movsd_store): Likewise.
26978         (movsd_load): Likewise.
26979         (extendsddd2): Likewise.
26980         (extendsdtd2): Likewise.
26981         (truncddsd2): Likewise.
26982         (movdd_hardfloat64): Fixup comment.
26983         (UNSPEC_MOVSD_LOAD): New constant.
26984         (UNSPEC_MOVSD_STORE): Likewise.
26985
26986 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
26987
26988         PR c++/34965
26989         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
26990         TRUTH_XOR_EXPR.
26991         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
26992         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
26993         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
26994         and TRUTH_XOR_EXPR.
26995
26996 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
26997
26998         PR target/34794
26999         * config.gcc: Separate AIX 5.3 from AIX 6.1.
27000         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27001         __LONGDOUBLE128 too.
27002         * config/rs6000/aix61.h: New file.
27003
27004 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27005
27006         PR rtl-optimization/34959
27007         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
27008         popcount and parity rtxes the same mode as their operand.
27009         Truncate or extend the result to the return value's mode
27010         if necessary.
27011
27012 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27013
27014         PR target/34981
27015         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
27016         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
27017         to GOT_VERSION_REGNUM.
27018         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
27019         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
27020         * config/mips/mips.c (mips_emit_call_insn): New function.
27021         (mips_call_tls_get_addr): Call mips_expand_call directly.
27022         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
27023         emit_call_insn.
27024         (mips16_build_call_stub): Likewise.  Return the call insn or null.
27025         (mips_expand_call): Update the call to mips16_build_call_stub
27026         accordingly and a remove redundant condition.  Assert that MIPS16
27027         stubs do not use lazy binding.  Use mips_emit_call_insn and return
27028         the call insn.
27029         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
27030         TARGET_USE_GOT.
27031         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
27032         (mips_avoid_hazard): Remove hazard_set handling.
27033         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
27034         (UNSPEC_RESTORE_GP): ...this.
27035         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
27036         (FAKE_CALL_REGNO): Rename to...
27037         (GOT_VERSION_REGNUM): ...this.
27038         (type): Add "ghost" value.  Add an associated insn reservation.
27039         (hazard_set): Remove.
27040         (exception_receiver): Rename to...
27041         (restore_gp): ...this and update the unspec identifier accordingly.
27042         (exception_receiver, nonlocal_got_receiver): New expanders.
27043         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
27044         FAKE_CALL_REGNO.  Remove hazard_set attribute.
27045         (set_got_version, update_got_version): New patterns.
27046
27047 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
27048
27049         PR target/34970
27050         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
27051
27052 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27053
27054         PR other/31955
27055         * doc/install.texi2html: Generate gcc-vers.texi.
27056
27057 2008-01-25  DJ Delorie  <dj@redhat.com>
27058
27059         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
27060
27061 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27062
27063         * config/c4x: Remove directory.
27064         * config.gcc (crx-*, mt-*): Mark obsolete.
27065         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
27066         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
27067         sh-*-rtemscoff*): Remove cases.
27068         * defaults.h (C4X_FLOAT_FORMAT): Remove.
27069         * real.c (encode_c4x_single, decode_c4x_single,
27070         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
27071         c4x_extended_format): Remove.
27072         * real.h (c4x_single_format, c4x_extended_format): Remove.
27073         * doc/extend.texi (interrupt, naked): Remove mention of attributes
27074         on C4x.
27075         (Pragmas): Remove comment about c4x pragmas.
27076         * doc/install.texi (c4x): Remove target-specific instructions.
27077         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
27078         * doc/md.texi (Machine Constraints): Remove C4x documentation.
27079         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
27080         refer to C4x source files as examples.
27081         (C4X_FLOAT_FORMAT): Remove documentation.
27082
27083 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
27084
27085         * config/bfin/bfin.c (override_options): Reorder tests so that
27086         flag_pic gets enabled for -msep-data.
27087
27088 2008-01-25  Richard Guenther  <rguenther@suse.de>
27089
27090         PR middle-end/32244
27091         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
27092         to its bitfield precision if required.
27093
27094 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27095
27096         PR middle-end/33880
27097         * tree-nested.c (walk_omp_for): New function.
27098         (convert_nonlocal_reference, convert_local_reference): Call
27099         walk_omp_for on OMP_FOR.
27100         (convert_call_expr): Call walk_body on OMP_FOR's
27101         OMP_FOR_PRE_INIT_BODY.
27102
27103 2008-01-25  Richard Guenther  <rguenther@suse.de>
27104
27105         PR tree-optimization/34966
27106         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
27107         default defs and PHI_NODEs we have to insert after the
27108         defining statement.
27109
27110 2008-01-24  Nick Clifton  <nickc@redhat.com>
27111
27112         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
27113         Provide a default definition.
27114         (LIBGCC2_UNITS_PER_WORD): Likewise.
27115
27116         * config/stormy16/stormy16.c: Include df.h for the prototype
27117         for df_regs_ever_live_p.
27118         (xstormy16_expand_builtin_va_start): Convert the stack offset
27119         into a component_ref and then use POINTER_PLUS_EXPR to add it
27120         to the incoming_virtual_args_rtx.
27121         (xstormy16_gimplify_va_arg_expr): Rename to
27122         xstormy16_gimplify_va_arg_expr.
27123         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
27124         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
27125         xstormy16_gimplify_va_arg_expr.
27126         Fix up some formatting issues.
27127
27128         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
27129         Move to predicates.md.
27130         (xs_hi_general_operand): Likewise.
27131         (xs_hi_nonmemory_operand): Likewise.
27132         * config/stormy16/predicates.md:
27133         (xstormy16_carry_plus_operand): New predicate.
27134         (xs_hi_general_operand): New predicate.
27135         (xs_hi_nonmemory_operand): New predicate.
27136         * config/stormy16/stormy16-protos.h:
27137         (xstormy16_carry_plus_operand): Delete prototype.
27138         (xs_hi_general_operand): Likewise.
27139         (xs_hi_nonmemory_operand): Likewise.
27140
27141         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
27142         modifiers as they are no longer needed and they can trigger
27143         reload spill failures.
27144
27145         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
27146         with a match_operand in order to help reload.
27147
27148         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
27149         constraint with 'e' for the 8th alternative as this version of
27150         the mov.w instruction only accepts the lower 8 registers.
27151
27152 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
27153
27154         PR target/34856
27155         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
27156         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
27157         vector elements.
27158
27159 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27160
27161         PR middle-end/33333
27162         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
27163
27164 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27165
27166         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
27167         New functions.
27168         (remove_structure): Update allocations list before removing structure.
27169
27170 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27171
27172         * ipa-struct-reorg.c (is_safe_cond_expr,
27173         create_new_stmts_for_cond_expr): Use integer_zerop function,
27174         that recognize not only zero-pointer, but zero-integer too.
27175
27176 2008-01-25  Ben Elliston  <bje@au.ibm.com>
27177
27178         PR other/22232
27179         * fixproto: Escape "." in sed expression that strips leading "./".
27180
27181 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
27182
27183         PR driver/34904
27184         * gcc.c (SWITCH_OK): Removed.
27185         (SWITCH_LIVE): Changed to bit.
27186         (SWITCH_FALSE): Likewise.
27187         (SWITCH_IGNORE): Likewise.
27188         (switchstr): Change live_cond to unsigned int.
27189         (process_command): Replace SWITCH_OK with 0.
27190         (do_self_spec): Likewise.
27191         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
27192         (give_switch): Likewise.
27193         (used_arg): Likewise.
27194         (do_spec_1): Set the SWITCH_IGNORE bit.
27195         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
27196         bits.  Set the SWITCH_LIVE bit.
27197
27198 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27199
27200         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
27201
27202 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
27203
27204         PR tree-optimization/34472
27205         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
27206         parameter to a "bool *" and set *DATA to false if there is
27207         an unsafe access.  Do not delete the structure here.
27208         (check_cond_exprs): Delete it here instead.
27209         (check_cond_exprs, exclude_cold_structs): Do not increase
27210         I when removing a structure.
27211
27212 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
27213
27214         PR target/34856
27215         * config/i386/i386.c (ix86_expand_vector_init): Consider only
27216         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
27217
27218 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
27219
27220         PR middle-end/34934
27221         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
27222         a fixed vector for stack.
27223
27224 2008-01-24  Ben Elliston  <bje@au.ibm.com>
27225
27226         PR c++/25701
27227         * doc/gcc.texi (Software development): Add a direntry for g++.
27228
27229 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
27230
27231         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
27232         stale and straggling -fforce-addr comments above.
27233
27234         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
27235         define.
27236         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
27237         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
27238
27239 2008-01-23  Michael Matz  <matz@suse.de>
27240
27241         PR debug/34895
27242         * dwarf2out.c (force_type_die): Use modified_type_die instead of
27243         gen_type_die.
27244
27245 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
27246
27247         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
27248         malloc result type.
27249
27250 2008-01-23 Anatoly Sokolov <aesok@post.ru>
27251
27252         * config/avr/avr.c (avr_current_arch): New variable.
27253         (avr_arch_types): Add 'avr31' and 'avr51' entries.
27254         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
27255         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
27256         (avr_override_options): Init 'avr_current_arch'.
27257         (base_arch_s): Move from here...
27258         * config/avr/avr.h (base_arch_s): ... here. Add new members
27259         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
27260         'mega' to 'have_jmp_call'.
27261         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
27262         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
27263         macros.
27264         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
27265         architectures.
27266         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
27267         MULTILIB_MATCHES): Ditto.
27268
27269 2008-01-23  Richard Guenther  <rguenther@suse.de>
27270
27271         PR middle-end/31529
27272         * cgraphunit.c (cgraph_reset_node): Always mark the node
27273         not reachable if it is not queued already.
27274
27275 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
27276
27277         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
27278         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
27279         (cputype_selected): New static variable.
27280         (bfin_handle_option): Set it if -mcpu is used.
27281         (override_option): Select default set of workarounds if no cpu type
27282         selected on the command line.
27283         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
27284
27285         From  Michael Frysinger  <michael.frysinger@analog.com>
27286         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
27287         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
27288
27289         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
27290         for bf547, bf523, bf524, and bf526.
27291         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
27292         bf526.
27293         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
27294         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
27295         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
27296         __ADSPBF547__ and __ADSPBF54x__ for bf547.
27297         * doc/invoke.texi (Blackfin Options): Document that
27298         -mcpu now accept bf547, bf523, bf524, and bf526.
27299
27300 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
27301
27302         PR rtl-optimization/34628
27303         * combine.c (try_combine): Stop and undo after the first combination
27304         if an autoincrement side-effect on the first insn has effectively
27305         been lost.
27306
27307 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
27308
27309         PR target/34529
27310         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
27311         Offset addresses are not valid for Altivec or paired float modes.
27312
27313 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
27314
27315         PR c++/34607
27316         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
27317         if DECL_INITIAL (decl) is error_mark_node.
27318
27319         PR c++/34914
27320         * c-common.c (handle_vector_size_attribute): Only allow
27321         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
27322         the same way as pointer, array etc. types.
27323         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
27324
27325         PR c++/34917
27326         * tree.c (build_type_attribute_qual_variant): Call
27327         build_qualified_type if attributes are equal, but quals are not.
27328
27329 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27330
27331         PR 32102
27332         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
27333         * flags.h (warn_strict_aliasing): Remove.
27334         (warn_strict_overflow): Remove.
27335         * opts.c (warn_strict_aliasing): Remove.
27336         (warn_strict_overflow): Remove.
27337         * c-opts.c (c_common_handle_option): -Wall only sets
27338         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
27339         (c_common_post_options): Give default values to -Wstrict-aliasing
27340         and -Wstrict-overflow if they are uninitialized.
27341         * common.opt (Wstrict-aliasing): Specify Var and Init.
27342         (Wstrict-overflow): Likewise.
27343
27344 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
27345
27346         PR rtl-optimization/26854
27347         PR rtl-optimization/34400
27348         PR rtl-optimization/34884
27349         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
27350         DF_RD->gen.
27351         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
27352         (df_rd_bb_info.expanded_lr_out): Deleted
27353         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
27354         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
27355         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27356         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27357         Removed code to allocate, initialize or free expanded_lr_out.
27358         (df_rd_bb_local_compute_process_def): Restructured to make more
27359         understandable.
27360         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
27361         sets if the sets are being trimmed.
27362
27363 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27364
27365         PR bootstrap/32287
27366         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
27367         (as_vers): Likewise.
27368         * configure: Regenerated.
27369
27370 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27371
27372         PR middle-end/33092
27373         * tree-pass.h (pass_build_alias): New pass.
27374         * tree-ssa-alias.c (gate_build_alias): New.
27375         (pass_build_alias): New.
27376         * passes.c (init_optimization_passes): Add pass_build_alias after
27377         pass_create_structure_vars.
27378
27379 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
27380
27381         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
27382         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
27383         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
27384         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
27385         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
27386         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
27387         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
27388         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
27389         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
27390         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
27391         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
27392         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
27393         * config/s390/s390.md (FP_ALL): New mode iterator.
27394         (_d): New mode attribute.
27395         ("*signbit<mode>2>"): Changed mode of first operand.
27396         ("isinf<mode>2"): Changed mode of first operand.
27397         ("*TDC_insn"): Adaptation for DFP modes.
27398
27399 2008-01-22  Ben Elliston  <bje@au.ibm.com>
27400
27401         * tree.c (check_qualified_type): Improve function description.
27402
27403 2008-01-21  Jason Merrill  <jason@redhat.com>
27404
27405         PR c++/34196
27406         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
27407         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
27408         if it is set.
27409
27410 2008-01-21  DJ Delorie  <dj@redhat.com>
27411
27412         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
27413         return zero.
27414
27415 2008-01-21  Richard Guenther  <rguenther@suse.de>
27416
27417         PR middle-end/34856
27418         * tree-cfg.c (verify_expr): Allow all invariant expressions
27419         instead of just constant class ones as reference argument.
27420         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
27421         like any other constant.
27422         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
27423
27424 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
27425
27426         * regmove.c (fixup_match_1): Update call crossed frequencies.
27427
27428 2008-01-21  Richard Guenther  <rguenther@suse.de>
27429
27430         PR c/34885
27431         * tree-inline.c (setup_one_parameter): Deal with mismatched
27432         types using a VIEW_CONVERT_EXPR.
27433
27434 2008-01-21  Alon Dayan  <alond@il.ibm.com>
27435             Olga Golovanevsky  <olga@il.ibm.com>
27436
27437         PR tree-optimization/34701
27438         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
27439         when the structure size is not a power of 2.
27440
27441 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
27442
27443         * doc/install.texi: Add doc for --enable-checking=df.
27444
27445 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
27446
27447         PR rtl-optimization/34808
27448         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
27449
27450 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27451
27452         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
27453         input.
27454
27455 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
27456
27457         PR rtl-optimization/26854
27458         PR rtl-optimization/34400
27459         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
27460         DF_RD->gen.
27461         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
27462         (df_rd_bb_info.expanded_lr_out): New.
27463         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
27464         * loop_iv.c (iv_analysis_loop_init): Ditto.
27465         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27466         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27467         Added code to allocate, initialize or free expanded_lr_out.
27468         (df_rd_bb_local_compute_process_def): Restructured to make
27469         more understandable.
27470         (df_rd_confluence_n): Add code to do nothing with fake edges and
27471         code to no apply invalidate_by_call sets if the sets are being trimmed.
27472         (df_lr_local_finalize): Renamed to df_lr_finalize.
27473         (df_live_local_finalize): Renamed to df_live_finalize.
27474
27475 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27476
27477         PR target/34831
27478         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
27479         deciding whether to use reciprocal instructions.
27480
27481 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
27482
27483         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
27484         dwarf2out_note_section_used if cold_text_section is NULL.
27485
27486 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
27487
27488         PR gcov-profile/34610
27489         * tree-cfg.c (make_edges): Mark both outgoing edges from
27490         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
27491         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
27492         from OMP_FOR and OMP_CONTINUE outgoing edges.
27493
27494         * tree-profile.c (tree_profiling): Return early if
27495         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
27496         at the end.
27497         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
27498         from cfun to child_cfun.
27499         * function.h (struct function): Add after_tree_profile bit.
27500
27501 2008-01-19 Anatoly Sokolov <aesok@post.ru>
27502
27503         * config/avr/avr.S (_exit): Disable interrupt.
27504
27505 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
27506             Steven Bosscher  <stevenb.gcc@gmail.com>
27507
27508         PR rtl-optimization/26854
27509         PR rtl-optimization/34400
27510         * df-problems.c (df_live_scratch): New scratch bitmap.
27511         (df_live_alloc): Allocate df_live_scratch when doing df_live.
27512         (df_live_reset): Clear the proper bitmaps.
27513         (df_live_bb_local_compute): Only process the artificial defs once
27514         since the order is not important.
27515         (df_live_init): Init the df_live sets only with the variables
27516         found live by df_lr.
27517         (df_live_transfer_function): Use the df_lr sets to prune the
27518         df_live sets as they are being computed.
27519         (df_live_free): Free df_live_scratch.
27520
27521 2008-01-18  Ian Lance Taylor  <iant@google.com>
27522
27523         * common.opt: Add fmerge-debug-strings.
27524         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
27525         flag_merge_debug_strings rather than flag_merge_constants.
27526         * doc/invoke.texi (Option Summary): Mention
27527         -fmerge-debug-strings.
27528         (Debugging Options): Document -fmerge-debug-strings.
27529
27530 2008-01-18  Ian Lance Taylor  <iant@google.com>
27531
27532         PR c++/33407
27533         * tree.h (DECL_IS_OPERATOR_NEW): Define.
27534         (struct tree_function_decl): Add new field operator_new_flag.
27535         * tree-inline.c (expand_call_inline): When inlining a call to
27536         operator new, force the return value to go into a variable, and
27537         set DECL_NO_TBAA_P on that variable.
27538         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
27539
27540 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
27541
27542         PR debug/34484
27543         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
27544         DWARF2_DEBUGGING_INFO.
27545         (dwarf2out_note_section_used): Ditto.  Add prototype.
27546         (have_multiple_function_sections, text_section_used,
27547         cold_text_section_used, *cold_text_sections): Move declarations
27548         before their uses.
27549
27550 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
27551
27552         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
27553         field and add signal_ra.
27554         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
27555         assignments to frame state pc.  Move end of stack check after
27556         MD_FALLBACK_FRAME_STATE_FOR.
27557         (uw_update_context_1): Use frame state signal_regs if set, instead
27558         of checking signal_frame flag.
27559         (uw_update_context): Use frame state signal_ra if set.
27560         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
27561         * config/xtensa/linux-unwind.h: New file.
27562
27563 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
27564
27565         * modulo-sched.c (get_sched_window): Fix comment typo.
27566
27567 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
27568
27569         PR tree-optimization/34648
27570         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
27571
27572 2008-01-17  Anatoly Sokolov <aesok@post.ru>
27573
27574         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
27575         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
27576
27577 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
27578
27579         PR rtl-optimization/34400
27580         * df-core.c (df_worklist_dataflow_overeager,
27581         df_worklist_dataflow_doublequeue): New functions.
27582         (df_worklist_dataflow): Two different worklist solvers.
27583         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
27584         New param.
27585
27586 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27587
27588         PR testsuite/34821
27589         * doc/invoke.texi: Document the dependence on pthread for fopenmp
27590         and ftree-parallelize-loops.
27591
27592 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
27593
27594         PR rtl-optimization/34826
27595         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
27596
27597 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27598
27599         * global.c (find_reg): Mark the eh regs as used if necessary.
27600         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
27601         * ra.h (struct allocno): no_eh_reg field added.  Changed
27602         no_stack_reg type to bitfield.
27603
27604 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
27605
27606         * tree.c (substitute_in_expr): Add missing 'break'.
27607
27608 2008-01-17  Richard Guenther  <rguenther@suse.de>
27609
27610         PR tree-optimization/34825
27611         * tree-ssa-math-opts.c (is_division_by): Do not recognize
27612         x / x as division to handle.
27613
27614 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27615
27616         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
27617         "-pthread" is specified.
27618         * pa-hpux11.h (LIB_SPEC): Likewise.
27619
27620 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
27621             Peter Bergner  <bergner@vnet.ibm.com>
27622
27623         PR rtl-optimization/33796
27624         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
27625
27626 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27627
27628         PR libgfortran/34699
27629         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
27630         static links.
27631         * pa-hpux10.h (LINK_SPEC): Likewise.
27632         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
27633
27634 2008-01-16  Richard Guenther  <rguenther@suse.de>
27635
27636         PR middle-end/32628
27637         * fold-const.c (fold_convert_const_int_from_int): Do not
27638         set overflow if that occured only because of a sign extension
27639         change when converting from/to a sizetype with the same
27640         precision and signedness.
27641
27642 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27643
27644         PR debug/34249
27645         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
27646         location address to the correct place.  Update copyright year.
27647
27648 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27649
27650         * lambda-code.c (lambda_transform_legal_p): Handle the case of
27651         no dependences in the dependence_relations vector.
27652
27653 2008-01-16  Jan Hubicka  <jh@suse.cz>
27654
27655         PR rtl-optimization/31396
27656         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
27657         * cfg.c (dump_reg_info): Print it.
27658         * regs.h (struct reg_info_t): add freq_calls_crossed.
27659         (REG_FREQ_CALLS_CROSSED): New macro.
27660         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
27661         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
27662         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
27663         regmove_optimize): Update call crossed frequencies.
27664         * local-alloc.c (struct qty): Add freq_calls_crossed.
27665         (alloc_qty): Copute freq_calls_crossed.
27666         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
27667         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
27668         * ra.h (struct allocno): Add freq_calls_crossed.
27669
27670 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27671
27672         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
27673         libgomp when compiling with ftree-parallelize-loops.
27674         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
27675
27676 2008-01-16  Richard Guenther  <rguenther@suse.de>
27677
27678         PR tree-optimization/34769
27679         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
27680         * tree.c (int_cst_value): Instead make this function more
27681         permissive in what it accepts as valid input.  Document this
27682         function always sign-extends the value.
27683
27684 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
27685             Richard Guenther  <rguenther@suse.de>
27686
27687         PR c/34668
27688         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
27689         (gimple_fold_indirect_ref_rhs): ... this.
27690         (gimple_fold_indirect_ref): New function with foldings
27691         that preserve lvalueness.
27692         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
27693         * tree-flow.h (gimple_fold_indirect_ref): Declare.
27694         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
27695         to fold an INDIRECT_REF, fall back to the old use of
27696         fold_indirect_ref_1.
27697
27698 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27699
27700         * tree-data-ref.c (subscript_dependence_tester_1): Call
27701         free_conflict_function.
27702         (compute_self_dependence): Same.
27703
27704 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27705
27706         PR debug/34249
27707         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
27708         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
27709         function global.
27710         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
27711         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
27712         for DWARF2_UNWIND_INFO targets.
27713
27714 2008-01-16  Richard Guenther  <rguenther@suse.de>
27715
27716         PR c/34768
27717         * c-typeck.c (common_pointer_type): Do not merge inconsistent
27718         type qualifiers for function types.
27719
27720 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
27721
27722         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
27723         loop_iterator li from previous commit.
27724
27725 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
27726
27727         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
27728
27729 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27730
27731         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
27732         (parallelize_loops): Don't parallelize irreducible components.
27733
27734 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27735
27736         PR c++/24924
27737         * c-opts (c_common_post_options): Do not enable CPP
27738         flag_pedantic_errors by default.
27739
27740 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
27741
27742         PR rtl-optimization/31944
27743         * cse.c (remove_pseudo_from_table): New function.
27744         (merge_equiv_classes): Use above function to remove pseudo-registers.
27745         (invalidate): Likewise.
27746
27747 2008-01-13  Richard Guenther  <rguenther@suse.de>
27748
27749         PR middle-end/34601
27750         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
27751         instead of TYPE_MODE to deal with calls from expand_one_error_var.
27752
27753 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
27754
27755         * gcse.c (cprop_jump): Call validate_unshare_change instead of
27756         validate_change to unshare the source of the PC set.
27757
27758 2008-01-12  Jan Hubicka  <jh@suse.cz>
27759
27760         PR middle-end/32135
27761         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
27762         references above array bounds.  This might trigger bounds checks for
27763         pointers to arrays.
27764
27765 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27766
27767         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
27768         new_replaceable_dependencies.
27769
27770 2008-01-12  Doug Kwan  <dougkwan@google.com>
27771
27772         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
27773         instead of OPT_Wreturn_type in warning due to ignored return type
27774         qualifiers.
27775         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
27776         options included in -Wextra.
27777         * c.opt: New option -Wignored_qualifiers.
27778         * doc/invoke.texi (Warning Options, -Wextra): Add new option
27779         -Wignore_qualifiers.
27780         (-Wignored-qualifiers): Document.
27781         (-Wreturn-type): Remove description of functionality now handled
27782         by -Wignored-qualifiers.
27783
27784 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
27785
27786         PR ada/33788
27787         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
27788         NOP_EXPR if it is between integral types with the same precision.
27789
27790 2008-01-12  Jan Hubicka  <jh@suse.cz>
27791
27792         PR other/28023
27793         * invoke.texi (max-inline-recursive-depth): Fix default value.
27794
27795 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
27796
27797         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
27798         correct type.
27799
27800 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
27801
27802         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
27803
27804 2008-01-11  James E. Wilson  <wilson@specifix.com>
27805
27806         PR target/26015
27807         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
27808
27809 2008-01-11  Anatoly Sokolov <aesok@post.ru>
27810
27811         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
27812         save/restore frame pointer register and don't use 'call-prologues'
27813         optimization in function with "OS_task" attribute.
27814
27815 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
27816
27817         PR middle-end/31309
27818         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
27819         when copying to memory.
27820
27821 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
27822
27823         PR rtl-optimization/30905
27824         * cfgcleanup.c: Include dce.h
27825         (crossjumps_occured): New global variable.
27826         (try_crossjump_bb): Exit loop after finding a fallthru edge.
27827         If something changed, set crossjumps_occured to true.
27828         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
27829         Don't add/remove fake edges to exit here...
27830         (cleanup_cfg): ...but do it here, when crossjumping.
27831         Run a fast DCE when successful crossjumps occured in the latest
27832         iteration of try_optimize_cfg.
27833
27834 2008-01-11  Richard Guenther  <rguenther@suse.de>
27835
27836         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
27837         (struct vn_unary_op_s): Likewise.
27838         (vn_reference_insert): Free old reference on hash collision.
27839
27840 2008-01-10  Raksit Ashok  <raksit@google.com>
27841
27842         PR rtl-optimization/27971
27843         * combine.c (find_split_point): Split PLUS expressions which are
27844         inside a MEM rtx, and whose first operand is complex.
27845
27846 2008-01-10  DJ Delorie  <dj@redhat.com>
27847
27848         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
27849         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
27850         (m32c_hard_regno_ok): Call the underlying function.
27851
27852 2008-01-10  Richard Guenther  <rguenther@suse.de>
27853
27854         PR middle-end/34683
27855         * tree-cfg.c (tree_merge_blocks): Do not go through the
27856         full-blown folding and stmt updating path if we just deal
27857         with virtual operands.
27858         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
27859         test for abnormal SSA_NAMEs.
27860
27861 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
27862
27863         PR middle-end/34641
27864         * reload.c (push_reload): Add assertions.  All constants from
27865         reg_equiv_constant should have been used for replacing the respective
27866         pseudo earlier.
27867         (find_reloads_address): Invoke find_reloads_address_part for
27868         constant taken from the reg_equiv_constant array.
27869
27870 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
27871
27872         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
27873         field (valnum) the first in the struct.  Replace bools with
27874         unit bit fields.
27875
27876 2008-01-10  Richard Guenther  <rguenther@suse.de>
27877
27878         PR tree-optimization/34651
27879         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
27880         types and ordering for masking and converting.
27881
27882 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
27883
27884         PR tree-optimization/34017
27885         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
27886         also for PHI_NODE expressions.
27887
27888 2008-01-09  Jan Hubicka  <jh@suse.cz>
27889
27890         PR tree-optimization/34708
27891         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
27892         based on number of case labels.
27893         (init_inline_once): Remove switch_cost.
27894         * tree-inline.h (eni_weights_d): Remove switch_cost.
27895
27896 2008-01-09  Richard Guenther  <rguenther@suse.de>
27897         Andrew Pinski  <andrew_pinski@playstation.sony.com>
27898
27899         PR middle-end/30132
27900         * gimplify.c (gimplify_cond_expr): Do not create an addressable
27901         temporary if an rvalue is ok or an lvalue is not required.
27902
27903 2008-01-09  Richard Guenther  <rguenther@suse.de>
27904
27905         PR middle-end/34458
27906         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
27907         adjust return type.
27908
27909 2008-01-09  Richard Guenther  <rguenther@suse.de>
27910
27911         PR middle-end/34679
27912         * tree.c (host_integerp): Check for sizetype only if the
27913         type is an integer type.
27914
27915 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
27916
27917         PR debug/26364
27918         * opts.c (decode_options): Disable inlining of functions called
27919         once if not in unit-at-a-time mode.
27920
27921 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
27922
27923         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
27924
27925 2008-01-08  Richard Guenther  <rguenther@suse.de>
27926
27927         PR middle-end/31863
27928         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
27929         out early if the result will be unused.
27930
27931 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27932
27933         PR target/34709
27934         Revert:
27935
27936         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27937         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27938         for TARGET_RECIP.
27939
27940 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
27941
27942         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
27943         for vectorization tuned.
27944
27945 2008-01-08  Richard Guenther  <rguenther@suse.de>
27946
27947         PR tree-optimization/34683
27948         * tree-ssa-operands.c (operand_build_cmp): Export.
27949         * tree-ssa-operands.h (operand_build_cmp): Declare.
27950         * tree-vn.c (vuses_compare): Remove.
27951         (sort_vuses): Use operand_build_cmp.
27952         (sort_vuses_heap): Likewise.
27953         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
27954         to re-use old VEC if available.  Do not sort already sorted VUSEs.
27955         (vdefs_to_vec): Do not sort already sorted VDEFs.
27956
27957 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
27958
27959         PR middle-end/34694
27960         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
27961
27962 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27963
27964         PR target/34702
27965         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
27966         limitations of reciprocal sequences on x86 targets.
27967
27968 2008-01-08  Richard Guenther  <rguenther@suse.de>
27969
27970         PR tree-optimization/34683
27971         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
27972
27973 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
27974
27975         PR target/34622
27976         * config/darwin.c (darwin_mergeable_string_section): Don't use
27977         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
27978
27979 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
27980
27981         PR target/34682
27982         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
27983         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
27984         predicates of op0 and op1 to register_operand.
27985         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
27986         expander using X87MODEF mode iterator.  Change predicates of
27987         op0 and op1 to register_operand.
27988         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
27989         corresponding patterns and macroize using MODEF macro.  Change
27990         predicates of op0 and op1 to register_operand and remove
27991         "m" constraint. Disparage "r" alternative with "!".
27992         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
27993         macroize using X87MODEF macro.  Change predicates of op0 and op1
27994         to register_operand and remove "m" constraint.  Disparage "r"
27995         alternative with "!".
27996         (absneg splitter with memory operands): Remove.
27997         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
27998         patterns and macroize using X87MODEF mode iterator.
27999         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
28000         Change predicate of op1 to register_operand.
28001         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
28002         for memory operands.
28003
28004 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
28005
28006         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
28007
28008 2008-01-07  Richard Guenther  <rguenther@suse.de>
28009
28010         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
28011         fields.
28012
28013 2008-01-07  Richard Guenther  <rguenther@suse.de>
28014
28015         PR tree-optimization/34683
28016         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
28017         VOPs of the needed size to save memory.  Use VEC_quick_push
28018         to save compile-time.
28019         (vdefs_to_vec): Likewise.
28020
28021 2008-01-07  Sa Liu  <saliu@de.ibm.com>
28022
28023         * config/spu/spu.md (divdf3): Genetate inline code for double
28024         division.  The implementation doesn't handle INF or NAN, therefore it
28025         only applies when -ffinite-math-only is given.
28026
28027 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
28028
28029         PR libstdc++/34680
28030         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
28031         * doc/cpp.texi ([Common Predefined Macros]): Document.
28032
28033 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
28034
28035         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
28036         order to use commutative addition instead of subtraction.
28037
28038 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28039             Mircea Namolaru  <namolaru@il.ibm.com>
28040             Vladimir Yanovsky  <yanov@il.ibm.com>
28041             Revital Eres  <eres@il.ibm.com>
28042
28043         PR tree-optimization/34263
28044         * tree-outof-ssa.c (process_single_block_loop_latch,
28045         contains_tree_r): New functions.
28046         (analyze_edges_for_bb): Call process_single_block_loop_latch
28047         function to empty single-basic-block latch block if possible.
28048
28049 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28050
28051         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
28052         for TARGET_RECIP.
28053         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
28054
28055 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28056
28057         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
28058
28059 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28060
28061         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
28062
28063 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
28064
28065         PR tree-optimization/34618
28066         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
28067         flag from T.
28068
28069 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28070
28071         PR target/34673
28072         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
28073         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
28074         Update copyright year.
28075
28076         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
28077         Update copyright year.
28078         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
28079         using NR fixup.
28080
28081 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
28082
28083         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
28084         edge does not point to current bb before changing need_assert.
28085
28086 2008-01-04  Richard Guenther  <rguenther@suse.de>
28087
28088         PR middle-end/34029
28089         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
28090         for verifying purposes if they are is_gimple_min_invariant.
28091
28092 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
28093
28094         PR tree-optimization/34448
28095         PR tree-optimization/34465
28096         * gimplify.c (gimplify_init_constructor): Add new parameter
28097         notify_temp_creation.  Use it.
28098         (gimplify_modify_expr_rhs): Take volatiles into account when
28099         optimizing constructors.
28100         Do not optimize constructors if gimplify_init_constructor will dump to
28101         memory.
28102         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
28103         * gcc.c-torture/compile/pr34448.c: New.
28104
28105 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
28106
28107         PR gcov-profile/34609
28108         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
28109         return_slot if result is TREE_ADDRESSABLE.
28110
28111 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
28112
28113         * config/mips/mips.md (sqrt_condition): Tweak comment.
28114         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
28115
28116 2008-01-03  Tom Tromey  <tromey@redhat.com>
28117
28118         PR c/34457
28119         * c-common.c (c_type_hash): Handle VLAs.
28120
28121 2008-01-03  Jan Hubicka  <jh@suse.cz>
28122
28123         PR tree-optimization/31081
28124         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
28125         0 when inlining and not inlining to first basic block.
28126         (remap_decl): When var is initialized to 0, don't set default_def.
28127         (expand_call_inline): Set entry_bb.
28128         * tree-inline.h (copy_body_data): Add entry_bb.
28129
28130 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28131
28132         PR c++/34619
28133         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
28134         before returning.
28135
28136         PR tree-optimization/29484
28137         * tree-inline.c (inline_forbidden_p_2): New function.
28138         (inline_forbidden_p): Disallow inlining if some static var
28139         has an address of a local LABEL_DECL in its initializer.
28140         * doc/extend.texi (Labels as Values): Document &&foo behaviour
28141         vs. inlining.
28142
28143 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
28144
28145         PR tree-optimization/34635
28146         * tree-data-ref.c (add_other_self_distances): Make sure that the
28147         evolution step is constant.
28148
28149 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28150
28151         PR middle-end/34608
28152         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
28153
28154 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
28155
28156         * tree-sra.c (scalarize_init): Insert the generate_element_init
28157         statements after the generate_element_zero statements.
28158
28159 2008-01-02  Richard Guenther  <rguenther@suse.de>
28160
28161         PR middle-end/34093
28162         PR middle-end/31976
28163         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
28164         for very large number of operands instead of ICEing.
28165
28166 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
28167
28168         PR target/34013
28169         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
28170         while stack probing.
28171
28172 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
28173
28174         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
28175         in C++0x mode.
28176
28177 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
28178
28179         PR libmudflap/26442
28180         * tree-mudflap.c (mx_register_decls): Guard warning by
28181         !DECL_ARTIFICIAL check.
28182
28183 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
28184
28185         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
28186         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
28187         sse5_perm<mode>): Fix constraints.