s390.md (UNSPEC_COPYSIGN): New constant.
[gcc.git] / gcc / ChangeLog
1 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
2
3 * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
4 (op_type attribute): RRF instruction type added.
5 (fT0): New mode attribute.
6 ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
7 "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
8 * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
9 no secondary memory is needed when moving DFmode values between GPRs
10 and FPRs.
11
12 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
13
14 * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
15 inverted and documentation adjusted.
16 ("mhard-dfp", "msoft-dfp"): New options.
17 * config/s390/s390.c (s390_handle_arch_option): New architecture
18 switch: z9-ec.
19 (override_options): Sanity checks for the new options added.
20 * config.gcc: New architecture switch: z9-ec.
21 * config/s390/s390.h (processor_flags): PF_DFP added.
22 (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
23 (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
24 when the bit is NOT set so remove it from the defaults.
25
26 2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
27
28 * genemit.c (main): Print include statement for dfp.h.
29 * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
30 is not available.
31
32 2007-03-19 Hans-Peter Nilsson <hp@axis.com>
33
34 * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
35
36 2007-03-19 Kaz Kojima <kkojima@gcc.gnu.org>
37
38 PR target/31022
39 * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
40 instead of PATTERN.
41
42 2007-03-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
43
44 * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
45 attr_length_call, output_call, output_indirect_call): Cleanup
46 formatting of targetm calls.
47
48 2007-03-19 Hans-Peter Nilsson <hp@axis.com>
49
50 * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
51
52 2007-03-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
53
54 * pa.md: Add fpstore_load and store_fpload instruction types. Provide
55 reservation, bypass and anti-bypass descriptions for these instructions.
56 Update move patterns.
57 * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
58 TYPE_FPSTORE.
59
60 2007-03-18 Dorit Nuzman <dorit@il.ibm.com>
61
62 * tree-vect-transform.c (get_initial_def_for_induction): Replace
63 GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
64 (get_initial_def_for_reduction): Likewise.
65
66 2007-03-16 Daniel Berlin <dberlin@dberlin.org>
67
68 Fix PR tree-optimization/29922
69 * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
70 (get_representative): Removed.
71 (value_dies_in_block_x): Update for rvuse removal.
72 (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
73 (compute_antic_aux): Handle when PHI nodes appear in
74 non-single-successors.
75 (dump_bitmap_of_names): Removed.
76 (compute_antic_safe): Renamed and removed rvuse calculation.
77 Calculate only antic safe.
78 (insert_into_preds_of_block): Remove assert.
79 (execute_pre): Update for renamed functions.
80 (defer_or_phi_translate_block): New function.
81
82 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
83
84 * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
85 config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
86 typos.
87 * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
88 Follow spelling conventions.
89
90 * tree-data-ref.h: Remove the prototype for analyze_array.
91
92 2007-03-17 Dorit Nuzman <dorit@il.ibm.com>
93
94 PR tree-optimization/31041
95 * tree-vect-transform.c (get_initial_def_for_induction): Call
96 force_gimple_operand.
97
98 2007-03-17 Olga Golovanevsky <olga@il.ibm.com>
99
100 * ipa-type-escape.c (look_for_casts) : Revert code to use
101 handled_component_p due to ada test a-numaux.adb.
102
103 2007-03-17 Kazu Hirata <kazu@codesourcery.com>
104
105 * final.c (final_scan_insn): Alter the condition of a
106 conditional trap if we have nonstandard CC.
107
108 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
109
110 * configure.ac: Remove excess quoting from asm line 0 test.
111 * configure: Rebuilt.
112
113 2007-03-16 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
114
115 * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
116 * c-common.c (convert_and_check): Move warning logic to...
117 (warnings_for_convert_and_check): ...here. Define.
118 * c-common.h (warnings_for_convert_and_check): Declare.
119
120 2007-03-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
121
122 * pa.c (attr_length_call): Partially revert change of 2007-03-09.
123 (output_call): Likewise.
124
125 2007-03-16 Richard Sandiford <richard@codesourcery.com>
126
127 * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
128
129 2007-03-16 Richard Sandiford <richard@codesourcery.com>
130
131 * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
132
133 2007-03-16 Uros Bizjak <ubizjak@gmail.com>
134
135 * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
136 opteron, athlon-64 and athlon-fx processor_alias_table entries.
137
138 2007-03-16 Sebastian Pop <sebastian.pop@inria.fr>
139
140 PR tree-optimization/31183
141 * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
142 Use double_int instead of unsigned int for representing access_strides.
143 * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
144
145 2007-03-16 Richard Guenther <rguenther@suse.de>
146
147 PR tree-optimization/31146
148 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
149 to allow recursion of forward_propagate_addr_expr.
150 (forward_propagate_addr_into_variable_array_index): Likewise.
151 (forward_propagate_addr_expr): Likewise.
152 (tree_ssa_forward_propagate_single_use_vars): Likewise.
153 (forward_propagate_addr_expr_1): Recurse on simple copies
154 instead of propagating into them. Do so for useless conversions
155 as well.
156 (forward_propagate_addr_expr): Clean up unused statements after
157 recursion.
158
159 2007-03-16 Richard Guenther <rguenther@suse.de>
160
161 * builtins.c (expand_builtin_cexpi): Use the right argument
162 for the expansion via cexp.
163
164 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
165
166 * configure.ac: Don't require ELF binutils to tolerate # 0 "".
167 * configure: Rebuilt.
168
169 2007-03-16 Alexandre Oliva <aoliva@redhat.com>
170
171 PR debug/29906
172 * dwarf2out.c (force_type_die): Adjust comment.
173 (dwarf2out_imported_module_or_decl): Handle base AT_import types.
174
175 2007-03-15 DJ Delorie <dj@redhat.com>
176
177 * config/frv/predicates.md (minmax_operator): Don't check operands
178 here.
179
180 2007-03-15 Zdenek Dvorak <dvorakz@suse.cz>
181
182 * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
183 Update constant estimates of number of iterations.
184 (record_nonwrapping_iv): Add "upper" argument. "data_size_bounds_p"
185 argument renamed to "realistic".
186 (compute_estimated_nb_iterations): Removed.
187 (record_niter_bound): New function.
188 (idx_infer_loop_bounds): For possible but unlikely tail arrays,
189 call record_nonwrapping_iv with upper = false.
190 (infer_loop_bounds_from_signedness): Pass upper argument to
191 record_nonwrapping_iv.
192 (estimate_numbers_of_iterations_loop): Do not call
193 compute_estimated_nb_iterations. Record estimate based on profile
194 information. Initialize the constant estimates of number of
195 iterations.
196 * tree-data-ref.c (estimated_loop_iterations): Return the recorded
197 estimates.
198 * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
199 number of iterations is too small.
200 * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
201 (EST_NOT_AVAILABLE): Removed.
202 (struct loop): Replace estimated_nb_iterations by any_upper_bound,
203 nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
204 fields.
205
206 2007-03-15 Zdenek Dvorak <dvorakz@suse.cz>
207
208 * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
209 Handle NE_EXPR guards.
210
211 2007-03-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
212
213 PR c++/24924
214 * c-opts.c (c_common_post_options): Handle C++ post-processing here.
215 Set also -pedantic-errors by default for the preprocessor unless
216 -fpermissive is given.
217
218 2007-03-15 Richard Guenther <rguenther@suse.de>
219
220 PR middle-end/29719
221 PR middle-end/31161
222 * builtins.c (expand_builtin_cexpi): As a fallback if we
223 don't have builtins for sincos or cexp create a function
224 declaration for cexp and expand to a call to that.
225 (expand_builtin_int_roundingfn): Always fall
226 back to floor/ceil and its variants even if they may be
227 not available.
228
229 2007-03-15 Steven Bosscher <steven@gcc.gnu.org>
230
231 PR middle-end/31159
232 * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
233 jump tables, move the call to delete_dead_jumptables from here...
234 (cfg_layout_finalize): ...to here. But rebuild jump labels first.
235 * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
236 don't allow merging of blocks that try_redirect_by_replacing_jump
237 also does not handle when not optimizing.
238
239 2007-03-15 Uros Bizjak <ubizjak@gmail.com>
240 Francois-Xavier Coudert <coudert@clipper.ens.fr>
241
242 * config/i386/i386.md (x86_sahf_1): Correctly handle
243 HAVE_AS_IX86_SAHF.
244
245 2007-03-15 Uros Bizjak <ubizjak@gmail.com>
246
247 PR target/31167
248 * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
249 x86_64_general_operand as operand[2] predicate. Remove "iF"
250 from operand constraints and use "e" constraint instead.
251 (*subti3_1, *subti3_1 splitter): Ditto.
252 (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
253 operand[1] predicate.
254
255 2007-03-14 Sebastian Pop <sebastian.pop@inria.fr>
256
257 * tree-loop-linear.c (gather_interchange_stats): For multidimensional
258 arrays, multiply the access strides by the size of the sub-array.
259 * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
260
261 2007-03-14 Uros Bizjak <ubizjak@gmail.com>
262
263 * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
264 the configured assembler supports the sahf mnemonic.
265 * configure: Regenerate.
266 * config.in: Regenerate.
267
268 * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
269 emit "sahf" or ".byte\t0x9e" as asm template.
270
271 2007-03-14 Michael Meissner <michael.meissner@amd.com>
272
273 PR 31018
274 * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
275 option to replace hard coded TARGET_xxx in md file.
276 (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
277 (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
278 (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
279 (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
280 (X86_TUNE_NOT_UNPAIRABLE): Ditto.
281 (X86_TUNE_NOT_VECTORMODE): Ditto.
282 (TUNE_SHORTEN_X87_SSE): Use new tuning option.
283 (TUNE_AVOID_VECTOR_DECODE): Ditto.
284 (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
285 (TUNE_SLOW_IMUL_IMM8): Ditto.
286 (TUNE_MOVE_M1_VIA_OR): Ditto.
287 (TUNE_NOT_UNPAIRABLE): Ditto.
288 (TUNE_NOT_VECTORMODE): Ditto.
289
290 * config/i386/i386.c (ix86_tune_features): Fill in new tuning
291 options.
292
293 * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
294 tuning options instead of hard coded TARGET_xxx.
295 (fix ssemode peephole2's): Ditto.
296 (imul peephole2's): Ditto.
297 (movsi_or): Ditto.
298 (movdi_or_rex64): Ditto.
299 (move peephole2): Ditto.
300 (not peephole2's): Ditto.
301
302 2007-03-14 Dirk Mueller <dmueller@suse.de>
303
304 * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
305 * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
306 * c-parser.c (c_parser_if_body): Always add an empty statement in case
307 of empty body.
308 * c-parser.c (c_parser_do_statement): Warn about empty body in
309 do/while statement.
310 * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
311 * doc/invoke.texi (-Wempty-body): Update documentation.
312
313 2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
314
315 PR c/21438
316 * c-common.h (warn_for_div_by_zero): Declare.
317 * c-common.c (warn_for_div_by_zero): Define.
318 * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
319 warning.
320
321 2007-03-14 Richard Sandiford <richard@codesourcery.com>
322
323 * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
324 to PREFIX and STANDARD_PREFIX.
325
326 2007-03-14 Richard Sandiford <richard@codesourcery.com>
327 Phil Edwards <phil@codesourcery.com>
328
329 * gthr-vxworks.h: Add an extern "C" wrapper for C++.
330 (__gthread_once_t): Remove busy field for RTPs.
331 (__GTHREAD_ONCE_INIT): Update accordingly.
332
333 2007-03-14 Richard Sandiford <richard@codesourcery.com>
334
335 * doc/invoke.texi: Document VxWorks options.
336
337 2007-03-14 Uros Bizjak <ubizjak@gmail.com>
338
339 * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
340
341 2007-03-13 Seongbae Park <seongbae.park@gmail.com>
342
343 PR tree-optimization/30590
344 * tree-nrv.c (tree_nrv): Check for the partial update of the
345 return value.
346
347 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
348
349 * flags.h (flag_random_seed): Remove declaration, in favor of...
350 * toplev.h (get_random_seed, set_random_seed): ... these.
351 * tree.c (get_file_function_name): Use the former.
352 * opts.c (common_handle_option): Use the latter.
353 * toplev.c
354
355 2007-03-13 Steven Bosscher <steven@gcc.gnu.org>
356
357 PR middle-end/31127
358 * cse.c (cse_find_path): Do not bail out if a basic block that
359 we already visited now becomes part of a path that starts at a
360 different basic block. Just disallow this, to make sure we
361 visit each basic block at most once.
362
363 2007-03-13 Jan Hubicka <jh@suse.cz>
364
365 * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
366 when profile esitmate is present, calls with very low frequency are
367 cold.
368
369 2007-03-13 Zdenek Dvorak <dvorakz@suse.cz>
370
371 PR tree-optimization/30730
372 PR tree-optimization/26900
373 * tree-ssa-loop-niter.c: Include gmp.h.
374 (bounds): New type.
375 (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
376 split_to_var_and_offset, determine_value_range,
377 bound_difference_of_offsetted_base, refine_bounds_using_guard,
378 bound_difference, bounds_add, bounds_negate,
379 number_of_iterations_ne_max, dump_affine_iv): New functions.
380 (number_of_iterations_ne, number_of_iterations_lt_to_ne,
381 assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
382 difference of initial and final value of control iv to validate
383 results.
384 (number_of_iterations_cond): Add loop parameter. Determine bounds
385 on the difference of the extremes of the control iv. Add dumps.
386 (expand_simple_operations): Handle phi nodes.
387 (simplify_using_initial_conditions): Do not record used conditions.
388 (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
389 Do not set additional_info.
390 (implies_nonnegative_p, implies_ge_p): Removed.
391 (derive_constant_upper_bound): Do not use parameter `additional'.
392 (record_estimate): Parameter `additional' removed. Parameter
393 `i_bound' added. Do not call derive_constant_upper_bound.
394 (record_nonwrapping_iv): Use derive_constant_upper_bound to
395 bound the number of iterations estimate.
396 (estimate_numbers_of_iterations_loop): Pass the estimate from
397 the number of iterations analysis to record_estimate.
398 * tree.h (multiple_of_p): Declare.
399 * tree-scalar-evolution.c (expression_expensive_p): Removed.
400 (scev_const_prop): Do not check expression_expensive_p.
401 * fold-const.c (multiple_of_p): Exported.
402 * double-int.c (double_int_mask): Exported.
403 * double-int.h (double_int_mask): Declare.
404 * tree-flow.h (struct tree_niter_desc): Removed additional_info
405 field. Added max field.
406
407 2007-03-13 David Taylor <taylor@candd.org>
408
409 PR driver/12448:
410 * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
411 default -MQ.
412
413 2007-03-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
414
415 PR target/31123
416 * pa.md (vdepi_ior): Don't allow zero length deposit. Likewise for
417 two unamed patterns.
418
419 2007-03-13 Uros Bizjak <ubizjak@gmail.com>
420
421 * config/i386/i386.opt (mcx16, msahf): New options.
422 * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
423 (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
424
425 * config/i386/driver-i386.c (bit_LAHF_LM): New define.
426 (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
427 Output -mcx16 and -msahf options when corresponding bit is set.
428
429 * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
430 and -msahf options.
431
432 2007-03-13 Alexandre Oliva <aoliva@redhat.com>
433
434 * configure.ac: Test for assembler tolerance to # 0 "".
435 * configure, config.in: Rebuilt.
436 * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
437
438 2007-03-13 Geoffrey Keating <geoffk@apple.com>
439
440 * doc/invoke.texi (Spec Files): Update for '%{,' spec.
441
442 * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
443 (handle_syscall): Handle direct system calls.
444 * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
445
446 2007-03-12 Brooks Moses <brooks.moses@codesourcery.com>
447
448 * doc/invoke.texi: Fix cpp.info cross-reference.
449 * doc/passes.texi: Fix gcc.info cross-reference.
450
451 2007-03-12 Zdenek Dvorak <dvorakz@suse.cz>
452
453 PR tree-optimization/30835
454 * lambda-code.c (can_convert_to_perfect_nest): Check whether
455 bb_for_stmt is not NULL before accessing it.
456
457 2007-03-12 Joseph Myers <joseph@codesourcery.com>
458
459 * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
460 some multilibs.
461
462 2007-03-12 Brooks Moses <brooks.moses@codesourcery.com>
463
464 PR 30635
465 * doc/install.texi: Document --enable-stage1-languages
466
467 2007-03-12 Steven Bosscher <steven@gcc.gnu.org>
468
469 * tree-pass.h (pass_into_cfg_layout_mode,
470 pass_outof_cfg_layout_mode): Declare.
471 * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
472 pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
473 * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
474 (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
475
476 2007-03-12 Seongbae Park <seongbae.park@gmail.com>
477
478 * c-decl.c (warn_variable_length_array): New function.
479 Refactored from grokdeclarator to handle warn_vla
480 and handle unnamed array case.
481 (grokdeclarator): Refactored VLA warning case.
482 * c.opt (Wvla): New flag.
483 * doc/invoke.texi (Wvla): New warning.
484
485 2007-03-12 Richard Henderson <rth@redhat.com>
486
487 * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
488 (TARGET_SECTION_TYPE_FLAGS): New.
489
490 2007-03-12 Richard Henderson <rth@redhat.com>
491
492 * config/darwin.c (machopic_reloc_rw_mask): New.
493 * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
494 * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
495
496 2007-03-12 Mark Mitchell <mark@codesourcery.com>
497
498 * cppdefault.c (cpp_EXEC_PREFIX): New variable.
499 * cppdefault.h (cpp_PREFIX): Document.
500 (cpp_PREFIX_len): Likewise.
501 (cpp_EXEC_PREFIX): New variable.
502 * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
503 * c-incpath.c (add_standard_paths): Correct logic for relocating
504 paths within prefix.
505
506 2007-03-12 Uros Bizjak <ubizjak@gmail.com>
507
508 * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
509 fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
510 mode macro.
511 (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
512 fix_truncdfdi_sse using SSEMODEF mode macro.
513 (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
514 fix_truncdfsi_sse using SSEMODEF mode macro.
515 (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
516 (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
517
518 2007-03-12 Richard Sandiford <richard@codesourcery.com>
519
520 * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
521 elfos.h to tm_file.
522
523 2007-03-12 Olga Golovanevsky <olga@il.ibm.com>
524
525 * tree.h : Add multiple_of_p declaration.
526 * fold-const.c (multiple_of_p): Make multiple_of_p public.
527 * ipa-type-escape.c (results_of_malloc): Redundant.
528 (visited_stmts): New. Visited stmt for walk_use_def_chains.
529 (cast_type): Extended with new members.
530 (check_cast): Returns cast_type.
531 (cast): New structure for data of walk_use_def_chains.
532 (is_malloc_result, is_cast_from_non_pointer_1,
533 is_cast_from_non_pointer,
534 is_array_access_through_pointer_and_index): New functions.
535 (look_for_casts): Returns cast types.
536 (check_call): Returns void.
537 (okay_pointer_operation): Use support of pointer plus index,
538 pointer plus constant and allow all multiplications.
539
540 2007-03-11 Richard Guenther <rguenther@suse.de>
541
542 PR tree-optimization/31115
543 * tree-vrp.c (extract_range_from_binary_expr): Make sure
544 the shift count is positive and non-anti-range for RSHIFT_EXPR.
545 A shift count of zero is not special as with *_DIV_EXPR.
546 (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
547 direction.
548
549 2007-03-11 Ian Lance Taylor <iant@google.com>
550
551 * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
552 the *_DIV_EXPR codes correctly with overflow infinities.
553
554 2007-03-11 Ira Rosen <irar@il.ibm.com>
555
556 * tree-data-ref.c (analyze_offset): Add a return value (bool) to
557 indicate success/failure of the analysis. Add negation to subtrahend
558 in case of subtraction. Fail if both operands contain constants.
559 (create_data_ref): Fail if analyze_offset fails.
560
561 2007-03-11 Uros Bizjak <ubizjak@gmail.com>
562
563 * config/i386/i386.md (frndintxf2): Rename to ...
564 (rintxf2): ... this. Remove expander having same name.
565 (rintsf2, rintdf2): Implement using SSEMODEF macro.
566 (roundsf2, rounddf2): Ditto.
567 (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
568 (lround<mode>di2, lround<mode>si2): Ditto.
569
570 2007-03-11 Steven Bosscher <steven@gcc.gnu.org>
571
572 * lower-subreg.c: Include except.h.
573 (decompose_multiword_subregs): Verify that the only control flow
574 insns we can split are loads to multi-words pseudos.
575 Handle breaking such blocks after splitting, instead of calling
576 find_many_sub_basic_blocks.
577
578 * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
579 on the new basic block. Add a lengthy comment explaining why we
580 thought this was necessary.
581 * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
582
583 2007-03-10 Mark Mitchell <mark@codesourcery.com>
584
585 PR c++/30924
586 * tree.c (walk_type_fields): Recurse into the element type of
587 ARRAY_TYPEs if there is a pointer set.
588
589 2007-03-10 Dirk Mueller <dmueller@suse.de>
590
591 * c-common.c (warn_logical_operator): Fix condition.
592
593 2007-03-10 Tobias Schlüter <tobi@gcc.gnu.org>
594
595 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
596 quotation mark.
597 * config/darwin.c (machopic_select_section): Remove superfluous
598 argument in call to categorize_decl_for_section. Remove unused
599 variable shlib.
600
601 2007-03-10 Joseph Myers <joseph@codesourcery.com>
602
603 * configure.ac (glibc_header_dir): Set using with_build_sysroot if
604 defined.
605 * configure: Regenerate.
606
607 2007-03-10 Uros Bizjak <ubizjak@gmail.com>
608
609 PR target/31101
610 * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
611 (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
612 (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
613 Add LABEL_NUSES to emitted label.
614 * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
615 branch probability value to emitted jump insn.
616 * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
617 Do not check life information and do not re-arrange input operands
618 for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
619
620 2007-03-10 Kaz Kojima <kkojima@gcc.gnu.org>
621
622 * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
623 the change of decode_asm_operands.
624
625 2007-03-10 Kaz Kojima <kkojima@gcc.gnu.org>
626
627 * mode-switching.c (create_pre_exit): Skip blockage insn.
628
629 2007-03-09 Diego Novillo <dnovillo@redhat.com>
630
631 * tree-pass.h (TODO_update_smt_usage): Remove.
632 Update all users.
633 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
634 argument SOME.
635 Update all users.
636
637 2007-03-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
638
639 * pa.c (attr_length_call): Revise condition for long pc-relative branch.
640 (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
641 calls on the SOM target. Don't use "LONG_PIC_PCREL" call sequence on
642 SOM target.
643
644 2007-03-09 Geoffrey Keating <geoffk@apple.com>
645
646 * gcc.c: Document %{, in big comment at top.
647 (input_suffix_matches): Remove special handling for .s and
648 .S.
649 (input_spec_matches): New.
650 (handle_braces): Handle %{,.
651 (validate_switches): ',' indicates a value which is not a switch.
652 * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
653 to detect assembler input.
654 * config/i386/sol2.h (CPP_SPEC): Likewise.
655 * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
656 * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
657 * config/rs6000/lynx.h (ASM_SPEC): Likewise.
658 * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
659 * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
660 -m64 causes deployment target to default to 10.5.
661 * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
662
663 2007-03-09 Richard Henderson <rth@redhat.com>
664
665 PR target/26090
666 * target.h (targetm.asm.out.reloc_rw_mask): New.
667 * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
668 (TARGET_ASM_OUT): Use it.
669 * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
670 * varasm.c (categorize_decl_for_section): Remove shlib argument;
671 use the new reloc_rw_mask target hook instead.
672 (default_section_type_flags_1): Merge into...
673 (default_section_type_flags): ... here.
674 (decl_readonly_section_1): Merge into...
675 (decl_readonly_section): ... here.
676 (default_elf_select_section_1): Merge into...
677 (default_elf_select_section): ... here.
678 (default_unique_section_1): Merge into...
679 (default_unique_section): ... here.
680 (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
681 (default_select_rtx_section): Use it.
682 (default_elf_select_rtx_section): Likewise.
683 * output.h: Update to match.
684 * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
685 * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
686 (TARGET_ASM_RELOC_RW_MASK): New.
687 * config/i386/i386.c (x86_64_elf_select_section): Adjust call
688 to categorize_decl_for_section.
689 (x86_64_elf_unique_section): Likewise.
690 * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
691 TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
692 (TARGET_ASM_RELOC_RW_MASK): New.
693 * config/ia64/ia64.c (ia64_rwreloc_select_section,
694 ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
695 (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
696 (TARGET_RWRELOC): Remove.
697 (ia64_section_type_flags): Adjust call to default_section_type_flags.
698 * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
699 * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
700 (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
701 (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
702 (rs6000_xcoff_select_section): Use decl_readonly_section.
703 (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
704 * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
705 (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
706 (TARGET_SECTION_TYPE_FLAGS): Remove.
707 * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
708
709 2007-03-09 Roger Sayle <roger@eyesopen.com>
710
711 * fold-const.c (fold_comparison): Remove compile-time evaluation of
712 complex constant equality/inequality comparisons for here.
713 (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
714 known at compile-time or can be simplified to a scalar comparison.
715 (fold_relational_const): Move compile-time evaluation of complex
716 constant equality/inequality comparisons to here.
717
718 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
719
720 PR rtl-optimization/30643
721 * cse.c (cse_insn): Recompute dest_hash after insert_regs for
722 dest_addr_elt.
723 (fold_rtx): Recurse, like before 2006-11-03.
724
725 2007-03-09 DJ Delorie <dj@redhat.com>
726
727 * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
728 m32c-pragma.o.
729
730 2007-03-09 Aldy Hernandez <aldyh@redhat.com>
731
732 PR tree-optimization/30375
733 * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
734 LHS of statements is not the same.
735 * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
736
737 2007-03-09 Chao-ying Fu <fu@mips.com>
738
739 * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
740 REV 2.
741 * doc/invoke.texi (-mdspr2): Document new option.
742 * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
743 New unspec for DSP REV 2.
744 (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
745 these instructions are extended in DSP REV 2.
746 (mips-dspr2.md): Include.
747 * config/mips/mips.opt (mdspr2): New option.
748 * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
749 MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
750 MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
751 (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
752 (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
753 (dsp_bdesc): Add DSP REV 2 builtins. Remove 32-bit only DSP builtins.
754 (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
755 and 2 builtins.
756 (bdesc_map): Add one field of unsupported_target_flags.
757 (bdesc_arrays): Update entries to have extra fields. Add
758 dsp_32only_bdesc.
759 (mips_init_builtins): Initialize new function types.
760 Check unsupported_target_fileds to filter out builtins.
761 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
762 TARGET_DSPR2.
763 (ASM_SPEC): Pass mdspr2 to the assembler.
764 * config/mips/mips-dspr2.md: New file.
765
766 2007-03-09 Sa Liu <saliu@de.ibm.com>
767
768 * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
769
770 2007-03-09 Ian Lance Taylor <iant@google.com>
771
772 * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
773 argument) like -Wstrict-overflow=2.
774 * doc/invoke.texi (Warning Options): Update documentation.
775
776 2007-03-09 Dirk Mueller <dmueller@suse.de>
777
778 PR c++/17946
779 * doc/invoke.texi (-Wlogical-op): Document.
780 * common.opt (-Wlogical-op): New.
781 * c-common.h (warn_logical_operator): Declare.
782 * c-common.c (warn_logical_operator): Define.
783 * c-typeck.c (parser_build_binary_op): Call
784 warn_logical_operator.
785
786 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
787
788 * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
789 * final.c (final_scan_insn): Test for non-"" file name.
790
791 2007-03-09 Sebastian Pop <sebastian.pop@inria.fr>
792
793 * doc/loop.texi: Document the Omega linear constraints solver.
794 * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
795 omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
796 omega-hash-table-size, omega-max-keys, and
797 omega-eliminate-redundant-constraints.
798 * tree-pass.h (pass_check_data_deps): Declared.
799 * omega.c: New.
800 * omega.h: New.
801 * timevar.def (TV_CHECK_DATA_DEPS): Declared.
802 * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
803 pass_check_data_deps): New.
804 * tree-data-ref.c (init_data_ref): Remove declaration.
805 (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
806 (analyze_array): Renamed init_array_ref, move up initializations.
807 (init_data_ref): Renamed init_pointer_ref. Moved before its call.
808 Removed arguments that are set to NULL.
809 (analyze_indirect_ref): Correct indentation, correct call to
810 init_pointer_ref.
811 (object_analysis): Call init_array_ref instead of analyze_array.
812 (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
813 (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
814 of DR_ACCESS_FNS_ADDR.
815 (init_omega_eq_with_af, omega_extract_distance_vectors,
816 omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
817 ddr_consistent_p): New.
818 (compute_affine_dependence): Check consistency of ddrs when
819 flag_check_data_deps is passed.
820 (analyze_all_data_dependences): Uncomment.
821 (tree_check_data_deps): New.
822 * tree-data-ref.h: Include omega.h.
823 (DR_ACCESS_FNS_ADDR): Removed.
824 (data_dependence_relation): Add inner_loop.
825 (DDR_INNER_LOOP): New.
826 * common.opt (fcheck-data-deps): New.
827 * tree-flow.h (tree_check_data_deps): Declare.
828 * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
829 (OBJS-common): Depend on omega.o.
830 (omega.o): Define.
831 * passes.c (pass_check_data_deps): Scheduled.
832 * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
833 PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
834 PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
835 PARAM_VECT_MAX_VERSION_CHECKS,
836 PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
837
838 2007-03-09 Richard Guenther <rguenther@suse.de>
839
840 PR tree-optimization/30904
841 PR middle-end/31058
842 * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
843 the same way as *_DIV_EXPR.
844
845 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
846
847 * recog.c (decode_asm_operands): No mixed declarations and code.
848
849 2007-03-09 Alexandre Oliva <aoliva@redhat.com>
850
851 * rtl.def (ASM_INPUT): Add location.
852 * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
853 (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
854 (decode_asm_operands): Add loc operand.
855 (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
856 * stmt.c (expand_asm): Rename to...
857 (expand_asm_loc): ... this. Add locus argument. Pass it on to
858 gen_rtx_ASM_INPUT_loc.
859 (expand_asm_expr): Adjust.
860 * recog.c (decode_asm_operands): Add loc operand.
861 (check_asm_operands, extract_insn): Adjust.
862 * reload1.c (maybe_fix_stack_asms): Likewise.
863 * final.c (asm_insn_count): Likewise.
864 (final_scan_insn): Output # line before and after asm.
865
866 2007-03-09 Daniel Berlin <dberlin@dberlin.org>
867
868 * tree-ssa-structalias.c (variable_info): Remove
869 finished_solution.
870 (new_var_info): Ditto.
871 (shared_bitmap_info_t): New structure.
872 (shared_bitmap_table): New variable.
873 (shared_bitmap_hash): New function.
874 (shared_bitmap_eq): Ditto
875 (shared_bitmap_lookup): Ditto.
876 (shared_bitmap_add): Ditto.
877 (merge_smts_into): Change to take bitmap directly.
878 (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
879 (init_alias_vars): Init shared bitmap hashtable.
880 (delete_points_to_sets): Delete shared bitmap hashtable.
881 * tree-ssa-operands.c (add_virtual_operand): Partially revert the
882 is_aliased removal as a change that was still necessary was
883 deleted.
884
885 2007-03-09 Uros Bizjak <ubizjak@gmail.com>
886
887 * config/i386/i386.h (override_options): Conditionally disable
888 x86_sahf for 64bit targets only.
889
890 2007-03-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
891
892 PR C/31072
893 * c-decl.c (merge_decls): Don't call make_var_volatile.
894 * varasm.c (make_var_volatile): Remove.
895 * output.h (make_var_volatile): Remove.
896
897 2007-03-08 Zdenek Dvorak <dvorakz@suse.cz>
898
899 PR tree-optimization/31085
900 * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
901
902 2007-03-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
903
904 * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
905 llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
906 ATTR_CONST_NOTHROW_LIST.
907
908 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
909 FIX_TRUNC_EXPR.
910
911 2007-03-08 Diego Novillo <dnovillo@redhat.com>
912
913 * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
914
915 2007-03-08 Geoffrey Keating <geoffk@apple.com>
916
917 PR 31013
918 * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
919 is declared.
920 * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
921 passed, use shared libgcc.
922
923 2007-03-08 Roger Sayle <roger@eyesopen.com>
924
925 * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
926 instead of calling build2 with a GIMPLE_MODIFY_STMT.
927 (honor_protect_cleanup_actions, lower_try_finally_switch):
928 Likewise.
929 * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
930 ifc_temp_var): Likewise.
931 * tree-inline.c (setup_one_parameter): Likewise.
932 * tree-mudflap.c (mf_decl_cache_locals,
933 mf_build_check_statement_for): Likewise.
934 * tree-nested.c (init_tmp_var, save_tmp_var,
935 finalize_nesting_tree_1): Likewise.
936 * tree-outof-ssa.c (insert_copy_on_edge,
937 insert_backedge_copies): Likewise.
938 * tree-profile.c (tree_gen_edge_profiler,
939 tree_gen_ic_profiler): Likewise.
940 * tree-scalar-evolution.c (scev_const_prop): Likewise.
941 * tree-sra.c (sra_build_assignment): Likewise.
942 * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
943 * tree-ssa-math-opts.c (insert_reciprocals,
944 execute_cse_sincos_1): Likewise.
945 * tree-tailcall.c (adjust_accumulator_values,
946 adjust_return_value): Likewise.
947 * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
948 * tree-vect-transform.c (vect_create_data_ref_ptr,
949 bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
950 vect_create_epilog_for_reduction, vectorizable_reduction,
951 vectorizable_call, vectorizable_conversion,
952 vectorizable_assignment, vectorizable_operation,
953 vectorizable_type_demotion, vect_gen_widened_results_half,
954 vect_permute_store_chain, vectorizable_store,
955 vect_setup_realignment, vect_permute_load_chain,
956 vectorizable_load, vectorizable_condition,
957 vect_create_cond_for_align_checks): Likewise.
958 * tree-vrp.c (build_assert_expr_for): Likewise.
959
960 2007-03-08 Ian Lance Taylor <iant@google.com>
961
962 * tree-vrp.c: Include "intl.h".
963 (usable_range_p): New static function.
964 (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
965 overflowed values, juts set *strict_overflow_p.
966 (compare_values): Only return -2 if one of the operands is not a
967 constant.
968 (compare_ranges): Call usable_range_p.
969 (compare_range_with_value): Likewise.
970 (vrp_evaluate_conditional_warnv): Rename from
971 vrp_evaluate_conditional. Make static. Change all callers.
972 (vrp_evaluate_conditional): New function.
973 (simplify_div_or_mod_using_ranges): Issue warning about reliance
974 on signed overflow.
975 (simplify_abs_using_ranges): Likewise.
976 (simplify_stmt_for_jump_threading): Add within_stmt parameter.
977 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
978 within_stmt parameter.
979 * tree-ssa-propagate.c (fold_predicate_in): Update call to
980 vrp_evaluate_conditional.
981 * tree-ssa-threadedge.c
982 (record_temporary_equivalences_from_stmts_at_dest): Change
983 simplify parameter to take a second tree parameter.
984 (simplify_control_stmt_condition): Likewise.
985 (thread_across_edge): Likewise.
986 * tree-flow.h (vrp_evaluate_conditional): Update declaration.
987 (thread_across_edge): Likewise.
988 * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
989
990 2007-03-08 Uros Bizjak <ubizjak@gmail.com>
991
992 * config/i386/i386.h (TARGET_SAHF): New define.
993 * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
994 Also enable for m_K8, m_AMDFAM10 and m_CORE2.
995 (x86_sahf): New global variable.
996 (override_options): Add PTA_NO_SAHF to pta_flags enum. Recode
997 pta_flags masks using shifts. Add PTA_NO_SAHF to x86_64 and
998 nocona processor flags. Set x86_sahf when PTA_NO_SAHF is not set
999 in processor flags. Do not unconditionally disable TARGET_USE_SAHF
1000 for 64-bit.
1001 (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
1002 (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
1003 when expanding fcomi/sahf based tests.
1004 (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
1005 expanding sahf based alternative. Emit sahf based sequence when
1006 optimizing for code size.
1007 * config/i386/i386.md (x86_sahf_1): Do not disable for
1008 TARGET_64BIT, enable for TARGET_SAHF.
1009
1010 2007-03-08 Martin Michlmayr <tbm@cyrius.com>
1011
1012 * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
1013 spurious whitespace from error message.
1014
1015 2007-03-08 Volker Reichelt <reichelt@netcologne.de>
1016
1017 PR c++/30852
1018 * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
1019
1020 2007-03-08 Alexandre Oliva <aoliva@redhat.com>
1021
1022 * c-decl.c (grokdeclarator): Disable warnings for anonymous
1023 bitfields.
1024 * tree-sra.c (instantiate_element): Propagate disabled warnings
1025 from the element itself to the created variable.
1026
1027 2007-03-07 Richard Henderson <rth@redhat.com>
1028
1029 PR target/30848
1030 * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
1031 silently fix up the stack in the case of a missing register.
1032
1033 2007-03-07 Paul Brook <paul@codesourcery.com>
1034
1035 * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
1036
1037 2007-03-07 Joseph Myers <joseph@codesourcery.com>
1038
1039 * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
1040 New.
1041 (phase1_vrs): Use them.
1042 (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
1043 (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
1044 __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
1045 (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
1046 __gnu_Unwind_Restore_WMMXC if required.
1047 (_Unwind_VRS_Pop): Implement iWMMXt support.
1048 * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
1049 gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
1050 gnu_Unwind_Save_WMMXC): Define.
1051
1052 2007-03-07 Richard Sandiford <richard@codesourcery.com>
1053
1054 * config/vxworks.h (vxworks_override_options): Declare.
1055 (VXWORKS_OVERRIDE_OPTIONS): Use it.
1056 * config/vxworks.c: Include target.h and toplev.h.
1057 (vxworks_override_options): New function.
1058 * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
1059
1060 2007-03-07 Andreas Krebbel <krebbel1@de.ibm.com>
1061
1062 * config/s390/s390.c (override_options): Don't emit an error when
1063 -mstack-size is used without providing -mstack-guard.
1064 (s390_emit_prologue): Choose stack_guard value automatically if not
1065 provided via command line.
1066 * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
1067
1068 2007-03-07 Richard Sandiford <richard@codesourcery.com>
1069
1070 * config/i386/i386.c (output_set_got): Add a GOT initialization
1071 sequence for VxWorks PIC.
1072 (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
1073 around labels as well as symbols. Use gotoff_operand instead
1074 of local_symbolic_operand.
1075 (legitimize_pic_address): Use gotoff_operand instead of
1076 local_symbolic_operand. Use @GOT accesses for labels as
1077 well as symbols.
1078 (ix86_output_addr_diff_elt): Use PC-relative rather than
1079 GP-relative offsets for VxWorks PIC.
1080 (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
1081 no_new_pseudos. Check whether the returned register is op0.
1082 * config/i386/i386.md (tablejump): Use PC-relative rather than
1083 GP-relative offsets for VxWorks PIC.
1084 * config/i386/predicates.md (gotoff_operand): New predicate.
1085
1086 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1087
1088 * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
1089 before defining.
1090 * config/vxworks-dummy.h: New file.
1091 * config/i386/i386.h: Include it.
1092
1093 2007-03-07 Alexandre Oliva <aoliva@redhat.com>
1094
1095 * dwarf2out.c (is_inlined_entry_point): New
1096 (add_high_low_attributes): Emit DW_AT_entry_pc along with
1097 DW_AT_ranges if the first subblock is the entry point.
1098
1099 2007-03-06 David Daney <ddaney@avtrex.com>
1100
1101 * doc/install.texi (mips-*-*): Change recommended binutils
1102 version.
1103
1104 2007-03-06 Anatoly Sokolov <aesok@post.ru>
1105
1106 * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
1107 ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
1108 devices.
1109 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1110 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1111
1112 2007-03-06 Jan Hubicka <jh@suse.cz>
1113
1114 * errors.h (warning, error, fatal, internal_error): Mark as cold.
1115 * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
1116 are hot.
1117 (probably_cold_bb_p): Cold functions are cold.
1118 (probably_never_executed_bb_p): Cold functions are cold.
1119 (tree_bb_level_predictions): Predict calls to cold functions as not
1120 taken.
1121 (compute_function_frequency): Check hot/cold attributes.
1122 * function.h (function_frequency): Update comments.
1123 * predict.def (PRED_COLD_FUNCTION): Predict cold function.
1124 * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
1125 (c_common_att): Add cold and hot.
1126
1127 * doc/extend.texi (hot,cold attributes): Document.
1128
1129 2007-03-06 Andrew Haley <aph@redhat.com>
1130
1131 * function.c (expand_function_end): Move blockage to just after we
1132 emit the label for the naked return from the function.
1133
1134 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1135
1136 * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
1137 before redefining.
1138
1139 2007-03-06 Jan Hubicka <jh@suse.cz>
1140
1141 * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
1142 loaded for constant large models. Non-large 64bit PIC can do.
1143 * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
1144 * cmodel.h: Add LARGE PIC.
1145 * i386.md (UNSPEC_PLTOFF): New.
1146 (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
1147 needed.
1148 (*call_1_rex64): Disable for large models.
1149 (*call_1_rex64_large): New.
1150 (*call_value_1_rex64): Disable for large models.
1151 (*call_value_1_rex64_large): New.
1152 (set_rip_rex4): New.
1153 (set_got_offset_rex64): New.
1154 * predicates.md (constant_call_address_operand): For large model
1155 constant calls are not possible.
1156 * i386-protos.h (construct_plt_address): Declare.
1157 * i386.c (override_options): Accept large models.
1158 (ix86_expand_prologue): Expand large PIC GOT pointer load.
1159 (legitimate_constant_p): Add new UNSPECs.
1160 (legitimate_pic_operand_p): Likewise.
1161 (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
1162 (legitimize_pic_address): Do easy RIP relative way for TLS only for
1163 non-large model.
1164 (output_pic_addr_const): Add PLTOFF.
1165 (ix86_output_addr_diff_elt): Output 64bit tables when needed.
1166 (ix86_expand_move): Legitimize pic address when in PIC mode.
1167 (construct_plt_address): New function.
1168 (ix86_expand_call): Offload the address to register and use GOT pointer
1169 for large model.
1170 * invoke.texi (mcmodel=large): Update documentation.
1171
1172 2007-03-06 Richard Henderson <rth@redhat.com>
1173
1174 * config/i386/i386.c (x86_use_leave, x86_push_memory,
1175 x86_zero_extend_with_and, x86_movx, x86_double_with_add,
1176 x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
1177 x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
1178 x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
1179 x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
1180 x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
1181 x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
1182 x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
1183 x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
1184 x86_partial_reg_dependency, x86_memory_mismatch_stall,
1185 x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
1186 x86_sse_partial_reg_dependency, x86_sse_split_regs,
1187 x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
1188 x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
1189 x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
1190 x86_schedule, x86_use_bt, x86_pad_returns,
1191 x86_use_xchgb): Merge into ...
1192 (ix86_tune_features): ... here. New array.
1193 (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1194 x86_bswap): Merge into ...
1195 (ix86_arch_features): ... here. New array.
1196 (x86_3dnow_a): Remove.
1197 (x86_accumulate_outgoing_args): Make static.
1198 (x86_arch_always_fancy_math_387): Make static.
1199 (ix86_tune_mask, ix86_arch_mask): Move ...
1200 (override_options): ... to local variables here. Apply the
1201 appropriate mask to each element of ix86_arch_features and
1202 ix86_tune_features. Adjust TARGET_CMOVE and TARGET_USE_SAHF
1203 as were done in the old macros.
1204 (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
1205 * config/i386/i386.h (x86_use_leave, x86_push_memory,
1206 x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
1207 x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
1208 x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
1209 x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
1210 x86_read_modify_write, x86_read_modify, x86_split_long_moves,
1211 x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
1212 x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
1213 x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
1214 x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
1215 x86_partial_reg_dependency, x86_memory_mismatch_stall,
1216 x86_accumulate_outgoing_args, x86_prologue_using_move,
1217 x86_epilogue_using_move, x86_decompose_lea,
1218 x86_arch_always_fancy_math_387, x86_shift1,
1219 x86_sse_partial_reg_dependency, x86_sse_split_regs,
1220 x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
1221 x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
1222 x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1223 x86_use_incdec, x86_pad_returns, x86_bswap,
1224 x86_partial_flag_reg_stall): Remove.
1225 (enum ix86_tune_indices): New.
1226 (ix86_tune_features): New.
1227 (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
1228 TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
1229 TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
1230 TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
1231 TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
1232 TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
1233 TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
1234 TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
1235 TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
1236 TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
1237 TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
1238 TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
1239 TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
1240 TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
1241 TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
1242 TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
1243 TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
1244 TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
1245 TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
1246 TARGET_EXT_80387_CONSTANTS): Use it.
1247 (enum ix86_arch_indices): New.
1248 (ix86_arch_features): New.
1249 (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
1250 TARGET_BSWAP): Use it.
1251 (ix86_tune_mask, ix86_arch_mask): Remove.
1252
1253 2007-03-06 Joseph Myers <joseph@codesourcery.com>
1254
1255 PR bootstrap/31020
1256 * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
1257 Define using $${sysroot_headers_suffix}.
1258 * configure: Regenerate.
1259 * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
1260 multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
1261 defined.
1262 * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
1263 * gcc.c (print_sysroot_headers_suffix): New.
1264 (option_map): Include --print-sysroot-headers-suffix.
1265 (display_help): Mention -print-sysroot-headers-suffix.
1266 (process_command): Handle -print-sysroot-headers-suffix.
1267 (do_spec_1): Append multilib directory to include-fixed path if
1268 sysroot suffixes in use.
1269 (main): Handle -print-sysroot-headers-suffix.
1270 * Makefile.in (start.encap): Don't depend on xlimits.h
1271 (xlimits.h): Remove.
1272 (stmp-int-hdrs): Don't depend on xlimits.h. Inline generation of
1273 limits.h for each multilib in fixinc_list.
1274 (fixinc_list, s-fixinc_list): New.
1275 (stmp-fixinc): Depend on fixinc_list. If not copying headers,
1276 generate them for each multilib in fixinc_list.
1277 (stmp-fixproto): Use include-fixed. Run fixproto for each
1278 multilib in fixinc_list.
1279 (mostlyclean): Don't remove xlimits.h.
1280 (clean): Remove include-fixed.
1281 (real-install-headers-tar, real-install-headers-cpio,
1282 real-install-headers-cp): Don't copy include, only include-fixed.
1283 (install-mkheaders): Depend on fixinc_list. Don't depend on
1284 xlimits.h. Save limits.h files for each multilib in fixinc_list.
1285 Always save mkinstalldirs. Preserve ${sysroot_headers_suffix} in
1286 SYSTEM_HEADER_DIR setting in mkheaders.conf.
1287
1288 2007-03-06 Jan Hubicka <jh@suse.cz>
1289
1290 * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
1291 NANs easilly.
1292
1293 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1294
1295 * configure.ac: Allow tm_file to contain build-directory files.
1296 * configure: Regenerate.
1297 * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
1298 * config/m68k/t-uclinux (sysroot-suffix.h): New target.
1299 * config/m68k/print-sysroot-suffix.sh: New file.
1300
1301 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1302
1303 * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
1304 of pic_offset_table_rtx if reload_completed.
1305 (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
1306 PIC_OFFSET_TABLE_REGNUM.
1307 * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
1308 return true.
1309 (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
1310 (m68k_output_mi_thunk): Rewrite to use RTL. Honor vcall_offset.
1311
1312 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1313
1314 * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1315 functions that call eh_return.
1316
1317 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1318
1319 * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1320 functions that need a constant pool.
1321
1322 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1323
1324 PR target/28181
1325 * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
1326 (m68k_preferred_reload_class): Likewise.
1327 * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
1328 (SECONDARY_RELOAD_CLASS): Define.
1329 (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
1330 (LIMIT_RELOAD_CLASS): Delete.
1331 * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
1332 registers from storing bytes.
1333 (m68k_secondary_reload_class): New function.
1334 (m68k_preferred_reload_class): Likewise.
1335
1336 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1337
1338 * config/m68k/m68k.c (m68k_save_reg): Remove special case for
1339 leaf functions.
1340 (m68k_expand_prologue): Likewise.
1341
1342 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1343
1344 * config/m68k/m68k-protos.h (output_sibcall): Declare.
1345 (mips_expand_epilogue): Add a bool parameter.
1346 (m68k_legitimize_sibcall_address): Declare.
1347 * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1348 (m68k_expand_epilogue): Add a parameter to select between sibling
1349 and normal epilogues. Only generate a return for the latter.
1350 (m68k_ok_for_sibcall_p): New function.
1351 (m68k_legitimize_sibcall_address, output_sibcall): New functions.
1352 * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
1353 (sibcall_value, *sibcall_value): Likewise.
1354 (*call, *call_value): Require !SIBLING_CALL_P.
1355 (epilogue): Update call to m68k_expand_epilogue.
1356 (sibcall_epilogue): New pattern.
1357 * config/m68k/predicates.md (const_call_operand): Say that this
1358 predicate applies to sibling calls too.
1359 (sibcall_operand): New predicate.
1360
1361 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1362
1363 * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
1364 alternatives as movsi_cf.
1365 (movsf_cf_hard): Add commentary.
1366
1367 2007-03-06 Kazu Hirata <kazu@codesourcery.com>
1368 Richard Sandiford <richard@codesourcery.com>
1369
1370 * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
1371 (m68k_movem_pattern_p, m68k_output_movem): Likewise.
1372 (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
1373 * config/m68k/m68k.h (EPILOGUE_USES): Define. Treat all registers
1374 as being live on exit from an interrupt function.
1375 (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
1376 * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
1377 (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
1378 (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
1379 (m68k_interrupt_function_p): Globalize.
1380 (m68k_compute_frame_layout): Remove reverse mask code.
1381 (m68k_emit_movem, m68k_set_frame_related): New functions.
1382 (m68k_output_function_prologue): Delete in favor of...
1383 (m68k_expand_prologue): ...this new function.
1384 (m68k_output_function_epilogue): Delete in favor of...
1385 (m68k_expand_epilogue): ...this new function.
1386 (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
1387 functions.
1388 (print_operand): Handle %?.
1389 * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
1390 (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
1391 (prologue, epilogue): New patterns.
1392 (return): Turn into a define_expand.
1393 (*return): New pattern, derived from old "return" pattern. Use rte
1394 rather than rts for interrupt functions. Only use rtd if the pop
1395 count is nonzero.
1396 (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
1397 (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
1398 (link, *link, unlink, *unlink, load_got): Likewise.
1399
1400 2007-03-06 Richard Sandiford <richard@codesourcery.com>
1401
1402 PR target/23482
1403 PR target/17114
1404 * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
1405 (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
1406 (m68k_matches_q_p, m68k_matches_u_p): Likewise.
1407 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
1408 and m68k_matches_u_p.
1409 (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
1410 (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
1411 (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
1412 (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
1413 (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
1414 (REG_STRICT_P): New macro.
1415 (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
1416 PCREL_GENERAL_OPERAND_OK.
1417 (REG_OK_FOR_BASE_P): Merge definitions. Use REG_STRICT_P and
1418 m68k_legitimate_base_reg_p.
1419 (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
1420 (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
1421 (PIC_CASE_VECTOR_ADDRESS): Update comment.
1422 * config/m68k/m68k.c (m68k_address): New structure.
1423 (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
1424 (m68k_decompose_index, m68k_legitimate_constant_address_p)
1425 (m68k_jump_table_ref_p, m68k_decompose_address)
1426 (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
1427 (m68k_matches_u_p): New functions.
1428 (print_operand_address): Rewrite to use m68k_decompose_index.
1429
1430 2007-03-05 David Taylor <dtaylor@emc.com>
1431
1432 * gcc.c: Correct copyright date in --version output.
1433
1434 2007-03-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1435
1436 * pa.md: In unamed move patterns, disparge copies between general
1437 and floating point registers using '?' modifier. Don't include 'f'
1438 constraint for register preferences in DImode, SImode, HImode and
1439 QImode patterns. Likewise for 'r' in DFmode and SFmode patterns.
1440 Remove constraints for copies between general and floating registers
1441 in soft-float DFmode pattern.
1442 (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
1443 floating register.
1444 (movsf): Likewise.
1445
1446 2007-03-05 Mike Stump <mrs@apple.com>
1447
1448 * c-common.c (targetcm): Add.
1449 * c-opts.c (c_common_handle_option): Handle language specific
1450 target options.
1451 * opts.c (handle_option): Verify language for target options, if
1452 any are given.
1453 * opth-gen.awk: Add CL_LANG_ALL.
1454 * target-def.h (TARGET_HANDLE_C_OPTION): Add.
1455 (TARGETCM_INITIALIZER): Add.
1456 * target.h (struct gcc_targetcm): Add.
1457 (targetcm): Add.
1458 * targhooks.c (default_handle_c_option): Add.
1459 * targhooks.h (default_handle_c_option): Add.
1460 * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
1461
1462 * config/darwin.opt (iframework): Add.
1463 * config/darwin.h (TARGET_HAS_TARGETCM): Add.
1464 * config/darwin-c.c (handle_c_option): Add.
1465 (TARGET_HANDLE_C_OPTION): Add.
1466 (targetcm): Add.
1467 * doc/invoke.texi (Darwin Options): Add -iframework.
1468
1469 2007-03-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1470
1471 * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
1472 conversion.
1473
1474 2007-03-05 Ian Lance Taylor <iant@google.com>
1475
1476 * c.opt (fgnu89-inline): New option.
1477 * c-opts.c (c_common_post_options): Set default value for
1478 flag_gnu89_inline.
1479 * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
1480 (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
1481 inline functions.
1482 (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
1483 (grokdeclarator, start_function): Likewise.
1484 * c-cppbuiltin.c (c_cpp_builtins): Define either
1485 __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
1486 * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
1487 (C Dialect Options): Document -fgnu89-inline.
1488 * doc/extend.texi (Function Attributes): Explain what the
1489 gnu_inline attribute does.
1490 * doc/cpp.texi (Common Predefined Macros): Document
1491 __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1492
1493 2007-03-05 Ian Lance Taylor <iant@google.com>
1494
1495 PR tree-optimization/31034
1496 * tree-vrp.c (extract_range_from_assert): Don't try to handle a
1497 half-range if the other side is an overflow infinity.
1498
1499 2007-03-05 Bernd Schmidt <bernd.schmidt@analog.com>
1500
1501 * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
1502 (bfin*-linux-uclibc*): New configuration.
1503 * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
1504 defining.
1505 * config/bfin/linux.h: New file.
1506 * config/bfin/libgcc-bfin.ver: New file.
1507 * config/bfin/t-bfin-uclinux: New file.
1508 * config/bfin/t-bfin-linux: New file.
1509 * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
1510 (TARGET_OS_CPP_BUILTINS): New macro.
1511
1512 2007-03-05 Richard Guenther <rguenther@suse.de>
1513
1514 * fold-const.c (fold_binary): Remove duplicate folding
1515 of comparison of non-null ADDR_EXPR against null.
1516
1517 2007-03-05 Richard Guenther <rguenther@suse.de>
1518 Dorit Nuzman <dorit@il.ibm.com>
1519
1520 PR tree-optimization/26420
1521 * tree-vectorizer.c (vectorize_loops): Bail out early if there
1522 are no loops in the function. Only print the number of
1523 vectorized loops if it is greater than zero or we are supposed
1524 to print information about unvectorized loops.
1525
1526 2007-03-05 Revital Eres <eres@il.ibm.com>
1527
1528 * gcc.dg/var-expand1.c: New test.
1529 * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
1530 when an accumulator is expanded.
1531
1532 2007-03-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1533
1534 PR other/30465
1535 * c-common.c (convert_and_check): Don't give warnings for
1536 conversion if 'expr' already overflowed.
1537
1538 2007-03-04 Roger Sayle <roger@eyesopen.com>
1539
1540 PR middle-end/30744
1541 * fold-const.c (fold_comparison): Enforce type consistency when
1542 transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
1543
1544 2007-03-04 Zdenek Dvorak <dvorakz@suse.cz>
1545
1546 * tree-ssa-address.c (create_mem_ref): Do not put an expression
1547 containing a cast to the base of TARGET_MEM_REF.
1548
1549 2007-03-04 Martin Michlmayr <tbm@cyrius.com>
1550
1551 * tree.c (tree_contains_struct_check_failed): Remove spurious
1552 whitespace from error message.
1553
1554 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
1555
1556 PR target/30406
1557 * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
1558 instead of precision.
1559
1560 2007-03-04 Roman Zippel <zippel@linux-m68k.org>
1561 Nathan Sidwell <nathan@codesourcery.com>
1562
1563 * emit-rtl.c (find_auto_inc): New.
1564 (try_split): recreate REG_INC notes,
1565 Use regular for loops rather than whiles.
1566
1567 2007-03-03 Andreas Schwab <schwab@suse.de>
1568
1569 * configure.ac (HAVE_AS_REL16): Move test back to correct place.
1570 * configure: Regenerate.
1571
1572 2007-03-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1573
1574 * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
1575 flag_rounding_math, not flag_unsafe_math_optimizations.
1576
1577 * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
1578 fold_build2.
1579 * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
1580 alpha_fold_vector_minmax): Likewise.
1581 * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1582 * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
1583
1584 2007-03-02 Eric Botcazou <ebotcazou@adacore.com>
1585
1586 * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
1587 (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
1588 if the lhs has side-effects.
1589 <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
1590
1591 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
1592
1593 * config/i386/i386.h (TUNEMASK): Remove define.
1594 (ARCHMASK): Remove define.
1595 (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
1596 Use ix86_arch_mask variable instead of ARCHMASK.
1597 * config/i386/i386.c (override_options): Ditto.
1598 (standard_80387_constant_p): Ditto.
1599
1600 2007-03-02 Ian Lance Taylor <iant@google.com>
1601
1602 Used signed infinities in VRP.
1603 * tree-vrp.c (uses_overflow_infinity): New static function.
1604 (supports_overflow_infinity): New static function.
1605 (make_overflow_infinity): New static function.
1606 (negative_overflow_infinity): New static function.
1607 (positive_overflow_infinity): New static function.
1608 (is_negative_overflow_infinity): New static function.
1609 (is_positive_overflow_infinity): New static function.
1610 (is_overflow_infinity): New static function.
1611 (overflow_infinity_range_p): New static function.
1612 (compare_values_warnv): New function split out of compare_values.
1613 (compare_value): Call it.
1614 (set_value_range_to_nonnegative): Add overflow_infinity
1615 parameter. Change caller.
1616 (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
1617 Change callers.
1618 (vrp_expr_computes_nonzero): Likewise.
1619 (compare_ranges, compare_range_with_value): Likewise.
1620 (compare_name_with_value, compare_names): Likewise.
1621 (vrp_evaluate_conditional): Likewise.
1622 (set_value_range): Handle infinity
1623 (vrp_operand_equal_p, operand_less_p): Likewise.
1624 (extract_range_from_assert): Likewise.
1625 (vrp_int_const_binop): Likewise.
1626 (extract_range_from_binary_expr): Likewise.
1627 (extract_range_from_unary_expr): Likewise.
1628 (extract_range_from_comparison): Likewise.
1629 (extract_range_from_expr): Likewise.
1630 (dump_value_range): Likewise.
1631 (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
1632 (test_for_singularity): Likewise.
1633 (vrp_int_const_binop): Remove inline qualifier.
1634 (adjust_range_with_scev): Add comment.
1635 * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1636
1637 2007-03-02 Diego Novillo <dnovillo@redhat.com>
1638
1639 * tree-ssa-structalias.c (could_have_pointers): Tidy.
1640 (get_constraint_for): Likewise.
1641 (do_structure_copy): Likewise.
1642 (find_func_aliases): Fix references to MODIFY_EXPR.
1643 (intra_create_variable_infos): Tidy.
1644 * tree-ssa-operands.c (add_virtual_operand): Add argument
1645 IS_CALL_SITE.
1646 When adding members of alias sets, if IS_CALL_SITE is true and
1647 the symbol is not call-clobbered, skip it.
1648 Adjust all callers.
1649
1650 2007-03-02 Eric Botcazou <ebotcazou@adacore.com>
1651
1652 * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
1653 entry by means of emit_insn_at_entry.
1654
1655 2007-03-02 Richard Henderson <rth@redhat.com>
1656
1657 * expr.h (promoted_input_arg): Remove decl.
1658 * function.c (promoted_input_arg): Merge into ...
1659 * combine.c (setup_incoming_promotions): ... only caller.
1660 Rearrange to avoid double loop.
1661
1662 2007-03-02 Ben Elliston <bje@au.ibm.com>
1663 Peter Bergner <bergner@vnet.ibm.com>
1664 Janis Johnson <janis187@us.ibm.com>
1665
1666 * config/rs6000/dfp.md: New file.
1667 * config/rs6000/rs6000.md: Include dfp.md.
1668 (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
1669 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
1670 and TDmode decimal float modes in FP registers.
1671 (num_insns_constant): Likewise.
1672 (rs6000_legitimate_offset_address_p): Likewise.
1673 (rs6000_legitimize_address): Likewise.
1674 (rs6000_legitimize_reload_address): Likewise.
1675 (rs6000_legitimate_address): Likewise.
1676 (rs6000_emit_move): Likewise.
1677 (function_arg_boundary): Likewise.
1678 (function_arg_advance): Likewise.
1679 (rs6000_darwin64_record_arg_recurse): Likewise.
1680 (function_arg): Likewise.
1681 (rs6000_gimplify_va_arg): Likewise.
1682 (rs6000_split_multireg_move): Likewise.
1683 (rs6000_output_function_epilogue): Likewise.
1684 (rs6000_output_function_epilogue): Likewise.
1685 (rs6000_register_move_cost): Likewise.
1686 (rs6000_function_value): Likewise.
1687 (rs6000_libcall_value): Likewise.
1688
1689 2007-03-02 Richard Sandiford <richard@codesourcery.com>
1690
1691 * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
1692
1693 2007-03-02 Richard Sandiford <richard@codesourcery.com>
1694
1695 * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
1696 Use $MULTIDIR to choose between the kernel and RTP headers,
1697 and use $WIND_BASE and $WIND_USR to locate them.
1698
1699 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
1700
1701 * config/i386/i386.c (override_options): Put initialization of
1702 ix86_tune_mask and ix86_arch_mask to the correct place.
1703
1704 2007-03-02 Uros Bizjak <ubizjak@gmail.com>
1705 Michael Meissner <michael.meissner@amd.com>
1706
1707 PR target/31019
1708 * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
1709 (ARCHMASK): Define.
1710 (TARGET_CMOVE): Use ARCHMASK.
1711 (TARGET_CMPXCHG): Ditto.
1712 (TARGET_CMPXCHG8B): Ditto.
1713 (TARGET_XADD): Ditto.
1714 (TARGET_BSWAP): Ditto.
1715 * config/i386/i386.c (ix86_tune_mask): New global variable.
1716 (ix86_arch_mask): Ditto.
1717 (override_options): Initialize ix86_tune_mask and
1718 ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
1719 target_flags.
1720
1721 2007-03-02 Ben Elliston <bje@au.ibm.com>
1722
1723 PR 30992
1724 * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
1725
1726 2007-03-02 Joseph Myers <joseph@codesourcery.com>
1727
1728 * target.h (init_dwarf_reg_sizes_extra): New target hook.
1729 * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
1730 * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
1731 * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
1732 hook.
1733 * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
1734 rs6000_init_dwarf_reg_sizes_extra): New.
1735 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
1736 SPE register high parts.
1737
1738 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
1739
1740 * Makefile.in: Add install-pdf target as
1741 copied from automake v1.10 rules.
1742 * configure.ac: Add install-pdf to target list.
1743 * configure: Regenerate.
1744
1745 2007-03-01 Paul Brook <paul@codesourcery.com>
1746
1747 * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
1748 modes to LDRD for DImode.
1749 (output_move_double): Fixup out of range ldrd/strd.
1750 (vfp_secondary_reload_class): Rename...
1751 (coproc_secondary_reload_class): ... to this. Add wb argument.
1752 * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
1753 coproc_secondary_reload_class for CLASS_IWMMXT.
1754 (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
1755 * arm-protos.h (coproc_secondary_reload_class): Update prototype.
1756
1757 2007-03-01 Zdenek Dvorak <dvorakz@suse.cz>
1758
1759 * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the unroll
1760 factor by the estimated number of iterations.
1761 (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
1762 prefetch latency.
1763
1764 * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
1765 decode_caches_intel, detect_caches_intel): New functions.
1766 (host_detect_local_cpu): Use detect_caches_amd and
1767 detect_caches_intel.
1768
1769 2007-03-01 Richard Henderson <rth@redhat.com>
1770
1771 * expr.c (emit_move_complex_push): Export.
1772 (emit_move_complex_parts): Split out from ...
1773 (emit_move_complex): ... here.
1774 * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
1775 * config/i386/i386.md (movcdi): New.
1776
1777 2007-03-01 Uros Bizjak <ubizjak@gmail.com>
1778
1779 * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
1780 size of mode1 to check for tieable modes in MMX case.
1781
1782 2007-03-01 Richard Sandiford <richard@codesourcery.com>
1783
1784 * Makefile.in (rtlanal.o): Depend on tree.h.
1785 * rtl.h (offset_within_section_p, split_const): Declare.
1786 * rtlanal.c: Include tree.h.
1787 (offset_within_block_p): New function, taken from
1788 mips_offset_within_object_p.
1789 (split_const): New function, taken from mips_split_const.
1790 * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
1791 Declare.
1792 * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
1793 (CONSTANT_ADDRESS_P): Only accept legitimate constants.
1794 (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
1795 * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1796 (m68k_illegitimate_symbolic_constant_p): New function.
1797 * config/m68k/m68k.md (movsi): Remove misleading predicates.
1798 If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
1799 symbolic constant that might be outside the symbol's section,
1800 move the symbol first and then add the offset.
1801 * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
1802 Override.
1803 * config/mips/mips.c (mips_split_const): Delete.
1804 (mips_offset_within_object_p): Delete.
1805 (mips_symbolic_constant_p): Use offset_within_section_p and
1806 split_const instead of mips_offset_within_object_p and
1807 mips_split_const.
1808 (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
1809 (mips_legitimize_const_move, print_operand_reloc)
1810 (mips_dangerous_for_la25_p): Use split_const instead of
1811 mips_split_const.
1812
1813 2007-02-28 Eric Christopher <echristo@apple.com>
1814
1815 * Makefile.in (install-include-dir): Don't rm -rf include.
1816
1817 2007-02-28 Richard Guenther <rguenther@suse.de>
1818
1819 PR middle-end/30364
1820 * fold-const.c (fold_binary): Do not associate expressions
1821 with more than one variable for integer types that do not wrap.
1822
1823 2007-02-28 Sandra Loosemore <sandra@codesourcery.com>
1824
1825 * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
1826 Delete, and replace with...
1827 (fold_builtin_call_array): This. Update callers to use it.
1828 * fold-const.c (fold_build_call_list): Delete, and replace with...
1829 (fold_build_call_array): This.
1830 (fold_build_call_list_initializer): Delete, and replace with...
1831 (fold_build_call_array_initializer): This.
1832 * tree.h: Update declarations to reflect above changes.
1833
1834 * c-typeck.c (build_function_call): Store converted arguments
1835 in a stack-allocated array instead of building a list.
1836 (convert_arguments): Store arguments in the array passed in as an
1837 argument, and return the actual number of arguments.
1838 * c-format.c: (check_function_format): Pass arguments in an
1839 array instead of a list.
1840 * c-common.c (check_function_nonnull): Likewise.
1841 (check_function_sentinel): Likewise.
1842 (check_function_arguments): Likewise.
1843 * c-common.h: Update declarations to reflect above changes.
1844
1845 2007-02-28 Jan Hubicka <jh@suse.cz>
1846
1847 * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
1848 PRED_NEGATIVE_RETURN): Update outcomes.
1849
1850 2007-02-28 Bernd Schmidt <bernd.schmidt@analog.com>
1851
1852 * calls.c (emit_library_call_value_1): Handle partial registers
1853 correctly when building up CALL_INSN_FUNCTION_USAGE.
1854
1855 2007-02-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1856
1857 * pa/predicates.md (move_src_operand): Allow zero for mode.
1858 * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
1859 move pattern.
1860
1861 2007-02-27 Uros Bizjak <ubizjak@gmail.com>
1862
1863 PR target/30970
1864 * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
1865 *movv2df_internal): Enable pattern only for valid operand
1866 combinations.
1867 * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
1868 tie only 128bit modes. For MMX registers, tie only 64bit modes.
1869
1870 2007-02-27 Mike Stump <mrs@apple.com>
1871
1872 * config/darwin-crt3.c: Avoid compilation when compiling for a
1873 kext multilib.
1874
1875 2007-02-27 Joseph Myers <joseph@codesourcery.com>
1876
1877 * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
1878 FIXED_INCLUDE_DIR.
1879 (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
1880 for fixed headers and limits.h.
1881 (install-include-dir, install-headers-tar, install-headers-cpio,
1882 install-headers-cp, real-install-headers-tar,
1883 real-install-headers-cpio, real-install-headers-cp): Handle
1884 include-fixed as well as include.
1885 (install-mkheaders): Don't install files that go only in include
1886 not include-fixed.
1887 * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
1888 from GCC_INCLUDE_DIR.
1889 * gcc.c (process_command): Remove special -BstageN/ handling.
1890 (do_spec_1): Add include-fixed directories.
1891
1892 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
1893
1894 * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
1895 _smulsi3_highpart.
1896 * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
1897 New functions.
1898 * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
1899 patterns.
1900
1901 2007-02-27 Mark Mitchell <mark@codesourcery.com>
1902
1903 * c-common.c (get_priority): Add check for
1904 SUPPORTS_INIT_PRIORITY.
1905
1906 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
1907
1908 * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
1909
1910 * config/bfin/bfin.c: Include "cfglayout.h".
1911 (MAX_LSETUP_DISTANCE): New macro.
1912 (struct loop_info): New members incoming, incoming_src and
1913 incoming_dest. Delete member predecessor.
1914 (length_for_loop): New function.
1915 (bfin_optimize_loop): Handle more different loop structures.
1916 (bfin_discover_loop): Rework detection of predecessor blocks by
1917 examining incoming edges.
1918 (bfin_discover_loops, bfin_free_loops): New functions, broken out of
1919 bfin_reorg_loops.
1920 (bfin_reorder_loops): New function.
1921 (bfin_reorg_loops): Use these three new functions.
1922
1923 * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
1924 REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
1925 (CONSTRAINT_LEN): Add entry for 'q'.
1926 (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
1927 Add 'q' constraints.
1928 (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
1929 (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
1930
1931 * config/bfin/bfin.md (add_with_carry): New pattern.
1932 (s_or_u, su_optab, su_modifier): New code macros/attrs.
1933 (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
1934 <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
1935 support unsigned multiplies too. Removed incorrect commutativity from
1936 operand 1 constraint where appropriate.
1937 (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
1938 patterns.
1939 (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
1940 <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
1941 New patterns.
1942 (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
1943 usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
1944 usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
1945 usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
1946 usmulhisi_hh_huh): New patterns.
1947
1948 * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
1949 lshifthi3): Fix output template to use half reg for operand 2.
1950
1951 * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
1952 instead of R2.
1953
1954 * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
1955
1956 2007-02-27 Andreas Schwab <schwab@suse.de>
1957
1958 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
1959
1960 2007-02-27 Jan Hubicka <jh@suse.cz>
1961
1962 * predict.c (last_basic_block_p): Remove.
1963 (tree_estimate_probability): Update return heuristic for commonized
1964 return blocks.
1965
1966 2007-02-26 Brooks Moses <brooks.moses@codesourcery.com>
1967
1968 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
1969
1970 2007-02-26 Brooks Moses <brooks.moses@codesourcery.com>
1971
1972 * doc/include/gcc-common.texi (versionsubtitle): New macro.
1973 * doc/cpp.texi: Standardize title page.
1974 * doc/cppinternals.texi: Likewise.
1975 * doc/gcc.texi: Standardize title page, remove version number
1976 from copyright page.
1977 * doc/gccint.texi: Likewise.
1978 * doc/install.texi: Standardize title page, add table of
1979 contents.
1980
1981 2007-02-26 Jan Hubicka <jh@suse.cz>
1982
1983 * predict.def: Set outcomes according to more recent results.
1984 (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
1985 Remove dead predictors.
1986 * predict.c (return_prediction): Fix pasto.
1987
1988 2007-02-27 Bernd Schmidt <bernd.schmidt@analog.com>
1989
1990 * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
1991 change; avoid a memory leak when returning early.
1992
1993 2007-02-26 Mark Mitchell <mark@codesourcery.com>
1994
1995 * c-decl.c (static_ctors): Move to c-common.c.
1996 (static_dtors): Likewise.
1997 (finish_function): Use c_record_cdtor_fn.
1998 (build_cdtor): Move to c-common.c.
1999 (c_write_global_declarations): Use c_build_cdtor_fns.
2000 * c-common.h (static_ctors): Declare.
2001 (static_dtors): Likewise.
2002 (c_record_cdtor_fn): Likewise.
2003 (c_build_cdtor_fns): Likewise.
2004 * c-common.c (static_ctors): New variable.
2005 (static_dtors): Likewise.
2006 (c_record_cdtor_fn): New function.
2007 (build_cdtor): Move from c-decl.c
2008 (c_build_cdtor_fns): New function.
2009
2010 * output.h (assemble_addr_to_section): Declare.
2011 (get_cdtor_priority_section): Likewise.
2012 * varasm.c (assemble_addr_to_section): New function.
2013 (get_cdtor_priority_section): Likewise.
2014 (default_named_section_asm_out_destructor): Use them.
2015 (destor_dtor_section_asm_out_destructor): Likewise.
2016 (default_named_section_asm_out_constructor): Likewise.
2017 (default_ctor_section_asm_out_constructor): Likewise.
2018 * config.gcc (*-*-vxworks*): Include vxworks.o.
2019 * config/t-vxworks (vxworks.o): New target.
2020 * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
2021 (TARGET_ASM_CONSTRUCTOR): Define.
2022 (TARGET_ASM_DESTRUCTOR): Likewise.
2023 (vxworks_asm_out_constructor): Declare.
2024 (vxworks_asm_out_destructor): Likewise.
2025
2026 * c-common.c (get_priority): Check that we have not just an
2027 INTEGER_CST, but an integer constant with integeral type.
2028
2029 2007-02-25 Uros Bizjak <ubizjak@gmail.com>
2030
2031 PR tree-optimization/30938
2032 * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
2033 use &dt[nargs-1] instead of &dt[nargs] in the call to
2034 vect_is_simple_use().
2035
2036 2007-02-25 Ulrich Weigand <uweigand@de.ibm.com>
2037
2038 * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
2039 from register elimination as PRE_MODIFY / POST_MODIFY increments.
2040 Do not attempt to handle MEM inside auto-inc expressions.
2041 * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
2042 of a register modified by an auto-inc expression. However, do handle
2043 elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
2044 (elimination_effects): Prohibit elimination of a register modified
2045 by an auto-inc expression. Disable register elimination rules whose
2046 target register is modified by an auto-inc expression with variable
2047 increment.
2048
2049 2007-02-25 Zdenek Dvorak <dvorakz@suse.cz>
2050
2051 * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
2052 off-by-one error.
2053 (array_at_struct_end_p): New function.
2054 (idx_infer_loop_bounds): Use it.
2055 (estimate_numbers_of_iterations_loop): Export.
2056 * predict.c (predict_loops): Use estimated_loop_iterations_int.
2057 Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
2058 (tree_estimate_probability): Call record_loop_exits.
2059 * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
2060 (estimated_loop_iterations, estimated_loop_iterations_int,
2061 estimated_loop_iterations_tree): New functions.
2062 (analyze_siv_subscript_cst_affine,
2063 compute_overlap_steps_for_affine_1_2,
2064 analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
2065 (analyze_miv_subscript): Use estimated_loop_iterations_tree.
2066 * predict.def (PRED_LOOP_ITERATIONS): Update comment.
2067 (PRED_LOOP_ITERATIONS_GUESSED): New.
2068 * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
2069 * cfgloop.h (estimate_numbers_of_iterations_loop,
2070 estimated_loop_iterations_int): Declare.
2071
2072 2007-02-25 Mark Mitchell <mark@codesourcery.com>
2073
2074 * doc/extend.texi: Document optional priority argument to
2075 constructors and destructors.
2076 * tree.c (init_priority_for_decl): Adjust GTY markers.
2077 (init_ttree): Use priority-info hash functions for
2078 init_priority_for_decl.
2079 (tree_map_eq): Rename to ...
2080 (tree_map_base_eq): ... this.
2081 (tree_map_marked_p): Rename to ...
2082 (tree_map_base_marked_p): ... this.
2083 (tree_map_base_hash): New function.
2084 (decl_init_priority_lookup): Rework.
2085 (decl_fini_priority_lookup): New function.
2086 (decl_priority_info): New function.
2087 (decl_init_priority_insert): Use it.
2088 (decl_fini_priority_insert): Likewise.
2089 (decl_restrict_base_lookup): Adjust for refactoring of tree_map
2090 hierarchy.
2091 (decl_restrict_base_insert): Likewise.
2092 (decl_debug_expr_insert): Likewise.
2093 (decl_value_expr_lookup): Likewise.
2094 (decl_value_expr_insert): Likewise.
2095 * tree.h (priority_type): New type.
2096 (decl_init_priority_lookup): Use priority_type.
2097 (decl_fini_priority_lookup): New function.
2098 (decl_init_priority_insert): Use priority_type.
2099 (decl_fini_priority_insert): New function.
2100 (DECL_HAS_INIT_PRIORITY): Tweak comments.
2101 (DECL_INIT_PRIORITY): Likewise.
2102 (SET_DECL_INIT_PRIORITY): Add comment.
2103 (DECL_FINI_PRIORITY): New macro.
2104 (SET_DECL_FINI_PRIORITY): Likewise.
2105 (DEFAULT_INIT_PRIORITY): Document.
2106 (MAX_INIT_PRIORITY): Likewise.
2107 (MAX_RESERVED_INIT_PRIORITY): Likewise.
2108 (tree_map_base): New type.
2109 (tree_map_base_eq): New function.
2110 (tree_map_base_hash): Likewise.
2111 (tree_map_base_marked_p): Likewise.
2112 (tree_map): Inherit from tree_map_base.
2113 (tree_map_eq): Make it a macro.
2114 (tree_map_marked_p): Likewise.
2115 (tree_int_map): Inherit from tree_map_base.
2116 (tree_int_map_eq): Make it a macro.
2117 (tree_int_map_hash): Likewise.
2118 (tree_int_map_marked_p): Likewise.
2119 (tree_priority_map): New type.
2120 (tree_priority_map_eq): New macro.
2121 (tree_priority_map_hash): Likewise.
2122 (tree_priority_map_marked_p): Likewise.
2123 * varasm.c (emults_decl): Adjust for refactoring of tree_map
2124 hierarchy.
2125 (emutls_common_1): Likewise.
2126 * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
2127 * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
2128 of tree_map hierarchy.
2129 * tree-cfg.c (move_stmt_r): Likewise.
2130 (new_label_mapper): Likewise.
2131 * c-tree.h (c_expand_body): Move to ...
2132 * c-common.h (c_expand_body): ... here.
2133 * c-decl.c (c_expand_body): Move to ...
2134 * c-common.c (c_expand_body): ... here.
2135 (c_common_attribute_table): Allow 1 argument for the constructor
2136 and destructor attributes.
2137 (get_priority): New function.
2138 (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
2139 (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
2140
2141 2007-02-24 Jan Hubicka <jh@suse.cz>
2142
2143 PR middle-end/30509
2144 * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
2145
2146 2007-02-24 Uros Bizjak <ubizjak@gmail.com>
2147 Jan Hubicka <jh@suse.cz>
2148
2149 PR target/30778
2150 * i386.c (counter_mode): New function.
2151 (expand_set_or_movmem_via_loop): Use it.
2152 (expand_movmem_epilogue): Likewise; fix pasto.
2153 (ix86_expand_movmem): Do emit guard even for constant counts.
2154 (ix86_expand_setmem): Likewise.
2155
2156 2007-02-25 Nick Clifton <nickc@redhat.com>
2157
2158 * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
2159 (JUMP_TABLES_IN_TEXT_SECTION): Define.
2160
2161 2007-02-24 Uros Bizjak <ubizjak@gmail.com>
2162
2163 PR target/30770
2164 * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
2165 count argument with 0x10, not with 0x16.
2166 (expand_setmem_epilogue): Ditto.
2167
2168 2007-02-24 Mike Stump <mrs@apple.com>
2169
2170 * config/i386/i386.c (output_pic_addr_const): Stubify optimized
2171 symbols.
2172
2173 2007-02-24 Richard Guenther <rguenther@suse.de>
2174
2175 PR middle-end/30951
2176 * fold-const.c (fold_binary): Fold x +- CST op x for
2177 EQ_EXPR and NE_EXPR.
2178
2179 2007-02-24 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2180
2181 * pa.md (muldi3): Force subregs to registers in 64-bit expander.
2182
2183 2007-02-24 Jan Hubicka <jh@suse.cz>
2184
2185 * cgraphunit.c (decide_is_function_needed): Honor
2186 -fkeep-inline-functions.
2187
2188 2007-02-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2189
2190 * builtins.c (fold_builtin_modf): New.
2191 (fold_builtin_2): Use it.
2192
2193 2007-02-24 Bernd Schmidt <bernd.schmidt@analog.com>
2194
2195 * loop-iv.c (implies_p): Detect additional cases where A implies B.
2196 (determine_max_iter): Take additional LOOP arg; all callers changed.
2197 Lose broken logic dealing with PLUS. Try to limit the upper bound by
2198 one using simplifications.
2199 (simplify_using_initial_values): Return if the expression becomes
2200 invalid due to altered regs.
2201
2202 2007-02-23 DJ Delorie <dj@redhat.com>
2203
2204 * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
2205
2206 2007-02-23 Mike Stump <mrs@apple.com>
2207
2208 * tlink.c (scan_linker_output): Parse linker messages from
2209 darwin9's linker better.
2210
2211 2007-02-23 Steve Ellcey <sje@cup.hp.com>
2212
2213 PR debug/29614
2214 * varpool.c (varpool_assemble_pending_decls): Set
2215 varpool_last_needed_node to null.
2216
2217 2007-02-23 DJ Delorie <dj@redhat.com>
2218
2219 * config/i386/i386.c (ix86_data_alignment): Don't specify an
2220 alignment bigger than the object file can handle.
2221
2222 2007-02-23 Uros Bizjak <ubizjak@gmail.com>
2223
2224 PR target/30825
2225 * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
2226 zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
2227 (*movsf_1): Penalize MMX moves.
2228
2229 2007-02-23 Bernd Schmidt <bernd.schmidt@analog.com>
2230
2231 * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
2232 2^32-1 or more times unless flag_unsafe_loop_optimizations.
2233
2234 * loop-iv.c (determine_max_iter): Moved in front of its sole user.
2235
2236 2007-02-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2237
2238 * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
2239 (fold_builtin_1): Use them.
2240 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2241 BUILT_IN_SIGNIFICAND.
2242
2243 2007-02-23 H.J. Lu <hongjiu.lu@intel.com>
2244
2245 * config/i386/i386.c (bdesc_1arg): Initialize
2246 IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
2247 "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
2248 (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
2249 and IX86_BUILTIN_MOVSLDUP.
2250
2251 2007-02-22 Paolo Bonzini <bonzini@gnu.org>
2252
2253 PR rtl-optimization/30841
2254 * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
2255
2256 2007-02-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2257
2258 * builtins.c (fold_builtin_frexp): New.
2259 (fold_builtin_2): Use it.
2260
2261 2007-02-22 Mark Mitchell <mark@codesourcery.com>
2262
2263 * doc/invoke.texi (Spec Files): Document getenv spec function.
2264
2265 * gcc.c (getenv_spec_function): New function.
2266 (static_spec_functions): Add it.
2267 * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
2268 (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
2269 header files.
2270
2271 2007-02-22 Michael Matz <matz@suse.de
2272
2273 PR c++/29433
2274 * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
2275 (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
2276
2277 2007-02-22 Ian Lance Taylor <iant@google.com>
2278
2279 PR debug/30898
2280 * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
2281 (mem_loc_descriptor): Call it.
2282
2283 2007-02-22 Zdenek Dvorak <dvorakz@suse.cz>
2284 Ira Rosen <irar@il.ibm.com>
2285
2286 * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
2287
2288 2007-02-22 Ira Rosen <irar@il.ibm.com>
2289
2290 PR tree-optimization/30843
2291 * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
2292 stores only after all the group is vectorized.
2293
2294 2007-02-22 Dorit Nuzman <dorit@il.ibm.com>
2295
2296 PR tree-optimization/30858
2297 * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
2298 in the reduction cycle have a single use in the loop.
2299 * tree-vectorizer.h (relevant): Add documentation.
2300
2301 2007-02-20 Mike Stump <mrs@apple.com>
2302
2303 * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
2304 * configure: Regenerate.
2305
2306 2007-02-21 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
2307
2308 Change the defaults of some parameters and options.
2309 * config/spu/spu-protos.h (spu_optimization_options): Declare.
2310 * config/spu/spu.c (spu_optimization_options): Add.
2311 (spu_override_options): Change params in spu_optimization_options.
2312 * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
2313
2314 Register 127 is only 16 byte aligned when used as a frame pointer.
2315 * config/spu/spu-protos.h (spu_init_expanders): Declare.
2316 * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
2317 HARD_FRAME_POINTER_REGNUM.
2318 (spu_legitimate_address): Use regno_aligned_for_reload.
2319 (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
2320 aligned when frame_pointer_needed is true.
2321 (spu_init_expanders): New. Set alignment of HARD_FRAME_POINTER_REGNUM
2322 to 8 bits.
2323 * config/spu/spu.h (INIT_EXPANDERS): Define.
2324
2325 Make sure shift and rotate instructions have valid immediate operands.
2326 * config/spu/predicates.md (spu_shift_operand): Remove.
2327 * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
2328 * config/spu/constraints.md (W, O): Extend range.
2329 * config/spu/spu.md (umask, nmask): Define.
2330 (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
2331 lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
2332 rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
2333 rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
2334 spu_nonmem_operand instead of spu_shift_operands. Use new modifiers.
2335 (lshr<mode>3_reg): Fix rtl description.
2336
2337 Make sure mulhisi immediate operands are valid.
2338 * config/spu/predicates.md (imm_K_operand): Add.
2339 * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
2340
2341 Generate constants using fsmbi and andi.
2342 * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
2343 (print_operand, spu_split_immediate, classify_immediate,
2344 fsmbi_const_p): Handle IC_FSMBI2.
2345
2346 Correctly handle a CONST_VECTOR containing symbols.
2347 * config/spu/spu.c (print_operand): Handle HIGH correctly.
2348 (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
2349 (immediate_load_p): Allow symbols that use 2 instructions to create.
2350 (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
2351 with symbols when flag_pic is set.
2352 (const_vector_immediate_p): New.
2353 (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
2354 accept a CONST_VECTOR with symbols.
2355 (spu_legitimate_constant_p): Use const_vector_immediate_p. Don't
2356 accept a CONST_VECTOR with symbols when flag_pic is set. Handle HIGH
2357 correctly.
2358 * config/spu/spu.md (high, low): Delete.
2359 (low_<mode>): Define.
2360
2361 Remove INTRmode and INTR_REGNUM, which didn't work.
2362 * config/spu/spu.c (spu_conditional_register_usage): Remove reference
2363 of INTR_REGNUM.
2364 * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
2365 set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
2366 peephole2 pattern): Don't use INTR or 131.
2367 (movintrcc): Delete.
2368 * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
2369 CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
2370 * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
2371 (UNSPEC_SET_INTR): Add.
2372 * config/spu/spu-modes.def (INTR): Remove.
2373
2374 More accurate warnings about run-time relocations.
2375 * config/spu/spu.c (reloc_diagnostic): Test in_section.
2376
2377 Correctly warn about immediate arguments to specific intrinsics.
2378 * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
2379 (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
2380 the instruction predicate.
2381
2382 Fix tree check errors with latest update.
2383 * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
2384 CALL_EXPR_ARG.
2385 (spu_expand_builtin): Use CALL_EXPR_FN.
2386
2387 Add missing specific intrinsics.
2388 * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
2389 si_bislede.
2390 * config/spu/spu_internals.h: Ditto.
2391
2392 Fix incorrect operand modifiers.
2393 * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
2394 * config/spu/spu.md (xor<mode>3): Change %S to %J.
2395
2396 Optimize one case of zero_extend of a vec_select.
2397 * config/spu/spu.md (_vec_extractv8hi_ze): Add.
2398
2399 Accept any immediate for hbr.
2400 * config/spu/spu.md (hbr): Change s constraints to i.
2401
2402 2007-02-21 Paul Brook <paul@codesourcery.com>
2403
2404 * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
2405 condexec_count when skipping USE and CLOBBER.
2406
2407 2007-02-21 Nick Clifton <nickc@redhat.com>
2408
2409 * common.opt (Warray-bounds): Add Warning attribute.
2410 (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
2411 Likewise.
2412 (fsized-zeroes): Add Optimization attribute.
2413 (fsplit-wide-types, ftree-scev-cprop): Likewise.
2414 * c.opt (Wc++0x-compat): Add Warning attribute.
2415
2416 2007-02-21 Ulrich Weigand <uweigand@de.ibm.com>
2417
2418 PR middle-end/30761
2419 * reload1.c (eliminate_regs_in_insn): In the single_set special
2420 case, attempt to re-recognize the insn before falling back to
2421 having reload fix it up.
2422
2423 2007-02-20 Eric Christopher <echristo@gmail.com>
2424
2425 * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
2426 Rewrite accordingly.
2427 (frv_read_iacc_argument): Ditto.
2428 (frv_expand_set_builtin): Take a call instead of arglist, update for
2429 above changes.
2430 (frv_expand_unop_builtin): Ditto.
2431 (frv_expand_binop_builtin): Ditto.
2432 (frv_expand_cut_builtin): Ditto.
2433 (frv_expand_binopimm_builtin): Ditto.
2434 (frv_expand_voidbinop_builtin): Ditto.
2435 (frv_expand_int_void2arg): Ditto.
2436 (frv_expand_prefetches): Ditto.
2437 (frv_expand_voidtriop_builtin): Ditto.
2438 (frv_expand_voidaccop_builtin): Ditto.
2439 (frv_expand_load_builtin): Ditto.
2440 (frv_expand_store_builtin): Ditto.
2441 (frv_expand_mdpackh_builtin): Ditto.
2442 (frv_expand_mclracc_builtin): Ditto.
2443 (frv_expand_mrdacc_builtin): Ditto.
2444 (frv_expand_mwtacc_builtin): Ditto.
2445 (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
2446 calls for above.
2447
2448 2007-02-20 Janis Johnson <janis187@us.ibm.com>
2449
2450 * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
2451 * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
2452 cmpb instruction.
2453 (HAVE_GAS_DFP): Check for assembler support of decimal floating
2454 point instructions.
2455 * configure: Regenerate.
2456 * config.in: Regenerate.
2457 * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
2458 * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
2459 masks to power6 and power6x and to POWERPC_MASKS.
2460 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2461 _ARCH_PWR6.
2462 * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
2463 * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
2464 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
2465 Access PROTOTYPE as variable, not mask.
2466
2467 2007-02-20 Steven Bosscher <steven@gcc.gnu.org>
2468
2469 * rtl.h (remove_reg_equal_equiv_notes): New prototype.
2470 * rtlanal.c (remove_reg_equal_equiv_notes): New function.
2471 * combine.c (adjust_for_new_dest): Use it.
2472 * postreload.c (reload_combine): Likewise.
2473
2474 2007-02-20 Steven Bosscher <steven@gcc.gnu.org>
2475
2476 * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
2477 notes on an insn with multiple sets, even if single_set returns
2478 non-NULL for that insn.
2479
2480 2007-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2481
2482 * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
2483 scalbn and scalbln.
2484
2485 2007-02-20 Geoffrey Keating <geoffk@apple.com>
2486
2487 * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
2488 if user didn't pass it.
2489 * config/i386/darwin.h (CC1_SPEC): Likewise.
2490 * config/rs6000/darwin.h (CC1_SPEC): Likewise.
2491 (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
2492 -mmacosx-version-min.
2493
2494 2007-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2495 Uros Bizjak <ubizjak@gmail.com>
2496
2497 * optabs.h (enum optab_index): Add new OTI_scalb.
2498 (scalb_optab): Define corresponding macro.
2499 * optabs.c (init_optabs): Initialize scalb_optab.
2500 * genopinit.c (optabs): Implement scalb_optab using scalb?f3
2501 patterns.
2502 * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
2503 BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
2504 (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
2505 and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
2506 flag_unsafe_math_optimizations is set.
2507
2508 * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
2509 to implement scalbf, scalb and scalbl built-ins as inline x87
2510 intrinsics.
2511
2512 2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2513 DJ Delorie <dj@redhat.com>
2514
2515 PR other/30824
2516 * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
2517 (diagnostic_report_diagnostic): ... here, and turn them into real
2518 errors. If warnings are inhibited, no need to do anything.
2519
2520 2007-02-20 Uros Bizjak <ubizjak@gmail.com>
2521
2522 * config/i386/i386.md (expm1xf2): Reorder insn sequence for
2523 better code generation.
2524
2525 2007-02-20 Ben Elliston <bje@au.ibm.com>
2526
2527 * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
2528
2529 2007-02-20 Kazu Hirata <kazu@codesourcery.com>
2530
2531 * config/alpha/alpha.c, config/alpha/alpha.md,
2532 config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
2533 config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
2534 config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
2535 config/arm/lib1funcs.asm: Follow spelling conventions.
2536
2537 * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
2538 config/fr30/fr30.md, config/i386/i386.h,
2539 config/iq2000/iq2000.h, config/iq2000/predicates.md,
2540 config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
2541 config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
2542 config/pdp11/pdp11.c, config/pdp11/pdp11.h,
2543 config/rs6000/altivec.md, config/rs6000/rs6000.c,
2544 config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
2545 config/sparc/sparc.c, config/sparc/sparc.h,
2546 config/sparc/sparc.md, config/spu/constraints.md,
2547 config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
2548 conventions.
2549
2550 2007-02-20 Alan Modra <amodra@bigpond.net.au>
2551
2552 PR target/29943
2553 * varasm.c (use_blocks_for_decl_p): Return false for decls with
2554 alias attribute.
2555
2556 2007-02-19 Kazu Hirata <kazu@codesourcery.com>
2557
2558 * doc/invoke.texi (-ftree-lrs): Remove.
2559
2560 2007-02-19 Diego Novillo <dnovillo@redhat.com>
2561
2562 * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
2563 NULL.
2564
2565 2007-02-19 Lee Millward <lee.millward@codesourcery.com>
2566
2567 * config/ia64/ia64.c (ia64_expand_builtin): Use the
2568 new CALL_EXPR_FN macro for retrieving the function
2569 declaration of the input expression.
2570
2571 2007-02-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2572
2573 * c.opt (Waddress): New.
2574 * common.opt (Walways-true): Delete.
2575 (Wstring-literal-comparison): Delete.
2576 * doc/invoke.texi (Warning Options): Delete -Walways-true and
2577 -Wstring-literal-comparison. Add -Waddress.
2578 (Waddress): New.
2579 (Walways-true): Delete.
2580 (Wstring-literal-comparison): Delete.
2581 * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
2582 consistently instead of -Walways-true in example.
2583 * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
2584 * c-typeck.c (parser_build_binary_op): Replace
2585 -Wstring-literal-comparison and -Walways-true with -Waddress.
2586 * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
2587 with -Waddress.
2588
2589 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
2590
2591 * tree-cfg.c (dump_function_to_file): Be prepared for functions
2592 without DECL_STRUCT_FUNCTION initialized.
2593
2594 2007-02-19 Eric Botcazou <ebotcazou@adacore.com>
2595
2596 * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
2597 due to calls to functions taking pointers as parameters.
2598
2599 2007-02-19 Richard Henderson <rth@redhat.com>
2600
2601 PR debug/29558
2602 * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
2603 in memory.
2604
2605 2007-02-19 Andreas Krebbel <krebbel1@de.ibm.com>
2606
2607 * config/s390/s390.c (s390_call_saved_register_used,
2608 s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
2609 accessed to the new scheme.
2610
2611 2007-02-19 Jan-Benedict Glaw <jbglaw@lug-owl.de>
2612
2613 * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
2614 (cris_print_index, cris_print_operand, cris_print_operand_address)
2615 (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
2616 (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
2617 (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
2618 GET_CODE () == xxx.
2619 * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
2620 EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
2621 GO_IF_LEGITIMATE_ADDRESS): Ditto.
2622 * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
2623 (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
2624 (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
2625 (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
2626 (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
2627 (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
2628 (uminsi3, call, call_value): Ditto.
2629 (define_split: indir_to_reg_split, unnamed): Ditto.
2630
2631 2007-02-19 Dorit Nuzman <dorit@il.ibm.com>
2632
2633 PR tree-optimization/30975
2634 * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
2635 wrong assert.
2636
2637 2007-02-18 Eric Christopher <echristo@gmail.com>
2638
2639 * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
2640 Remove use of arglist.
2641 (mips_expand_builtin): Remove use of arglist, pass in expr.
2642 (mips_expand_builtin_direct): Rewrite handling for arglist removal.
2643 (mips_expand_builtin_movtf): Ditto.
2644 (mips_expand_builtin_compare): Ditto.
2645
2646 2007-02-19 Alexandre Oliva <aoliva@redhat.com>
2647
2648 * tree-sra.c (sra_build_assignment): Replace assertion
2649 checking with a comment explaining why it can't be done.
2650
2651 2007-02-18 Sandra Loosemore <sandra@codesourcery.com>
2652
2653 PR middle-end/30833
2654 * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
2655 during CALL_EXPR representation conversion.
2656 * tree-ssa-propagate.c (set_rhs): Likewise.
2657
2658 2007-02-19 Alexandre Oliva <aoliva@redhat.com>
2659
2660 * tree-sra.c (sra_build_assignment): Disable assertion checking
2661 for now.
2662
2663 2007-02-18 Roger Sayle <roger@eyesopen.com>
2664
2665 * function.c (gimplify_parameters): Call build_gimple_modify_stmt
2666 instead of calling build2 with a GIMPLE_MODIFY_STMT.
2667 * gimple-low.c (lower_function_body, lower_builtin_setjmp):
2668 Likewise.
2669 * gimplify.c (build_stack_save_restore, gimplify_return_expr,
2670 gimplify_decl_expr, gimplify_self_mod_expr, gimplify_cond_expr,
2671 gimplify_init_ctor_eval_range, gimple_push_cleanup,
2672 gimplify_omp_for, gimplify_omp_atomic_pipeline,
2673 gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
2674 force_gimple_operand): Likewise.
2675 * ipa-cp.c (constant_val_insert): Likewise.
2676 * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
2677 lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
2678 perfect_nestify): Likewise.
2679 * langhooks.c (lhd_omp_assignment): Likewise.
2680 * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
2681 lower_copyprivate_clauses, lower_send_clauses,
2682 lower_send_shared_vars, expand_parallel_call,
2683 expand_omp_for_generic, expand_omp_for_static_nochunk,
2684 expand_omp_for_static_chunk, expand_omp_sections,
2685 lower_omp_single_copy, lower_omp_for_lastprivate,
2686 lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
2687 * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
2688 tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
2689 Likewise.
2690
2691 2007-02-19 Kazu Hirata <kazu@codesourcery.com>
2692
2693 * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
2694 config/sh/sh.md: Follow spelling conventions.
2695
2696 * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
2697 config/frv/predicates.md: Follow spelling conventions.
2698
2699 * config/m68k/linux-unwind.h: Fix a comment typo.
2700 * target.h: Follow spelling conventions.
2701
2702 2007-02-18 Roger Sayle <roger@eyesopen.com>
2703
2704 PR rtl-optimization/28173
2705 * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
2706 (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
2707 Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
2708 Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
2709 <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
2710
2711 2007-02-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2712
2713 * builtins.c (fold_builtin_load_exponent): New.
2714 (fold_builtin_2): Use it.
2715
2716 2007-02-18 Steven Bosscher <steven@gcc.gnu.org>
2717
2718 PR rtl-optimization/30773
2719 * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
2720 if we fail to attach a REG_EQUIV note.
2721
2722 2007-02-18 David Edelsohn <edelsohn@gnu.org>
2723 Roger Sayle <roger@eyesopen.com>
2724
2725 * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
2726
2727 2007-02-18 Sandra Loosemore <sandra@codesourcery.com>
2728
2729 * calls.c (initialize_argument_information): Pass original EXP
2730 and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments. Move
2731 code to split complex arguments here, as part of initializing the
2732 ARGS array.
2733 (expand_call): Remove code that builds a list of arguments and
2734 inserts implicit arguments into it. Instead, just count how many
2735 implicit arguments there will be so we can determine the size of
2736 the ARGS array, and let initialize_argument_information do the work.
2737 (split_complex_values): Delete unused function.
2738
2739 2007-02-18 Eric Botcazou <ebotcazou@adacore.com>
2740
2741 * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
2742
2743 2007-02-18 Eric Botcazou <ebotcazou@adacore.com>
2744
2745 * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
2746 for arg pointer based indexed addressing.
2747
2748 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
2749
2750 * config/ia64/ia64.h, config/ia64/ia64.md,
2751 config/ia64/predicates.md, config/ia64/sysv4.h: Follow
2752 spelling conventions.
2753
2754 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
2755
2756 * config/m68k/m68k.c (split_di): New.
2757 * config/m68k/m68k-protos.h: Declare split_di.
2758 * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
2759 Improve predicate handling and split constant shifts.
2760
2761 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
2762
2763 * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
2764 parameter for register bitfield operations, general predicates
2765 cleanup
2766
2767 2007-02-18 Roman Zippel <zippel@linux-m68k.org>
2768
2769 * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
2770 * config/m68k/linux-unwind.h: New file.
2771
2772 2007-02-18 Kazu Hirata <kazu@codesourcery.com>
2773
2774 * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
2775 config/i386/athlon.md, config/ia64/ia64.md,
2776 config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
2777 df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
2778 ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
2779 tree-ssa-loop-niter.c, tree-vect-analyze.c,
2780 tree-vect-transform.c: Fix comment typos.
2781
2782 2007-02-17 Kazu Hirata <kazu@codesourcery.com>
2783
2784 * sched-deps.c (find_insn_list): Remove.
2785 * sched-int.h: Remove the prototype for find_insn_list.
2786
2787 2007-02-16 Geoffrey Keating <geoffk@apple.com>
2788
2789 * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
2790 to linker.
2791 (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
2792 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
2793 darwin_rs6000_override_options.
2794 (C_COMMON_OVERRIDE_OPTIONS): Expect
2795 darwin_macosx_version_min to be non-NULL always.
2796 (TARGET_C99_FUNCTIONS): Likewise.
2797 (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
2798 (DARWIN_MINVERSION_SPEC): New.
2799 * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
2800 * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
2801 to cc1*.
2802 (DARWIN_MINVERSION_SPEC): New.
2803 * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
2804 value.
2805 * config/darwin-c.c (darwin_cpp_builtins): Expect
2806 darwin_macosx_version_min to be non-NULL always.
2807
2808 * config/rs6000/rs6000.c: Clean up trailing whitespace.
2809
2810 2007-02-16 Uros Bizjak <ubizjak@gmail.com>
2811
2812 * config/i386/i386.h (x86_use_xchgb): New.
2813 (TARGET_USE_XCHGB): New macro.
2814 * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
2815 * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
2816 Split after reload into bswaphi for shifts of 8.
2817 (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
2818 (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
2819 or when optimizing for size.
2820
2821 2007-02-16 Richard Guenther <rguenther@suse.de>
2822 Christian Bruel <christian.bruel@st.com>
2823
2824 * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
2825 DECLs but prefer SSA_NAMEs over DECLs.
2826
2827 2007-02-16 Richard Guenther <rguenther@suse.de>
2828
2829 * tree-flow-inline.h (single_imm_use_p): Remove.
2830 (zero_imm_uses_p): Likewise.
2831 * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
2832 instead of single_imm_use_p.
2833 * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
2834 zero_imm_uses_p.
2835
2836 2007-02-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2837
2838 PR other/27843
2839 * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
2840 nested double- and backquotes.
2841
2842 2007-02-15 Roger Sayle <roger@eyesopen.com>
2843
2844 PR middle-end/30391
2845 * tree.c (expr_align): Handle MODIFY_EXPR. GIMPLE_MODIFY_STMT
2846 should be unreachable.
2847 (build2_stat): Allow construction of MODIFY_EXPR at any time.
2848 For the time being redirect GIMPLE_MODIFY_STMT to the new
2849 (renamed) build_gimple_modify_stmt_stat.
2850 (build2_gimple_stat): Rename to...
2851 (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
2852 Always build a GIMPLE_MODIFY_STMT node.
2853 * tree.h (build2_gimple, build2_gimple_stat): Delete.
2854 (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
2855 declarations.
2856
2857 * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
2858 gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
2859 * tree-complex.c (set_component_ssa_name, expand_complex_move,
2860 expand_complex_div_wide): Likewise.
2861 * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
2862 * tree-ssa-loop-im.c (schedule_sm): Likewise.
2863 * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
2864 * tree-ssa-loop-manip.c (create_iv): Likewise.
2865 * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
2866 abs_replacement): Likewise.
2867 * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
2868 realify_fake_stores): Likewise.
2869
2870 * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
2871 node rather than a GIMPLE_MODIFY_STMT node.
2872 (std_gimpify_va_arg_expr, expand_builtin_va_copy,
2873 fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
2874 Likewise.
2875 (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
2876 * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
2877 GIMPLE_MODIFY_STMT.
2878
2879 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2880
2881 PR middle-end/30433
2882 * fold-const.c (fold_comparison): Add back the
2883 folding of constant complex comparisions.
2884
2885 2007-02-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
2886
2887 PR middle-end/30729
2888 * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
2889 effects unknown to this function, return early.
2890
2891 2007-02-15 Ian Lance Taylor <iant@google.com>
2892
2893 * lower-subreg.c (move_eh_region_note): New static function.
2894 (resolve_simple_move): Call it.
2895 (decompose_multiword_subregs): Track blocks for which we resolve a
2896 simple move which is also a control flow insn. Pass them to
2897 find_many_sub_basic_blocks.
2898 (pass_lower_subreg): Add TODO_verify_flow.
2899 (pass_lower_subreg2): Likewise.
2900
2901 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
2902 Brooks Moses <brooks.moses@codesourcery.com>
2903 Lee Millward <lee.millward@codesourcery.com>
2904
2905 * tree.h (enum tree_code_class): Add tcc_vl_exp.
2906 (VL_EXP_CLASS_P): New.
2907 (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
2908 TREE_CODE_LENGTH.
2909 (TREE_OPERAND_CHECK_CODE): Likewise.
2910 (GIMPLE_STMT_OPERAND_CHECK): Likewise.
2911 (TREE_RTL_OPERAND_CHECK): Likewise.
2912 (tree_operand_check_failed): Make second parameter the whole tree
2913 instead of its code. Fixed callers.
2914 (VL_EXP_CHECK): New.
2915 (TREE_OPERAND_LENGTH): New.
2916 (VL_EXP_OPERAND_LENGTH): New.
2917 (CALL_EXPR_FN): New.
2918 (CALL_EXPR_STATIC_CHAIN): New.
2919 (CALL_EXPR_ARGS): New.
2920 (CALL_EXPR_ARG): New.
2921 (call_expr_nargs): New.
2922 (CALL_EXPR_ARGP): New.
2923 (build_nt_call_list): Declare.
2924 (build_vl_exp_stat): Declare.
2925 (build_vl_exp): New.
2926 (build_call_list): Declare.
2927 (build_call_nary): Declare.
2928 (build_call_valist): Declare.
2929 (build_call_array): Declare.
2930 (call_expr_arg): Declare.
2931 (call_expr_argp): Declare.
2932 (call_expr_arglist): Declare.
2933 (fold_build_call_list): Declare.
2934 (fold_build_call_list_initializer): Declare.
2935 (fold_call_expr): Declare to replace fold_builtin.
2936 (fold_builtin_fputs): Update to agree with modified definition.
2937 (fold_builtin_strcpy): Likewise.
2938 (fold_builtin_strncpy): Likewise.
2939 (fold_builtin_memory_chk): Likewise.
2940 (fold_builtin_stxcpy_chk): Likewise.
2941 (fold_builtin_strncpy_chk): Likewise.
2942 (fold_builtin_next_arg): Likewise.
2943 (fold_build_call_expr): Declare.
2944 (fold_builtin_call_list): Declare.
2945 (fold_builtin_call_valist): Declare.
2946 (build_call_expr): Declare.
2947 (validate_arglist): Update to agree with modified definition.
2948 (tree_operand_length): New.
2949 (call_expr_arg_iterator): New.
2950 (init_call_expr_arg_iterator): New.
2951 (next_call_expr_arg): New.
2952 (first_call_expr_arg): New.
2953 (more_call_expr_args_p): New.
2954 (FOR_EACH_CALL_EXPR_ARG): New.
2955
2956 * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
2957 and tcc_gimple_stmt.
2958 (tree_code_size): Update documentation. Use sizeof (tree) rather
2959 than sizeof (char *).
2960 (tree_size): Likewise. Add case for tcc_vl_exp.
2961 (tree_node_structure): Add case for tcc_vl_exp.
2962 (contains_placeholder_p): Likewise.
2963 (substitute_in_expr): Likewise.
2964 (substitute_placeholder_in_expr): Likewise.
2965 (stabilize_reference_1): Likewise.
2966 (build3_stat): Remove logic for CALL_EXPRs. Replace with assertion
2967 to diagnose breakage of this interface for constructing CALL_EXPRs.
2968 (build_nt): Add similar assertion here.
2969 (build_nt_call_list): New.
2970 (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
2971 (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
2972 TREE_CODE_LENGTH.
2973 (get_callee_fndecl): Use new CALL_EXPR accessors.
2974 (tree_operand_check_failed): Change parameters to pass entire node
2975 instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
2976 (process_call_operands): New.
2977 (build_vl_exp_stat): New.
2978 (build_call_list): New.
2979 (build_call_nary): New.
2980 (build_call_valist): New.
2981 (build_call_array): New.
2982 (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2983 (call_expr_arglist): New.
2984
2985 * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
2986 tcc_vl_exp instead of a fixed-size tcc_expression.
2987
2988 * doc/c-tree.texi (CALL_EXPR): Document new representation and
2989 accessors for CALL_EXPRs.
2990 (AGGR_INIT_EXPR): Likewise.
2991
2992 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
2993 Brooks Moses <brooks.moses@codesourcery.com>
2994 Lee Millward <lee.millward@codesourcery.com>
2995
2996 * builtins.c (c_strlen): Return NULL_TREE instead of 0.
2997 (expand_builtin_nonlocal_goto): Change parameter to be entire
2998 CALL_EXPR instead of an arglist. Use new CALL_EXPR accessors.
2999 (expand_builtin_prefetch): Likewise.
3000 (expand_builtin_classify_type): Likewise.
3001 (mathfn_built_in): Return NULL_TREE instead of 0.
3002 (expand_errno_check): Use new CALL_EXPR accessors.
3003 (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
3004 Return NULL_RTX instead of 0.
3005 (expand_builtin_mathfn_2): Likewise.
3006 (expand_builtin_mathfn_3): Likewise.
3007 (expand_builtin_interclass_mathfn): Likewise.
3008 (expand_builtin_sincos): Likewise.
3009 (expand_builtin_cexpi): Likewise.
3010 (expand_builtin_int_roundingfn): Likewise.
3011 (expand_builtin_int_roundingfn_2): Likewise.
3012 (expand_builtin_pow): Likewise.
3013 (expand_builtin_powi): Likewise.
3014 (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
3015 of arglist, fixing callers appropriately. Use new CALL_EXPR
3016 accessors and constructors. Return NULL_RTX instead of 0.
3017 (expand_builtin_strstr): Likewise.
3018 (expand_builtin_strchr): Likewise.
3019 (expand_builtin_strrchr): Likewise.
3020 (expand_builtin_strpbrk): Likewise.
3021 (expand_builtin_memcpy): Likewise.
3022 (expand_builtin_mempcpy): Likewise.
3023 (expand_builtin_mempcpy_args): New.
3024 (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
3025 (expand_builtin_memmove_args): New.
3026 (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
3027 (expand_movstr): Likewise.
3028 (expand_builtin_strcpy): Likewise.
3029 (expand_builtin_strcpy_args): New.
3030 (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
3031 (expand_builtin_strncpy): Likewise.
3032 (expand_builtin_memset): Likewise.
3033 (expand_builtin_memset_args): New.
3034 (expand_builtin_bzero): Similarly to expand_builtin_memset.
3035 (expand_builtin_memcmp): Likewise.
3036 (expand_builtin_strcmp): Likewise.
3037 (expand_builtin_strncmp): Likewise.
3038 (expand_builtin_strcat): Likewise.
3039 (expand_builtin_strncat): Likewise.
3040 (expand_builtin_strspn): Likewise.
3041 (expand_builtin_strcspn): Likewise.
3042 (expand_builtin_args_info): Likewise.
3043 (expand_builtin_va_start): Likewise.
3044 (gimplify_va_arg_expr): Likewise.
3045 (expand_builtin_va_end): Likewise.
3046 (expand_builtin_va_copy): Likewise.
3047 (expand_builtin_frame_address): Likewise.
3048 (expand_builtin_alloca): Likewise.
3049 (expand_builtin_bswap): Likewise.
3050 (expand_builtin_unop): Likewise.
3051 (expand_builtin_fputs): Likewise.
3052 (expand_builtin_expect): Likewise.
3053 (expand_builtin_fabs): Likewise.
3054 (expand_builtin_copysign): Likewise.
3055 (expand_builtin_printf): Likewise.
3056 (expand_builtin_fprintf): Likewise.
3057 (expand_builtin_sprintf): Likewise.
3058 (expand_builtin_init_trampoline): Likewise.
3059 (expand_builtin_signbit): Likewise.
3060 (expand_builtin_fork_or_exec): Likewise.
3061 (expand_builtin_sync_operation): Likewise.
3062 (expand_builtin_compare_and_swap): Likewise.
3063 (expand_builtin_lock_test_and_set): Likewise.
3064 (expand_builtin_lock_release): Likewise.
3065 (expand_builtin): Likewise.
3066 (builtin_mathfn_code): Likewise.
3067
3068 (fold_builtin_constant_p): Pass call arguments individually instead
3069 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
3070 accessors and constructors. Return NULL_TREE instead of 0.
3071 (fold_builtin_expect): Likewise.
3072 (fold_builtin_classify_type): Likewise.
3073 (fold_builtin_strlen): Likewise.
3074 (fold_builtin_nan): Likewise.
3075 (integer_valued_real_p): Likewise.
3076 (fold_trunc_transparent_mathfn): Likewise.
3077 (fold_fixed_mathfn): Likewise.
3078 (fold_builtin_cabs): Likewise.
3079 (fold_builtin_sqrt): Likewise.
3080 (fold_builtin_cbrt): Likewise.
3081 (fold_builtin_cos): Likewise.
3082 (fold_builtin_cosh): Likewise.
3083 (fold_builtin_tan): Likewise.
3084 (fold_builtin_sincos): Likewise.
3085 (fold_builtin_cexp): Likewise.
3086 (fold_builtin_trunc): Likewise.
3087 (fold_builtin_floor): Likewise.
3088 (fold_builtin_ceil): Likewise.
3089 (fold_builtin_round): Likewise.
3090 (fold_builtin_int_roundingfn): Likewise.
3091 (fold_builtin_bitop): Likewise.
3092 (fold_builtin_bswap): Likewise.
3093 (fold_builtin_logarithm): Likewise.
3094 (fold_builtin_hypot): Likewise.
3095 (fold_builtin_pow): Likewise.
3096 (fold_builtin_powi): Likewise.
3097 (fold_builtin_exponent): Likewise.
3098 (fold_builtin_memset): Likewise.
3099 (fold_builtin_bzero): Likewise.
3100 (fold_builtin_memory_op): Likewise.
3101 (fold_builtin_bcopy): Deleted; call site changed to invoke
3102 fold_builtin_memory_op directly.
3103 (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
3104 (fold_builtin_strncpy): Likewise.
3105 (fold_builtin_memcmp): Likewise.
3106 (fold_builtin_strcmp): Likewise.
3107 (fold_builtin_strncmp): Likewise.
3108 (fold_builtin_signbit): Likewise.
3109 (fold_builtin_copysign): Likewise.
3110 (fold_builtin_isascii): Likewise.
3111 (fold_builtin_toascii): Likewise.
3112 (fold_builtin_isdigit): Likewise.
3113 (fold_builtin_fabs): Likewise.
3114 (fold_builtin_abs): Likewise.
3115 (fold_builtin_fmin_fmax): Likewise.
3116 (fold_builtin_carg): Likewise.
3117 (fold_builtin_classify): Likewise.
3118 (fold_builtin_unordered_cmp): Likewise.
3119
3120 (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
3121 New functions split out from fold_builtin_1.
3122 (fold_builtin_n): New.
3123 (fold_builtin_varargs): New.
3124 (fold_builtin): Deleted. Most callers changed to use fold_call_expr
3125 instead.
3126 (fold_call_expr): New.
3127 (build_function_call_expr): Rewrite to use new helper function.
3128 (fold_builtin_call_list): New.
3129 (build_call_expr): New.
3130 (fold_builtin_call_valist): New.
3131 (rewrite_call_expr): New.
3132 (validate_arg): New.
3133 (validate_arglist): Change parameter to be entire CALL_EXPR instead
3134 of an arglist. Change return type to bool. Use new CALL_EXPR
3135 accessors.
3136
3137 (fold_builtin_strstr): Pass call arguments individually instead
3138 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
3139 accessors and constructors. Return NULL_TREE instead of 0.
3140 (fold_builtin_strchr): Likewise.
3141 (fold_builtin_strrchr): Likewise.
3142 (fold_builtin_strpbrk): Likewise.
3143 (fold_builtin_strcat): Likewise.
3144 (fold_builtin_strncat): Likewise.
3145 (fold_builtin_strspn): Likewise.
3146 (fold_builtin_strcspn): Likewise.
3147 (fold_builtin_fputs): Likewise.
3148 (fold_builtin_next_arg): Likewise.
3149 (fold_builtin_sprintf): Likewise.
3150
3151 (expand_builtin_object_size): Use new CALL_EXPR accessors. Use
3152 NULL_RTX instead of 0.
3153 (expand_builtin_memory_chk): Likewise.
3154 (maybe_emit_chk_warning): Likewise.
3155 (maybe_emit_sprintf_chk_warning): Likewise.
3156
3157 (fold_builtin_object_size): Pass call arguments individually instead
3158 of as an arglist, fixing callers appropriately. Use new CALL_EXPR
3159 accessors and constructors. Return NULL_TREE instead of 0.
3160 (fold_builtin_memory_chk): Likewise.
3161 (fold_builtin_stxcpy_chk): Likewise.
3162 (fold_builtin_strncpy_chk): Likewise.
3163 (fold_builtin_strcat_chk): Likewise.
3164 (fold_builtin_strcat_chk): Likewise.
3165 (fold_builtin_strncat_chk): Likewise.
3166 (fold_builtin_sprintf_chk): Likewise.
3167 (fold_builtin_snprintf_chk): Likewise.
3168 (fold_builtin_printf): Likewise.
3169 (fold_builtin_vprintf): Likewise.
3170
3171 * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
3172 constructors.
3173 (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
3174 (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3175 (extract_muldiv_1): Add VL_EXP_CLASS_P case.
3176 (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
3177 (fold_unary): Likewise.
3178 (fold_binary): Likewise.
3179 (fold_ternary): Remove CALL_EXPR case, since they are no longer
3180 ternary expressions.
3181 (fold): Add logic for tcc_vl_exp.
3182 (fold_checksum_tree): Make it know about tcc_vl_exp. Use
3183 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3184 (fold_build3_stat): Add assertion to flag broken interface for
3185 constructing CALL_EXPRs.
3186 (fold_build_call_list): New.
3187 (fold_build_call_list_initializer): New.
3188 (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
3189 constructors.
3190 (fold_strip_sign_ops): Likewise.
3191
3192 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
3193 Brooks Moses <brooks.moses@codesourcery.com>
3194 Lee Millward <lee.millward@codesourcery.com>
3195
3196 * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
3197 accessors and dump arguments explicitly.
3198
3199 * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
3200 TREE_CODE_LENGTH.
3201 (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
3202 explicitly.
3203 (print_call_name): Use new CALL_EXPR accessors.
3204
3205 * print-tree.c (print_node): Add case tcc_vl_exp. Print
3206 CALL_EXPR arguments explicitly instead of as a list. Use
3207 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3208
3209 * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
3210 (vrp_visit_stmt): Likewise.
3211
3212 * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
3213 know about tcc_vl_exp. Use TREE_OPERAND_LENGTH instead of
3214 TREE_CODE_LENGTH.
3215 (force_move_till_expr): Likewise.
3216
3217 * targhooks.c (default_external_stack_protect_fail): Use
3218 build_call_expr instead of build_function_call_expr.
3219 (default_hidden_stack_protect_fail): Likewise.
3220
3221 * tree-complex.c (expand_complex_libcall): Use build_call_expr to
3222 build the call.
3223
3224 * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
3225 and walk arguments explicitly.
3226
3227 * tree-ssa-loop-niter.c (simplify_replace_tree): Use
3228 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3229 (expand_simple_operations): Likewise.
3230 (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
3231
3232 * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
3233 of TREE_CODE_LENGTH.
3234 (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
3235
3236 * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
3237 instead of TREE_CODE_LENGTH.
3238
3239 * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
3240 (tree_ic_transform): Likewise.
3241 (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
3242 parameter instead of arglist. Fix callers.
3243 (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
3244 (tree_stringops_transform): Likewise.
3245 (tree_indirect_call_to_profile): Likewise.
3246 (tree_stringops_values_to_profile): Likewise.
3247
3248 * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
3249 (eliminate_tail_call): Likewise.
3250
3251 * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
3252
3253 * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
3254 Use TREE_OPERAND_LENGTH and generalize to handle any number of
3255 operands.
3256 (instantiate_parameters_1): Can't handle tcc_vl_exp here.
3257
3258 * omp-low.c (build_omp_barrier): Use build_call_expr.
3259 (lower_rec_input_clauses): Likewise.
3260 (lower_reduction_clauses): Likewise.
3261 (expand_parallel_call): Likewise.
3262 (maybe_catch_exception): Likewise.
3263 (expand_omp_for_generic): Likewise.
3264 (expand_omp_for_static_nochunk): Likewise.
3265 (expand_omp_sections): Likewise.
3266 (lower_omp_single_simple): Likewise.
3267 (lower_omp_single_copy): Likewise.
3268 (lower_omp_master): Likewise.
3269 (lower_omp_ordered): Likewise.
3270 (lower_omp_critical): Likewise.
3271
3272 * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
3273 (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
3274
3275 * tree-gimple.c (is_gimple_call_addr): Fix doc.
3276 (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
3277 TREE_CODE_LENGTH. Add tcc_vl_exp case.
3278
3279 * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
3280 and generalize to handle any number of operands.
3281 (chrec_contains_undetermined): Likewise.
3282 (tree_contains_chrecs): Likewise.
3283 (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
3284
3285 * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
3286
3287 * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors. Use
3288 fold_call_expr instead of fold_builtin.
3289 (ccp_fold_builtin): Likewise. Update calls into builtins.c to
3290 match declarations there.
3291 (fold_stmt): Use new CALL_EXPR constructor and accessors. Doc
3292 updates.
3293
3294 * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
3295 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3296
3297 * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
3298 (scan_function): Add case tcc_vl_exp for CALL_EXPR.
3299
3300 * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
3301 accessors.
3302
3303 * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
3304 (execute_cse_sincos): Use new CALL_EXPR accessors.
3305
3306 * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
3307
3308 * gimple-low.c (lower_function_body): Use build_call_expr.
3309 (lower_builtin_setjmp): Likewise.
3310
3311 * expr.c (emit_block_move_via_libcall): Use build_call_expr.
3312 (set_storage_via_libcall): Likewise.
3313 (safe_from_p): Add tcc_vl_exp case. Use TREE_OPERAND_LENGTH
3314 instead of TREE_CODE_LENGTH.
3315 (expand_expr_real_1): Use new CALL_EXPR accessors.
3316
3317 * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
3318 generalize to handle any number of operands.
3319 (TB_parent_eq): Likewise.
3320
3321 * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
3322 (strip_builtin_expect): Likewise.
3323
3324 * function.c (gimplify_parameters): Use build_call_expr.
3325
3326 * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
3327 instead of TREE_CODE_LENGTH.
3328
3329 * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
3330 (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
3331
3332 * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
3333 iterators.
3334
3335 * gimplify.c (build_stack_save_restore): Use build_call_expr.
3336 (gimplify_decl_expr): Likewise.
3337 (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
3338 Use new CALL_EXPR iterators.
3339 (gimplify_modify_expr_to_memcpy): Use build_call_expr.
3340 (gimplify_modify_expr_to_memset): Likewise.
3341 (gimplify_variable_sized_compare): Likewise.
3342 (gimplify_omp_atomic_fetch_op): Likewise.
3343 (gimplify_omp_atomic_pipeline): Likewise.
3344 (gimplify_omp_atomic_mutex): Likewise.
3345 (gimplify_function_tree): Likewise.
3346
3347 * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
3348 (call_expr_flags): Likewise.
3349 (expand_call): Likewise.
3350
3351 * except.c (expand_builtin_eh_return_data_regno): Pass entire
3352 CALL_EXPR as parameter instead of arglist. Use new CALL_EXPR
3353 accessors.
3354
3355 * coverage.c (create_coverage): Use build_call_expr.
3356
3357 * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
3358 (temp_call_expr_obstack): New.
3359 (pool_copy_list): Delete.
3360 (temp_copy_call_expr): New.
3361 (phi_translate): Add case tcc_vl_exp for CALL_EXPR. Use new
3362 CALL_EXPR accessors. Get rid of special goo for copying argument
3363 lists and use temp_copy_call_expr instead.
3364 (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR. Use new
3365 CALL_EXPR accessors.
3366 (create_expression_by_pieces): Likewise. Use build_call_array
3367 to construct the result instead of fold_build3.
3368 (create_value_expr_from): Add tcc_vl_exp. Delete special goo for
3369 dealing with argument lists.
3370 (init_pre): Remove references to expression_node_pool and
3371 list_node_pool. Init temp_call_expr_obstack instead.
3372 (fini_pre): Remove references to expression_node_pool and
3373 list_node_pool.
3374
3375 * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
3376 and walk arguments explicitly instead of as a list.
3377
3378 * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
3379 (mx_register_decls): Likewise.
3380 (mudflap_register_call): Likewise.
3381 (mudflap_finish_file): Likewise.
3382
3383 * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
3384 (ipa_callsite_compute_param): Likewise.
3385
3386 * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
3387 accessors and constructor.
3388
3389 * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
3390 accessors and constructor.
3391 (convert_tramp_reference): Likewise.
3392 (convert_call_expr): Likewise.
3393 (finalize_nesting_tree_1): Likewise.
3394
3395 * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
3396 accessors.
3397
3398 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
3399
3400 * tree-inline.c (initialize_inlined_parameters): Pass entire
3401 CALL_EXPR as parameter instead of arglist. Use new CALL_EXPR
3402 accessors.
3403 (estimate_num_insns_1): Use new CALL_EXPR accessors.
3404 (expand_call_inline): Tidy up call to initialize_inlined_parameters.
3405
3406 * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
3407 TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3408 (vectorizable_reduction): Likewise.
3409 (vectorizable_call): Use new CALL_EXPR iterators.
3410 (vectorizable_conversion): Use build_call_expr.
3411 (vectorizable_operation): Use TREE_OPERAND_LENGTH.
3412 (vect_gen_widened_results_half): Use build_call_expr.
3413 (vect_setup_realignment): Likewise.
3414 (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
3415
3416 * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
3417 (pass_through_call): Likewise.
3418 (compute_object_sizes): Likewise. Use fold_call_expr instead of
3419 fold_builtin.
3420
3421 * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
3422 (tree_gen_pow2_profiler): Likewise.
3423 (tree_gen_one_value_profiler): Likewise.
3424 (tree_gen_ic_func_profiler): Likewise.
3425 (tree_gen_average_profiler): Likewise.
3426 (tree_gen_ior_profiler): Likewise.
3427
3428 * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
3429 (find_func_aliases): Use new CALL_EXPR accessors. Add case
3430 tcc_vl_exp. Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3431
3432 * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
3433 of TREE_CODE_LENGTH.
3434
3435 * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
3436 of TREE_CODE_LENGTH.
3437
3438 * convert.c (convert_to_real): Use new CALL_EXPR accessors and
3439 constructor.
3440 (convert_to_integer): Likewise.
3441
3442 * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
3443 accessors.
3444
3445 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
3446 Brooks Moses <brooks.moses@codesourcery.com>
3447 Lee Millward <lee.millward@codesourcery.com>
3448
3449 * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
3450 accessors.
3451 * config/frv/frv.c (frv_expand_builtin): Likewise.
3452 * config/s390/s390.c (s390_expand_builtin): Likewise.
3453
3454 * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
3455 (sparc_expand_builtin): Use new CALL_EXPR accessors.
3456
3457 * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
3458 (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
3459 instead of arglist. Use new CALL_EXPR accessors on it. Fix callers.
3460 (ix86_expand_store_builtin): Likewise.
3461 (ix86_expand_unop_builtin): Likewise.
3462 (ix86_expand_unop1_builtin): Likewise.
3463 (ix86_expand_sse_compare): Likewise.
3464 (ix86_expand_sse_comi): Likewise.
3465 (ix86_expand_vec_init_builtin): Likewise.
3466 (ix86_expand_vec_ext_builtin): Likewise.
3467 (ix86_expand_vec_set_builtin): Likewise.
3468 (ix86_expand_builtin): Use new CALL_EXPR accessors.
3469
3470 * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
3471 * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
3472
3473 * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
3474 instead of arglist. Use new CALL_EXPR accessors. Fix callers.
3475 (iq2000_expand_builtin): Use new CALL_EXPR accessors.
3476
3477 * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
3478 build_call_expr.
3479 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
3480 (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
3481 arglist. Use new CALL_EXPR accessors. Fix callers.
3482 (altivec_expand_abs_builtin): Likewise.
3483 (rs6000_expand_binop_builtin): Likewise.
3484 (altivec_expand_predicate_builtin): Likewise.
3485 (altivec_expand_lv_builtin): Likewise.
3486 (spe_expand_stv_builtin): Likewise.
3487 (altivec_expand_stv_builtin): Likewise.
3488 (rs6000_expand_ternop_builtin): Likewise.
3489 (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
3490 (altivec_expand_st_builtin): Likewise.
3491 (altivec_expand_dst_builtin): Likewise.
3492 (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
3493 arglist. Use new CALL_EXPR accessors. Fix callers.
3494 (altivec_expand_vec_set_builtin): Likewise.
3495 (altivec_expand_vec_ext_builtin): Likewise.
3496 (altivec_expand_builtin): Use new CALL_EXPR accessors.
3497 (spe_expand_builtin): Likewise.
3498 (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
3499 arglist. Use new CALL_EXPR accessors. Fix callers.
3500 (spe_expand_evsel_builtin): Likewise.
3501 (rs6000_expand_builtin): Use new CALL_EXPR accessors. VCFUX and
3502 FCFSX cases must construct whole new CALL_EXPR, not just arglist.
3503
3504 * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
3505 instead of arglist. Use new CALL_EXPR accessors. Fix callers.
3506 (arm_expand_unop_builtin): Likewise.
3507 (arm_expand_builtin): Use new CALL_EXPR accessors.
3508
3509 * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
3510 accessors.
3511
3512 * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
3513 instead of arglist. Use new CALL_EXPR accessors. Fix callers.
3514 (bfin_expand_unop_builtin): Likewise.
3515 (bfin_expand_builtin): Use new CALL_EXPR accessors.
3516
3517 2007-02-15 Sandra Loosemore <sandra@codesourcery.com>
3518 Brooks Moses <brooks.moses@codesourcery.com>
3519 Lee Millward <lee.millward@codesourcery.com>
3520
3521 * c-semantics.c (build_stmt): Add internal diagnostic check.
3522
3523 * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
3524 accessors. Print arguments explicitly instead of as a list.
3525
3526 * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
3527
3528 * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
3529 (c_finish_omp_flish): Likewise.
3530
3531 * c-common.c (verify_tree): Use new CALL_EXPR accessors. Traverse
3532 arguments explicitly instead of as a list. Use TREE_OPERAND_LENGTH
3533 instead of TREE_CODE_LENGTH.
3534 (check_function_arguments_recurse): Use new CALL_EXPR accessors.
3535 (c_warn_unused_result): Likewise.
3536
3537 2007-02-15 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3538
3539 PR c/26494
3540 * doc/invoke.texi (Warning Options): Remove
3541 -Werror-implicit-function-declaration.
3542 (Wimplicit-function-declaration): Update description.
3543 * opts.c (common_handle_option): Move handling of -Werror=* to...
3544 (enable_warning_as_error): ...here.
3545 * opts.h (enable_warning_as_error): Declare.
3546 * c-decl.c (implicit_decl_warning): Unless
3547 -Wno-implicit-function-declaration is given, emit a pedwarn if
3548 -std=c99 or emit a warning if -Wimplicit-function-declaration.
3549 * c.opt (Wimplicit-function-declaration): Replace
3550 mesg_implicit_function_declaration with
3551 warn_implicit_function_declaration.
3552 * c-opts.c (c_common_handle_option):
3553 -Werror-implicit-function-declaration is exactly equal as
3554 -Werror=implicit-function-declaration.
3555 (set_Wimplicit): Replace mesg_implicit_function_declaration with
3556 warn_implicit_function_declaration.
3557 (c_common_post_options): -Wimplict-function-declaration is enabled
3558 by default by -std=c99, otherwise is disabled by default.
3559 * c-objc-common.c (c_objc_common_init): Remove flawed logic.
3560
3561 2007-02-15 Eric Botcazou <ebotcazou@adacore.com>
3562
3563 * gimplify.c (gimplify_modify_expr): During gimplification, attach a
3564 DECL on the rhs to a DECL on the lhs for debug info purposes if the
3565 former is ignored but not the latter.
3566
3567 2007-02-15 Eric Botcazou <ebotcazou@adacore.com>
3568
3569 * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
3570 is made and the reference doesn't use the alias set of its type,
3571 do not create the temporary using that type.
3572
3573 2007-02-15 Aldy Hernandez <aldyh@redhat.com>
3574
3575 * jump.c: Remove prototypes for delete_computation and
3576 delete_prior_computation.
3577
3578 2007-02-15 Paolo Bonzini <bonzini@gnu.org>
3579
3580 * jump.c (get_label_after): Delete.
3581 (get_label_before, delete_computation, delete_jump,
3582 delete_prior_computation, follow_jumps): Move...
3583 * reorg.c (delete_computation, delete_prior_computation): ... here...
3584 (get_label_before, delete_jump): ... making these static ...
3585 (follow_jumps): ... and simplifying this since it only runs after
3586 reload.
3587 * rtl.h (get_label_after, get_label_before, delete_jump,
3588 follow_jumps): Delete prototypes.
3589
3590 2007-02-15 Paolo Bonzini <bonzini@gnu.org>
3591
3592 * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
3593
3594 2007-02-15 Nick Clifton <nickc@redhat.com>
3595
3596 * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
3597 order to prevent it from being munged by the target.
3598
3599 2007-02-15 Uros Bizjak <ubizjak@gmail.com>
3600
3601 * config/i386/i386.md: Remove misleading comment.
3602
3603 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
3604
3605 * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
3606 reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
3607 invalid patterns.
3608
3609 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
3610
3611 * tree-sra.c (instantiate_missing_elements): Canonicalize
3612 bit-field types.
3613 (sra_build_assignment): New.
3614 (generate_copy_inout, generate_element_copy,
3615 generate_element_zero, generate_one_element_init): Use it.
3616
3617 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
3618
3619 * tree-sra.c (instantiate_missing_elements): Canonicalize
3620 bit-field types.
3621 (sra_build_assignment): New.
3622 (generate_copy_inout, generate_element_copy,
3623 generate_element_zero, generate_one_element_init): Use it.
3624
3625 2007-02-15 Alexandre Oliva <aoliva@redhat.com>
3626
3627 * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
3628 limbo die nodes.
3629
3630 2007-02-14 Joseph Myers <joseph@codesourcery.com>
3631
3632 * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
3633 types as aggregates not scalars.
3634 * function.c (assign_stack_temp_for_type): Likewise.
3635
3636 2007-02-14 Roger Sayle <roger@eyesopen.com>
3637 Zdenek Dvorak <dvorakz@suse.cz>
3638
3639 * tree-dump.c (dump_switch_p_1): Require exact match of the option
3640 name.
3641
3642 2007-02-14 Zdenek Dvorak <dvorakz@suse.cz>
3643
3644 * passes.c (next_pass_1): Clear the next field of the copied
3645 pass structure.
3646
3647 2007-02-14 Richard Henderson <rth@redhat.com>
3648
3649 * tree-sra.c (early_sra): New.
3650 (decl_can_be_decomposed_p): Deny va_list if early_sra.
3651 (tree_sra_early, pass_sra_early): New.
3652 * tree-pass.h (pass_sra_early): Declare.
3653 * passes.c (init_optimization_passes): Use it.
3654
3655 2007-02-14 Richard Guenther <rguenther@suse.de>
3656
3657 * flags.h (issue_strict_overflow_warning): Convert to a macro.
3658
3659 2007-02-14 Dorit Nuzman <dorit@il.ibm.com>
3660
3661 PR tree-optimization/30771
3662 * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
3663 also phi nodes.
3664 (vect_analyze_operations): Induction phis can now be marked as
3665 used_in_loop.
3666 (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
3667 Update documentation accordingly.
3668
3669 2007-02-14 Nick Clifton <nickc@redhat.com>
3670
3671 * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
3672 most 3 arguments are supported.
3673 (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
3674
3675 2007-02-13 Seongbae Park <seongbae.park@gmail.com>
3676
3677 * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
3678 Ensure dst->current is valid.
3679
3680 2007-02-13 Paul Brook <paul@codesourcery.com>
3681
3682 * config.gcc: Add arm*-*-uclinux-*eabi.
3683 * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
3684 (SUBTARGET_EXTRA_LINK_SPEC): Define.
3685 (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
3686 (LINK_GCC_C_SEQUENCE_SPEC): Undef.
3687 (LINK_SPEC): Define.
3688 (LIB_SPEC): Define.
3689 * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
3690 register.
3691 * config/arm/uclinux-eabi.h: New file.
3692 * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
3693 * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
3694 based targets.
3695
3696 2007-02-13 Ian Lance Taylor <iant@google.com>
3697
3698 * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
3699 * flags.h (warn_strict_overflow): Declare.
3700 (enum warn_strict_overflow_code): Define.
3701 (issue_strict_overflow_warning): New static inline function.
3702 * opts.c (warn_strict_overflow): New variable.
3703 (common_handle_option): Handle OPT_Wstrict_overflow and
3704 OPT_Wstrict_overflow_.
3705 * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
3706 OPT_Wall.
3707 * fold-const.c: Include intl.h.
3708 (fold_deferring_overflow_warnings): New static variable.
3709 (fold_deferred_overflow_warning): New static variable.
3710 (fold_deferred_overflow_code): New static variable.
3711 (fold_defer_overflow_warnings): New function.
3712 (fold_undefer_overflow_warnings): New function.
3713 (fold_undefer_and_ignore_overflow_warnings): New function.
3714 (fold_deferring_overflow_warnings_p): New function.
3715 (fold_overflow_warning): New static function.
3716 (make_range): Add strict_overflow_p parameter. Change all
3717 callers.
3718 (extract_muldiv, extract_muldiv_1): Likewise.
3719 (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
3720 tree_expr_nonnegative_p.
3721 (fold_negate_expr): Call fold_overflow_warning.
3722 (fold_range_test): Likewise.
3723 (fold_comparison): Likewise.
3724 (fold_binary): Likewise. Call tree_expr_nonnegative_warnv_p
3725 instead of tree_expr_nonnegative_p.
3726 (tree_expr_nonnegative_warnv_p): Rename from
3727 tree_expr_nonnegative_p, add strict_overflow_p parameter.
3728 (tree_expr_nonnegative_p): New function.
3729 (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
3730 strict_overflow_p parameter.
3731 (tree_expr_nonzero_p): New function.
3732 * passes.c (verify_interpass_invariants): New static function.
3733 (execute_one_pass): Call it.
3734 * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
3735 warnings.
3736 (number_of_iterations_exit, loop_niter_by_eval): Likewise.
3737 (estimate_numbers_of_iterations): Likewise.
3738 (scev_probably_wraps_p): Likewise.
3739 * tree-ssa-ccp.c: Include "toplev.h".
3740 (evaluate_stmt): Defer fold overflow warnings until we know we are
3741 going to optimize.
3742 (struct fold_stmt_r_data): Add stmt field.
3743 (fold_stmt_r): Defer fold overflow warnings until we know we
3744 optimized.
3745 (fold_stmt): Initialize stmt field of fold_stmt_r_data.
3746 (fold_stmt_inplace): Likewise.
3747 * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
3748 (cleanup_control_expr_graph): Defer fold overflow warnings until
3749 we know we are going to optimize.
3750 * tree-cfg.c (fold_cond_expr_cond): Likewise.
3751 * tree-ssa-threadedge.c (simplify_control_stmt_condition):
3752 Likewise.
3753 * tree-vrp.c (vrp_expr_computes_nonnegative): Call
3754 tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
3755 * tree-ssa-loop-manip.c (create_iv): Likewise.
3756 * c-typeck.c (build_conditional_expr): Likewise.
3757 (build_binary_op): Likewise.
3758 * tree-vrp.c (vrp_expr_computes_nonzero): Call
3759 tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
3760 (extract_range_from_unary_expr): Likewise.
3761 * simplify-rtx.c (simplify_const_relational_operation): Warn when
3762 assuming that signed overflow does not occur.
3763 * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
3764 * tree.h (tree_expr_nonnegative_warnv_p): Declare.
3765 (fold_defer_overflow_warnings): Declare.
3766 (fold_undefer_overflow_warnings): Declare.
3767 (fold_undefer_and_ignore_overflow_warnings): Declare.
3768 (fold_deferring_overflow_warnings_p): Declare.
3769 (tree_expr_nonzero_warnv_p): Declare.
3770 * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
3771 of warning options.
3772 (Warning Options): Document -Wstrict-overflow.
3773 * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
3774 (tree-ssa-ccp.o): Likewise.
3775 (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
3776 (fold-const.o): Depend on intl.h.
3777
3778 2007-02-13 Ian Lance Taylor <iant@google.com>
3779
3780 PR middle-end/30751
3781 * lower-subreg.c (resolve_simple_move): Decompose subregs in
3782 addresses.
3783
3784 2007-02-13 Stuart Hastings <stuart@apple.com>
3785
3786 * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
3787
3788 2007-02-13 Richard Henderson <rth@redhat.com>
3789
3790 * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
3791 handled_component_p before looking for the indirect_ref.
3792
3793 2007-02-13 Richard Henderson <rth@redhat.com>
3794
3795 * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
3796 remove flags clobber.
3797 (bswapsi2): New expander, emit code for !TARGET_BSWAP.
3798 (bswaphi_lowpart): New.
3799 (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
3800 remove TARGET_BSWAP test. Delete expander of the same name.
3801
3802 * optabs.c (widen_bswap, expand_doubleword_bswap): New.
3803 (expand_unop): Use them.
3804
3805 2007-02-13 Uros Bizjak <ubizjak@gmail.com>
3806
3807 * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
3808 *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
3809 *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
3810 *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
3811 *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
3812 *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
3813 *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
3814 assembler dialect choice from asm templates.
3815
3816 2007-02-12 Richard Henderson <rth@redhat.com>
3817
3818 * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
3819 (fixuns_trunc<SSEMODEF>si2): Use it.
3820 * config/i386/sse.md (vec_setv4sf_0): Export.
3821 * config/i386/i386.c (ix86_build_const_vector): Export.
3822 (ix86_split_convert_uns_si_sse): Rename from
3823 ix86_expand_convert_uns_si_sse and rewrite as a splitter.
3824 * config/i386/i386-protos.h: Update.
3825
3826 2007-02-13 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3827
3828 PR c/29521
3829 * c-typeck.c (c_finish_return): Improve warning message.
3830
3831 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3832
3833 * alias.c (find_symbolic_term): Delete unused function.
3834
3835 2007-02-12 Uros Bizjak <ubizjak@gmail.com>
3836
3837 * config/i386/i386.md (paritydi2, paritysi2): New expanders.
3838 (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
3839 (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
3840
3841 2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
3842
3843 * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3844 * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3845 the function, temporarily point the debug interface to the null one.
3846
3847 2007-02-12 Eric Botcazou <ebotcazou@adacore.com>
3848
3849 * dwarf2out.c (round_up_to_align): New static function.
3850 (field_byte_offset): Use it to round the offset.
3851
3852 2007-02-12 Richard Henderson <rth@redhat.com>
3853
3854 * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
3855 (inswl_const): Export.
3856
3857 2007-02-12 Richard Henderson <rth@redhat.com>
3858
3859 * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
3860 result mode of the libcall, convert back to outmode.
3861
3862 2007-02-12 Roger Sayle <roger@eyesopen.com>
3863
3864 * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
3865 (bswapdi2): New define_expand to implement 32-bit implementation.
3866
3867 2007-02-12 Nick Clifton <nickc@redhat.com>
3868
3869 * doc/invoke.texi (Overall Options): Document --help=.
3870 * gcc.c (target_help_flag): Rename to print_subprocess_flag.
3871 (cc1_options): Pass --help= on to cc1.
3872 (display_help): Add description of --help=.
3873 (process_command): Add code to handle --help=. Allow translated
3874 --help and --target-help switches to be passed on to compiler
3875 sub-process.
3876 (main): Remove unused if statement.
3877 * opts.c (columns): Remove.
3878 (LEFT_COLUMN): Define.
3879 (wrap_help): Add columns argument.
3880 (print_filtered_help): Change parameters to be an include bitmask,
3881 an exclude bitmask, an any bitmask and the column width. Move the
3882 code to display the params list here. Add code to display the
3883 status of options rather than their descriptions if the quiet flag
3884 is not active.
3885 (print_specific_help): Change parameters to be an include bitmask,
3886 an exclude bitmask and an any bitmask. Move code to look up the
3887 column width here. Decide upon the title for an options listing.
3888 (common_handle_options): Add code to handle --help=. Adapt code
3889 for --help and --target-help to use the revised form of the
3890 print_specific_help function.
3891 (print_help): Delete.
3892 (print_param_help): Delete.
3893 (print_switch): Delete.
3894 * opts.h (cl_lang_count): Add prototype.
3895 (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
3896 CL_MAX_OPTION_CLASS): New defines.
3897 * optc-gen.awk: Add construction of cl_lang_count.
3898 * c.opt: Add Warning attribute to warning options and Optimization
3899 attribute to optimization options.
3900 * common.opt: Likewise.
3901 Add --help=.
3902 Add -fhelp and -ftarget-help as aliases for the transformed --help
3903 and --target-help options.
3904 * opt-functions.awk: Add code to handle Warning and Optimization
3905 attributes.
3906
3907 2007-02-12 Richard Henderson <rth@redhat.com>
3908
3909 * config/alpha/constraints.md: New file.
3910 * config/alpha/alpha.c: Include tm-constrs.h.
3911 (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
3912 alpha_extra_constraint): Remove.
3913 (alpha_emit_conditional_branch): Use satisfies_constraint_*.
3914 * config/alpha/alpha-protos.h: Update.
3915 * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
3916 (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
3917 (EXTRA_CONSTRAINT): Remove.
3918 * config/alpha/alpha.md: Include constraints.md.
3919 (adddi splitter): Use satisfies_constraint_*.
3920 * config/alpha/predicates.md (add_operand): Likewise.
3921 (sext_add_operand, addition_operation): Likewise.
3922
3923 2007-02-12 Dorit Nuzman <dorit@il.ibm.com>
3924
3925 PR tree-optimization/29145
3926 * tree-data-ref.c (base_addr_differ_p): Make us more conservative
3927 in our handling of restrict qualified pointers.
3928
3929 2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3930
3931 PR middle-end/7651
3932 * doc/invoke.texi (Wunused-value): Update description.
3933 (Wextra): Delete item.
3934 * opts.c (set_Wextra): Don't use the value of Wextra to set the
3935 value of Wunused-value.
3936 * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
3937 (c_finish_stmt_expr): Don't check extra_warnings.
3938 (emit_side_effect_warnings): The caller is responsible to check
3939 warn_unused_value.
3940
3941 2007-02-11 Roger Sayle <roger@eyesopen.com>
3942 Matt Thomas <matt@3am-software.com>
3943
3944 * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
3945
3946 2007-02-11 Roger Sayle <roger@eyesopen.com>
3947
3948 * simplify-rtx.c (simplify_relational_operation_1): Optimize
3949 comparisons of POPCOUNT against zero.
3950 (simplify_const_relational_operation): Likewise.
3951
3952 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3953
3954 * doc/invoke.texi (Wextra): Delete outdated paragraph.
3955
3956 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3957
3958 * dwarf2out.c (root_type): Delete unused function.
3959
3960 2007-02-11 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3961
3962 * genattrtab.c (contained_in_p): Delete unused function.
3963 (write_expr_attr_cache): Likewise.
3964
3965 2007-02-11 Jan Hubicka <jh@suse.cz>
3966
3967 * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
3968 previous patch.
3969
3970 2007-02-11 Steven Bosscher <steven@gcc.gnu.org>
3971
3972 * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
3973 to add the REG_EQ* note.
3974 * see.c (see_merge_one_use_extension): Likewise.
3975 * local-alloc.c (update_equiv_regs): Likewise. Also don't
3976 turn REG_EQUAL notes into REG_EQUIV notes if the target
3977 register may have more than one set.
3978 * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
3979 * gcse.c (try_replace_reg): Likewise.
3980 * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
3981 * calls.c (fixup_tail_calls): Likewise. Abort if there is
3982 more than one REG_EQUIV note.
3983 * reload1.c (gen_reload): Use set_unique_reg_note.
3984
3985 2007-02-11 Uros Bizjak <ubizjak@gmail.com>
3986
3987 * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
3988 (ix86_builtin_conversion): New function.
3989
3990 2007-02-06 Mark Mitchell <mark@codesourcery.com>
3991
3992 PR target/29487
3993 * tree.h (DECL_REPLACEABLE_P): New macro.
3994 * except.c (set_nothrow_function_flags): Likewise.
3995
3996 2007-02-11 Tehila Meyzels <tehila@il.ibm.com>
3997 Ira Rosen <irar@il.ibm.com>
3998 Dorit Nuzman <dorit@il.ibm.com>
3999
4000 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
4001 * targhooks.c (default_builtin_vectorized_conversion): New.
4002 * targhooks.h (default_builtin_vectorized_function): New declaration.
4003 * target.h (struct vectorize): Add builtin_conversion field.
4004 * tree-vectorizer.h (type_conversion_vec_info_type): New enum
4005 stmt_vec_info_type value.
4006 (vectorizable_conversion): New declaration.
4007 * tree-vect-analyze.c (vect_analyze_operations): Add
4008 vectorizable_conversion call.
4009 * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
4010 * tree-vect-transform.c (vectorizable_conversion): New function.
4011 (vect_transform_stmt): Add case for type_conversion_vec_info_type.
4012 * tree-vect-generic.c (expand_vector_operations_1): Consider correct
4013 mode.
4014 * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
4015 (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
4016 (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
4017 or ALTIVEC_BUILTIN_VCFSX.
4018
4019 2007-02-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
4020
4021 PR target/30634
4022 * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
4023 CONST_DOUBLE and operand 0 is a hard register.
4024 (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
4025 memory. Fail if operand 1 is a non-zero CONST_INT and operand 0
4026 is a hard floating-point register.
4027
4028 2007-02-10 Richard Henderson <rth@redhat.com>
4029 Jakub Jelinek <jakub@redhat.com>
4030 Alexandre Oliva <aoliva@redhat.com>
4031
4032 * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
4033 * builtin-types.def (BT_WORD): Make unsigned.
4034 (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
4035 * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
4036 (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
4037 * c-decl.c (grokdeclarator): Don't error if !have_tls.
4038 * c-parser.c (c_parser_omp_threadprivate): Likewise.
4039 * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
4040 emulated tls.
4041 * expr.c (emutls_var_address): New.
4042 (expand_expr_real_1): Expand emulated tls.
4043 (expand_expr_addr_expr_1): Likewise.
4044 * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
4045 * output.h (emutls_finish): Declare.
4046 * toplev.c (compile_file): Call it.
4047 * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
4048 address before wrapping in CONST.
4049 * varasm.c (emutls_htab, emutls_object_type): New.
4050 (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
4051 (get_emutls_object_name, get_emutls_object_type): New.
4052 (get_emutls_init_templ_addr, emutls_decl): New.
4053 (emutls_common_1, emutls_finish): New.
4054 (assemble_variable): When emulating tls, swap decls; generate
4055 constructor for the emutls objects.
4056 (do_assemble_alias): When emulating tls, swap decl and target name.
4057 (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
4058 for emulated tls.
4059 * varpool.c (decide_is_variable_needed): Look at force_output.
4060 Recurse for emulated tls.
4061 (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
4062 with decide_is_variable_needed.
4063 * emutls.c: New file.
4064 * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
4065 tls_object for real tls.
4066
4067 2007-02-10 Kaz Kojima <kkojima@gcc.gnu.org>
4068
4069 PR rtl-optimization/29599
4070 * reload1.c (eliminate_regs_in_insn): Take the destination
4071 mode into account when computing the offset.
4072
4073 2007-02-09 Stuart Hastings <stuart@apple.com>
4074 Richard Henderson <rth@redhat.com>
4075
4076 * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
4077 * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
4078 * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
4079 fixuns_truncdfhi2): New.
4080 (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
4081 (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
4082 (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
4083 (floatunssidf2): Allow nonimmediate source.
4084 * gcc/config/i386/sse.md (movdi_to_sse): New.
4085 (vec_concatv2di): Drop '*'.
4086 * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
4087 ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
4088 ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
4089 New.
4090 * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
4091 ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
4092 ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
4093 ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
4094 (ix86_build_signbit_mask): Fix decl of v, refactor to call
4095 ix86_build_const_vector.
4096 (x86_emit_floatuns): Rewrite.
4097
4098 2007-02-10 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
4099
4100 * genautomata.c (longest_path_length): Delete unused function.
4101 (struct state): Delete unused longest_path_length.
4102 (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
4103 (get_free_state): Delete unused.
4104
4105 2007-02-09 Jan Hubicka <jh@suse.cz>
4106
4107 * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
4108 * doc/invoke.texi (inline-unit-growth): Update default value.
4109
4110 * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
4111 * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
4112 (rebuild_cgraph_edges): Likewise.
4113 * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
4114 (dump_cgraph_node): Dump frequencies.
4115 (cgraph_clone_edge): Add frequency scales.
4116 (cgraph_clone_node): Add freuqnecy.
4117 * cgraph.h (cgraph_edge): Add freuqnecy argument.
4118 (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
4119 (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
4120 * tree-pass.h (TODO_rebuild_frequencies): New constant.
4121 * cgraphunit.c (verify_cgraph_node): Verify frequencies.
4122 (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
4123 (save_inline_function_body): Likewise.
4124 * ipa-inline.c: inluce rtl.h
4125 (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
4126 (cgraph_edge_badness): Use frequencies.
4127 (cgraph_decide_recursive_inlining): Update clonning.
4128 (cgraph_decide_inlining_of_small_function): Dump frequency.
4129 * predict.c (estimate_bb_frequencies): Export.
4130 * predict.h (estimate_bb_frequencies): Declare.
4131 * tree-inline.c (copy_bb): Watch overflows.
4132 (expand_call_inline): Update call of cgraph_create_edge.
4133 (optimize_inline_calls): Use TODO flags to update frequnecies.
4134 * passes.h: Include predict.h
4135 (init_optimization_passes): Move profile ahead.
4136 (execute_function_todo): Handle TODO_rebuild_frequencies.
4137
4138 2007-02-09 Roger Sayle <roger@eyesopen.com>
4139
4140 * config/alpha/alpha.c (emit_insxl): Force the first operand of
4141 the insbl or inswl pattern into a register.
4142
4143 2007-02-09 Roger Sayle <roger@eyesopen.com>
4144
4145 * config/ia64/ia64.md (bswapdi2): New define_insn.
4146
4147 2007-02-09 Richard Henderson <rth@redhat.com>
4148
4149 * config/i386/constraints.md (Ym): New constraint.
4150 * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
4151 (movdi_1_rex64): Split sse and xmm general register moves from
4152 memory move alternatives. Use conditional register constraints.
4153 (movsf_1, movdf_integer): Likewise.
4154 (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
4155 (movdf_integer_rex64): New.
4156 (pushsf_rex64): Fix output constraints.
4157 * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
4158 (sse2_stored): Likewise.
4159 (sse2_storeq_rex64): New.
4160 * config/i386/i386.c (x86_inter_unit_moves): Enable for not
4161 amd and not generic.
4162 (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
4163 for optimize_size. Remove SF/DFmode hack.
4164
4165 2007-02-09 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4166
4167 * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
4168 (bit_SSE4a): New.
4169
4170 2007-02-09 Nathan Sidwell <nathan@codesourcery.com>
4171 Richard Sandiford <richard@codesourcery.com>
4172
4173 * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
4174 (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
4175 (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
4176 m68k/t-mlib to tmake_file.
4177 (m68020-*-elf*, m68k-*-elf*): Likewise. Add t-m68kbare as well.
4178 (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
4179 (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
4180 Allow it to be cf or m68k. Set m68k_arch_family. If that
4181 variable is not empty, add t-$m68k_arch_family to tmake_file.
4182 Add t-mlibs to tmake_file.
4183 * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
4184 * config/m68k/t-cf: New file.
4185 * config/m68k/t-m68k: Likewise.
4186 * config/m68k/t-mlibs: Likewise.
4187 * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4188 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4189 (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
4190 * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4191 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
4192 Delete.
4193 * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
4194 (INSTALL_LIBGCC): Delete.
4195 (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
4196 * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4197 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4198 (M68K_MLIB_CPU): Define.
4199 * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4200 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4201 (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
4202
4203 2007-02-09 Zdenek Dvorak <dvorakz@suse.cz>
4204 Richard Guenther <rguenther@suse.de>
4205
4206 PR middle-end/23361
4207 * fold-const.c (fold_comparison): Handle obfuscated comparisons
4208 against INT_MIN/INT_MAX.
4209 * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
4210 file if a loop is removed.
4211
4212 2007-02-09 Joseph Myers <joseph@codesourcery.com>
4213
4214 * calls.c (store_one_arg): Pass correct alignment to
4215 emit_push_insn for non-BLKmode values.
4216 * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
4217 unaligned stack slot via a suitably aligned slot.
4218
4219 2007-02-08 DJ Delorie <dj@redhat.com>
4220
4221 * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
4222 warnings.
4223 (legal_subregs): Use unsigned char, make const.
4224 (m32c_illegal_subreg_p): Use ARRAY_SIZE. Delete unused variables.
4225
4226 2007-02-08 Paul Brook <paul@codesourcery.com>
4227
4228 * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
4229 special interworking needed.
4230
4231 2007-02-08 Harsha Jagasia <harsha.jagasia@amd.com>
4232
4233 * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
4234 conditional to __SSE2__.
4235 (Entries below should have been added to first ChangeLog
4236 entry for amdfam10 dated 2007-02-05)
4237 * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
4238 defined.
4239 * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
4240 defined.
4241 * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
4242 defined.
4243
4244 2007-02-08 DJ Delorie <dj@redhat.com>
4245
4246 * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
4247 * config/m32c/m32c.c (legal_subregs): New.
4248 (m32c_illegal_subreg_p): New.
4249 * config/m32c/predicates.md (m32c_any_operand): Use it to reject
4250 unsupported subregs of hard regs.
4251
4252 2007-02-08 Jan Hubicka <jh@suse.cz>
4253
4254 * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
4255 the same one; always update histograms.
4256
4257 2007-02-08 Diego Novillo <dnovillo@redhat.com>
4258
4259 * passes.c (init_optimization_passes): Tidy comment.
4260
4261 2007-02-08 Roger Sayle <roger@eyesopen.com>
4262
4263 * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
4264 strip zero_extend, bswap and rotates from POCOUNT's argument.
4265 <PARITY>: Likewise, we can strip not, bswap, sign_extend,
4266 zero_extend and rotates from PARITY's argument.
4267 <BSWAP>: A byte-swap followed by a byte-swap is an identity.
4268 (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
4269 of an integer constant at compile-time.
4270
4271 2007-02-08 Diego Novillo <dnovillo@redhat.com>
4272
4273 PR 30562
4274 * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
4275 Update all users.
4276 * tree-ssa-alias.c (compute_is_aliased): Remove. Update all
4277 users.
4278 (init_alias_info):
4279 * tree-ssa-live.c (remove_unused_locals): Do not remove
4280 TREE_ADDRESSABLE variables.
4281 * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
4282 * tree-ssa-operands.c (add_virtual_operand): Remove argument
4283 FOR_CLOBBER. Update all users.
4284 If VAR has an associated alias set, add a virtual operand for
4285 it if no alias is found to conflict with the memory reference.
4286
4287 2007-02-07 Jan Hubicka <jh@suse.cz>
4288 Robert Kidd <rkidd@crhc.uiuc.edu>
4289
4290 * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
4291
4292 2007-02-07 Ian Lance Taylor <iant@google.com>
4293
4294 * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
4295
4296 2007-02-07 Roger Sayle <roger@eyesopen.com>
4297
4298 * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
4299 parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
4300 tablejumpdi, movsi_to_cr_one): Remove constraints from
4301 define_expand's match_operands.
4302
4303 2007-02-07 Roger Sayle <roger@eyesopen.com>
4304
4305 * global.c (compute_regsets): Move declatation of "i" inside of
4306 #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
4307
4308 2007-02-07 Jakub Jelinek <jakub@redhat.com>
4309
4310 PR c++/30703
4311 * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
4312 of INDIRECT_REF <RESULT_DECL>.
4313
4314 * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
4315
4316 2007-02-06 J"orn Rennecke <joern.rennecke@arc.com>
4317 Kaz Kojima <kkojima@gcc.gnu.org>
4318
4319 PR target/29746
4320 * config/sh/sh.c (expand_cbranchdi4): Use scratch register
4321 properly.
4322 (sh_initialize_trampoline): Add parentheses to avoid a warning.
4323
4324 2007-02-06 Zdenek Dvorak <dvorakz@suse.cz>
4325
4326 * doc/loop.texi: Document possibility not to perform disambiguation
4327 of loops with multiple latches.
4328 * cfgloopmanip.c (alp_enum_p): Removed.
4329 (add_loop): Handle subloops. Use get_loop_body_with_size.
4330 (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
4331 * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
4332 the new forwarder block.
4333 (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
4334 Handle the case latch is NULL.
4335 * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
4336 when marking loop exits.
4337 * ifcvt.c (if_convert): Ditto. Mark loop exits even if cfg cannot
4338 be modified.
4339 * loop-init.c (loop_optimizer_init): Do not modify cfg. Call
4340 disambiguate_loops_with_multiple_latches.
4341 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
4342 before fix_loop_structure.
4343 * cfgloop.c: Include pointer-set.h and output.h.
4344 (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
4345 update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
4346 (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
4347 find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
4348 mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
4349 disambiguate_multiple_latches, get_loop_body_with_size,
4350 disambiguate_loops_with_multiple_latches): New functions.
4351 (flow_loop_dump): Dump multiple latch edges.
4352 (flow_loop_nodes_find): Handle loops with multiple latches.
4353 (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
4354 (glb_enum_p): Modified.
4355 (get_loop_body): Use get_loop_body_with_size.
4356 * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
4357 (AVOID_CFG_MODIFICATIONS): New constant.
4358 (disambiguate_loops_with_multiple_latches, add_loop,
4359 get_loop_body_with_size): Declare.
4360 * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
4361
4362 2007-02-06 Seongbae Park <seongbae.park@gmail.com>
4363
4364 PR inline-asm/28686
4365 * global.c (compute_regsets): New function.
4366 (global_alloc): Refactored ELIMINABLE_REGSET
4367 and NO_GLOBAL_ALLOC_REGS computation out.
4368 (rest_of_handle_global_alloc): Call compute_regsets()
4369 for non-optimizing case.
4370
4371 2007-02-06 Richard Henderson <rth@redhat.com>
4372
4373 * config/i386/constraints.md (Y2): Rename from Y.
4374 (Yi): New constraint.
4375 * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
4376 pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
4377 zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
4378 (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
4379 truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
4380 fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
4381 floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
4382 absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
4383 fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
4384 * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
4385 mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
4386 vec_extractv2si_1): Change Y constraints to Y2.
4387 * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
4388 vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
4389 Change Y constraints to Y2.
4390 (sse2_loadld): Change Y constraints to x.
4391
4392 2007-02-06 Roger Sayle <roger@eyesopen.com>
4393
4394 * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
4395 (parity<mode>2): New define_expand using rs6000_emit_parity.
4396 * config/rs6000/rs6000.c (rs6000_emit_popcount,
4397 rs6000_emit_parity): New functions.
4398 * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
4399 rs6000_emit_parity): Prototype here.
4400
4401 2007-02-06 Ian Lance Taylor <iant@google.com>
4402
4403 * lower-subreg.c (simple_move_operand): Reject CONST.
4404 (resolve_clobber): Call validate_change rather than directly
4405 assigning to XEXP (pat, 0).
4406
4407 2006-02-06 Paolo Bonzini <bonzini@gnu.org>
4408
4409 * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
4410 (tree-ssa-reassoc.o): Add pointer-set.h dependency.
4411 (tree-cfg.o): Remove hashtab.h dependency.
4412
4413 * tree-ssa-loop-ivopts.c: Include pointer-set.h.
4414 (struct ivopts_data): Change niters to pointer_map_t.
4415 (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
4416 (niter_for_exit): Create pointer_map on demand. Change for
4417 pointer_map API.
4418 (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
4419 (free_loop_data): Destroy data->niters if created and reset field.
4420 (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
4421 (tree_ssa_iv_optimize_loop): Check for presence of stale data.
4422
4423 * tree-ssa-reassoc.c: Include pointer-set.h.
4424 (bb_rank): Change to long *.
4425 (operand_rank): Change to pointer_map_t.
4426 (find_operand_rank): Return long, -1 if not found. Declare as inline.
4427 (insert_operand_rank): Accept long.
4428 (operand_entry_hash, operand_entry_eq): Remove.
4429 (get_rank): Return long. Adjust for changes above.
4430 (init_reassoc): Change rank type to long. Adjust creation of bb_rank
4431 and operand_rank.
4432 (fini_reassoc): Delete operand_rank with pointer_map_destroy.
4433
4434 * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
4435 (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
4436 (insert_vi_for_tree): Rewrite for pointer_map API. Assert argument
4437 is not NULL.
4438 (lookup_vi_for_tree): Rewrite for pointer_map API. Return varinfo_t
4439 directly since it cannot be NULL.
4440 (get_vi_for_tree): Rewrite for pointer_map API.
4441 (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
4442 (init_alias_vars): Create vi_for_tree as pointer_map.
4443 (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
4444
4445 * tree-cfg.c: Don't include hashtab.h.
4446 (edge_to_cases): Declare as pointer_map.
4447 (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
4448 Delete.
4449 (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
4450 (start_recording_case_labels): Create edge_to_cases as pointer_map.
4451 (end_recoding_case_labels): Cleanup edge_to_cases manually before
4452 destroying it.
4453 (record_switch_edge): Delete.
4454 (get_cases_for_edge): Adjust for pointer_map API, inline
4455 record_switch_edge (rewritten for new API), remove goto.
4456
4457 2006-02-06 Paolo Bonzini <bonzini@gnu.org>
4458
4459 * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
4460 * tree-nested.c: Include pointer-set.h.
4461 (var_map_elt, var_map_eq, var_map_hash): Delete.
4462 (struct nesting_info): Remove GTY marker. Change the two htab_t's
4463 to pointer_map_t's.
4464 (nesting_info_bitmap_obstack): New.
4465 (lookup_field_for_decl): Adjust for pointer_map API.
4466 (lookup_tramp_for_decl): Adjust for pointer_map API.
4467 (get_nonlocal_debug_decl): Adjust for pointer_map API.
4468 (get_local_debug_decl): Adjust for pointer_map API.
4469 (convert_nl_goto_reference): Adjust for pointer_map API.
4470 (convert_nl_goto_receiver): Adjust for pointer_map API.
4471 (create_nesting_tree): Create outside GGC space. Create bitmap on
4472 the new obstack. Create field_map and var_map as pointer_maps.
4473 (free_nesting_tree): Adjust for changes to create_nesting_tree.
4474 (root): Delete.
4475 (lower_nested_functions): Move root here, no need to NULL it.
4476 Initialize and release the obstack.
4477
4478 2007-02-06 Paolo Bonzini <bonzini@gnu.org>
4479
4480 * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
4481 Remove prototypes and make them non-static.
4482 (struct tree_int_map): Remove.
4483 * tree.h (struct tree_int_map): Move here, turning TO into an
4484 unsigned int.
4485 (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
4486
4487 * tree.h (TREE_COMPLEXITY): Remove.
4488 (struct tree_exp): Remove complexity field.
4489 * tree.c (build1_stat): Don't set it.
4490
4491 2007-02-06 Dorit Nuzman <dorit@il.ibm.com>
4492 Victor Kaplansky <victork@il.ibm.com>
4493
4494 * tree-vectorizer.c (vect_is_simple_use): Support induction.
4495 (vect_is_simple_reduction): Support reduction with induction as
4496 one of the operands.
4497 (vect_is_simple_iv_evolution): Fix formatting.
4498 * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
4499 formatting. Don't mark induction phis for vectorization.
4500 (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
4501 * tree-vect-transform.c (get_initial_def_for_induction): New function.
4502 (vect_get_vec_def_for_operand): Support induction.
4503 (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
4504 induction case.
4505 (vectorizable_reduction): Support reduction with induction as one of
4506 the operands.
4507 (vectorizable_type_demotion): Use def-type of stmt argument rather
4508 than dummy def-type.
4509
4510 * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
4511 flag_tree_scev_cprop.
4512 * common.opt (tree-scev-cprop): New flag.
4513
4514 * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
4515 call to vect_get_new_vect_var.
4516
4517 2007-02-06 Ira Rosen <irar@il.ibm.com>
4518
4519 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
4520 vectype is not NULL.
4521 (vect_pattern_recog_1): Likewise.
4522
4523 2007-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4524
4525 * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
4526 (fold_negate_expr): Likewise.
4527
4528 2007-02-05 Alexandre Oliva <aoliva@redhat.com>
4529
4530 PR debug/30189
4531 * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
4532 even if cv-qualification is the same.
4533
4534 2007-02-05 Geoffrey Keating <geoffk@apple.com>
4535
4536 * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
4537 __enable_execute_stack on completion.
4538
4539 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4540
4541 * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
4542 athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
4543 athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
4544 athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
4545 athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
4546 athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
4547 athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
4548 athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
4549
4550 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4551
4552 * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
4553 cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
4554 swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
4555 fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
4556 x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
4557 floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
4558 floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
4559 mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
4560 umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
4561 umuldi3_highpart_rex64, umulsi3_highpart_insn,
4562 umulsi3_highpart_zext, smuldi3_highpart_rex64,
4563 smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
4564 x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
4565 sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
4566 sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
4567 sqrtextenddfxf2_i387): Added amdfam10_decode.
4568
4569 * config/i386/athlon.md (athlon_idirect_amdfam10,
4570 athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
4571 athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
4572 athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
4573 athlon_ivector_store_amdfam10): New define_insn_reservation.
4574 (athlon_idirect_loadmov, athlon_idirect_movstore): Added
4575 amdfam10.
4576
4577 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4578
4579 * config/i386/athlon.md (athlon_call_amdfam10,
4580 athlon_pop_amdfam10, athlon_lea_amdfam10): New
4581 define_insn_reservation.
4582 (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
4583 athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
4584 athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
4585
4586 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4587
4588 * config/i386/athlon.md (athlon_sseld_amdfam10,
4589 athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
4590 athlon_mmxssest_short_amdfam10): New define_insn_reservation.
4591
4592 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4593
4594 * config/i386/athlon.md (athlon_sseins_amdfam10): New
4595 define_insn_reservation.
4596 * config/i386/i386.md (sseins): Added sseins to define_attr type
4597 and define_attr unit.
4598 * config/i386/sse.md: Set type attribute to sseins for insertq
4599 and insertqi.
4600
4601 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4602
4603 * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
4604 ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
4605 ssecomi_load_amdfam10, ssecomi_amdfam10,
4606 sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
4607 define_insn_reservation.
4608 (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
4609
4610 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4611
4612 * config/i386/athlon.md (cvtss2sd_load_amdfam10,
4613 cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
4614 cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
4615 cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
4616 cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
4617 cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
4618 define_insn_reservation.
4619
4620 * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
4621 cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
4622 cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
4623 cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
4624 cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
4625
4626 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4627
4628 * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
4629 athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
4630 athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
4631 (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
4632 athlon_ssemul_load_k8): Added amdfam10.
4633
4634 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4635
4636 * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
4637 (x86_sse_unaligned_move_optimal): New variable.
4638
4639 * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
4640 m_AMDFAM10.
4641 (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
4642 for unaligned vector SSE double/single precision loads for AMDFAM10.
4643
4644 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4645
4646 * config/i386/i386.h (TARGET_AMDFAM10): New macro.
4647 (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
4648 Define TARGET_CPU_DEFAULT_amdfam10.
4649 (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
4650 (processor_type): Add PROCESSOR_AMDFAM10.
4651
4652 * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
4653 processor_type in config/i386/i386.h.
4654 Enable imul peepholes for TARGET_AMDFAM10.
4655
4656 * config.gcc: Add support for --with-cpu option for amdfam10.
4657
4658 * config/i386/i386.c (amdfam10_cost): New variable.
4659 (m_AMDFAM10): New macro.
4660 (m_ATHLON_K8_AMDFAM10): New macro.
4661 (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
4662 x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
4663 x86_promote_QImode, x86_integer_DFmode_moves,
4664 x86_partial_reg_dependency, x86_memory_mismatch_stall,
4665 x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
4666 x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
4667 x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
4668 x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
4669 Enable/disable for amdfam10.
4670 (override_options): Add amdfam10_cost to processor_target_table.
4671 Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
4672 processor_alias_table.
4673 (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
4674 (ix86_adjust_cost): Add code for amdfam10.
4675
4676 2007-02-05 Harsha Jagasia <harsha.jagasia@amd.com>
4677
4678 * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
4679 instruction set feature flag. Add new (-mpopcnt) flag for popcnt
4680 instruction. Add new SSE4A (-msse4a) instruction set feature flag.
4681 * config/i386/i386.h: Add builtin definition for SSE4A.
4682 * config/i386/i386.md: Add support for ABM instructions
4683 (popcnt and lzcnt).
4684 * config/i386/sse.md: Add support for SSE4A instructions
4685 (movntss, movntsd, extrq, insertq).
4686 * config/i386/i386.c: Add support for ABM and SSE4A builtins.
4687 Add -march=amdfam10 flag.
4688 * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
4689 * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
4690 and amdfam10.
4691 * doc/extend.texi: Add documentation for SSE4A builtins.
4692
4693 2007-02-05 Bob Wilson <bob.wilson@acm.org>
4694
4695 * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
4696
4697 2007-02-05 Richard Guenther <rguenther@suse.de>
4698
4699 * tree-vectorizer.h (vectorizable_function): Add argument type
4700 argument, change return type.
4701 * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
4702 * tree-vect-transform.c (vectorizable_function): Handle extra
4703 argument, return vectorized function decl.
4704 (build_vectorized_function_call): Remove.
4705 (vectorizable_call): Handle calls with result and argument types
4706 differing. Handle loop vectorization factor correctly.
4707 * targhooks.c (default_builtin_vectorized_function): Adjust for
4708 extra argument.
4709 * targhooks.h (default_builtin_vectorized_function): Likewise.
4710 * target.h (builtin_vectorized_function): Add argument type
4711 argument.
4712 * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
4713 extra argument, allow vectorizing of lrintf.
4714 * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
4715 documentation of target hook.
4716
4717 2007-02-05 Hans-Peter Nilsson <hp@axis.com>
4718
4719 PR target/30665
4720 * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
4721 ("*andhi_clear", andu (casesi+45)): For size-changed operand where
4722 memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
4723
4724 2007-02-05 Roger Sayle <roger@eyesopen.com>
4725
4726 * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
4727 BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
4728 <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
4729 * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
4730 before canonicalizing sincos to cexpi.
4731 (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
4732
4733 2007-02-05 Roger Sayle <roger@eyesopen.com>
4734
4735 * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
4736 Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
4737 (alpha_init_builtins): Use alpha_add_builtins to process tables.
4738
4739 2007-02-05 Roger Sayle <roger@eyesopen.com>
4740
4741 * mips-tfile.c (initialize_init_file): Correct endianness test.
4742
4743 2007-02-05 Kazu Hirata <kazu@codesourcery.com>
4744
4745 * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
4746 the 'y' constraint.
4747
4748 2007-02-05 Richard Sandiford <richard@codesourcery.com>
4749
4750 * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
4751 saves in a PARALLEL before the register assignments.
4752
4753 2007-02-05 Richard Sandiford <richard@codesourcery.com>
4754
4755 * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
4756 DWARF_FRAME_RETURN_COLUMN to be a general register.
4757 * dwarf2out.c (init_return_column_size): New function, split from...
4758 (expand_builtin_init_dwarf_reg_sizes): ...here. Allow both
4759 DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
4760 to be nongeneral registers.
4761 * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
4762 integer registers.
4763 (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
4764 (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
4765
4766 2007-02-04 Zdenek Dvorak <dvorakz@suse.cz>
4767
4768 * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
4769
4770 2007-02-04 Zdenek Dvorak <dvorakz@suse.cz>
4771
4772 * cfgloopmanip.c (loop_delete_branch_edge): Removed.
4773 (remove_path): Use can_remove_branch_p and remove_branch instead
4774 of loop_delete_branch_edge.
4775 * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
4776 (tree_transform_and_unroll_loop): Remove dead branches immediately.
4777 Update profile using scale_dominated_blocks_in_loop.
4778 * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
4779 * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
4780 (can_remove_branch_p, remove_branch): Declare.
4781 * tree-cfg.c (tree_can_remove_branch_p): New function.
4782 (tree_cfg_hooks): Add tree_can_remove_branch_p.
4783 * cfgrtl.c (rtl_can_remove_branch_p): New function.
4784 (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
4785
4786 2007-02-05 Jan Hubicka <jh@suse.cz>
4787
4788 PR middle-end/30696
4789 * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
4790 nodes in cgraph, don't remove offline copy of the function.
4791
4792 2007-02-04 Jan Hubicka <jh@suse.cz>
4793
4794 * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
4795 vectors might cause maybe_lookup_element_for_expr to be called
4796 on non-sra-candidate.
4797
4798 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
4799
4800 * config/bfin/bfin-modes.def, config/bfin/bfin.c,
4801 config/bfin/bfin.md, config/bfin/predicates.md: Follow
4802 spelling conventions.
4803
4804 2007-02-04 Richard Guenther <rguenther@suse.de>
4805
4806 PR middle-end/30636
4807 * fold-const.c (try_move_mult_to_index): Make sure to not
4808 overflow one dimension of a multi-dimensional array access.
4809
4810 2007-02-04 Jan Hubicka <jh@suse.cz>
4811
4812 * passes.c (init_optimization_passes): Reindent.
4813
4814 2007-02-04 Jan Hubicka <jh@suse.cz>
4815 Eric Botcazou <ebotcazou@adacore.com>
4816
4817 * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
4818 (execute_fixup_cfg): Break out the abnormal goto code.
4819 * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
4820 (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
4821 (optimize_inline_calls): Call make_nonlocal_label_edges.
4822
4823 2007-02-04 Jan Hubicka <jh@suse.cz>
4824
4825 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
4826 true when something was changed.
4827 (rename_ssa_copies): When something was changed, do
4828 TODO_remove_unused_locals.
4829 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
4830 add TODO_remove_unused_locals when instruction was removed.
4831
4832 2007-02-04 Jan Hubicka <jh@suse.cz>
4833
4834 * ipa-inline.c (try_inline): Improve debug output; work on already
4835 inline edges too.
4836 (cgraph_decide_inlining_incrementally): Indent; improve debug output;
4837 call try_inline for already inlined edges too when flattening;
4838 inline also functions that make callee growth but overall unit size
4839 reduce.
4840
4841 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
4842
4843 * config/m32c/bitops.md, config/m32c/jump.md,
4844 config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
4845 config/m32r/m32r.h, config/m32r/m32r.md,
4846 config/m32r/predicates.md, config/m68hc11/larith.asm,
4847 config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
4848 config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
4849 config/mips/mips-protos.h, config/mips/mips.c,
4850 config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
4851 config/mn10300/mn10300.h, config/mn10300/predicates.md,
4852 config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
4853 spelling conventions.
4854
4855 * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
4856 Follow spelling conventions.
4857
4858 2007-02-03 Douglas Gregor <doug.gregor@gmail.com>
4859
4860 * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
4861 warn about C++0x compatibility.
4862
4863 2007-02-04 Kazu Hirata <kazu@codesourcery.com>
4864
4865 * config/h8300/h8300.c, config/h8300/h8300.h,
4866 config/h8300/h8300.md: Follow spelling conventions.
4867
4868 2007-02-03 Uros Bizjak <ubizjak@gmail.com>
4869
4870 PR middle-end/30667
4871 * combine.c (try_combine): Do not substitute source operand
4872 with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
4873
4874 2007-02-03 Jan Hubicka <jh@suse.cz>
4875
4876 PR gcov-profile/30650
4877 * value-prof.c (stringop_block_profile): Fix handling of size counter;
4878 do not divide by zero for never executed counters.
4879 (tree_find_values_to_profile): Fix counters.
4880 * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
4881
4882 2007-02-03 Ian Lance Taylor <iant@google.com>
4883
4884 * lower-subreg.c (simple_move_operand): New static function,
4885 broken out of simple_move. Reject LABEL_REF, SYMBOL_REF, and HIGH
4886 operands.
4887 (simple_move): Call simple_move_operand.
4888 (find_decomposable_subregs): Add special handling of MEMs.
4889 (can_decompose_p): Rename from cannot_decompose_p. Reverse
4890 meaning of return value. If we see a hard register, test whether
4891 it can store a word_mode value. Change all callers.
4892
4893 2007-02-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
4894
4895 * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
4896 ftrapv insns and expanders.
4897 (subdi3): Change define_expand operand 1 to arith11_operand, and
4898 operand 2 to reg_or_0_operand. Change constraints of 64-bit insn
4899 pattern to handle reg_or_0 operands. Revise 32-bit insn pattern to
4900 handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
4901 respectively.
4902
4903 PR middle-end/30174
4904 * varasm.c (notice_global_symbol): Treat global objects as weak when
4905 flag_shlib is true.
4906
4907 2007-02-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4908
4909 * emit-rtl.c (dconstpi): Delete.
4910 (dconstsqrt2): New.
4911 (init_emit_once): Delete dconstpi and init dconstsqrt2.
4912 * real.h (dconstpi): Delete.
4913 (dconstsqrt2): New.
4914 * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
4915 (fold_builtin_hypot): Likewise.
4916
4917 2007-02-03 Tom Tromey <tromey@redhat.com>
4918
4919 PR driver/30246
4920 * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
4921 -gcoff3, -gxcoff3, -gvms3 implies -dD.
4922
4923 2007-02-03 Kazu Hirata <kazu@codesourcery.com>
4924
4925 * c-decl.c, config/avr/avr.c, config/avr/avr.h,
4926 config/m68k/m68k.c, config/m68k/netbsd-elf.h,
4927 config/mn10300/mn10300.c, config/pdp11/pdp11.h,
4928 config/rs6000/cell.md, config/rs6000/darwin.h,
4929 config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
4930 config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
4931 jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
4932 tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
4933 typos. Follow spelling conventions.
4934 * doc/invoke.texi: Follow spelling conventions.
4935
4936 2007-02-03 Roger Sayle <roger@eyesopen.com>
4937
4938 * simplify-rtx.c (simplify_relational_operation_1): Implement some
4939 canonicalization transformations that attempt to simplify integer
4940 constant comparisons to become comparisons against zero.
4941
4942 2007-02-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4943
4944 * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
4945 fabs(x)*sqrt(2).
4946 * fold-const.c (fold_binary): Fix comment typos. Fold complex
4947 (x,0)-(0,y) into (x,-y). Likewise (0,y)-(x,0) into (-x,y).
4948
4949 2007-02-02 Mike Stump <mrs@apple.com>
4950
4951 * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
4952 * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
4953 (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
4954 generate a branch island.
4955
4956 2007-02-02 Bob Wilson <bob.wilson@acm.org>
4957
4958 * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
4959 (xtensa_legitimate_address_p): New.
4960 (xtensa_legitimize_address): New.
4961 (xtensa_output_addr_const_extra): New.
4962 * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
4963 (BASE_REG_P): New.
4964 (REG_OK_FOR_BASE_P): Use BASE_REG_P.
4965 (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
4966 (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
4967 (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
4968 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
4969 (xtensa_legitimize_address): New.
4970 (xtensa_output_addr_const_extra): New.
4971
4972 2007-02-02 Steve Ellcey <sje@cup.hp.com>
4973
4974 * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
4975
4976 2007-02-02 Ian Lance Taylor <iant@google.com>
4977
4978 * expmed.c (expand_divmod): Add comment.
4979
4980 2007-02-02 Kazu Hirata <kazu@codesourcery.com>
4981
4982 * emit-rtl.c (renumber_insns): Remove.
4983 * flags.h: Remove the extern for flag_renumber_insns.
4984 * rtl.h: Remove the prototype for renumber_insns.
4985 * toplev.c (flag_renumber_insns): Remove.
4986
4987 2007-02-02 Hui-May Chang <hm.chang@apple.com>
4988
4989 Revert for x86 darwin:
4990 2005-06-19 Uros Bizjak <uros@kss-loka.si>
4991
4992 * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
4993 code before the following patch under TARGET_MACHO.
4994 (ix86_function_value_regno_p): Likewise.
4995
4996 2007-02-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4997
4998 * fold-const.c (negate_expr_p, fold_negate_expr): Handle
4999 COMPLEX_EXPR.
5000
5001 2007-02-02 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
5002
5003 PR target/29682
5004 * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
5005 general or fp registers. Add comments.
5006 * config/ia64/ia64.md (reg_pred_prefix): Add comment.
5007
5008 2007-02-02 Paolo Bonzini <bonzini@gnu.org>
5009
5010 * pointer-set.c (insert_aux): Only return insertion slot.
5011 (pointer_set_insert): Adjust.
5012 (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
5013 pointer_map_destroy, pointer_map_insert, pointer_map_contains,
5014 pointer_map_traverse): New.
5015 * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
5016 pointer_map_create, pointer_map_destroy, pointer_map_insert,
5017 pointer_map_contains, pointer_map_traverse): Declare.
5018
5019 2007-02-02 Jakub Jelinek <jakub@redhat.com>
5020
5021 PR middle-end/30473
5022 * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
5023 sprintf (str, "%s"). Do not optimize sprintf (str, "nopercent", p++).
5024
5025 2007-02-02 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
5026
5027 * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
5028
5029 (struct _dep): New type.
5030 (dep_t): New typedef.
5031 (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
5032 (DEP_STATUS): New access macro. The macro with the same name was
5033 renamed to DEP_LINK_STATUS.
5034 (dep_init): Declare function
5035
5036 (struct _dep_link): New type.
5037 (dep_link_t): New typedef.
5038 (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
5039 (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
5040 (DEP_LINK_STATUS): New macro.
5041 (debug_dep_links): New debug function.
5042
5043 (struct _deps_list): New type.
5044 (deps_list_t): New typedef.
5045 (DEPS_LIST_FIRST): New access macro.
5046 (FOR_EACH_DEP_LINK): New cycle macro.
5047 (create_deps_list, free_deps_list, delete_deps_list): Declare
5048 functions.
5049 (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
5050 (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
5051 (copy_deps_list_change_con): Ditto.
5052
5053 (move_dep_link): Declare function.
5054
5055 (struct _dep_node): New type.
5056 (dep_node_t): New typedef.
5057 (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
5058
5059 (struct haifa_insn_data.back_deps): New field to hold backward
5060 dependencies of the insn.
5061 (struct haifa_insn_data.depend): Rename to forw_deps. Change its type
5062 to deps_list_t.
5063 (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
5064 Change its type to deps_list_t.
5065 (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
5066 (INSN_DEPEND): Rename to INSN_FORW_DEPS.
5067 (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
5068
5069 (INSN_COST): Move to haifa-sched.c. Use insn_cost () instead.
5070
5071 (DEP_STATUS): Rename to DEP_LINK_STATUS. Fix typo in the comment.
5072
5073 (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
5074 all callers.
5075 (dep_cost): Declare.
5076
5077 * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
5078 (ds_to_dk, dk_to_ds): New functions.
5079
5080 (init_dep_1): New static function.
5081 (init_dep): New function.
5082 (copy_dep): New static function.
5083
5084 (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
5085 functions.
5086 (detach_dep_link): New static function.
5087 (move_dep_link): New function.
5088
5089 (dep_links_consistent_p, dump_dep_links): New static functions.
5090 (debug_dep_links): New debugging function.
5091
5092 (deps_obstack, dl_obstack, dn_obstack): New static variables.
5093
5094 (alloc_deps_list, init_deps_list): New static functions.
5095 (create_deps_list): New function.
5096 (clear_deps_list): New static function.
5097 (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
5098 (deps_list_consistent_p, dump_deps_list): New static functions.
5099 (debug_deps_list): New function.
5100 (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
5101 functions.
5102 (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
5103
5104 (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
5105 use new scheduler dependencies lists.
5106 (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
5107 (sched_analyze): Ditto. Initialize dependencies lists.
5108 (add_forw_dep, compute_forward_dependences): Update to use new
5109 scheduler dependencies lists.
5110
5111 (init_dependency_caches): Init deps_obstack.
5112 (free_dependency_caches): Free deps_obstack.
5113
5114 (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
5115 new scheduler dependencies lists.
5116 (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
5117 (add_back_forw_dep, delete_back_forw_dep): Ditto.
5118
5119 * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
5120 Update to use new scheduler dependencies lists.
5121 (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
5122 (debug_dependencies): Ditto.
5123 (schedule_region): Update comments.
5124
5125 * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
5126 scheduler dependencies lists.
5127 (schedule_ebb): Update comments.
5128
5129 * rtl.def (DEPS_LIST): Remove.
5130
5131 * lists.c (unused_deps_list): Remove.
5132 (free_list): Update assertions.
5133
5134 (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
5135 (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
5136
5137 * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
5138 (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
5139
5140 * haifa-sched.c (comments): Update.
5141 (insn_cost1): Remove. Inline the code into insn_cost ().
5142 (insn_cost): Update to use new scheduler dependencies lists. Move
5143 processing of the dependency cost to dep_cost ().
5144 (dep_cost): New function. Use it instead of insn_cost () when
5145 evaluating cost of the dependency. Use compatible interface to
5146 interact with the target.
5147 (priority): Update to use new scheduler dependencies lists.
5148 (rank_for_schedule): Ditto. Optimize heuristic that prefers the insn
5149 with greater number of insns that depend on the insn.
5150 (schedule_insn): Update to use new scheduler dependencies lists. Add
5151 code to free backward dependencies lists. Inline and optimize code
5152 from resolve_dep () - see PR28071.
5153 (ok_for_early_queue_removal): Update to use new scheduler dependencies
5154 lists. Update call to targetm.sched.is_costly_dependence hook.
5155
5156 (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
5157 scheduler dependencies lists.
5158
5159 (resolve_dep): Remove. Move the logic to schedule_insn ().
5160 (init_h_i_d): Initialize dependencies lists.
5161
5162 (process_insn_depend_be_in_spec): Rename to
5163 process_insn_forw_deps_be_in_spec. Update to use new scheduler
5164 dependencies lists.
5165 (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
5166 Update to use new scheduler dependencies lists.
5167 (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
5168
5169 * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
5170 new scheduler dependencies lists.
5171 (build_intra_loop_deps): Ditto.
5172
5173 * target.h (struct _dep): Declare to use in
5174 gcc_target.sched.is_costly_dependence.
5175 (struct gcc_target.sched.adjust_cost): Fix typo.
5176 (struct gcc_target.sched.is_costly_dependence): Change signature to use
5177 single dep_t parameter instead of an equivalent triad.
5178 (struct gcc_target.sched.adjust_cost_2): Remove.
5179
5180 * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
5181
5182 * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
5183
5184 * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
5185 documentation.
5186 (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
5187
5188 * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
5189 (REG_DEP_TRUE): Document.
5190
5191 * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
5192 Change signature to correspond to the targetm.sched.adjust_cost hook.
5193 Update use in TARGET_SCHED_ADJUST_COST_2.
5194 (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
5195 (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
5196 new scheduler dependencies lists.
5197 (ia64_gen_check): Ditto.
5198
5199 * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
5200 dependencies lists.
5201
5202 * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
5203 signature to correspond to the targetm.sched.is_costly_dependence hook.
5204 (is_costly_group): Update to use new scheduler dependencies lists.
5205
5206 * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
5207 instead of INSN_COST () macro.
5208
5209 2007-02-01 Ian Lance Taylor <iant@google.com>
5210
5211 * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
5212
5213 2007-02-01 Guy Martin <gmsoft@gentoo.org>
5214
5215 * pa.md (tp_load): Correct mfctl instruction syntax.
5216
5217 2007-02-01 Geoffrey Keating <geoffk@apple.com>
5218
5219 * config/rs6000/rs6000.c (rs6000_stack_info): Correct
5220 altivec_padding_size calculation on AIX. Improve comment, add
5221 assert to verify that it's right.
5222
5223 * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
5224 64-bit.
5225
5226 2007-2-01 Seongbae Park <seongbae.park@gmail.com>
5227
5228 PR inline-asm/28686
5229 * global.c (global_alloc): Add mising initialization of
5230 ELIMINABLE_REGSET.
5231
5232 2007-02-01 Roger Sayle <roger@eyesopen.com>
5233
5234 * alias.c (init_alias_analysis): Correct whitespace.
5235 * bb-reorder.c (fix_edges_for_rarely_executed_code,
5236 partition_hot_cold_basic_blocks): Likewise.
5237 * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
5238 expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
5239 maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
5240 fold_builtin_snprintf_chk, fold_builtin_printf,
5241 fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
5242 do_mpfr_arg3, do_mpfr_sincos): Likewise.
5243 * cfgcleanup.c (cleanup_cfg): Likewise.
5244 * cfgexpand.c (tree_expand_cfg): Likewise.
5245 * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
5246 * function.c (get_next_funcdef_no): Likewise.
5247 * gengtype.c (main): Likewise.
5248 * genmodes.c (main): Likewise.
5249 * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
5250 * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
5251 * ifcvt.c (noce_emit_move_insn): Likewise.
5252 * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
5253 Likewise.
5254 * stor-layout.c (get_best_mode): Likewise.
5255 * tree-ssa-loop-niter.c (get_val_for): Likewise.
5256 * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
5257 scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
5258 perform_var_substitution, solve_graph): Likewise.
5259 * tree-vrp.c (vrp_finalize): Likewise.
5260
5261 2007-02-01 Ian Lance Taylor <iant@google.com>
5262
5263 * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
5264 high part of a paradoxical subreg, return a constant zero.
5265
5266 2007-02-01 Zdenek Dvorak <dvorakz@suse.cz>
5267
5268 * toplev.c (lang_dependent_init): Call init_set_costs.
5269 * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
5270
5271 2007-02-01 Richard Guenther <rguenther@suse.de>
5272
5273 PR middle-end/30656
5274 * fold-const.c (fold_negate_expr): Allow negating a
5275 constant if overflow does not change.
5276
5277 2007-02-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5278
5279 * doc/c-tree.texi (Expression trees): Improve markup.
5280 * doc/tm.texi (Register Classes, Addressing Modes)
5281 (Floating Point): Fix spacing after abbreviations. Fix some
5282 typos.
5283
5284 2007-02-01 Ben Elliston <bje@au.ibm.com>
5285
5286 * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
5287 * doc/contrib.texi: Likewise.
5288 * doc/install.texi: Likewise.
5289
5290 2007-01-31 Richard Henderson <rth@redhat.com>
5291 Ian Lance Taylor <iant@google.com>
5292
5293 * lower-subreg.c: New file.
5294 * rtl.def (CONCATN): Define.
5295 * passes.c (init_optimization_passes): Add pass_lower_subreg and
5296 pass_lower_subreg2.
5297 * emit-rtl.c (update_reg_offset): New static function, broken out
5298 of gen_rtx_REG_offset.
5299 (gen_rtx_REG_offset): Call update_reg_offset.
5300 (gen_reg_rtx_offset): New function.
5301 * regclass.c: Revert patch of 2006-03-05, restoring
5302 reg_scan_update.
5303 (clear_reg_info_regno): New function.
5304 * dwarf2out.c (concatn_loc_descriptor): New static function.
5305 (loc_descriptor): Handle CONCATN.
5306 * common.opt (fsplit_wide_types): New option.
5307 * opts.c (decode_options): Set flag_split_wide_types when
5308 optimizing.
5309 * timevar.def (TV_LOWER_SUBREG): Define.
5310 * rtl.h (gen_reg_rtx_offset): Declare.
5311 (reg_scan_update): Declare.
5312 * regs.h (clear_reg_info_regno): Declare.
5313 * tree-pass.h (pass_lower_subreg): Declare.
5314 (pass_lower_subreg2): Declare.
5315 * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
5316 (Optimize Options): Add -fsplit-wide-types to -O1 list. Document
5317 -fsplit-wide-types.
5318 * doc/rtl.texi (Regs and Memory): Document concat and concatn.
5319 * Makefile.in (OBJS-common): Add lower-subreg.o.
5320 (lower-subreg.o): New target.
5321
5322 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
5323
5324 * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
5325
5326 2007-01-31 Anatoly Sokolov <aesok@post.ru>
5327
5328 PR target/19087
5329 * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
5330
5331 2007-01-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5332
5333 PR middle-end/29335
5334 * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
5335
5336 2007-01-31 Zdenek Dvorak <dvorakz@suse.cz>
5337
5338 * cfgloop.h: Include vec-prim.h.
5339 (enum li_flags): Remove LI_ONLY_OLD.
5340 (loop_iterator): Changed.
5341 (fel_next, fel_init): Iterate over loop tree.
5342 (FOR_EACH_LOOP_BREAK): New macro.
5343 * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
5344 FOR_EACH_LOOP.
5345 * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
5346 * modulo-sched.c (sms_schedule): Ditto.
5347 * tree-vectorizer.c (vectorize_loops): Ditto.
5348 * doc/loop.texi: Update information on loop numbering and behavior of
5349 FOR_EACH_LOOP wrto new loops.
5350 * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
5351 add_to_evolution_1): Test nestedness of loops instead of comparing
5352 their numbers.
5353 * tree-chrec.c (chrec_fold_plus_poly_poly,
5354 chrec_fold_multiply_poly_poly, chrec_evaluate,
5355 hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
5356 reset_evolution_in_loop): Ditto.
5357 * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
5358
5359 2007-01-31 Dirk Mueller <dmueller@suse.de>
5360
5361 * c-common.c (warn_about_parentheses): Separate warning about
5362 un-parenthized sequence of comparison operators from the one
5363 which is supposed to warn about x <= y <= z.
5364
5365 2007-01-31 Uros Bizjak <ubizjak@gmail.com>
5366
5367 * optabs.h (enum optab_index): Add new OTI_isinf.
5368 (isinf_optab): Define corresponding macro.
5369 * optabs.c (init_optabs): Initialize isinf_optab.
5370 * genopinit.c (optabs): Implement isinf_optab using isinf?f2
5371 patterns.
5372 * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
5373 (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
5374 using isinf_optab.
5375 (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
5376 expand_builtin_interclass_mathfn.
5377 * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
5378 * config/i386/i386.md (UNSPEC_FXAM): New constant.
5379 (fxam<mode>2_i387): New insn pattern.
5380 (isinf<mode>2) New expander to implement isinf, isinff and isinfl
5381 built-in functions as x87 inline asm.
5382
5383 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
5384
5385 * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
5386
5387 2007-01-30 Eric Christopher <echristo@apple.com>
5388
5389 * config.gcc: Add geode.
5390
5391 2007-01-31 Kazu Hirata <kazu@codesourcery.com>
5392
5393 * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
5394 ipa-inline.c, tree-profile.c, tree-ssa-live.c,
5395 tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
5396 value-prof.c: Fix comment typos.
5397
5398 2007-01-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5399
5400 PR c++/24745
5401 * doc/invoke.texi (Wpointer-arith): Document warning.
5402
5403 2007-01-30 Janis Johnson <janis187@us.ibm.com>
5404
5405 * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
5406 the list of discrepancies from the draft TR.
5407
5408 2007-01-30 Dirk Mueller <dmueller@suse.de>
5409
5410 PR c++/30601
5411 * doc/invoke.texi (-Wreturn-type): Update description to
5412 match new behavior.
5413
5414 2007-01-30 Richard Sandiford <richard@codesourcery.com>
5415
5416 * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
5417
5418 2007-01-30 Uros Bizjak <ubizjak@gmail.com>
5419
5420 * builtins.c (expand_builtin_int_interclass_roundingfn): New function
5421 to handle optabs that operate on floating point input argument and
5422 output to integer output.
5423 (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
5424 (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
5425 (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
5426 expand_builtin_interclass_mathfn ().
5427 * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
5428 (ilogbsi2): Remove.
5429 (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
5430 ilogbl built-in functions as x87 intrinsics.
5431
5432 2007-01-30 Richard Guenther <rguenther@suse.de>
5433
5434 PR middle-end/27657
5435 * dwarf2out.c (reference_to_unused): Query varpool if the
5436 variable was output.
5437
5438 2007-01-30 Richard Guenther <rguenther@suse.de>
5439
5440 PR middle-end/30313
5441 * passes.c (execute_one_pass): Reset in_gimple_form to not
5442 confuse non-unit-at-a-time mode.
5443
5444 2007-01-29 Roger Sayle <roger@eyesopen.com>
5445 Richard Guenther <rguenther@suse.de>
5446
5447 * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
5448 avoid undefined behaviour on overflow. Use force_fit_type_double
5449 to construct the constant with the specified TREE_OVERFLOW.
5450
5451 2007-01-29 Janis Johnson <janis187@us.ibm.com>
5452
5453 * config/dfp-bit.c: Add parameterized support for fp exceptions.
5454 * config/dfp-bit.h: Ditto.
5455
5456 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5457
5458 * c-decl.c (pop_scope): Replace warnings with call to
5459 warn_for_unused_label.
5460 * c-common.h (warn_for_unused_label): Declare.
5461 * c-common.c (warn_for_unused_label): Define.
5462
5463 2007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
5464
5465 * tree-optimize.c (update_inlined_to_pointers): Delete unused
5466 function.
5467
5468 2007-01-29 Janis Johnson <janis187@us.ibm.com>
5469
5470 * Makefile.in (USER_H): Remove decfloat.h.
5471 * ginclude/decfloat.h: Delete, moving contents to ...
5472 * ginclude/float.h: Add support for decimal floating point,
5473 guarded by __STDC_WANT_DEC_FP__.
5474
5475 2007-01-29 Mike Stump <mrs@apple.com>
5476
5477 * doc/gccint.texi (Top): Rename Loop Representation to Loop
5478 Analysis and Representation to resolve case insensitive conflict.
5479 * doc/loop.texi (Loop Analysis and Representation): Likewise.
5480
5481 2007-01-28 Daniel Berlin <dberlin@dberlin.org>
5482
5483 * tree.h (struct tree_memory_tag): Add aliases member.
5484 (MTAG_ALIASES): New macro.
5485 * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
5486 (add_may_alias): Remove pointer-set. Update for may_aliases being
5487 a bitmap.
5488 (mark_aliases_call_clobbered): Update for may_aliases being a
5489 bitmap.
5490 (compute_tag_properties): Ditto.
5491 (create_partition_for): Ditto.
5492 (compute_memory_partitions): Ditto.
5493 (dump_may_aliases_for): Ditto.
5494 (is_aliased_with): Ditto.
5495 (add_may_alias_for_new_tag): Ditto.
5496 (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
5497 (compute_is_aliased): New function.
5498 (compute_may_aliases): Call compute_is_aliased).
5499 (init_alias_info): Initialize alias_bitmap_obstack.
5500 (union_alias_set_into): New function.
5501 (compute_flow_sensitive_aliasing): Use union_aliases_into.
5502 (have_common_aliases_p): Rewrite to take two bitmaps and use
5503 intersection.
5504 (compute_flow_insensitive_aliasing): Stop using pointer-sets.
5505 Update for bitmaps.
5506 (finalize_ref_all_pointers): Update for add_may_alias changes.
5507 (new_type_alias): Ditto.
5508 * tree-flow-inline.h (may_aliases): Return a bitmap.
5509 * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
5510 * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
5511 may_aliases being a bitmap.
5512 * tree-flow.h (struct var_ann_d): Remove may_aliases member.
5513 may_aliases now returns a bitmap.
5514 * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
5515 being a bitmap.
5516 * tree-ssa-operands.c (add_virtual_operand): Update for
5517 may_aliases being a bitmap.
5518
5519 2007-01-29 Daniel Berlin <dberlin@dberlin.org>
5520
5521 PR tree-optimization/30630
5522 * tree-ssa-structalias.c (do_complex_constraint): Mark correct
5523 variable as changed.
5524
5525 2007-01-29 Simon Martin <simartin@users.sourceforge.net>
5526
5527 PR c++/28266
5528 * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
5529 expanded only once even if an error occurs.
5530
5531 2007-01-29 Ben Elliston <bje@au.ibm.com>
5532
5533 * gcov-io.h (__gcov_indirect_call_profiler): Declare.
5534 (__gcov_average_profiler): Likewise.
5535 (__gcov_ior_profiler): Likewise.
5536 (__gcov_merge_ior): Likewise.
5537
5538 2007-01-28 Jan Hubicka <jh@suse.cz>
5539
5540 * builtins.c (expand_builtin_memset): Fix typo in my last patch.
5541 * value-prof.c (stringop_block_profile): Likewise.
5542
5543 2007-01-28 Jan Hubicka <jh@suse.cz>
5544
5545 * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
5546 variant handling histograms; add wrapper.
5547 (clear_storage_via_libcall): Export.
5548 (emit_block_move_hints): Break out from ...; add histograms.
5549 (emit_block_move): ... this one.
5550 (clear_storage_hints): Break out from ...; add histograms.
5551 (clear_storage): ... this one.
5552 (set_storage_via_memset): Handle histogram.
5553 * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
5554 (clear_storage_hints, clear_storage_via_libcall): Declare.
5555 (set_storage_via_setmem): Update prototype.
5556 * doc/md.texi (movmem, setmem): Document new arguments.
5557
5558 * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
5559 new histograms.
5560 (stringop_block_profile): New global function.
5561 (tree_stringops_values_to_profile): Profile block size and alignment.
5562 * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
5563 HIST_TYPE_IOR.
5564 (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
5565 (stringop_block_profile): Declare.
5566 * builtins.c: Include value-prof.h.
5567 (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
5568 * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
5569 (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
5570 (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
5571 * profile.c (instrument_values): Add new counters.
5572 * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
5573 calls.
5574 * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
5575 (tree_init_edge_profiler): Build new profilers.
5576 (tree_gen_average_profiler, tree_gen_ior_profiler): New.
5577 (pass_tree_profile): Add dump.
5578 (tree_profile_hooks): Update.
5579 * Makefile.in (LIBGCOV): Add new constants.
5580 * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
5581 __gcov_ior_profiler): New.
5582 * i386.md (movmem/setmem expanders): Add new optional arguments.
5583
5584 2007-01-28 David Edelsohn <edelsohn@gnu.org>
5585
5586 * doc/md.texi (Standard Pattern Names): Document blockage pattern.
5587
5588 2007-01-28 Zdenek Dvorak <dvorakz@suse.cz>
5589
5590 * tree-ssa-loop-unswitch.c: Include tree-inline.h.
5591 (tree_unswitch_single_loop): Pass eni_size_weights to
5592 tree_num_loop_insns.
5593 * tree-ssa-loop-manip.c: Include tree-inline.h.
5594 (can_unroll_loop_p): Pass eni_size_weights to
5595 tree_num_loop_insns.
5596 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
5597 Pass eni_size_weights to estimate_num_insns.
5598 * tree.h (init_inline_once): Export.
5599 * toplev.c (backend_init): Call init_inline_once.
5600 * cgraphunit.c (cgraph_process_new_functions,
5601 cgraph_analyze_function): Pass eni_inlining_weights to
5602 estimate_num_insns.
5603 * ipa-inline.c (compute_inline_parameters): Ditto.
5604 * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
5605 to estimate_num_insns.
5606 (try_unroll_loop_completely): Pass eni_size_weights to
5607 tree_num_loop_insns.
5608 * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
5609 ot estimate_num_insns.
5610 * tree-ssa-loop-prefetch.c: Include tree-inline.h.
5611 (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
5612 * tree-inline.c (eni_inlining_weights, eni_size_weights,
5613 eni_time_weights): New variables.
5614 (init_inline_once): Initialize them.
5615 (struct eni_data): Mew.
5616 (estimate_num_insns_1, estimate_num_insns): Use weights.
5617 * tree-inline.h (struct eni_weights_d): New.
5618 (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
5619 (estimate_num_insns): Declaration changed.
5620 * cfgloop.h (tree_num_loop_insns): Declaration changed.
5621 * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
5622 tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
5623
5624 2007-01-28 Zdenek Dvorak <dvorakz@suse.cz>
5625
5626 * tree-data-ref.c (conflict_fn): Assert that the number of affine
5627 relations in the conflict function is valid.
5628
5629 2007-01-27 Ian Lance Taylor <iant@google.com>
5630
5631 * common.opt: Add fstrict-overflow.
5632 * opts.c (decode_options): Set flag_strict_overflow if -O2.
5633 * flags.h (TYPE_OVERFLOW_WRAPS): Define.
5634 (TYPE_OVERFLOW_UNDEFINED): Define.
5635 (TYPE_OVERFLOW_TRAPS): Define. This replaces TYPE_TRAP_SIGNED.
5636 Replace all uses.
5637 * tree.h (TYPE_TRAP_SIGNED): Don't define.
5638 * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
5639 (fold_negate_expr): Likewise.
5640 (make_range): Likewise.
5641 (extract_muldiv_1): Likewise.
5642 (maybe_canonicalize_comparison): Likewise.
5643 (fold_comparison): Likewise.
5644 (fold_binary): Likewise.
5645 (tree_expr_nonnegative_p): Likewise.
5646 (tree_expr_nonzero_p): Likewise.
5647 * tree-vrp.c (compare_values): Likewise.
5648 (extract_range_from_binary_expr): Likewise.
5649 (extract_range_from_unary_expr): Likewise.
5650 * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
5651 Likewise.
5652 (nowrap_type_p): Likewise.
5653 * tree-scalar-evolution.c (simple_iv): Likewise.
5654 * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
5655 (build_range_check): Likewise.
5656 (extract_muldiv_1): Likewise.
5657 (fold_comparison): Likewise.
5658 * tree-vrp.c (vrp_int_const_binop): Likewise.
5659 (extract_range_from_unary_expr): Likewise.
5660 * convert.c (convert_to_integer): Likewise.
5661 * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
5662 (fold_comparison): Likewise.
5663 (fold_binary): Likewise.
5664 * optabs.c (optab_for_tree_code): Likewise.
5665 * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
5666 * simplify-rtx.c (simplify_const_relational_operation): Check
5667 flag_strict_overflow and flag_trapv.
5668 (simplify_const_relational_operation): Likewise.
5669 * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
5670 (Optimize Options): Add -fstrict-overflow to -O2 list. Document
5671 -fstrict-overflow.
5672
5673 2007-01-27 Roger Sayle <roger@eyesopen.com>
5674
5675 * tree.c (tree_fold_gcd): Delete.
5676 * tree.h (tree_fold_gcd): Remove prototype.
5677 * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
5678 test whether one constant integer is a multiple of another. Instead
5679 call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
5680 * fold-const.c (multiple_of_p): We've determined both TOP and
5681 BOTTOM are integer constants so we can call int_const_binop directly
5682 instead of the more generic const_binop.
5683
5684 2007-01-27 Roger Sayle <roger@eyesopen.com>
5685
5686 * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
5687 1*X check that the constant hasn't overflowed, to preserve the
5688 TREE_OVERFLOW bit.
5689 (round_up): Provide an efficient implementation when rouding-up an
5690 INTEGER_CST to a power-of-two.
5691
5692 2007-01-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5693
5694 * doc/sourcebuild.texi: Add comma for clarity.
5695 * doc/extend.texi: Fix some typos.
5696 * doc/passes.texi: Likewise.
5697 * doc/cppinternals.texi: Likewise.
5698 * doc/c-tree.texi: Likewise.
5699 * doc/tree-ssa.texi: Likewise.
5700 * doc/install.texi: Likewise.
5701
5702 2007-01-27 Jan Hubicka <jh@suse.cz>
5703
5704 * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
5705 (pass_sra): Do not require alias information.
5706 * passes.c (init_optimization_passes): Add SRA
5707
5708 2007-01-27 Steven Bosscher <steven@gcc.gnu.org>
5709
5710 * tracer.c (rest_of_handle_tracer): We already cleaned
5711 up the CFG in tracer() so don't do it here again.
5712 * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
5713 cleanup_cfg here, either. And don't call renumber_insns.
5714
5715 * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
5716 and BB_HEAD are in the insn stream here. Instead make sure
5717 that BB_INSN is valid on all insns. Also, do check here that
5718 there are no pending branch predictions...
5719 (rtl_verify_flow_info): ...instead of doing it here. Checks
5720 for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
5721 here.
5722
5723 2007-01-26 Roger Sayle <roger@eyesopen.com>
5724
5725 * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
5726 function to simplify/factorize operand order canonicalization.
5727 (ix86_fixup_binary_operands): Reorganize using the above function.
5728 (ix86_binary_operator_ok): Likewise.
5729
5730 2007-01-27 Jakub Jelinek <jakub@redhat.com>
5731
5732 * genattrtab.c (struct attr_value_list, insn_code_values): Move to
5733 file scope from optimize_attrs.
5734 (simplify_test_exp): If insn_code_values is not NULL, use it to speed
5735 up search.
5736 (optimize_attrs): Clear insn_code_values after freeing it.
5737
5738 2007-01-26 Zdenek Dvorak <dvorakz@suse.cz>
5739
5740 * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
5741 a parts.base assignment.
5742
5743 2007-01-26 Zdenek Dvorak <dvorakz@suse.cz>
5744
5745 * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
5746 (compute_subscript_distance, initialize_data_dependence_relation,
5747 finalize_ddr_dependent, analyze_ziv_subscript,
5748 analyze_siv_subscript_cst_affine,
5749 compute_overlap_steps_for_affine_univar,
5750 compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
5751 analyze_siv_subscript, analyze_miv_subscript,
5752 analyze_overlapping_iterations, subscript_dependence_tester_1,
5753 compute_self_dependence, free_dependence_relation): Work
5754 with affine_fn instead of chrecs.
5755 (dump_affine_function, dump_conflict_function, affine_function_equal_p,
5756 common_affine_function, affine_function_base,
5757 affine_function_constant_p, affine_fn_op, affine_fn_plus,
5758 affine_fn_minus, affine_fn_free, conflict_fn_not_known,
5759 conflict_fn_no_dependence, free_conflict_function, free_subscripts,
5760 conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
5761 (all_chrecs_equal_p): Removed.
5762 * tree-data-ref.h (affine_fn, conflict_function): New types.
5763 (struct subscript): Change type of conflicting_iterations_in_a
5764 and conflicting_iterations_in_b.
5765
5766 2007-01-26 Steve Ellcey <sje@cup.hp.com>
5767
5768 PR other/30182
5769 * config/pa/pa.h (TARGET_HPUX_11): New.
5770 * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
5771 * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
5772
5773 2007-01-26 Daniel Berlin <dberlin@dberlin.org>
5774 Richard Guenther <rguenther@suse.de>
5775
5776 * tree-ssa-structalias.c (solve_graph): Handle case
5777 we merged the variable to another.
5778
5779 2007-01-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5780
5781 * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
5782 functions.
5783
5784 * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
5785 catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
5786
5787 2007-01-25 DJ Delorie <dj@redhat.com>
5788
5789 * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
5790 allow changes to modes which don't fit in those registers.
5791
5792 * reload1.c (choose_reload_regs): Check for invalid subregs before
5793 computing their locations, not after.
5794
5795 2007-01-25 Geoffrey Keating <geoffk@apple.com>
5796
5797 PR 25127
5798 * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
5799 save Altivec registers in an eh_return function.
5800 (compute_vrsave_mask): Likewise.
5801 (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
5802 for saving Altivec registers.
5803 (rs6000_emit_prologue): Don't allocate stack twice in
5804 eh_return function. Correct expected value of altivec_save_offset
5805 when using save_world. Describe save of R0 to stack when using
5806 save_world. Describe stack pointer adjustment when using
5807 save_world. Remove duplicated eh_return parameter register saving.
5808 Update sp_offset variable after save_world.
5809 * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
5810 darwin-world.asm.
5811 (LIB2FUNCS_EXTRA): Add darwin-world.asm.
5812 * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
5813 implies Altivec.
5814
5815 2007-01-25 Steve Ellcey <sje@cup.hp.com>
5816
5817 * config.gcc (ia64*-*-hpux*): Make posix threads the default.
5818
5819 2007-01-25 Steve Ellcey <sje@cup.hp.com>
5820
5821 PR other/30182
5822 * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
5823 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
5824
5825 2007-01-25 Richard Guenther <rguenther@suse.de>
5826
5827 * doc/invoke.texi (-Wcoverage-mismatch): Document.
5828 * common.opt (-Wcoverage-mismatch): New warning option.
5829 * coverage.c (get_coverage_counts): Ignore coverage mismatch
5830 if -Wcoverage-mismatch is given.
5831
5832 2007-01-25 Razya Ladelsky <razya@il.ibm.com>
5833
5834 * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
5835 (ipcp_driver): Change to static definition.
5836 Add dumping of the ifunctions.
5837 (constant_val_insert): Remove unused parameter. Support for SSA.
5838 (ipcp_propagate_const): Support for SSA.
5839 (ipcp_profile_bb_print): Print only analyzed nodes.
5840 (ipcp_replace_map_create): Remove support for Fortran constant
5841 for now.
5842 * ipa-prop.c (ipa_method_modify_stmt,
5843 ipa_callsite_compute_param): Support for SSA.
5844 * ipa-prop.h (ipcp_driver): Remove declaration.
5845 (IS_VALID_TREE_MAP_INDEX): Add define.
5846
5847 2007-01-24 Geoffrey Keating <geoffk@apple.com>
5848
5849 * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
5850
5851 2007-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5852
5853 PR middle-end/30447
5854 * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
5855 constant argument to cabs and do it without checking for
5856 -funsafe-math-optimizations.
5857
5858 2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
5859
5860 * c-common.h (RID_FIRST_CXX0X): New.
5861 (RID_LAST_CXX0X): New.
5862 * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
5863 by -Wall.
5864 * c.opt (Wc++0x-compat): New.
5865 * doc/invoke.texi (-Wc++0x-compat): Document.
5866
5867 2007-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5868
5869 * builtins.c (fold_builtin_carg): New.
5870 (fold_builtin_1): Use it.
5871
5872 2007-01-24 Jan Hubicka <jh@suse.cz>
5873
5874 * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
5875
5876 * ipa-inline.c (initial_insns, max_insns): Delete.
5877 (compute_max_insns): New function.
5878 (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
5879 of insns as base for code growth.
5880 (cgraph_decide_inlining): Make initial_insns local; do not compute
5881 max_insns.
5882 * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
5883 * doc/invoke.texi (inline-unit-growth): Update docs.
5884
5885 2007-01-24 Jakub Jelinek <jakub@redhat.com>
5886
5887 * config/i386/i386.h (x86_cmpxchg16b): Remove const.
5888 (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
5889 * config/i386/i386.c (x86_cmpxchg16b): Remove const.
5890 (override_options): Add PTA_CX16 flag. Set x86_cmpxchg16b
5891 for CPUs that have PTA_CX16 set.
5892
5893 PR middle-end/27416
5894 * gimplify.c (omp_check_private): New function.
5895 (gimplify_scan_omp_clauses): Use it for
5896 firstprivate/lastprivate/reduction.
5897
5898 PR middle-end/30494
5899 * gimplify.c (omp_add_variable): Don't call omp_notice_variable
5900 on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
5901
5902 PR middle-end/30421
5903 * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
5904 If lower_lastprivate_clauses emits some statements, append them
5905 to dlist rather than body_p and to body_p append an initializer.
5906 (lower_omp_for): Adjust caller.
5907
5908 2007-01-24 Steve Ellcey <sje@cup.hp.com>
5909
5910 * target.h (globalize_decl_name): New.
5911 * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
5912 * output.h (default_globalize_decl_name): New.
5913 * varasm.c (asm_output_bss): Use globalize_decl_name instead of
5914 globalize_label.
5915 (globalize_decl): Ditto.
5916 (default_globalize_decl_name): New.
5917 * config/ia64/ia64.c (ia64_globalize_decl_name): New.
5918 (ia64_handle_version_id_attribute): New.
5919 (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
5920 (ia64_asm_output_external): Use globalize_decl_name instead
5921 of globalize_label.
5922 * doc/extend.texi (version_id): New pragma.
5923 * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
5924
5925 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
5926
5927 * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
5928 _uleb128_t and _Unwind_SWord with _sleb128_t.
5929 * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
5930 uw_frame_state_for, uw_update_context_1): Likewise.
5931 * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
5932 * unwind-pe.h (read_uleb128, read_sleb128,
5933 read_encoded_value_with_base): Likewise.
5934 * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
5935
5936 2007-01-24 Richard Guenther <rguenther@suse.de>
5937
5938 * builtins.c (expand_builtin_cexpi): Get the fndecl
5939 for cexp in the correct way.
5940
5941 2007-01-24 Jan Hubicka <jh@suse.cz>
5942
5943 * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
5944
5945 2007-01-24 Andreas Krebbel <krebbel1@de.ibm.com>
5946
5947 * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
5948 (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
5949 __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
5950 __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
5951 __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
5952 __SIZEOF_PTRDIFF_T__.
5953 * doc/cpp.texi: Documentation for the new builtin macros added.
5954
5955 2007-01-24 Uros Bizjak <ubizjak@gmail.com>
5956
5957 * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
5958 log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
5959 instead of operands[2] to avoid access past the end of array.
5960
5961 2007-01-24 Richard Sandiford <richard@codesourcery.com>
5962
5963 * reload1.c (emit_reload_insns): Pass the reload register
5964 for a non-spill output reload through forget_old_reloads_1.
5965
5966 2007-01-23 Joseph Myers <joseph@codesourcery.com>
5967
5968 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
5969 _SOFT_DOUBLE if doubles use software floating-point.
5970 * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
5971 double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
5972 * config/rs6000/darwin-ldouble.c: Also compile functions for
5973 hard-float without FPRs. Use fmsub function for all __NO_FPRS__
5974 cases. Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
5975 * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
5976 commented-out long double override.
5977 (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
5978 * config/rs6000/eabispe.h: Likewise.
5979 * config/rs6000/rs6000.c (rs6000_override_options): Don't override
5980 long double for non-SPE.
5981 (rs6000_handle_option): Likewise.
5982 (invalid_e500_subreg): Disallow more subregs involding DImode,
5983 DFmode, TImode or TFmode.
5984 (rs6000_legitimate_offset_address_p): Check TFmode offsets for
5985 E500 double.
5986 (legitimate_lo_sum_address_p): Also check for TFmode for E500
5987 double.
5988 (rs6000_legitimize_address): Also handle TFmode for E500 double.
5989 (rs6000_legitimize_reload_address): Also handle TFmode for E500
5990 double.
5991 (rs6000_legitimate_address): Also check for TFmode for E500
5992 double.
5993 (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
5994 (spe_build_register_parallel): Handle TFmode and TCmode.
5995 (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
5996 double.
5997 (function_arg): Handle TFmode and TCmode for E500 double.
5998 (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
5999 in general.
6000 (print_operand): Handle TFmode and TImode for %y.
6001 (rs6000_generate_compare): Handle TFmode comparisons for E500
6002 double.
6003 (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
6004 (rs6000_function_value): Handle TFmode and TCmode for E500 double.
6005 (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
6006 * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
6007 TFmode for E500 double.
6008 * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
6009 (floatsidf2): Enable for E500 double.
6010 (movtf_softfloat): Use rs6000_nonimmediate_operand.
6011 (extenddftf2): Change to extenddftf2_fprs.
6012 (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
6013 depending on TARGET_E500_DOUBLE.
6014 (extendsftf2): Enable for E500 double.
6015 (trunctfdf2): Enable for E500 double.
6016 (trunctfsf2): Change to trunctfsf2_fprs.
6017 (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
6018 depending on TARGET_E500_DOUBLE.
6019 (floatsitf2): Enable for E500 double.
6020 (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
6021 (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
6022 gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
6023 (negtf2): Change to negtf2_internal.
6024 (negtf2): New expander.
6025 (abstf2): Enable for E500 double. Call gen_spe_abstf2_tst,
6026 gen_spe_abstf2_cmp or gen_abstf2_internal depending on
6027 TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
6028 (movdi_internal32): Use rs6000_nonimmediate_operand.
6029 (unnamed splitter): Likewise.
6030 * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
6031 TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
6032 (SPE64TF, DITI): New mode macros.
6033 (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
6034 modes.
6035 (frob_tf_ti): New.
6036 (frob_<mode>_di_2): New.
6037 (frob_tf_di_8_2): New.
6038 (frob_di_df): Change to frob_di_<mode>; allow more modes.
6039 (frob_ti_tf): New.
6040 (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
6041 more modes.
6042 (frob_ti_<mode>_8_2): New.
6043 (frob_ti_tf_2): New.
6044 (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
6045 mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
6046 TFmode.
6047 (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
6048 mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
6049 (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
6050 spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
6051 spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
6052 (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
6053 tsttflt_gp): New.
6054
6055 2007-01-23 Ian Lance Taylor <iant@google.com>
6056
6057 * Makefile.in (OBJS-common): Reformat, alphabetize, but put
6058 insn-*.o first.
6059 (OBJS-archive): Reformat, alphabetize.
6060 (OBJS): Change out_object_file to OBJS-md.
6061
6062 2007-01-23 Uros Bizjak <ubizjak@gmail.com>
6063
6064 * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
6065 JUMP_P and CALL_P predicates where applicable.
6066 * config/i386/i386.c: Ditto.
6067 * config/i386/i386.md: Ditto.
6068 * config/i386/mmx.md: Ditto.
6069 * config/i386/predicates.md: Ditto.
6070
6071 2007-01-22 Andreas Schwab <schwab@suse.de>
6072
6073 * config/m68k/m68k.h: Fix comment.
6074
6075 2007-01-22 Jan Hubicka <jh@suse.cz>
6076
6077 * passes.c (init_optimization_passes): Do not rerun
6078 pass_early_warn_uninitialized.
6079
6080 2007-01-22 Richard Guenther <rguenther@suse.de>
6081
6082 PR tree-optimization/30038
6083 * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
6084 function.
6085 (execute_cse_sincos_1): Likewise.
6086 (execute_cse_sincos): Likewise.
6087 (gate_cse_sincos): Likewise.
6088 (pass_cse_sincos): New pass CSEing sin() and cos() calls using
6089 the cexpi() canonicalization of sincos().
6090 * tree-pass.h (pass_cse_sincos): Declare.
6091 * passes.c (init_optimization_passes): New pass pas_cse_sincos.
6092
6093 2007-01-21 Eric Botcazou <ebotcazou@libertysurf.fr>
6094
6095 PR rtl-optimization/29329
6096 * combine.c (replaced_rhs_insn): Rename to i2mod.
6097 (replaced_rhs_value): Rename to i2mod_new_rhs.
6098 (i2mod_old_rhs): New global variable.
6099 (combine_instructions): Adjust for above change. Save a copy of
6100 the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
6101 note are substituted in the second instruction.
6102 (distribute_notes) <REG_DEAD>: Adjust for above change. Do not
6103 ditch the note if it pertains to the second eliminated register
6104 and this register is mentioned in i2mod_old_rhs.
6105
6106 Revert:
6107 2006-09-12 Eric Botcazou <ebotcazou@libertysurf.fr>
6108
6109 * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
6110 the insn to which the note was originally attached.
6111
6112 2007-01-21 Jan Hubicka <jh@suse.cz>
6113
6114 * ipa-inline.c (inlining_mode): Comment, move up.
6115 (cgraph_decide_inlining_incrementally): Do not perform inlining
6116 itself; fix handling of flattening of self recursive functions.
6117 (cgraph_find_cycles): Remove.
6118 (cgraph_flatten_node): Remove.
6119 (cgraph_decide_inlining): Use incremental inliner to handle flattening.
6120 (try_inline): New function.
6121 (cgraph_early_inlining): Update call of
6122 cgraph_decide_inlining_incrementally. Apply inlining here.
6123 (apply_inline): Update call of cgraph_decide_inlining_incrementally.
6124
6125 2007-01-21 Dirk Mueller <dmueller@suse.de>
6126
6127 PR bootstrap/30511
6128 * tree-vrp.c (check_array_bounds): do not warn
6129 about ADDR_EXPR's of ARRAY_REF's which are immediately
6130 used in binary expressions.
6131
6132 2007-01-21 Ira Rosen <irar@il.ibm.com>
6133
6134 * tree-vectorizer.h (struct _stmt_vec_info): Add new field
6135 read_write_dep and macros for its access.
6136 * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
6137 * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
6138 argument, call vect_check_interleaving for every independent pair of
6139 data-refs. Mark loads that access the same memory location as a store
6140 in the loop.
6141 (vect_check_dependences): Remove.
6142 (vect_analyze_data_ref_dependences): Remove vect_check_dependences
6143 call, fix the call to vect_analyze_data_ref_dependence.
6144 (vect_analyze_data_ref_access): For statements that access the same
6145 data-ref, check that they are not stores; for loads, check that there
6146 is no store that access the same location.
6147
6148 2007-01-20 Roger Sayle <roger@eyesopen.com>
6149 Joseph Myers <joseph@codesourcery.com>
6150
6151 * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
6152 (-fdump-rtl-stack): Likewise.
6153 (-fno-signed-zeros): Use @minus{} for a minus sign. Correct typo.
6154 (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
6155 (-mpt-fixed): Use @minus{} for minus sign.
6156 (Using Precompiled Headers): Fix under/overfull hbox.
6157
6158 2007-01-20 Jan Hubicka <jh@suse.cz>
6159
6160 * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
6161 place within annotation.
6162
6163 2007-01-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
6164
6165 * pa.c (output_move_double): Change array size of xoperands to 4.
6166
6167 2007-01-20 Jan Hubicka <jh@suse.cz>
6168
6169 * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
6170 as temporary.
6171
6172 2007-01-19 Ian Lance Taylor <iant@google.com>
6173
6174 * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
6175 constant to unsigned HOST_WIDE_INT before negating.
6176
6177 2007-01-19 Ian Lance Taylor <iant@google.com>
6178
6179 * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
6180 to unsigned.
6181 (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
6182 (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
6183 (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
6184 (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
6185 (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
6186 (realloc_vdef, realloc_vuse): Change second parameter to
6187 unsigned.
6188 (ssa_operand_iterator_d): Change vuse_index and mayuse_index
6189 fields to unsigned.
6190 * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
6191 unsigned. Change x and lim locals to unsigned.
6192 (realloc_vdef, realloc_vuse): Change num_elem parameter to
6193 unsigned.
6194 (finalize_ssa_vuse_ops): Change old_i local to unsigned.
6195 (copy_virtual_operands): Change i and n locals to unsigned.
6196
6197 2007-01-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6198
6199 PR middle-end/29335
6200 * builtins.c (fold_builtin_1): Handle builtin fdim.
6201
6202 2007-01-20 Jan Hubicka <jh@suse.cz>
6203
6204 * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
6205 * tree-ssa-structalias.c (compute_points_to_sets): Do call
6206 init_alias_heapvars.
6207 (init_alias_heapvars): Initialize only when not already initialized.
6208 (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
6209
6210 2007-01-19 Roger Sayle <roger@eyesopen.com>
6211
6212 * common.opt (fsigned-zeros): New command line option.
6213 * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
6214 of flag_unsafe_math_optimizations.
6215 * opts.c (set_fast_math_flags): The -ffast-math command line option
6216 implies -fno-signed-zeros.
6217 (fast_math_flags_set_p): Likewise.
6218
6219 * doc/invoke.texi: Document new -fno-signed-zeros option, and update
6220 the documentation of -ffast-math appropriately. Wrap long lines.
6221
6222 2007-01-19 Steve Ellcey <sje@cup.hp.com>
6223
6224 * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
6225 * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
6226
6227 2007-01-19 Tomas Bily <tbily@suse.cz>
6228
6229 * cgraphunit.c (cgraph_finalize_function): Updating of pid
6230 * tree-profile.c:
6231 (tree_init_ic_make_global_vars): New function
6232 (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
6233 (tree_gen_ic_profiler): New function
6234 (tree_gen_ic_func_profiler): New function
6235 (tree_profiling): Added calling of tree_gen_ic_func_profiler
6236 (tree_profile_hooks): Added hook for indirec/virtual calls
6237 * value-prof.c (tree_find_values_to_profile): New case for
6238 indirect calls
6239 (tree_values_to_profile): Call for determining indirect/virtual
6240 counters
6241 (tree_indirect_call_to_profile): New function
6242 (tree_ic_transform): New function
6243 (tree_ic): New function
6244 (find_func_by_pid): New function
6245 (init_pid_map): New function
6246 (tree_value_profile_transformations): Added check for
6247 indirect/virtual call transformation
6248 * value-prof.h (enum hist_type): New counter type for
6249 indirect/virtual calls
6250 (profile_hooks): Added new hook for profiling indirect/virtual
6251 calls
6252 * profile.c (instrument_values): New case for indirect/virtual
6253 call added
6254 * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
6255 (GCOV_COUNTER_V_INDIR): New counter type
6256 (GCOV_COUNTER_NAMES): New name of counter "indirect" added
6257 (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
6258 call added
6259 * cgraph.c: Definition of cgraph_max_pid
6260 (cgraph_create_node): Default init of pid attribute
6261 * cgraph.h: Declaration of cgraph_max_pid
6262 (struct cgraph_node): Added pid attribute
6263 * libgcov.c (__gcov_indirect_call_profiler): New function
6264 (__gcov_one_value_profiler_body): New function
6265 (__gcov_one_value_profiler): Body was moved to
6266 __gcov_one_value_profiler_body and calls it
6267
6268 2007-01-19 Basile Starynkevitch <basile@starynkevitch.net>
6269
6270 * doc/gty.texi (Options): Document the mark_hook option to GTY.
6271 * gengtype.c (write_types_data, write_func_for_structure,
6272 write_types, ggc_wtd, pch_wtd): Add skip_hooks to
6273 write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
6274 (walk_type, write_func_for_structure): Generate the mark_hook if
6275 needed.
6276
6277 2007-01-19 Jan Hubicka <jh@suse.cz>
6278
6279 * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
6280 'early' argument take inlining mode argument specifying whether to
6281 inline for size/speeed or all functions; add support for flattening;
6282 improve dumpting.
6283 (cgraph_early_inlining): Update call of decide_inlining_incrementally.
6284
6285 2007-01-19 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
6286
6287 PR c++/17947
6288 * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
6289 the name of the declared identifier.
6290
6291 2007-01-19 Dirk Mueller <dmueller@suse.de>
6292
6293 * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
6294 result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
6295 duplicate evaluation.
6296
6297 2007-01-19 Uros Bizjak <ubizjak@gmail.com>
6298
6299 * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
6300 Macroize expander using X87MODEF12 mode macro. Extend operand 1
6301 to XFMode, use acosxf2 and truncate result to requested mode.
6302 Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
6303 (asin<mode>2): Similarly, with asin expanders.
6304 (*fscalexf4_i387): Rename from *fscalexf4.
6305 (expNcorexf3): New expander.
6306 (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
6307 (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
6308 X87MODEF12 mode macro. Extend operand 1 to XFMode, use expxf2 and
6309 truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
6310 patterns for SSE math.
6311 (exp10<mode>2): Similarly, with exp10 expanders.
6312 (exp2<mode>2): Similarly, with exp2 expanders.
6313 (expm1<mode>2): Similarly, with expm1 expanders.
6314 (ldexp<mode>3): Similarly, with ldexp expanders.
6315 (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
6316 Use gen_truncxf<mode>2_i387_noop to truncate result.
6317
6318 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6319
6320 * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
6321 for ColdFire targets.
6322
6323 2007-01-19 Nathan Sidwell <nathan@codesourcery.com>
6324 Richard Sandiford <richard@codesourcery.com>
6325
6326 * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
6327 (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
6328 (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
6329 * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
6330 (M68K_STATIC_CHAIN_REG_NAME): Likewise.
6331 * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
6332
6333 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6334
6335 * config/m68k/m68k.md (adddi_dilshr32): Rename to...
6336 (*adddi_dilshr32): ...this. Fix formatting. Remove commented-out
6337 non-canonical pattern. Restrict to !TARGET_COLDFIRE.
6338 (*adddi_dilshr32_cf): New pattern.
6339 (adddi3, subdi3): Remove first alternatives.
6340
6341 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6342
6343 * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
6344 implemented using move.l, do not use its cc result for floating-point
6345 comparisons.
6346
6347 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6348
6349 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
6350 from accepting 's' constraints if flag_pic.
6351
6352 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6353
6354 * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
6355 (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
6356 (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
6357 condition from TARGET_68881 to TARGET_HARD_FLOAT.
6358
6359 2007-01-19 Sandra Loosemore <sandra@codesourcery.com>
6360
6361 * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
6362 ColdFire alternatives.
6363 * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
6364 * config/m68k/m68k.md (clzsi2): Define for ColdFire
6365 architectures that support ff1 instruction.
6366
6367 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6368 Julian Brown <julian@codesourcery.com>
6369
6370 * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
6371 * config/m68k/m68k.md (*movsi_cfv4): Fold into...
6372 (*movsi_cf): ...here. Remove unnecessary 'R' from 'Rg'.
6373 Add commentary.
6374
6375 2007-01-19 Richard Sandiford <richard@codesourcery.com>
6376
6377 * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
6378 and return a bool.
6379 (output_move_const_into_data_reg, output_move_simode_const): Delete.
6380 * config/m68k/m68k.c (const_method, const_int_cost): Take a
6381 HOST_WIDE_INT instead of an rtx.
6382 (m68k_rtx_costs): Update call accordingly.
6383 (output_move_const_into_data_reg): Likewise. Fix formatting.
6384 (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
6385 Return a bool.
6386 (output_move_simode_const): Update calls after above changes.
6387 Rework to use automatic variables and predicates like MEM_P.
6388 * config/m68k/m68k.md (pushexthisi_const): Update call to
6389 valid_mov3q_const.
6390
6391 2007-01-19 Dirk Mueller <dmueller@suse.de>
6392
6393 * tree-ssa-alias.c (perform_var_substitution): Fix typo
6394 in dump_flags test.
6395
6396 2007-01-19 Richard Guenther <rguenther@suse.de>
6397
6398 * builtins.c (expand_builtin_cexpi): Fall back to expanding
6399 via cexp in case sincos is not available.
6400
6401 2007-01-19 Richard Guenther <rguenther@suse.de>
6402
6403 * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
6404 * defaults.h (TARGET_HAS_SINCOS): Default to off.
6405 * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
6406 * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
6407 * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
6408 * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
6409 * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
6410 * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
6411
6412 2007-01-19 Uros Bizjak <ubizjak@gmail.com>
6413
6414 * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
6415 New insn patterns.
6416 (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
6417 (atan2xf3): Directly generate RTL pattern.
6418 (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
6419 patterns using X87MODEF12 mode macro. Use fpatan_extend<mode>xf3_i387
6420 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
6421 disable patterns for SSE math.
6422 (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
6423 patterns using X87MODEF12 mode macro. Use fpatan_extend<mode>xf3_i387
6424 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
6425 disable patterns for SSE math.
6426
6427 2007-01-19 Alexandre Oliva <aoliva@redhat.com>
6428
6429 * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
6430
6431 2007-01-18 Roger Sayle <roger@eyesopen.com>
6432
6433 * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
6434 VIEW_CONVERT_EXPR to the same type as it's operand.
6435
6436 2007-01-18 David Edelsohn <edelsohn@gnu.org>
6437
6438 * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
6439 configured for long double 128.
6440
6441 2007-01-18 Mike Stump <mrs@apple.com>
6442
6443 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
6444 error.
6445
6446 2007-01-18 Michael Meissner <michael.meissner@amd.com>
6447
6448 * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
6449 type correct.
6450
6451 2007-01-18 Jan Hubicka <jh@suse.cz>
6452
6453 * tree-ssa-operands.c (vop_free_bucket_size): Never return value
6454 greater than NUM_VOP_FREE_BUCKETS.
6455
6456 2007-01-18 Daniel Berlin <dberlin@dberlin.org>
6457
6458 * tree-ssa-structalias.c: Update comments.
6459 (ptabitmap_obstack): Removed.
6460 (pta_obstack): New.
6461 (oldpta_obstack): Ditto.
6462 (stats): Add a few members.
6463 (struct variable_info): Remove node, complex, address_taken, and
6464 indirect_target members. Add oldsolution member.
6465 (new_var_info): Do not initialize removed members.
6466 (constraint_expr_type): Remove INCLUDES.
6467 (constraint_graph): Add size, implicit_preds, rep,
6468 indirect_cycles, eq_rep, label, direct_nodes, and complex members.
6469 (FIRST_REF_NODE): New macro.
6470 (LAST_REF_NODE): Ditto.
6471 (FIRST_ADDR_NODE): Ditto.
6472 (find): New function.
6473 (unite): Ditto.
6474 (dump_constraint): Do not handle INCLUDES.
6475 (insert_into_complex): Do not insert duplicate constraints.
6476 (condense_varmap_nodes): Renamed and rewritten into ...
6477 (merge_node_constraints): This. Also fix bug in handling of
6478 offseted copy constraints.
6479 (clear_edges_for_node): No longer need to deal with preds at all,
6480 or removing associated preds/succs.
6481 (merge_graph_nodes): Deal with indirect_cycles.
6482 Don't deal with predecessors.
6483 (add_implicit_graph_edge): New function.
6484 (add_pred_graph_edge): Ditto.
6485 (add_graph_edge): Don't deal with predecessors.
6486 (build_constraint_graph): Removed.
6487 (build_pred_graph): New function.
6488 (build_succ_graph): Ditto.
6489 (struct scc_info): Removed in_component. Added roots, dfs, and
6490 node_mapping. Remove visited_index, unification_queue.
6491 (scc_visit): Deal with union-find we do now.
6492 Deal with cycles with REF nodes.
6493 (collapse_nodes): Renamed and rewritten to ...
6494 (unify_nodes): This.
6495 (process_unification_queue): Removed.
6496 (topo_visit): Cleanup
6497 (do_da_constraint): Use find.
6498 (do_sd_constraint): Ditto.
6499 (do_ds_constraint): Ditto.
6500 (do_complex_constraint): Ditto.
6501 (init_scc_info): Update for removed and added members.
6502 (find_and_collapse_graph_cycles): Renamed and rewritten into ...
6503 (find_indirect_cycles): This.
6504 (equivalence_class): New variable.
6505 (label_visit): New function.
6506 (perform_variable_substitution): Rewritten.
6507 (free_var_substitution_info): New function.
6508 (find_equivalent_node): Ditto.
6509 (move_complex_constraints): Ditto.
6510 (eliminate_indirect_cycles): Ditto.
6511 (solve_graph): Only propagate changed bits.
6512 Use indirect cycle elimination.
6513 Use find.
6514 (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
6515 (tree_id_eq): Renamed to ...
6516 (tree_vi_eq): This. Update for member change
6517 (insert_id_for_tree): Renamed and rewritten to ...
6518 (insert_vi_for_tree): This.
6519 (lookup_id_for_tree): Renamed and rewritten to ...
6520 (lookup_vi_for_tree): This.
6521 (get_id_for_tree): Renamed and rewritten to ...
6522 (get_vi_for_tree): Ditto.
6523 (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
6524 (process_constraint): Don't handle INCLUDES.
6525 Remove special ADDRESSOF case.
6526 (find_func_aliases): Rewrite to use vi functions instead of id
6527 ones.
6528 (create_function_info_for): Ditto.
6529 (create_variable_info_for): Ditto.
6530 (intra_create_variable_infos): Ditto.
6531 (merge_smts_into): Ditto.
6532 (find_what_p_points_to): Ditto.
6533 (init_base_vars): Ditto.
6534 (init_alias_vars): Ditto.
6535 (remove_preds_and_fake_succs): New function.
6536 (dump_sa_points_to_info): Dump new stats.
6537 (dump_solution_for_var): Use find.
6538 (set_used_smts): Fix formatting.
6539 (compute_points_to_sets): Updated for new functions.
6540 (ipa_pta_execute): Ditto.
6541
6542 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
6543 Richard Sandiford <richard@codesourcery.com>
6544
6545 * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
6546 parallels.
6547 * calls.c (expand_call): If the return value is a PARALLEL,
6548 extract its first member.
6549 * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
6550 * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
6551 use FUNCTION_EXTRA_EPILOGUE.
6552 (m68k_function_value): Return a PARALLEL if the return value
6553 is of a pointer type.
6554 * config/m68k/netbsd-elf.h (current_function_returns_pointer)
6555 (FUNCTION_EXTRA_EPILOGUE): Remove.
6556 * config/m68k/m68k.md (D0_REG): New constant.
6557
6558 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
6559
6560 * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
6561 output a NOP for empty epilogues.
6562
6563 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6564
6565 * config/m68k/m68k.c (m68k_use_return_insn): Update comments
6566 before function. Extend register save check to include all
6567 registers, not just integer ones.
6568
6569 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
6570
6571 * config/m68k/m68k-protos.h (use_return_insn): Rename to...
6572 (m68k_use_return_insn): ...this.
6573 * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
6574 * config/m68k/m68k.c (use_return_insn): Rename to...
6575 (m68k_use_return_insn): ...this.
6576 * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
6577 of USE_RETURN_INSN.
6578
6579 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
6580
6581 * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
6582 nearest even, fix denormal rounding overflow.
6583
6584 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6585
6586 * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
6587 f%$smove and f%$move.
6588 (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
6589 (extendsfdf2_cf): Use fdmove instead of f%&move.
6590 (truncdfsf2_cf): Use fsmove instead of f%$smove.
6591 (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
6592
6593 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6594
6595 * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
6596 GPR<-GPR moves.
6597
6598 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6599
6600 * real.h (real_format): Add a canonical_nan_lsbs_set field.
6601 (coldfire_single_format): Declare.
6602 (coldfire_double_format): Likewise.
6603 * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
6604 of qnan_msb_set to determine the lower bits of a canonical
6605 NaN significand.
6606 (encode_ieee_double): Likewise.
6607 (encode_ieee_quad): Likewise.
6608 (ieee_single_format): Initialize canonical_nan_lsbs_set.
6609 (mips_single_format): Likewise.
6610 (ieee_double_format): Likewise.
6611 (mips_double_format): Likewise.
6612 (ieee_extended_motorola_format): Likewise.
6613 (ieee_extended_intel_96_format): Likewise.
6614 (ieee_extended_intel_128_format): Likewise.
6615 (ieee_extended_intel_96_round_53_format): Likewise.
6616 (ibm_extended_format): Likewise.
6617 (mips_extended_format): Likewise.
6618 (ieee_quad_format): Likewise.
6619 (mips_quad_format): Likewise.
6620 (vax_f_format): Likewise.
6621 (vax_d_format): Likewise.
6622 (vax_g_format): Likewise.
6623 (i370_single_format): Likewise.
6624 (i370_double_format): Likewise.
6625 (decimal_single_format): Likewise.
6626 (decimal_double_format): Likewise.
6627 (decimal_quad_format): Likewise.
6628 (c4x_single_format): Likewise.
6629 (c4x_extended_format): Likewise.
6630 (real_internal_format): Likewise.
6631 (coldfire_single_format): New real_format.
6632 (coldfire_double_format): Likewise.
6633 * config/pdp11/pdp11.c (pdp11_f_format): Initialize
6634 canonical_nan_lsbs_set.
6635 (pdp11_d_format): Likewise.
6636 * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
6637 if TARGET_COLDFIRE_CPU.
6638
6639 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6640
6641 * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
6642 (output_call, m68k_legitimize_call_address): Declare.
6643 * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
6644 parenthesees. Add support for a 'W' constraint.
6645 (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
6646 (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
6647 (m68k_symbolic_call, m68k_symbolic_jump): Declare.
6648 * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
6649 variables.
6650 (override_options): Initialize them. Do not set flag_no_function_cse
6651 for TARGET_ID_SHARED_LIBRARY.
6652 (m68k_output_pic_call): Delete.
6653 (m68k_legitimize_call_address): New function.
6654 (print_operand): Remove the %o prefix. Handle the %p prefix.
6655 (output_call): New function.
6656 (m68k_output_mi_thunk): Use m68k_symbolic_jump. Always load the
6657 target address from the GOT if symbolic jumps are not allowed.
6658 * config/m68k/m68k.md (call, general_operand): Do not set
6659 SYMBOL_REF_FLAG. Use m68k_legitimize_call_address instead.
6660 Merge separate flag_pic and !flag_pic define_insns into...
6661 (*call, *call_value): ...these new patterns. Match the address
6662 rather than the containing MEM and require it to be a call_operand.
6663 Use output_call to generate the asm template.
6664 * config/m68k/predicates.md (const_call_operand): New predicate.
6665 (call_operand): Likewise.
6666
6667 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
6668
6669 * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
6670 (STACK_GROWS_DOWNWARD): Define to 1.
6671 (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
6672 comments, emphasizing that these values are only defaults.
6673 * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
6674 * config/m68k/m68k.c (const_method): Remove trailing whitespace.
6675
6676 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6677
6678 * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
6679
6680 2007-01-18 Kazu Hirata <kazu@codesourcery.com>
6681 Richard Sandiford <richard@codesourcery.com>
6682
6683 * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
6684 (FP_REGNO_P): New macros.
6685 (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
6686 (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
6687 (EH_RETURN_STACKADJ_RTX): Use A0_REG.
6688 * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
6689
6690 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
6691
6692 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
6693 (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
6694 to $tmake_file.
6695 * config/m68k/t-floatlib: New file, extracting common code from...
6696 * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
6697 * config/m68k/t-uclinux: Here.
6698 * config/m68k/fpgnulib.c: Do not compile extendeed precision
6699 routines on ColdFire targets.
6700
6701 2007-01-18 Nathan Sidwell <nathan@codesourcery.com>
6702
6703 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
6704 (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
6705 (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
6706 (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
6707 explicitly set MOTOROLA to 1.
6708 * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
6709
6710 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6711 Nathan Sidwell <nathan@codesourcery.com>
6712
6713 * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
6714 (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
6715 * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
6716 * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
6717 * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
6718 * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
6719 (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
6720 (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
6721 (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
6722 * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
6723 * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
6724 (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
6725 (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
6726 (DBX_REGISTER_NUMBER): Delete.
6727 * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
6728 (PCC_STATIC_STRUCT_RETURN): Don't undefine.
6729 * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
6730
6731 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6732
6733 * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
6734 * config/flat.h: New file.
6735 * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
6736 OBJECT_FORMAT_FLAT.
6737 * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
6738 indirect references for -msep-data or -mid-shared-library.
6739 Do not use PC-relative code addresses either.
6740 * config/m68k/m68k.c (override_options): Restrict -fPIC error
6741 to -mpcrel.
6742 * config/m68k/uclinux.h (STARTFILE_SPEC): Define. Use Scrt1.o
6743 for shared libraries and crt1.o for executables. Use crti.o and
6744 crtbegin.o.
6745 (ENDFILE_SPEC): Use crtend.o and crtn.o.
6746 (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
6747 Do not add -elf2flt or -shared-lib-id options here.
6748 (LINK_SPEC): Define. Pass -elf2flt if no -elf2flt option is given.
6749 Pass -shared-lib-id if -mid-shared-library, taking the library
6750 identifier from -mshared-library-id if given, otherwise
6751 defaulting to 0.
6752 (EH_FRAME_IN_DATA_SECTION): Do not undefine.
6753 (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
6754 (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
6755 and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
6756 (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
6757 * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
6758 and crtend.o.
6759 * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
6760 jump sequence for ISA A and ISA A+.
6761 (PICJUMP): Likewise.
6762
6763 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6764
6765 * config.gcc (m68k-*-uclinux*): Base the port on the common
6766 and m68k GNU/Linux files rather than on the generic ELF ones.
6767 * config/m68k/uclinux.h (TARGET_VERSION): Override.
6768 (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
6769
6770 2007-01-18 Julian Brown <julian@codesourcery.com>
6771 Richard Sandiford <richard@codesourcery.com>
6772
6773 * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
6774 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
6775 * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
6776 before redefining.
6777 * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
6778 80 unconditionally.
6779 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
6780
6781 2007-01-18 Richard Sandiford <richard@codesourcery.com>
6782
6783 * doc/install.texi: Document m68k-uclinuxoldabi.
6784 * config.gcc (m68k-*-uclinuxoldabi): New configuration.
6785 * config/m68k/uclinux-oldabi.h: New file, copied from
6786 config/m68k/uclinux.h.
6787
6788 2007-01-18 Kaz Kojima <kkojima@rr.iij4u.or.jp>
6789
6790 * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
6791 * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
6792 (m32r_compute_frame_size): Use unsigned for regno.
6793 (m32r_reload_lr): Use gen_frame_mem.
6794 (pop): New.
6795 (m32r_output_function_epilogue): Don't output the function epilogue
6796 textually here.
6797 (m32r_expand_epilogue): New.
6798 (direct_return): Return false if the function has the interrupt
6799 attribute.
6800 (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
6801 * config/m32r/m32r.md (epilogue): New expander.
6802 (return_lr, return_rte): New insns.
6803 (return): Make it expander.
6804 (return_normal): New expander.
6805
6806 2007-01-18 Josh Conner <jconner@apple.com>
6807
6808 PR target/30485
6809 * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
6810 support for UNLE, UNLT, UNGE, and UNGT.
6811
6812 2007-01-18 Jan Hubicka <jh@suse.cz>
6813
6814 * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
6815 * tree-tailcall (add_virtual_phis): Likewise.
6816 (optimize_tail_call): Return TODOs.
6817 (execute_tail_calls): Return TODOs.
6818 * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
6819 * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
6820 changed.
6821 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
6822 Cleanup cfg using TODO.
6823 * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
6824 * passes.c (execute_function_todo): When cleanup did something, remove
6825 unused locals.
6826 * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
6827 (make_edges): Don't cleanup_cfg.
6828
6829 2007-01-18 Uros Bizjak <ubizjak@gmail.com>
6830
6831 * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
6832 UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
6833 operate on the top of stack.
6834 [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
6835 register handling of instructions that output to the second
6836 stack slot.
6837 [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
6838 (move_for_stack_reg): Special-case check for dead destination
6839 stack slot for constant load of 1.0 inside UNSPEC_TAN.
6840
6841 * config/i386/i386.md (UNSPEC_TAN): New constant.
6842 (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
6843 (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
6844 to correctly model move of constant 1.0 to top stack slot.
6845 (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
6846 (unnamed peephole2 pattern): Remove corresponding peephole2
6847 pattern that optimizes tan insn and loading of constant 1.0.
6848 (tanxf2): Use fptanxf4_i387.
6849 (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
6850 patterns using X87MODEF12 mode macro. Use fptan_extend<mode>xf4_i387
6851 and truncate result to requested mode. Use SSE_FLOAT_MODE_P to
6852 disable patterns for SSE math.
6853 (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
6854 (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
6855
6856 2007-01-18 Dirk Mueller <dmueller@suse.de>
6857 Richard Guenther <rguenther@suse.de>
6858
6859 PR diagnostic/8268
6860 * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
6861 * common.opt (Warray-bounds): Add new warning option.
6862 * c-opts.c (c_common_handle_option): Define -Warray-bounds
6863 if -Wall is given.
6864 * Makefile.in: make tree-vrp.o depend on toplev.h
6865 * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
6866 is enabled.
6867 (check_array_refs, check_array_bounds, check_array_ref): New.
6868
6869 2007-01-18 Jan Hubicka <jh@suse.cz>
6870
6871 * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
6872 (execute_ssa_ccp): Return flags conditionally.
6873 * tree-ssa-propagate.c (substitue_and_fold): Return if something was
6874 changed.
6875 * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
6876
6877 2007-01-18 Steven Bosscher <steven@gcc.gnu.org>
6878
6879 * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
6880 the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
6881
6882 * Makefile.c (GTFILES): Add cfglayout.h.
6883 * gengtype.c (open_base_files): Likewise.
6884 * cfglayout.c (cfg_layout_function_footer,
6885 cfg_layout_function_header) Reindent to make gengtype happy.
6886 * cfglayout.h (cfg_layout_function_footer,
6887 cfg_layout_function_header): Add GTY(()) marker.
6888
6889 * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
6890
6891 2007-01-18 Ben Elliston <bje@au.ibm.com>
6892
6893 * genautomata.c (write_automata): Include xstrerror output in the
6894 error message if writing the DFA description file fails.
6895
6896 2007-01-17 H.J. Lu <hongjiu.lu@intel.com>
6897
6898 * config/mips/mips-protos.h (mips_output_external): Make it
6899 return void.
6900 * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
6901 * config/mips/mips.c (irix_output_external_libcall): Likewise.
6902 (extern_list): Likewise.
6903 (extern_head): Likewise.
6904 (TARGET_ASM_FILE_END): Likewise.
6905 (mips_file_end): Likewise.
6906 (mips_output_external): Rewritten.
6907
6908 2007-01-18 Ben Elliston <bje@au.ibm.com>
6909
6910 * genpreds.c (write_insn_preds_c): Only write out the function
6911 body for regclass_for_constraint if we have register constraints.
6912
6913 2007-01-17 Tom Tromey <tromey@redhat.com>
6914
6915 * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
6916 * doc/install.texi (Testing): Use sourceware.org.
6917 (Binaries): Likewise.
6918 (Specific): Likewise.
6919 * doc/contrib.texi (Contributors): Use sourceware.org.
6920
6921 2007-01-17 Anatoly Sokolov <aesok@post.ru>
6922
6923 * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
6924 (AVR_ENHANCED): Rename to ...
6925 (AVR_HAVE_MUL): ... new.
6926 (avr_enhanced_p): Rename to ...
6927 (avr_have_mul_p): ... new.
6928 (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
6929 'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
6930 * config/avr/avr.c (avr_enhanced_p): Rename to ...
6931 (avr_have_mul_p): ... new.
6932 (base_arch_s): Rename 'enhanced' to 'have_mul'.
6933 (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
6934 'avr_enhanced_p' and 'enhanced'.
6935 (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
6936 AVR_HAVE_MUL instead of AVR_ENHANCED.
6937 * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
6938 (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
6939 *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
6940 instead of AVR_ENHANCED.
6941 (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
6942 * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
6943 (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
6944
6945 2007-01-17 Ian Lance Taylor <iant@google.com>
6946
6947 * vec.h (VEC_reserve_exact): Define.
6948 (vec_gc_p_reserve_exact): Declare.
6949 (vec_gc_o_reserve_exact): Declare.
6950 (vec_heap_p_reserve_exact): Declare.
6951 (vec_heap_o_reserve_exact): Declare.
6952 (VEC_OP (T,A,reserve_exact)): New static inline function, three
6953 versions.
6954 (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
6955 negative parameter.
6956 (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
6957 (VEC_OP (T,A,copy)) [all versions]: Likewise.
6958 (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
6959 * vec.c (calculate_allocation): Add exact parameter. Change all
6960 callers.
6961 (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
6962 (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
6963 (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
6964 (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
6965 (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
6966 (vec_heap_p_reserve_exact): New function.
6967 (vec_heap_o_reserve_exact): New function.
6968
6969 2007-01-17 Jan Hubicka <jh@suse.cz>
6970
6971 * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
6972
6973 2007-01-17 Eric Christopher <echristo@apple.com>
6974
6975 * config.gcc: Support core2 processor.
6976
6977 2007-01-16 Jan Hubicka <jh@suse.cz>
6978
6979 * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
6980 the names, just unlink the chain so we don't crash on dangling pointers
6981 to dead SSA names.
6982
6983 2007-01-16 Jan Hubicka <jh@suse.cz>
6984
6985 * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
6986 * tree-pass.h: Reorder to make IPA passes appear toegher.
6987 (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
6988 * cgraphunit.c (cgraph_finalize_function): Do not compute inling
6989 parameters, do not call early inliner.
6990 * ipa-inline.c: Update comments. Include tree-flow.h
6991 (cgraph_decide_inlining): Do not compute inlining parameters.
6992 (cgraph_decide_inlining_incrementally): Return TODOs; assume to
6993 be called with function context set up.
6994 (pass_ipa_inline): Remove unreachable functions before pass.
6995 (cgraph_early_inlining): Simplify assuming to be called from the
6996 PM as local pass.
6997 (pass_early_inline): New pass.
6998 (cgraph_gate_ipa_early_inlining): New gate.
6999 (pass_ipa_early_inline): Turn into simple wrapper.
7000 (compute_inline_parameters): New function.
7001 (gate_inline_passes): New gate.
7002 (pass_inline_parameters): New pass.
7003 (apply_inline): Move here from tree-optimize.c
7004 (pass_apply_inline): New pass.
7005 * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
7006 transforming.
7007 * tree-inline.c (optimize_inline_calls): Return TODOs rather than
7008 doing them by hand.
7009 (tree_function_versioning): Do not allocate dummy struct function.
7010 * tree-inline.h (optimize_inline_calls): Update prototype.
7011 * tree-optimize.c (execute_fixup_cfg): Export.
7012 (pass_fixup_cfg): Remove
7013 (tree_rest_of_compilation): Do not apply inlines.
7014 * tree-flow.h (execute_fixup_cfg): Declare.
7015 * Makefile.in (gt-passes.c): New.
7016 * passes.c: Include gt-passes.h
7017 (init_optimization_passes): New passes.
7018 (nnodes, order): New static vars.
7019 (do_per_function_toporder): New function.
7020 (execute_one_pass): Dump current pass here.
7021 (execute_ipa_pass_list): Don't dump current pass here.
7022
7023 2007-01-16 Janis Johnson <janis187@us.ibm.com>
7024
7025 * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
7026 (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
7027
7028 2007-01-16 David Edelsohn <edelsohn@gnu.org>
7029
7030 * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
7031 (strong_alias): Define.
7032 (__gcc_qmul): Provide non-FMA for soft-float.
7033 (__gcc_qdiv): Same.
7034 (__gcc_qneg): New.
7035 (__gcc_qeq): New.
7036 (__gcc_qle): New.
7037 (__gcc_qge): New.
7038 (__gcc_qunord): New.
7039 (__gcc_stoq): New.
7040 (__gcc_dtoq): New.
7041 (__gcc_qtos): New.
7042 (__gcc_qtod): New.
7043 (__gcc_qtoi): New.
7044 (__gcc_qtou): New.
7045 (__gcc_itoq): New.
7046 (__gcc_utoq): New.
7047 (fmsub): New.
7048 * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
7049 soft-float functions.
7050 * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
7051 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
7052 about long double soft float.
7053
7054 2007-01-16 Dorit Nuzman <dorit@il.ibm.com>
7055 Tehila Meyzels <tehila@il.ibm.com>
7056
7057 * tree-vectorizer.h (is_pattern_stmt_p): New.
7058 * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
7059 formatting (tabs instead of spaces). Cleanup and clarify setting
7060 of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
7061 * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
7062 (vectorizable_type_demotion): Check that types are integral.
7063 (vectorizable_type_promotion): Likewise.
7064 (vectorizable_store): Fix typo. Eliminate new-line at end of
7065 comments.
7066
7067 2007-01-16 Jan Hubicka <jh@suse.cz>
7068
7069 * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
7070 cgraph edges too.
7071
7072 2007-01-15 Eric Christopher <echristo@apple.com>
7073
7074 * ifcvt.c: Include vec.h, vecprim.h.
7075 (check_cond_move_block): New argument regs.
7076 Reorganize. Add registers used to regs.
7077 (cond_move_process_if_block): Use regs set above as
7078 loop bounds.
7079
7080 2007-01-15 Eric Christopher <echristo@apple.com>
7081
7082 * config/darwin.h: Update copyright.
7083 (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
7084 (LINK_COMMAND_SPEC): Add -u.
7085 (LINK_SPEC): Fix umbrella for above.
7086
7087 2007-01-15 Joseph S. Myers <joseph@codesourcery.com>
7088
7089 * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
7090 glibc CVS.
7091
7092 2007-01-15 Tom Tromey <tromey@redhat.com>
7093
7094 * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
7095 * doc/install.texi (Testing): Don't mention jacks.
7096 (Configuration): Document --enable-java-maintainer-mode. Move
7097 --with-java-home to libgcj-specific section. Document
7098 --with-ecj-jar.
7099 (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
7100
7101 2007-01-15 Jan Hubicka <jh@suse.cz>
7102
7103 * tree-ssa-dce.c (DCE_TODOs): New.
7104 (propagate_necessity): Return if something changed.
7105 (eliminate_unnecessary_stmts): Likewise.
7106 (perform_tree_ssa_dce): Return TODO flags when needed.
7107 (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
7108
7109 2007-01-15 Uros Bizjak <ubizjak@gmail.com>
7110
7111 * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
7112 (fyl2x_extend<mode>xf3_i387): New insn pattern.
7113 (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
7114 patterns using X87MODEF12 mode macro. Extend operand 1
7115 to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
7116 (log10<mode>2): Ditto.
7117 (log2<mode>2): Ditto.
7118 (log1p<mode>2): Ditto.
7119 (logb<mode>2): Ditto.
7120 (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
7121 (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
7122 (*fxtractxf3_i387): Rename from *fxtractxf3.
7123 (fxtract_extend<mode>xf3_i387): New insn pattern.
7124 (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
7125 * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
7126 and gen_fyl2xxf3_i387().
7127
7128 2007-01-14 Zdenek Dvorak <dvorakz@suse.cz>
7129
7130 * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
7131 * cfgloopmanip.c (fix_loop_placement): Made static. Use
7132 get_loop_exit_edges. Changed return type to bool.
7133 * cfgloop.h (fix_loop_placement): Declaration removed.
7134
7135 2007-01-14 Dorit Nuzman <dorit@il.ibm.com>
7136
7137 * param.h (MIN_VECT_LOOP_BOUND): New.
7138 * params.def (MIN_VECT_LOOP_BOUND): New.
7139 * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
7140 argument - minimum threshold for number of iterations.
7141 * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
7142 argument to declaration.
7143 * tree-vect-analyze.c (vect_analyze_operations): Check value of
7144 MIN_VECT_LOOP_BOUND.
7145 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
7146 slpeel_tree_peel_loop_to_edge with additional argument.
7147 (vect_do_peeling_for_alignment): Likewise.
7148 * doc/invoke.texi (min-vect-loop-bound): Document new param option.
7149
7150 2007-01-14 Uros Bizjak <ubizjak@gmail.com>
7151
7152 PR target/30413
7153 * config/i386/i386.c (print_operand) ['z']: Output 'b' for
7154 operands of size 1.
7155
7156 2007-01-14 Jan Hubicka <jh@suse.cz>
7157
7158 * tree-dfa.c (remove_referenced_var): New function.
7159 * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
7160 prune referenced vars list too.
7161 * tree-flow.h (remove_referenced_var): Declare.
7162
7163 2007-01-14 Jan Hubicka <jh@suse.cz>
7164
7165 * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
7166 separately.
7167 (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
7168 (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
7169 * except.h (verify_eh_throw_table_statements): Kill prototype.
7170 * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
7171 into call exrepssions.
7172 * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
7173 eh trhow verifier.
7174 * tree-cfg.c: Include pointer-set.h.
7175 (verify_node_sharing): Work on pointer set.
7176 (verify_eh_throw_stmt_node): New.
7177 (verify_stmts): Use pointers sets, verify throw_stmt.
7178
7179 2007-01-13 Zdenek Dvorak <dvorakz@suse.cz>
7180
7181 * ipa-reference.c (analyze_function): Consider also addresses taken
7182 in phi nodes.
7183
7184 2007-01-12 Roger Sayle <roger@eyesopen.com>
7185
7186 * c-typeck.c (null_pointer_constant_p): Replace use of
7187 TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7188 (build_c_cast): Likewise.
7189
7190 2007-01-12 Roger Sayle <roger@eyesopen.com>
7191
7192 * tree.h (force_fit_type_double): Remove unused final argument.
7193 * c-common.c (constant_expression_warning): Replace use of
7194 TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7195 (convert_and_check): Likewise.
7196 (shorten_compare): Update call to force_fit_type_double.
7197 (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
7198 * convert.c (convert_to_pointer): Update call to
7199 force_fit_type_double.
7200 * fold-const.c (force_fit_type_double): Remove overflowed_const
7201 argument.
7202 (int_const_binop, fold_convert_const_int_from_int,
7203 fold_convert_const_int_from_real, fold_div_compare,
7204 fold_sign_changed_comparison, fold_unary, fold_negate_const,
7205 fold_abs_const, fold_not_const): Remove the final argument from
7206 calls to force_fit_type_double.
7207
7208 2007-01-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
7209
7210 * configure.ac: Set insn to "nop" for spu-*-* also.
7211 * configure: Regenerate.
7212
7213 2007-01-12 Olga Golovanevsky <olga@il.ibm.com>
7214
7215 * builtins.def : Add BUILT_IN_FREE.
7216
7217 2007-01-12 Jan Hubicka <jh@suse.cz>
7218
7219 PR tree-optimization/30443
7220 * tree-inline.c (tree_function_versioning): Do not optimize when
7221 cloning for inlining.
7222
7223 2007-01-12 Zdenek Dvorak <dvorakz@suse.cz>
7224
7225 * doc/loop.texi: Document recording of loop exits.
7226 * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
7227 (update_single_exits_after_duplication,
7228 update_single_exit_for_duplicated_loop,
7229 update_single_exit_for_duplicated_loops): Removed.
7230 (duplicate_loop_to_header_edge): Do not call
7231 update_single_exits_after_duplication and
7232 update_single_exit_for_duplicated_loops.
7233 (loop_version): Do not update single_exit information.
7234 (fix_loop_structure): Use record_loop_exits instead of
7235 mark_single_exit_loops.
7236 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
7237 the lists of loop exits.
7238 * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
7239 split_edge, merge_blocks): Update the lists of loop exits.
7240 * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
7241 loop_optimizer_init.
7242 * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
7243 of mark_single_exit_loops.
7244 (loop_optimizer_finalize): Call release_recorded_exits.
7245 * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
7246 LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
7247 * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
7248 update single exit information.
7249 * lambda-code.c (perfect_nestify): Ditto.
7250 * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
7251 (mark_single_exit_loops): Removed.
7252 (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
7253 get_exit_descriptions, rescan_loop_exit, record_loop_exits,
7254 dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
7255 functions.
7256 (get_loop_exit_edges, single_exit): Use recorded exit lists.
7257 (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
7258 (verify_loop_structure): Verify consistency of the exit lists.
7259 (flow_loops_find): Use alloc_loop. Initialize exits hash.
7260 (set_single_exit): Removed.
7261 * cfgloop.h (struct loop_exit): New function.
7262 (struct loop): single_exit_ field replaced by exits field.
7263 (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
7264 (struct loops): Added exits hash.
7265 (mark_single_exit_loops, set_single_exit): Declaration removed.
7266 (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
7267
7268 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7269
7270 * doc/invoke.texi: Avoid use of @headitem.
7271
7272 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7273
7274 * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
7275
7276 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7277
7278 * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
7279 list of targets.
7280
7281 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
7282 Richard Sandiford <richard@codesourcery.com>
7283
7284 * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
7285 * config/m68k/m68k.opt: Resort options.
7286 (mbitfield, mrtd, mshort): Remove RejectNegative properties.
7287
7288 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
7289 Richard Sandiford <richard@codesourcery.com>
7290
7291 * doc/invoke.texi: Document the macros that are defined by
7292 m68k's -mtune and -mhard-float options.
7293 * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
7294 (m68k_cpp_cpu_family): Likewise.
7295 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
7296 of __ucfv*__ macros. Define __mcffpu__ if generating code for
7297 ColdFire FPUs. Define __mcf_cpu_* and __mcf_family_* macros.
7298 * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
7299 (m68k_cpp_cpu_family): Likewise.
7300
7301 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7302
7303 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
7304 macros besides mc68000 as tuning macros. Use a switch statement
7305 to set them and mcpu32.
7306
7307 2007-01-12 Julian Brown <julian@codesourcery.com>
7308
7309 * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
7310 (TARGET_68040_ONLY): Rename to...
7311 (TARGET_68040): ...this.
7312 * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
7313 * config/m68k/m68k.md: Likewise.
7314
7315 2007-01-12 Julian Brown <julian@codesourcery.com>
7316 Nathan Sidwell <nathan@codesourcery.com>
7317 Richard Sandiford <richard@codesourcery.com>
7318
7319 * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
7320 the -mcpu= argument associated with the --with-cpu setting.
7321 Define M68K_DEFAULT_TUNE to the default -mtune= option,
7322 if different from the one implied by the -mcpu setting.
7323 Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
7324 using mcpu=FOO as the default CPU option. Set target_cpu_default2.
7325 * doc/invoke.texi: Mention ColdFire in the introduction to the
7326 m68k options. Document the new -march, -mcpu, -mtune, -mdiv,
7327 -mno-div and -mhard-float options. Make -m68881 a synonym for
7328 -mhard-float. Document the previously-undocumented -m5206e,
7329 -m528x, -m5307 and -m5407 options. Tweak the existing option
7330 documentation for consistency.
7331 * doc/install.texi: Mention new --with-cpu arguments.
7332 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
7333 default CPU if neither -mcpu nor -march are specified.
7334 (ASM_CPU_SPEC): Pass down -mcpu and -march options.
7335 (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
7336 TARGET_ISA*. Set the legacy __mcf*__ cpu macros in the same way,
7337 using m68k_tune to decide between families that implement the
7338 same ISA. Use m68k_tune to set __mcfv4e__.
7339 (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
7340 (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
7341 (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
7342 (FL_ISA_C, FL_ISA_MMU): New macros.
7343 (MASK_COLDFIRE): Delete.
7344 (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
7345 (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
7346 (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
7347 (TARGET_HARD_FLOAT): Do not define here.
7348 (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
7349 (TUNE_68000): New macro.
7350 (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
7351 (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
7352 (TUNE_CFV2): Redefine in terms of m68k_tune.
7353 (uarch_type, target_device, fpu_type): New enums.
7354 (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
7355 * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
7356 (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
7357 (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
7358 (FL_FOR_isa_c): New macros.
7359 (m68k_isa): New enum.
7360 (m68k_target_selection): New structure.
7361 (all_devices, all_isas, all_microarchs): New tables.
7362 (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
7363 (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
7364 (MASK_ALL_CPU_BITS): Delete.
7365 (m68k_find_selection): New function.
7366 (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
7367 Map the legacy target options to a combination of the new ones.
7368 (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
7369 m68k_cpu_flags. Handle M68K_DEFAULT_TUNE. Use m68k_cpu_flags
7370 to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
7371 settings.
7372 * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
7373 (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
7374 properties.
7375 (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
7376 (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
7377 * config/m68k/m68k-devices.def: New file.
7378
7379 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7380 Nathan Sidwell <nathan@codesourcery.com>
7381
7382 * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
7383 (SUBTARGET_EXTRA_SPECS): New macros.
7384 * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
7385 use %(asm_cpu_spec) instead.
7386 * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
7387 * config/m68k/openbsd.h (ASM_SPEC): Likewise.
7388 * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
7389 (EXTRA_SPECS): Rename to...
7390 (SUBTARGET_EXTRA_SPECS): ...this.
7391
7392 2007-01-12 Nathan Sidwell <nathan@codesourcery.com>
7393 Richard Sandiford <richard@codesourcery.com>
7394 Julian Brown <julian@codesourcery.com>
7395
7396 * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
7397 (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
7398 to the configuration's default CPU.
7399 (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
7400 Remove default masks.
7401 (m680[012]0-*-*): Set the default with_cpu to the first part of
7402 the target name.
7403 (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
7404 (m68k*-*-linux): Extend the --with-cpu handling to...
7405 (m680[012]0-*-*, m68k*-*-*): ...these configurations. Allow m68000
7406 and m68010. Don't set target_cpu_default2.
7407 * doc/install.texi: Document --with-cpu for m68k.
7408 * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
7409 * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
7410 (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
7411 (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
7412 (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
7413 (ASM_SPEC): Remove use of %(asm_cpu_default).
7414 (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
7415 * config/m68k/linux.h (TARGET_DEFAULT): Delete.
7416 (CPP_SPEC): Merge definitions. Do not handle __HAVE_68881__ here.
7417 * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
7418 __HAVE_FPU__ if TARGET_HARD_FLOAT.
7419 (TARGET_DEFAULT): Delete.
7420 (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
7421 cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
7422 (CPP_CPU_SPEC): Delete.
7423 (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
7424 the appropriate string.
7425 (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
7426 (CPP_SPEC): Define to NETBSD_CPP_SPEC.
7427 (ASM_SPEC): Don't use %(asm_default_spec).
7428 * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
7429 TARGET_DEFAULT and add MASK_68881.
7430 * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
7431
7432 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7433
7434 * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
7435 (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
7436 MASK_68010 alongside MASK_68020.
7437 * doc/invoke.texi: Document -m68010.
7438 * config/m68k/m68k.opt (m68010): New.
7439 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
7440 if TUNE_68010.
7441 (TUNE_68010): New macro.
7442 * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
7443 (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
7444 (M68K_CPU_m68332): Add MASK_68010.
7445 * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
7446 fallback definition.
7447 * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
7448 defines.
7449 * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
7450 (m68k_handle_option): Handle OPT_m68010. Add MASK_68010
7451 to all entries that use MASK_68020.
7452 (output_move_simode_const, output_move_himode, output_move_qimode)
7453 (output_move_stricthi, output_move_strictqi): Use TARGET_68010
7454 instead of TARGET_68020 to select clr behavior. Remove comment
7455 about there being no TARGET_68010.
7456 * config/m68k/m68k.md: Likewise throughout.
7457
7458 2007-01-12 Julian Brown <julian@codesourcery.com>
7459
7460 * config/m68k/m68k.h (TARGET_ISAB): New macro.
7461 * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
7462 * config/m68k/m68k.md: Likewise.
7463
7464 2007-01-12 Julian Brown <julian@codesourcery.com>
7465
7466 * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
7467 TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
7468
7469 2007-01-12 Julian Brown <julian@codesourcery.com>
7470
7471 * config/m68k/m68k.h (TUNE_68040_60): New macro.
7472 * config/m68k/m68k.c (standard_68881_constant_p): Use it.
7473 * config/m68k/m68k.md: Likewise.
7474
7475 2007-01-12 Julian Brown <julian@codesourcery.com>
7476 Richard Sandiford <richard@codesourcery.com>
7477
7478 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
7479 instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
7480 TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
7481 TARGET_CPU32.
7482 (TARGET_CPU32): Rename to...
7483 (TUNE_CPU32): ...this.
7484 (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
7485 (TUNE_CFV2): New macros.
7486 * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
7487 remove conditions that are implied by TARGET_68020.
7488 * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
7489 instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
7490 (m68k_output_function_epilogue): Likewise.
7491 (m68k_rtx_costs): Likewise. Use TUNE_68060 instead of TARGET_68060
7492 and TUNE_CFV2 instead of TARGET_5200. Use TUNE_68000_10 instead of
7493 "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
7494 non-68000 timings. Refactor multiplication and division costs.
7495 (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
7496 TUNE_CPU32 instead of TARGET_CPU32.
7497 (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
7498 and TUNE_68060 instead of TARGET_68060.
7499 * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
7500 TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
7501 TARGET_CPU32.
7502 (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
7503 && !TARGET_COLDFIRE" to choose between moveq and clr.
7504 Likewise in the unnamed movsf pattern.
7505 (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
7506 "!TARGET_68020 && !TARGET_COLDFIRE". Likewise the unnamed
7507 ashiftrt pattern.
7508
7509 2007-01-12 Richard Sandiford <richard@codesourcery.com>
7510
7511 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
7512 of tabbing before backslashes.
7513
7514 2007-01-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
7515
7516 * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
7517 * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
7518 (ASM_OUTPUT_INTERNAL_LABEL): Define.
7519
7520 2007-01-11 Zdenek Dvorak <dvorakz@suse.cz>
7521
7522 * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
7523 find_interesting_uses_cond.
7524 (find_interesting_uses_cond): Use extract_cond_operands.
7525 (rewrite_use_compare): Use extract_cond_operands and
7526 force_gimple_operand_bsi. Do not call update_stmt.
7527 (determine_use_iv_cost_condition): Use extract_cond_operands.
7528 Return cheaper of using original bound and changing the exit bound.
7529
7530 2007-01-11 Zdenek Dvorak <dvorakz@suse.cz>
7531
7532 PR tree-optimization/29516
7533 * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
7534 most_expensive_mult_to_index, addr_to_parts,
7535 create_mem_ref, maybe_fold_tmr): Make the type of
7536 fields of TARGET_MEM_REF sizetype.
7537 (move_fixed_address_to_symbol, move_pointer_to_base):
7538 New functions.
7539 * tree.def (TARGET_MEM_REF): Add comment on types of
7540 the operands.
7541
7542 2007-01-11 Joseph Myers <joseph@codesourcery.com>
7543
7544 * c-common.c (vector_types_convertible_p): Treat opaque types as
7545 always convertible if they have the same size, but not otherwise.
7546
7547 2007-01-11 Steven Bosscher <steven@gcc.gnu.org>
7548
7549 * ifcvt.c (struct noce_if_info): Add comments to the fields.
7550 Remove the b_unconditional field.
7551 (noce_try_sign_mask): Do not look at b_unconditional.
7552 (noce_process_if_block): Do not use merge_if_blocks. Update
7553 the CFG here. Do not set b_unconditional.
7554 (cond_move_process_if_block): Likewise.
7555 (find_cond_trap): Likewise.
7556 (check_cond_move_block): Require simple jump insns at the end
7557 of the basic block.
7558
7559 2007-01-11 Jan Hubicka <jh@suse.cz>
7560
7561 PR tree-optimization/1046
7562 * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
7563 when alias info is not ready.
7564 (pass_tail_recursion): Do not require aliasing.
7565 * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
7566 * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
7567 * tree-ssa-copy.c (pass_copy_prop): Likewise.
7568 * tree-ssa-forwprop.c (pass_forwprop): Likewise.
7569 * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
7570 * passes.c (init_optimization_passes): Execute rename_ssa_copies,
7571 ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
7572 before inlining.
7573 * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
7574 When aliasing is not build, mark statement as volatile.
7575
7576 2007-01-11 Tom Tromey <tromey@redhat.com>
7577
7578 PR preprocessor/15185, PR preprocessor/20989:
7579 * doc/cppopts.texi <-MT>: Update description of algorithm for
7580 computing default target.
7581 <-M, -MD>: Reword "basename" text.
7582
7583 2007-01-11 Roger Sayle <roger@eyesopen.com>
7584
7585 * builtins.c (expand_builtin_pow, expand_builtin_powi,
7586 fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
7587 fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
7588 fold_builtin_int_int_roundingfn, fold_builtin_bitop,
7589 fold_builtin_bswap, real_constp, fold_builtin_pow,
7590 fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
7591 do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
7592 uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7593 * convert.c (convert_to_pointer): Likewise.
7594 * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
7595 * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
7596 const_binop, fold_convert_const_int_from_int,
7597 fold_convert_const_int_from_real,
7598 fold_convert_const_real_from_real, sign_bit_p,
7599 optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
7600 fold_sign_changed_comparison, fold_unary, fold_comparison,
7601 fold_binary, multiple_of_p, tree_Expr_non_zero_p,
7602 fold_negate_const, fold_abs_const, fold_not_const): Likewise.
7603 * print-tree.c (print_node_brief, print_node): Likewise.
7604 * stor-layout.c (place_field, layout_type): Likewise.
7605 * tree-chrec.c (keep_cast): Likewise.
7606 * tree.c (build_vector, build_real, build_real_from_int_cst,
7607 build_complex): Likewise.
7608
7609 2007-01-11 Roger Sayle <roger@eyesopen.com>
7610
7611 * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete. For the time being,
7612 treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
7613
7614 2007-01-11 Paolo Bonzini <bonzini@gnu.org>
7615
7616 * configure.ac (strict1_warn): Rename to strict_warn.
7617 (WERROR, --enable-werror, symlink hacks, stage1_cflags,
7618 cc_set_by_configure, quoted_cc_set_by_configure,
7619 stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
7620 all_boot_languages, all_stagestuff): Remove.
7621 (target_list): Remove bootstrap targets.
7622 * Makefile.in (quickstrap): Unconditionally make a synonym of all.
7623 (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
7624 REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
7625 SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
7626 VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
7627 STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
7628 stage1_copy, stage2_build, stage2_copy, stageprofile_build,
7629 stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
7630 stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
7631 bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
7632 bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
7633 unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
7634 restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
7635 cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
7636 *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
7637 stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
7638 stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
7639 risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
7640 (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
7641 (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
7642 (mostlyclean): Adjust.
7643 (clean, distclean): Don't mention bootstrap stuff.
7644 * configure: Regenerate.
7645 * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
7646 java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
7647 treelang/config-lang.in (stagestuff): Remove.
7648 * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
7649 stageprofile, stagefeedback, stagestuff): Remove mention.
7650
7651 2007-01-11 Nick Clifton <nickc@redhat.com>
7652
7653 * config/mcore/predicates.md (mcore_general_movesrc_operand):
7654 Accept CONSTs.
7655 (mcore_general_movdst_operand): Do not accept CONST_INTs.
7656 (mcore_arith_K_S_operand): Run the test for the S constraint not
7657 the test for the M constraint.
7658 (mcore_addsub_operand): Do not accept integer values that are
7659 larger than 32 bits.
7660 * config/mcore/mcore.md: Remove unused constraints from split.
7661 (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
7662 (addsi3): Likewise.
7663 (allocate_stack): Likewise.
7664 * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
7665 operands to 32 bits.
7666 (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
7667 INTVAL.
7668 (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
7669 mcore_const_ok_for_inline, mcore_const_trick_uses_not,
7670 try_constant_tricks, mcore_num_ones, mcore_num_zeros,
7671 mcore_output_bclri, mcore_output_andn, output_inline_const,
7672 mcore_output_move, mcore_output_movedouble): Likewise.
7673 (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
7674 (output_inline_const): Likewise.
7675 (output_inline_const): Fix format strings used in sprintf
7676 statements.
7677 * config/mcore/mcore-protos.h: Update prototypes for changed
7678 functions in mcore.c.
7679 * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
7680 HOST_WIDE_INT and not int.
7681 (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
7682 CONST_OK_FOR_N): Likewise.
7683 (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
7684 (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
7685 an INTVAL.
7686
7687 2007-01-10 Jan Hubicka <jh@suse.cz>
7688
7689 * tree-vrp.c (remove_range_assertions): Release defs.
7690 * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
7691 * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
7692
7693 2007-01-10 Paul Brook <paul@codesourcery.com>
7694
7695 * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
7696 * config/arm/arm.md (mulsi3subsi): New insn.
7697
7698 2007-01-10 Zdenek Dvorak <dvorakz@suse.cz>
7699
7700 * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
7701 (tree_transform_and_unroll_loop): New.
7702 * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
7703 Declare.
7704
7705 2007-01-10 Robert Kennedy <jimbob@google.com>
7706
7707 * fold-const.c (fold_comparison): Fold comparisons like (x *
7708 1000 < 0) to (x < 0).
7709
7710 2007-01-10 Ian Lance Taylor <iant@google.com>
7711
7712 * tree-pretty-print.c (dump_generic_node): Print parentheses when
7713 operands have the same priority.
7714
7715 2007-01-10 Tom Tromey <tromey@redhat.com>
7716
7717 * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
7718 (fold_binary): Likewise.
7719 * langhooks.c (lhd_can_use_bit_fields_p): Removed.
7720 * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
7721 (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
7722 (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
7723 * langhooks.h (struct lang_hooks): Removed field
7724 'can_use_bit_fields_p'.
7725
7726 2007-01-10 Ralf Corsépius <ralf.corsepius@rtems.org>
7727
7728 * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
7729
7730 2007-01-10 Razya Ladelsky <razya@il.ibm.com>
7731
7732 * function.c (get_last_funcdef_no): New function.
7733 * function.h (get_last_funcdef_no): Declare.
7734 * tree-inline.c (initialize_cfun): Add initialization.
7735 (tree_function_versioning): Cleanup.
7736
7737 2007-01-10 Jan Hubicka <jh@suse.cz>
7738
7739 * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
7740 PHIs.
7741
7742 2007-01-10 Sa Liu <saliu@de.ibm.com>
7743 Ben Elliston <bje@au.ibm.com>
7744
7745 * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
7746 for SAVE_NONLOCAL and Pmode for any other save level.
7747 * spu-protos.h (spu_restore_stack_block): Declare.
7748 * spu.md (save_stack_block): Remove.
7749 (restore_stack_block): Call spu_restore_stack_block.
7750 * spu.c (spu_restore_stack_block): New function.
7751 (spu_expand_epilogue): Remove old comment.
7752
7753 2007-01-09 Zdenek Dvorak <dvorakz@suse.cz>
7754
7755 PR tree-optimization/30322
7756 * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
7757 (cand_value_at): Return the value as aff_tree.
7758 (may_eliminate_iv): Convert the bound from aff_tree to tree.
7759 * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
7760 aff_combination_mult): New functions.
7761 (aff_combination_add): Use aff_combination_add_cst.
7762 (aff_combination_convert): Allow conversions to a wider type.
7763 (tree_to_aff_combination): Handle BIT_NOT_EXPR.
7764 * tree-affine.h (aff_combination_mult): Declare.
7765
7766 2007-01-09 Carlos O'Donell <carlos@codesourcery.com>
7767
7768 * doc/tm.texi: Update documentation to reflect reality of exec
7769 and start file search behaviours. Update copyright year.
7770 * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
7771 header file directories.
7772
7773 2007-01-09 Uros Bizjak <ubizjak@gmail.com>
7774
7775 * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
7776 (*cosxf2): Rename to cosxf2_i387.
7777 (*sindf2, *sinsf2): Extend operand 1 to XFmode. Macroize patterns
7778 using X87MODEF12 mode macro. Rename patterns to
7779 *sin_extend<mode>xf2_i387. Use SSE_FLOAT_MODE_P to disable patterns
7780 for SSE math.
7781 (*cosdf2, *cossf2): Ditto.
7782 (sincosdf3, sincossf3): Ditto. Rewrite corresponding splitters
7783 to match extended input operands.
7784 (sincos<mode>3): New expander.
7785 (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
7786 insn patterns and corresponding splitters.
7787
7788 2007-01-09 Kaz Kojima <kkojima@gcc.gnu.org>
7789
7790 * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
7791 (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
7792
7793 2007-01-09 Nicolas Pitre <nico@cam.org>
7794
7795 PR target/30173
7796 * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
7797
7798 2007-01-08 Geoffrey Keating <geoffk@apple.com>
7799
7800 * target.h (struct gcc_target): New field library_rtti_comdat.
7801 * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
7802 (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
7803 * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
7804 * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
7805
7806 2007-01-08 Geoffrey Keating <geoffk@apple.com>
7807
7808 * doc/invoke.texi (Optimize Options): Correct description of -O0.
7809
7810 2007-01-08 Richard Guenther <rguenther@suse.de>
7811
7812 * tree.h (force_fit_type_double): Export.
7813 (force_fit_type): Remove.
7814 * fold-const.c (force_fit_type_double): New function.
7815 (force_fit_type): Remove.
7816 (int_const_binop): Use it.
7817 (fold_convert_const_int_from_int): Likewise.
7818 (fold_convert_const_int_from_real): Likewise.
7819 (fold_div_compare): Likewise.
7820 (fold_sign_changed_comparison): Likewise.
7821 (fold_unary): Likewise.
7822 (fold_negate_const): Likewise.
7823 (fold_abs_const): Likewise.
7824 (fold_not_const): Likewise.
7825 * c-common.c (shorten_compare): Use force_fit_type_double.
7826 * convert.c (convert_to_pointer): Likewise.
7827
7828 2007-01-08 Richard Guenther <rguenther@suse.de>
7829
7830 * tree.h (build_int_cst_wide_type): Export.
7831 * tree.c (build_int_cst_wide_type): New function.
7832 (build_int_cst_wide): Fix comment.
7833 * builtins.c (fold_builtin_object_size): Use build_int_cst
7834 to build -1 or 0 of the correct type. Use fit_double_type
7835 to check for overflow.
7836 * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
7837 to build the mask.
7838 (decode_field_reference): Likewise.
7839 (all_ones_mask_p): Likewise.
7840 (native_interpret_int): Use build_int_cst_wide_type.
7841 (fold_binary): Use build_int_cst_type to build an all-ones
7842 value.
7843 * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
7844
7845 2007-01-08 Daniel Jacobowitz <dan@codesourcery.com>
7846
7847 * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
7848
7849 2007-01-09 Ben Elliston <bje@au.ibm.com>
7850
7851 * genautomata.c (STATS_OPTION): New option.
7852 (stats_flag): New flag.
7853 (gen_automata_option): Handle it.
7854 (initiate_automaton_gen): Ditto.
7855 (write_automata): Output statistics only if stats_flag is
7856 set. Likewise, output time statistics only if time_flag is set.
7857 * doc/md.texi (Processor pipeline description): Document new flag.
7858
7859 2007-01-08 Richard Guenther <rguenther@suse.de>
7860
7861 * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
7862 * tree.c (build_int_cst_type): Likewise.
7863 (size_in_bytes): Don't call force_fit_type on the result.
7864 (int_fits_type_p): Use fit_double_type.
7865 * fold-const.c (fit_double_type): New function.
7866 (force_fit_type): Use it.
7867 * tree.h (fit_double_type): Export.
7868
7869 2007-01-08 Jan Hubicka <jh@suse.cz>
7870
7871 * tree-vectorizer.c (gate_increase_alignment): Fix return type.
7872 * ipa.c (function_and_variable_visibility): Fix return type.
7873
7874 2007-01-08 Richard Guenther <rguenther@suse.de>
7875
7876 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
7877 of offset to build the index.
7878 * tree-pretty-print.c (dump_generic_node): Don't build negated
7879 const just for printing.
7880 * c-pretty-print.c (pp_c_integer_constant): Likewise.
7881 * builtins.c (fold_builtin_int_roundingfn): Check if result
7882 fits the type by using force_fit_type and comparing the result.
7883 * predict.c (predict_loops): Use compare_tree_int for comparison.
7884 * tree.c (build_int_cst): Fall back to integer_type_node for
7885 NULL_TREE type.
7886 (build_int_cst_wide): Assert type is non-null.
7887
7888 2007-01-08 Roberto Costa <roberto.costa@st.com>
7889
7890 * tree-vrp.c (extract_range_from_cond_expr): New.
7891 (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
7892 * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
7893 as expressions.
7894 (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
7895 * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
7896 tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
7897 used as expressions.
7898 * tree-object-size.c (cond_expr_object_size): New.
7899 (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
7900
7901 2007-01-08 Jan Hubicka <jh@suse.cz>
7902
7903 * tree-ssa-forwprop.c (forward_propagate_into_cond,
7904 tree_ssa_forward_propagate_single_use_va): Release defs of propagated
7905 statement.
7906
7907 2007-01-08 Richard Guenther <rguenther@suse.de>
7908
7909 PR tree-optimization/23603
7910 * tree-vrp.c (set_value_range_to_truthvalue): New function.
7911 (extract_range_from_binary): Fall back to truthvalue instead of
7912 varying for TRUTH_*_EXPR.
7913 (extract_range_from_comparison): Fall back to truthvalue instead of
7914 varying.
7915 (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
7916 if all visited PHI values were constant.
7917
7918 2007-01-08 Jan Hubicka <jh@suse.cz>
7919
7920 * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
7921 (cgraph_analyze_function): break out from ...
7922 (cgraph_finalize_compilation_unit): ... here.
7923 (cgraph_expand_function): Remove forgoten commented out line.
7924 (cgraph_optimize): Analyze functions.
7925
7926 2007-01-08 Jan Hubicka <jh@suse.cz>
7927
7928 * tree-pas.h (TODO_remove_function): New flag.
7929 (TODO_update*): Renumber.
7930 (pass_ipa_increase_alignment,
7931 pass_ipa_function_and_variable_visibility): New passes.
7932 * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
7933 (cgraph_function_and_variable_visibility): Move to ipa.c
7934 (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
7935 cgraph_increase_alignment.
7936 * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
7937 (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
7938 calling tree-inline.
7939 (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
7940 (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
7941 * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
7942 (gate_increase_alignment): New function.
7943 (pass_ipa_increase_alignment): New pass.
7944 * ipa.c: Inline tree-pass.h and timevar.h
7945 (function_and_variable_visibility): Move here from cgraphunit.c
7946 * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
7947 * passes.c (init_optimization_passes): Add the two new passes.
7948 (execute_todo): Handle cgraph_remove_functions.
7949
7950 2007-01-08 Nick Clifton <nickc@redhat.com>
7951
7952 * config/frv/predicates.md (reg_or_0_operand): Accept
7953 CONST_DOUBLEs.
7954
7955 2007-01-08 Ralf Corsépius <ralf.corsepius@rtems.org>
7956
7957 * config/bfin/rtems.h, config/bfin/t-rtems: New.
7958 * config.gcc: Add bfin*-rtems*.
7959
7960 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
7961
7962 * c.opt: Add -flax-vector-conversions.
7963 * c-typeck.c (convert_for_assignment): Pass flag to
7964 vector_types_convertible_p to allow emission of note.
7965 (digest_init): Likewise.
7966 * c-opts.c: Handle -flax-vector-conversions.
7967 * c-common.c (flag_lax_vector_conversions): New.
7968 (vector_types_convertible_p): Unless -flax-vector conversions
7969 has been passed, disallow conversions between vectors with
7970 differing numbers of subparts and/or element types. If such
7971 a conversion is disallowed, possibly emit a note on the first
7972 occasion only to inform the user of -flax-vector-conversions.
7973 The new last argument specifies this.
7974 * c-common.h (flag_lax_vector_conversions): New.
7975 (vector_types_convertible_p): Add extra argument.
7976 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
7977 char_type_node for V*QI type vectors.
7978 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
7979 Update to satisfy new typechecking rules.
7980 * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
7981 C and C++ variants.
7982 * doc/invoke.texi (C Dialect Options): Document
7983 -flax-vector-conversions.
7984
7985 2007-01-08 Mark Shinwell <shinwell@codesourcery.com>
7986
7987 PR tree-optimization/29877
7988 * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
7989 a register variable on the RHS to not be replaceable.
7990
7991 2007-01-08 Chen Liqin <liqin@sunnorth.com.cn>
7992 * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
7993 * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
7994 const_simm15, const_pow2, const_npow2): Added.
7995 * config/score/misc.md (insv, extv, extzv, movmemsi,
7996 move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
7997 * config/score/score.c (score_address_cost, score_select_cc_mode):
7998 Added.
7999 Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
8000 Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
8001 Update score_print_operand.
8002 * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
8003 Adjust register allocate order and update some macro define.
8004 * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
8005 mdx_block_move_straight, mdx_block_move_loop_head,
8006 mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
8007 mdx_block_move): Added.
8008 (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
8009 mdp_limm): Updated and fix some bug and typo.
8010 * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
8011 (movsf, movdf, doloop_end): Added.
8012
8013 2007-01-08 Kazu Hirata <kazu@codesourcery.com>
8014
8015 * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
8016 config/arm/thumb2.md: Fix comment typos.
8017 * doc/extend.texi: Fix a typo.
8018
8019 2007-01-07 Eric Christopher <echristo@apple.com>
8020
8021 * configure.ac: Check for __stack_chk_fail for darwin.
8022 * configure: Regenerate.
8023
8024 2007-01-07 Richard Guenther <rguenther@suse.de>
8025
8026 * tree-vrp.c (extract_range_from_assert): CSE calls to
8027 compare_values where possible.
8028 (extract_range_from_unary_expr): Likewise.
8029
8030 2007-01-07 Anatoly Sokolov <aesok@post.ru>
8031
8032 * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
8033 * config/avr/avr.c (call_insn_operand): Delete function.
8034 * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
8035 instead of register number. Use predicates.
8036 * config/avr/predicates.md (const0_operand, reg_or_0_operand,
8037 call_insn_operand): Add.
8038
8039 2007-01-06 Jan Hubicka <jh@suse.cz>
8040
8041 * tree-pass.h (pass_build_cgraph_edges): Declare.
8042 * cgraphunit.c (record_refernece): Move to cgraphbuild.c
8043 (visited_nodes): Remove.
8044 (cgraph_create_edges): Move to cgraphbuild.c; rename to
8045 build_cgrpah_edges; make visited_nodes local.
8046 (cgraph_process_new_functions): DO not call initialize_inline_failed.
8047 (record_references_in_initializer): Move to cgraphbuild.c
8048 (initialize_inline_failed, rebuild_cgraph_edges,
8049 pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
8050 (verify_cgraph_node): Make visited_nodes local.
8051 (cgraph_analyze_function): Do not call cgraph_create_edges and
8052 initialize_inline_failed.
8053 (cgraph_expand_function): Do not call cgraph_lower_function;
8054 assert that function is already lowered.
8055 * Makefile.in (cgraphbuild.o): New.
8056 * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
8057 at the end of lowering passes.
8058
8059 2007-01-06 Steven Bosscher <steven@gcc.gnu.org>
8060
8061 * ifcvt.c (cond_move_convert_if_block): New function, code
8062 factored out from...
8063 (cond_move_process_if_block): ...here. Call the new function
8064 on the THEN and ELSE blocks.
8065 (merge_if_block): Do not copy global_live_at_end, merge_blocks
8066 already takes care of this.
8067
8068 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
8069
8070 PR c/19978
8071 * tree.h (TREE_OVERFLOW_P): New.
8072 * c-typeck.c (parser_build_unary_op): Warn only if result
8073 overflowed and operands did not.
8074 (parser_build_binary_op): Likewise.
8075 (convert_for_assignment): Remove redundant overflow_warning.
8076 * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
8077
8078 2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
8079
8080 * c-typeck.c (store_init_value): Split over two lines to follow
8081 the GNU coding style.
8082
8083 2007-01-05 Benjamin Kosnik <bkoz@redhat.com>
8084
8085 * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
8086 __GXX_EXPERIMENTAL_CXX0X__.
8087 * doc/cpp.texi: Same.
8088
8089 2007-01-05 Richard Guenther <rguenther@suse.de>
8090
8091 PR middle-end/27826
8092 * tree.c (get_narrower): Do not construct COMPONENT_REFs
8093 with mismatched types. Instead explicitly build a
8094 conversion NOP_EXPR.
8095
8096 2007-01-05 Ian Lance Taylor <iant@google.com>
8097
8098 * c-common.c (decl_with_nonnull_addr_p): New function.
8099 (c_common_truthvalue_conversion): Call it.
8100 * c-typeck.c (build_binary_op): Likewise.
8101 * c-common.h (decl_with_nonnull_addr_p): Declare.
8102
8103 2007-01-05 Jakub Jelinek <jakub@redhat.com>
8104
8105 PR c/30360
8106 * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
8107 denom against 0.0.
8108
8109 2007-01-05 Joel Brobecker <brobecker@adacore.com>
8110
8111 * doc/install.texi (Final install): Document the fact that
8112 the GNAT runtime should not be stripped.
8113
8114 2007-01-04 Jan Hubicka <jh@suse.cz>
8115
8116 * tree-inline.c (fold_marked_statements): Update operand caches
8117 and EH after folding
8118
8119 2007-01-04 Ian Lance Taylor <iant@google.com>
8120
8121 * c-common.c (check_function_nonnull): Whitespace fix.
8122
8123 2007-01-04 Jan Hubicka <jh@suse.cz>
8124
8125 * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
8126 comitted older version of patch.
8127 (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
8128 function, celanup cfg and collect garbage.
8129
8130 2007-01-04 Mike Stump <mrs@apple.com>
8131
8132 * Makefile.in (mostlyclean): Don't remove libgcc anymore.
8133 (clean): Likewise.
8134
8135 2007-01-04 Eric Christopher <echristo@apple.com>
8136
8137 * libgcc2.c (__bswapsi2): Use SItype.
8138 (__bswapdi2): Use DItype.
8139 * libgcc2.h: Update for above.
8140
8141 2007-01-04 Paul Brook <paul@codesourcery.com>
8142
8143 * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
8144 mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
8145 mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
8146 umulsidi3, umulsidi3adddi, smulsi3_highpart,
8147 umulsi3_highpart): Make conditional on !arm_arch6.
8148 (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
8149 mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
8150 mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
8151 umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
8152 umulsi3_highpart_v6): New insns.
8153
8154 2007-01-04 Roger Sayle <roger@eyesopen.com>
8155
8156 * fold-const.c (fold_convert): When casting an expression to void,
8157 fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
8158 have a type. Instead of attempting to build a NOP_EXPR, return
8159 these "special" trees directly.
8160
8161 2007-01-04 Joseph Myers <joseph@codesourcery.com>
8162
8163 * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
8164 MULT inside MINUS as either argument. Use rs6000_cost->dmul -
8165 rs6000_cost->fp not 0 as adjustment for outer NEG.
8166
8167 2007-01-04 Jan Hubicka <jh@suse.cz>
8168
8169 * cgraph.c (cgraph_release_function_body): New function.
8170 (cgraph_remove_node): Use it.
8171 * cgraph.h (cgraph_release_function_body): Declare.
8172 * cgraphunit.c (cgraph_expand_function): Use it.
8173 * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
8174 * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
8175 is initialized and while compilation of other function is running.
8176 * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
8177 statement CFG annotations from here to ...
8178 * tree-cfg.c (delete_tree_cfg_annotations): ... here.
8179
8180 2007-01-04 Zdenek Dvorak <dvorakz@suse.cz>
8181
8182 * cfgloop.h (enum li_flags): Make the constants powers of two.
8183
8184 2007-01-04 Jan Hubicka <jh@suse.cz>
8185
8186 * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
8187 set.
8188 (fold_marked_statements): New function.
8189 (optimize_inline_calls, tree_function_versioning): Fold new statements.
8190 * tree-inline.h (copy_body_data): Add statements_to_fold.
8191
8192 2007-01-03 Daniel Jacobowitz <dan@codesourcery.com>
8193
8194 * config.gcc: Mention libgcc/config.host.
8195 * Makefile.in: Update comments mentioning libgcc.
8196 (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
8197 (all.cross, start.encap, rest.encap, rest.cross): Update
8198 dependencies for libgcc move.
8199 (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
8200 (clean-target, clean-target-libgcc): Delete.
8201 (srcdirify, GCC_EXTRA_PARTS): New macros.
8202 (libgcc-support, libgcc.mvars): New rules.
8203 (distclean): Remove mention of mklibgcc.
8204 (install): Don't reference INSTALL_LIBGCC.
8205 (install-common): Don't reference EXTRA_PARTS.
8206 (install-libgcc, install-multilib): Delete rules.
8207 * mklibgcc.in: Delete file.
8208 * doc/configfiles.texi: Don't mention mklibgcc.
8209
8210 * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
8211 * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
8212 * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
8213 * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
8214 (mklibgcc, ldblspecs): Likewise.
8215
8216 * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
8217 (posixpre.def): Use $(T).
8218 (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
8219 (SHLIB_SRC, SHLIB_INSTALL): Delete.
8220 (SHLIB_LINK): Make dummy.
8221 * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
8222
8223 * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
8224
8225 * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
8226 * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
8227 config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
8228 config/rs6000/t-newas, config/sparc/t-elf: Likewise.
8229
8230 * configure.ac (all_outputs): Remove mklibgcc.
8231 * configure: Regenerated.
8232
8233 2007-01-03 Josh Conner <jconner@apple.com>
8234
8235 PR middle-end/29683
8236 * calls.c (compute_argument_addresses): Set stack and stack_slot
8237 for partial args, too.
8238 (store_one_arg): Use locate.size.constant for the size when
8239 generating a save_area.
8240
8241 2007-01-03 Robert Kennedy <jimbob@google.com>
8242
8243 * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
8244 whose definitions are deleted due to basic block merging.
8245
8246 2007-01-03 Paul Brook <paul@codesourcery.com>
8247
8248 PR target/16634
8249 * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
8250 functions.
8251 (use_return_insn): Return 0 for Thumb interrupt functions.
8252 (print_multi_reg): Add rfe argument for IRQ returns.
8253 (arm_output_epilogue): Pop interrupt return address directly into PC.
8254 (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
8255
8256 2007-01-03 Paul Brook <paul@codesourcery.com>
8257
8258 Merge from sourcerygxx-4_1.
8259 * config/arm/thumb2.md: New file.
8260 * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
8261 Thumb-2.
8262 * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
8263 * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
8264 (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
8265 * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
8266 tables.
8267 (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
8268 * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
8269 comptibility.
8270 * config/arm/ieee754-sf.S: Ditto.
8271 * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
8272 (thumb1_base_register_rtx_p): ... to this.
8273 (thumb_index_register_rtx_p): Rename...
8274 (thumb1_index_register_rtx_p): ... to this.
8275 (thumb_output_function_prologue): Rename...
8276 (thumb1_output_function_prologue): ... to this.
8277 (thumb_legitimate_address_p): Rename...
8278 (thumb1_legitimate_address_p): ... to this.
8279 (thumb_rtx_costs): Rename...
8280 (thumb1_rtx_costs): ... to this.
8281 (thumb_compute_save_reg_mask): Rename...
8282 (thumb1_compute_save_reg_mask): ... to this.
8283 (thumb_final_prescan_insn): Rename...
8284 (thumb1_final_prescan_insn): ... to this.
8285 (thumb_expand_epilogue): Rename...
8286 (thumb1_expand_epilogue): ... to this.
8287 (arm_unwind_emit_stm): Rename...
8288 (arm_unwind_emit_sequence): ... to this.
8289 (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
8290 thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
8291 thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
8292 arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
8293 thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
8294 thumb2_output_casesi): New functions.
8295 (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
8296 (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
8297 FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
8298 THUMB2_WORK_REGS): Define.
8299 (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
8300 arm_condexec_mask, arm_condexec_masklen)): New variables.
8301 (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
8302 (arm_override_options): Check new CPU capabilities.
8303 Set new architecture flag variables.
8304 (arm_isr_value): Handle v7m interrupt functions.
8305 (user_return_insn): Return 0 for v7m interrupt functions. Handle
8306 Thumb-2.
8307 (const_ok_for_arm): Handle Thumb-2 constants.
8308 (arm_gen_constant): Ditto. Use movw when available.
8309 (arm_function_ok_for_sibcall): Return false for v7m interrupt
8310 functions.
8311 (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
8312 (thumb_find_work_register, arm_load_pic_register,
8313 legitimize_tls_address, arm_address_cost, load_multiple_sequence,
8314 emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
8315 print_multi_reg, output_mov_long_double_fpa_from_arm,
8316 output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
8317 output_mov_double_fpa_from_arm, output_move_double,
8318 arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
8319 output_return_instruction, arm_output_function_prologue,
8320 arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
8321 arm_output_mi_thunk, thumb_set_return_address): Ditto.
8322 (arm_expand_prologue): Handle Thumb-2. Use arm_save_coproc_regs.
8323 (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
8324 (arithmetic_instr, shift_op): Use arm_shift_nmem.
8325 (arm_print_operand): Use arm_print_condition. Handle '(', ')', '.',
8326 '!' and 'L'.
8327 (arm_final_prescan_insn): Use extract_constrain_insn_cached.
8328 (thumb_expand_prologue): Use thumb_set_frame_pointer.
8329 (arm_file_start): Output directive for unified syntax.
8330 (arm_unwind_emit_set): Handle stack alignment instruction.
8331 * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
8332 Add v6t2, v7, v7a, v7r and v7m.
8333 (RETLDM): Add Thumb-2 code.
8334 (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
8335 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
8336 (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
8337 TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
8338 THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
8339 ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
8340 THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
8341 CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
8342 ADJUST_INSN_LENGTH): Define.
8343 (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
8344 STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
8345 BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
8346 PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
8347 SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
8348 TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
8349 HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
8350 HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
8351 REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
8352 REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
8353 LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
8354 GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
8355 ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
8356 FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
8357 PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
8358 (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
8359 * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
8360 cortex-m3.
8361 * config/arm/arm-tune.md: Regenerate.
8362 * config/arm/arm-protos.h: Update prototypes.
8363 * config/arm/vfp.md: Enable patterns for Thumb-2.
8364 (arm_movsi_vfp): Add movw alternative. Use output_move_vfp.
8365 (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
8366 (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
8367 thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
8368 * config/arm/libunwind.S: Add Thumb-2 code.
8369 * config/arm/constraints.md: Update include Thumb-2.
8370 * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
8371 * config/arm/ieee754-df.S: Ditto.
8372 * config/arm/bpabi.S: Ditto.
8373 * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
8374 * config/arm/predicates.md (low_register_operand,
8375 low_reg_or_int_operand, thumb_16bit_operator): New.
8376 (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
8377 (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
8378 * config/arm/t-arm-elf: Add armv7 multilib.
8379 * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
8380 Include thumb2.md.
8381 (UNSPEC_STACK_ALIGN, ce_count): New.
8382 (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
8383 arm_zero_extendsidi2, arm_zero_extendqidi2): New
8384 insns/expanders.
8385 * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
8386 (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
8387 thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
8388 * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
8389 (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
8390 thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
8391 insns.
8392 * doc/extend.texi: Document ARMv7-M interrupt functions.
8393 * doc/invoke.texi: Document Thumb-2 new cores+architectures.
8394
8395 2007-01-03 Jakub Jelinek <jakub@redhat.com>
8396
8397 * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
8398 (struct _Unwind_Context): Rename args_size to flags, remove
8399 signal_frame field, add a new args_size field and version field.
8400 (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
8401 _Unwind_IsExtendedContext): New inline functions.
8402 (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
8403 Assume by_value array is only present if _Unwind_IsExtendedContext.
8404 (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
8405 _Unwind_IsSignalFrame.
8406 (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
8407 (uw_update_context_1): Use _Unwind_SetSignalFrame.
8408 (uw_init_context_1): Initialize context->flags to
8409 EXTENDED_CONTEXT_BIT.
8410 * config/rs6000/linux-unwind.h (frob_update_context): Use
8411 _Unwind_SetSignalFrame.
8412
8413 2007-01-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
8414
8415 PR middle-end/30353
8416 * gimplify.c (gimplify_modify_expr_complex_part): Move below
8417 tree_to_gimple_tuple. Call tree_to_gimple_tuple when we need
8418 the value.
8419
8420 2007-01-03 Kazu Hirata <kazu@codesourcery.com>
8421
8422 * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
8423 REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
8424 RET, AT_SP): Remove.
8425 * config/i386/i386.md (*sse_prologue_save_insn): Use return
8426 instead of RET.
8427
8428 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8429 * cfgbuild.c (find_basic_blocks): Likewise.
8430 * cfgrtl.c (rtl_create_basic_block): Likewise.
8431 * function.c (temp_slots_at_level): Likewise.
8432 * reg-stack.c (stack_regs_mentioned): Likewise.
8433 * regclass.c (allocate_reg_info): Likewise.
8434 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8435 set_bb_for_stmt, move_block_to_fn): Likewise.
8436 * tree-complex.c (tree_lower_complex): Likewise.
8437 * vec.h (VEC_safe_grow_cleared): New.
8438
8439 * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
8440
8441 2007-01-03 Zdenek Dvorak <dvorakz@suse.cz>
8442
8443 * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
8444 * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
8445 to loop_version.
8446 * cfgloopmanip.c (scale_loop_frequencies): Export.
8447 (loopify): Scale the frequencies by prescribed coefficients.
8448 (set_zero_probability): New function.
8449 (duplicate_loop_to_header_edge): Improve updating of frequencies.
8450 (lv_adjust_loop_entry_edge, loop_version): Set probabilities
8451 and frequencies according to arguments.
8452 * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
8453 correctly.
8454 * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
8455 * modulo-sched.c (sms_schedule): Set probabilities for entering
8456 versioned loop correctly.
8457 * tree-vect-transform.c (vect_transform_loop): Ditto.
8458 * cfgloop.h (loopify, loop_version): Declaration changed.
8459 (scale_loop_frequencies): Declared.
8460
8461 2007-01-02 Jan Hubicka <jh@suse.cz>
8462
8463 * cgraph.c: Include tree-flow.h
8464 (cgraph_add_new-function): Handle IPA_SSA mode; execute
8465 early_local_passes.
8466 * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
8467 * tree-pass.h (pass_all_early_optimizations): Declare.
8468 * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
8469 early_local_passes.
8470 (cgraph_analyze_function): Do early_local_passes.
8471 * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
8472 Do not add referenced vars.
8473 * tree-optimize.c (gate_all_optimizations): Do not execute when not in
8474 SSA form.
8475 (gate_all_early_local_passes): New gate.
8476 (pass_early_local_passes): Use new gate.
8477 (execute_early_local_optimizations): New functions.
8478 (gate_all_early_optimizations): New gate.
8479 (pass_all_early_optimizations): New pass.
8480 (execute_free_datastructures): Free SSA only when initialized.
8481 (gate_init_datastructures): Init only when optimizing.
8482 (tree_lowering_passes): Do early local passes when called late.
8483 * tree-profile.c (do_tree_profiling): Don't profile functions added
8484 late.
8485 (do_early_tree_profiling, pass_early_tree_profile): Kill.
8486 * tree-cfg.c (update_modified_stmts): Do not update when operands are
8487 not active.
8488 * passes.c (init_optimizations_passes): Reorder so we go into SSA
8489 during early_local_passes.
8490 * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
8491
8492
8493 2007-01-02 Carlos O'Donell <carlos@codesourcery.com>
8494
8495 * Makefile.in: Update copyright year.
8496
8497 2007-01-02 Carlos O'Donell <carlos@codesourcery.com>
8498
8499 * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
8500 in $(lang_checks) and check-consistency targets.
8501
8502 2007-01-02 Jan Hubicka <jh@suse.cz>
8503
8504 * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
8505 Do not add referenced vars.
8506 * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
8507 are not active.
8508 * passes.c (init_optimization_passes): Put mudflap_2 after
8509 free_datastructures.
8510
8511 2007-01-02 Jan Hubicka <jh@suse.cz>
8512
8513 * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
8514 Set NOTHROW flag on call statements proved to be nothrow.
8515 Update statement of local calls so new pure/const functions are
8516 updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
8517 goto receivers.
8518 (tree_rest_of_compilation): Register hooks and initialize bitmap
8519 early. Do not set after_inlining flag.
8520
8521 2007-01-02 Steve Ellcey <sje@cup.hp.com>
8522
8523 * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
8524 HOST_BITS_PER_LONGLONG
8525
8526 2007-01-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
8527
8528 PR c/19977
8529 * c-typeck.c (store_init_value): Don't emit pedantic overflow
8530 warning for non-static initializers.
8531
8532 2007-01-02 Steven Bosscher <steven@gcc.gnu.org>
8533
8534 * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
8535 m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
8536 rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
8537 Always use set_unique_reg_note to add REG_EQUAL notes.
8538
8539 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
8540
8541 Revert:
8542 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
8543
8544 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8545 * cfgbuild.c (find_basic_blocks): Likewise.
8546 * cfgrtl.c (rtl_create_basic_block): Likewise.
8547 * function.c (temp_slots_at_level): Likewise.
8548 * reg-stack.c (stack_regs_mentioned): Likewise.
8549 * regclass.c (allocate_reg_info): Likewise.
8550 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8551 set_bb_for_stmt, move_block_to_fn): Likewise.
8552 * tree-complex.c (tree_lower_complex): Likewise.
8553 * vec.h (VEC_safe_grow_cleared): New.
8554
8555 2007-01-02 Ian Lance Taylor <iant@google.com>
8556
8557 * c-common.c (c_common_truthvalue_conversion): When warning about
8558 using an assignment as a truth value, set TREE_NO_WARNING.
8559
8560 2007-01-02 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
8561
8562 PR middle-end/7651
8563 * c.opt (Wold-style-declaration): New.
8564 * doc/invoke.texi (C-only Warning Options): New.
8565 (Wold-style-declaration): Document it.
8566 (Wextra): Enabled by -Wextra.
8567 * c-opts.c (c_common_post_options): Enabled by -Wextra.
8568 * c-decl.c (declspecs_add_scspec): Replace -Wextra with
8569 -Wold-style-declaration.
8570
8571 2007-01-02 Kazu Hirata <kazu@codesourcery.com>
8572
8573 * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8574 * cfgbuild.c (find_basic_blocks): Likewise.
8575 * cfgrtl.c (rtl_create_basic_block): Likewise.
8576 * function.c (temp_slots_at_level): Likewise.
8577 * reg-stack.c (stack_regs_mentioned): Likewise.
8578 * regclass.c (allocate_reg_info): Likewise.
8579 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8580 set_bb_for_stmt, move_block_to_fn): Likewise.
8581 * tree-complex.c (tree_lower_complex): Likewise.
8582 * vec.h (VEC_safe_grow_cleared): New.
8583
8584 2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
8585
8586 * c-common.c (c_common_nodes_and_builtins): Since variants of
8587 void_type_node get built before it is given a name, we need to
8588 give those variants the name, too.
8589 (complete_array_type): We need to work with the canonical main
8590 type of the array, from which we will build the qualified version.
8591 * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
8592 * print-tree.c (print_node): Display canonical type information
8593 for each type.
8594 * stor-layout.c (layout_type): When we don't know the
8595 alignment of a type for which we're building an array, we end up
8596 guessing wrong, so make the type require structural equality.
8597 * tree.c (make_node_stat): When we build a new type, it is its
8598 own canonical type.
8599 (build_type_attribute_qual_variant): When building an attribute
8600 variant, its canonical type is the non-attribute variant. However,
8601 if the attributes are target-dependent and they differ, we need to
8602 use structural equality checks for this type.
8603 (build_qualified_type): A qualified type is not equivalent to its
8604 unqualified variant; set the canonical type appropriately.
8605 (build_distinct_type_copy): When building a distinct type from
8606 another type, the new type is its own canonical type.
8607 (build_variant_type_copy): When building a new type variant, we
8608 assume that it is equivalent to the original type.
8609 (build_pointer_type_for_mode): When building a pointer type, also
8610 build a canonical type pointer.
8611 (build_reference_type_for_mode): When building a reference type,
8612 also build a canonical type reference.
8613 (build_index_type): When we can't hash an index type (e.g.,
8614 because its maximum value is negative), the index type requires
8615 structural equality tests.
8616 (build_array_type): Build the canonical form of an array type.
8617 (build_function_type): Function types require structural equality,
8618 because they contain default arguments, attributes, etc.
8619 (build_method_type_directly): Ditto for method types.
8620 (build_offset_type): Build the canonical offset type.
8621 (build_complex_type): Build the canonical vector type.
8622 (make_vector_type): Build the canonical vector type.
8623 * tree.h (TYPE_CANONICAL): New.
8624 (TYPE_STRUCTURAL_EQUALITY_P): New.
8625 (SET_TYPE_STRUCTURAL_EQUALITY): New.
8626 (struct tree_type): Added "canonical" field.
8627 * params.h (VERIFY_CANONICAL_TYPES): New.
8628 * doc/c-tree.texi (TYPE_CANONICAL): Document.
8629 (TYPE_STRUCTURAL_EQUALITY_P): Document.
8630 (SET_TYPE_STRUCTURAL_EQUALITY): Document.
8631 * doc/invoke.texi (verify-canonical-types): Document --param
8632 parameter for verifying canonical types.
8633
8634 2007-01-02 Joseph Myers <joseph@codesourcery.com>
8635
8636 * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
8637 powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
8638 powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
8639 powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
8640 tm_file.
8641 * config/rs6000/e500.h: New.
8642 * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
8643 TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
8644 Remove.
8645 * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
8646 TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
8647 TARGET_E500_DOUBLE): Remove.
8648 * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
8649 TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
8650 * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
8651 * config/rs6000/rs6000.c (rs6000_override_options): Use
8652 CHECK_E500_OPTIONS.
8653
8654 2007-01-02 Joseph Myers <joseph@codesourcery.com>
8655
8656 * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
8657 TARGET_E500_DOUBLE), not TARGET_E500, for %y.
8658 (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
8659 rs6000_emit_cmove): Don't check TARGET_E500.
8660 * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
8661 sordered): Don't check TARGET_E500.
8662
8663 2007-01-01 Eric Christopher <echristo@apple.com>
8664
8665 * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
8666 HARD_REGISTER_NUM_P.
8667
8668 2007-01-01 Roger Sayle <roger@eyesopen.com>
8669
8670 * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
8671 "X eq/ne (C1^C2)". Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
8672 has no side-effects. Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
8673 eq/ne Y".
8674
8675 2007-01-01 Mike Stump <mrs@apple.com>
8676
8677 * configure.ac: Remove support for building with Apple's gcc-3.1.
8678
8679 2007-01-02 Joseph Myers <joseph@codesourcery.com>
8680
8681 PR middle-end/30311
8682 * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
8683 REG is a hard register. Do not modify REG before calling
8684 subreg_nregs.
8685 * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
8686 multiple of the size of YMODE for certain lowpart cases.
8687
8688 2007-01-01 Andrew Pinski <pinskia@gmail.com>
8689
8690 PR middle-end/30253
8691 * gimplify (voidify_wrapper_expr): Update for
8692 GIMPLE_MODIFY_STMT.
8693
8694 2007-01-01 Andreas Schwab <schwab@suse.de>
8695
8696 PR target/29166
8697 * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
8698 save of BR0 in extra_spill_size instead of spill_size.
8699 (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
8700 area.
8701 (ia64_expand_epilogue): Restore BR0 from its new location.
8702
8703 2007-01-01 Andrew Pinski <pinskia@gmail.com>
8704
8705 * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
8706 Use a temporary variable if the left hand side is not a gimple
8707 register.
8708
8709 2007-01-01 Andrew Pinski <pinskia@gmail.com>
8710
8711 * gimplify.c (gimplify_return_expr): Make the temporary variable
8712 for the return expression, a gimple register variable.
8713
8714 2007-01-01 Jan Hubicka <jh@suse.cz>
8715
8716 * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
8717 INSN_LIST.
8718
8719 2007-01-01 Mike Stump <mrs@apple.com>
8720
8721 * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
8722 .literal16.
8723 * config/darwin.c (machopic_select_rtx_section): Use
8724 HAVE_GAS_LITERAL16.
8725 (darwin_mergeable_constant_section): Likewise.
8726 * configure: Regenerate.
8727 * config.in: Regenerate.
8728
8729 2007-01-01 Jan Hubicka <jh@suse.cz>
8730 Andrew Pinski <pinskia@gmail.com>
8731
8732 * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
8733 before starting IPA passes.