1 2008-01-03 Jan Hubicka <jh@suse.cz>
3 PR tree-optimization/31081
4 * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
5 0 when inlining and not inlining to first basic block.
6 (remap_decl): When var is initialized to 0, don't set default_def.
7 (expand_call_inline): Set entry_bb.
8 * tree-inline.h (copy_body_data): Add entry_bb.
10 2008-01-03 Jakub Jelinek <jakub@redhat.com>
13 * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
16 PR tree-optimization/29484
17 * tree-inline.c (inline_forbidden_p_2): New function.
18 (inline_forbidden_p): Disallow inlining if some static var
19 has an address of a local LABEL_DECL in its initializer.
20 * doc/extend.texi (Labels as Values): Document &&foo behaviour
23 2008-01-03 Sebastian Pop <sebastian.pop@amd.com>
25 PR tree-optimization/34635
26 * tree-data-ref.c (add_other_self_distances): Make sure that the
27 evolution step is constant.
29 2008-01-03 Jakub Jelinek <jakub@redhat.com>
32 * omp-low.c (expand_omp_parallel): Purge dead EH edges in the
35 2008-01-02 Richard Sandiford <rsandifo@nildram.co.uk>
37 * tree-sra.c (scalarize_init): Insert the generate_element_init
38 statements after the generate_element_zero statements.
40 2008-01-02 Richard Guenther <rguenther@suse.de>
44 * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
45 for very large number of operands instead of ICEing.
47 2008-01-02 Arthur Norman <acn1@cam.ac.uk>
50 * gcc/config/i386/i386.c: (ix86_expand_prologue): Save red-zone
53 2008-01-01 Douglas Gregor <doug.gregor@gmail.com>
55 * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
58 2008-01-01 Volker Reichelt <v.reichelt@netcologne.de>
61 * tree-mudflap.c (mx_register_decls): Guard warning by
62 !DECL_ARTIFICIAL check.
64 2008-01-01 Jakub Jelinek <jakub@redhat.com>
66 * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
67 sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
68 sse5_perm<mode>): Fix constraints.
70 2007-12-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
73 * collect2.c (SHLIB_SUFFIX): Define if not defined.
74 (write_c_file_stat): Use SHLIB_SUFFIX.
75 * som.h (SHLIB_SUFFIX): Define.
76 * doc/tm.texi (SHLIB_SUFFIX): Document.
78 2007-12-29 Uros Bizjak <ubizjak@gmail.com>
80 * config/i386/sse.md ("*divv4sf3"): Rename to "sse_divv4sf3".
81 ("*sse_rsqrtv4sf2"): Export.
82 ("*sse_sqrtv4sf2"): Ditto.
83 * config/i386/i386.c (enum ix86_builtins) [IX86_BUILTIN_RSQRTPS_NR,
84 IX86_BUILTIN_SQRTPS_NR]: New constants.
85 (struct builtin_description) [IX86_BUILTIN_DIVPS]: Use
86 CODE_FOR_sse_divv4sf3.
87 [IX86_BUILTIN_SQRTPS]: Use CODE_FOR_sse_sqrtv4sf2.
88 [IX86_BUILTIN_SQRTPS_NR]: New.
89 [IX86_BUILTIN_RSQRTPS_NR]: Ditto.
90 (ix86_init_mmx_sse_builtins): Initialize __builtin_ia32_rsqrtps_nr and
91 __builtin_ia32_sqrtps_nr.
92 (ix86_builtin_vectorized_function): Convert BUILT_IN_SQRTF to
93 IX86_BUILTIN_SQRTPS_NR.
94 (ix86_builtin_reciprocal): Convert IX86_BUILTIN_SQRTPS_NR to
95 IX86_BUILTIN_RSQRTPS_NR.
97 2007-12-27 Brian Dessent <brian@dessent.net>
99 * doc/invoke.texi (Optimize Options): Add missing opindex for
100 -fno-toplevel-reorder.
102 2007-12-27 Dorit Nuzman <dorit@il.ibm.com>
104 PR tree-optimization/34591
105 * tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip
106 stmts (including reduction stmts) that are not live.
108 2007-12-27 Jakub Jelinek <jakub@redhat.com>
111 * config/arm/arm.c (arm_setup_incoming_varargs): If last named
112 argument needs double word alignment and cum->nregs is odd, account
113 for the inserted padding.
116 * tree-mudflap.c (mf_make_builtin): Make decl artificial
117 and don't emit debug info for it.
119 2007-12-26 Anatoly Sokolov <aesok@post.ru>
121 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Move AT90USB82
122 and AT90USB162 devices from 'avr5' to 'avr35' architecture.
123 (ASM_SPEC): Add 'avr35' architecture.
124 * config/avr/avr.c (avr_mcu_types): Move AT90USB82 and AT90USB162
125 devices from 'avr5' to 'avr35' architecture.
126 (avr_arch_types): Add "avr23" entries.
127 (avr_arch): Add 'ARCH_AVR35'.
128 * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add 'avr35'.
129 (MULTILIB_MATCHES): Move AT90USB82 and AT90USB162 devices from 'avr5'
130 to 'avr35' architecture.
132 2007-12-22 David Daney <ddaney@avtrex.com>
134 * doc/install.texi (disable-libgcj-bc): Document new option.
136 2007-12-21 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
138 * config/pa/pa.c (hppa_legitimize_address): Use INT14_OK_STRICT in
142 * pa.c (legitimize_pic_address): Emit insn to load function label
145 2007-12-21 Andrew Pinski <pinskia@gmail.com>
146 Rask Ingemann Lambertsen <rask@sygehus.dk>
149 * config/mcore/mcore.c (mcore_function_value): Call promote_mode
150 instead of PROMOTE_MODE.
152 2007-12-21 Sebastian Pop <sebastian.pop@amd.com>
154 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Fix typo.
156 2007-12-21 Sebastian Pop <sebastian.pop@amd.com>
158 * tree-data-ref.c (signed_type_for_types): New.
159 (affine_fn_op): Use signed_type_for_types and signed_type_for instead
160 of long_integer_type_node.
161 (analyze_ziv_subscript): Same.
162 (analyze_siv_subscript_cst_affine): Same.
163 (analyze_miv_subscript): Same.
164 (omega_setup_subscript): Same.
166 2007-12-21 Richard Sandiford <rsandifo@nildram.co.uk>
168 * config/mips/mips.c (mips_emit_loadgp): Replace gen_* calls with
169 separate gen_*_si and gen_*_di calls. Pass pic_offset_table_rtx
170 as the first argument.
171 * config/mips/mips.md (loadgp_newabi, loadgp_absolute)
172 (loadgp_rtp): Rename to...
173 (loadgp_newabi_<mode>, loadgp_absolute<mode>, loadgp_rtp<mode>):
174 ...these. Add modes to all operands. Add the target register
175 as an operand. Combine loadgp_rtp<mode> with its splitter.
177 2007-12-20 Bob Wilson <bob.wilson@acm.org>
179 * config/xtensa/xtensa.md (fix_return_addr): Remove.
180 * config/xtensa/xtensa-protos.h (xtensa_initialize_trampoline): New.
181 (xtensa_trampoline_template): New.
182 * config/xtensa/xtensa.c (MIN_FRAME_SIZE): Moved here from xtensa.h.
183 (xtensa_return_addr): Expand to standard Xtensa insns instead of
184 fix_return_addr. Get high bits from a local label.
185 (xtensa_trampoline_template): New function with code moved from
186 TRAMPOLINE_TEMPLATE in xtensa.h. Use L32R instead of CALL0 except
187 when using CONST16 or absolute-mode literals.
188 (xtensa_initialize_trampoline): New function with code moved from
189 INITIALIZE_TRAMPOLINE in xtensa.h. Use different offsets depending
190 on which trampoline version is used.
191 * config/xtensa/lib2funcs.S (TRAMPOLINE_SIZE): Add comment.
192 * config/xtensa/xtensa.h (TARGET_ABSOLUTE_LITERALS): Define.
193 (MIN_FRAME_SIZE): Moved to xtensa.c.
194 (TRAMPOLINE_TEMPLATE): Use xtensa_trampoline_template.
195 (TRAMPOLINE_SIZE): Two versions of the trampoline have different sizes.
196 (INITIALIZE_TRAMPOLINE): Use xtensa_initialize_trampoline.
197 * config/xtensa/ieee754-df.S (XCHAL_NO_MUL): Define.
198 (__muldf3): Use CALL12 instead of CALL0 to invoke .Lmul_mulsi3
199 helper when not using the CALL0 ABI. Change .Lmul_mulsi3 to match.
200 * config/xtensa/lib1funcs.asm (__umulsidi3): Likewise.
201 * config/xtensa/ieee754-sf.S (__mulsf3): Likewise.
203 2007-12-20 Jakub Jelinek <jakub@redhat.com>
206 * tree-ssa-dse.c (dse_optimize_stmt): Don't eliminate store if
207 USE_STMT not only stores into the same object as STMT, but might
210 2007-12-19 Sebastian Pop <sebastian.pop@amd.com>
212 PR tree-optimization/34413
213 * tree-data-ref.c (affine_fn_op, analyze_ziv_subscript,
214 analyze_siv_subscript_cst_affine, analyze_miv_subscript,
215 omega_setup_subscript): Use long_integer_type_node instead of
218 2007-12-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
221 * pa.c (legitimize_pic_address): Force function labels into memory.
223 2007-12-19 Zdenek Dvorak <ook@ucw.cz>
225 * omp-low.c (build_omp_regions_1): Recognition of combined parallels
227 (expand_omp): ... here.
229 2007-12-19 Zdenek Dvorak <ook@ucw.cz>
231 PR tree-optimization/34355
232 * tree-parloops.c (take_address_of): Handle expresions
233 instead of just variables.
234 (eliminate_local_variables_1): Force whole invariant
237 2007-12-19 Alexander Monakov <amonakov@ispras.ru>
238 Revital Eres <eres@il.ibm.com>
240 * modulo-sched.c (generate_reg_moves): Insert the reg-moves
241 right before the notes which precedes the insn, if they exists.
242 (loop_canon_p): Add dump info.
243 (sms_schedule): Likewise.
245 2007-12-19 Richard Sandiford <rsandifo@nildram.co.uk>
247 * tree.h (set_decl_incoming_rtl): Add a by_reference_p parameter.
248 * emit-rtl.c (set_decl_incoming_rtl): Likewise. Don't set the
249 rtl's register attributes when the parameter is true.
250 * function.c (assign_parms_unsplit_complex, assign_parms)
251 (expand_function_start): Update calls to set_decl_incoming_rtl.
253 2007-12-19 Richard Sandiford <rsandifo@nildram.co.uk>
255 * rtl.def (SUBREG): Update comments.
256 * rtl.h (reg_attrs): Be explicit about the type of offset used.
257 (set_reg_attrs_from_mem): Rename to...
258 (set_reg_attrs_from_value): ...this.
259 (adjust_reg_mode, byte_lowpart_offset): Declare.
260 * emit-rtl.c (byte_lowpart_offset): New function.
261 (update_reg_offset): Remove special offset handling for big-endian
263 (gen_rtx_REG_offset, gen_reg_rtx_offset): Explicitly say that the
264 offset parameter is added to REG_OFFSET.
265 (adjust_reg_mode): New function.
266 (set_reg_attrs_for_mem): Rename to...
267 (set_reg_attrs_for_value): ...this and generalize to all values.
268 If the register is a lowpart of the value, adjust the offset
270 (set_reg_attrs_for_parm): Update after the above renaming.
271 (set_reg_attrs_for_decl_rtl): New function, split out from
272 set_decl_incoming_rtl. Set the offset of plain REGs to the
273 offset of the REG's mode from the decl's. Assert that all
274 subregs are lowparts and handle their inner registers in the
275 same way as plain REGs.
276 (set_decl_rtl, set_incoming_decl_rtl): Use reg_attrs_for_decl_rtl.
277 (subreg_lowpart_offset): Explicitly say that the returned offset
279 * combine.c (do_SUBST_MODE, try_combine, undo_all): Use adjust_reg_mode
281 * final.c (alter_subreg): Fix/update argument to gen_rtx_REG_offset.
282 * config/ia64/ia64.c (ia64_expand_load_address): Likewise.
283 * regclass.c (reg_scan_mark_refs): Use set_reg_attrs_from_value.
284 * reload.c (find_reloads_subreg_address): Call set_mem_offset
285 when offseting a MEM.
286 * var-tracking.c (offset_valid_for_tracked_p): Delete.
287 (mode_for_reg_attrs): Replace with...
288 (track_loc_p): ...this new function. Return the mode and offset
289 to the caller, checking that the latter is valid. If the rtx is
290 a paradoxical lowpart of the decl, use the decl's mode instead.
291 Do the same when storing to a register that contains the entire decl.
292 (var_lowpart): Use byte_lowpart_offset rather than
293 subreg_lowpart_offset when adjusting the offset attribute.
294 (count_uses, add_uses, add_stores): Use track_reg_p instead of
295 REG_EXPR, MEM_EXPR, REG_OFFSET, INT_MEM_OFFSET, track_expr_p,
296 offset_valid_for_tracked_p and mode_for_reg_attrs. Generate
297 lowparts for MEMs as well as REGs.
298 (vt_add_function_parameters): When obtaining the information from
299 the decl_rtl, adjust the offset to match incoming. Use track_loc_p
302 2007-12-18 Sebastian Pop <sebastian.pop@amd.com>
304 PR tree-optimization/34123
305 * lambda-code.c (can_duplicate_iv): New.
306 (cannot_convert_modify_to_perfect_nest): New.
307 (cannot_convert_bb_to_perfect_nest): New.
308 (can_convert_to_perfect_nest): Split up.
310 2007-12-18 David Daney <ddaney@avtrex.com>
312 * config/mips/mips.md (clear_hazard): Use PRINT_OPERAND punctuation
313 instead of .set push and .set pop.
315 2007-12-18 Rask Ingemann Lambertsen <rask@sygehus.dk>
318 * config/bfin/bfin.c (bfin_adjust_cost): Dig into PARALLELs to find
321 2007-12-18 Razya Ladelsky <razya@il.ibm.com>
323 * tree-parloops.c (reduiction_info): Change documentation of
324 reduction_initial field.
325 (initialize_reductions): Remove creation of reduction_initial variable.
326 (create_loads_for_reductions): don't join reduction_initial to
329 2007-12-18 Kaz Kylheku <kaz@zeugmasystems.com>
331 PR rtl-optimization/34456
332 * resource.c (mark_set_resources): Use regs_invalidated_by_call
333 rather than call_used_regs and global_regs.
335 2007-12-18 Jakub Jelinek <jakub@redhat.com>
337 PR rtl-optimization/34490
338 * simplify-rtx.c (simplify_const_relational_operation): If !sign,
339 don't reduce mmin/mmax using num_sign_bit_copies.
341 2007-12-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
343 * doc/install.texi: Change recommended MPFR from 2.2.1 > 2.3.0.
345 2007-12-17 Andreas Schwab <schwab@suse.de>
347 * doc/invoke.texi (Warning Options): Use @itemx.
349 2007-12-17 Dorit Nuzman <dorit@il.ibm.com>
351 * tree-vectorizer.h (verbosity_levels): Add new verbosity level
353 * tree-vect-transform.c (vect_estimate_min_profitable_iters): Change
354 verbosity level to REPORT_COST.
355 (vect_model_reduction_cost): Likewise.
356 (vect_model_induction_cost): Likewise.
357 (vect_model_simple_cost): likewise.
358 (vect_model_store_cost): likewise.
359 (vect_model_load_cost): likewise.
360 (conservative_cost_threshold): Likewise. Remove print.
362 2007-12-17 Rask Ingemann Lambertsen <rask@sygehus.dk>
364 * doc/tm.texi (TARGET_SECONDARY_RELOAD): Fix typos.
366 2007-12-17 Jakub Jelinek <jakub@redhat.com>
369 * c-parser.c (c_parser_omp_all_clauses): Accept optional comma
372 2007-12-17 Dorit Nuzman <dorit@il.ibm.com>
374 PR tree-optimization/34445
375 * tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip
376 stmts (including live stmts) that are not relevant.
378 2007-12-17 Jack Howarth <howarth@bromo.med.uc.edu>
381 * config/i386/t-crtpc: Add $(MULTILIB_CFLAGS).
382 * config/i386/t-crtfm: Likewise.
384 2007-12-17 Uros Bizjak <ubizjak@gmail.com>
386 * config/i386/i386.h (WIDEST_HARDWARE_FP_SIZE): Define.
388 2007-12-16 Uros Bizjak <ubizjak@gmail.com>
390 * tree-vect-transform.c (conservative_cost_threshold): Add missing
391 space to "not vectorized" message.
393 2007-12-16 Richard Sandiford <rsandifo@nildram.co.uk>
395 PR rtl-optimization/34415
396 * df.h (DF_LR_IN, DF_LR_OUT): Update comments.
397 * resource.c (mark_target_live_regs): Use DF_LR_IN rather than
398 df_get_live_in. Don't handle pseudos.
400 2007-12-16 Jakub Jelinek <jakub@redhat.com>
403 * c-decl.c (merge_decls): Copy RTL from olddecl to newdecl.
404 * config/pa/pa.c (pa_encode_section_info): If !first, preserve
405 SYMBOL_FLAG_REFERENCED flag.
407 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
409 * tree.c (type_hash_add): Fix whitespace.
411 2007-12-15 Hans-Peter Nilsson <hp@axis.com>
413 Add CRIS v32 support. Fix -mcc-init.
414 * config.gcc: Make crisv32-* have cpu_type cris. Handle
415 crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
416 but without multilibs and with target_cpu_default=32.
417 (crisv32-*-linux*): Handle as cris-*-linux*. Set
418 target_cpu_default to 32 and 10 accordingly.
419 * config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
420 (cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
421 Change regno_dir and regno only if !TARGET_V32.
422 (cris_conditional_register_usage): If TARGET_V32, set
423 reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
424 CRIS_ACR_REGNUM non-fixed.
425 (cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
426 (cris_print_operand) <case 'Z', case 'u'>: New cases.
427 <case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
428 (cris_reload_address_legitimized): Always return false for TARGET_V32.
429 (cris_register_move_cost): New function, guts from
430 REGISTER_MOVE_COST adjusted for CRIS v32.
431 (cris_normal_notice_update_cc): New function split out from...
432 (cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
433 TARGET_CCINIT. Call cris_normal_notice_update_cc for CC_REV,
434 CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
435 for CC_NOOV32 and TARGET_V32.
436 (cris_simple_epilogue): Always return false for TARGET_V32 if
437 cris_return_address_on_stack yields true.
438 (cris_cc0_user_requires_cmp): New function.
439 (cris_valid_pic_const): Add argument ANY_OPERAND. All callers
440 changed. Handle CRIS_UNSPEC_PLT_PCREL and CRIS_UNSPEC_PCREL.
441 (cris_asm_output_case_end): New function, guts from
442 ASM_OUTPUT_CASE_END adjusted for CRIS v32.
443 (cris_override_options): Adjust for CRIS v32. Mask out
444 TARGET_SIDE_EFFECT_PREFIXES and TARGET_MUL_BUG if v32.
445 (cris_asm_output_mi_thunk, cris_expand_epilogue)
446 (cris_gen_movem_load, cris_emit_movem_store)
447 (cris_expand_pic_call_address, cris_asm_output_symbol_ref)
448 (cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
450 (cris_split_movdx): Copy re-used MEM.
451 * config/cris/t-elfmulti: Add multilib v32 for -march=v32.
452 * config/cris/predicates.md
453 ("cris_general_operand_or_pic_source"): New predicate.
454 ("cris_general_operand_or_plt_symbol"): Replace by...
455 ("cris_nonmemory_operand_or_callable_symbol"): New predicate.
456 * config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
457 presence and contents.
458 (CRIS_SUBTARGET_DEFAULT_ARCH): New macro, MASK_AVOID_GOTPLT for
460 (CRIS_CPP_SUBTARGET_SPEC, CRIS_CC1_SUBTARGET_SPEC,
461 CRIS_ASM_SUBTARGET_SPEC): Adjust for different TARGET_CPU_DEFAULT.
462 (CRIS_SUBTARGET_DEFAULT): Add CRIS_SUBTARGET_DEFAULT_ARCH.
463 * config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
464 (CRIS_DEFAULT_TUNE, CRIS_ARCH_CPP_DEFAULT)
465 (CRIS_DEFAULT_ASM_ARCH_OPTION): New macros.
466 (CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
468 (CRIS_CPP_SUBTARGET_SPEC): Ditto. Add CRIS_ARCH_CPP_DEFAULT.
469 (ASM_SPEC): Add sanity-check erroring out when both -march= and
470 -mcpu= are specified. Pass on either as --march=v32.
471 (CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
472 specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
473 (CRIS_CPU_V32): New macro.
474 [!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
475 [!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
476 TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
477 Define v32-adjusted TARGET_DEFAULT.
478 (CRIS_DEFAULT_CPU_VERSION): Change to TARGET_CPU_DEFAULT from
480 (TARGET_V32): New macro.
481 (REG_ALLOC_ORDER_V32): New macro.
482 (HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
483 into CRIS_ACR_REGNUM.
484 (enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS, GENNONACR_REGS
485 and SPEC_GENNONACR_REGS.
486 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
487 (REGNO_REG_CLASS): Give ACR_REGS for CRIS_ACR_REGNUM.
488 (MODE_CODE_BASE_REG_CLASS): Define, give for OCODE POST_INC
489 GENNONACR_REGS, BASE_REG_CLASS otherwise.
490 (REG_CLASS_FROM_LETTER): 'a' is for ACR_REGS.
491 (REGNO_MODE_CODE_OK_FOR_BASE_P): Define, refusing OCODE POST_INC
493 (PREFERRED_RELOAD_CLASS): Keep ACR_REGS as preferred.
494 (HARD_REGNO_RENAME_OK): Refuse CRIS_ACR_REGNUM as TO.
495 (EXTRA_CONSTRAINT): New constraint 'U'.
496 (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE)
497 (ASM_OUTPUT_ADDR_DIFF_ELT): Adjust for CRIS v32.
498 (BASE_OR_AUTOINCR_P): Refuse POST_INC for CRIS_ACR_REGNUM.
499 (SIMPLE_ADDRESS_P): Remove.
500 (GO_IF_LEGITIMATE_ADDRESS): Use BASE_OR_AUTOINCR_P, not redundant
501 SIMPLE_ADDRESS_P. Make one chained if-else, finishing as
502 non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
503 (REGISTER_MOVE_COST): Just call the new function
504 cris_register_move_cost.
505 (enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
506 cris_rel_symbol. All users changed.
507 (REGISTER_NAMES): Replace "pc" with "acr".
508 (ADDITIONAL_REGISTER_NAMES): Add "pc" for 15.
509 (ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
510 (ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
511 (ASM_OUTPUT_CASE_END): Just call the new function
512 cris_asm_output_case_end.
513 * gcc/config/cris/cris.md: Group related constants together, with
515 (CRIS_UNSPEC_PLT_GOTREL, CRIS_UNSPEC_PLT_PCREL, CRIS_UNSPEC_PCREL)
516 (CRIS_UNSPEC_CASESI): New constants.
517 (CRIS_UNSPEC_PLT): Remove constant.
518 (CRIS_ACR_REGNUM): New constant.
519 ("slottable"): New attr alternatives "has_return_slot" and
521 ("cc"): New attr alternatives "noov32" and "rev".
522 ((eq_attr "slottable" "has_call_slot"))
523 ((eq_attr "slottable" "has_return_slot")): New define_delays.
524 ("movdi", "movsi"): Adjust operands for CRIS v32.
525 ("tstdi", "cmpdi", "adddi3", "subdi3", "uminsi3")
526 ("indirect_jump"): Ditto. Make define_expand.
527 ("*tstdi_non_v32", "*tstdi_v32", "*tst<mode>_cmp")
528 ("*tst<mode>_non_cmp", "*cmpdi_non_v32", "*cmpdi_v32")
529 ("*movdi_v32", "*adddi3_non_v32", "*adddi3_v32")
530 ("*addsi3_non_v32", "*addsi3_v32", "*addhi3_non_v32")
531 ("*addhi3_v32", "*addqi3_non_v32", "*addqi3_v32")
532 ("*subdi3_non_v32", "*subdi3_v32", "*subsi3_non_v32")
533 ("*subsi3_v32", "*sub<mode>3_nonv32", "*sub<mode>3_v32")
534 ("*andqi3_non_v32", "*andqi3_v32", "*iorsi3_non_v32")
535 ("*iorsi3_v32", "*iorhi3_non_v32", "*iorhi3_v32")
536 ("*iorqi3_non_v32", "*iorqi3_v32", "*uminsi3_non_v32")
537 ("*uminsi3_v32", "*indirect_jump_non_v32", "*indirect_jump_v32")
538 ("*expanded_call_v32", "*expanded_call_value_v32"): New patterns,
539 for the corresponding standard name.
540 ("tst<mode>"): Limit to BW and make define_expand.
541 ("tstsi"): Make separate insn, adjusting for CRIS v32.
542 ("*cmp_swapext<mode>"): Adjust for v32. Specify "rev" for attr "cc".
543 ("cmpsi", "cmp<mode>"): Remove special cases for zero. Specify
545 ("*btst"): Don't match for TARGET_CCINIT. Replace test of
546 register with compatible "cmpq 0". Specify attr "cc".
547 ("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
549 (define_split for DI move): Match CRIS v32 only.
550 ("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS v32.
551 ("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
552 ("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
553 ("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
554 ("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
555 ("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns.
556 ("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
557 ("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
558 ("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
559 ("*extopqihi_non_v32"): Replace "*extopqihi".
560 ("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
561 ("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
563 ("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
564 ("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
565 ("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
566 ("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
567 ("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
568 ("*expanded_call_non_v32"): Ditto "*expanded_call". Change from
569 "cris_general_operand_or_plt_symbol" to "general_operand".
570 ("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
571 ("*casesi_adds_w", "mstep_shift", "mstep_mul")
572 ("*expanded_call_side", "*expanded_call_value_side")
573 (op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
574 (op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
575 (op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
576 ("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
577 ("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
578 ("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2")
579 ("cris_swap_bits"): Specify "noov32" for attr "cc".
580 ("<su>mulsi3_highpart"): Ditto. Correct operand 0 to register_operand.
581 ("andqi3"): Make define_expand.
582 ("*return_expanded"): For attr "slottable", change from "has_slot"
583 to "has_return_slot".
584 ("cris_casesi_non_v32"): New pattern, old contents of "casesi".
585 ("casesi"): Divert into "cris_casesi_v32" and "cris_casesi_non_v32".
586 (moversideqi, movemsideqi, mover2side): Require
587 TARGET_SIDE_EFFECT_PREFIXES.
588 (gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
589 to CRIS_UNSPEC_PLT_GOTREL.
590 * config/cris/cris-protos.h (cris_register_move_cost)
591 (cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
593 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
596 * dwarf2out.c (dwarf_tag_name): Synchronize with dwarf2.h.
597 (is_type_die): Cover interface types.
598 (class_or_namespace_scope_p): Cover interface and class types.
599 (record_type_tag): New.
600 (gen_inlined_structure_type_die): Use it.
601 (gen_struct_or_union_type_die): Likewise.
602 (prune_unused_types_walk): Cover interface types.
603 * langhooks.h (classify_record): New enum.
604 (classify_record): New member in struct langhooks_for_types.
605 * langhooks-def.h (LANG_HOOKS_CLASSIFY_RECORD): New.
606 (LANGHOOKS_FOR_TYPES_INITIALIZER): Adjust.
608 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
610 * dwarf2out.c (reference_to_unused): Don't emit strings in
611 initializers just because of debug information.
612 * tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
614 2007-12-15 Sebastian Pop <sebastian.pop@amd.com>
616 * tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
617 print_loop_ir with print_loops.
618 * tree-flow.h (dot_cfg, debug_loops, debug_loop, debug_loop_num,
619 print_loops, print_loops_bb): Declare.
620 * tree-cfg.c (print_loops_bb): New.
621 (print_loop): Print header, latch, bounds, estimation of iterations.
622 (print_loop_and_siblings): New.
623 (print_loop_ir): Renamed print_loops.
624 (debug_loop_ir): Renamed debug_loops.
625 (debug_loop, debug_loop_num): New.
627 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
629 * tree-flow-inline.h.c (next_readonly_imm_use): Fix typo in comment.
631 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
633 * toplev.c (process_options): Fix typo in warning.
635 2007-12-14 Jakub Jelinek <jakub@redhat.com>
638 * config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
639 DImode comparisons against constant with all 1's in the lower word.
641 2007-12-14 Uros Bizjak <ubizjak@gmail.com>
643 * config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
644 constraint for operand 2. Use nonimm_not_xmm0_operand constraint
645 for operand 4. Update arguments in the call to
646 gen_sse4_2_pcmpestr_cconly.
647 (sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
648 template accordingly.
649 (sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
650 Use nonimm_not_xmm0_operand constraint for operand 3. Update
651 arguments in the call to gen_sse4_2_pcmpistr_cconly.
652 (sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
653 template accordingly.
655 2007-12-14 Richard Guenther <rguenther@suse.de>
658 * tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
659 parameter to say whether to unlink immediate uses.
660 * tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
661 mark the artificial stmt as modified. Unlink immediate uses
663 * tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
664 * tree-ssa-pre.c (insert_fake_stores): Likewise.
666 2007-12-13 Eric Botcazou <ebotcazou@libertysurf.fr>
669 * gimplify.c (gimplify_modify_expr_complex_part): Add note to comment.
670 * tree-complex.c (init_dont_simulate_again): Return true if there are
671 uninitialized loads generated by gimplify_modify_expr_complex_part.
672 * tree-gimple.c (is_gimple_reg_type): Return false for complex types
674 * tree-ssa.c (ssa_undefined_value_p): New predicate extracted from...
675 (warn_uninit): ...here. Use ssa_undefined_value_p.
676 * tree-ssa-pre.c (is_undefined_value): Delete.
677 (phi_translate_1): Use ssa_undefined_value_p.
678 (add_to_exp_gen): Likewise.
679 (make_values_for_stmt): Likewise.
680 * tree-flow.h (ssa_undefined_value_p): Declare.
682 2007-12-13 Andrew Pinski <pinskia@gmail.com>
683 David Daney <ddaney@avtrex.com>
686 * system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
689 2007-12-13 Jakub Jelinek <jakub@redhat.com>
691 PR rtl-optimization/32636
692 * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
693 regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
695 2007-12-13 Uros Bizjak <ubizjak@gmail.com>
696 Richard Guenther <rguenther@suse.de>
699 * config/i386/emmintrin.h (_mm_shuffle_pd, _mm_extract_epi16,
700 _mm_insert_epi16, _mm_shufflehi_epi16, _mm_shufflelo_epi16,
701 _mm_shuffle_epi32): Cast non-constant input values to either __m64,
702 __m128, __m128i or __m128d in a macro version of the intrinsic.
703 Cast constant input values to int.
704 * config/i386/ammintrin.h (_mm_extracti_si64, _mm_inserti_si64): Ditto.
705 * config/i386/bmmintrin.h (_mm_roti_epi8, _mm_roti_epi16,
706 _mm_roti_epi32, _mm_roti_epi64): Ditto.
707 * config/i386/smmintrin.h (_mm_blend_epi16, _mm_blend_ps, _mm_blend_pd,
708 _mm_dp_ps, _mm_dp_pd, _mm_insert_ps, _mm_extract_ps, _mm_insert_epi8,
709 _mm_insert_epi32, _mm_insert_epi64, _mm_extract_epi8, mm_extract_epi32,
710 _mm_extract_epi64, _mm_mpsadbw_epu8, _mm_cmpistrm, _mm_cmpistri,
711 _mm_cmpestrm, _mm_cmpestri, _mm_cmpistra, _mm_cmpistrc, _mm_cmpistro,
712 _mm_cmpistrs, _mm_cmpistrz, _mm_cmpestra, _mm_cmpestrc, _mm_cmpestro,
713 _mm_cmpestrs, _mm_cmpestrz): Ditto.
714 * config/i386/tmmintrin.h (_mm_alignr_epi8, _mm_alignr_pi8): Ditto.
715 * config/i386/xmmintrin.h (_mm_shuffle_ps, _mm_extract_pi16, _m_pextrw,
716 _mm_insert_pi16, _m_pinsrw, _mm_shuffle_pi16, _m_pshufw): Ditto.
717 * config/i386/mmintrin-common.h (_mm_round_pd, _mm_round_sd,
718 _mm_round_ps, _mm_round_ss): Ditto.
720 2007-12-13 Richard Guenther <rguenther@suse.de>
722 PR tree-optimization/34450
723 * params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
724 * invoke.texi (sccvn-max-scc-size): Document.
725 * Makefile.in (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
726 * tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
728 * tree-ssa-sccvn.c (params.h): Include.
729 (DFS): Return true if all went well, return false as soon as
730 a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
731 (run_scc_vn): Return true if all went well, return false if
732 we aborted during DFS.
733 * tree-ssa-pre.c (execute_pre): Check if SCCVN finished
734 successfully, otherwise bail out.
736 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
738 * ipa-struct-reorg.c (is_candidate): Print information to dump
739 file when the type is initialized.
740 (get_stmt_accesses): Likewise when a structure has bitfields
741 or field access is too complicate.
742 (safe_cond_expr_check): Likewise for unsafe condition expressions.
743 (exclude_cold_structs): Likewise for cold structures.
744 (collect_structures): Suppress redundant print when there are
745 no structures to transform.
746 (do_reorg): Print to dump file a number of structures that
748 (dump_new_types): Print a number of new types to replace
749 an original structure type.
751 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
753 * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
754 option and struct-reorg-cold-struct-ratio parameter.
756 2007-12-13 Torbjorn Granlund <tege@swox.com>
758 * config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
759 ZERO_EXTEND when computing costs for widening multiplication.
761 2007-12-13 Richard Earnshaw <rearnsha@arm.com>
764 * config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
765 exit when using hard FPA.
766 * config/arm/ieee754-df.S (floatdidf): Likewise.
768 2007-12-12 Jakub Jelinek <jakub@redhat.com>
771 * doc/install.texi: Document that for MinGW only runtime 3.12 and
774 2007-12-12 David Edelsohn <edelsohn@gnu.org>
776 * config/rs6000/rs6000.c (is_mem_ref): Ignore STACK_TIE.
778 2007-12-12 Aldy Hernandez <aldyh@redhat.com>
780 PR tree-optimization/32901
781 * gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
782 are assigning from a constant constructor.
783 Fix wrapping in function comment.
785 2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
787 * config/s390/s390.c (s390_O_constraint_str): Limit the range
788 for 'On' to -4G+1..-1.
789 * config/s390/constraints.md: Adjust comment accordingly.
791 2007-12-11 Nathan Sidwell <nathan@codesourcery.com>
793 * config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
796 2007-12-11 Kai Tietz <kai.tietz@onevision.com>
798 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Handle 64-bit
799 target same as 32-bit.
801 2007-12-10 Jakub Jelinek <jakub@redhat.com>
803 PR tree-optimization/34371
804 * tree-vectorizer.h (struct _loop_vec_info): Add num_iters_unchanged
806 (LOOP_VINFO_NITERS_UNCHANGED): Define to num_iters_unchanged field.
807 * tree-vectorizer.c (set_prologue_iterations,
808 slpeel_tree_peel_loop_to_edge): Call unshare_expr on
809 LOOP_VINFO_NITERS_UNCHANGED before using it.
811 2007-12-10 Eric Botcazou <ebotcazou@libertysurf.fr>
814 * config/i386/i386.c (ix86_expand_movmem): Punt if the count is large.
815 (ix86_expand_setmem): Likewise.
817 2007-12-10 Kenneth Zadeck <zadeck@naturalbridge.com>
819 PR rtl-optimization/34302
820 * auto-inc-dec.c (attempt_change): Change place where move is
823 2007-12-10 Jakub Jelinek <jakub@redhat.com>
825 * dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
826 Fortran multi-dimensional arrays use DW_AT_ordering
829 2007-12-10 Paolo Bonzini <bonzini@gnu.org>
832 * config/i386/i386.c (override_options): Enable -fvect-cost-model.
834 2007-12-10 Uros Bizjak <ubizjak@gmail.com>
836 * config/i386/i386.c (ix86_function_regparm): Do not check global_regs
837 array, registers that are members of global_regs are also members of
838 fixed_regs array. Use REGPARM_MAX to check that no regparm hard
839 register is taken by a fixed register variable. Check up to and
840 including DI_REG when adjusting regparm value due to fixed regs usage.
841 (rep_prefix_usable): Check fixed_regs array, not global_regs array for
842 available hard registers.
843 (ix86_expand_strlen): Ditto.
844 * config/i386/i386.md (strmov): Ditto.
847 2007-12-10 Kaz Kojima <kkojima@gcc.gnu.org>
849 * genopinit.c: Include tm_p.h in generated file.
851 * config/arm/neon.md (vec_set<mode>_internal): Use INTVAL
852 to extract the integer from operands[2].
853 (vec_setv2di_internal): Likewise.
855 * config/arm/arm.c (arm_size_return_regs): Make return type unsigned.
856 (arm_init_neon_builtins): Move code after declarations.
858 2007-12-10 Hans-Peter Nilsson <hp@axis.com>
860 * reload.c (find_reloads_address_1): To properly mark as an
861 autoincdec, pass X for non-NULL OUT in call to push_reload for
862 autoincdec which can't be trivially used as an address.
864 2007-12-10 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
865 Hans-Peter Nilsson <hp@axis.com>
867 * caller-save.c (insert_one_insn): If inserting before a call_insn
868 then the registers containing the arguments of the call are
869 live_throughout in the new insn.
871 2007-12-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
875 * pa.md: Consolidate HImode and QImode move patterns into one pattern
876 each, eliminating floating-point alternatives.
877 * pa-protos.h (pa_cannot_change_mode_class, pa_modes_tieable_p):
879 * pa-64.h (SECONDARY_MEMORY_NEEDED): Define here.
880 * pa.c (pa_secondary_reload): Use an intermediate general register
881 for copies to/from floating-point register classes. Simplify code
882 SHIFT_REGS class. Provide additional comments.
883 (pa_cannot_change_mode_class, pa_modes_tieable_p): New functions.
884 * pa.h (MODES_TIEABLE_P): Use pa_modes_tieable_p.
885 (SECONDARY_MEMORY_NEEDED): Delete define.
886 (INT14_OK_STRICT): Define.
887 (MODE_OK_FOR_SCALED_INDEXING_P): Allow SFmode and DFmode when using
889 (MODE_OK_FOR_UNSCALED_INDEXING_P): Likewise.
890 (GO_IF_LEGITIMATE_ADDRESS): Use INT14_OK_STRICT in REG+D case for
892 (LEGITIMIZE_RELOAD_ADDRESS): Use INT14_OK_STRICT in mask selection.
893 Align DImode offsets when generating 64-bit code.
894 * pa32-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
895 (CANNOT_CHANGE_MODE_CLASS): Define.
896 * pa64-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
897 (CANNOT_CHANGE_MODE_CLASS): Define using pa_cannot_change_mode_class.
899 2007-12-09 Jakub Jelinek <jakub@redhat.com>
902 * langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
903 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
904 * langhooks.h (struct array_descr_info): Forward declaration.
905 (struct lang_hooks_for_types): Add get_array_descr_info field.
906 * dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
907 (DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
909 * dwarf2out.h (struct array_descr_info): New type.
910 * dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
911 DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
912 (descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
914 (gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
915 and gen_descr_array_type_die.
917 2007-12-08 Richard Guenther <rguenther@suse.de>
919 PR tree-optimization/34391
920 * tree-vect-transform.c (vect_setup_realignment): Mark new
921 symbols for renaming.
923 2007-12-07 Bob Wilson <bob.wilson@acm.org>
925 * config/xtensa/xtensa.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
926 (ASM_OUTPUT_DWARF_PCREL): Define.
928 2007-12-07 Richard Guenther <rguenther@suse.de>
931 * opts.c (common_handle_option): Handle OPT_fforce_addr.
933 2007-12-07 Aldy Hernandez <aldyh@redhat.com>
935 * m32c.h (LEGITIMIZE_ADDRESS): Use WIN instead of win.
936 (LEGITIMIZE_RELOAD_ADDRESS): Same.
938 2007-12-07 Samuel Tardieu <sam@rfc1149.net>
941 * doc/install.texi: Explain how to check for a clean environment when
944 2007-12-07 Richard Guenther <rguenther@suse.de>
946 * tree-profile.c (gcov_type_tmp_var): New global variable.
947 (tree_gen_edge_profiler): Use a single shared variable decl per
948 function for edge counter incrementing.
949 (tree_profiling): Re-set the shared variable.
951 2007-12-06 Bob Wilson <bob.wilson@acm.org>
953 * config/xtensa/xtensa.c (xtensa_va_start): Add prototype.
955 2007-12-06 Tom Tromey <tromey@redhat.com>
958 * c-opts.c (c_common_parse_file): Call cpp_clear_file_cache.
960 2007-12-06 Richard Sandiford <rsandifo@nildram.co.uk>
962 * config/mips/mips.c (mips_function_ok_for_sibcall): Check
963 targetm.binds_local_p as well as DECL_EXTERNAL.
965 2007-12-06 Harsha Jagasia <harsha.jagasia@amd.com>
967 * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
968 (set_prologue_iterations): New. Set the prologue iterations to total
969 number of scalar iterations if the cost model check indicates that
970 scalar code should be generated.
971 (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for
972 generating the cost condition for epilog. Call
973 set_prologue_iterations to generate cost condition for prolog.
974 (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
975 * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
976 (slpeel_tree_peel_loop_to_edge): Update declaration.
977 (set_prologue_iterations): New declaration.
978 * tree-vect-analyze.c (vect_analyze_loop_form): Update
979 LOOP_VINFO_NITERS_UNCHANGED.
980 * tree-vect-transform.c
981 (vect_estimate_min_profitable_iters): Add new parameter and
982 code to check if run time cost model test is needed.
983 Remove code that adds builtin vectorization cost to scalar
984 outside cost for the run time cost model test. If run time
985 cost model test is needed add the appropriate guard cost to
986 the scalar outside cost. The guard cost depends on whether
987 the guard is generated at versioning or at prolog generation
988 or at epilog generation. Change cost model equation to include
990 (conservative_cost_threshold): New. Return the less conservative
991 profitability threshold between the cost model threshold and the
992 user defined vectorization threshold.
993 (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
994 (vect_do_peeling_for_alignment): Same.
995 (vect_loop_versioning): Same.
996 (vect_create_cond_for_align_checks): ANDs the cost model condition
997 with the alignment condition.
998 (vect_transform_loop): Call loop versioning only when there is a
999 misalignment or an aliasing problem.
1001 2007-12-06 Jakub Jelinek <jakub@redhat.com>
1004 * tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
1005 (execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
1006 BUILT_IN_VA_COPY and BUILT_IN_VA_END.
1008 * target.h (struct ggc_target): Add expand_builtin_va_start hook.
1009 * target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
1010 (TARGET_INITIALIZER): Add it.
1011 * builtins.c (expand_builtin_va_start): Use
1012 targetm.expand_builtin_va_start hook instead of
1013 EXPAND_BUILTIN_VA_START macro.
1014 * alpha/alpha.c (alpha_va_start): Made static.
1015 (override_options): Clear targetm.expand_builtin_va_start if
1017 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1018 * alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
1019 * alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
1020 * alpha/alpha-protos.h (alpha_va_start): Remove prototype.
1021 * xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
1022 * xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
1023 (xtensa_va_start): Made static.
1024 * xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
1025 * pa/pa-protos.h (hppa_va_start): Remove prototype.
1026 * pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
1027 * pa/pa.c (hppa_va_start): Made static, add prototype.
1028 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1029 * frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
1030 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1031 * frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
1032 * frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
1033 * i386/i386.c (override_options): Clear
1034 targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
1035 (ix86_va_start): Made static.
1036 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1037 * i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
1038 * i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
1039 * iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
1040 * iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
1041 * iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
1042 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1043 * rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
1044 * rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
1045 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1046 (rs6000_override_options): Clear targetm.expand_builtin_va_start if
1047 DEFAULT_ABI != ABI_V4.
1048 * rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
1049 * spu/spu.c (spu_va_start): Made static, add prototype.
1050 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1051 * spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
1052 * spu/spu-protos.h spu_va_start): Remove prototype.
1053 * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
1054 * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
1056 * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made static.
1057 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1058 * s390/s390-protos.h (s390_va_start): Remove prototype.
1059 * s390/s390.c (s390_va_start): Made static.
1060 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1061 * s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
1062 * mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
1063 * mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
1064 * mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
1065 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1066 * arc/arc.c (arc_va_start): Made static, add prototype.
1067 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1068 * arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
1069 * arc/arc-protos.h (arc_va_start): Remove prototype.
1070 * mt/mt-protos.h (mt_va_start): Remove prototype.
1071 * sparc/sparc.c (sparc_va_start): Made static, add prototype.
1072 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1073 * sparc/sparc-protos.h (sparc_va_start): Remove prototype.
1074 * sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
1075 * sh/sh.c (sh_va_start): Made static, add prototype.
1076 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1077 * sh/sh-protos.h (sh_va_start): Remove prototype.
1078 * sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
1079 * mips/mips-protos.h (mips_va_start): Remove prototype.
1080 * mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
1081 * mips/mips.c (mips_va_start): Made static.
1082 (TARGET_EXPAND_BUILTIN_VA_START): Define.
1084 2007-12-06 Uros Bizjak <ubizjak@gmail.com>
1086 * tree-ssa-loop.c (gate_tree_parallelize_loops): Return true when
1087 "flag_tree_parallelize_loops > 1".
1089 2007-12-06 Zdenek Dvorak <ook@ucw.cz>
1090 Dorit Nuzman <dorit@il.ibm.com>
1091 Jakub Jelinek <jakub@redhat.com>
1093 PR tree-optimization/34005
1094 * tree-gimple.c (is_gimple_formal_tmp_rhs): Add a case for COND_EXPR.
1095 * gimplify.c (gimplify_ctx): Add a new member allow_rhs_cond_expr.
1096 (gimplify_pure_cond_expr): New function.
1097 (generic_expr_could_trap_p): New function.
1098 (gimplify_cond_expr): Call gimplify_pure_cond_expr.
1099 (force_gimple_operand): Initialize new field allow_rhs_cond_expr.
1101 2007-12-06 Andreas Krebbel <krebbel1@de.ibm.com>
1103 * config/s390/s390.c (s390_emit_stack_tie): New function.
1104 (s390_emit_prologue): Emit a stack tie when writing to the
1106 * config/s390/s390.md ("stack_tie"): New insn definition.
1108 2007-12-06 Ben Elliston <bje@au.ibm.com>
1111 * doc/sourcebuild.texi (Miscellaneous Docs): Remove SERVICE item.
1113 2007-12-05 Jakub Jelinek <jakub@redhat.com>
1116 * fold-const.c (fold_binary) <case BIT_IOR_EXPR>: Don't minimize
1117 number of bits set in C1 if a mode mask for some mode can be used
1120 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
1122 * varasm.c (merge_weak, weak_finish, assemble_alias): Commentary typo
1125 2007-12-05 Richard Guenther <rguenther@suse.de>
1127 PR tree-optimization/34138
1128 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1129 Do not forward propagate addresses if that changes volatileness of
1130 the pointed-to type.
1132 2007-12-05 Uros Bizjak <ubizjak@gmail.com>
1135 * config/i386/i386.c (ix86_function_regparm): Also check for fixed
1136 registers when checking that regparm registers are available.
1137 Lower regparm value due to fixed registers usage in addition to
1140 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
1142 * sparseset.c: Include config.h and system.h before sparseset.h.
1143 * sparseset.h: Remove inclusion of system.h.
1145 2007-12-05 Jakub Jelinek <jakub@redhat.com>
1146 Richard Sandiford <rsandifo@nildram.co.uk>
1148 * optabs.c (init_insn_codes): New function.
1149 (new_optab): Delete.
1150 (init_optab, init_optabv): Don't call new_optab.
1151 (init_convert_optab): Don't clear the insn codes.
1152 (init_optabs): Call init_insn_codes.
1154 2007-12-04 Jakub Jelinek <jakub@redhat.com>
1156 * omp-low.c (optimize_omp_library_calls): New function.
1157 (expand_omp_parallel): Call it if optimizing.
1160 * stmt.c (expand_stack_restore): Call expand_normal on var to get
1161 rtx for it instead of assuming it will be a VAR_DECL.
1163 2007-12-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1165 * c-parser (c_parser_statement_after_labels): Move error from here...
1166 (c_parser_label): ... to here. Check that the declaration is not
1167 actually just another label.
1169 2007-12-04 Richard Guenther <rguenther@suse.de>
1173 * tree-ssa-operands.c (get_addr_dereference_operands): If we
1174 fall back to using the SMTs aliases, make sure to add virtual
1175 operands for the SMT itself.
1176 (create_ssa_artificial_load_stmt): Fix typo. Make sure to also
1177 clear the loaded and stored symbols bitmaps.
1179 2007-12-04 Ben Elliston <bje@au.ibm.com>
1181 * config/spu/spu.h (ASM_FORMAT_PRIVATE_NAME): Remove; use default.
1183 2007-12-04 Ben Elliston <bje@au.ibm.com>
1185 * doc/tm.texi (Exception Handling): Mention unwind-dw2-xtensa.c.
1187 2007-12-03 Steven Bosscher <stevenb.gcc@gmail.com>
1190 * doc/invoke.texi: Remove -fforce-addr documentation.
1191 * expr.c (emit_move_insn): Remove use of flag_force_addr.
1192 (expand_expr_real_1): Same.
1193 (do_tablejump): Same.
1194 Call memory_address instead of memory_address_noforce.
1195 * expr.h (memory_address_noforce): Remove prototype.
1196 * explow.c (memory_address): Remove support for flag_force_addr.
1197 (validize_mem): Same.
1198 (memory_address_noforce): Remove.
1199 * common.opt: Add dummy documentation for -fforce-addr.
1200 * combine.c (can_combine_p): Remove -fforce-addr comment.
1201 * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
1203 * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
1204 relating to memory_address_noforce.
1205 * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
1206 * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
1208 2007-12-03 Jakub Jelinek <jakub@redhat.com>
1210 * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
1211 with !ctx->is_nested.
1212 (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
1213 even if !ctx->is_nested.
1214 (lower_copyprivate_clauses, lower_send_clauses,
1215 lower_send_shared_vars): Call lookup_decl_in_outer_ctx
1219 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
1220 (X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
1221 and (X >> C1) & C2 into (X >> C1) & (C2 | ~((type) -1 >> C1)).
1222 (fold_binary) <case LSHIFT_EXPR, case RSHIFT_EXPR>: Optimize
1223 (X & C2) << C1 into (X << C1) & (C2 << C1) and
1224 (X & C2) >> C1 into (X >> C1) & (C2 >> C1) if that allows further
1227 PR tree-optimization/33453
1228 * tree-data-ref.c (split_constant_offset): Use POINTER_PLUS_EXPR
1229 for pointer addition.
1230 * tree-parloops.c (canonicalize_loop_ivs): Likewise.
1231 (separate_decls_in_loop_name): Copy DECL_GIMPLE_REG_P from var to
1234 2007-12-03 Bernd Schmidt <bernd.schmidt@analog.com>
1236 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__ as
1239 2007-12-03 Razya Ladelsky <razya@il.ibm.com>
1241 * doc/invoke.texi (fipa-cp, fipa-matrix-reorg): Add documentation.
1243 2007-12-03 Jakub Jelinek <jakub@redhat.com>
1246 * opts.c (common_handle_option): Handle OPT_ftree_store_copy_prop.
1247 * common.opt (ftree-store-copy-prop): Use the same help text as for
1250 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
1251 Revital Eres <eres@il.ibm.com>
1253 * modulo-sched.c (calculate_must_precede_follow,
1254 try_scheduling_node_in_cycle): New functions.
1255 (sms_schedule_by_order): Call the new functions.
1256 (ps_insn_find_column): Use must_follow and must_precede only if
1258 (ps_insn_advance_column): Likewise.
1260 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
1261 Revital Eres <eres@il.ibm.com>
1263 * modulo-sched.c (get_sched_window): Fix the direction of the
1264 scheduling window and add dump info.
1266 2007-12-02 Samuel Tardieu <sam@rfc1149.net>
1268 * config/sh/sh.md (cmpgeusi_t): Fix condition.
1270 2007-11-30 Jan Hubicka <jh@suse.cz>
1272 * ggc-common.c (dump_ggc_loc_statistics): Reset ggc_force_collect flag.
1274 2007-11-30 Seongbae Park <seongbae.park@gmail.com>
1276 PR rtl-optimization/34171
1277 * cfgrtl.c (update_bb_for_insn_chain): New function,
1278 refactored from update_bb_for_insn.
1279 (update_bb_for_insn): Call update_bb_for_insn.
1280 (rtl_merge_blocks, try_redirect_by_replacing_jump):
1281 Replace a loop with update_bb_for_insn_chain call.
1282 (cfg_layout_merge_blocks): Add a call to
1283 update_bb_for_insn_chain. Replace the for loop
1284 with a call to update_bb_for_insn_chain.
1286 2007-11-30 Ben Elliston <bje@au.ibm.com>
1288 * config/vax/vax.h (ASM_FORMAT_PRIVATE_NAME): Remove. Use default.
1290 2007-11-29 Zdenek Dvorak <ook@ucw.cz>
1292 PR tree-optimization/34244
1293 * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
1294 (record_numbers_of_iterations): New function.
1295 (execute_vrp): Cache the numbers of iterations of loops.
1296 * tree-scalar-evolution.c (scev_reset_except_niters): New function.
1297 (scev_reset): Use scev_reset_except_niters.
1298 * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
1300 2007-11-29 Jan Hubicka <jh@suse.cz>
1301 Jakub Jelinek <jakub@redhat.com>
1303 PR tree-optimization/33434
1304 * tree-inline.c (setup_one_parameter): If the value passed to
1305 a parameter is never used, don't set it up.
1307 2007-11-29 Jakub Jelinek <jakub@redhat.com>
1310 * config/rs6000/eabi-cn.asm (__DTOR_END__): Make it weak.
1311 * config/rs6000/sol-cn.asm (__DTOR_END__): Likewise.
1313 2007-11-29 Andris Pavenis <andris.pavenis@iki.fi>
1315 * Makefile.in: Use separate vpath lines for each path.
1317 2007-11-29 Ben Elliston <bje@au.ibm.com>
1319 * SERVICE: Update URL.
1321 2007-11-28 Jakub Jelinek <jakub@redhat.com>
1323 PR tree-optimization/34140
1324 * tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
1325 loop->header has virtual phi nodes.
1327 2007-11-28 Richard Sandiford <rsandifo@nildram.co.uk>
1330 * builtins.c (expand_builtin_nonlocal_goto): Also emit a use
1331 of GP register, if valid and fixed.
1334 2007-06-21 David Daney <ddaney@avtrex.com>
1337 * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1338 to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1339 (exception_receiver): Renamed to ...
1340 (nonlocal_goto_receiver): ... this.
1342 2007-11-27 H.J. Lu <hongjiu.lu@intel.com>
1343 Joey Ye <joey.ye@intel.com>
1346 * config/i386/i386.c (function_arg_32): Don't pass aggregate
1347 arguments in ECX/EDX for fastcall.
1349 2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk>
1351 * config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
1353 * config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise.
1354 * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise.
1356 2007-11-28 Ben Elliston <bje@au.ibm.com>
1358 * config/rs6000/aix64.opt (maix64): Add Negative(maix32).
1359 (maix32): Add Negative(maix64).
1361 2007-11-27 Jakub Jelinek <jakub@redhat.com>
1363 PR tree-optimization/34016
1364 * tree-ssa-loop.c (pass_linear_transform): Add
1365 TODO_update_ssa_only_virtuals to todo_flags_finish.
1367 2007-11-27 Eric B. Weddington <eric.weddington@atmel.com>
1369 * config/avr/avr.c (avr_mcu_types): Add atmega32hvb.
1370 * config/avr/avr.h (LINK_SPEC): Likewise.
1371 (CRT_BINUTILS_SPECS): Likewsie.
1372 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1374 2007-11-27 Jakub Jelinek <jakub@redhat.com>
1377 * config/rs6000/rs6000.c (adjacent_mem_locations): Don't assume
1378 MEM_SIZE is set on all MEMs.
1380 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
1382 * config/s390/s390.opt (mhard-float): Add the option to be
1383 overridden. That was missing in my last patch.
1385 2007-11-27 Richard Guenther <rguenther@suse.de>
1387 PR tree-optimization/34241
1388 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Make sure
1389 to only delete real conversion chains.
1391 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
1393 * config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
1394 mhard-float, mlong-double-64, mlong-double-128): Add the
1395 option to be overridden.
1397 2007-11-27 Richard Guenther <rguenther@suse.de>
1399 * builtins.c (fold_builtin_1): Verify the argument types
1400 of BUILT_IN_ISNORMAL.
1401 (fold_builtin_n): Verify the number of arguments to variadic
1404 2007-11-27 Bernd Schmidt <bernd.schmidt@analog.com>
1406 * config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
1407 * doc/invoke.texi (Blackfin Options): Document the effects.
1409 2007-11-27 Ben Elliston <bje@au.ibm.com>
1411 * config/rs6000/sysv4.opt (m32): Add Negative(m64).
1412 (m64): Add Negative(m32).
1413 * config/rs6000/darwin.opt (m32): Add Negative(m64).
1414 (m64): Add Negative(m32).
1416 2007-11-26 Eric Botcazou <ebotcazou@adacore.com>
1418 * tree-ssa-propagate.c (set_rhs) <GIMPLE_MODIFY_STMT>: Fix typo.
1420 2007-11-26 Michael Meissner <michael.meissner@amd.com>
1423 * config/i386/i386.c (ix86_expand_movmem): If the copy size is a
1424 constant, avoid calling emit_cmp_and_jump_insns. Use counter_mode
1425 to get the mode for loading a pseudo register with a count rather
1426 than duplicating code.
1428 2007-11-25 Eric B. Weddington <eric.weddington@atmel.com>
1430 * config/avr/avr.c (avr_mcu_types): Add atmega1284p.
1431 * config/avr/avr.h (LINK_SPEC): Likewise.
1432 (CRT_BINUTILS_SPECS): Likewsie.
1433 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1435 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1437 * c-common.c (conversion_warning): Use get_unwidened instead of
1440 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1443 * c-parser.c (struct c_parser): New bit in_if_block.
1444 (c_parser_compound_statement_nostart): Handle unexpected 'else'
1446 (c_parser_statement_after_labels): Set in_if_block to false while
1448 (c_parser_if_body): Don't call c_parser_statement_after_labels if
1449 a semicolon is found, just consume it. Don't call
1450 c_parser_statement_after_labels if an open brace is found, call
1451 c_parser_compound_statement instead.
1452 (c_parser_else_body): New.
1453 (c_parser_if_statement): Set in_if_block to true when parsing the
1454 body of the 'if' statement. Use c_parser_else_body.
1456 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
1459 * c-decl.c (store_parm_decls): Pass 'false' for the new
1460 allocate_struct_function parameter.
1461 * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
1462 * tree-parloops.c (create_loop_fn): Likewise.
1463 * function.c (push_function_context_to, push_struct_function,
1464 init_function_start): Likewise.
1465 (allocate_struct_function): Add boolean parameter.
1466 * tree.h (allocate_struct_function): Add boolean parameter.
1467 * function.h (struct function): Move returns_struct and
1468 returns_pcc_struct to the end of the structure definiton.
1470 2007-11-26 Uros Bizjak <ubizjak@gmail.com>
1473 * config/i386/i386.md (truncdfsf2): Select SLOT_TEMP stack slot if
1474 virtual registers are already instantiated.
1475 (truncxf<mode>2): Ditto.
1476 (floatsi<mode>2): Ditto.
1477 (floatdisf2): Ditto.
1478 (floatdidf2): Ditto.
1480 2007-11-26 Rask Ingemann Lambertsen <rask@sygehus.dk>
1483 * config/fr30/fr30.c (fr30_move_double): Sanitize mem->reg case. Copy
1484 the address before it is clobbered.
1486 2007-11-26 Nick Clifton <nickc@redhat.com>
1488 * config/mn10300/mn10300.md: (call_internal): Remove mode on
1489 operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
1490 (call_value_internal): Remove mode on operands 0 and 1 in order to
1491 match UNPSEC'ed calls generated in PIC mode.
1492 (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
1495 2007-11-26 Richard Guenther <rguenther@suse.de>
1498 * builtins.c (expand_builtin_pow): Use expand_expr to expand
1499 the result of build_call_expr.
1501 2007-11-26 Steven Bosscher <stevenb.gcc@gmail.com>
1502 Revital Eres <eres@il.ibm.com>
1505 * bb-reorder.c (insert_section_boundary_note): Clear
1506 BLOCK_FOR_INSN in NOTE_INSN_SWITCH_TEXT_SECTIONS.
1508 2007-11-26 Richard Sandiford <rsandifo@nildram.co.uk>
1510 * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add missing comma.
1512 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1514 * dwarf2asm.c (splay_tree_compare_strings): New function.
1515 (dw2_force_const_mem): Use it.
1517 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1519 * tree.c (type_hash_add): Don't violate strict aliasing rules.
1521 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1524 * c-typeck.c (tagged_types_tu_compatible_p): Enable exact
1525 matches between anonymous union fields.
1527 2007-11-26 Alexandre Oliva <aoliva@redhat.com>, Jan Hubicka <jh@suse.cz>
1529 * tree-ssa-live.c (remove_unused_scope_block_p): Drop
1530 declarations and blocks only after inlining. Check that
1531 non-empty blocks are not dropped.
1532 * tree-inline.c (expand_call_inline): Check that functions are
1533 not inlined too late.
1535 2007-11-26 Ben Elliston <bje@au.ibm.com>
1537 * unwind-dw2-fde.c: Fix comment typo.
1538 * unwind-generic.h: Likewise, fix comment typos.
1540 2007-11-25 Richard Sandiford <rsandifo@nildram.co.uk>
1542 * tree-sra.c (scalarize_use): Adjust the vpos argument to
1543 sra_explode_bitfield_assignment in cases where the type is
1544 wider than the bitfield.
1546 2007-11-25 Richard Guenther <rguenther@suse.de>
1548 * tree.h (struct tree_block): Move locus member next to flags.
1549 * c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
1550 (SCOPE_LIST_CONCAT): Likewise.
1551 (pop_scope): Likewise.
1552 * function.c (instantiate_decls_1): Likewise.
1553 (setjmp_vars_warning): Likewise.
1554 * emit-rtl.c (set_used_decls): Likewise.
1555 * tree-inline.c (add_lexical_block): Likewise.
1557 2007-11-24 Hans-Peter Nilsson <hp@axis.com>
1559 * rtlanal.c (label_is_jump_target_p): Return true for a matching
1561 * reorg.c (fill_slots_from_thread): Correct last change to use
1562 NULL_RTX, not NULL. Outside of REG_NOTES loop, increase and
1563 decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
1564 * jump.c (mark_jump_label_1): Add comment for last change
1565 regarding JUMP_LABEL setting.
1566 * gcse.c (add_label_notes): Remove conditional that the label is
1567 mentioned in insn before adding regnote.
1568 * sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
1569 single_set insn only feeding a label to a jump through a
1570 register that dies there.
1572 2007-11-23 Dirk Mueller <dmueller@suse.de>
1573 Richard Guenther <rguenther@suse.de>
1576 * tree-vrp.c (check_array_ref): Move check for valid location..
1577 (check_array_bounds) here. Use EXPR_HAS_LOCATION().
1579 2007-11-23 Hans-Peter Nilsson <hp@axis.com>
1581 * reload.c (find_reloads_address_1) <autoincdec cases>:
1582 Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
1584 2007-11-23 Richard Guenther <rguenther@suse.de>
1585 Michael Matz <matz@suse.de>
1587 PR tree-optimization/34176
1588 * alloc-pool.h (empty_alloc_pool): Declare.
1589 * alloc-pool.c (empty_alloc_pool): New function.
1590 * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
1591 valid table if a lookup from the optimistic table failed.
1592 (vn_unary_op_lookup): Likewise.
1593 (vn_binary_op_lookup): Likewise.
1594 (vn_phi_lookup): Likewise.
1595 (process_scc): Clear optimistic tables before every iteration.
1597 2007-11-23 Richard Guenther <rguenther@suse.de>
1599 * tree-ssa-copy.c (may_propagate_copy): Remove redundant checks.
1600 (merge_alias_info): Do verification only if checking is
1601 enabled. Merge flow-sensitive alias information in simple cases.
1602 * tree-ssa-operands.c (get_addr_dereference_operands): Also
1603 complain about missing NMTs.
1605 2007-11-23 Jakub Jelinek <jakub@redhat.com>
1608 * c-common.c (conversion_warning): For INTEGER_TYPE to
1609 INTEGER_TYPE conversions call get_narrower on expr to avoid
1610 spurious warnings from binop shortening or when the implicit
1611 conversion can't change the value.
1613 2007-11-22 Joseph Myers <joseph@codesourcery.com>
1616 * c-decl.c (set_array_declarator_inner): Don't give error for
1617 static or type qualifiers in abstract declarator. Remove
1618 abstract_p parameter.
1619 * c-tree.h (set_array_declarator_inner): Update prototype.
1620 * c-parser.c (c_parser_direct_declarator_inner): Update call to
1621 set_array_declarator_inner.
1622 * doc/standards.texi: Update for C99 TC3.
1624 2007-11-22 Hans-Peter Nilsson <hp@bitrange.com>
1626 * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
1627 line in my edit of the last change.
1629 2007-11-22 Jakub Jelinek <jakub@redhat.com>
1632 * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
1633 and TREE_READONLY on the fn decl rather than passing a chain
1636 2007-11-22 Kaz Kojima <kkojima@gcc.gnu.org>
1638 * config/sh/sh.md (divsi_inv_m3): Handle zero dividend specially.
1640 2007-11-22 Uros Bizjak <ubizjak@gmail.com>
1642 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
1643 of ix86_arch and ix86_tune into a switch statement.
1644 (enum processor_type): Default PROCESSOR_I386 to 0.
1645 * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
1646 of "ix86_tune == PROCESSOR_K6".
1647 (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
1650 2007-11-22 Tom Tromey <tromey@redhat.com>
1652 * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
1653 avoid writing into string allocated by ggc_alloc_string.
1655 2007-11-21 Kaz Kojima <kkojima@gcc.gnu.org>
1658 * config/sh/sh.md (binary_sf_op): Remove.
1659 (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
1660 * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
1661 and gen_binary_sf_op1.
1663 2007-11-21 Hans-Peter Nilsson <hp@axis.com>
1665 * regclass.c (init_reg_autoinc): Fix typo preventing test of
1666 secondary output reload when setting forbidden_inc_dec_class.
1668 2007-11-21 Richard Guenther <rguenther@suse.de>
1670 PR tree-optimization/34148
1671 * tree-ssa-structalias.c (create_variable_info_for): Do not use
1672 field-sensitive PTA for single-element structures.
1673 * tree-ssa-alias.c (create_overlap_variables_for): Do not create
1674 SFTs for single-element structures.
1676 2007-11-20 Richard Guenther <rguenther@suse.de>
1679 * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
1680 of the signed INT_CST_LT.
1681 * stmt.c (expand_case): Likewise.
1682 (estimate_case_costs): Likewise.
1684 2007-11-20 Rask Ingemann Lambertsen <rask@sygehus.dk>
1686 * read-rtl.c (fatal_expected_char): Print EOF as text rather that
1687 its binary representation.
1689 2007-11-20 Richard Guenther <rguenther@suse.de>
1691 * tree-ssa-operands.c (add_virtual_operand): Consistently prune
1694 2007-11-20 Thiemo Seufer <ths@mips.com>
1696 * config/mips/mips.c (mips_file_start): Add support for
1697 flagging 32-bit code with -mfp64 floating-point.
1699 2007-11-20 Jakub Jelinek <jakub@redhat.com>
1702 * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
1703 (c_gimplify_expr): Use it.
1705 2007-11-20 Ben Elliston <bje@au.ibm.com>
1707 * config/spu/spu_mfcio.h: Fix typo.
1709 2007-11-20 Ben Elliston <bje@au.ibm.com>
1711 * unwind.inc: Comment that unwind-sjlj.c includes this file.
1713 2007-11-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1714 Ben Elliston <bje@au.ibm.com>
1716 * config/spu/mfc_tag_release.c: New file.
1717 * config/spu/mfc_multi_tag_release.c: Likewise.
1718 * config/spu/mfc_multi_tag_reserve.c: Likewise.
1719 * config/spu/mfc_tag_release.c: Likewise.
1720 * config/spu/mfc_tag_reserve.c: Likewise.
1721 * config/spu/mfc_tag_table.c: Likewise.
1722 * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
1723 (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
1724 * config/spu/spu_mfcio.h: Avoid <stdint.h>.
1725 (uint64_t): Typedef if __IN_LIBGCC2 is defined.
1726 (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
1727 (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
1728 mfc_multi_tag_release): Likewise.
1729 (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
1730 __mfc_multi_tag_release): Declare.
1732 2007-11-19 Jason Merrill <jason@redhat.com>
1734 PR debug/28834, debug/29436, c/32326
1735 * tree.c (build_type_attribute_qual_variant): Refuse to make
1736 a distinct copy of a struct/enum type. Use build_distinct_type_copy.
1737 * doc/extend.texi (Type Attributes): Don't encourage people to add
1738 attributes to struct/enum types in a typedef. Fix
1739 transparent_union example.
1741 * tree-inline.c (remap_type_1): Remove code that's redundant with
1743 (build_duplicate_type): Set id.copy_decl.
1744 * c-common.c (handle_transparent_union_attribute): Simplify logic.
1746 2007-11-19 Peter Bergner <bergner@vnet.ibm.com>
1748 * config/rs6000/rs6000.c (invalid_e500_subreg,
1749 rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
1750 rs6000_legitimize_address, rs6000_legitimize_reload_address,
1751 rs6000_legitimate_address, function_arg_advance,
1752 spe_build_register_parallel, rs6000_spe_function_arg,
1753 rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
1754 emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
1755 rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
1756 TDmode similarly to DFmode and TFmode.
1757 * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
1758 DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
1760 2007-11-19 Eric Botcazou <ebotcazou@adacore.com>
1762 * stor-layout.c (lang_adjust_rli): Delete.
1763 (set_lang_adjust_rli): Likewise.
1764 (layout_type): Do not call lang_adjust_rli hook.
1765 * tree.h (set_lang_adjust_rli): Delete.
1767 2007-11-19 Bernd Schmidt <bernd.schmidt@analog.com>
1769 * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
1770 n_dregs_to_save and n_pregs_to_save.
1771 (n_pregs_to_save, n_dregs_to_save): Use it. New argument CONSECUTIVE;
1772 all callers changed.
1773 (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
1774 able to save single D/P registers that aren't saved by the push/pop
1777 2007-11-19 Richard Guenther <rguenther@suse.de>
1779 PR tree-optimization/34099
1780 * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
1781 MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
1782 if only one operand is undefined.
1784 2007-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
1786 PR tree-optimization/34036
1787 * opts.c (set_fast_math_flags): Do not set flags in common
1788 with set_unsafe_math_optimizations_flags, invoke it directly.
1789 (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
1790 and flag_signed_zeros.
1791 * toplev.c (process_options): Force flag_associative_math to 0 and
1792 warn, if it is set and either flag_trapping_math or flag_signed_zeros
1794 * doc/invoke.texi (Optimize Options): Document the new behavior
1795 of -funsafe-math-optimizations, that -fassociative-math requires
1796 both -fno-signed-zeros and -fno-trapping-math and make it clear
1797 that -fno-trapping-math requires -fno-signaling-nans. Refactor
1798 documentation of -ffast-math.
1800 2007-11-18 Jakub Jelinek <jakub@redhat.com>
1802 PR rtl-optimization/34132
1803 * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
1807 * optabs.h (optab_table): Change type to struct optab from optab.
1808 (convert_optab_table): Similarly.
1809 Adjust all _optab macros to expand to addresses of optab_table
1810 resp. convert_optab_table elements rather than the values of the
1812 * optabs.c (optab_table): Change typype to struct optab from optab.
1813 If compiled by recent GCC, initialize all the insn_code fields in
1814 the array using designated range initializers.
1815 (convert_optab_table): Similarly.
1816 (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
1817 set_conv_libfunc): Into libfunc_entry's optab field store index within
1818 optab_table resp. convert_optab_table array instead of difference
1819 between two separately malloced addresses.
1820 (new_optab): Add op argument, don't return anything. Initialize
1821 just the insn_code field in handlers array and only when needed.
1822 (init_optab, init_optabv): Add op argument, don't return anything.
1823 Adjust new_optab caller.
1824 (new_convert_optab): Removed.
1825 (init_convert_optab): Add op argument, don't return anything, don't
1826 call new_convert_optab. If needed, initialize insn_code field in
1828 (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
1830 (debug_optab_libfuncs): Adjust uses of optab_table and
1831 convert_optab_table arrays.
1833 2007-11-18 Richard Guenther <rguenther@suse.de>
1835 PR tree-optimization/34127
1836 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1837 Make code match up the comments, require compatibility of the
1840 2007-11-17 Richard Guenther <rguenther@suse.de>
1843 * fold-const.c (extract_muldiv_1): Do not move negative
1844 constants inside ABS_EXPR.
1846 2007-11-16 Ian Lance Taylor <iant@google.com>
1848 * collect2.c (dump_file): If a demangled symbol is followed by a
1849 space, make sure we output at least one space.
1851 2007-11-16 Richard Guenther <rguenther@suse.de>
1854 * fold-const.c (fold_binary): Use correct types for folding
1855 1 << X & Y to Y >> X & 1.
1857 2007-11-16 Richard Guenther <rguenther@suse.de>
1859 PR tree-optimization/33870
1860 * tree.h (struct tree_memory_tag): Add base_for_components flag.
1861 (struct tree_struct_field_tag): Remove nesting_level field.
1862 (SFT_NESTING_LEVEL): Remove.
1863 (SFT_BASE_FOR_COMPONENTS_P): Add.
1864 * tree-flow.h (struct fieldoff): Remove nesting_level field. Add
1865 base_for_components flag.
1866 (push_fields_onto_fieldstack): Remove nesting_level parameter.
1867 * tree-ssa-alias.c (create_sft): Likewise. Add base_for_components
1869 (create_overlap_variables_for): Deal with it.
1870 * tree-dfa.c (dump_subvars_for): Likewise.
1871 (dump_variable): Likewise.
1872 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
1873 Set base_for_components for first elements of sub-structures.
1874 (create_variable_info_for): Handle base_for_components.
1875 (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
1876 pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
1877 * tree-ssa-operands.c (ref_nesting_level): Remove.
1878 (add_vars_for_offset): Remove full_ref parameter, always add
1879 the offset of the pointed-to SFT.
1880 (add_virtual_operand): Adjust for changed signature of
1881 add_vars_for_offset.
1883 2007-11-16 Sa Liu <saliu@de.ibm.com>
1885 * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined
1886 floatunssidf2 and floatunsdidf2.
1888 2007-11-16 Richard Guenther <rguenther@suse.de>
1890 PR tree-optimization/34113
1891 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1892 Use correct conversion direction for checking type compatibility.
1894 2007-11-16 Richard Guenther <rguenther@suse.de>
1896 PR tree-optimization/34099
1897 * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
1898 that produce UNDEFINED result if at least one of its operands
1899 is UNDEFINED. By default the result is only UNDEFINED if all
1900 operands are UNDEFINED.
1902 2007-11-16 Jakub Jelinek <jakub@redhat.com>
1905 * gcc.c (init_spec): Don't initialize asm_debug here...
1906 (main): ... but here.
1908 2007-11-07 Tom Tromey <tromey@redhat.com>
1910 * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'.
1911 * tree-parloops.c (create_loop_fn): Use set_cfun.
1912 * gengtype.c (open_base_files): Emit #undef cfun.
1913 * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
1914 * function.h (cfun): New define.
1915 * function.c: Undefine cfun.
1917 2007-11-07 Eric B. Weddington <eweddington@cso.atmel.com>
1919 * config/avr/avr.c (avr_mcu_types): Add attiny88.
1920 * config/avr/avr.h (LINK_SPEC): Likewise.
1921 (CRT_BINUTILS_SPECS): Likewsie.
1922 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1924 2007-11-15 Jakub Jelinek <jakub@redhat.com>
1927 * tree-ssa-ccp.c (optimize_stack_restore): New function.
1928 (execute_fold_all_builtins): Call optimize_stack_restore for
1929 BUILT_IN_STACK_RESTORE.
1931 2007-11-15 Paolo Bonzini <bonzini@gnu.org>
1933 * fwprop.c (try_fwprop_subst): Skip profitability check for forward
1934 propagation into an address; that's done in should_replace_address.
1936 2007-11-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1938 * config/spu/spu-protos.h (legitimate_const): Remove prototype.
1939 * config/spu/spu.c (legitimate_const): Remove.
1940 (classify_immediate): Inline call to legitimate_const.
1941 (spu_legitimate_address): Likewise. Allow SYMBOL_REF + CONST_INT
1942 for any constant, not just -512 .. 511.
1944 2007-11-15 Sa Liu <saliu@de.ibm.com>
1946 * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
1947 condition from HONOR_NANS test.
1948 * config/spu/spu.md (ceq_df): Always generate comparison code
1949 inline, including checks for NaNs and infinities.
1951 (cgt_v2df): Likewise.
1952 (cmpdf): Make this expander unconditional.
1954 2007-11-15 Richard Guenther <rguenther@suse.de>
1956 * tree-ssa-alias.c (create_overlap_variables_for): Make sure
1957 to only create SFTs if we also create variable infos for PTA.
1958 * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping SFTs.
1960 2007-11-15 Richard Guenther <rguenther@suse.de>
1962 * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
1963 type for TBAA pruning.
1964 (find_what_p_points_to): Call set_uids_in_ptset with the original
1965 pointer, not the decl of the solution we collapsed to.
1967 2007-11-14 David Daney <ddaney@avtrex.com>
1969 * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
1972 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1975 * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
1976 for registers in BR_REGS class.
1978 2007-11-14 Jakub Jelinek <jakub@redhat.com>
1981 * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
1982 init_ssa_operands has not been called for cfun.
1984 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1986 PR tree-optimization/34046
1987 * cfg.c (update_bb_profile_for_threading): Avoid the division for the
1988 scaling if the old probability is greater than the new base.
1990 2007-11-14 Sebastian Pop <sebastian.pop@amd.com>
1992 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
1993 unused edges after loop duplication.
1995 2007-11-14 Uros Bizjak <ubizjak@gmail.com>
1997 * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
1998 (enum target_cpu_default): ... this enum.
1999 (TARGET_CPU_DEFAULT_NAMES): Remove macro. Move initializer to ...
2000 * config/i386/i386.c (override_options): ... here.
2001 * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
2002 TARGET_CPU_DEFAULT_i486.
2004 2007-11-14 Rask Ingemann Lambertsen <rask@sygehus.dk>
2006 * global.c (rest_of_handle_global_alloc): Fix comment typos.
2007 * config/sh/sh.c (sh_rtx_costs): Likewise.
2008 * ChangeLog: Likewise.
2010 2007-11-13 Sebastian Pop <sebastian.pop@amd.com>
2012 * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
2013 should not be of pointer type.
2015 2007-11-13 Michael Meissner <michael.meissner@amd.com>
2017 * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate line.
2019 2007-11-13 Sterling Augustine <sterling@tensilica.com>
2020 Bob Wilson <bob.wilson@acm.org>
2022 * config/xtensa/unwind-dw2-xtensa.c: New.
2023 * config/xtensa/unwind-dw2-xtensa.h: New.
2024 * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
2025 (DWARF2_UNWIND_INFO): Remove.
2026 (DWARF_FRAME_REGISTERS): Define.
2027 (EH_RETURN_DATA_REGNO): Define.
2028 * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
2030 * config/xtensa/t-xtensa (LIB2ADDEH): Define.
2032 2007-11-13 Jakub Jelinek <jakub@redhat.com>
2034 * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
2035 -fsched-stalled-insns.
2037 PR tree-optimization/34063
2038 * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
2039 as first chrec_fold_plus operand rather than second.
2041 2007-11-13 Diego Novillo <dnovillo@google.com>
2043 PR tree-optimization/33870
2044 * tree.h (strcut tree_memory_tag): Add field unpartitionable.
2045 Remove field in_nested_struct.
2046 (struct tree_struct_field_tag): Add field nesting_level.
2047 (sft_in_nested_struct): Remove.
2048 (sft_nesting_level): Define.
2049 (sft_unpartitionable_p): Define.
2050 * tree-ssa-alias.c (mem_sym_score): If mp->var is not
2051 partitionable, return long_max.
2052 (compute_memory_partitions): Do not partition sfts marked
2054 (create_sft): Add argument nesting_level. Set
2055 sft_nesting_level with it. Update all users.
2056 (create_overlap_variables_for): Show nesting level.
2057 * tree-dfa.c (dump_subvars_for): Likewise.
2058 (dump_variable): Likewise. Show whether the sft is
2059 partitionable or not.
2060 * tree-flow.h (struct fieldoff): Remove field in_nested_struct.
2061 Add field nesting_level.
2062 * tree-ssa-structalias.c (struct variable_info): Remove
2063 field in_nested_struct.
2064 (push_fields_onto_fieldstack): Add argument nesting_level.
2065 Update all users. Update documentation. Update pair->nesting_level
2066 with nesting_level. Make recursive calls with nesting_level + 1.
2067 (set_uids_in_ptset): If an sft is added to the points-to set,
2068 mark it as unpartitionable.
2069 * tree-ssa-operands.c (ref_nesting_level): New.
2070 (add_vars_for_offset): Call it. Add argument full_ref. Update
2071 callers. If var is inside a nested structure and the nesting level
2072 of full_ref is lower than the nesting level of var,
2073 adjust offset by the offset of var.
2075 2007-11-13 Victor Kaplansky <victork@il.ibm.com>
2077 PR tree-optimization/32582
2078 * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
2080 2007-11-12 Danny Smith <dannysmith@users.sourceforge.net>
2082 * doc/extend.texi (dllimport): Document that pointers to dllimport'd
2083 functions can be used as constant.
2085 2007-11-12 Eric Botcazou <ebotcazou@libertysurf.fr>
2087 PR rtl-optimization/34035
2088 * cse.c (cse_cfg_altered): New global variable.
2089 (cse_jumps_altered): Make boolean.
2090 (recorded_label_ref): Likewise.
2091 (cse_insn): Adjust for above changes.
2092 (cse_extended_basic_block): Likewise. Set cse_cfg_altered
2093 if dead edges have been purged.
2094 (cse_main): Change return value specification and adjust code.
2095 (rest_of_handle_cse): Adjust for above change.
2096 (rest_of_handle_cse2): Likewise.
2097 * gcse.c (rest_of_handle_gcse): Likewise.
2099 2007-11-12 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2100 Michael Meissner <michael.meissner@amd.com>
2102 * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
2103 get the appropriate suffix for the coms* instruction.
2104 (sse5_pcmov_<mode>): Restrict operands of pcmov
2105 for scalar case to be only xmm registers and not memory.
2107 * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
2108 constraints to follow the mnemonics for the pcmov instruction
2110 2007-11-12 Richard Sandiford <rsandifo@nildram.co.uk>
2113 * config/mips/mips.c (mips_return_fpr_single): New function.
2114 (mips_function_value): Use it when returning single-field
2116 (mips_expand_call): Handle the PARALLELs created by
2117 mips_return_fpr_single.
2119 2007-11-12 Richard Guenther <rguenther@suse.de>
2122 * fold-const.c (fold_binary): If testing for non-negative
2123 operands with tree_expr_nonnegative_warnv_p make sure to
2124 use op0 which has all (sign) conversions retained.
2126 2007-11-12 Richard Guenther <rguenther@suse.de>
2129 * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
2130 (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
2132 2007-11-12 Ira Rosen <irar@il.ibm.com>
2134 PR tree-optimization/33953
2135 * tree-vect-transform.c (vectorizable_operation): In case of SLP,
2136 allocate vec_oprnds1 according to the number of created vector
2137 statements. In case of shift with scalar argument, store scalar
2138 operand for every vector statement to be created for the SLP node.
2141 2007-11-10 Steven Bosscher <stevenb.gcc@gmail.com>
2143 * gcse.c (CUID_INSN): Remove.
2145 (alloc_gcse_mem): Don't allocate cuid_insn.
2146 (free_gcse_mem): Don't free cuid_insn.
2148 2007-11-10 Jakub Jelinek <jakub@redhat.com>
2151 * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
2155 * tree-inline.h (copy_body_data): Add regimplify field.
2156 * tree-inline.c (copy_body_r): Set id->regimplify to true
2157 if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
2159 (copy_bb): Clear id->regimplify before walk_tree, if it is
2160 set afterwards, regimplify the whole statement.
2162 PR tree-optimization/33680
2163 * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
2164 if the added cast involves variable length types.
2166 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
2167 Maxim Kuvyrkov <maxim@codesourcery.com>
2169 * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
2170 instead of TRUE_BARRIER for jumps. Add register dependencies
2171 even when reg_pending_barrier is set.
2173 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
2175 * haifa-sched.c (haifa_classify_insn): Rename to ...
2176 (haifa_classify_rtx): ... this. Improve handling of COND_EXECs,
2177 handle PARALLELs by recursing. Use it ...
2178 (haifa_classify_insn): ... here. Reimplement.
2180 2007-11-09 Richard Guenther <rguenther@suse.de>
2182 * bitmap.h (bitmap_single_bit_set_p): Declare.
2183 * bitmap.c (bitmap_single_bit_set_p): New function.
2184 * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
2185 (maybe_create_global_var): Use bitmap_empty_p.
2187 2007-11-09 Paolo Bonzini <bonzini@gnu.org>
2188 Jakub Jelinek <jakub@redhat.com>
2190 PR rtl-optimization/34012
2191 * fwprop.c (try_fwprop_subst): Do not replace if the new
2192 SET_SRC has a higher cost than the old one.
2194 2007-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
2196 PR rtl-optimization/33732
2197 * reload.c (push_reload): Check that the REG_DEAD note was referring
2198 to a hardreg or to a pseudo that has been assigned exactly one hardreg
2199 before considering it in order to select the reload register.
2200 (combine_reloads): Likewise.
2201 (find_dummy_reload): Likewise.
2203 2007-11-09 Richard Guenther <rguenther@suse.de>
2205 * tree-flow.h (struct ptr_info_def): Make escape_mask a ENUM_BITFIELD.
2206 (struct ptr_info_def): Likewise.
2207 (enum escape_type): Also use bit zero.
2209 2007-11-09 Richard Guenther <rguenther@suse.de>
2211 PR tree-optimization/33604
2212 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
2213 Disregard changes in CV qualifiers of pointed to types for
2214 forward propagating ADDR_EXPRs.
2215 * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
2218 2007-11-09 Richard Sandiford <rsandifo@nildram.co.uk>
2220 * dse.c (find_shift_sequence): Always choose an integer mode for
2222 (replace_read): Require both the read and store mode to be
2223 integer ones. Remove a then-redundant FLOAT_P check.
2225 2007-11-08 Richard Guenther <rguenther@suse.de>
2227 * tree-dfa.c (remove_referenced_var): If removing a
2228 variable which has subvars, also remove those from
2229 the referenced vars. Do not create a variable annotation.
2231 2007-11-08 Bob Wilson <bob.wilson@acm.org>
2233 * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
2234 argument for gen_entry calls.
2235 * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
2236 (entry): Use the new attribute value. Remove unused first operand.
2238 2007-11-08 Tom Tromey <tromey@redhat.com>
2240 * c-parser.c (c_parser_translation_unit): Use location in error.
2241 (c_parser_external_declaration): Likewise.
2242 (c_parser_declaration_or_fndef): Likewise.
2243 (c_parser_enum_specifier): Likewise.
2244 (c_parser_struct_or_union_specifier): Likewise.
2245 (c_parser_struct_declaration): Likewise.
2246 (c_parser_typeof_specifier): Likewise.
2247 (c_parser_parms_list_declarator): Likewise.
2248 (c_parser_asm_string_literal): Likewise.
2249 (c_parser_braced_init): Likewise.
2250 (c_parser_initelt): Likewise.
2251 (c_parser_compound_statement_nostart): Likewise.
2252 (c_parser_statement_after_labels): Likewise.
2253 (c_parser_do_statement): Likewise.
2254 (c_parser_asm_statement): Likewise.
2255 (c_parser_conditional_expression): Likewise.
2256 (c_parser_unary_expression): Likewise.
2257 (c_parser_sizeof_expression): Likewise.
2258 (c_parser_postfix_expression): Likewise.
2259 (c_parser_postfix_expression_after_paren_type): Likewise.
2260 (c_parser_objc_class_instance_variables): Likewise.
2261 (c_parser_objc_method_definition): Likewise.
2262 (c_parser_objc_methodprotolist): Likewise.
2263 (c_parser_pragma): Likewise.
2264 (c_parser_omp_clause_num_threads): Likewise.
2265 (c_parser_omp_clause_schedule): Likewise.
2266 (c_parser_omp_all_clauses): Likewise.
2267 (c_parser_omp_sections_scope): Likewise.
2268 (c_parser_label): Use location of label, not colon.
2270 2007-11-08 Danny Smith <dannysmith@users.sourceforge.net>
2273 * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
2276 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
2279 * ipa-pure-const.c (static_execute): Added code to keep recursive
2280 functions from being marked as pure or const.
2281 * ipa-utils.c (searchc): Fixed comment.
2283 2007-11-08 Tom Tromey <tromey@redhat.com>
2285 * common.opt (fshow-column): Default to 0.
2286 * configure: Rebuilt.
2287 * configure.ac (--enable-mapped-location): Default to 'yes'.
2289 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
2291 * common.opt: Add pointer to doc/options.texi.
2292 * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
2293 -fipa-reference): Add or correct doc. Sorted options list for -Os
2296 2007-11-07 Bernhard Fischer <aldot@gcc.gnu.org>
2299 * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
2300 * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
2301 TARGET_BIG_ENDIAN_DEFAULT. Use for MULTILIB_DEFAULTS.
2302 (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
2303 (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
2304 * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
2305 to TARGET_BIG_ENDIAN_DEFAULT.
2306 (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
2307 * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
2308 to TARGET_BIG_ENDIAN_DEFAULT.
2310 2007-11-07 Diego Novillo <dnovillo@google.com>
2312 * tree.h (struct tree_struct_field_tag): Move field
2313 in_nested_struct ...
2314 (struct tree_memory_tag): ... here.
2316 2007-11-07 Diego Novillo <dnovillo@google.com>
2319 * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
2320 (SFT_IN_NESTED_STRUCT): Define.
2321 * tree-dfa.c (dump_subvars_for): Show offset of each sub-var.
2322 * tree-flow.h (struct fieldoff): Add field in_nested_struct.
2323 * tree-ssa-structalias.c (struct variable_info): Likewise.
2324 (push_fields_onto_fieldstack): If OFFSET is positive,
2325 set in_nested_struct.
2326 (create_variable_info_for): Copy setting of
2327 in_nested_struct from the field offset object.
2328 (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
2329 variable info object.
2330 * tree-ssa-operands.c (add_vars_for_offset): If VAR
2331 belongs to a nested structure, adjust OFFSET by SFT_OFFSET(VAR).
2333 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
2335 PR rtl-optimization/33737
2336 * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
2337 target block after computing the probabilities of outgoing edges.
2338 Cap the frequency to BB_FREQ_MAX.
2339 * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
2340 frequency of the basic block if it has been reused.
2342 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
2344 PR rtl-optimization/33822
2345 * rtl.h (REG_OFFSET): Fix comment.
2346 * var-tracking.c (INT_MEM_OFFSET): New macro.
2347 (var_mem_set): Use it.
2348 (var_mem_delete_and_set): Likewise.
2349 (var_mem_delete): Likewise.
2350 (same_variable_part_p): Likewise.
2351 (vt_get_decl_and_offset): Likewise.
2352 (offset_valid_for_tracked_p): New predicate.
2353 (count_uses): Do not track locations with invalid offsets.
2354 (add_uses): Likewise.
2355 (add_stores): Likewise.
2357 2007-11-07 Tom Tromey <tromey@redhat.com>
2359 * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
2360 (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
2362 2007-11-07 Dmitry Zhurikhin <zhur@ispras.ru>
2363 Andrey Belevantsev <abel@ispras.ru>
2365 * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
2366 generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
2367 (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
2368 Save calculated max_asap in it.
2369 (sms_schedule): Calculate maxii using max_asap.
2371 2007-11-07 Andreas Krebbel <krebbel1@de.ibm.com>
2373 * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
2374 with -mhard-dfp/-mno-hard-dfp.
2376 2007-11-07 Maxim Kuvyrkov <maxim@codesourcery.com>
2377 Jakub Jelinek <jakub@redhat.com>
2380 * haifa-sched.c (check_sched_flags): Remove.
2381 (sched_init): Don't call it.
2383 2007-11-06 Diego Novillo <dnovillo@google.com>
2385 * tree-flow.h (struct fieldoff): Reformat comment. Document fields.
2386 * tree-ssa-operands.c: Tidy top-level comments.
2387 (add_vop): Likewise.
2388 (add_vars_for_offset): Tidy parameter formatting..
2389 (get_addr_dereference_operands): Likewise.
2390 (get_indirect_ref_operands): Likewise.
2391 (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
2392 <OMP_ATOMIC_STORE>: Likewise.
2394 2007-11-06 Rask Ingemann Lambertsen <rask@sygehus.dk>
2397 * config/i386/driver-i386.c: Test for __GNUC__ instead of
2398 GCC_VERSION which is always defined.
2400 2007-11-06 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2403 * reload1.c (find_reloads): Also check in_reg when handling a
2404 simple move with an input reload and a destination of a hard register.
2406 2007-11-06 Maxim Kuvyrkov <maxim@codesourcery.com>
2408 * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
2409 (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
2410 TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
2411 TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2412 TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
2413 (m68k_sched_attr_type2): New function.
2414 (sched_adjust_cost_state): New static variable.
2415 (m68k_sched_adjust_cost): New static function implementing
2417 (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
2418 New static variables.
2419 (m68k_sched_variable_issue): New static function implementing
2421 (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
2422 (sched_dump_split_class): New static function.
2423 (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
2425 (sched_dump_dfa_class, m68k_sched_dump): New static function.
2426 (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2427 m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
2428 m68k_sched_dfa_post_advance_cycle): New static functions implementing
2431 * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
2432 (CPU_UNITS_QUERY): Define.
2434 * config/m68k/cf.md: New file.
2435 * config/m68k/m68.md (cf.md): New include.
2437 2007-11-06 Tom Tromey <tromey@redhat.com>
2439 PR c++/32256, PR c++/32368:
2440 * function.c (saved_in_system_header): New global.
2441 (push_cfun): Save in_system_header.
2442 (pop_cfun): Restore in_system_header.
2443 (push_struct_function): Save in_system_header.
2445 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
2449 * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
2450 (complete_array_type): Set canonical type appropriately.
2451 * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
2452 C and C++ front ends now have different versions of this function,
2453 because the C++ version needs to maintain canonical types here.
2455 2007-11-04 Razya Ladelsky <razya@il.ibm.com>
2457 * tree-parloops.c (reduction_info): Remove reduction_init field.
2458 (initialize_reductions): Remove creation of the reduction_init variable.
2459 (struct data_arg): Remove.
2460 (add_field_for_reduction, create_stores_for_reduction): New functions.
2461 (add_field_for_name): Remove reduction handling.
2462 (separate_decls_in_loop): Call add_field_for_reduction,
2463 create_stores_for_reduction.
2465 2007-11-06 Jakub Jelinek <jakub@redhat.com>
2467 PR tree-optimization/33458
2468 * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
2469 !is_gimple_val PHI argument, gimplify it and insert it on edge.
2471 PR tree-optimization/33993
2472 * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
2473 rather than build_constructor_from_list if all list values are
2475 (get_initial_def_for_induction): Use build_vector instead of
2476 build_constructor_from_list.
2478 2007-11-05 Mark Mitchell <mark@codesourcery.com>
2481 * tree.h (DECL_INIT_PRIORITY): Do not require DECL_HAS_INIT_PRIORITY_P.
2482 (DECL_FINI_PRIORITY): Likewise.
2483 * tree.c (decl_init_priority_lookup): Remove assert.
2484 (decl_fini_priority_insert): Likewise.
2485 * cgraphunit.c (static_ctors): Make it a VEC.
2486 (static_dtors): Likewise.
2487 (record_cdtor_fn): Adjust accordingly.
2488 (build_cdtor): Generate multiple functions for each initialization
2490 (compare_ctor): New function.
2491 (compare_dtor): Likewise.
2492 (cgraph_build_cdtor_fns): Sort the functions by priority before
2493 calling build_cdtor.
2494 (cgraph_build_static_cdtor): Put the priority in the function's name.
2496 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
2499 * common.opt: Add shared and pie.
2501 2007-11-05 Bob Wilson <bob.wilson@acm.org>
2503 * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
2504 replace references to virtual_stack_vars_rtx in goto_handler.
2506 2007-11-05 Paul Brook <paul@codesourcery.com>
2508 * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
2509 * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
2510 (arm_file_start): Don't set Tag_ABI_PCS_wchar_t. Call
2511 arm_lang_output_object_attributes_hook.
2512 * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
2513 (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
2514 * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
2516 * config/arm/t-arm.c (arm.o): New rule.
2517 * config/arm/arm-c.c: New file.
2519 2007-11-05 Nick Clifton <nickc@redhat.com>
2520 Sebastian Pop <sebastian.pop@amd.com>
2522 PR tree-optimization/32540
2523 PR tree-optimization/33922
2524 * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
2525 * tree-ssa-pre.c: Include params.h.
2526 (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
2527 to limit the maximum length of the PA set for a given block.
2528 * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
2529 * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
2531 2007-11-05 Nathan Sidwell <nathan@codesourcery.com>
2533 * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2534 __fixunssfDI): Make return type unsigned.
2535 * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2536 __fixunssfDI): Make return type unsigned.
2538 2007-11-05 Jakub Jelinek <jakub@redhat.com>
2540 PR tree-optimization/33856
2541 * tree-data-ref.c (get_references_in_stmt): Don't add
2542 REFERENCE_CLASS_P trees to references vector if get_base_address
2543 returns NULL on them.
2545 2007-11-05 Alexandre Oliva <aoliva@redhat.com>
2547 * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
2549 2007-11-04 Andrew Pinski <pinskia@gmail.com>
2552 * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
2553 for TRUTH_NOT_EXPR to type.
2555 2007-11-04 Gerald Pfeifer <gerald@pfeifer.com>
2557 * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
2559 2007-11-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2562 * dwarf2out.c (add_calling_convention_attribute): Change
2563 second argument. Set calling convention to DW_CC_program for
2564 Fortran main program.
2565 (gen_subprogram_die): Adjust to new prototype for
2566 add_calling_convention_attribute.
2568 2007-11-03 Dorit Nuzman <dorit@il.ibm.com>
2570 PR tree-optimization/33987
2571 * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
2573 (vectorizable_reduction): Add type check.
2575 2007-11-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2578 * c-parser.c (c_parser_statement_after_labels): Error if a
2579 declaration is parsed after a label.
2581 2007-11-03 Daniel Jacobowitz <dan@codesourcery.com>
2584 * reorg.c (emit_delay_sequence): Do not clear the locator on
2585 the jump instruction.
2587 2007-11-03 Jakub Jelinek <jakub@redhat.com>
2590 * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
2591 current sched region.
2593 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2595 * config/ia64/ia64.c (struct reg_write_state): Change into
2596 unsigned short bitfields rather than unsigned int, decrease
2597 first_pred to just 10 bits.
2598 (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
2599 into two char array.
2600 (rws_insn_set, rws_insn_test): New functions.
2601 (in_safe_group_barrier): New variable.
2602 (rws_update): Remove first argument, always set rws_sum array.
2603 (rws_access_regno): Use rws_insn_set macro. Only call rws_update
2604 or update rws_sum if !in_safe_group_barrier, adjust rws_update args.
2605 (rtx_needs_barrier): Use rws_insn_test macro.
2606 (safe_group_barrier_needed): Don't save/restore rws_sum array,
2607 instead set/clear in_safe_group_barrier flag.
2609 2007-11-02 Bob Wilson <bob.wilson@acm.org>
2611 * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
2612 REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
2613 pointer or frame pointer.
2614 * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
2615 (MUST_USE_SJLJ_EXCEPTIONS): Define.
2616 (DWARF2_UNWIND_INFO): Define.
2617 (INCOMING_RETURN_ADDR_RTX): Define.
2618 (DWARF_FRAME_RETURN_COLUMN): Define.
2620 2007-11-02 Tom Tromey <tromey@redhat.com>
2622 * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
2625 2007-11-02 Diego Novillo <dnovillo@google.com>
2627 * langhooks.h (struct lang_hooks_for_callgraph): Remove third
2628 argument from function pointer ANALYZE_EXPR. Update all users.
2629 * cgraph.c (debug_cgraph_node): New.
2630 (debug_cgraph): New.
2632 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2634 PR rtl-optimization/33648
2635 * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
2636 the newly created basic block.
2638 2007-11-01 Richard Guenther <rguenther@suse.de>
2640 * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
2642 2007-11-01 Steven Bosscher <stevenb.gcc@gmail.com>
2644 PR rtl-optimization/33828
2645 * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
2646 of VBEIN and VBEOUT.
2648 2007-11-01 Eric Botcazou <ebotcazou@libertysurf.fr>
2650 * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
2651 * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
2652 * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
2654 2007-11-01 Nathan Sidwell <nathan@codesourcery.com>
2656 * gcc.c (getenv_spec_function): Escape the environment variable's
2659 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2661 * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
2662 show that CSE means common subexpression elimination. Change wording
2663 for -fsee and define LCM. Remove capitalization of optimizations
2664 for -ftree-reassoc, -ftree-pre, and -ftree-fre.
2666 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2669 * doc/sourcebuild.texi (Test Directives): Document that xfail
2670 has no effect for dg-do except when dg-do-what is "run".
2672 2007-11-01 Tom Tromey <tromey@redhat.com>
2674 * c-decl.c (grokdeclarator): Set decl source locations.
2675 * c-parser.c (c_parser_enum_specifier): Set location.
2676 (c_parser_struct_or_union_specifier): Likewise.
2678 2007-11-01 Tom Tromey <tromey@redhat.com>
2680 * print-tree.c (print_node): Print column number.
2682 2007-11-01 Jakub Jelinek <jakub@redhat.com>
2685 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
2686 gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
2687 rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
2689 PR rtl-optimization/33673
2690 * gcse.c (cprop_jump): If a conditional jump has been optimized
2691 into unconditional jump, make the remaining normal edge fallthru
2692 and delete the jump insn.
2694 2007-11-01 Ben Elliston <bje@au.ibm.com>
2696 * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
2697 (set_mem_attrs_from_reg): Likewise.
2699 2007-11-01 Michael Matz <matz@suse.de>
2701 PR tree-optimization/33961
2702 * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
2703 (name_to_bb_hash, name_to_bb_eq): Consider and check it.
2704 (add_or_mark_expr): New argument 'store', using it to search
2706 (nt_init_block): Adjust calls to add_or_mark_expr.
2708 2007-10-31 Jakub Jelinek <jakub@redhat.com>
2711 * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
2712 for the first push_operand.
2714 2007-10-31 Revital Eres <eres@il.ibm.com>
2716 * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
2717 reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
2718 vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
2719 movmisalignv2sf, vcondv2sf): New.
2720 (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
2721 UNSPEC_EXTODD_V2SF): Define new constants.
2722 * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
2723 paired_emit_vector_cond_expr): New.
2724 * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
2725 * config/rs6000/rs6000.c (paired_expand_vector_move,
2726 paired_emit_vector_cond_expr, paired_emit_vector_compare):
2728 * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
2730 2007-10-31 Sebastian Pop <sebastian.pop@amd.com>
2732 PR tree-optimization/32377
2733 * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
2734 work also for unknown number of iterations.
2735 (analyze_subscript_affine_affine): Clean up. Don't fail when the
2736 number of iterations is not known.
2738 2007-10-31 Richard Guenther <rguenther@suse.de>
2741 * fold-const.c (extract_muldiv_1): Make sure to not introduce
2742 new undefined integer overflow.
2743 (fold_binary): Avoid useless conversion.
2745 2007-10-31 Richard Sandiford <rsandifo@nildram.co.uk>
2748 * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P check.
2750 2007-10-31 Andreas Krebbel <krebbel1@de.ibm.com>
2752 * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
2754 * config/s390/s390.c: (override_options): Replace
2755 -mhard-dfp/-msoft-dfp with -mhard-dfp/-mno-hard-dfp.
2756 * config/s390/s390.opt: Likewise.
2757 * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
2760 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2762 * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
2764 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2766 * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
2767 optimization options.
2768 (Optimize Options): Add -fdce and -fdse to the list of optimizations
2769 enabled by -O. Document -fdce and -fdse.
2771 2007-10-30 Jakub Jelinek <jakub@redhat.com>
2774 * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
2775 convert second operand of COMPOUND_EXPR to the original type of
2778 2007-10-30 Richard Guenther <rguenther@suse.de>
2780 * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
2781 of loop adding SFTs as virtual operands.
2783 2007-10-30 Richard Guenther <rguenther@suse.de>
2785 * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
2787 2007-10-29 Dorit Nuzman <dorit@il.ibm.com>
2789 PR tree-optimization/32893
2790 * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
2791 STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
2793 2007-10-29 Rask Ingemann Lambertsen <rask@sygehus.dk>
2795 * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
2797 (sub_ddmmss): Likewise.
2798 (umul_ppmm): Likewise.
2799 (udiv_qrnnd): Likewise.
2801 2007-10-29 Janis Johnson <janis187@us.ibm.com>
2804 * doc/sourcebuild.texi (Test Directives): Document that dg-require
2805 directives must come before dg-additional-sources.
2807 2007-10-29 Jakub Jelinek <jakub@redhat.com>
2809 PR tree-optimization/33723
2810 * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
2811 MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
2813 2007-10-29 Richard Sandiford <rsandifo@nildram.co.uk>
2815 PR tree-optimization/33614
2816 * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
2817 if they can't be reduced to VECTOR_CSTs and aren't legitimate
2818 initializer constants.
2820 2007-10-29 Richard Guenther <rguenther@suse.de>
2822 PR tree-optimization/33870
2823 * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
2824 (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
2827 2007-10-29 Richard Guenther <rguenther@suse.de>
2829 * passes.c (init_optimization_passes): Exchange store_copy_prop
2831 * tree-pass.h (pass_store_copy_prop): Remove.
2832 * tree-ssa-copy.c (do_store_copy_prop): Remove.
2833 (stmt_may_generate-copy): Do not handle store_copy_prop.
2834 (get_copy_of_val): Likewise.
2835 (set_copy_of_val): Likewise.
2836 (copy_prop_visit_assignment): Likewise.
2837 (copy_prop_visit_stmt): Likewise.
2838 (copy_prop_visit_phi_node): Likewise.
2839 (init_copy_prop): Likewise.
2840 (execute_copy_prop): Likewise.
2841 (do_copy_prop): Remove.
2842 (gate_store_copy_prop): Likewise.
2843 (store_copy_prop): Likewise.
2844 (pass_store_copy_prop): Likewise.
2845 (pass_copy_prop): Call execute_copy_prop.
2846 * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
2847 * common.opt (ftree-store-copy-prop): Mark obsolete.
2848 * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
2850 2007-10-29 Ian Lance Taylor <iant@google.com>
2852 * ifcvt.c (noce_can_store_speculate_p): New static function.
2853 (noce_process_if_block): Call it.
2854 (if_convert): Remove recompute_dominance parameter. Change all
2857 2007-10-29 Richard Guenther <rguenther@suse.de>
2859 * tree-flow-inline.h (get_subvar_at): Use binary search.
2860 (get_first_overlapping_subvar): New function to binary search
2861 for the first overlapping subvar.
2862 * tree-ssa-operands.c (add_vars_for_offset): Strip down to
2863 just handle adding subvars for a pointed-to subvar. Optimize
2864 and use get_first_overlapping_subvar.
2865 (add_vars_for_bitmap): Fold into single caller.
2866 (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
2867 and non pointed-to bits of add_vars_for_offset.
2869 2007-10-29 Revital Eres <eres@il.ibm.com>
2871 * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
2873 2007-10-29 Razya Ladelsky <razya@il.ibm.com>
2874 Zdenek Dvorak <ook@ucw.cz>
2877 reduction support for automatic parallelization.
2879 * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
2881 * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
2882 * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
2883 and OMP_ATOMIC_STORE.
2884 * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2885 * gimple-low.c (lower_stmt): Same.
2886 * gimplify.c (gimplify_expr): Same.
2887 (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
2888 gimplify_omp_atomic_mutex): Remove.
2889 (gimplify_omp_atomic): Change it to simply gimplify the
2890 statement instead of expanding it.
2891 * omp-low.c: Add includes to optabs.h, cfgloop.h.
2892 (expand_omp_atomic, expand_omp_atomic_pipeline,
2893 goa_stabilize_expr, expand_omp_atomic_mutex,
2894 expand_omp_atomic_fetch_op): New functions to implement
2895 expansion of OMP_ATOMIC.
2896 (expand_omp, build_omp_regions_1): Add support for
2897 OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
2898 * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
2900 * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
2902 * tree-parloops.c: add include to tree-vectorizer.h.
2903 (reduction_info): New structure for reduction.
2904 (reduction_list): New list to represent list of reductions per loop.
2905 (struct data_arg): New helper structure for reduction.
2906 (reduction_info_hash, reduction_info_eq, reduction_phi,
2907 initialize_reductions, create_call_for_reduction,
2908 create_phi_for_local_result, create_call_for_reduction_1,
2909 create_loads_for_reductions, create_final_loads_for_reduction):
2911 (loop_parallel_p): Identify reductions, add reduction_list parameter.
2912 (separate_decls_in_loop_name): Support reduction variables.
2913 (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
2914 call create_loads_for_reduction for each reduction.
2915 (canonicalize_loop_ivs): Identify reductions, add reduction_list
2917 (transform_to_exit_first_loop): Add reduction support, add
2918 reduction_list parameter.
2919 (gen_parallel_loop): Add reduction_list parameter. Add call
2920 separate_decls_in_loop with
2921 the new argument. Traverse reductions and call
2922 initialize_reductions, create_call_for_reduction.
2923 (parallelize_loops): Create and delete the reduction list.
2924 (add_field_for_name): Change use of data parameter. Add fields for
2926 * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
2927 * tree-vect-analyze.c (vect_analyze_loop_form): export it.
2928 * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2929 * tree-inline.c (estimate_num_insns_1): add cases for
2930 OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2931 * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2932 * tree-ssa-operands.c (get_addr_dereference_operands):
2933 New function. Subroutine of get_indirect_ref_operands.
2934 (get_indirect_ref_operands): Call get_addr_dereference_operands.
2935 (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2938 2007-10-29 Hans-Peter Nilsson <hp@axis.com>
2940 * config/cris/cris.c: Include df.h.
2941 (cris_address_cost): Add gcc_assert for canonicalization
2942 assumptions. For PLUS with MULT or register, correct
2943 test for register in other arm. Tweak comments.
2945 2007-10-28 Richard Guenther <rguenther@suse.de>
2947 * tree-ssa-operands.c (add_vars_for_offset): Add parameter
2948 telling if the var is to be treated as points-to location.
2949 (add_vars_for_bitmap): Pass true to add_vars_for_offset.
2950 (add_virtual_operand): Only recurse into MPTs if aliases
2953 2007-10-28 Richard Guenther <rguenther@suse.de>
2955 * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
2956 (add_vars_for_bitmap): Do not recurse further. Only add vars
2957 for pointed-to SFTs.
2958 (add_virtual_operand): Re-instantiate loop to add operands for
2959 aliases. Recurse into MPTs.
2960 (get_indirect_ref_operands): If we fall back to use a pointers
2961 SMT, make sure to not prune based on the access offset and size.
2963 2007-10-28 Andrew Pinski <pinskia@gmail.com>
2966 * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
2967 the eh information on the statement.
2969 2007-10-28 Richard Guenther <rguenther@suse.de>
2971 * tree-flow.h (subvar_t): Make it a VEC.
2972 (struct subvar): Remove.
2973 (struct var_ann_d): Use VEC(tree,gc) to store subvars.
2974 * tree-flow-inline.h (get_subvar_at): Adjust iterators over
2976 * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
2977 * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
2978 * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
2979 (set_initial_properties): Likewise.
2980 (setup_pointers_and_addressables): Likewise.
2981 (new_type_alias): Likewise.
2982 (create_overlap_variables_for): Likewise.
2983 * tree-dfa.c (dump_subvars_for): Likewise.
2984 * tree-ssa-operands.c (add_vars_for_offset): Likewise.
2985 (get_expr_operands): Likewise.
2986 (add_to_addressable_set): Likewise.
2987 * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2989 2007-10-28 Uros Bizjak <ubizjak@gmail.com>
2991 PR tree-optimization/33920
2992 * tree-if-conv.c (tree_if_conversion): Force predicate of single
2993 successor bb to true when predecessor bb has NULL predicate.
2994 (find_phi_replacement_condition): Assert that tmp_cond is non-null.
2996 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
2998 * config/mips/mips.md: Add combiner patterns for DImode extensions
2999 of HImode and QImode truncations. Reformat HImode <- QImode pattern
3002 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
3005 * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
3007 2007-10-28 Andreas Krebbel <krebbel1@de.ibm.com>
3009 * dce.c (delete_unmarked_insns): Just delete the RETVAL and
3010 LIBCALL notes if they are about to be moved to the same insn.
3012 2007-10-27 Richard Guenther <rguenther@suse.de>
3014 PR tree-optimization/33870
3015 * tree-ssa-operands.c (add_vars_for_offset): Reduce code
3016 duplication. Remove redundant call to access_can_touch_variable.
3017 (add_vars_for_bitmap): New helper for recursing over MPT contents.
3018 (add_virtual_operand): Use it.
3020 2007-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3023 * pa.h (ASM_PN_FORMAT): Delete define.
3025 2007-10-26 Janis Johnson <janis187@us.ibm.com>
3027 * doc/invoke.texi (Option Summary, optimizations): Remove
3028 -fbounds-check. Add -fassociative-math, -freciprocal-math,
3029 -ftree-vrp and -funit-at-a-time. Change -fno-split-wide-types to
3030 -fsplit-wide-types to match later entry. Break up a long line.
3031 (Option Summary, code gen options) Add -fno-stack-limit. Add
3032 missing @gol to the end of a line.
3033 (Optimization Options): Remove -fbounds-check, which is also
3034 documented under Code Generation Options. Remove =n from
3035 index entry for -ftree-parallelize-loops. Change -fno-cprop-registers
3036 to -fcprop-registers to match other options, and say when it is
3037 enabled rather than disabled. Remove extra index entry for
3038 -fno-cx-limited-range. Add index entries for -fstack-protector
3039 and -fstack-protector-all.
3040 (Code Gen Options): Add index entry for -ftls-model.
3042 2007-10-26 Anatoly Sokolov <aesok@post.ru>
3044 * config/avr/avr.c (avr_OS_task_function_p): Add new function.
3045 (avr_regs_to_save): Handle functions with 'OS_task' attribute.
3046 (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
3047 expand_epilogue, output_movhi): Don't handle 'main' function.
3048 (avr_attribute_table): Add 'OS_task' function attribute.
3049 * config/avr/avr.h (machine_function): Remove 'is_main' field, add
3051 * config/avr/avr.md (return_from_main_epilogue): Remove insn.
3052 (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
3054 * config/avr/avr.opt (minit-stack): Remove.
3056 2007-10-26 Eric Botcazou <ebotcazou@adacore.com>
3058 * tree-nested.c (get_trampoline_type): Fix thinko.
3060 2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
3063 * tree.c (build_offset_type): Build canonical type based on the
3064 TYPE_MAIN_VARIANT of the base type.
3066 2007-10-26 Daniel Jacobowitz <dan@codesourcery.com>
3068 * reorg.c (emit_delay_sequence): Move insn locator from the
3069 first insn to the sequence.
3071 2007-10-26 Samuel Tardieu <sam@rfc1149.net>
3073 * ipa-pure-const.c (check_decl): Return immediately when
3074 pure_const_state has been set to IPA_NEITHER.
3076 2007-10-25 Ira Rosen <irar@il.ibm.com>
3078 PR tree-optimization/33833
3079 * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
3080 and convert init to sizetype in inner_base construction.
3082 2007-10-25 Richard Guenther <rguenther@suse.de>
3084 * tree-flow.h (mem_sym_stats): Remove.
3085 (dump_mem_sym_stats_for_var): Declare.
3086 * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
3087 (mem_sym_stats): Move ...
3088 * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
3089 (mem_sym_score): Rename from ...
3090 (pscore): ... this. Remove.
3091 (dump_mem_sym_stats_for_var): New function. Dump the score, but
3092 not the frequencies.
3093 (compare_mp_info_entries): Make sort stable by disambiguating
3096 2007-10-25 Ira Rosen <irar@il.ibm.com>
3098 PR tree-optimization/33866
3099 * tree-vect-transform.c (vectorizable_store): Check operands of all
3100 the stmts in the group of strided accesses. Get def stmt type for each
3101 store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
3103 2007-10-25 Uros Bizjak <ubizjak@gmail.com>
3105 * config/i386/constraints.md (Y0): Rename register constraint to Yz.
3106 (Yt): Rename register constraint to Y2.
3107 * config/i386/sse.md: Use renamed register constraints.
3108 * config/i386/mmx.md: Ditto.
3109 * config/i386/i386.md: Ditto.
3111 2007-10-25 Rask Ingemann Lambertsen <rask@sygehus.dk>
3113 * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
3115 2007-10-24 Chao-ying Fu <fu@mips.com>
3117 * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
3118 DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
3120 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
3121 Olga Golovanevsky <olga@il.ibm.com>
3123 * ipa-struct-reorg.c (replace_field_acc): Make it clear to
3124 the compiler that wr.wrap and wr.domain are initialized in
3127 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
3129 * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
3130 to print gcov_type values.
3132 2007-10-24 Eric B. Weddington <eweddington@cso.atmel.com>
3134 * config/avr/avr.h: Do not include progmem_section definition when
3135 building with IN_TARGET_LIBS.
3137 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
3140 * config/mips/mips.c (mips_lo_sum_offset): New structure.
3141 (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
3142 (mips_lo_sum_offset_lookup, mips_record_lo_sum)
3143 (mips_orphaned_high_part_p: New functions.
3144 (mips_avoid_hazard): Don't check INSN_P here.
3145 (mips_avoid_hazards): Rename to...
3146 (mips_reorg_process_insns): ...this. Cope with
3147 !TARGET_EXPLICIT_RELOCS. Delete orphaned high-part relocations,
3148 or turn them into nops.
3149 (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
3150 dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
3151 (mips_set_mips16_mode): Don't set flag_delayed_branch here.
3152 (mips_override_options): Set flag_delayed_branch to 0.
3154 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
3156 * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
3157 MIPS-specific implementation details.
3158 (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
3159 (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
3160 (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
3161 for targets with movmemsi.
3162 (MOVE_BY_PIECES_P): Define.
3163 * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
3164 (mips_block_move_loop): Add a bytes_per_iter argument.
3165 (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
3166 Update call to mips_block_move_loop.
3168 2007-10-24 Michael Matz <matz@suse.de>
3171 * var-tracking.c (variable_union): Don't break after one loop
3172 iteration but only when a difference is found.
3173 (dump_variable): Also print DECL_UID.
3175 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
3177 * ipa-type-escape.h: Expose function
3178 is_array_access_through_pointer_and_index.
3180 (is_array_access_through_pointer_and_index):
3181 Add three new parameters. Add support of
3182 POINTER_PLUS_EXPR tree code.
3184 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
3186 * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
3187 * tree-pass.h: Add pass_ipa_struct_reorg.
3188 * common.opt: Add ipa-struct-reorg flag.
3189 * Makefile.in: Add ipa-strcut-reorg.o compilation.
3190 * passes.c: Add pass pass_ipa_struct_reorg.
3191 * params.h: Add STRUCT_REORG_COLD_STRUCT_RATIO.
3192 * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
3194 2007-10-24 Ira Rosen <irar@il.ibm.com>
3196 PR tree-optimization/33804
3197 * tree-vect-transform.c (vectorizable_operation): Remove the
3198 checks that the vectorization is worthwhile from the transformation
3201 2007-10-24 Ira Rosen <irar@il.ibm.com>
3203 * tree-vect-analyze.c (vect_build_slp_tree): Return false if
3204 vectype cannot be determined for the scalar type.
3205 (vect_analyze_slp_instance): Likewise.
3206 * tree-vect-transform.c (vect_model_reduction_cost): Change the
3207 return type to bool. Return false if vectype cannot be determined
3208 for the scalar type.
3209 (vect_get_constant_vectors): Return false if vectype cannot be
3210 determined for the scalar type.
3211 (get_initial_def_for_induction, vect_get_vec_def_for_operand,
3212 get_initial_def_for_reduction, vect_create_epilog_for_reduction,
3213 vectorizable_reduction): Likewise.
3215 2007-10-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
3217 * config.gcc: For a FreeBSD target, parse the value of ${target}
3218 to determine the value of FBSD_MAJOR, instead of adding an
3219 explicit check for every possible FreeBSD major version.
3221 2007-10-23 Uros Bizjak <ubizjak@gmail.com>
3223 PR rtl-optimization/33846
3224 * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
3226 2007-10-23 Dorit Nuzman <dorit@il.ibm.com>
3228 PR tree-optimization/33860
3229 * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
3230 interleaved accesses in case the dr is inside the inner-loop during
3231 outer-loop vectorization.
3233 2007-10-23 Eric Botcazou <ebotcazou@libertysurf.fr>
3235 * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
3236 Document MEM_POINTER. Replace mentions of "integrated"
3237 field with "return_val". Delete outdated stuff.
3239 2007-10-23 David Edelsohn <edelsohn@gnu.org>
3241 * config/rs6000/rs6000.c (rs6000_override_options): Set
3242 rs6000_altivec_abi on AIX.
3243 (conditional_register_usage): Set VR20:31 fixed on AIX.
3245 2007-10-23 Richard Guenther <rguenther@suse.de>
3247 * alias.c (get_alias_set): For INDIRECT_REFs, deal with
3250 2007-10-22 Seongbae Park <seongbae.park@gmail.com>
3251 David S. Miller <davem@davemloft.net>
3253 * df-scan.c (df_get_call_refs): Mark global registers as both a
3254 DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
3256 2007-10-22 Dorit Nuzman <dorit@il.ibm.com>
3258 PR tree-optimization/33834
3259 PR tree-optimization/33835
3260 * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
3261 stmts need to be checked for success seperately.
3262 * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
3263 Remove the check that stmt is not LIVE.
3264 (vectorizable_assignment, vectorizable_induction): Likewise.
3265 (vectorizable_operation, vectorizable_type_demotion): Likewise.
3266 (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
3268 (vectorizable_live_operation): Check that op is not NULL.
3270 2007-10-22 Janis Johnson <janis187@us.ibm.com>
3272 * doc/invoke.texi (Optimization Options): In the summary, show
3273 that the value for options -falign-jumps, -falign-labels,
3274 -falign-loops, -falign-functions, -fsched-stalled-insns, and
3275 -fsched-stalled-insns-dep is optional. In the summary, show that
3276 -fsched-stalled-insns takes an optional argument and that
3277 -fparallelize-loops takes an argument. Add opindex for several
3278 optimization options, and fix typos in the opindex commands for
3279 several others. In the descriptions for -fsched-stalled-insns
3280 and -fsched-stalled-insns-dep, show the options with and without
3283 2007-10-22 Eric B. Weddington <eweddington@cso.atmel.com>
3285 * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
3287 * config/avr/avr.h (LINK_SPEC): Likewise.
3288 (CRT_BINUTILS_SPECS): Likewsie.
3289 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3291 2007-10-22 Eric Botcazou <ebotcazou@libertysurf.fr>
3293 PR rtl-optimization/33644
3294 * cfgcleanup.c: Do not include dce.h.
3295 * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
3296 * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
3297 * dce.c (something_changed): Delete.
3298 (libcall_dead_p): New predicate.
3299 (delete_unmarked_insns): Use it to delete dead libcalls.
3300 Deal with REG_LIBCALL and REG_RETVAL notes.
3301 (prescan_libcall_for_dce): New function.
3302 (prescan_insns_for_dce): Use it to deal with libcalls.
3303 (mark_reg_dependencies): Do nothing special for libcalls.
3304 (dce_process_block): Likewise.
3305 (fast_dce): Delete unused local variable.
3306 (run_fast_dce): Do not return a value.
3307 * dce.h (struct df): Delete.
3308 (run_fast_dce): Adjust prototype.
3309 * optabs.c (libcall_id): Delete.
3310 (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
3311 (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
3312 * reload1.c (reload): Delete REG_LIBCALL_ID case.
3313 * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
3314 * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
3315 notes instead of REG_LIBCALL_ID notes.
3316 * reg-notes.def (LIBCALL_ID): Delete.
3317 * Makefile.in (see.o): Add dce.h dependency.
3318 (cfgcleanup.o): Remove dce.h dependency.
3320 2007-10-22 Michael Matz <matz@suse.de>
3322 PR tree-optimization/33855
3323 * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
3326 2007-10-22 Ira Rosen <irar@il.ibm.com>
3328 PR tree-optimization/33854
3329 * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
3330 FLOAT_EXPR to the list of promotion operations.
3332 2007-10-22 Rask Ingemann Lambertsen <rask@sygehus.dk>
3336 * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
3337 (print_reg): Print register prefix only with AT&T asm syntax.
3338 Support pc_rtx for RIP register.
3339 (print_operand_address): Use print_reg()'s pc_rtx support for RIP
3340 relative addressing. Always print segment register prefix with AT&T
3341 asm syntax and never with Intel asm syntax.
3342 (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands.
3343 Fix prefix for 16-byte XFmode operands.
3344 (output_addr_const_extra): Support Intel asm syntax.
3345 (x86_file_start): Don't use register prefix with Intel asm syntax.
3346 * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
3347 ("return_internal_long"): Fix Intel asm syntax output.
3348 ("set_got_rex64"): Support Intel asm syntax.
3349 ("set_rip_rex64"): Likewise.
3350 ("set_got_offset_rex64"): Likewise.
3351 ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
3353 ("*tls_global_dynamic_64"): Likewise.
3354 ("*tls_local_dynamic_base_64"): Likewise.
3355 ("*load_tp_si")("*load_tp_di"): Likewise.
3356 ("*add_tp_si")("*add_tp_di"): Likewise.
3357 ("*tls_dynamic_lea_64"): Likewise.
3358 ("*sibcall_value_1_rex64_v"): Likewise.
3359 ("stack_tls_protect_set_si"): Likewise.
3360 ("stack_tls_protect_set_di"): Likewise.
3361 ("stack_tls_protect_test_si"): Likewise.
3362 ("stack_tls_protect_test_di"): Likewise.
3363 * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
3365 ("*movv2sf_internal_rex64"): Likewise.
3366 * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
3367 (__get_cpuid_max): Likewise.
3369 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3371 * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
3372 the STRICT_P argument type "bool" rather than "int".
3373 (mips_legitimate_address_p): Likewise.
3374 (fp_register_operand, lo_operand): Delete.
3375 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
3376 (mips_emit_scc): Rename to...
3377 (mips_expand_scc): ...this.
3378 (gen_conditional_branch): Rename to...
3379 (mips_expand_conditional_branch): ...this.
3380 (gen_conditional_move): Rename to...
3381 (mips_expand_conditional_move): ...this.
3382 (mips_gen_conditional_trap): Rename to...
3383 (mips_expand_conditional_trap): ...this and take an rtx code instead
3384 of an operands array.
3385 (mips_expand_call): Give the SIBCALL_P argument type "bool"
3387 (mips_emit_fcc_reload): Rename to...
3388 (mips_expand_fcc_reload): ...this.
3389 (init_cumulative_args): Rename to...
3390 (mips_init_cumulative_args): ...this and remove the libname argument.
3391 (function_arg_advance): Rename to...
3392 (mips_function_arg_advance): ...this.
3393 (function_arg): Rename to...
3394 (mips_function_arg): ...this and use "rtx" instead of
3396 (function_arg_boundary): Rename to...
3397 (mips_function_arg_boundary): ...this.
3398 (mips_expand_unaligned_load): Rename to...
3399 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
3400 and BITPOS arguments type "HOST_WIDE_INT".
3401 (mips_expand_unaligned_store): Rename to...
3402 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3403 and BITPOS arguments type "HOST_WIDE_INT".
3404 (override_options): Rename to...
3405 (mips_override_options): ...this.
3406 (print_operand): Rename to...
3407 (mips_print_operand): ...this.
3408 (print_operand_address): Rename to...
3409 (mips_print_operand_address): ...this.
3410 (mips_output_ascii): Remove the PREFIX argument.
3411 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3413 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3414 (mips_function_value): Remove the FUNC argument. Use "rtx" instead
3415 of "struct rtx_def *".
3416 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3418 (build_mips16_call_stub): Delete.
3419 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3420 (mips_use_ins_ext_p): Give the second and third arguments type
3421 "HOST_WIDE_INT" rather than "rtx".
3422 * config/mips/mips.h: Update after the above changes. Tweak comments
3424 (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
3425 (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3426 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3427 element type from "char" to "bool".
3428 (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
3429 (mips_cpu_info_table): Delete.
3430 * config/mips/mips.md: Update after the above changes. Tweak some
3432 * config/mips/mips-ps-3d.md: Likewise.
3433 * config/mips/mips.c: Tweak comments and formatting.
3434 Use NULL-like macros rather than 0 in various places.
3435 (mips_section_threshold): Rename to...
3436 (mips_small_data_threshold): ...this and give it an unsigned type.
3437 (num_source_filenames): Remove explicit initialization.
3438 (sdb_label_count): Likewise.
3439 (sym_lineno): Delete.
3440 (set_noat): Make static.
3441 (mips_branch_likely): Likewise, and give it type "bool".
3442 (mips_isa_info): Rename to...
3443 (mips_isa_option_info): ...this.
3444 (mips_flag_delayed_branch): Rename to...
3445 (mips_base_delayed_branch): ...this.
3446 (mips_split_addresses): Delete.
3447 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3448 element type from "char" to "bool".
3449 (mips_regno_to_class): Add an explicit array size.
3450 (mips16_flipper): Change from type "int" to type "bool".
3451 (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
3452 (mips_tls_operand_p): Rename to...
3453 (mips_tls_symbol_p): ...this.
3454 (mips_global_symbol_p): Remove redundant "const".
3455 (mips_offset_within_alignment_p): Simplify.
3456 (mips_regno_mode_ok_for_base_p): Change the name of the last argument
3457 to STRICT_P and give it type bool.
3458 (mips_valid_base_register_p): Likewise.
3459 (mips_classify_address): Likewise.
3460 (mips_legitimate_address_p): Likewise.
3461 (mips16_unextended_reference_p): Take the offset as an
3462 "unsigned HOST_WIDE_INT" rather than an "rtx". Simplify.
3463 (mips_const_insns): Use IN_RANGE.
3464 (mips_force_temporary): Remove an unnecessary copy_rtx.
3465 (mips16_gp_pseudo_reg): Simplify.
3466 (mips_split_symbol): Remove an unnecessary copy_rtx.
3467 (mips_legitimize_tls_address): Only create registers if we need them.
3468 (mips_legitimize_address): Use mips_split_plus.
3469 (mips_move_integer): Swap DEST and TEMP arguments. Rename local
3470 variable COST to NUM_OPS.
3471 (mips_legitimize_move): Use gen_lowpart.
3472 (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
3473 (m16_check_op): Use IN_RANGE.
3474 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
3475 (mips_split_doubleword_move): Pass booleans to mips_subword.
3476 (mips_output_move): Store the mode in a local variable.
3477 Explicitly assert that this function does not deal with
3478 MFLO and MFHI. Use SMALL_OPERAND_UNSIGNED. Make order of
3479 cases more consistent.
3480 (mips_relational_operand_ok_p): Rename to...
3481 (mips_int_order_operand_ok_p): ...this.
3482 (mips_canonicalize_comparison): Rename to...
3483 (mips_canonicalize_int_order_test): ...this.
3484 (mips_emit_int_relational): Rename to...
3485 (mips_emit_int_order_test): ...this. Store the mode in a local
3487 (mips_reverse_fp_cond_p): Rename to...
3488 (mips_reversed_fp_cond): ...this.
3489 (mips_emit_compare): Make the order of the statements more consistent.
3490 (mips_emit_scc): Rename to...
3491 (mips_expand_scc): ...this.
3492 (gen_conditional_branch): Rename to...
3493 (mips_expand_conditional_branch): ...this.
3494 (gen_conditional_move): Rename to...
3495 (mips_expand_conditional_move): ...this. Build the condition
3496 separately from the main pattern.
3497 (mips_gen_conditional_trap): Rename to...
3498 (mips_expand_conditional_trap): ...this and take an rtx code instead
3499 of an operands array. Simplify.
3500 (init_cumulative_args): Rename to...
3501 (mips_init_cumulative_args): ...this. Use memset rather than a
3502 copy from a zeroed static. Use prototype_p and stdarg_p.
3503 (mips_arg_info): Rename to...
3504 (mips_get_arg_info): ...this and put the INFO argument first.
3505 (function_arg): Rename to...
3506 (mips_function_arg): ...this and use "rtx" instead of
3507 "struct rtx_def *". Only split structures into chunks if
3508 TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
3509 a chunk-by-chunk basis. Use SCALAR_FLOAT_TYPE_P instead of a
3510 comparison with REAL_TYPE. Rename local variable REG to REGNO
3511 and make it unsigned.
3512 (function_arg_advance): Rename to...
3513 (mips_function_arg_advance): ...this.
3514 (function_arg_boundary): Rename to...
3515 (mips_function_arg_boundary): ...this.
3516 (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
3518 (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
3519 comparison with REAL_TYPE.
3520 (mips_function_value): Remove the FUNC argument. Rename local
3521 variable UNSIGNEDP to UNSIGNED_P.
3522 (mips_return_in_memory): Use IN_RANGE.
3523 (mips_setup_incoming_varargs): Pass a boolean rather than an int
3524 to FUNCTION_ARG_ADVANCE.
3525 (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
3526 to INDIRECT_P. Remove a redundant mips_abi check. Only calculate
3527 SIZE and RSIZE if needed.
3528 (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
3530 (build_mips16_function_stub): Rename to...
3531 (mips16_build_function_stub): ...this.
3532 (build_mips16_call_stub): Rename to...
3533 (mips16_build_call_stub): ...this. Make static, and return a
3534 "bool" rather than an "int". Rename the ARG_SIZE argument to
3535 ARGS_SIZE. Rename the local variable FPRET to FP_RET_P and give
3536 it type "bool". Use "jr" rather than "j". Use XNEW. Simplify.
3537 (mips_load_call_address): Give the SIBCALL_P argument type "bool"
3539 (mips_expand_call): Likewise. Assert that MIPS16 calls via stubs
3540 are not sibling ones.
3541 (mips_emit_fcc_reload): Rename to...
3542 (mips_expand_fcc_reload): ...this.
3543 (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
3545 (mips_expand_unaligned_load): Rename to...
3546 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
3547 and BITPOS arguments type "HOST_WIDE_INT". Remove redundant
3549 (mips_expand_unaligned_store): Rename to...
3550 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3551 and BITPOS arguments type "HOST_WIDE_INT".
3552 (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
3553 and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
3555 (mips_init_split_addresses): Replace with...
3556 (mips_split_addresses_p): ...this new function.
3557 (mips_init_relocs): Check mips_split_addresses_p () rather than
3558 mips_split_addresses. Always initialize mips_split_p with booleans.
3559 (print_operand_reloc): Rename to...
3560 (mips_print_operand_reloc): ...this. Use a gcc_assert rather than
3562 (print_operand): Rename to...
3563 (mips_print_operand): ...this.
3564 (print_operand_address): Rename to...
3565 (mips_print_operand_address): ...this. Use GP_REG_FIRST.
3566 (mips_in_small_data_p): Simplify.
3567 (mips_output_ascii): Remove the PREFIX argument and "register"
3568 keywords. Use the STRING parameter directly and cast to
3570 (mips16e_collect_argument_save_p): Use IN_RANGE.
3571 (mips_function_has_gp_insn): Simplify.
3572 (mips_set_return_address): Use BITSET_P.
3573 (mips_restore_gp): Use a separate statement to pick the base
3575 (mips_output_function_prologue): Use a local FRAME variable.
3576 (mips_save_reg): Pass booleans to mips_subword.
3577 (mips_expand_prologue): Use a local FRAME variable. Use
3578 cprestore_size to detect when .cprestore is needed.
3579 (mips_restore_reg): Use GP_REG_FIRST.
3580 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3581 rather than "int". Use local FRAME and REGNO variables.
3582 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3583 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3585 (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
3586 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3587 (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
3588 (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
3589 (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
3590 (builtin_description): Rename to...
3591 (mips_builtin_description): ...this.
3592 (mips_bdesc): Rename to...
3593 (mips_ps_bdesc): ...this.
3594 (sb1_bdesc): Rename to...
3595 (mips_sb1_bdesc): ...this.
3596 (dsp_bdesc): Rename to...
3597 (mips_dsp_bdesc): ...this.
3598 (dsp_32only_bdesc): Rename to...
3599 (mips_dsp_32only_bdesc): ...this.
3600 (bdesc_map): Rename to...
3601 (mips_bdesc_map): ...this.
3602 (bdesc_arrays): Rename to...
3603 (mips_bdesc_arrays): ...this.
3604 (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
3605 Tweak error message.
3606 (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
3607 Rename local variables I and J to OPNO and ARGNO respectively.
3608 Assert that the number of arguments is no more than the number of
3610 (mips_expand_builtin_compare): Use an array of arguments rather
3611 than an array of operands. Assert that the number of operands is
3613 (add_constant): Rename to...
3614 (mips16_add_constant): ...this. Use XNEW.
3615 (dump_constants_1): Rename to...
3616 (mips16_emit_constants_1): ...this. Use ALL_SCALAR_FIXED_POINT_MODE_P.
3617 (dump_constants): Rename to...
3618 (mips16_emit_constants): ...this.
3619 (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
3620 (mips_set_mips16_mode): Don't call mips_init_split_addresses.
3621 Assign mips16_p to was_mips16_p.
3622 (mips_parse_cpu): Tweak warning message.
3623 (override_options): Rename to...
3624 (mips_override_options): ...this. Move the mips_cost initialization
3625 out of the "shared with GAS" block. Quote option names in error
3627 (mips_conditional_register_usage): Make local variable REGNO unsigned.
3628 (mips_order_regs_for_local_alloc): Remove register keyword.
3630 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3632 * system.h (IN_RANGE): Cast each argument individually.
3634 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3636 * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
3637 MIPS16 code unless using o32 or o64.
3639 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3641 * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
3642 for modes smaller than 4 bytes.
3643 * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
3646 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3648 * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
3649 * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
3650 (ASM_OUTPUT_ALIGNED_BSS): Delete.
3651 * config/mips/mips.c (mips_output_aligned_bss): Delete.
3653 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3655 * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
3656 sibling calls to "mips16" functions if the function satisfies
3657 const_call_insn_operand.
3659 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3661 * config/mips/mips.c (mips_va_start): Fix types in calls
3664 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3666 * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
3669 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3671 * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
3672 * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
3673 instead of checking mips_isa.
3675 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3677 * doc/invoke.texi (-mpaired-single): Don't say that the option
3678 requires 64-bit code.
3679 * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
3680 * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
3681 (ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for
3682 V2SF if ISA_MIPS32R2.
3683 (MODES_TIEABLE_P): Use mips_modes_tieable_p.
3684 * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
3685 to ISA_HAS_NMADD_NMSUB.
3686 (mips_split_doubleword_move): Handle V2SF.
3687 (mips_modes_tieable_p): New function.
3688 (override_options): Report a warning rather than an error when
3689 -mpaired-single is used on ISAs that don't support it; use
3690 ISA_HAS_PAIRED_SINGLE to check that case.
3691 * config/mips/mips.md (MOVE64): New mode iterator. Replace DI
3692 and DF move splitters with a single MOVE64 splitter, thereby adding
3693 a V2SF splitter too.
3694 (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
3695 Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator.
3696 (HALFMODE): Add V2SF.
3697 (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
3698 (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
3699 (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
3700 (movv2sf_hardfloat_32bit): New pattern.
3701 (load_low<mode>, load_high<mode>, store_word<mode>): Remove
3702 TARGET_DOUBLE_FLOAT conditions.
3704 2007-10-20 Jakub Jelinek <jakub@redhat.com>
3706 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
3707 saved CR2 offset to low 32 bits of regs->ccr rather than the whole
3708 64-bit register in 64-bit libgcc.
3710 2007-10-20 Eric B. Weddington <eweddington@cso.atmel.com>
3712 * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
3713 * config/avr/avr.h (LINK_SPEC): Likewise.
3714 (CRT_BINUTILS_SPECS): Likewsie.
3715 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3717 2007-10-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3719 * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
3720 and -Wfatal-errors together.
3722 2007-10-20 Alan Modra <amodra@bigpond.net.au>
3725 * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
3726 change for vrsave, ie restore after frame pop.
3728 2007-10-19 David S. Miller <davem@davemloft.net>
3730 * config/sparc/niagara2.md: Fix copyright notice.
3732 2007-10-19 Sebastian Pop <sebastian.pop@amd.com>
3734 PR tree-optimization/23820
3735 PR tree-optimization/24309
3736 PR tree-optimization/33766
3737 * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
3738 * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
3739 * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
3740 * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
3741 * tree-loop-linear.c (perfect_loop_nest_depth): New.
3742 (linear_transform_loops): Use perfect_loop_nest_depth.
3743 * lambda-code.c (perfect_nest_p): Outer loops in perfect nests
3744 should have a single condition: their exit.
3746 2007-10-19 Richard Guenther <rguenther@suse.de>
3750 * stor-layout.c (layout_type): Assert that aggregates do not
3751 have their alias sets set.
3752 * alias.c (get_alias_set): Return alias set zero for incomplete
3753 types, return the alias set of the element for incomplete array
3754 types, but do not remember these.
3756 2007-10-19 Richard Guenther <rguenther@suse.de>
3759 2007-10-19 Richard Guenther <rguenther@suse.de>
3762 * tree.c (build_array_type): Do not re-layout unbound array
3765 2007-10-19 Richard Guenther <rguenther@suse.de>
3768 * tree.c (build_array_type): Do not re-layout unbound array types.
3770 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3772 * config/mips/mips.c (mips_canonicalize_comparison): Check
3773 mips_relational_operand_ok_p before trying to rewrite the test.
3774 Only calculate PLUS_ONE if needed.
3775 (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
3778 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3780 * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
3783 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3785 * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
3786 the call uses the incoming value of $2.
3788 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3790 * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
3791 rather then gen_rtx_MEM.
3792 (mips_setup_incoming_varargs): Use gen_frame_mem rather than
3794 (mips_set_return_address): Likewise.
3795 (mips_restore_gp): Likewise.
3797 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3799 * config/mips/mips.c (gpr_mode): Delete.
3800 (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
3801 instead of gpr_mode.
3802 (mips_for_each_saved_reg): Likewise.
3803 (mips_expand_prologue, mips_expand_epilogue): Likewise.
3804 (override_options): Don't initialize gpr_mode.
3805 * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
3807 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3809 * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
3811 (mips_class_max_nregs): Calculate the smallest consituent register
3812 size and use that to determine an upper bound on the number of
3815 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3817 * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
3819 (mips_expand_epilogue): ...here.
3820 (mips_mdebug_abi_name): New function, split out from...
3821 (mips_file_start): ...here.
3822 (mips_hard_regno_mode_ok_p): New function, split out from...
3823 (override_options): ...here.
3824 (mips_expand_builtin_1): New function, split out from...
3825 (mips_expand_buitin): ...here. Abort if we don't recognize
3828 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3830 * config/mips/mips.c (build_mips16_function_stub): Load the
3831 target address into $1 before transfering the arguments.
3832 Don't use ".set noreorder".
3833 (build_mips16_call_stub): Likewise.
3835 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3837 * config/mips/mips.c (mips_output_32bit_xfer): New function.
3838 (mips_output_64bit_xfer): Likewise.
3839 (mips16_fp_args): Rename to...
3840 (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
3841 with a DIRECTION argument. Use mips_output_32bit_xfer and
3842 mips_output_64bit_xfer.
3843 (build_mips16_function_stub): Update accordingly.
3844 (mips16_fpret_double): Delete.
3845 (build_mips16_call_stub): Update after above changes.
3846 Use mips_output_32bit_xfer. Use mips_output_64bit_xfer instead
3847 of mips16_fpret_double. Use GP_REG_RETURN.
3849 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3851 * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
3852 use asm_out_file instead.
3853 (build_mips16_function_stub): Likewise.
3854 (build_mips16_call_stub, mips_output_function_prologue): Update
3857 2007-10-18 David S. Miller <davem@davemloft.net>
3859 Add Niagara-2 support.
3860 * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
3861 * config.gcc: Add niagara2 to cpu and tune lists for sparc.
3862 * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
3863 (include): Add inclusion of niagara2.md
3864 * config/sparc/sparc.c (niagara2_costs): New.
3865 (sparc_override_options): Add niagara2 entry to cpu_default[]
3866 and cpu_table[]. Set align_functions to 32 on Niagara2. Use
3867 niagara2_costs when PROCESSOR_NIAGARA2. Handle Niagara2 for
3868 PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
3869 (sparc_initialize_trampoline): Handle niagara2 like niagara.
3870 (sparc64_initialize_trampoline): Likewise.
3871 (sparc_use_sched_lookahead): Likewise.
3872 (sparc_issue_rate): Likewise.
3873 * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
3875 * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
3876 ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
3877 TARGET_CPU_niagara2.
3878 (PROCESSOR_NIAGARA2): New.
3879 (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
3880 (BRANCH_COST): Likewise.
3881 * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
3882 * config/sparc/sol2.h: Likewise.
3883 * config/sparc/niagara2.md: New file.
3885 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3887 * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
3889 (mips_compute_frame_info): Remove associated code.
3890 (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
3892 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3894 * config/mips/mips-protos.h (compute_frame_size): Delete.
3895 * config/mips/mips.h: Update comments.
3896 * config/mips/mips.c (mips_frame_info): Remove initialized.
3897 (compute_frame_size): Rename to...
3898 (mips_compute_frame_info): ...this and make static. Remove the
3899 SIZE argument and return no value. Remove the setting of initialized.
3900 Update rest of file accordingly.
3901 (mips_set_return_address): Don't call compute_frame_size.
3902 (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
3903 Don't call compute_frame_size.
3905 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3907 * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
3908 * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
3909 mips_hard_frame_pointer_required.
3910 (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
3911 large MIPS16 frames.
3912 * config/mips/mips.c (mips_frame_pointer_required): New function.
3914 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3916 * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
3917 and hard_frame_pointer_offset.
3918 (mips_debugger_offset): Use hard_frame_pointer_offset.
3919 (mips16e_collect_argument_save_p): Likewise.
3920 (compute_frame_size): Initialize arg_pointer_offset and
3921 hard_frame_pointer_offset.
3922 (mips_initial_elimination_offset): Use them.
3923 (mips_output_function_prologue): Use hard_frame_pointer_offset.
3924 (mips_expand_prologue, mips_expand_epilogue): Likewise.
3926 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3928 * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
3930 * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
3931 "unsigned int" rather than "int" and put them with the other
3932 register-related fields. Put expanded comments above fields
3933 rather than to their right.
3934 (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
3935 with a NUM_REGS_PTR argument.
3936 (mips16e_save_restore_pattern_p): Update accordingly.
3937 (compute_frame_size): Clarify frame diagram. Rewrite.
3939 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3941 * config/mips/mips-ftypes.def: New file.
3942 * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
3943 (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
3944 (mips_function_type): Redefine using mips-ftypes.def.
3945 (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
3946 (mips_builtin_vector_type): New function.
3947 (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
3948 (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
3949 (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
3950 (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
3952 (mips_build_function_type): New function.
3953 (mips_init_builtins): Use it to create types lazily.
3955 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3957 * config/mips/mips.h (set_volatile): Delete.
3958 * config/mips/mips.c (set_volatile): Delete.
3959 (mips_print_operand_punctuation): New function, split out from
3960 print_operand. Remove '%{', '%}', '%~', '%&' and '%!'.
3961 Use the same character ordering in the code and the comments.
3962 Use a recursive call to handle '*'. Abort on unknown characters.
3963 (mips_init_print_operand_punct): New function, split out from
3965 (mips_print_int_branch_condition): New function, split out from
3966 print_operand. Use GET_RTX_NAME. Use output_operand_lossage
3967 to report unexpected codes.
3968 (mips_print_float_branch_condition): New function, split out from
3969 print_operand. Use output_operand_lossage to report unexpected codes.
3970 (print_operand): Rework to use a case statement. Use the
3971 same letter ordering in the code and the comments. Use
3972 output_operand_lossage to report unexpected codes and
3973 reverse_condition to handle inverted branch conditions.
3974 (override_options): Use mips_init_print_operand_punct.
3976 2007-10-18 Richard Sandiford <rsandifo@nildram.co.uk>
3978 * config/mips/mips.h: Move variable declarations to end of file and
3979 enclose them all in #ifndef USED_FOR_TARGET.
3980 * config/mips/mips.c: Reorder functions into more logical groups,
3981 and so that callees appear before callers. Put the targetm
3982 initializer at the end of the file. Remove forward static
3983 declarations where possible.