1 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3 * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
6 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
8 * df-core.c (df_ref_debug): Honor -fdump-noaddr.
10 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12 * combine.c (move_deaths): Compare LUIDs within the same BB only.
14 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
16 * common.opt (fdump-unnumbered-links): New.
17 * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18 * print-rtl.c (flag_dump_unnumbered_links): New.
21 2009-06-02 Richard Earnshaw <rearnsha@arm.com>
23 * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
24 push/pop multiple to 8-byte alignment.
26 2009-06-01 Jakub Jelinek <jakub@redhat.com>
28 * config/i386/i386.c (queued_cfa_restores): New static variable.
29 (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
31 (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
32 (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
33 Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
34 Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
36 (ix86_emit_restore_regs_using_mov): Likewise.
37 (ix86_emit_restore_sse_regs_using_mov): Likewise.
38 (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
39 it through to ix86_emit_restore_reg_using_pop.
40 (ix86_emit_leave): Add RED_OFFSET argument. Call
41 ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
42 instead of adding REG_CFA_OFFSET note unconditionally.
43 (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
44 the above functions. Call ix86_add_queued_cfa_restore_notes when
47 * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
48 force output of the label even for dwarf2out_do_cfi_asm.
49 (add_fde_cfi): If -g2 and above and cfi might change CFA,
50 force creation of CFI label and chain DW_CFA_set_loc jumping to it
51 for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
53 (dwarf2out_stack_adjust, dwarf2out_frame_debug,
54 dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
55 dwarf2out_cfi_label callers.
56 * tree.h (dwarf2out_cfi_label): Adjust prototype.
57 * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
58 Adjust dwarf2out_cfi_label callers.
59 * config/vax/vax.c (vax_output_function_prologue): Likewise.
61 * config/i386/i386.h (struct machine_cfa_state,
62 struct machine_function): Guard with ifndef USED_FOR_TARGET
63 instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
66 * emutls.c (__emutls_get_address): Change arr->size to mean number
67 of allocated arr->data entries instead of # of slots + 1.
70 * recog.c (peep2_reinit_state): New function.
71 (peephole2_init_state): Use it at the end of a basic block and also
72 when seeing a RTX_FRAME_RELATED_P insn.
74 2009-06-01 Steve Ellcey <sje@cup.hp.com>
76 * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
77 fixuns_truncrfdi2): New.
78 (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
79 *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
80 *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
81 *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
82 *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
83 *recip_approx): Remove.
84 (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
85 moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
86 divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
88 * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
91 2009-06-01 Ian Lance Taylor <iant@google.com>
93 * attribs.c (register_attribute): Use CONST_CAST.
94 * collect2.c (main): Use CONST_CAST2.
95 (scan_prog_file): Likewise.
96 * gcc.c (process_command, main): Likewise.
97 * toplev.c (toplev_main): Likewise.
99 * c-typeck.c (handle_warn_cast_qual): New static function,
100 partially broken out of build_c_cast.
101 (build_c_cast): Call handle_warn_cast_qual.
102 * doc/invoke.texi (Warning Options): Document new effect of
105 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
107 * diagnostic.c (diagnostic_build_prefix): Always print columns.
108 (diagnostic_report_current_module): Print columns.
109 * common.opt (flag_show_column): Enable by default.
111 2009-06-01 Luis Machado <luisgpm@br.ibm.com>
113 * alias.c (find_base_term): Check for NULL term before returning.
115 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
117 Revert due to PR40320:
119 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
120 * calls.c (emit_library_call_value_1): Don't force_operand for move
123 2009-06-01 Olivier Hainque <hainque@adacore.com>
124 Eric Botcazou <botcazou@adacore.com>
126 * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
127 to be processed as a bitfield for constructor output purposes.
128 * output.h (initializer_constant_valid_for_bitfield_p): Declare
130 * varasm.c (oc_local_state): New type, output_constructor
131 local state to support communication with helpers.
132 (oc_outer_state): New type, output_constructor outer state of
133 relevance in recursive calls.
134 (output_constructor_array_range): New output_constructor helper,
135 extracted code for an array range element.
136 (output_constructor_regular_field): New output_constructor helper,
137 extracted code for an element that is not a bitfield.
138 (output_constructor_bitfield): New output_constructor helper,
139 extracted code for a bitfield element. Accept an OUTER state
140 argument for recursive processing. Recurse on record or array
141 CONSTRUCTOR values, possibly past noop conversions.
142 (initializer_constant_valid_for_bitfield_p): New predicate. Whether
143 VALUE is a valid constant-valued expression for use in a static
144 bit-field initializer.
145 (output_constructor): Rework to use helpers. Accept and honor an
146 OUTER state argument for recursive calls. Return total size. Be
147 prepared for nested constructors initializing bitfields.
148 (output_constant): Feed OUTER in calls to output_constructor.
150 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
152 * calls.c (emit_library_call_value_1): Don't force_operand for move
155 2009-06-01 Nick Clifton <nickc@redhat.com>
157 * doc/invoke.texi (IA-64 Options): Fix typo.
159 2009-06-01 Ira Rosen <irar@il.ibm.com>
161 PR tree-optimization/39129
162 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
164 (vect_do_peeling_for_loop_bound): Use
165 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
166 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
167 (vect_loop_versioning): Likewise.
168 (vect_create_cond_for_alias_checks): Fix indentation.
169 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
171 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
172 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
173 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
174 "control flow in loop".
175 (vect_estimate_min_profitable_iters): Use
176 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
177 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
178 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
179 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
180 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
181 statement belongs to a group of strided accesses with the exact code
183 (vectorizable_load): Likewise.
184 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
185 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
187 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
189 * config/freebsd-stdint.h: New file.
190 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
191 Add freebsd-stdint.h to tm_file.
193 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
195 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
196 (thumb2_extendhidi2): Likewise.
198 2009-05-31 Ian Lance Taylor <iant@google.com>
200 * regstat.c (regstat_n_sets_and_refs): Remove duplicate
203 2009-05-31 Ian Lance Taylor <iant@google.com>
205 * Makefile.in (except.o): Depend upon gt-except.h, not
207 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
208 (ipa-reference.o): Depend upon gt-ipa-reference.h.
210 2009-05-31 Jason Merrill <jason@redhat.com>
212 * tree-pretty-print.c (print_call_name): Take the callee, not the
213 call itself. Make non-static. Use dump_function_name for
215 (dump_generic_node): Adjust.
216 * diagnostic.h: Declare print_call_name.
217 * gimple-pretty-print.c (dump_gimple_call): Use it.
219 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
221 * config/sh/sh.md (ashldi3_std): New define_expand.
224 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
227 * config/sh/sh.c: Include debug.h.
228 (sh_expand_epilogue): Emit a blockage insn before the frame
229 pointer adjustment also when dwarf2out_do_frame returns true.
231 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
233 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
234 (thumb2_extendqidi2): New pattern.
236 2009-05-31 Ira Rosen <irar@il.ibm.com>
238 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
239 mark phis for renaming.
240 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
241 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
242 Call mark_sym_for_renaming.
243 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
244 * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
245 initialization and a call to mark_set_for_renaming.
247 2009-05-31 Jakub Jelinek <jakub@redhat.com>
250 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
251 frame related even if !set_cfa && style < 0.
253 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
255 * config/i386/mingw-tls.c: New file.
256 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
258 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
259 it for targets defining _WIN32 but not __CYGWIN__.
261 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
263 * configure.ac: Add MPC support.
265 * config.in, configure: Regenerate.
267 2009-05-29 Richard Henderson <rth@redhat.com>
269 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
270 NOTE_INSN_BASIC_BLOCK.
271 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
272 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
273 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
275 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
277 (add_cfi): Disable check redefining cfa away from drap.
278 (lookup_cfa_1): Add remember argument; handle remember/restore.
279 (lookup_cfa): Pass remember argument.
281 (compute_barrier_args_size_1): Remove sibcall check.
282 (dwarf2out_frame_debug_def_cfa): New.
283 (dwarf2out_frame_debug_adjust_cfa): New.
284 (dwarf2out_frame_debug_cfa_offset): New.
285 (dwarf2out_frame_debug_cfa_register): New.
286 (dwarf2out_frame_debug_cfa_restore): New.
287 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
288 (dwarf2out_begin_epilogue): New.
289 (dwarf2out_frame_debug_restore_state): New.
290 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
291 DW_CFA_restore_state.
292 (output_cfi_directive): Likewise.
293 (convert_cfa_to_fb_loc_list): Likewise.
294 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
295 * dwarf2out.h: Update.
296 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
297 (copy_insn_1): Early out for null.
298 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
299 and dwarf2out_frame_debug_restore_state.
300 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
301 (prologue_insn_hash, epilogue_insn_hash): New.
302 (free_after_compilation): Adjust freeing accordingly.
303 (record_insns): Create hash table if needed; push insns into
304 hash instead of array.
305 (maybe_copy_epilogue_insn): New.
306 (contains): Search hash table instead of array.
307 (sibcall_epilogue_contains): Remove.
308 (thread_prologue_and_epilogue_insns): Split eh_return insns
309 and mark them as epilogues.
310 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
311 scanning in terms of basic blocks.
312 * insn-notes.def (CFA_RESTORE_STATE): New.
313 * jump.c (returnjump_p_1): Accept EH_RETURN.
314 (eh_returnjump_p_1, eh_returnjump_p): New.
315 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
316 CFA_REGISTER, CFA_RESTORE): New.
317 * rtl.def (EH_RETURN): New.
318 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
320 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
321 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
323 * config/i386/i386.c (gen_push): Update cfa state.
324 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
325 add a CFA_ADJUST_CFA note.
326 (ix86_dwarf_handle_frame_unspec): Remove.
327 (ix86_expand_prologue): Update cfa state.
328 (ix86_emit_restore_reg_using_pop): New.
329 (ix86_emit_restore_regs_using_pop): New.
330 (ix86_emit_leave): New.
331 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
332 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
333 * config/i386/i386.h (struct machine_cfa_state): New.
334 (ix86_cfa_state): New.
335 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
336 (eh_return_internal): Merge from eh_return_<mode>,
337 use eh_return rtx, split w/ epilogue.
339 2009-05-29 Ian Lance Taylor <iant@google.com>
341 * builtins.c (validate_gimple_arglist): Don't use va_arg with
343 * calls.c (emit_library_call_value_1): Likewise.
345 * c-typeck.c (c_build_va_arg): New function.
346 * c-tree.h (c_build_va_arg): Declare.
347 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
348 instead of build_va_arg.
350 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
352 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
353 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
354 (ptr_difference_cost): Use affine combinations to compute it.
355 (difference_cost): Likewise.
356 (get_computation_cost_at): Compute more accurate cost for addresses
357 if the ratio is a multiplier allowed in addresses.
358 For non-addresses, consider that an additional offset or symbol is
361 2009-05-29 Jakub Jelinek <jakub@redhat.com>
363 * config/i386/i386.c (ix86_decompose_address): Avoid useless
364 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
366 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
367 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
368 (prefix_rex): For UNIT_MMX don't imply the prefix by default
370 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
371 to 1 for TYPE_SSE{IADD1,CVT1}.
372 (prefix_vex_imm8): Removed.
373 (length_vex): Only pass 1 as second argument to
374 ix86_attr_length_vex_default if prefix_extra is 0.
375 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
376 (length): For prefix vex computation use length_immediate
377 attribute instead of prefix_vex_imm8.
378 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
379 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
380 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
381 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
382 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
383 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
384 a space in between the operands.
385 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
386 if one operand is 0xff and the other one si, di, bp or sp.
387 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
388 other one si, di, bp or sp.
389 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
390 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
391 type and mode attributes.
392 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
393 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
394 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
395 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
396 prefix_data16 attribute iff MODE_DF.
397 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
398 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
399 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
400 constm128_operand in length_immediate computation.
401 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
402 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
403 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
404 length_immediate attribute to 1.
405 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
406 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
407 for certain alternatives.
408 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
409 prefix_data16 attribute if MODE_V1DF.
410 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
411 length_immediate to 1.
412 (set_got_rex64, set_rip_rex64): Remove length attribute, set
413 length_address to 4, set mode attribute to MODE_DI.
414 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
415 (fxam<mode>2_i387): Set length attribute to 4.
416 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
417 *prefetch_3dnow_rex): Override length_address attribute.
418 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
420 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
421 (constm128_operand): Removed.
422 * config/i386/i386.c (memory_address_length): For
423 disp && !index && !base in 64-bit mode account for SIB byte if
424 print_operand_address can't optimize disp32 into disp32(%rip)
425 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
426 for fs: or gs: segment.
427 (ix86_attr_length_immediate_default): When checking if shortform
428 is possible, truncate immediate to the length of the non-shortened
430 (ix86_attr_length_address_default): Ignore MEM_P operands
432 (ix86_attr_length_vex_default): Only check for DImode on
433 GENERAL_REG_P operands.
434 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
435 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
436 (sse_cvttps2pi): Clear prefix_rep attribute.
437 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
439 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
440 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
441 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
442 iff operand 2 is const_int_operand.
443 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
444 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
445 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
447 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
449 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
450 prefix_data16 attribute for movlpd and movhpd instructions.
451 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
452 length_immediate for shufpd instruction.
453 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
454 (avx_cmpp<avxmodesuffixf2c><mode>3,
455 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
456 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
457 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
458 *vec_dupv4sf_avx, *vec_dupv4sf): Set
459 length_immediate attribute to 1.
460 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
461 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
462 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
463 prefix_data16 attribute for the first alternative to 1.
464 (*avx_loadlps): Override length_immediate for the first alternative.
465 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
466 attributes for second alternative.
467 (*vec_concatv2sf_sse4_1): Override length_immediate and
468 prefix_data16 attributes for second alternative.
469 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
470 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
471 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
472 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
473 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
474 prefix_data16 and length_immediate to 1.
475 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
477 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
478 prefix_extra attribute for variants that don't have 0f prefix
480 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
481 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
482 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
483 *sse4_1_pextrd): Set length_immediate to 1.
484 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
485 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
487 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
488 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
489 length_immediate to 1 for second alternative.
490 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
491 prefix_extra and length_immediate attributes for the first
493 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
495 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
496 to 1 for the first and third alternative.
497 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
499 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
501 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
503 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
504 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
505 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
506 *avx_psign<mode>3): Set prefix_extra attribute to 1.
507 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
508 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
509 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
510 ssse3_psign<mode>3): Override prefix_rex attribute.
511 (*avx_palignrti): Override prefix_extra and length_immediate
513 (ssse3_palignrti): Override length_immediate to 1.
514 (ssse3_palignrdi): Override length_immediate to 1, override
515 prefix_rex attribute.
516 (abs<mode>2): Override prefix_rep to 0, override prefix_rex
518 (sse4a_extrqi): Override length_immediate to 2.
519 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
520 (sse4a_insertq): Override prefix_data16 to 0.
521 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
522 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
523 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
524 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
525 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
526 and length_immediate to 1.
527 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
528 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
529 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
530 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
531 and length_immediate to 1.
532 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
533 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
534 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
535 avx_ptest256): Override prefix_extra to 1.
536 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
537 Override prefix_data16 and length_immediate to 1.
538 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
539 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
540 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
541 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
542 prefix_data16 to 0 and prefix_extra to 2.
543 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
544 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
546 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
547 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
548 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
549 and prefix_extra to 2.
550 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
551 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
552 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
553 avx_vpermilvar<mode>3,
554 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
555 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
556 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
557 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
558 Override prefix_extra to 1.
559 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
560 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
561 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
562 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
563 prefix_extra and length_immediate to 1.
564 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
566 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
567 to 1 for the first alternative.
568 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
569 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
571 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
572 *movv2sf_internal_avx, *movv2sf_internal): Override
573 prefix_rep attribute for certain alternatives.
574 (*mov<mode>_internal): Override prefix_rep or prefix_data16
575 attributes for certain alternatives.
576 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
577 attributes for certain alternatives.
578 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
579 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
580 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
581 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
582 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
583 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
584 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
585 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
586 length_immediate to 1 if operand 2 is const_int_operand.
587 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
588 *vec_extractv2si_1): Set length_immediate
590 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
591 using old 3DNOW insn rather than SSE/3DNOW_A.
592 (mmx_emms, mmx_femms): Clear modrm attribute.
594 2009-05-29 Martin Jambor <mjambor@suse.cz>
596 * tree-sra.c: New implementation of SRA.
598 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
599 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
600 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
601 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
602 (SRA_MAX_STRUCTURE_COUNT): Removed.
603 (SRA_FIELD_STRUCTURE_RATIO): Removed.
604 * doc/invoke.texi (sra-max-structure-size): Removed.
605 (sra-field-structure-ratio): Removed.
607 2009-05-29 Jakub Jelinek <jakub@redhat.com>
610 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
613 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
615 PR rtl-optimization/40101
616 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
617 seqno. Adjust comment.
618 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
619 inserting bookkeeping before a jump, the jump is not scheduled.
620 When no positive seqno found, provide a value. Add comment.
622 2009-05-29 Richard Guenther <rguenther@suse.de>
624 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
625 short-cutting on the first component.
627 2009-05-29 Jakub Jelinek <jakub@redhat.com>
630 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
631 for trees other than decls/types.
633 2009-05-29 Richard Guenther <rguenther@suse.de>
635 * tree-ssa-operands.c (get_expr_operands): Do not handle
636 INDIRECT_REFs in the handled-component case. Remove
637 unused get_ref_base_and_extent case.
638 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
639 tree_low_cst and host_integerp where possible.
640 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
641 codes for equivalence.
642 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
644 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
646 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
647 to tmake_file for i[34567]86-*-cygwin*.
649 2009-05-29 Jakub Jelinek <jakub@redhat.com>
652 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
653 (altivec_categorize_keyword, init_vector_keywords,
654 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
657 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
659 * tree.c (handle_dll_attribute): Check if node is
660 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
662 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
664 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
666 (thumb2_zero_extendqidi2): Likewise.
668 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
670 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
671 instead of gen_movrt.
672 * config/sh/sh.md (movrt): Remove.
674 2009-05-28 Steve Ellcey <sje@cup.hp.com>
676 * doc/invoke.texi (IA-64 Options)
677 Add -msdata, -mfused-madd, -mno-inline-float-divide,
678 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
679 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
680 -msched-prefer-non-control-spec-insns,
681 -msched-stop-bits-after-every-cycle,
682 -msched-count-spec-in-critical-path,
683 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
684 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
685 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
686 and -msched-spec-verbose.
688 2009-05-28 Joseph Myers <joseph@codesourcery.com>
690 * config/arm/lib1funcs.asm (__clear_cache): Define if
692 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
694 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
696 2009-05-28 Richard Guenther <rguenther@suse.de>
698 * tree-ssa-alias.c (ao_ref_init): New function.
699 (ao_ref_base): Likewise.
700 (ao_ref_base_alias_set): Likewise.
701 (ao_ref_alias_set): Likewise.
702 (refs_may_alias_p_1): Change signature.
703 (refs_may_alias_p): Adjust.
704 (refs_anti_dependent_p): Likewise.
705 (refs_output_dependent_p): Likewise.
706 (call_may_clobber_ref_p_1): Change signature.
707 (call_may_clobber_ref_p): Adjust.
708 (stmt_may_clobber_ref_p_1): New function split out from ...
709 (stmt_may_clobber_ref_p): ... here.
710 (maybe_skip_until): Adjust signature.
711 (get_continuation_for_phi): Likewise.
712 (walk_non_aliased_vuses): Likewise.
713 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
714 (ao_ref_init): Declare.
715 (ao_ref_base): Likewise.
716 (ao_ref_alias_set): Likewise.
717 (stmt_may_clobber_ref_p_1): Likewise.
718 (walk_non_aliased_vuses): Adjust.
719 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
720 (get_ref_from_reference_ops): remove.
721 (vn_reference_lookup_2): Adjust signature.
722 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
723 (vn_reference_lookup_pieces): Adjust signature, do not re-build
725 (vn_reference_lookup): Adjust.
726 (vn_reference_insert): Likewise.
727 (vn_reference_insert_pieces): Adjust signature.
728 (visit_reference_op_call): Adjust.
729 * tree-ssa-pre.c (get_expr_type): Simplify.
730 (phi_translate_1): Adjust.
731 (compute_avail): Likewise.
732 (translate_vuse_through_block): Do not re-build trees.
733 (value_dies_in_block_x): Likewise.
734 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
736 (vn_reference_lookup_pieces): Adjust declaration.
737 (vn_reference_insert_pieces): Likewise.
739 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
741 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
742 with checking disabled.
744 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
748 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
749 macro definition for support of three-operand format aligned
750 .comm directive in assembler on cygwin/pe/mingw target OS.
751 * configure: Regenerate.
752 * config.h: Regenerate.
754 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
755 aligned form of .comm directive if -mpe-aligned-commons is in effect.
756 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
758 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
759 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
761 2009-05-28 Ira Rosen <irar@il.ibm.com>
763 PR tree-optimization/40254
764 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
765 in analysis of basic blocks.
767 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
770 * target.h (struct gcc_target): Fix indentation. Add
772 * target-def.h (TARGET_CONST_ANCHOR): New macro.
773 (TARGET_INITIALIZER): Use it.
774 * cse.c (CHEAPER): Move it up to the other macros.
775 (insert): Rename this ...
776 (insert_with_costs): ... to this. Add cost parameters. Update
778 (insert): New function. Call insert_with_costs.
779 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
780 find_reg_offset_for_const, try_const_anchors): New functions.
781 (cse_insn): Call try_const_anchors. Adjust cost of src_related
782 when using a const-anchor. Call insert_const_anchors.
783 * config/mips/mips.c (mips_set_mips16_mode): Set
784 targetm.const_anchor.
785 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
787 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
789 * tree-inline.c (remap_decls): Enable nonlocalized variables
792 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
794 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
795 Simplify other tests involving optimize.
797 2009-05-27 Tom Tromey <tromey@redhat.com>
799 * unwind-dw2.c (_Unwind_DebugHook): New function.
800 (uw_install_context): Call _Unwind_DebugHook.
802 2009-05-27 Tom Tromey <tromey@redhat.com>
804 * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
806 2009-05-27 Ian Lance Taylor <iant@google.com>
808 * Makefile.in (LINKER, LINKER_FLAGS): Define.
809 (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
810 (ALL_LINKERFLAGS): Define.
811 (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
812 (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
813 (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
814 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
815 (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
817 (build/gcov-iov$(build_exeext)): Likewise.
819 2009-05-27 Julian Brown <julian@codesourcery.com>
821 * gcse.c (target.h): Include.
822 (can_assign_to_reg_without_clobbers_p): Check that the target allows
823 copy of argument to a pseudo register.
825 2009-05-27 Diego Novillo <dnovillo@google.com>
827 * tree-ssa-live.c (dump_scope_block): Document arguments.
828 (dump_scope_blocks): Document.
829 (debug_scope_blocks): New.
830 * tree-flow.h (debug_scope_blocks): Declare.
832 2009-05-21 Denis Chertykov <denisc@overta.ru>
834 * doc/contrib.texi (Contributors): add myself to the list.
836 2009-05-27 Olivier Hainque <hainque@adacore.com>
838 * expr.c (target_align): New function. Alignment the TARGET of an
839 assignment may be assume to have.
840 (highest_pow2_factor_for_target): Use it instead of relying on
841 immediate tree attributes of TARGET, not necessarily honored when
842 intermediate bitfields are involved.
844 2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
847 * config/i386/driver-i386.c (host_detect_local_cpu): Support
848 AVX, SSE4, AES, PCLMUL and POPCNT.
850 2009-05-27 Diego Novillo <dnovillo@google.com>
852 * tree-pretty-print.c (dump_location): New.
853 (dump_generic_node): Call it.
854 Factor code to handle BLOCK nodes ...
855 (dump_block_node): ... here.
857 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
859 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
861 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
863 * gcc-plugin.h: Include config.h and system.h.
864 (IN_GCC): Define if not defined.
866 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
869 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
872 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
874 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
876 * config/m32r/m32r.h: Ditto.
877 * config/m32r/m32r.md: Ditto.
878 * config/m32r/predicates.md: Ditto.
880 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
882 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
884 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
887 (Loading plugins): typo.
888 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
889 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
890 (Interacting with the GCC Garbage Collector): Added new section.
891 (Giving information about a plugin): Added new section for
893 * ggc.h (ggc_register_root_tab): Added declaration.
894 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
895 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
896 (register_callback): Improved comment in declaration.
897 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
899 (extra_root_vec) Added static variable for dynamic roots
901 (ggc_register_root_tab) Added new routine.
902 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
903 PLUGIN_GGC_MARKING event.
904 * ggc-zone.c: Include plugin.h.
905 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
906 * ggc-page.c: Include plugin.h.
907 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
908 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
909 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
910 (register_callback): check lack of callbacks for
911 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
912 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
913 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
914 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
915 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
916 dependency on plugin.h.
917 (plugin.o): Added dependency on ggc.h...
919 2009-05-26 Richard Guenther <rguenther@suse.de>
923 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
924 with mismatched comparison modes.
926 * expr.c (expand_expr_real_1): Expand the operand of a
927 VIEW_CONVERT_EXPR in its natural mode.
929 2009-05-26 Ian Lance Taylor <iant@google.com>
931 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
932 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
933 (ALL_COMPILERFLAGS): Define.
934 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
935 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
936 (collect2$(exeext), collect2.o): Likewise.
937 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
938 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
939 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
940 (libbackend.o, intl.o, cppdefault.o): Likewise.
941 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
942 (build/%.o): Use $(COMPILER_FOR_BUILD).
943 (build/gen%$(build_exeext)): Likewise.
944 (build/gcov-iov$(build_exeext)): LIkewise.
945 * config/t-darwin (darwin.o): Use $(COMPILER).
946 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
947 * config/t-sol2 (sol2-c.o): Likewise.
949 * config/t-vxworks (vxworks.o): Likewise.
950 * config/x-darwin (host-darwin.o): Likewise.
951 * config/x-hpux (host-hpux.o): Likewise.
952 * config/x-linux (host-linux.o): Likewise.
953 * config/x-solaris (host-solaris.o): Likewise.
954 * config/alpha/x-alpha (driver-alpha.o): Likewise.
955 * config/arm/t-arm (arm-c.o): Likewise.
956 * config/arm/t-pe (pe.o): Likewise.
957 * config/arm/t-wince-pe (pe.o): Likewise.
958 * config/i386/t-cygming (winnt.o): Likewise.
959 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
960 * config/i386/t-cygwin (cygwin1.o): Likewise.
961 (cygwin2.o): Likewise.
962 * config/i386/t-i386 (i386-c.o): Likewise.
963 * config/i386/t-interix (winnt.o): Likewise.
964 * config/i386/t-netware (netware.o): Likewise.
965 * config/i386/t-nwld (nwld.o): Likewise.
966 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
967 * config/i386/x-i386 (driver-i386.o): Likewise.
968 * config/i386/x-cygwin (host-cygwin.o): Likewise.
969 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
970 * config/ia64/t-ia64 (ia64-c.o): Likewise.
971 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
972 * config/mips/x-native (driver-native.o): Likewise.
973 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
974 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
975 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
976 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
977 * config/score/t-score-elf (score7.o): Likewise.
978 (score3.o): Likewise.
979 * config/sh/t-sh (sh-c.o): Likewise.
980 * config/sh/t-symbian (sh-c.o): Likewise.
981 (symbian.o): Likewise.
982 * config/spu/t-spu-elf (spu-c.o): Likewise.
983 * config/v850/t-v850 (v850-c.o): Likewise.
984 * config/v850/t-v850e (v850-c.o): Likewise.
986 2009-05-26 Richard Guenther <rguenther@suse.de>
988 PR tree-optimization/40122
989 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
990 VECTOR_CSTs if possible.
991 (fold_gimple_assign): Likewise.
993 2009-05-26 Richard Guenther <rguenther@suse.de>
996 * fold-const.c (fold_binary): Use the correct types for building
999 2009-05-26 Richard Guenther <rguenther@suse.de>
1001 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1002 redundant calls to merge_alias_info.
1003 (bump_vector_ptr): Likewise.
1004 * tree-ssa-copy.c (merge_alias_info): Remove.
1005 (replace_exp_1): Remove call to merge_alias_info.
1006 (propagate_tree_value): Likewise.
1007 (fini_copy_prop): Propagate points-to info.
1008 * tree-flow.h (merge_alias_info): Remove.
1010 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
1012 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1014 2009-05-25 Jan Hubicka <jh@suse.cz>
1016 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1017 * cgraph.h (struct inline_summary): New filed self_wize,
1018 size_inlining_benefit, self_time and time_inlining_benefit.
1019 (struct cgraph_global_info): Replace insns by time ans size fields.
1020 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1021 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1022 (ipcp_update_callgraph): Do not touch function bodies.
1023 * ipa-inline.c: Include except.h
1024 (MAX_TIME): New constant.
1025 (overall_insns): Remove.
1027 (overall_size, max_benefit): New static variables.
1028 (cgraph_estimate_time_after_inlining): New function.
1029 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1030 (cgraph_clone_inlined_nodes): Update size.
1031 (cgraph_mark_inline_edge): Update size.
1032 (cgraph_estimate_growth): Use size info.
1033 (cgraph_check_inline_limits): Check size.
1034 (cgraph_default_inline_p): Likewise.
1035 (cgraph_edge_badness): Compute badness based on benefit and size cost.
1036 (cgraph_decide_recursive_inlining): Check size.
1037 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1039 (cgraph_decide_inlining): Likewise.
1040 (cgraph_decide_inlining_incrementally): Likewise; honor
1041 PARAM_EARLY_INLINING_INSNS.
1042 (likely_eliminated_by_inlining_p): New predicate.
1043 (estimate_function_body_sizes): New function.
1044 (compute_inline_parameters): Use it.
1045 * except.c (must_not_throw_labels): New function.
1046 * except.h (must_not_throw_labels): Declare.
1047 * tree-inline.c (init_inline_once): Kill inlining_weigths
1048 * tree-ssa-structalias.c: Avoid uninitialized warning.
1049 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1050 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1051 (PARAM_INLINE_CALL_COST): Remove.
1052 (PARAM_EARLY_INLINING_INSNS): New.
1054 2009-05-25 Richard Guenther <rguenther@suse.de>
1056 PR tree-optimization/36327
1057 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1058 callback for reference translation or lookup at the point
1060 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1061 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1062 for union COMPONENT_REFs.
1063 (vn_reference_lookup_3): New callback. Lookup from memset
1064 and CONSTRUCTOR assignment, translate through struct copies.
1065 (vn_reference_lookup_pieces): Make sure to not free the
1066 passed operands array. Adjust walk_non_aliased_vuses call.
1067 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1068 make sure we do not leak memory.
1070 2009-05-25 Richard Guenther <rguenther@suse.de>
1072 * tree-ssa-alias.h (dump_points_to_solution): Declare.
1073 * tree-inline.c (expand_call_inline): Reset the escaped and
1075 * tree-ssa-structalias.c (pass_build_ealias): New.
1076 * tree-pass.h (pass_build_ealias): Declare.
1077 * passes.c (init_optimization_passes): Add PTA during
1078 early optimizations.
1079 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1080 and CALLUSED solutions.
1081 (dump_points_to_solution): New function, split out from ...
1082 (dump_points_to_info_for): ... here.
1083 * tree-parloops.c (parallelize_loops): Reset the escaped and
1086 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
1089 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1090 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1092 2009-05-25 Ira Rosen <irar@il.ibm.com>
1094 PR tree-optimization/40238
1095 * tree-vect-stmts.c (vect_init_vector): Insert initialization
1096 statements after basic block's labels.
1097 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
1098 to free the allocated memory.
1100 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
1102 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1103 return address with a USE.
1105 2009-05-24 Richard Guenther <rguenther@suse.de>
1108 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1109 array type from the main variant of the inner type.
1111 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
1113 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1114 definition to bool (from int) to un-break build.
1115 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1117 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
1119 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1120 discard_stmt_changes): Delete.
1121 * tree-ssa-operands.c (scb_stack): Delete.
1122 (init_ssa_operands): Do not initialize it.
1123 (fini_ssa_operands): Do not free it.
1124 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1126 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
1127 update_stmt, remove the others. Fix comments.
1128 * tree-dfa.c (optimize_stack_restore): Likewise.
1129 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1130 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1131 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1132 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1134 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1135 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1136 (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
1137 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1138 (stmts_to_rescan): Change item type to gimple.
1139 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1141 2009-05-24 Ira Rosen <irar@il.ibm.com>
1143 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1144 * tree-pass.h (pass_slp_vectorize): New pass.
1145 * params.h (SLP_MAX_INSNS_IN_BB): Define.
1146 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1147 * tree-vectorizer.c (timevar.h): Include.
1148 (user_vect_verbosity_level): Declare.
1149 (vect_location): Fix comment.
1150 (vect_set_verbosity_level): Update user_vect_verbosity_level
1151 instead of vect_verbosity_level.
1152 (vect_set_dump_settings): Add an argument. Ignore user defined
1153 verbosity if dump flags require higher level of verbosity. Print to
1154 stderr only for loop vectorization.
1155 (vectorize_loops): Update call to vect_set_dump_settings.
1156 (execute_vect_slp): New function.
1157 (gate_vect_slp): Likewise.
1158 (struct gimple_opt_pass pass_slp_vectorize): New.
1159 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1161 (vec_info_for_bb): New function.
1162 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1163 (VECTORIZATION_ENABLED): New macro.
1164 (SLP_ENABLED, SLP_DISABLED): Likewise.
1165 (vect_is_simple_use): Add bb_vec_info argument.
1166 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1167 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1168 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1169 vect_schedule_slp, vect_analyze_slp): Likewise.
1170 (vect_analyze_stmt): Add slp_tree argument.
1171 (find_bb_location): Declare.
1172 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1173 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1174 (vect_analyze_loop_operations, vect_analyze_loop,
1175 get_initial_def_for_induction, vect_create_epilog_for_reduction,
1176 vect_finalize_reduction, vectorizable_reduction,
1177 vectorizable_live_operation, vect_transform_loop): Likewise.
1178 * tree-data-ref.c (dr_analyze_innermost): Update comment,
1179 skip evolution analysis if analyzing a basic block.
1180 (dr_analyze_indices): Likewise.
1181 (initialize_data_dependence_relation): Skip the test whether the
1182 object is invariant for basic blocks.
1183 (compute_all_dependences): Skip dependence analysis for data
1184 references in basic blocks.
1185 (find_data_references_in_stmt): Don't fail in case of invariant
1186 access in basic block.
1187 (find_data_references_in_bb): New function.
1188 (find_data_references_in_loop): Move code to
1189 find_data_references_in_bb and add a call to it.
1190 (compute_data_dependences_for_bb): New function.
1191 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1192 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1194 (vect_analyze_data_ref_dependence): Check for interleaving in case of
1195 unknown dependence in basic block and fail in case of dependence in
1197 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1198 dependence instances from either loop or basic block vectorization
1200 (vect_compute_data_ref_alignment): Check if it is loop vectorization
1201 before calling nested_in_vect_loop_p.
1202 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1203 dependence instances from either loop or basic block vectorization
1205 (vect_verify_datarefs_alignment): Likewise.
1206 (vect_enhance_data_refs_alignment): Adjust function calls.
1207 (vect_analyze_data_refs_alignment): Likewise.
1208 (vect_analyze_group_access): Fix printing. Skip different checks if
1209 DR_STEP is 0. Keep strided stores either in loop or basic block
1210 vectorization data structure. Fix indentation.
1211 (vect_analyze_data_ref_access): Fix comments, allow zero step in
1213 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1214 dependence instances from either loop or basic block vectorization
1216 (vect_analyze_data_refs): Update comment. Call
1217 compute_data_dependences_for_bb to analyze basic blocks.
1218 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1219 case of loop vectorization. In case of basic block vectorization use
1220 data-ref itself as a base.
1221 (vect_create_data_ref_ptr): In case of basic block vectorization:
1222 don't advance the pointer, add new statements before the current
1223 statement. Adjust function calls.
1224 (vect_supportable_dr_alignment): Support only aligned accesses in
1225 basic block vectorization.
1226 * common.opt (ftree-slp-vectorize): New flag.
1227 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1228 (vect_pattern_recog_1): Likewise.
1229 * tree-vect-stmts.c (process_use): Likewise.
1230 (vect_init_vector): Add new statements in the beginning of the basic
1231 block in case of basic block SLP.
1232 (vect_get_vec_def_for_operand): Adjust function calls.
1233 (vect_finish_stmt_generation): Likewise.
1234 (vectorizable_call): Add assert that it is loop vectorization, adjust
1236 (vectorizable_conversion, vectorizable_assignment): Likewise.
1237 (vectorizable_operation): In case of basic block SLP, take
1238 vectorization factor from statement's type and skip the relevance
1239 check. Adjust function calls.
1240 (vectorizable_type_demotion): Add assert that it is loop
1241 vectorization, adjust function calls.
1242 (vectorizable_type_promotion): Likewise.
1243 (vectorizable_store): Check for outer loop only in case of loop
1244 vectorization. Adjust function calls. For basic blocks, skip the
1245 relevance check and don't advance pointers.
1246 (vectorizable_load): Likewise.
1247 (vectorizable_condition): Add assert that it is loop vectorization,
1248 adjust function calls.
1249 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1250 that it is not reduction, get vector type, call only supported
1251 functions, skip loop specific parts.
1252 (vect_transform_stmt): Check for outer loop only in case of loop
1254 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1255 (vect_is_simple_use): Fix comment, add new argument, fix conditions
1256 for external definition.
1257 * passes.c (pass_slp_vectorize): New pass.
1258 * tree-vect-slp.c (find_bb_location): New function.
1259 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1260 check for patterns only in loops.
1261 (vect_build_slp_tree): Add argument, adjust function calls, fail in
1262 case of multiple types in basic block SLP.
1263 (vect_mark_slp_stmts_relevant): New function.
1264 (vect_supported_load_permutation_p): Fix comment.
1265 (vect_analyze_slp_instance): Add argument. In case of basic block
1266 SLP, take vectorization factor from statement's type, check that
1267 unrolling factor is 1. Adjust function call. Save SLP instance in
1268 either loop or basic block vectorization structure. Return FALSE,
1270 (vect_analyze_slp): Add argument. Get strided stores groups from
1271 either loop or basic block vectorization structure. Return FALSE
1272 if basic block SLP failed.
1273 (new_bb_vec_info): New function.
1274 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1275 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1276 (vect_schedule_slp): Add argument. Get SLP instances from either
1277 loop or basic block vectorization structure. Set vectorization factor
1278 to be 1 for basic block SLP.
1279 (vect_slp_transform_bb): New function.
1280 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1282 2009-05-23 Mark Mitchell <mark@codesourcery.com>
1284 * final.c (shorten_branches): Do not align labels for jump tables.
1285 (final_scan_insn): Use JUMP_TABLE_DATA_P.
1287 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
1289 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1290 Remove outdated reference to flow.c and fix nits.
1291 * doc/gccint.texi: Tweak RTL description.
1292 * doc/rtl.texi: Likewise.
1294 2009-05-23 Denis Chertykov <chertykov@gmail.com>
1296 * config/avr/avr.c: Change my email address.
1297 * config/avr/avr.h: Likewise.
1298 * config/avr/avr.md: Likewise.
1299 * config/avr/avr-protos.h: Likewise.
1300 * config/avr/libgcc.S: Likewise.
1302 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1304 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1305 (spu_split_load, spu_split_store): Change return type to int.
1306 (spu_split_convert): Declare.
1307 * config/spu/predicates.md (spu_mem_operand): Remove.
1308 (spu_mov_operand): Update.
1309 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1310 * config/spu/spu.c (regno_aligned_for_load): Remove.
1311 (reg_aligned_for_addr, spu_expand_load): Define.
1312 (spu_expand_extv): Reimplement and handle MEM.
1313 (spu_expand_insv): Handle MEM.
1314 (spu_sched_reorder): Handle insn's with length 0.
1315 (spu_legitimate_address_p): Reimplement.
1316 (store_with_one_insn_p): Return TRUE for any mode with size
1317 larger than 16 bytes.
1318 (address_needs_split): Define.
1319 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1321 (spu_convert_move): Define.
1322 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1323 (spu_split_store): Change all MEM's to TImode.
1324 (spu_init_expanders): Preallocate registers that correspond to
1325 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1327 (spu_split_convert): Define.
1328 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1329 (_move<mode>, _movdi, _movti): Update predicate and condition.
1330 (load, store): Change to define_split.
1331 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1333 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1334 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1335 define_insn_and_split of lshr<mode>3.
1336 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1337 (<v>ashr<mode>3_imm): Define.
1338 (extv, extzv, insv): Allow MEM operands.
1339 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1340 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1341 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1342 (_spu_convert2): Change to define_insn_and_split and remove the
1343 corresponding define_peephole2.
1344 (stack_protect_set, stack_protect_test, stack_protect_test_si):
1345 Change predicates to memory_operand.
1347 2009-05-22 Mark Mitchell <mark@codesourcery.com>
1349 * config/arm/thumb2.md: Add 16-bit multiply instructions.
1351 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
1353 PR tree-optimization/40219
1354 * tree.c (iterative_hash_expr): Make sure the builtin function is
1355 a normal builtin function and not a front end or back end builtin
1356 before indexing into the built_in_decls array.
1358 2009-05-22 Richard Guenther <rguenther@suse.de>
1361 * alias.c (write_dependence_p): Do not use TBAA for answering
1362 anti-dependence or output-dependence.
1363 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1364 (emit_pointer_definition): Remove.
1365 (emit_alias_warning): Likewise.
1366 (find_what_var_points_to): Remove TBAA pruning code.
1367 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
1369 (compute_points_to_sets): Remove code computing the set of
1370 dereferenced pointers.
1371 * tree-data-ref.c (dr_may_alias_p): Properly use the split
1372 oracle for querying anti and output dependencies.
1373 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1374 if TBAA may be applied.
1375 (refs_anti_dependent_p): New function.
1376 (refs_output_dependent_p): Likewise.
1377 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1378 (refs_output_dependent_p): Likewise.
1379 * doc/tree-ssa.texi (Memory model): New section.
1380 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1381 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1382 * cfgexpand.c (expand_gimple_basic_block): Do not handle
1383 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1384 * expr.c (expand_expr_real_1): Likewise.
1385 * gimple-low.c (lower_stmt): Likewise.
1386 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1387 (dump_gimple_cdt): Remove.
1388 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1389 (gimple_size): Likewise.
1390 (walk_gimple_op): Likewise.
1391 (is_gimple_stmt): Likewise.
1392 (walk_stmt_load_store_addr_ops): Likewise.
1393 (gimple_build_cdt): Remove.
1394 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1395 * gimple.h (gimple_cdt_new_type): Remove.
1396 (gimple_cdt_new_type_ptr): Likewise.
1397 (gimple_cdt_set_new_type): Likewise.
1398 (gimple_cdt_location): Likewise.
1399 (gimple_cdt_location_ptr): Likewise.
1400 (gimple_cdt_set_location): Likewise.
1401 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1402 * tree-cfg.c (remove_useless_stmts_1): Do not handle
1403 GIMPLE_CHANGE_DYNAMIC_TYPE.
1404 (verify_types_in_gimple_stmt): Likewise.
1405 * tree-inline.c (estimate_num_insns): Likewise.
1406 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1407 (copy_decl_to_var): Likewise.
1408 (copy_result_decl_to_var): Likewise.
1409 * tree-pretty-print.c (dump_generic_node): Do not handle
1410 CHANGE_DYNAMIC_TYPE_EXPR.
1411 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1412 * tree-ssa-operands.c (get_expr_operands): Likewise.
1413 * tree-ssa-structalias.c (struct variable_info): Remove
1414 no_tbaa_pruning member.
1415 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1416 (unify_nodes): Do not copy it.
1417 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1418 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1419 (set_uids_in_ptset): Do not check it.
1420 (find_what_var_points_to): Likewise.
1421 (compute_tbaa_pruning): Remove.
1422 (compute_points_to_sets): Do not call it.
1423 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1424 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1425 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1426 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1427 (DECL_NO_TBAA_P): Likewise.
1428 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1429 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1430 (expand_omp_atomic_pipeline): Do not set it.
1431 * print-tree.c (print_node): Do not dump it.
1432 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1435 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1438 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1441 2009-05-22 Mark Mitchell <mark@codesourcery.com>
1443 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1446 2009-05-22 Ben Elliston <bje@au.ibm.com>
1448 * Makefile.in (bversion.h, s-bversion): New targets.
1449 (TOPLEV_H): Add bversion.h.
1450 * toplev.h: Include "bversion.h".
1451 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1452 the __format__ attribute only if compiling with the same version
1453 of GCC as the sources (the "build version").
1455 2009-05-22 Ben Elliston <bje@au.ibm.com>
1457 * c-format.c (handle_format_attribute): Fix comment typo.
1459 2009-05-21 Steve Ellcey <sje@cup.hp.com>
1462 * config/ia64/ia64.opt (mfused-madd): New.
1463 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1464 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1465 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1466 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1467 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1468 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1469 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1470 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
1471 instruction if !TARGET_FUSED_MADD.
1472 (fpma, fpms): Remove colon from name.
1474 2009-05-22 Richard Guenther <rguenther@suse.de>
1476 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1477 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
1478 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1480 (create_expression_by_pieces): Only convert if necessary.
1481 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1482 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1484 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
1486 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1487 regular pattern from a template and rename it ...
1488 (*extzv_truncsi_exts): ... to this.
1490 2009-05-21 Richard Guenther <rguenther@suse.de>
1492 * cgraph.h (struct cgraph_node): Remove inline_decl member.
1493 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1494 (cgraph_default_inline_p): Likewise.
1495 (cgraph_decide_inlining_incrementally): Likewise.
1497 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
1498 Uros Bizjak <ubizjak@gmail.com>
1500 * config/i386/cpuid.h (bit_MOVBE): New.
1502 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1504 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1505 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1506 (ix86_handle_option): Handle OPT_mmovbe.
1507 (ix86_target_string): Add -mmovbe.
1508 (pta_flags): Add PTA_MOVBE.
1509 (processor_alias_table): Add PTA_MOVBE to "atom".
1510 (override_options): Handle PTA_MOVBE.
1512 * config/i386/i386.h (TARGET_MOVBE): New.
1514 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1515 (*bswapsi_movbe): New.
1516 (*bswapdi_movbe): Likewise.
1517 (bswapdi2): Renamed to ...
1519 (bswapdi2): New expander.
1521 * config/i386/i386.opt (mmovbe): New.
1523 * doc/invoke.texi: Document -mmovbe.
1525 2009-05-21 Taras Glek <tglek@mozilla.com>
1527 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1528 * gcc-plugin.h (plugin_init): Updated signature.
1529 * gcc-plugin.h (plugin_name_args): Moved to this header.
1530 * doc/plugins.texi (plugin_init): Updated documention to reflect
1532 * doc/plugins.texi (plugin_name_args): Added to documention.
1534 2009-05-21 Mark Mitchell <mark@codesourcery.com>
1536 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1537 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1539 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
1541 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1542 JUMP_TABLE_DATA_P predicates where applicable.
1543 * config/i386/predicates.md: Ditto.
1544 * config/i386/sse.md: Ditto.
1546 2009-05-21 Jakub Jelinek <jakub@redhat.com>
1548 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1549 operand2 -128 override length_immediate attribute to 1.
1550 * config/i386/predicates.md (constm128_operand): New predicate.
1552 * config/i386/i386.c (memory_address_length): Handle %r12
1553 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
1555 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1556 mode look through optional ZERO_EXTEND and SUBREG.
1557 * config/i386/i386.md (R12_REG): New define_constant.
1558 (prefix_data16): For sse unit set also for MODE_TI insns.
1559 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
1560 insns set if operand 1 is ext_QIreg_operand.
1561 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
1562 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1564 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1565 mode from MODE_DI to MODE_SI.
1566 (movdi_1_rex64): Override modrm and length_immediate attributes
1567 only for movabs (TYPE_IMOV, alternative 2).
1568 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1569 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1570 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1571 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1572 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1573 prefix_rex attribute if DImode.
1574 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1575 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1576 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1577 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1578 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1579 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1580 Likewise. For TYPE_IMOV clear length_immediate attribute.
1581 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1582 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1583 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1584 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1585 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1586 or one operand TYPE_ISHIFT.
1587 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1588 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1589 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1590 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1591 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1592 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1593 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1594 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1595 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1596 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1597 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1598 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1599 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1600 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1601 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1602 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1603 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1604 set mode attribute, don't override length attribute.
1605 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1607 (return_internal_long): Set length attribute to 2 instead of 1.
1608 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1609 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1610 prefix_rex attribute.
1611 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1613 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1615 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1617 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1619 2009-05-20 Ian Lance Taylor <iant@google.com>
1621 * tree.c (build_tree_list_vec_stat): New function.
1622 (ctor_to_vec): New function.
1623 (build_nt_call_vec): New function.
1624 (build_call_array): Change args to be a const pointer.
1625 (build_call_vec): New function.
1626 * tree.h (build_nt_call_vec): Declare.
1627 (build_tree_list_vec_stat): Declare.
1628 (build_tree_list_vec): Define.
1629 (build_call_array): Update declaration.
1630 (build_call_vec): Declare.
1631 (ctor_to_vec): Declare.
1632 * c-common.c (tree_vector_cache): New static variable.
1633 (make_tree_vector): New function.
1634 (release_tree_vector): New function.
1635 (make_tree_vector_single): New function.
1636 (make_tree_vector_copy): New function.
1637 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1638 (make_tree_vector_single, make_tree_vector_copy): Declare.
1639 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1640 (c_parser_expr_list): Don't manage cache here, instead call
1642 (c_parser_release_expr_list): Remove static function.
1643 (c_parser_vec_to_tree_list): Remove static function.
1644 (c_parser_attributes): Call build_tree_list_vec instead of
1645 c_parser_vec_to_tree_list. Call release_tree_vector instead of
1646 c_parser_release_expr_list.
1647 (c_parser_postfix_expression_after_primary): Likewise.
1648 (c_parser_objc_keywordexpr): Likewise.
1650 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
1652 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1653 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1654 TARGET_CONVERT_TO_TYPE.
1655 * hooks.c (hook_tree_const_tree_null): Define.
1656 * hooks.h (hook_tree_const_tree_null): Declare.
1657 * target.h (struct gcc_target): Add invalid_parameter_type,
1658 invalid_return_type, promoted_type, and convert_to_type fields.
1659 * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1660 (TARGET_INVALID_RETURN_TYPE): Define.
1661 (TARGET_PROMOTED_TYPE): Define.
1662 (TARGET_CONVERT_TO_TYPE): Define.
1663 (TARGET_INITIALIZER): Update for new fields.
1664 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1665 (grokparms): Check targetm.invalid_parameter_type.
1666 * c-typeck.c (default_conversion): Check targetm.promoted_type.
1667 * c-convert.c (convert): Check targetm.convert_to_type.
1669 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
1671 * config/mips/mips.md (*extenddi_truncate<mode>,
1672 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
1674 (*extendhi_truncateqi): New define_insn_and_sptit.
1676 2009-05-20 Jakub Jelinek <jakub@redhat.com>
1679 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1680 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1682 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
1684 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1685 the operand of VIEW_CONVERT_EXPR.
1687 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
1689 * config/i386/driver-i386.c (host_detect_local_cpu): Check
1690 extended family and model for Intel processors. Support Intel
1693 2009-05-20 Olivier Hainque <hainque@adacore.com>
1695 * gstab.h (stab_code_type): Define, to be used instead of the
1696 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
1698 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1699 occurrences by stab_code_type.
1700 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1702 2009-05-20 Martin Jambor <mjambor@suse.cz>
1704 * tree-flow.h (insert_edge_copies_seq): Undeclare.
1705 (sra_insert_before): Likewise.
1706 (sra_insert_after): Likewise.
1707 (sra_init_cache): Likewise.
1708 (sra_type_can_be_decomposed_p): Likewise.
1709 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1710 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1711 (sra_insert_before): Likewise.
1712 (sra_insert_after): Likewise.
1713 (sra_init_cache): Likewise.
1714 (insert_edge_copies_seq): Made static and moved upwards.
1716 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1719 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1721 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1722 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1725 2009-05-20 Richard Guenther <rguenther@suse.de>
1727 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1728 with mismatched comparison modes.
1730 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1732 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1733 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1734 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1735 with shifts for Thumb2.
1736 (orsi_notsi): New for orn.
1737 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1738 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1739 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1740 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1741 Don't invert remainder for IOR.
1743 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
1745 PR tree-optimization/40087
1746 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1747 number_of_iterations_ne): Rename never_infinite argument.
1748 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1749 number_of_iterations_le): Handle pointer-type ivs when
1750 exit_must_be_taken is false.
1751 (number_of_iterations_cond): Do not always assume that
1752 exit_must_be_taken if the control variable is a pointer.
1754 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
1756 * c-typeck.c (build_binary_op): Allow % on integal vectors.
1757 * doc/extend.texi (Vector Extension): Document that % is allowed too.
1759 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
1761 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1762 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1764 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
1767 * c.opt (Wlogical-op): Disabled by default.
1768 * c-opt (c_common_post_options): Do not enable Wlogical-op with
1770 * doc/invoke.texi (Wlogical-op): Likewise.
1772 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
1774 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1776 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1777 Propagate the type of the first operand.
1778 <ASSERT_EXPR>: Simplify.
1779 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1780 Rewrite using the RHS code as discriminant.
1781 <NOP_EXPR>: Turn into CASE_CONVERT.
1782 <PLUS_EXPR>: Propagate the type of the first operand.
1784 2009-05-19 Steve Ellcey <sje@cup.hp.com>
1786 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1787 (ia64_dconst_0_375): New.
1788 * config/ia64/ia64.c (ia64_override_options): Remove
1789 -minline-sqrt-min-latency warning.
1790 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1791 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1792 * config/ia64/ia64.md (*sqrt_approx): Remove.
1793 (sqrtsf2): Remove #if 0.
1794 (sqrtsf2_internal_thr): Rewrite and move to div.md.
1795 (sqrtdf): Remove assert.
1796 (sqrtdf2_internal_thr): Rewrite and move to div.md.
1797 (sqrtxf2): Remove #if 0.
1798 (sqrtxf2_internal_thr): Rewrite and move to div.md.
1799 * div.md (sqrt_approx_rf): New.
1800 (sqrtsf2_internal_thr): New implementation.
1801 (sqrtsf2_internal_lat): New.
1802 (sqrtdf2_internal_thr: New implementation.
1803 (sqrtxf2_internal): New implementation.
1805 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
1806 Hans-Peter Nilsson <hp@axis.com>
1808 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1809 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1810 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1811 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1812 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1813 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1814 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1815 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1816 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1817 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1818 * c-common.c: ...from here.
1820 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
1822 * c-common.c (warn_logical_operator): Remove unnecessary
1825 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1827 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1829 2009-05-19 Ben Elliston <bje@au.ibm.com>
1831 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1832 assignments with memcpy calls.
1833 (add_fdes): Likewise.
1834 (binary_search_unencoded_fdes): Likewise.
1835 (linear_search_fdes): Eliminate type puns.
1837 2009-05-19 Richard Guenther <rguenther@suse.de>
1839 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1840 not falsely claim to have propagated into all uses.
1842 2009-05-19 Ben Elliston <bje@au.ibm.com>
1844 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1847 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1849 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1850 * config/sh/sh.c (sh_legitimate_address_p): Make static.
1851 (TARGET_LEGITIMATE_ADDRESS_P): New.
1852 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1853 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1855 2009-05-18 Dodji Seketeli <dodji@redhat.com>
1858 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1859 child of the containing namespace's DIE.
1861 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
1863 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1864 *zero_extendhi_truncqi): Move after the zero_extend patterns.
1865 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1868 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
1871 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1872 gen_align with gen_pad.
1873 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1874 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1876 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1877 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1879 * config/i386/i386.md (align): Renamed to ...
1880 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1881 ASM_OUTPUT_MAX_SKIP_PAD.
1883 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
1885 * config.gcc: Fix variable syntax.
1888 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1889 before calling exact_log2.
1890 (output_iorsi3): Likewise.
1891 (output_xorsi3): Likewise.
1893 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1895 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1896 for the none zero constant operand except for EQ and NE
1897 comprisons even when the first operand is R0.
1899 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
1901 * config/s390/2064.md: Remove trailing whitespaces.
1902 * config/s390/2084.md: Likewise.
1903 * config/s390/constraints.md: Likewise.
1904 * config/s390/fixdfdi.h: Likewise.
1905 * config/s390/libgcc-glibc.ver: Likewise.
1906 * config/s390/s390-modes.def: Likewise.
1907 * config/s390/s390-protos.h: Likewise.
1908 * config/s390/s390.c: Likewise.
1909 * config/s390/s390.h: Likewise.
1910 * config/s390/s390.md: Likewise.
1911 * config/s390/tpf-unwind.h: Likewise.
1913 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1915 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1917 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1920 * configure.ac (m68k-*-*): Check if binutils support TLS.
1921 * configure: Regenerate.
1922 * config/m68k/predicates.md (symbolic_operand): Extend comment.
1923 * config/m68k/constraints.md (Cu): New constraint.
1924 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1925 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1926 (movsi): Handle TLS symbols.
1927 (addsi3_5200): Handle XTLS symbols, indent.
1928 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1929 (m68k_tls_reference_p): Declare.
1930 (m68k_legitimize_address): Declare.
1931 (m68k_unwrap_symbol): Declare.
1932 * config/m68k/m68k.opt (mxtls): New option.
1933 * config/m68k/m68k.c (ggc.h): Include.
1934 (m68k_output_dwarf_dtprel): Implement hook.
1935 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1936 (m68k_expand_prologue): Load GOT pointer when function needs it.
1937 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1938 (m68k_legitimate_constant_address_p): Same.
1939 (m68k_decompose_address): Handle TLS references.
1940 (m68k_get_gp): New static function.
1941 (enum m68k_reloc): New contants.
1942 (TLS_RELOC_P): New macro.
1943 (m68k_wrap_symbol): New static function.
1944 (m68k_unwrap_symbol): New function.
1945 (m68k_final_prescan_insn_1): New static function.
1946 (m68k_final_prescan_insn): New function.
1947 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1949 (legitimize_pic_address): Handle TLS references..
1950 (m68k_tls_get_addr, m68k_get_tls_get_addr)
1951 (m68k_libcall_value_in_a0_p)
1952 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1953 (m68k_call_m68k_read_tp): Helper variables and functions for ...
1954 (m68k_legitimize_tls_address): Handle TLS references.
1955 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1957 (m68k_legitimize_address): Handle TLS symbols.
1958 (m68k_get_reloc_decoration): New static function.
1959 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1961 (m68k_output_dwarf_dtprel): Implement hook.
1962 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1963 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1964 m68k_call_* routines.
1965 (sched_attr_op_type): Handle TLS symbols.
1966 (gt-m68k.h): Include.
1967 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1968 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1970 2009-05-18 Martin Jambor <mjambor@suse.cz>
1972 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1973 (visit_store_addr_for_mod_analysis): New function.
1974 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1975 (determine_cst_member_ptr): Use gimple_assign_single_p.
1976 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1977 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1978 operands. Don't check number of operands of a NOP_EXPR.
1980 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
1982 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1984 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
1987 * c-common.c (warn_logical_operator): Don't warn if one of
1988 expression isn't always true or false.
1990 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
1992 * config/i386/biarch32.h: New file.
1993 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1995 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
1997 * config/mips/mips.md (*zero_extend<mode>_trunchi,
1998 *zero_extend<mode>_truncqi): Merge these into ...
1999 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2000 Name the pattern following this as *zero_extendhi_truncqi.
2002 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
2005 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2006 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2007 (output_info): Make field HOST_WIDEST_INT.
2008 (print_statistics): Use HOST_WIDEST_INT_PRINT.
2009 (dump_bitmat_statistics): Same.
2011 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
2013 * config.gcc (use_gcc_stdint): Set to wrap.
2014 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2015 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2016 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2017 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2018 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2019 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2020 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2021 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2023 2009-05-16 Joseph Myers <joseph@codesourcery.com>
2025 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2027 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2028 Move definitions earlier.
2029 (OPT_ARCH64, OPT_ARCH32): Define.
2030 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2033 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
2036 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2039 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
2041 * arm.md (movdi2): Copy non-reg values to DImode registers.
2043 2009-05-16 Jakub Jelinek <jakub@redhat.com>
2046 * final.c (label_to_max_skip): New function.
2047 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2048 CODE_LABEL_NUMBER <= max_labelno.
2049 * output.h (label_to_max_skip): New prototype.
2050 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2051 (ix86_avoid_jump_mispredicts): ... this. Don't define if
2052 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
2053 Handle CODE_LABELs with >= 16 byte alignment or with
2054 max_skip == (1 << align) - 1.
2055 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2056 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2059 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2060 .p2align 3 if MAX_SKIP is smaller than 7.
2061 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2063 2009-05-15 Ian Lance Taylor <iant@google.com>
2065 * alias.c (struct alias_set_entry_d): Rename from struct
2066 alias_set_entry. Change all uses.
2067 * except.c (struct call_site_record_d): Rename from struct
2068 call_site_record. Change all uses.
2069 * except.h (struct eh_region_d): Rename from struct eh_region.
2071 * gcse.c (struct hash_table_d): Rename from struct hash_table.
2073 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2074 ivtype_map_elt. Change all uses.
2075 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2077 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
2078 * graphite.h (struct name_tree_d): Rename from struct name_tree.
2080 (struct sese_d): Rename from struct sese. Change all uses.
2081 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
2082 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
2083 * optabs.h (struct optab_d): Rename from struct optab. Change all
2085 (struct convert_optab_d): Rename from struct convert_optab.
2087 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2088 ipa_opt_pass. Change all uses.
2089 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
2092 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2093 defined as a typedef.
2094 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2097 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
2100 * fold-const.c (make_range,build_range_check,merge_ranges): Move
2102 (merge_ranges): Returns bool.
2103 * tree.h (make_range): .. to here.
2104 (build_range_check): Likewise.
2105 (merge_ranges): Likewise. Renamed from merge_ranges.
2106 * c-typeck.c (parser_build_binary_op): Update calls to
2107 warn_logical_operator.
2108 * c-common.c (warn_logical_operator): Add new warning.
2109 * c-common.h (warn_logical_operator): Update declaration.
2111 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
2113 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2115 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2117 * doc/install.texi: Document MPC requirements, flags etc.
2119 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2120 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2121 Evaluate constant arguments.
2122 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2123 (fold_builtin_1): Likewise, also evaluate constant arguments.
2124 Remove superfluous break.
2125 (do_mpc_ckconv): New.
2126 * real.h: Include mpc.h.
2127 * toplev.c (print_version): Output MPC version info if available.
2129 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
2131 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2133 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
2135 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2138 2009-05-15 Jan Hubicka <jh@suse.cz>
2140 * doc/invoke.texi (max-early-inliner-iterations): New flag.
2141 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2142 (try_inline): Fix return value.
2143 (cgraph_decide_inlining_incrementally): Honor new value.
2144 (cgraph_early_inlining): Handle indirect inlining.
2145 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2147 2009-05-15 Jan Hubicka <jh@suse.cz>
2149 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2150 * cgraphunit.c (cgraph_finalize_function): Set it.
2151 (cgraph_expand_function): Use it.
2153 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
2155 * real.c (encode_ieee_half): Define.
2156 (decode_ieee_half): Define.
2157 (ieee_half_format): Define.
2158 (arm_half_format): Define.
2159 * real.h (ieee_half_format): Declare.
2160 (arm_half_format): Declare.
2162 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
2164 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
2165 swapped, and reversed optabs exist before trying to use them.
2167 2009-05-15 Paul Brook <paul@codesourcery.com>
2168 Sandra Loosemore <sandra@codesourcery.com>
2170 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2171 loads. Allow PRE_DEC.
2172 (output_move_neon): Handle PRE_DEC.
2173 (arm_print_operand): Add 'A' for neon structure loads.
2174 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2175 * config/arm/neon.md (neon_mov): Update comment.
2176 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2178 (Um): New constraint.
2180 2009-05-15 Jan Hubicka <jh@suse.cz>
2182 Revert the following patch until testsuite fallout is fixed:
2183 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2184 * cgraph.h (struct inline_summary): New filed self_wize,
2185 size_inlining_benefit, self_time and time_inlining_benefit.
2186 (struct cgraph_global_info): Replace insns by time ans size fields.
2187 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2188 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2189 (ipcp_update_callgraph): Do not touch function bodies.
2190 * ipa-inline.c: Include except.h
2191 (MAX_TIME): New constant.
2192 (overall_insns): Remove
2193 (overall_size, max_benefit): New static variables.
2194 (cgraph_estimate_time_after_inlining): New function.
2195 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2196 (cgraph_clone_inlined_nodes): Update size.
2197 (cgraph_mark_inline_edge): Update size.
2198 (cgraph_estimate_growth): Use size info.
2199 (cgraph_check_inline_limits): Check size.
2200 (cgraph_default_inline_p): Likewise.
2201 (cgraph_edge_badness): Compute badness based on benefit and size cost.
2202 (cgraph_decide_recursive_inlining): Check size.
2203 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2205 (cgraph_decide_inlining): Likewise.
2206 (cgraph_decide_inlining_incrementally): Likewise; honor
2207 PARAM_EARLY_INLINING_INSNS.
2208 (likely_eliminated_by_inlining_p): New predicate.
2209 (estimate_function_body_sizes): New function.
2210 (compute_inline_parameters): Use it.
2211 * except.c (must_not_throw_labels): New function.
2212 * except.h (must_not_throw_labels): Declare.
2213 * tree-inline.c (init_inline_once): Kill inlining_weigths
2214 * tree-ssa-structalias.c: Avoid uninitialized warning.
2215 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2216 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2217 (PARAM_INLINE_CALL_COST): Remove.
2218 (PARAM_EARLY_INLINING_INSNS): New.
2220 2009-05-15 Richard Guenther <rguenther@suse.de>
2222 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2223 not TODO_update_ssa.
2225 2009-05-15 Richard Guenther <rguenther@suse.de>
2227 PR tree-optimization/39999
2228 * gimple.h (gimple_expr_type): Use the expression type looking
2229 through useless conversions.
2230 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2231 (vn_nary_op_insert_stmt): Likewise.
2232 (simplify_binary_expression): Likewise.
2234 2009-05-15 Richard Guenther <rguenther@suse.de>
2236 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2237 New options, enabled by default.
2238 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2240 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2241 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2242 * tree-ssa-structalias.c (gate_tree_pta): New function.
2243 (pass_build_alias): Use it.
2245 2009-05-15 Joseph Myers <joseph@codesourcery.com>
2247 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2248 recurse on an invariant address if a conversion from a pointer
2249 type to a wider integer type is involved.
2251 2009-05-15 Jan Hubicka <jh@suse.cz>
2253 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2254 * cgraph.h (struct inline_summary): New filed self_wize,
2255 size_inlining_benefit, self_time and time_inlining_benefit.
2256 (struct cgraph_global_info): Replace insns by time ans size fields.
2257 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2258 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2259 (ipcp_update_callgraph): Do not touch function bodies.
2260 * ipa-inline.c: Include except.h
2261 (MAX_TIME): New constant.
2262 (overall_insns): Remove
2263 (overall_size, max_benefit): New static variables.
2264 (cgraph_estimate_time_after_inlining): New function.
2265 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2266 (cgraph_clone_inlined_nodes): Update size.
2267 (cgraph_mark_inline_edge): Update size.
2268 (cgraph_estimate_growth): Use size info.
2269 (cgraph_check_inline_limits): Check size.
2270 (cgraph_default_inline_p): Likewise.
2271 (cgraph_edge_badness): Compute badness based on benefit and size cost.
2272 (cgraph_decide_recursive_inlining): Check size.
2273 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2275 (cgraph_decide_inlining): Likewise.
2276 (cgraph_decide_inlining_incrementally): Likewise; honor
2277 PARAM_EARLY_INLINING_INSNS.
2278 (likely_eliminated_by_inlining_p): New predicate.
2279 (estimate_function_body_sizes): New function.
2280 (compute_inline_parameters): Use it.
2281 * except.c (must_not_throw_labels): New function.
2282 * except.h (must_not_throw_labels): Declare.
2283 * tree-inline.c (init_inline_once): Kill inlining_weigths
2284 * tree-ssa-structalias.c: Avoid uninitialized warning.
2285 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2286 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2287 (PARAM_INLINE_CALL_COST): Remove.
2288 (PARAM_EARLY_INLINING_INSNS): New.
2289 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2290 (inline-call-cost): Remove.
2291 (early-inlining-insns): New.
2293 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
2295 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
2297 (print_int_cst_bounds_in_octal_p): Likewise.
2298 (dbxout_type): Adjust calls to above functions. Be prepared to deal
2300 * dwarf2out.c (base_type_die): Likewise.
2301 (is_subrange_type): Delete.
2302 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
2303 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2304 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2305 the destination type is boolean.
2306 (build_range_check): Do not special-case subtypes.
2307 (fold_sign_changed_comparison): Likewise.
2308 (fold_unary): Likewise.
2309 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2310 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2311 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2312 * tree.c (subrange_type_for_debug_p): New predicate based on the former
2314 * tree.h (subrange_type_for_debug_p): Declare.
2315 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2316 (convert_affine_scev): Remove call to above function.
2317 (chrec_convert_aggressive): Likewise.
2318 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2319 false for conversions involving subtypes.
2320 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2321 (vrp_val_min): Likewise.
2322 (needs_overflow_infinity): Likewise.
2323 (extract_range_from_unary_expr): Likewise.
2325 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
2327 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2328 * config/frv/frv.c: Likewise.
2329 * config/s390/s390.c: Likewise.
2330 * config/sparc/sparc.h: Likewise.
2331 * config/i386/i386.h: Likewise.
2332 * config/i386/i386.c: Likewise.
2333 * config/crx/crx.c: Likewise.
2334 * config/m68hc11/m68hc11.h: Likewise.
2335 * config/iq2000/iq2000.c: Likewise.
2336 * config/mn10300/mn10300.h: Likewise.
2337 * config/mn10300/mn10300.c: Likewise.
2338 * config/m68k/m68k.c: Likewise.
2339 * config/rs6000/rs6000.c: Likewise.
2340 * config/rs6000/xcoff.h: Likewise.
2341 * config/rs6000/linux64.h: Likewise.
2342 * config/rs6000/sysv4.h: Likewise.
2343 * config/score/score3.c: Likewise.
2344 * config/score/score7.c: Likewise.
2345 * config/score/score.c: Likewise.
2346 * config/arm/arm.md: Likewise.
2347 * config/mips/mips.c: Likewise.
2348 * config/mips/mips.md: Likewise.
2349 * config/bfin/bfin.h: Likewise.
2350 * config/pa/pa.c: Likewise.
2351 * config/pa/constraints.md: Likewise.
2353 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2354 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2355 * config/pdp11/pdp11.h: Use memory_address_p instead.
2357 2009-05-14 Ian Lance Taylor <iant@google.com>
2359 * passes.c (finish_optimization_passes): Change i to int.
2360 * plugin.c (plugins_active_p): Change event to int.
2361 (dump_active_plugins): Likewise.
2362 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2364 * tree.c (tree_range_check_failed): Change c to unsigned int.
2365 (omp_clause_range_check_failed): Likewise.
2366 (build_common_builtin_nodes): Change mode to int. Add cast.
2367 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2368 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2370 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2371 ++ or -- with a variable of enum type.
2373 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2376 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2378 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2380 * store-motion.c: Do not include params.h
2381 * Makefile.in: Fix dependencies for various files.
2383 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2385 * auto-inc-dec.c: Fix pass description, remove apparent
2386 accidental duplication.
2388 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
2391 * ipa-utils.h (memory_identifier_string): Moved to ...
2392 * tree.h (memory_identifier_string): Here. Add GTY(()).
2394 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
2396 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2397 in the former documentation of...
2398 (GO_IF_LEGITIMATE_ADDRESS): ... this.
2399 * ira-conflicts.c (get_dup_num): Use address_operand.
2400 * targhooks.c (default_legitimate_address_p): New.
2401 * targhooks.h (default_legitimate_address_p): New.
2402 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2404 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2405 * target.h (struct target): Add legitimate_address_p.
2406 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2407 (TARGET_INITIALIZER): Include it.
2409 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2410 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2411 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2412 (TARGET_LEGITIMATE_ADDRESS_P): New.
2414 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2415 (REG_OK_STRICT_P): Delete.
2416 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2417 (frv_legitimate_address_p_1): ... this.
2418 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2419 (frv_legitimate_address_p_1): ... the renamed old
2420 frv_legitimate_address_p.
2421 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2422 (TARGET_LEGITIMATE_ADDRESS_P): New.
2424 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2425 * config/s390/s390-protos.h (legitimate_address_p): Remove.
2426 * config/s390/s390.c (legitimate_address_p): Rename to...
2427 (s390_legitimate_address_p): ... this, make static.
2428 (legitimize_address): Adjust call.
2429 (TARGET_LEGITIMATE_ADDRESS_P): New.
2430 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2432 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2433 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2434 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2435 (TARGET_LEGITIMATE_ADDRESS_P): New.
2437 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2438 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2439 * config/spu/spu.c (spu_legitimate_address): Rename to...
2440 (spu_legitimate_address_p): ... this, make static.
2441 (TARGET_LEGITIMATE_ADDRESS_P): New.
2443 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2444 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2445 * config/sparc/sparc.c (legitimate_address_p): Rename to...
2446 (sparc_legitimate_address_p): ... this, make static and return bool.
2447 (legitimize_address): Adjust call.
2448 (TARGET_LEGITIMATE_ADDRESS_P): New.
2450 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2451 * config/i386/i386-protos.h (legitimate_address_p): Remove.
2452 * config/i386/i386.c (legitimate_address_p): Rename to...
2453 (ix86_legitimate_address_p): ... this, make static.
2454 (constant_address_p): Move after it, adjust call.
2455 (TARGET_LEGITIMATE_ADDRESS_P): New.
2457 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2458 * config/avr/avr-protos.h (legitimate_address_p): Remove.
2459 * config/avr/avr.c (legitimate_address_p): Rename to...
2460 (avr_legitimate_address_p): ... this, make static.
2461 (legitimize_address): Adjust call.
2462 (TARGET_LEGITIMATE_ADDRESS_P): New.
2464 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2465 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2466 * config/crx/crx.c (crx_legitimate_address_p): Make static.
2467 (TARGET_LEGITIMATE_ADDRESS_P): New.
2469 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2470 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2471 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2472 (TARGET_LEGITIMATE_ADDRESS_P): New.
2474 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2475 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2477 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2479 (TARGET_LEGITIMATE_ADDRESS_P): New.
2481 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2482 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2484 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2486 (m68hc11_legitimate_address_p): ... this, make static.
2487 (go_if_legitimate_address_internal): Rename to...
2488 (m68hc11_legitimate_address_p_1): ... this.
2489 (legitimize_address): Adjust call.
2490 (TARGET_LEGITIMATE_ADDRESS_P): New.
2492 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2493 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2494 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2495 (TARGET_LEGITIMATE_ADDRESS_P): New.
2497 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2498 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2499 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2500 (mn10300_legitimate_address_p): ... this, make static.
2501 (TARGET_LEGITIMATE_ADDRESS_P): New.
2503 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2504 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2505 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2506 (TARGET_LEGITIMATE_ADDRESS_P): New.
2508 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2509 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2510 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2511 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2512 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2513 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2514 (rs6000_legitimate_address_p): ... this, make static.
2515 (TARGET_LEGITIMATE_ADDRESS_P): New.
2516 (REG_MODE_OK_FOR_BASE_P): Delete.
2517 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2519 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2520 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2522 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2523 static, adjust types.
2524 (TARGET_LEGITIMATE_ADDRESS_P): New.
2526 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2527 * config/score/score.c (score_address_p): Rename to...
2528 (score_legitimate_address_p): ... this.
2529 (TARGET_LEGITIMATE_ADDRESS_P): New.
2530 * config/score/score3.c (score3_address_p): Rename to...
2531 (score3_legitimate_address_p): ... this.
2532 * config/score/score7.c (score7_address_p): Rename to...
2533 (score7_legitimate_address_p): ... this.
2535 * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2536 THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2537 GO_IF_LEGITIMATE_ADDRESS): Delete.
2538 * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2539 thumb2_legitimate_address_p): Delete.
2540 (arm_legitimate_address_p): Rename to...
2541 (arm_legitimate_address_outer_p): ... this.
2542 * config/arm/constraints.md ("Uq"): Adjust call.
2543 * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2544 * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2545 (arm_legitimate_address_outer_p): ... this.
2546 (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2547 (TARGET_LEGITIMATE_ADDRESS_P): New.
2549 * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2550 * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2551 * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2552 (TARGET_LEGITIMATE_ADDRESS_P): New.
2554 * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2555 * config/vax/vax-protos.h (legitimate_address_p): Remove.
2556 * config/vax/vax.c (legitimate_address_p): Rename to...
2557 (vax_legitimate_address_p): ... this, make static.
2558 (TARGET_LEGITIMATE_ADDRESS_P): New.
2560 * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2561 * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2562 * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2563 (TARGET_LEGITIMATE_ADDRESS_P): New.
2565 * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2566 * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2567 * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2568 (mmix_legitimate_address_p): ... this, make static.
2569 (TARGET_LEGITIMATE_ADDRESS_P): New.
2571 * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2572 * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2573 * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2574 (TARGET_LEGITIMATE_ADDRESS_P): New.
2576 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
2578 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2579 of MODE_COMPLEX_INT.
2581 2009-05-14 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2583 * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2584 LCT_NORMAL in function call.
2585 * mips-tdump.c (print_file_desc): Add cast to enum type.
2586 * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2587 (mark_stabs): Add casts to enum types.
2588 (parse_stabs_common): Add casts to enum types.
2590 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
2592 * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2593 Check for invalid values of LETTER.
2595 2009-05-13 Taras Glek <tglek@mozilla.com>
2597 * attribs.c (register_attribute): moved out attribute registration into
2599 * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2600 * gcc-plugin.h: Added forward decl for register_attribute.
2601 * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2602 * plugin.c (register_callback, invoke_plugin_callbacks): Added
2603 PLUGIN_ATTRIBUTES boilerplate.
2605 2009-05-14 Dave Korn <dave.korn.cygwin@gmail.com>
2607 * config/i386/msformat-c.c (ms_printf_length_specs): Use enumeration
2608 values even in sentinel and empty entries.
2609 (ms_printf_flag_specs): Likewise.
2610 (ms_scanf_flag_specs): Likewise.
2611 (ms_strftime_flag_specs): Likewise.
2612 (ms_print_char_table): Likewise.
2613 (ms_scan_char_table): Likewise.
2614 (ms_time_char_table): Likewise.
2616 2009-05-13 Doug Kwan <dougkwan@google.com>
2618 * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2620 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
2622 * config/mips/mips.md (store): Add attributes for QI and HI.
2624 (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2625 (truncdi<mode>2): ... this new pattern.
2627 2009-05-13 Brad Hards <bradh@kde.org>
2629 * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2631 2009-05-14 Jakub Jelinek <jakub@redhat.com>
2632 Ben Elliston <bje@au.ibm.com>
2635 * dse.c (check_mem_read_rtx): Guard against width == -1.
2637 2009-05-13 Michael Matz <matz@suse.de>
2640 * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2641 (trivially_conflicts_p): New function.
2642 (insert_backedge_copies): Use it.
2644 2009-05-13 Janis Johnson <janis187@us.ibm.com>
2646 * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2647 (handle_stdc_pragma): Use new enum constant names.
2648 (handle_pragma_float_const_decimal64): Ditto.
2650 2009-05-13 Ian Lance Taylor <iant@google.com>
2652 * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2655 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
2657 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2658 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2660 * config/m68k/m68k.h (FL_UCLINUX): Define.
2662 2009-05-13 Jan Hubicka <jh@suse.cz>
2664 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2666 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2668 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2669 unless -fschedule-insns is specified.
2671 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2674 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2675 TARGET_EXPAND_CBRANCHDI4.
2676 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2677 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2678 (cmpeqdi): Fix comment.
2680 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2682 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2683 (sh_legitimate_address_p): Likewise.
2684 * config/sh/sh.c (sh_legitimate_index_p): New.
2685 (sh_legitimate_address_p): Likewise.
2686 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2687 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2688 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2689 (MAYBE_BASE_REGISTER_RTX_P): New macro.
2690 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2691 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2692 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2693 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2694 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2696 2009-05-12 Jan Hubicka <jh@suse.cz>
2698 * tree-inline.c (estimate_operator_cost): Add operands;
2699 when division happens by constant, it is cheap.
2700 (estimate_num_insns): Loads and stores are not having cost of 0;
2701 EH magic stuff is cheap; when computing runtime cost of switch,
2702 use log2 base of amount of its cases; builtin_expect has cost of 0;
2703 compute cost for moving return value of call.
2704 (init_inline_once): Initialize time_based flags.
2705 * tree-inline.h (eni_weights_d): Add time_based flag.
2707 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2709 * df-core.c: Update head documentation.
2711 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
2714 * rs6000.c (rs6000_generate_compare): Use op1b instead of
2715 shadowing exisiting variable op1.
2717 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
2720 * config/i386/driver-i386.c (processor_signatures): New enum.
2721 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2722 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2723 processor signature to detect geode processor.
2725 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2729 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2731 * optabs.c (prepare_cmp_insn): Temporarily disable test that
2732 causes spurious differences between trunk and cond-optab branch.
2734 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2736 * dojump.c (compare_from_rtx): Delete.
2737 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
2738 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
2739 if the comparison does not satisfy the predicate; test predicates for
2740 operands 2 and 3 of a cstore pattern. Don't try cstore optab
2741 further if one existing pattern fails.
2742 * expr.h (compare_from_rtx): Delete.
2743 (prepare_operand): Declare it.
2744 * optabs.c: Change "lib call" to "libcall" throughout.
2745 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2746 HAVE_conditional_trap, emit_cmp_insn): Delete.
2747 (can_compare_p): Delete cmp_optab case.
2748 (prepare_float_lib_cmp): Return an rtx and a machine mode.
2749 Accept other parameters by value.
2750 (prepare_operand): Make non-static.
2751 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
2752 other parameters by value. Try to widen operands here based on
2753 an optab_methods argument and looking at cbranch_optab.
2754 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2755 loop. Use cbranch_optab directly.
2756 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
2757 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2759 (emit_conditional_move, emit_conditional_add): Inline what's needed
2760 of compare_from_rtx, using new prepare_cmp_insn for the rest.
2761 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2762 with COMPARE. Move cmov_optab and cstore_optab above
2763 with cbranch_optab, move cmp_optab down with ucmp_optab,
2764 remove tst_otpab. Do not initialize trap_rtx.
2765 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
2766 for trap code. Do not check HAVE_conditional_trap. Use
2767 prepare_cmp_insn. Accept no predicate for operand 3.
2768 * optabs.h (OTI_cmp): Mark as used only for libcalls.
2769 (OTI_ctrap, ctrap_optab): New.
2770 (tst_optab): Delete.
2771 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2772 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2773 with lookup of ctrap_optab.
2774 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2775 setcc_gen_code): Delete.
2778 * combine.c (combine_simplify_rtx, simplify_set): Do not
2779 special case comparing against zero for cc0 machines.
2780 * simplify-rtx.c (simplify_binary_operation_1): Never remove
2781 COMPARE on cc0 machines.
2782 (simplify_relational_operation): Return a new expression when
2783 a COMPARE could be removed.
2784 * final.c (final_scan_insn): Compare cc_status values
2785 against LHS of a (compare FOO (const_int 0)) cc0 source.
2786 Also check if cc_status.value is the full compare.
2788 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2789 (cstoreMM4): Document.
2790 (conditional_trap): Document ctrapMM4 instead.
2791 (sync_compare_and_swapMM): Refer to cbranchcc4.
2792 (Dependent Patterns): Eliminate obsolete information referring to
2793 the old jump optimization phase.
2794 (Canonicalization): Include cbranchcc4 case, omit canonicalization
2795 of compares with 0 on cc0 machines.
2796 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2797 avoiding references to cc0. Remove text about storing operands
2799 * doc/tm.texi (Condition Codes): Include blurb on different
2800 condition code representations, separate into subsections for
2801 CC0, MODE_CC and conditional execution.
2803 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2804 alpha_emit_setcc): Accept operands and a machine mode.
2805 * config/alpha/alpha.c (alpha_emit_conditional_branch):
2806 Get code/op0/op1 from operands, use machine mode argument
2807 instead of alpha_compare.fp_p. Emit the branch here.
2808 (alpha_emit_setcc): Likewise, and return boolean.
2809 (alpha_emit_conditional_move): Likewise. Assert that
2810 cmp_op_mode == cmp_mode, and simplify accordingly.
2811 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2812 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2813 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2815 (stack probe test): Use cbranchdi4.
2816 * config/alpha/predicates.md (alpha_cbranch_operator): New.
2818 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
2819 * config/arc/arc.h (movsicc, movsfcc): Use it.
2820 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2821 (cbranchsi4, cstoresi4): New.
2822 (cmpsi, bCC and sCC expanders): Remove.
2824 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2825 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2826 * config/arm/predicates.md (arm_comparison_operator): Only include
2827 floating-point operators if there is a hardware floating-point unit.
2828 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2829 deferring to cbranch_cc and cstore_cc respectively.
2830 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2831 cbranch_cc, cstore_cc): New.
2832 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2834 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2836 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2837 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2839 (adjust_insn_length): Adjust calls.
2840 (avr_reorg): Handle (compare (foo) (const_int 0)).
2841 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2842 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2843 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2844 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2846 (cbranchqi4, cbranchhi4, cbranchsi4): New.
2847 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2849 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2850 (cbranchsi4, cstorebi4, cstoresi4): New.
2851 (movbisi): This insn is duplicate, split it to zero_extend.
2852 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2853 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
2854 (bfin_optimize_loop): Use cbranch expander.
2855 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2856 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2857 (bfin_bimode_comparison_operator): ... this.
2858 (bfin_direct_comparison_operator): New.
2860 * config/cris/cris.c (cris_normal_notice_update_cc): Look
2861 inside (compare FOO (const_int 0)).
2862 (cris_rtx_costs): Handle ZERO_EXTRACT.
2863 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2864 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2865 (*tstdi_v32): Delete.
2866 (*cmpdi_non_v32): Add M alternative for operand 1.
2867 (cmpsi, cmp<mode>): Make private.
2868 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2870 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2872 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2873 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2874 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2875 (cc_reg_operand): New.
2877 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2878 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2879 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2880 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2881 crx_expand_scond): Delete.
2883 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2885 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2886 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2888 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2889 cstoresi4, cstoresf4, cstoredf4): New.
2890 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2891 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2892 Receive the entire operands array.
2893 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2894 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2895 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2896 Get test/op0/op1 from the operands array.
2897 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2899 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2900 (h8300_expand_store): New.
2901 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2903 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
2904 (h8300_expand_store): New.
2905 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2906 or do not try to produce (set (cc0) REG).
2907 (peepholes): Wrap arguments with COMPARE. Add a peephole to
2908 change a compare into a move to a scratch register. Disable some
2909 peepholes when comparing with zero.
2910 (tstsi, tsthi, tstsi, cmpqi): Make private.
2913 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2916 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2917 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2918 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2919 (ix86_emit_i387_log1p): Use cbranchxf2.
2920 (ix86_expand_setcc): Return void.
2921 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2922 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2923 cmp<MODEF>, cmpcc): Remove.
2924 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2925 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2926 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2927 (sCC and bCC expanders): Remove.
2928 (stack_protect_test): Use cbranchcc4.
2930 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2932 (ia64_expand_compare): Accept three rtx by reference and return void.
2933 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2934 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
2935 from *expr. Update *expr with the BImode comparison to do.
2936 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2937 cmptf, bCC, sCC, conditional_trap): Delete.
2938 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
2939 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2940 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2941 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2942 * config/ia64/predicates.md (ia64_cbranch_operator): New.
2944 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2945 type of last argument.
2946 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2947 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2948 use machine mode argument instead of branch_type. Remove dead
2949 code for floating-point comparisons.
2950 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2951 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2953 (cbranchsi4, cstoresi4): New.
2954 * config/iq2000/predicates.md (reg_or_const_operand): New.
2956 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2957 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2958 (b<code>_op): Rewrite to...
2959 (bcc_op): ... this, using match_operator.
2960 (s<code>_op): Rewrite to...
2961 (scc_op): ... this, using match_operator.
2962 (s<code>_24_op): Rewrite to...
2963 (scc_op_24): ... this, using match_operator.
2964 (s<code>_<mode>): Rewrite to...
2965 (cstore<mode>4): ... this, using match_operator.
2966 (s<code>_<mode>_24): Rewrite to...
2967 (cstore<mode>4_24): ... this, using match_operator.
2968 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2969 m32c_unpend_compare, m32c_expand_scc): Delete.
2970 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2971 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2972 (m32c_expand_movcc): Change NE to EQ if necessary.
2973 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2975 * config/m32r/m32r-protos.h (gen_cond_store): New.
2976 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2977 (gen_cond_store): New, from sCC patterns.
2978 (m32r_expand_block_move): Use cbranchsi4.
2979 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2980 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2981 (cbranchsi4, cstoresi4): New.
2983 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2985 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2986 (m68hc11_notice_update_cc): Look into a compare with 0.
2987 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2989 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2990 cmphi, cmpqi, bCC): Delete.
2991 (cbranchsi4, cbranchhi4, cbranchqi4): New.
2992 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2993 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2996 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2997 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2998 * config/m68k/constraints.md (H): New.
2999 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3000 the define_insn below.
3001 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3002 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3003 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3004 patterns): Wrap RHS with COMPARE.
3005 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3006 (*cmpdi_internal): Name this pattern.
3007 (cmpdi): Change to define_insn.
3008 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3009 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3010 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3012 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3013 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3014 (conditional_trap): Change to...
3015 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3016 (*conditional_trap): Use the ordered_comparison_operator and
3017 const1_operand predicates.
3018 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3019 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3020 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3021 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3023 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3024 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3025 (mcore_gen_compare): New.
3026 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3027 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3028 (mcore_gen_compare): ... this.
3029 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3030 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3031 (stack probe pattern): Use cbranchsi4.
3033 * config/mips/predicates.md (mips_cstore_operator): New.
3034 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3035 * config/mips/mips.md (any_cond): Delete.
3036 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
3038 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3039 fixuns_truncsfdi2): Use cbranch patterns.
3040 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
3041 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3042 Adjust call to mips_expand_conditional_branch.
3043 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3045 * config/mips/mips-protos.h (mips_expand_conditional_branch,
3046 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3047 * config/mips/mips.c (cmp_operands): Delete.
3048 (mips_emit_compare): Get comparison operands from *op0/*op1.
3049 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
3050 that it succeeds. Use op0/op1 instead of cmp_operands.
3051 (mips_expand_conditional_branch, mips_expand_conditional_move,
3052 mips_expand_conditional_trap): Likewise.
3053 (mips_block_move_loop): Use cbranch patterns.
3054 * config/mips/mips.h (cmp_operands): Delete.
3056 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3057 (mmix_gen_compare_reg): Just return a register in the right CC mode.
3058 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3059 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3060 (*cmpcc_folded): Rename to...
3061 (*cmpdi_folded): this.
3062 (*cmpcc): Rename to...
3064 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3067 (cbranchdf4): New. Handle invalid comparisons here.
3068 * config/mmix/predicates.md (float_comparison_operator): New.
3070 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3071 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3072 * config/mn10300/mn10300.md (tst): Delete.
3073 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3074 Name these patterns and wrap RHS in a compare.
3075 (*cmpsi): Make this pattern private. Include tst.
3076 (*cmpsf): Make this pattern private.
3077 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3078 (compare with zero peepholes): Likewise.
3080 (cbranchsi4, cbranchsf4): New.
3081 (casesi): Use cbranchsi4.
3083 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3084 hppa_branch_type): Delete.
3085 (return_addr_rtx): Use cbranchsi4.
3086 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
3087 Emit CCFPmode comparison here.
3088 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3089 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3090 hppa_branch_type): Delete.
3091 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3092 (movsicc, movdicc): Remove references to hppa_compare_op0,
3093 hppa_compare_op1 and compare_from_rtx.
3094 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3095 (casesi): Use cbranchsi4.
3097 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3098 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3099 * config/pdp11/pdp11.md (register_or_const0_operand): New.
3100 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
3101 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3103 (cbranchdf4, cbranchhi4, cbranchqi4): New.
3104 (*branch, *branch_inverted): New.
3106 * config/picochip/picochip.md (cbranchhi4): Use
3107 ordered_comparison_operator.
3108 (cmphi, bCC): Remove.
3110 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3111 (trap_comparison_operator): Delete.
3112 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3113 rs6000_emit_cbranch): Accept mode and operands.
3114 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3115 rs6000_compare_fp_p): Delete.
3116 (rs6000_generate_compare): Accept mode and comparison. Extract code
3117 and op0/op1 from there. Replace references to rs6000_compare_op0
3118 and rs6000_compare_op1.
3119 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3120 extract result from passed operands.
3121 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3122 extract loc from passed operands.
3123 (rs6000_emit_cmove): Likewise.
3124 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3125 rs6000_compare_fp_p): Delete.
3126 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3127 (cbranch<GPR>4, cbranch<FP>4): New.
3128 (cstore<mode>4): New. Consolidate here all choices about when to use
3129 portable or specialized sCC sequences.
3130 (stack_protect_test): Use cbranchsi4.
3131 (conditional_trap): Replace with ctrap<GPR>4.
3132 (conditional trap insn): Replace trap_comparison_operator with
3133 ordered_comparison_operator.
3135 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3136 (s390_emit_prologue): Use ctrap.
3137 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3138 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3139 New predicates replacing...
3140 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3141 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3142 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3143 (add<mode>cc): Do not use s390_compare_op0/op1.
3144 (s<code>): Change to...
3145 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3147 (cstorecc4): ... this. Handle EQ or NE equally.
3148 (*sne): Un-privatize for use in cstorecc4.
3149 (b<code>): Change to...
3150 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3151 (conditional_trap): Replace with...
3152 (ctrap<GPR>4, ctrap<FP>4): ... these.
3153 (stack_protect): Use cbranchcc4.
3155 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3156 * config/score/score-protos.h (score_gen_cmp): Delete.
3157 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3158 (score_block_move-loop): Use cbranchsi4.
3159 * config/score/score.md (cbranchsi4): New.
3160 (cmpsi, bCC): Delete.
3161 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3162 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3163 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3164 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3165 * config/score/score3.h (score3_gen_cmp): Delete.
3166 * config/score/score7.h (score7_gen_cmp): Delete.
3168 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3169 (sh_emit_scc_to_t): ... this. Return void.
3170 (from_compare): Rename to...
3171 (sh_emit_compare_and_branch): ... this.
3172 (sh_emit_compare_and_set): New.
3173 (sh_expand_t_scc): Accept operands.
3174 * config/sh/predicates.md (sh_float_comparison_operator): New.
3175 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3176 (prepare_scc_operands): Rename to...
3177 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
3179 (sh_emit_cheap_store_flag): New.
3180 (sh_emit_set_t_insn): New.
3181 (from_compare): Rename to...
3182 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
3183 handling of TARGET_SH2E floating point to avoid recursive call.
3184 Generate branch here.
3185 (sh_emit_compare_and_set): New.
3186 (sh_expand_t_scc): Get op0/op1 from arguments.
3187 (sh_emit_cheap_store_flag): New.
3188 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3190 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3191 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3192 (movsicc, movdicc): Do nothing when it recreated operands from
3193 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
3194 prepare_scc_operands (now sh_emit_scc_to_t).
3195 (udivdi3): Use cstoresi4.
3196 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3197 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3198 (cbranchint4_media, cbranchfp4_media): New.
3199 (casesi): Use cbranchdi4.
3200 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3202 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3203 (movnegt): Remove second operand.
3204 (cbranchsf4, cbranchdf4): New.
3205 (stack_protect): Use cbranchdi4/cbranchsi4.
3207 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3208 (gen_compare_reg): Accept comparison, extract part of it to...
3209 (gen_compare_reg_1): ... this.
3210 (gen_compare_operator): Delete.
3211 (gen_v9_scc): Accept separate destination, comparison code and arms.
3212 Do not use sparc_compare_op0/sparc_compare_op1.
3213 (emit_scc_insn, emit_conditional_branch_insn): New.
3214 (emit_v9_brxx): Make static. Remove useless assertion.
3215 (sparc_emit_float_lib_cmp): Return RTL instead of calling
3217 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3218 * config/sparc/sparc-protos.h (gen_compare_reg,
3219 sparc_emit_float_lib_cmp): Adjust prototype.
3220 (emit_scc_insn, emit_conditional_branch_insn): New.
3221 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3222 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3223 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3224 iterators to the top.
3225 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3226 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3227 snedi_special_trunc): Delete.
3228 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3229 and snedi_special_trunc.
3230 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3231 cbranchdi4, cbranch<F:mode>4): New.
3232 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3233 here. Use gen_compare_reg instead of gen_compare_operator.
3234 (conditional_trap): Replace with...
3235 (ctrapsi4, ctrapdi4): ... this.
3236 (stack_protect_test): Use cbranchcc4.
3238 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3240 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
3241 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3242 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
3243 from operands[0] or operands[3] depending on is_set.
3244 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3245 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3246 cmpdf, bCC), sCC: Remove.
3247 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
3248 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3250 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3251 spu_emit_branch_or_set.
3253 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3255 * config/stormy16/stormy16.h (xstormy16_compare_op0,
3256 xstormy16_compare_op1): Delete.
3257 * config/stormy16/stormy16.c (xstormy16_compare_op0,
3258 xstormy16_compare_op1): Delete.
3259 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3261 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3262 (cmphi, cmpsi, bCC): Remove.
3264 * config/v850/v850.md (tstsi, cmpsi): Fold into...
3265 (*cmpsi): ... this one.
3266 (cbranchsi4, cstoresi4): New.
3267 (bCC expanders): Delete.
3268 (sCC insns): Fold into...
3269 (*setcc): ... this one.
3270 (casesi): Do not use gen_cmpsi and gen_bgtu.
3271 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3272 (movsicc): Simplify.
3273 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3275 * config/vax/vax-protos.h (cond_name): New.
3276 (vax_output_conditional_branch): Remove.
3277 * config/vax/vax.c (cond_name): New.
3278 (vax_output_conditional_branch): Remove.
3279 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3280 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3281 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
3282 (bit<VAXint>): Wrap source with (compare).
3283 (b<code> and following unnamed pattern): Rename to *branch and
3284 *branch_reversed. Change macroization to match_operator.
3285 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3287 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3288 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3289 Change last argument to machine_mode.
3290 (xtensa_expand_scc): Add machine_mode argument.
3291 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3292 (gen_conditional_move, xtensa_expand_conditional_branch,
3293 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3294 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3295 Adjust operand numbers.
3296 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3298 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3299 (cmpsi, cmpsf, b<code>, s<code>): Delete.
3300 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3302 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
3304 * optabs.c (prepare_cmp_insn): Temporarily disable test that
3305 causes spurious differences between trunk and cond-optab branch.
3307 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
3310 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3312 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
3314 * tree.c (iterative_hash_pointer): Delete.
3315 (iterative_hash_expr): Short-circuit handling of NULL pointer.
3316 Hash UIDs and versions of SSA names. Don't special-case built-in
3317 function declarations.
3319 2009-05-11 Ian Lance Taylor <iant@google.com>
3322 * graphite.c: Force -Wc++-compat to only be a warning before
3323 #including "cloog/cloog.h".
3325 2009-05-11 Martin Jambor <mjambor@suse.cz>
3327 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3329 2009-05-11 Jan Hubicka <jh@suse.cz>
3331 * tree-ssa-loop-ivcanon.c: Include target.h
3332 (struct loop_size): new structure.
3333 (constant_after_peeling): New predicate.
3334 (tree_estimate_loop_size): New function.
3335 (estimated_unrolled_size): Rewrite for new estimates.