1 2009-06-01 Ira Rosen <irar@il.ibm.com>
3 PR tree-optimization/39129
4 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
6 (vect_do_peeling_for_loop_bound): Use
7 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
8 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
9 (vect_loop_versioning): Likewise.
10 (vect_create_cond_for_alias_checks): Fix indentation.
11 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
13 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
14 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
15 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
16 "control flow in loop".
17 (vect_estimate_min_profitable_iters): Use
18 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
20 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
21 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
22 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
23 statement belongs to a group of strided accesses with the exact code
25 (vectorizable_load): Likewise.
26 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
27 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
29 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
31 * config/freebsd-stdint.h: New file.
32 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
33 Add freebsd-stdint.h to tm_file.
35 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
37 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
38 (thumb2_extendhidi2): Likewise.
40 2009-05-31 Ian Lance Taylor <iant@google.com>
42 * regstat.c (regstat_n_sets_and_refs): Remove duplicate
45 2009-05-31 Ian Lance Taylor <iant@google.com>
47 * Makefile.in (except.o): Depend upon gt-except.h, not
49 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
50 (ipa-reference.o): Depend upon gt-ipa-reference.h.
52 2009-05-31 Jason Merrill <jason@redhat.com>
54 * tree-pretty-print.c (print_call_name): Take the callee, not the
55 call itself. Make non-static. Use dump_function_name for
57 (dump_generic_node): Adjust.
58 * diagnostic.h: Declare print_call_name.
59 * gimple-pretty-print.c (dump_gimple_call): Use it.
61 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
63 * config/sh/sh.md (ashldi3_std): New define_expand.
66 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
69 * config/sh/sh.c: Include debug.h.
70 (sh_expand_epilogue): Emit a blockage insn before the frame
71 pointer adjustment also when dwarf2out_do_frame returns true.
73 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
75 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
76 (thumb2_extendqidi2): New pattern.
78 2009-05-31 Ira Rosen <irar@il.ibm.com>
80 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
81 mark phis for renaming.
82 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
83 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
84 Call mark_sym_for_renaming.
85 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
86 * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
87 initialization and a call to mark_set_for_renaming.
89 2009-05-31 Jakub Jelinek <jakub@redhat.com>
92 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
93 frame related even if !set_cfa && style < 0.
95 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
97 * config/i386/mingw-tls.c: New file.
98 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
100 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
101 it for targets defining _WIN32 but not __CYGWIN__.
103 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
105 * configure.ac: Add MPC support.
107 * config.in, configure: Regenerate.
109 2009-05-29 Richard Henderson <rth@redhat.com>
111 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
112 NOTE_INSN_BASIC_BLOCK.
113 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
114 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
115 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
117 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
119 (add_cfi): Disable check redefining cfa away from drap.
120 (lookup_cfa_1): Add remember argument; handle remember/restore.
121 (lookup_cfa): Pass remember argument.
123 (compute_barrier_args_size_1): Remove sibcall check.
124 (dwarf2out_frame_debug_def_cfa): New.
125 (dwarf2out_frame_debug_adjust_cfa): New.
126 (dwarf2out_frame_debug_cfa_offset): New.
127 (dwarf2out_frame_debug_cfa_register): New.
128 (dwarf2out_frame_debug_cfa_restore): New.
129 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
130 (dwarf2out_begin_epilogue): New.
131 (dwarf2out_frame_debug_restore_state): New.
132 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
133 DW_CFA_restore_state.
134 (output_cfi_directive): Likewise.
135 (convert_cfa_to_fb_loc_list): Likewise.
136 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
137 * dwarf2out.h: Update.
138 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
139 (copy_insn_1): Early out for null.
140 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
141 and dwarf2out_frame_debug_restore_state.
142 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
143 (prologue_insn_hash, epilogue_insn_hash): New.
144 (free_after_compilation): Adjust freeing accordingly.
145 (record_insns): Create hash table if needed; push insns into
146 hash instead of array.
147 (maybe_copy_epilogue_insn): New.
148 (contains): Search hash table instead of array.
149 (sibcall_epilogue_contains): Remove.
150 (thread_prologue_and_epilogue_insns): Split eh_return insns
151 and mark them as epilogues.
152 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
153 scanning in terms of basic blocks.
154 * insn-notes.def (CFA_RESTORE_STATE): New.
155 * jump.c (returnjump_p_1): Accept EH_RETURN.
156 (eh_returnjump_p_1, eh_returnjump_p): New.
157 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
158 CFA_REGISTER, CFA_RESTORE): New.
159 * rtl.def (EH_RETURN): New.
160 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
162 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
163 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
165 * config/i386/i386.c (gen_push): Update cfa state.
166 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
167 add a CFA_ADJUST_CFA note.
168 (ix86_dwarf_handle_frame_unspec): Remove.
169 (ix86_expand_prologue): Update cfa state.
170 (ix86_emit_restore_reg_using_pop): New.
171 (ix86_emit_restore_regs_using_pop): New.
172 (ix86_emit_leave): New.
173 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
174 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
175 * config/i386/i386.h (struct machine_cfa_state): New.
176 (ix86_cfa_state): New.
177 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
178 (eh_return_internal): Merge from eh_return_<mode>,
179 use eh_return rtx, split w/ epilogue.
181 2009-05-29 Ian Lance Taylor <iant@google.com>
183 * builtins.c (validate_gimple_arglist): Don't use va_arg with
185 * calls.c (emit_library_call_value_1): Likewise.
187 * c-typeck.c (c_build_va_arg): New function.
188 * c-tree.h (c_build_va_arg): Declare.
189 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
190 instead of build_va_arg.
192 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
194 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
195 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
196 (ptr_difference_cost): Use affine combinations to compute it.
197 (difference_cost): Likewise.
198 (get_computation_cost_at): Compute more accurate cost for addresses
199 if the ratio is a multiplier allowed in addresses.
200 For non-addresses, consider that an additional offset or symbol is
203 2009-05-29 Jakub Jelinek <jakub@redhat.com>
205 * config/i386/i386.c (ix86_decompose_address): Avoid useless
206 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
208 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
209 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
210 (prefix_rex): For UNIT_MMX don't imply the prefix by default
212 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
213 to 1 for TYPE_SSE{IADD1,CVT1}.
214 (prefix_vex_imm8): Removed.
215 (length_vex): Only pass 1 as second argument to
216 ix86_attr_length_vex_default if prefix_extra is 0.
217 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
218 (length): For prefix vex computation use length_immediate
219 attribute instead of prefix_vex_imm8.
220 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
221 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
222 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
223 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
224 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
225 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
226 a space in between the operands.
227 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
228 if one operand is 0xff and the other one si, di, bp or sp.
229 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
230 other one si, di, bp or sp.
231 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
232 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
233 type and mode attributes.
234 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
235 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
236 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
237 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
238 prefix_data16 attribute iff MODE_DF.
239 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
240 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
241 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
242 constm128_operand in length_immediate computation.
243 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
244 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
245 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
246 length_immediate attribute to 1.
247 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
248 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
249 for certain alternatives.
250 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
251 prefix_data16 attribute if MODE_V1DF.
252 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
253 length_immediate to 1.
254 (set_got_rex64, set_rip_rex64): Remove length attribute, set
255 length_address to 4, set mode attribute to MODE_DI.
256 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
257 (fxam<mode>2_i387): Set length attribute to 4.
258 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
259 *prefetch_3dnow_rex): Override length_address attribute.
260 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
262 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
263 (constm128_operand): Removed.
264 * config/i386/i386.c (memory_address_length): For
265 disp && !index && !base in 64-bit mode account for SIB byte if
266 print_operand_address can't optimize disp32 into disp32(%rip)
267 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
268 for fs: or gs: segment.
269 (ix86_attr_length_immediate_default): When checking if shortform
270 is possible, truncate immediate to the length of the non-shortened
272 (ix86_attr_length_address_default): Ignore MEM_P operands
274 (ix86_attr_length_vex_default): Only check for DImode on
275 GENERAL_REG_P operands.
276 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
277 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
278 (sse_cvttps2pi): Clear prefix_rep attribute.
279 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
281 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
282 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
283 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
284 iff operand 2 is const_int_operand.
285 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
286 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
287 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
289 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
291 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
292 prefix_data16 attribute for movlpd and movhpd instructions.
293 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
294 length_immediate for shufpd instruction.
295 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
296 (avx_cmpp<avxmodesuffixf2c><mode>3,
297 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
298 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
299 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
300 *vec_dupv4sf_avx, *vec_dupv4sf): Set
301 length_immediate attribute to 1.
302 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
303 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
304 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
305 prefix_data16 attribute for the first alternative to 1.
306 (*avx_loadlps): Override length_immediate for the first alternative.
307 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
308 attributes for second alternative.
309 (*vec_concatv2sf_sse4_1): Override length_immediate and
310 prefix_data16 attributes for second alternative.
311 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
312 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
313 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
314 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
315 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
316 prefix_data16 and length_immediate to 1.
317 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
319 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
320 prefix_extra attribute for variants that don't have 0f prefix
322 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
323 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
324 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
325 *sse4_1_pextrd): Set length_immediate to 1.
326 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
327 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
329 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
330 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
331 length_immediate to 1 for second alternative.
332 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
333 prefix_extra and length_immediate attributes for the first
335 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
337 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
338 to 1 for the first and third alternative.
339 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
341 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
343 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
345 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
346 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
347 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
348 *avx_psign<mode>3): Set prefix_extra attribute to 1.
349 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
350 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
351 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
352 ssse3_psign<mode>3): Override prefix_rex attribute.
353 (*avx_palignrti): Override prefix_extra and length_immediate
355 (ssse3_palignrti): Override length_immediate to 1.
356 (ssse3_palignrdi): Override length_immediate to 1, override
357 prefix_rex attribute.
358 (abs<mode>2): Override prefix_rep to 0, override prefix_rex
360 (sse4a_extrqi): Override length_immediate to 2.
361 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
362 (sse4a_insertq): Override prefix_data16 to 0.
363 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
364 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
365 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
366 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
367 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
368 and length_immediate to 1.
369 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
370 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
371 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
372 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
373 and length_immediate to 1.
374 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
375 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
376 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
377 avx_ptest256): Override prefix_extra to 1.
378 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
379 Override prefix_data16 and length_immediate to 1.
380 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
381 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
382 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
383 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
384 prefix_data16 to 0 and prefix_extra to 2.
385 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
386 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
388 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
389 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
390 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
391 and prefix_extra to 2.
392 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
393 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
394 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
395 avx_vpermilvar<mode>3,
396 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
397 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
398 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
399 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
400 Override prefix_extra to 1.
401 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
402 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
403 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
404 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
405 prefix_extra and length_immediate to 1.
406 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
408 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
409 to 1 for the first alternative.
410 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
411 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
413 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
414 *movv2sf_internal_avx, *movv2sf_internal): Override
415 prefix_rep attribute for certain alternatives.
416 (*mov<mode>_internal): Override prefix_rep or prefix_data16
417 attributes for certain alternatives.
418 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
419 attributes for certain alternatives.
420 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
421 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
422 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
423 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
424 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
425 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
426 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
427 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
428 length_immediate to 1 if operand 2 is const_int_operand.
429 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
430 *vec_extractv2si_1): Set length_immediate
432 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
433 using old 3DNOW insn rather than SSE/3DNOW_A.
434 (mmx_emms, mmx_femms): Clear modrm attribute.
436 2009-05-29 Martin Jambor <mjambor@suse.cz>
438 * tree-sra.c: New implementation of SRA.
440 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
441 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
442 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
443 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
444 (SRA_MAX_STRUCTURE_COUNT): Removed.
445 (SRA_FIELD_STRUCTURE_RATIO): Removed.
446 * doc/invoke.texi (sra-max-structure-size): Removed.
447 (sra-field-structure-ratio): Removed.
449 2009-05-29 Jakub Jelinek <jakub@redhat.com>
452 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
455 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
457 PR rtl-optimization/40101
458 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
459 seqno. Adjust comment.
460 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
461 inserting bookkeeping before a jump, the jump is not scheduled.
462 When no positive seqno found, provide a value. Add comment.
464 2009-05-29 Richard Guenther <rguenther@suse.de>
466 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
467 short-cutting on the first component.
469 2009-05-29 Jakub Jelinek <jakub@redhat.com>
472 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
473 for trees other than decls/types.
475 2009-05-29 Richard Guenther <rguenther@suse.de>
477 * tree-ssa-operands.c (get_expr_operands): Do not handle
478 INDIRECT_REFs in the handled-component case. Remove
479 unused get_ref_base_and_extent case.
480 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
481 tree_low_cst and host_integerp where possible.
482 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
483 codes for equivalence.
484 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
486 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
488 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
489 to tmake_file for i[34567]86-*-cygwin*.
491 2009-05-29 Jakub Jelinek <jakub@redhat.com>
494 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
495 (altivec_categorize_keyword, init_vector_keywords,
496 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
499 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
501 * tree.c (handle_dll_attribute): Check if node is
502 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
504 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
506 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
508 (thumb2_zero_extendqidi2): Likewise.
510 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
512 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
513 instead of gen_movrt.
514 * config/sh/sh.md (movrt): Remove.
516 2009-05-28 Steve Ellcey <sje@cup.hp.com>
518 * doc/invoke.texi (IA-64 Options)
519 Add -msdata, -mfused-madd, -mno-inline-float-divide,
520 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
521 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
522 -msched-prefer-non-control-spec-insns,
523 -msched-stop-bits-after-every-cycle,
524 -msched-count-spec-in-critical-path,
525 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
526 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
527 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
528 and -msched-spec-verbose.
530 2009-05-28 Joseph Myers <joseph@codesourcery.com>
532 * config/arm/lib1funcs.asm (__clear_cache): Define if
534 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
536 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
538 2009-05-28 Richard Guenther <rguenther@suse.de>
540 * tree-ssa-alias.c (ao_ref_init): New function.
541 (ao_ref_base): Likewise.
542 (ao_ref_base_alias_set): Likewise.
543 (ao_ref_alias_set): Likewise.
544 (refs_may_alias_p_1): Change signature.
545 (refs_may_alias_p): Adjust.
546 (refs_anti_dependent_p): Likewise.
547 (refs_output_dependent_p): Likewise.
548 (call_may_clobber_ref_p_1): Change signature.
549 (call_may_clobber_ref_p): Adjust.
550 (stmt_may_clobber_ref_p_1): New function split out from ...
551 (stmt_may_clobber_ref_p): ... here.
552 (maybe_skip_until): Adjust signature.
553 (get_continuation_for_phi): Likewise.
554 (walk_non_aliased_vuses): Likewise.
555 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
556 (ao_ref_init): Declare.
557 (ao_ref_base): Likewise.
558 (ao_ref_alias_set): Likewise.
559 (stmt_may_clobber_ref_p_1): Likewise.
560 (walk_non_aliased_vuses): Adjust.
561 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
562 (get_ref_from_reference_ops): remove.
563 (vn_reference_lookup_2): Adjust signature.
564 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
565 (vn_reference_lookup_pieces): Adjust signature, do not re-build
567 (vn_reference_lookup): Adjust.
568 (vn_reference_insert): Likewise.
569 (vn_reference_insert_pieces): Adjust signature.
570 (visit_reference_op_call): Adjust.
571 * tree-ssa-pre.c (get_expr_type): Simplify.
572 (phi_translate_1): Adjust.
573 (compute_avail): Likewise.
574 (translate_vuse_through_block): Do not re-build trees.
575 (value_dies_in_block_x): Likewise.
576 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
578 (vn_reference_lookup_pieces): Adjust declaration.
579 (vn_reference_insert_pieces): Likewise.
581 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
583 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
584 with checking disabled.
586 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
590 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
591 macro definition for support of three-operand format aligned
592 .comm directive in assembler on cygwin/pe/mingw target OS.
593 * configure: Regenerate.
594 * config.h: Regenerate.
596 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
597 aligned form of .comm directive if -mpe-aligned-commons is in effect.
598 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
600 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
601 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
603 2009-05-28 Ira Rosen <irar@il.ibm.com>
605 PR tree-optimization/40254
606 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
607 in analysis of basic blocks.
609 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
612 * target.h (struct gcc_target): Fix indentation. Add
614 * target-def.h (TARGET_CONST_ANCHOR): New macro.
615 (TARGET_INITIALIZER): Use it.
616 * cse.c (CHEAPER): Move it up to the other macros.
617 (insert): Rename this ...
618 (insert_with_costs): ... to this. Add cost parameters. Update
620 (insert): New function. Call insert_with_costs.
621 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
622 find_reg_offset_for_const, try_const_anchors): New functions.
623 (cse_insn): Call try_const_anchors. Adjust cost of src_related
624 when using a const-anchor. Call insert_const_anchors.
625 * config/mips/mips.c (mips_set_mips16_mode): Set
626 targetm.const_anchor.
627 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
629 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
631 * tree-inline.c (remap_decls): Enable nonlocalized variables
634 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
636 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
637 Simplify other tests involving optimize.
639 2009-05-27 Tom Tromey <tromey@redhat.com>
641 * unwind-dw2.c (_Unwind_DebugHook): New function.
642 (uw_install_context): Call _Unwind_DebugHook.
644 2009-05-27 Tom Tromey <tromey@redhat.com>
646 * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
648 2009-05-27 Ian Lance Taylor <iant@google.com>
650 * Makefile.in (LINKER, LINKER_FLAGS): Define.
651 (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
652 (ALL_LINKERFLAGS): Define.
653 (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
654 (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
655 (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
656 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
657 (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
659 (build/gcov-iov$(build_exeext)): Likewise.
661 2009-05-27 Julian Brown <julian@codesourcery.com>
663 * gcse.c (target.h): Include.
664 (can_assign_to_reg_without_clobbers_p): Check that the target allows
665 copy of argument to a pseudo register.
667 2009-05-27 Diego Novillo <dnovillo@google.com>
669 * tree-ssa-live.c (dump_scope_block): Document arguments.
670 (dump_scope_blocks): Document.
671 (debug_scope_blocks): New.
672 * tree-flow.h (debug_scope_blocks): Declare.
674 2009-05-21 Denis Chertykov <denisc@overta.ru>
676 * doc/contrib.texi (Contributors): add myself to the list.
678 2009-05-27 Olivier Hainque <hainque@adacore.com>
680 * expr.c (target_align): New function. Alignment the TARGET of an
681 assignment may be assume to have.
682 (highest_pow2_factor_for_target): Use it instead of relying on
683 immediate tree attributes of TARGET, not necessarily honored when
684 intermediate bitfields are involved.
686 2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
689 * config/i386/driver-i386.c (host_detect_local_cpu): Support
690 AVX, SSE4, AES, PCLMUL and POPCNT.
692 2009-05-27 Diego Novillo <dnovillo@google.com>
694 * tree-pretty-print.c (dump_location): New.
695 (dump_generic_node): Call it.
696 Factor code to handle BLOCK nodes ...
697 (dump_block_node): ... here.
699 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
701 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
703 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
705 * gcc-plugin.h: Include config.h and system.h.
706 (IN_GCC): Define if not defined.
708 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
711 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
714 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
716 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
718 * config/m32r/m32r.h: Ditto.
719 * config/m32r/m32r.md: Ditto.
720 * config/m32r/predicates.md: Ditto.
722 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
724 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
726 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
729 (Loading plugins): typo.
730 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
731 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
732 (Interacting with the GCC Garbage Collector): Added new section.
733 (Giving information about a plugin): Added new section for
735 * ggc.h (ggc_register_root_tab): Added declaration.
736 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
737 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
738 (register_callback): Improved comment in declaration.
739 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
741 (extra_root_vec) Added static variable for dynamic roots
743 (ggc_register_root_tab) Added new routine.
744 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
745 PLUGIN_GGC_MARKING event.
746 * ggc-zone.c: Include plugin.h.
747 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
748 * ggc-page.c: Include plugin.h.
749 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
750 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
751 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
752 (register_callback): check lack of callbacks for
753 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
754 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
755 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
756 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
757 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
758 dependency on plugin.h.
759 (plugin.o): Added dependency on ggc.h...
761 2009-05-26 Richard Guenther <rguenther@suse.de>
765 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
766 with mismatched comparison modes.
768 * expr.c (expand_expr_real_1): Expand the operand of a
769 VIEW_CONVERT_EXPR in its natural mode.
771 2009-05-26 Ian Lance Taylor <iant@google.com>
773 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
774 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
775 (ALL_COMPILERFLAGS): Define.
776 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
777 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
778 (collect2$(exeext), collect2.o): Likewise.
779 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
780 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
781 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
782 (libbackend.o, intl.o, cppdefault.o): Likewise.
783 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
784 (build/%.o): Use $(COMPILER_FOR_BUILD).
785 (build/gen%$(build_exeext)): Likewise.
786 (build/gcov-iov$(build_exeext)): LIkewise.
787 * config/t-darwin (darwin.o): Use $(COMPILER).
788 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
789 * config/t-sol2 (sol2-c.o): Likewise.
791 * config/t-vxworks (vxworks.o): Likewise.
792 * config/x-darwin (host-darwin.o): Likewise.
793 * config/x-hpux (host-hpux.o): Likewise.
794 * config/x-linux (host-linux.o): Likewise.
795 * config/x-solaris (host-solaris.o): Likewise.
796 * config/alpha/x-alpha (driver-alpha.o): Likewise.
797 * config/arm/t-arm (arm-c.o): Likewise.
798 * config/arm/t-pe (pe.o): Likewise.
799 * config/arm/t-wince-pe (pe.o): Likewise.
800 * config/i386/t-cygming (winnt.o): Likewise.
801 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
802 * config/i386/t-cygwin (cygwin1.o): Likewise.
803 (cygwin2.o): Likewise.
804 * config/i386/t-i386 (i386-c.o): Likewise.
805 * config/i386/t-interix (winnt.o): Likewise.
806 * config/i386/t-netware (netware.o): Likewise.
807 * config/i386/t-nwld (nwld.o): Likewise.
808 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
809 * config/i386/x-i386 (driver-i386.o): Likewise.
810 * config/i386/x-cygwin (host-cygwin.o): Likewise.
811 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
812 * config/ia64/t-ia64 (ia64-c.o): Likewise.
813 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
814 * config/mips/x-native (driver-native.o): Likewise.
815 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
816 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
817 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
818 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
819 * config/score/t-score-elf (score7.o): Likewise.
820 (score3.o): Likewise.
821 * config/sh/t-sh (sh-c.o): Likewise.
822 * config/sh/t-symbian (sh-c.o): Likewise.
823 (symbian.o): Likewise.
824 * config/spu/t-spu-elf (spu-c.o): Likewise.
825 * config/v850/t-v850 (v850-c.o): Likewise.
826 * config/v850/t-v850e (v850-c.o): Likewise.
828 2009-05-26 Richard Guenther <rguenther@suse.de>
830 PR tree-optimization/40122
831 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
832 VECTOR_CSTs if possible.
833 (fold_gimple_assign): Likewise.
835 2009-05-26 Richard Guenther <rguenther@suse.de>
838 * fold-const.c (fold_binary): Use the correct types for building
841 2009-05-26 Richard Guenther <rguenther@suse.de>
843 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
844 redundant calls to merge_alias_info.
845 (bump_vector_ptr): Likewise.
846 * tree-ssa-copy.c (merge_alias_info): Remove.
847 (replace_exp_1): Remove call to merge_alias_info.
848 (propagate_tree_value): Likewise.
849 (fini_copy_prop): Propagate points-to info.
850 * tree-flow.h (merge_alias_info): Remove.
852 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
854 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
856 2009-05-25 Jan Hubicka <jh@suse.cz>
858 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
859 * cgraph.h (struct inline_summary): New filed self_wize,
860 size_inlining_benefit, self_time and time_inlining_benefit.
861 (struct cgraph_global_info): Replace insns by time ans size fields.
862 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
863 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
864 (ipcp_update_callgraph): Do not touch function bodies.
865 * ipa-inline.c: Include except.h
866 (MAX_TIME): New constant.
867 (overall_insns): Remove.
869 (overall_size, max_benefit): New static variables.
870 (cgraph_estimate_time_after_inlining): New function.
871 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
872 (cgraph_clone_inlined_nodes): Update size.
873 (cgraph_mark_inline_edge): Update size.
874 (cgraph_estimate_growth): Use size info.
875 (cgraph_check_inline_limits): Check size.
876 (cgraph_default_inline_p): Likewise.
877 (cgraph_edge_badness): Compute badness based on benefit and size cost.
878 (cgraph_decide_recursive_inlining): Check size.
879 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
881 (cgraph_decide_inlining): Likewise.
882 (cgraph_decide_inlining_incrementally): Likewise; honor
883 PARAM_EARLY_INLINING_INSNS.
884 (likely_eliminated_by_inlining_p): New predicate.
885 (estimate_function_body_sizes): New function.
886 (compute_inline_parameters): Use it.
887 * except.c (must_not_throw_labels): New function.
888 * except.h (must_not_throw_labels): Declare.
889 * tree-inline.c (init_inline_once): Kill inlining_weigths
890 * tree-ssa-structalias.c: Avoid uninitialized warning.
891 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
892 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
893 (PARAM_INLINE_CALL_COST): Remove.
894 (PARAM_EARLY_INLINING_INSNS): New.
896 2009-05-25 Richard Guenther <rguenther@suse.de>
898 PR tree-optimization/36327
899 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
900 callback for reference translation or lookup at the point
902 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
903 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
904 for union COMPONENT_REFs.
905 (vn_reference_lookup_3): New callback. Lookup from memset
906 and CONSTRUCTOR assignment, translate through struct copies.
907 (vn_reference_lookup_pieces): Make sure to not free the
908 passed operands array. Adjust walk_non_aliased_vuses call.
909 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
910 make sure we do not leak memory.
912 2009-05-25 Richard Guenther <rguenther@suse.de>
914 * tree-ssa-alias.h (dump_points_to_solution): Declare.
915 * tree-inline.c (expand_call_inline): Reset the escaped and
917 * tree-ssa-structalias.c (pass_build_ealias): New.
918 * tree-pass.h (pass_build_ealias): Declare.
919 * passes.c (init_optimization_passes): Add PTA during
921 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
922 and CALLUSED solutions.
923 (dump_points_to_solution): New function, split out from ...
924 (dump_points_to_info_for): ... here.
925 * tree-parloops.c (parallelize_loops): Reset the escaped and
928 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
931 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
932 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
934 2009-05-25 Ira Rosen <irar@il.ibm.com>
936 PR tree-optimization/40238
937 * tree-vect-stmts.c (vect_init_vector): Insert initialization
938 statements after basic block's labels.
939 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
940 to free the allocated memory.
942 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
944 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
945 return address with a USE.
947 2009-05-24 Richard Guenther <rguenther@suse.de>
950 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
951 array type from the main variant of the inner type.
953 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
955 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
956 definition to bool (from int) to un-break build.
957 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
959 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
961 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
962 discard_stmt_changes): Delete.
963 * tree-ssa-operands.c (scb_stack): Delete.
964 (init_ssa_operands): Do not initialize it.
965 (fini_ssa_operands): Do not free it.
966 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
968 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
969 update_stmt, remove the others. Fix comments.
970 * tree-dfa.c (optimize_stack_restore): Likewise.
971 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
972 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
973 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
974 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
976 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
977 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
978 (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
979 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
980 (stmts_to_rescan): Change item type to gimple.
981 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
983 2009-05-24 Ira Rosen <irar@il.ibm.com>
985 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
986 * tree-pass.h (pass_slp_vectorize): New pass.
987 * params.h (SLP_MAX_INSNS_IN_BB): Define.
988 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
989 * tree-vectorizer.c (timevar.h): Include.
990 (user_vect_verbosity_level): Declare.
991 (vect_location): Fix comment.
992 (vect_set_verbosity_level): Update user_vect_verbosity_level
993 instead of vect_verbosity_level.
994 (vect_set_dump_settings): Add an argument. Ignore user defined
995 verbosity if dump flags require higher level of verbosity. Print to
996 stderr only for loop vectorization.
997 (vectorize_loops): Update call to vect_set_dump_settings.
998 (execute_vect_slp): New function.
999 (gate_vect_slp): Likewise.
1000 (struct gimple_opt_pass pass_slp_vectorize): New.
1001 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1003 (vec_info_for_bb): New function.
1004 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1005 (VECTORIZATION_ENABLED): New macro.
1006 (SLP_ENABLED, SLP_DISABLED): Likewise.
1007 (vect_is_simple_use): Add bb_vec_info argument.
1008 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1009 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1010 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1011 vect_schedule_slp, vect_analyze_slp): Likewise.
1012 (vect_analyze_stmt): Add slp_tree argument.
1013 (find_bb_location): Declare.
1014 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1015 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1016 (vect_analyze_loop_operations, vect_analyze_loop,
1017 get_initial_def_for_induction, vect_create_epilog_for_reduction,
1018 vect_finalize_reduction, vectorizable_reduction,
1019 vectorizable_live_operation, vect_transform_loop): Likewise.
1020 * tree-data-ref.c (dr_analyze_innermost): Update comment,
1021 skip evolution analysis if analyzing a basic block.
1022 (dr_analyze_indices): Likewise.
1023 (initialize_data_dependence_relation): Skip the test whether the
1024 object is invariant for basic blocks.
1025 (compute_all_dependences): Skip dependence analysis for data
1026 references in basic blocks.
1027 (find_data_references_in_stmt): Don't fail in case of invariant
1028 access in basic block.
1029 (find_data_references_in_bb): New function.
1030 (find_data_references_in_loop): Move code to
1031 find_data_references_in_bb and add a call to it.
1032 (compute_data_dependences_for_bb): New function.
1033 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1034 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1036 (vect_analyze_data_ref_dependence): Check for interleaving in case of
1037 unknown dependence in basic block and fail in case of dependence in
1039 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1040 dependence instances from either loop or basic block vectorization
1042 (vect_compute_data_ref_alignment): Check if it is loop vectorization
1043 before calling nested_in_vect_loop_p.
1044 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1045 dependence instances from either loop or basic block vectorization
1047 (vect_verify_datarefs_alignment): Likewise.
1048 (vect_enhance_data_refs_alignment): Adjust function calls.
1049 (vect_analyze_data_refs_alignment): Likewise.
1050 (vect_analyze_group_access): Fix printing. Skip different checks if
1051 DR_STEP is 0. Keep strided stores either in loop or basic block
1052 vectorization data structure. Fix indentation.
1053 (vect_analyze_data_ref_access): Fix comments, allow zero step in
1055 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1056 dependence instances from either loop or basic block vectorization
1058 (vect_analyze_data_refs): Update comment. Call
1059 compute_data_dependences_for_bb to analyze basic blocks.
1060 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1061 case of loop vectorization. In case of basic block vectorization use
1062 data-ref itself as a base.
1063 (vect_create_data_ref_ptr): In case of basic block vectorization:
1064 don't advance the pointer, add new statements before the current
1065 statement. Adjust function calls.
1066 (vect_supportable_dr_alignment): Support only aligned accesses in
1067 basic block vectorization.
1068 * common.opt (ftree-slp-vectorize): New flag.
1069 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1070 (vect_pattern_recog_1): Likewise.
1071 * tree-vect-stmts.c (process_use): Likewise.
1072 (vect_init_vector): Add new statements in the beginning of the basic
1073 block in case of basic block SLP.
1074 (vect_get_vec_def_for_operand): Adjust function calls.
1075 (vect_finish_stmt_generation): Likewise.
1076 (vectorizable_call): Add assert that it is loop vectorization, adjust
1078 (vectorizable_conversion, vectorizable_assignment): Likewise.
1079 (vectorizable_operation): In case of basic block SLP, take
1080 vectorization factor from statement's type and skip the relevance
1081 check. Adjust function calls.
1082 (vectorizable_type_demotion): Add assert that it is loop
1083 vectorization, adjust function calls.
1084 (vectorizable_type_promotion): Likewise.
1085 (vectorizable_store): Check for outer loop only in case of loop
1086 vectorization. Adjust function calls. For basic blocks, skip the
1087 relevance check and don't advance pointers.
1088 (vectorizable_load): Likewise.
1089 (vectorizable_condition): Add assert that it is loop vectorization,
1090 adjust function calls.
1091 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1092 that it is not reduction, get vector type, call only supported
1093 functions, skip loop specific parts.
1094 (vect_transform_stmt): Check for outer loop only in case of loop
1096 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1097 (vect_is_simple_use): Fix comment, add new argument, fix conditions
1098 for external definition.
1099 * passes.c (pass_slp_vectorize): New pass.
1100 * tree-vect-slp.c (find_bb_location): New function.
1101 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1102 check for patterns only in loops.
1103 (vect_build_slp_tree): Add argument, adjust function calls, fail in
1104 case of multiple types in basic block SLP.
1105 (vect_mark_slp_stmts_relevant): New function.
1106 (vect_supported_load_permutation_p): Fix comment.
1107 (vect_analyze_slp_instance): Add argument. In case of basic block
1108 SLP, take vectorization factor from statement's type, check that
1109 unrolling factor is 1. Adjust function call. Save SLP instance in
1110 either loop or basic block vectorization structure. Return FALSE,
1112 (vect_analyze_slp): Add argument. Get strided stores groups from
1113 either loop or basic block vectorization structure. Return FALSE
1114 if basic block SLP failed.
1115 (new_bb_vec_info): New function.
1116 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1117 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1118 (vect_schedule_slp): Add argument. Get SLP instances from either
1119 loop or basic block vectorization structure. Set vectorization factor
1120 to be 1 for basic block SLP.
1121 (vect_slp_transform_bb): New function.
1122 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1124 2009-05-23 Mark Mitchell <mark@codesourcery.com>
1126 * final.c (shorten_branches): Do not align labels for jump tables.
1127 (final_scan_insn): Use JUMP_TABLE_DATA_P.
1129 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
1131 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1132 Remove outdated reference to flow.c and fix nits.
1133 * doc/gccint.texi: Tweak RTL description.
1134 * doc/rtl.texi: Likewise.
1136 2009-05-23 Denis Chertykov <chertykov@gmail.com>
1138 * config/avr/avr.c: Change my email address.
1139 * config/avr/avr.h: Likewise.
1140 * config/avr/avr.md: Likewise.
1141 * config/avr/avr-protos.h: Likewise.
1142 * config/avr/libgcc.S: Likewise.
1144 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1146 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1147 (spu_split_load, spu_split_store): Change return type to int.
1148 (spu_split_convert): Declare.
1149 * config/spu/predicates.md (spu_mem_operand): Remove.
1150 (spu_mov_operand): Update.
1151 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1152 * config/spu/spu.c (regno_aligned_for_load): Remove.
1153 (reg_aligned_for_addr, spu_expand_load): Define.
1154 (spu_expand_extv): Reimplement and handle MEM.
1155 (spu_expand_insv): Handle MEM.
1156 (spu_sched_reorder): Handle insn's with length 0.
1157 (spu_legitimate_address_p): Reimplement.
1158 (store_with_one_insn_p): Return TRUE for any mode with size
1159 larger than 16 bytes.
1160 (address_needs_split): Define.
1161 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1163 (spu_convert_move): Define.
1164 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1165 (spu_split_store): Change all MEM's to TImode.
1166 (spu_init_expanders): Preallocate registers that correspond to
1167 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1169 (spu_split_convert): Define.
1170 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1171 (_move<mode>, _movdi, _movti): Update predicate and condition.
1172 (load, store): Change to define_split.
1173 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1175 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1176 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1177 define_insn_and_split of lshr<mode>3.
1178 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1179 (<v>ashr<mode>3_imm): Define.
1180 (extv, extzv, insv): Allow MEM operands.
1181 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1182 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1183 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1184 (_spu_convert2): Change to define_insn_and_split and remove the
1185 corresponding define_peephole2.
1186 (stack_protect_set, stack_protect_test, stack_protect_test_si):
1187 Change predicates to memory_operand.
1189 2009-05-22 Mark Mitchell <mark@codesourcery.com>
1191 * config/arm/thumb2.md: Add 16-bit multiply instructions.
1193 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
1195 PR tree-optimization/40219
1196 * tree.c (iterative_hash_expr): Make sure the builtin function is
1197 a normal builtin function and not a front end or back end builtin
1198 before indexing into the built_in_decls array.
1200 2009-05-22 Richard Guenther <rguenther@suse.de>
1203 * alias.c (write_dependence_p): Do not use TBAA for answering
1204 anti-dependence or output-dependence.
1205 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1206 (emit_pointer_definition): Remove.
1207 (emit_alias_warning): Likewise.
1208 (find_what_var_points_to): Remove TBAA pruning code.
1209 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
1211 (compute_points_to_sets): Remove code computing the set of
1212 dereferenced pointers.
1213 * tree-data-ref.c (dr_may_alias_p): Properly use the split
1214 oracle for querying anti and output dependencies.
1215 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1216 if TBAA may be applied.
1217 (refs_anti_dependent_p): New function.
1218 (refs_output_dependent_p): Likewise.
1219 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1220 (refs_output_dependent_p): Likewise.
1221 * doc/tree-ssa.texi (Memory model): New section.
1222 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1223 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1224 * cfgexpand.c (expand_gimple_basic_block): Do not handle
1225 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1226 * expr.c (expand_expr_real_1): Likewise.
1227 * gimple-low.c (lower_stmt): Likewise.
1228 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1229 (dump_gimple_cdt): Remove.
1230 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1231 (gimple_size): Likewise.
1232 (walk_gimple_op): Likewise.
1233 (is_gimple_stmt): Likewise.
1234 (walk_stmt_load_store_addr_ops): Likewise.
1235 (gimple_build_cdt): Remove.
1236 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1237 * gimple.h (gimple_cdt_new_type): Remove.
1238 (gimple_cdt_new_type_ptr): Likewise.
1239 (gimple_cdt_set_new_type): Likewise.
1240 (gimple_cdt_location): Likewise.
1241 (gimple_cdt_location_ptr): Likewise.
1242 (gimple_cdt_set_location): Likewise.
1243 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1244 * tree-cfg.c (remove_useless_stmts_1): Do not handle
1245 GIMPLE_CHANGE_DYNAMIC_TYPE.
1246 (verify_types_in_gimple_stmt): Likewise.
1247 * tree-inline.c (estimate_num_insns): Likewise.
1248 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1249 (copy_decl_to_var): Likewise.
1250 (copy_result_decl_to_var): Likewise.
1251 * tree-pretty-print.c (dump_generic_node): Do not handle
1252 CHANGE_DYNAMIC_TYPE_EXPR.
1253 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1254 * tree-ssa-operands.c (get_expr_operands): Likewise.
1255 * tree-ssa-structalias.c (struct variable_info): Remove
1256 no_tbaa_pruning member.
1257 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1258 (unify_nodes): Do not copy it.
1259 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1260 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1261 (set_uids_in_ptset): Do not check it.
1262 (find_what_var_points_to): Likewise.
1263 (compute_tbaa_pruning): Remove.
1264 (compute_points_to_sets): Do not call it.
1265 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1266 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1267 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1268 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1269 (DECL_NO_TBAA_P): Likewise.
1270 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1271 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1272 (expand_omp_atomic_pipeline): Do not set it.
1273 * print-tree.c (print_node): Do not dump it.
1274 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1277 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1280 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1283 2009-05-22 Mark Mitchell <mark@codesourcery.com>
1285 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1288 2009-05-22 Ben Elliston <bje@au.ibm.com>
1290 * Makefile.in (bversion.h, s-bversion): New targets.
1291 (TOPLEV_H): Add bversion.h.
1292 * toplev.h: Include "bversion.h".
1293 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1294 the __format__ attribute only if compiling with the same version
1295 of GCC as the sources (the "build version").
1297 2009-05-22 Ben Elliston <bje@au.ibm.com>
1299 * c-format.c (handle_format_attribute): Fix comment typo.
1301 2009-05-21 Steve Ellcey <sje@cup.hp.com>
1304 * config/ia64/ia64.opt (mfused-madd): New.
1305 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1306 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1307 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1308 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1309 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1310 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1311 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1312 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
1313 instruction if !TARGET_FUSED_MADD.
1314 (fpma, fpms): Remove colon from name.
1316 2009-05-22 Richard Guenther <rguenther@suse.de>
1318 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1319 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
1320 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1322 (create_expression_by_pieces): Only convert if necessary.
1323 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1324 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1326 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
1328 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1329 regular pattern from a template and rename it ...
1330 (*extzv_truncsi_exts): ... to this.
1332 2009-05-21 Richard Guenther <rguenther@suse.de>
1334 * cgraph.h (struct cgraph_node): Remove inline_decl member.
1335 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1336 (cgraph_default_inline_p): Likewise.
1337 (cgraph_decide_inlining_incrementally): Likewise.
1339 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
1340 Uros Bizjak <ubizjak@gmail.com>
1342 * config/i386/cpuid.h (bit_MOVBE): New.
1344 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1346 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1347 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1348 (ix86_handle_option): Handle OPT_mmovbe.
1349 (ix86_target_string): Add -mmovbe.
1350 (pta_flags): Add PTA_MOVBE.
1351 (processor_alias_table): Add PTA_MOVBE to "atom".
1352 (override_options): Handle PTA_MOVBE.
1354 * config/i386/i386.h (TARGET_MOVBE): New.
1356 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1357 (*bswapsi_movbe): New.
1358 (*bswapdi_movbe): Likewise.
1359 (bswapdi2): Renamed to ...
1361 (bswapdi2): New expander.
1363 * config/i386/i386.opt (mmovbe): New.
1365 * doc/invoke.texi: Document -mmovbe.
1367 2009-05-21 Taras Glek <tglek@mozilla.com>
1369 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1370 * gcc-plugin.h (plugin_init): Updated signature.
1371 * gcc-plugin.h (plugin_name_args): Moved to this header.
1372 * doc/plugins.texi (plugin_init): Updated documention to reflect
1374 * doc/plugins.texi (plugin_name_args): Added to documention.
1376 2009-05-21 Mark Mitchell <mark@codesourcery.com>
1378 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1379 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1381 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
1383 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1384 JUMP_TABLE_DATA_P predicates where applicable.
1385 * config/i386/predicates.md: Ditto.
1386 * config/i386/sse.md: Ditto.
1388 2009-05-21 Jakub Jelinek <jakub@redhat.com>
1390 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1391 operand2 -128 override length_immediate attribute to 1.
1392 * config/i386/predicates.md (constm128_operand): New predicate.
1394 * config/i386/i386.c (memory_address_length): Handle %r12
1395 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
1397 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1398 mode look through optional ZERO_EXTEND and SUBREG.
1399 * config/i386/i386.md (R12_REG): New define_constant.
1400 (prefix_data16): For sse unit set also for MODE_TI insns.
1401 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
1402 insns set if operand 1 is ext_QIreg_operand.
1403 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
1404 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1406 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1407 mode from MODE_DI to MODE_SI.
1408 (movdi_1_rex64): Override modrm and length_immediate attributes
1409 only for movabs (TYPE_IMOV, alternative 2).
1410 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1411 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1412 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1413 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1414 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1415 prefix_rex attribute if DImode.
1416 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1417 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1418 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1419 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1420 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1421 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1422 Likewise. For TYPE_IMOV clear length_immediate attribute.
1423 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1424 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1425 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1426 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1427 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1428 or one operand TYPE_ISHIFT.
1429 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1430 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1431 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1432 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1433 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1434 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1435 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1436 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1437 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1438 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1439 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1440 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1441 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1442 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1443 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1444 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1445 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1446 set mode attribute, don't override length attribute.
1447 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1449 (return_internal_long): Set length attribute to 2 instead of 1.
1450 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1451 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1452 prefix_rex attribute.
1453 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1455 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1457 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1459 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1461 2009-05-20 Ian Lance Taylor <iant@google.com>
1463 * tree.c (build_tree_list_vec_stat): New function.
1464 (ctor_to_vec): New function.
1465 (build_nt_call_vec): New function.
1466 (build_call_array): Change args to be a const pointer.
1467 (build_call_vec): New function.
1468 * tree.h (build_nt_call_vec): Declare.
1469 (build_tree_list_vec_stat): Declare.
1470 (build_tree_list_vec): Define.
1471 (build_call_array): Update declaration.
1472 (build_call_vec): Declare.
1473 (ctor_to_vec): Declare.
1474 * c-common.c (tree_vector_cache): New static variable.
1475 (make_tree_vector): New function.
1476 (release_tree_vector): New function.
1477 (make_tree_vector_single): New function.
1478 (make_tree_vector_copy): New function.
1479 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1480 (make_tree_vector_single, make_tree_vector_copy): Declare.
1481 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1482 (c_parser_expr_list): Don't manage cache here, instead call
1484 (c_parser_release_expr_list): Remove static function.
1485 (c_parser_vec_to_tree_list): Remove static function.
1486 (c_parser_attributes): Call build_tree_list_vec instead of
1487 c_parser_vec_to_tree_list. Call release_tree_vector instead of
1488 c_parser_release_expr_list.
1489 (c_parser_postfix_expression_after_primary): Likewise.
1490 (c_parser_objc_keywordexpr): Likewise.
1492 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
1494 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1495 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1496 TARGET_CONVERT_TO_TYPE.
1497 * hooks.c (hook_tree_const_tree_null): Define.
1498 * hooks.h (hook_tree_const_tree_null): Declare.
1499 * target.h (struct gcc_target): Add invalid_parameter_type,
1500 invalid_return_type, promoted_type, and convert_to_type fields.
1501 * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1502 (TARGET_INVALID_RETURN_TYPE): Define.
1503 (TARGET_PROMOTED_TYPE): Define.
1504 (TARGET_CONVERT_TO_TYPE): Define.
1505 (TARGET_INITIALIZER): Update for new fields.
1506 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1507 (grokparms): Check targetm.invalid_parameter_type.
1508 * c-typeck.c (default_conversion): Check targetm.promoted_type.
1509 * c-convert.c (convert): Check targetm.convert_to_type.
1511 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
1513 * config/mips/mips.md (*extenddi_truncate<mode>,
1514 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
1516 (*extendhi_truncateqi): New define_insn_and_sptit.
1518 2009-05-20 Jakub Jelinek <jakub@redhat.com>
1521 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1522 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1524 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
1526 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1527 the operand of VIEW_CONVERT_EXPR.
1529 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
1531 * config/i386/driver-i386.c (host_detect_local_cpu): Check
1532 extended family and model for Intel processors. Support Intel
1535 2009-05-20 Olivier Hainque <hainque@adacore.com>
1537 * gstab.h (stab_code_type): Define, to be used instead of the
1538 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
1540 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1541 occurrences by stab_code_type.
1542 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1544 2009-05-20 Martin Jambor <mjambor@suse.cz>
1546 * tree-flow.h (insert_edge_copies_seq): Undeclare.
1547 (sra_insert_before): Likewise.
1548 (sra_insert_after): Likewise.
1549 (sra_init_cache): Likewise.
1550 (sra_type_can_be_decomposed_p): Likewise.
1551 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1552 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1553 (sra_insert_before): Likewise.
1554 (sra_insert_after): Likewise.
1555 (sra_init_cache): Likewise.
1556 (insert_edge_copies_seq): Made static and moved upwards.
1558 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1561 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1563 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1564 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1567 2009-05-20 Richard Guenther <rguenther@suse.de>
1569 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1570 with mismatched comparison modes.
1572 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1574 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1575 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1576 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1577 with shifts for Thumb2.
1578 (orsi_notsi): New for orn.
1579 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1580 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1581 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1582 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1583 Don't invert remainder for IOR.
1585 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
1587 PR tree-optimization/40087
1588 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1589 number_of_iterations_ne): Rename never_infinite argument.
1590 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1591 number_of_iterations_le): Handle pointer-type ivs when
1592 exit_must_be_taken is false.
1593 (number_of_iterations_cond): Do not always assume that
1594 exit_must_be_taken if the control variable is a pointer.
1596 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
1598 * c-typeck.c (build_binary_op): Allow % on integal vectors.
1599 * doc/extend.texi (Vector Extension): Document that % is allowed too.
1601 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
1603 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1604 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1606 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
1609 * c.opt (Wlogical-op): Disabled by default.
1610 * c-opt (c_common_post_options): Do not enable Wlogical-op with
1612 * doc/invoke.texi (Wlogical-op): Likewise.
1614 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
1616 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1618 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1619 Propagate the type of the first operand.
1620 <ASSERT_EXPR>: Simplify.
1621 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1622 Rewrite using the RHS code as discriminant.
1623 <NOP_EXPR>: Turn into CASE_CONVERT.
1624 <PLUS_EXPR>: Propagate the type of the first operand.
1626 2009-05-19 Steve Ellcey <sje@cup.hp.com>
1628 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1629 (ia64_dconst_0_375): New.
1630 * config/ia64/ia64.c (ia64_override_options): Remove
1631 -minline-sqrt-min-latency warning.
1632 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1633 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1634 * config/ia64/ia64.md (*sqrt_approx): Remove.
1635 (sqrtsf2): Remove #if 0.
1636 (sqrtsf2_internal_thr): Rewrite and move to div.md.
1637 (sqrtdf): Remove assert.
1638 (sqrtdf2_internal_thr): Rewrite and move to div.md.
1639 (sqrtxf2): Remove #if 0.
1640 (sqrtxf2_internal_thr): Rewrite and move to div.md.
1641 * div.md (sqrt_approx_rf): New.
1642 (sqrtsf2_internal_thr): New implementation.
1643 (sqrtsf2_internal_lat): New.
1644 (sqrtdf2_internal_thr: New implementation.
1645 (sqrtxf2_internal): New implementation.
1647 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
1648 Hans-Peter Nilsson <hp@axis.com>
1650 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1651 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1652 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1653 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1654 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1655 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1656 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1657 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1658 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1659 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1660 * c-common.c: ...from here.
1662 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
1664 * c-common.c (warn_logical_operator): Remove unnecessary
1667 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1669 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1671 2009-05-19 Ben Elliston <bje@au.ibm.com>
1673 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1674 assignments with memcpy calls.
1675 (add_fdes): Likewise.
1676 (binary_search_unencoded_fdes): Likewise.
1677 (linear_search_fdes): Eliminate type puns.
1679 2009-05-19 Richard Guenther <rguenther@suse.de>
1681 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1682 not falsely claim to have propagated into all uses.
1684 2009-05-19 Ben Elliston <bje@au.ibm.com>
1686 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1689 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1691 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1692 * config/sh/sh.c (sh_legitimate_address_p): Make static.
1693 (TARGET_LEGITIMATE_ADDRESS_P): New.
1694 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1695 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1697 2009-05-18 Dodji Seketeli <dodji@redhat.com>
1700 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1701 child of the containing namespace's DIE.
1703 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
1705 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1706 *zero_extendhi_truncqi): Move after the zero_extend patterns.
1707 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1710 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
1713 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1714 gen_align with gen_pad.
1715 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1716 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1718 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1719 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1721 * config/i386/i386.md (align): Renamed to ...
1722 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1723 ASM_OUTPUT_MAX_SKIP_PAD.
1725 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
1727 * config.gcc: Fix variable syntax.
1730 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1731 before calling exact_log2.
1732 (output_iorsi3): Likewise.
1733 (output_xorsi3): Likewise.
1735 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
1737 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1738 for the none zero constant operand except for EQ and NE
1739 comprisons even when the first operand is R0.
1741 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
1743 * config/s390/2064.md: Remove trailing whitespaces.
1744 * config/s390/2084.md: Likewise.
1745 * config/s390/constraints.md: Likewise.
1746 * config/s390/fixdfdi.h: Likewise.
1747 * config/s390/libgcc-glibc.ver: Likewise.
1748 * config/s390/s390-modes.def: Likewise.
1749 * config/s390/s390-protos.h: Likewise.
1750 * config/s390/s390.c: Likewise.
1751 * config/s390/s390.h: Likewise.
1752 * config/s390/s390.md: Likewise.
1753 * config/s390/tpf-unwind.h: Likewise.
1755 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1757 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1759 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
1762 * configure.ac (m68k-*-*): Check if binutils support TLS.
1763 * configure: Regenerate.
1764 * config/m68k/predicates.md (symbolic_operand): Extend comment.
1765 * config/m68k/constraints.md (Cu): New constraint.
1766 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1767 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1768 (movsi): Handle TLS symbols.
1769 (addsi3_5200): Handle XTLS symbols, indent.
1770 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1771 (m68k_tls_reference_p): Declare.
1772 (m68k_legitimize_address): Declare.
1773 (m68k_unwrap_symbol): Declare.
1774 * config/m68k/m68k.opt (mxtls): New option.
1775 * config/m68k/m68k.c (ggc.h): Include.
1776 (m68k_output_dwarf_dtprel): Implement hook.
1777 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1778 (m68k_expand_prologue): Load GOT pointer when function needs it.
1779 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1780 (m68k_legitimate_constant_address_p): Same.
1781 (m68k_decompose_address): Handle TLS references.
1782 (m68k_get_gp): New static function.
1783 (enum m68k_reloc): New contants.
1784 (TLS_RELOC_P): New macro.
1785 (m68k_wrap_symbol): New static function.
1786 (m68k_unwrap_symbol): New function.
1787 (m68k_final_prescan_insn_1): New static function.
1788 (m68k_final_prescan_insn): New function.
1789 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1791 (legitimize_pic_address): Handle TLS references..
1792 (m68k_tls_get_addr, m68k_get_tls_get_addr)
1793 (m68k_libcall_value_in_a0_p)
1794 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1795 (m68k_call_m68k_read_tp): Helper variables and functions for ...
1796 (m68k_legitimize_tls_address): Handle TLS references.
1797 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1799 (m68k_legitimize_address): Handle TLS symbols.
1800 (m68k_get_reloc_decoration): New static function.
1801 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1803 (m68k_output_dwarf_dtprel): Implement hook.
1804 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1805 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1806 m68k_call_* routines.
1807 (sched_attr_op_type): Handle TLS symbols.
1808 (gt-m68k.h): Include.
1809 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1810 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1812 2009-05-18 Martin Jambor <mjambor@suse.cz>
1814 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1815 (visit_store_addr_for_mod_analysis): New function.
1816 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1817 (determine_cst_member_ptr): Use gimple_assign_single_p.
1818 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1819 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1820 operands. Don't check number of operands of a NOP_EXPR.
1822 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
1824 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1826 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
1829 * c-common.c (warn_logical_operator): Don't warn if one of
1830 expression isn't always true or false.
1832 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
1834 * config/i386/biarch32.h: New file.
1835 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1837 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
1839 * config/mips/mips.md (*zero_extend<mode>_trunchi,
1840 *zero_extend<mode>_truncqi): Merge these into ...
1841 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
1842 Name the pattern following this as *zero_extendhi_truncqi.
1844 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
1847 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
1848 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
1849 (output_info): Make field HOST_WIDEST_INT.
1850 (print_statistics): Use HOST_WIDEST_INT_PRINT.
1851 (dump_bitmat_statistics): Same.
1853 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
1855 * config.gcc (use_gcc_stdint): Set to wrap.
1856 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
1857 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
1858 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1859 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
1860 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
1861 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
1862 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1863 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
1865 2009-05-16 Joseph Myers <joseph@codesourcery.com>
1867 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
1869 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
1870 Move definitions earlier.
1871 (OPT_ARCH64, OPT_ARCH32): Define.
1872 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
1875 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
1878 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
1881 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
1883 * arm.md (movdi2): Copy non-reg values to DImode registers.
1885 2009-05-16 Jakub Jelinek <jakub@redhat.com>
1888 * final.c (label_to_max_skip): New function.
1889 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
1890 CODE_LABEL_NUMBER <= max_labelno.
1891 * output.h (label_to_max_skip): New prototype.
1892 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
1893 (ix86_avoid_jump_mispredicts): ... this. Don't define if
1894 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
1895 Handle CODE_LABELs with >= 16 byte alignment or with
1896 max_skip == (1 << align) - 1.
1897 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
1898 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
1901 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
1902 .p2align 3 if MAX_SKIP is smaller than 7.
1903 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1905 2009-05-15 Ian Lance Taylor <iant@google.com>
1907 * alias.c (struct alias_set_entry_d): Rename from struct
1908 alias_set_entry. Change all uses.
1909 * except.c (struct call_site_record_d): Rename from struct
1910 call_site_record. Change all uses.
1911 * except.h (struct eh_region_d): Rename from struct eh_region.
1913 * gcse.c (struct hash_table_d): Rename from struct hash_table.
1915 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
1916 ivtype_map_elt. Change all uses.
1917 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
1919 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
1920 * graphite.h (struct name_tree_d): Rename from struct name_tree.
1922 (struct sese_d): Rename from struct sese. Change all uses.
1923 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
1924 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
1925 * optabs.h (struct optab_d): Rename from struct optab. Change all
1927 (struct convert_optab_d): Rename from struct convert_optab.
1929 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1930 ipa_opt_pass. Change all uses.
1931 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
1934 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1935 defined as a typedef.
1936 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1939 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
1942 * fold-const.c (make_range,build_range_check,merge_ranges): Move
1944 (merge_ranges): Returns bool.
1945 * tree.h (make_range): .. to here.
1946 (build_range_check): Likewise.
1947 (merge_ranges): Likewise. Renamed from merge_ranges.
1948 * c-typeck.c (parser_build_binary_op): Update calls to
1949 warn_logical_operator.
1950 * c-common.c (warn_logical_operator): Add new warning.
1951 * c-common.h (warn_logical_operator): Update declaration.
1953 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
1955 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1957 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1959 * doc/install.texi: Document MPC requirements, flags etc.
1961 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1962 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1963 Evaluate constant arguments.
1964 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1965 (fold_builtin_1): Likewise, also evaluate constant arguments.
1966 Remove superfluous break.
1967 (do_mpc_ckconv): New.
1968 * real.h: Include mpc.h.
1969 * toplev.c (print_version): Output MPC version info if available.
1971 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
1973 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1975 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
1977 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1980 2009-05-15 Jan Hubicka <jh@suse.cz>
1982 * doc/invoke.texi (max-early-inliner-iterations): New flag.
1983 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1984 (try_inline): Fix return value.
1985 (cgraph_decide_inlining_incrementally): Honor new value.
1986 (cgraph_early_inlining): Handle indirect inlining.
1987 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1989 2009-05-15 Jan Hubicka <jh@suse.cz>
1991 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1992 * cgraphunit.c (cgraph_finalize_function): Set it.
1993 (cgraph_expand_function): Use it.
1995 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
1997 * real.c (encode_ieee_half): Define.
1998 (decode_ieee_half): Define.
1999 (ieee_half_format): Define.
2000 (arm_half_format): Define.
2001 * real.h (ieee_half_format): Declare.
2002 (arm_half_format): Declare.
2004 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
2006 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
2007 swapped, and reversed optabs exist before trying to use them.
2009 2009-05-15 Paul Brook <paul@codesourcery.com>
2010 Sandra Loosemore <sandra@codesourcery.com>
2012 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2013 loads. Allow PRE_DEC.
2014 (output_move_neon): Handle PRE_DEC.
2015 (arm_print_operand): Add 'A' for neon structure loads.
2016 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2017 * config/arm/neon.md (neon_mov): Update comment.
2018 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2020 (Um): New constraint.
2022 2009-05-15 Jan Hubicka <jh@suse.cz>
2024 Revert the following patch until testsuite fallout is fixed:
2025 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2026 * cgraph.h (struct inline_summary): New filed self_wize,
2027 size_inlining_benefit, self_time and time_inlining_benefit.
2028 (struct cgraph_global_info): Replace insns by time ans size fields.
2029 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2030 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2031 (ipcp_update_callgraph): Do not touch function bodies.
2032 * ipa-inline.c: Include except.h
2033 (MAX_TIME): New constant.
2034 (overall_insns): Remove
2035 (overall_size, max_benefit): New static variables.
2036 (cgraph_estimate_time_after_inlining): New function.
2037 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2038 (cgraph_clone_inlined_nodes): Update size.
2039 (cgraph_mark_inline_edge): Update size.
2040 (cgraph_estimate_growth): Use size info.
2041 (cgraph_check_inline_limits): Check size.
2042 (cgraph_default_inline_p): Likewise.
2043 (cgraph_edge_badness): Compute badness based on benefit and size cost.
2044 (cgraph_decide_recursive_inlining): Check size.
2045 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2047 (cgraph_decide_inlining): Likewise.
2048 (cgraph_decide_inlining_incrementally): Likewise; honor
2049 PARAM_EARLY_INLINING_INSNS.
2050 (likely_eliminated_by_inlining_p): New predicate.
2051 (estimate_function_body_sizes): New function.
2052 (compute_inline_parameters): Use it.
2053 * except.c (must_not_throw_labels): New function.
2054 * except.h (must_not_throw_labels): Declare.
2055 * tree-inline.c (init_inline_once): Kill inlining_weigths
2056 * tree-ssa-structalias.c: Avoid uninitialized warning.
2057 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2058 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2059 (PARAM_INLINE_CALL_COST): Remove.
2060 (PARAM_EARLY_INLINING_INSNS): New.
2062 2009-05-15 Richard Guenther <rguenther@suse.de>
2064 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2065 not TODO_update_ssa.
2067 2009-05-15 Richard Guenther <rguenther@suse.de>
2069 PR tree-optimization/39999
2070 * gimple.h (gimple_expr_type): Use the expression type looking
2071 through useless conversions.
2072 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2073 (vn_nary_op_insert_stmt): Likewise.
2074 (simplify_binary_expression): Likewise.
2076 2009-05-15 Richard Guenther <rguenther@suse.de>
2078 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2079 New options, enabled by default.
2080 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2082 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2083 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2084 * tree-ssa-structalias.c (gate_tree_pta): New function.
2085 (pass_build_alias): Use it.
2087 2009-05-15 Joseph Myers <joseph@codesourcery.com>
2089 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2090 recurse on an invariant address if a conversion from a pointer
2091 type to a wider integer type is involved.
2093 2009-05-15 Jan Hubicka <jh@suse.cz>
2095 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2096 * cgraph.h (struct inline_summary): New filed self_wize,
2097 size_inlining_benefit, self_time and time_inlining_benefit.
2098 (struct cgraph_global_info): Replace insns by time ans size fields.
2099 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2100 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2101 (ipcp_update_callgraph): Do not touch function bodies.
2102 * ipa-inline.c: Include except.h
2103 (MAX_TIME): New constant.
2104 (overall_insns): Remove
2105 (overall_size, max_benefit): New static variables.
2106 (cgraph_estimate_time_after_inlining): New function.
2107 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2108 (cgraph_clone_inlined_nodes): Update size.
2109 (cgraph_mark_inline_edge): Update size.
2110 (cgraph_estimate_growth): Use size info.
2111 (cgraph_check_inline_limits): Check size.
2112 (cgraph_default_inline_p): Likewise.
2113 (cgraph_edge_badness): Compute badness based on benefit and size cost.
2114 (cgraph_decide_recursive_inlining): Check size.
2115 (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2117 (cgraph_decide_inlining): Likewise.
2118 (cgraph_decide_inlining_incrementally): Likewise; honor
2119 PARAM_EARLY_INLINING_INSNS.
2120 (likely_eliminated_by_inlining_p): New predicate.
2121 (estimate_function_body_sizes): New function.
2122 (compute_inline_parameters): Use it.
2123 * except.c (must_not_throw_labels): New function.
2124 * except.h (must_not_throw_labels): Declare.
2125 * tree-inline.c (init_inline_once): Kill inlining_weigths
2126 * tree-ssa-structalias.c: Avoid uninitialized warning.
2127 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2128 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2129 (PARAM_INLINE_CALL_COST): Remove.
2130 (PARAM_EARLY_INLINING_INSNS): New.
2131 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2132 (inline-call-cost): Remove.
2133 (early-inlining-insns): New.
2135 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
2137 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
2139 (print_int_cst_bounds_in_octal_p): Likewise.
2140 (dbxout_type): Adjust calls to above functions. Be prepared to deal
2142 * dwarf2out.c (base_type_die): Likewise.
2143 (is_subrange_type): Delete.
2144 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
2145 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2146 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2147 the destination type is boolean.
2148 (build_range_check): Do not special-case subtypes.
2149 (fold_sign_changed_comparison): Likewise.
2150 (fold_unary): Likewise.
2151 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2152 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2153 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2154 * tree.c (subrange_type_for_debug_p): New predicate based on the former
2156 * tree.h (subrange_type_for_debug_p): Declare.
2157 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2158 (convert_affine_scev): Remove call to above function.
2159 (chrec_convert_aggressive): Likewise.
2160 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2161 false for conversions involving subtypes.
2162 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2163 (vrp_val_min): Likewise.
2164 (needs_overflow_infinity): Likewise.
2165 (extract_range_from_unary_expr): Likewise.
2167 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
2169 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2170 * config/frv/frv.c: Likewise.
2171 * config/s390/s390.c: Likewise.
2172 * config/sparc/sparc.h: Likewise.
2173 * config/i386/i386.h: Likewise.
2174 * config/i386/i386.c: Likewise.
2175 * config/crx/crx.c: Likewise.
2176 * config/m68hc11/m68hc11.h: Likewise.
2177 * config/iq2000/iq2000.c: Likewise.
2178 * config/mn10300/mn10300.h: Likewise.
2179 * config/mn10300/mn10300.c: Likewise.
2180 * config/m68k/m68k.c: Likewise.
2181 * config/rs6000/rs6000.c: Likewise.
2182 * config/rs6000/xcoff.h: Likewise.
2183 * config/rs6000/linux64.h: Likewise.
2184 * config/rs6000/sysv4.h: Likewise.
2185 * config/score/score3.c: Likewise.
2186 * config/score/score7.c: Likewise.
2187 * config/score/score.c: Likewise.
2188 * config/arm/arm.md: Likewise.
2189 * config/mips/mips.c: Likewise.
2190 * config/mips/mips.md: Likewise.
2191 * config/bfin/bfin.h: Likewise.
2192 * config/pa/pa.c: Likewise.
2193 * config/pa/constraints.md: Likewise.
2195 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2196 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2197 * config/pdp11/pdp11.h: Use memory_address_p instead.
2199 2009-05-14 Ian Lance Taylor <iant@google.com>
2201 * passes.c (finish_optimization_passes): Change i to int.
2202 * plugin.c (plugins_active_p): Change event to int.
2203 (dump_active_plugins): Likewise.
2204 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2206 * tree.c (tree_range_check_failed): Change c to unsigned int.
2207 (omp_clause_range_check_failed): Likewise.
2208 (build_common_builtin_nodes): Change mode to int. Add cast.
2209 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2210 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2212 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2213 ++ or -- with a variable of enum type.
2215 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2218 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2220 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2222 * store-motion.c: Do not include params.h
2223 * Makefile.in: Fix dependencies for various files.
2225 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
2227 * auto-inc-dec.c: Fix pass description, remove apparent
2228 accidental duplication.
2230 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
2233 * ipa-utils.h (memory_identifier_string): Moved to ...
2234 * tree.h (memory_identifier_string): Here. Add GTY(()).
2236 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
2238 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2239 in the former documentation of...
2240 (GO_IF_LEGITIMATE_ADDRESS): ... this.
2241 * ira-conflicts.c (get_dup_num): Use address_operand.
2242 * targhooks.c (default_legitimate_address_p): New.
2243 * targhooks.h (default_legitimate_address_p): New.
2244 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2246 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2247 * target.h (struct target): Add legitimate_address_p.
2248 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2249 (TARGET_INITIALIZER): Include it.
2251 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2252 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2253 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2254 (TARGET_LEGITIMATE_ADDRESS_P): New.
2256 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2257 (REG_OK_STRICT_P): Delete.
2258 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2259 (frv_legitimate_address_p_1): ... this.
2260 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2261 (frv_legitimate_address_p_1): ... the renamed old
2262 frv_legitimate_address_p.
2263 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2264 (TARGET_LEGITIMATE_ADDRESS_P): New.
2266 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2267 * config/s390/s390-protos.h (legitimate_address_p): Remove.
2268 * config/s390/s390.c (legitimate_address_p): Rename to...
2269 (s390_legitimate_address_p): ... this, make static.
2270 (legitimize_address): Adjust call.
2271 (TARGET_LEGITIMATE_ADDRESS_P): New.
2272 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2274 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2275 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2276 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2277 (TARGET_LEGITIMATE_ADDRESS_P): New.
2279 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2280 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2281 * config/spu/spu.c (spu_legitimate_address): Rename to...
2282 (spu_legitimate_address_p): ... this, make static.
2283 (TARGET_LEGITIMATE_ADDRESS_P): New.
2285 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2286 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2287 * config/sparc/sparc.c (legitimate_address_p): Rename to...
2288 (sparc_legitimate_address_p): ... this, make static and return bool.
2289 (legitimize_address): Adjust call.
2290 (TARGET_LEGITIMATE_ADDRESS_P): New.
2292 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2293 * config/i386/i386-protos.h (legitimate_address_p): Remove.
2294 * config/i386/i386.c (legitimate_address_p): Rename to...
2295 (ix86_legitimate_address_p): ... this, make static.
2296 (constant_address_p): Move after it, adjust call.
2297 (TARGET_LEGITIMATE_ADDRESS_P): New.
2299 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2300 * config/avr/avr-protos.h (legitimate_address_p): Remove.
2301 * config/avr/avr.c (legitimate_address_p): Rename to...
2302 (avr_legitimate_address_p): ... this, make static.
2303 (legitimize_address): Adjust call.
2304 (TARGET_LEGITIMATE_ADDRESS_P): New.
2306 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2307 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2308 * config/crx/crx.c (crx_legitimate_address_p): Make static.
2309 (TARGET_LEGITIMATE_ADDRESS_P): New.
2311 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2312 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2313 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2314 (TARGET_LEGITIMATE_ADDRESS_P): New.
2316 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2317 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2319 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2321 (TARGET_LEGITIMATE_ADDRESS_P): New.
2323 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2324 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2326 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2328 (m68hc11_legitimate_address_p): ... this, make static.
2329 (go_if_legitimate_address_internal): Rename to...
2330 (m68hc11_legitimate_address_p_1): ... this.
2331 (legitimize_address): Adjust call.
2332 (TARGET_LEGITIMATE_ADDRESS_P): New.
2334 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2335 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2336 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2337 (TARGET_LEGITIMATE_ADDRESS_P): New.
2339 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2340 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2341 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2342 (mn10300_legitimate_address_p): ... this, make static.
2343 (TARGET_LEGITIMATE_ADDRESS_P): New.
2345 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2346 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2347 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2348 (TARGET_LEGITIMATE_ADDRESS_P): New.
2350 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2351 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2352 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2353 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2354 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2355 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2356 (rs6000_legitimate_address_p): ... this, make static.
2357 (TARGET_LEGITIMATE_ADDRESS_P): New.
2358 (REG_MODE_OK_FOR_BASE_P): Delete.
2359 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2361 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2362 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2364 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2365 static, adjust types.
2366 (TARGET_LEGITIMATE_ADDRESS_P): New.
2368 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2369 * config/score/score.c (score_address_p): Rename to...
2370 (score_legitimate_address_p): ... this.
2371 (TARGET_LEGITIMATE_ADDRESS_P): New.
2372 * config/score/score3.c (score3_address_p): Rename to...
2373 (score3_legitimate_address_p): ... this.
2374 * config/score/score7.c (score7_address_p): Rename to...
2375 (score7_legitimate_address_p): ... this.
2377 * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2378 THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2379 GO_IF_LEGITIMATE_ADDRESS): Delete.
2380 * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2381 thumb2_legitimate_address_p): Delete.
2382 (arm_legitimate_address_p): Rename to...
2383 (arm_legitimate_address_outer_p): ... this.
2384 * config/arm/constraints.md ("Uq"): Adjust call.
2385 * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2386 * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2387 (arm_legitimate_address_outer_p): ... this.
2388 (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2389 (TARGET_LEGITIMATE_ADDRESS_P): New.
2391 * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2392 * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2393 * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2394 (TARGET_LEGITIMATE_ADDRESS_P): New.
2396 * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2397 * config/vax/vax-protos.h (legitimate_address_p): Remove.
2398 * config/vax/vax.c (legitimate_address_p): Rename to...
2399 (vax_legitimate_address_p): ... this, make static.
2400 (TARGET_LEGITIMATE_ADDRESS_P): New.
2402 * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2403 * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2404 * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2405 (TARGET_LEGITIMATE_ADDRESS_P): New.
2407 * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2408 * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2409 * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2410 (mmix_legitimate_address_p): ... this, make static.
2411 (TARGET_LEGITIMATE_ADDRESS_P): New.
2413 * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2414 * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2415 * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2416 (TARGET_LEGITIMATE_ADDRESS_P): New.
2418 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
2420 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2421 of MODE_COMPLEX_INT.
2423 2009-05-14 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2425 * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2426 LCT_NORMAL in function call.
2427 * mips-tdump.c (print_file_desc): Add cast to enum type.
2428 * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2429 (mark_stabs): Add casts to enum types.
2430 (parse_stabs_common): Add casts to enum types.
2432 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
2434 * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2435 Check for invalid values of LETTER.
2437 2009-05-13 Taras Glek <tglek@mozilla.com>
2439 * attribs.c (register_attribute): moved out attribute registration into
2441 * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2442 * gcc-plugin.h: Added forward decl for register_attribute.
2443 * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2444 * plugin.c (register_callback, invoke_plugin_callbacks): Added
2445 PLUGIN_ATTRIBUTES boilerplate.
2447 2009-05-14 Dave Korn <dave.korn.cygwin@gmail.com>
2449 * config/i386/msformat-c.c (ms_printf_length_specs): Use enumeration
2450 values even in sentinel and empty entries.
2451 (ms_printf_flag_specs): Likewise.
2452 (ms_scanf_flag_specs): Likewise.
2453 (ms_strftime_flag_specs): Likewise.
2454 (ms_print_char_table): Likewise.
2455 (ms_scan_char_table): Likewise.
2456 (ms_time_char_table): Likewise.
2458 2009-05-13 Doug Kwan <dougkwan@google.com>
2460 * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2462 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
2464 * config/mips/mips.md (store): Add attributes for QI and HI.
2466 (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2467 (truncdi<mode>2): ... this new pattern.
2469 2009-05-13 Brad Hards <bradh@kde.org>
2471 * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2473 2009-05-14 Jakub Jelinek <jakub@redhat.com>
2474 Ben Elliston <bje@au.ibm.com>
2477 * dse.c (check_mem_read_rtx): Guard against width == -1.
2479 2009-05-13 Michael Matz <matz@suse.de>
2482 * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2483 (trivially_conflicts_p): New function.
2484 (insert_backedge_copies): Use it.
2486 2009-05-13 Janis Johnson <janis187@us.ibm.com>
2488 * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2489 (handle_stdc_pragma): Use new enum constant names.
2490 (handle_pragma_float_const_decimal64): Ditto.
2492 2009-05-13 Ian Lance Taylor <iant@google.com>
2494 * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2497 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
2499 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2500 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2502 * config/m68k/m68k.h (FL_UCLINUX): Define.
2504 2009-05-13 Jan Hubicka <jh@suse.cz>
2506 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2508 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2510 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2511 unless -fschedule-insns is specified.
2513 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2516 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2517 TARGET_EXPAND_CBRANCHDI4.
2518 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2519 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2520 (cmpeqdi): Fix comment.
2522 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
2524 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2525 (sh_legitimate_address_p): Likewise.
2526 * config/sh/sh.c (sh_legitimate_index_p): New.
2527 (sh_legitimate_address_p): Likewise.
2528 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2529 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2530 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2531 (MAYBE_BASE_REGISTER_RTX_P): New macro.
2532 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2533 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2534 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2535 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2536 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2538 2009-05-12 Jan Hubicka <jh@suse.cz>
2540 * tree-inline.c (estimate_operator_cost): Add operands;
2541 when division happens by constant, it is cheap.
2542 (estimate_num_insns): Loads and stores are not having cost of 0;
2543 EH magic stuff is cheap; when computing runtime cost of switch,
2544 use log2 base of amount of its cases; builtin_expect has cost of 0;
2545 compute cost for moving return value of call.
2546 (init_inline_once): Initialize time_based flags.
2547 * tree-inline.h (eni_weights_d): Add time_based flag.
2549 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2551 * df-core.c: Update head documentation.
2553 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
2556 * rs6000.c (rs6000_generate_compare): Use op1b instead of
2557 shadowing exisiting variable op1.
2559 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
2562 * config/i386/driver-i386.c (processor_signatures): New enum.
2563 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2564 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2565 processor signature to detect geode processor.
2567 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2571 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2573 * optabs.c (prepare_cmp_insn): Temporarily disable test that
2574 causes spurious differences between trunk and cond-optab branch.
2576 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
2578 * dojump.c (compare_from_rtx): Delete.
2579 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
2580 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
2581 if the comparison does not satisfy the predicate; test predicates for
2582 operands 2 and 3 of a cstore pattern. Don't try cstore optab
2583 further if one existing pattern fails.
2584 * expr.h (compare_from_rtx): Delete.
2585 (prepare_operand): Declare it.
2586 * optabs.c: Change "lib call" to "libcall" throughout.
2587 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2588 HAVE_conditional_trap, emit_cmp_insn): Delete.
2589 (can_compare_p): Delete cmp_optab case.
2590 (prepare_float_lib_cmp): Return an rtx and a machine mode.
2591 Accept other parameters by value.
2592 (prepare_operand): Make non-static.
2593 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
2594 other parameters by value. Try to widen operands here based on
2595 an optab_methods argument and looking at cbranch_optab.
2596 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2597 loop. Use cbranch_optab directly.
2598 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
2599 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2601 (emit_conditional_move, emit_conditional_add): Inline what's needed
2602 of compare_from_rtx, using new prepare_cmp_insn for the rest.
2603 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2604 with COMPARE. Move cmov_optab and cstore_optab above
2605 with cbranch_optab, move cmp_optab down with ucmp_optab,
2606 remove tst_otpab. Do not initialize trap_rtx.
2607 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
2608 for trap code. Do not check HAVE_conditional_trap. Use
2609 prepare_cmp_insn. Accept no predicate for operand 3.
2610 * optabs.h (OTI_cmp): Mark as used only for libcalls.
2611 (OTI_ctrap, ctrap_optab): New.
2612 (tst_optab): Delete.
2613 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2614 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2615 with lookup of ctrap_optab.
2616 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2617 setcc_gen_code): Delete.
2620 * combine.c (combine_simplify_rtx, simplify_set): Do not
2621 special case comparing against zero for cc0 machines.
2622 * simplify-rtx.c (simplify_binary_operation_1): Never remove
2623 COMPARE on cc0 machines.
2624 (simplify_relational_operation): Return a new expression when
2625 a COMPARE could be removed.
2626 * final.c (final_scan_insn): Compare cc_status values
2627 against LHS of a (compare FOO (const_int 0)) cc0 source.
2628 Also check if cc_status.value is the full compare.
2630 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2631 (cstoreMM4): Document.
2632 (conditional_trap): Document ctrapMM4 instead.
2633 (sync_compare_and_swapMM): Refer to cbranchcc4.
2634 (Dependent Patterns): Eliminate obsolete information referring to
2635 the old jump optimization phase.
2636 (Canonicalization): Include cbranchcc4 case, omit canonicalization
2637 of compares with 0 on cc0 machines.
2638 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2639 avoiding references to cc0. Remove text about storing operands
2641 * doc/tm.texi (Condition Codes): Include blurb on different
2642 condition code representations, separate into subsections for
2643 CC0, MODE_CC and conditional execution.
2645 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2646 alpha_emit_setcc): Accept operands and a machine mode.
2647 * config/alpha/alpha.c (alpha_emit_conditional_branch):
2648 Get code/op0/op1 from operands, use machine mode argument
2649 instead of alpha_compare.fp_p. Emit the branch here.
2650 (alpha_emit_setcc): Likewise, and return boolean.
2651 (alpha_emit_conditional_move): Likewise. Assert that
2652 cmp_op_mode == cmp_mode, and simplify accordingly.
2653 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2654 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2655 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2657 (stack probe test): Use cbranchdi4.
2658 * config/alpha/predicates.md (alpha_cbranch_operator): New.
2660 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
2661 * config/arc/arc.h (movsicc, movsfcc): Use it.
2662 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2663 (cbranchsi4, cstoresi4): New.
2664 (cmpsi, bCC and sCC expanders): Remove.
2666 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2667 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2668 * config/arm/predicates.md (arm_comparison_operator): Only include
2669 floating-point operators if there is a hardware floating-point unit.
2670 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2671 deferring to cbranch_cc and cstore_cc respectively.
2672 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2673 cbranch_cc, cstore_cc): New.
2674 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2676 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2678 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2679 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2681 (adjust_insn_length): Adjust calls.
2682 (avr_reorg): Handle (compare (foo) (const_int 0)).
2683 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2684 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2685 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2686 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2688 (cbranchqi4, cbranchhi4, cbranchsi4): New.
2689 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2691 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2692 (cbranchsi4, cstorebi4, cstoresi4): New.
2693 (movbisi): This insn is duplicate, split it to zero_extend.
2694 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2695 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
2696 (bfin_optimize_loop): Use cbranch expander.
2697 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2698 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2699 (bfin_bimode_comparison_operator): ... this.
2700 (bfin_direct_comparison_operator): New.
2702 * config/cris/cris.c (cris_normal_notice_update_cc): Look
2703 inside (compare FOO (const_int 0)).
2704 (cris_rtx_costs): Handle ZERO_EXTRACT.
2705 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2706 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2707 (*tstdi_v32): Delete.
2708 (*cmpdi_non_v32): Add M alternative for operand 1.
2709 (cmpsi, cmp<mode>): Make private.
2710 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2712 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2714 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2715 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2716 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2717 (cc_reg_operand): New.
2719 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2720 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2721 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2722 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2723 crx_expand_scond): Delete.
2725 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2727 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2728 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2730 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2731 cstoresi4, cstoresf4, cstoredf4): New.
2732 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2733 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2734 Receive the entire operands array.
2735 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2736 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2737 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2738 Get test/op0/op1 from the operands array.
2739 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2741 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2742 (h8300_expand_store): New.
2743 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2745 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
2746 (h8300_expand_store): New.
2747 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2748 or do not try to produce (set (cc0) REG).
2749 (peepholes): Wrap arguments with COMPARE. Add a peephole to
2750 change a compare into a move to a scratch register. Disable some
2751 peepholes when comparing with zero.
2752 (tstsi, tsthi, tstsi, cmpqi): Make private.
2755 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2758 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2759 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2760 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2761 (ix86_emit_i387_log1p): Use cbranchxf2.
2762 (ix86_expand_setcc): Return void.
2763 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2764 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2765 cmp<MODEF>, cmpcc): Remove.
2766 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2767 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2768 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2769 (sCC and bCC expanders): Remove.
2770 (stack_protect_test): Use cbranchcc4.
2772 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2774 (ia64_expand_compare): Accept three rtx by reference and return void.
2775 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2776 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
2777 from *expr. Update *expr with the BImode comparison to do.
2778 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2779 cmptf, bCC, sCC, conditional_trap): Delete.
2780 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
2781 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2782 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2783 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2784 * config/ia64/predicates.md (ia64_cbranch_operator): New.
2786 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2787 type of last argument.
2788 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2789 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2790 use machine mode argument instead of branch_type. Remove dead
2791 code for floating-point comparisons.
2792 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2793 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2795 (cbranchsi4, cstoresi4): New.
2796 * config/iq2000/predicates.md (reg_or_const_operand): New.
2798 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2799 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2800 (b<code>_op): Rewrite to...
2801 (bcc_op): ... this, using match_operator.
2802 (s<code>_op): Rewrite to...
2803 (scc_op): ... this, using match_operator.
2804 (s<code>_24_op): Rewrite to...
2805 (scc_op_24): ... this, using match_operator.
2806 (s<code>_<mode>): Rewrite to...
2807 (cstore<mode>4): ... this, using match_operator.
2808 (s<code>_<mode>_24): Rewrite to...
2809 (cstore<mode>4_24): ... this, using match_operator.
2810 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2811 m32c_unpend_compare, m32c_expand_scc): Delete.
2812 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2813 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2814 (m32c_expand_movcc): Change NE to EQ if necessary.
2815 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2817 * config/m32r/m32r-protos.h (gen_cond_store): New.
2818 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2819 (gen_cond_store): New, from sCC patterns.
2820 (m32r_expand_block_move): Use cbranchsi4.
2821 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2822 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2823 (cbranchsi4, cstoresi4): New.
2825 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2827 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2828 (m68hc11_notice_update_cc): Look into a compare with 0.
2829 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2831 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2832 cmphi, cmpqi, bCC): Delete.
2833 (cbranchsi4, cbranchhi4, cbranchqi4): New.
2834 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2835 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2838 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2839 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2840 * config/m68k/constraints.md (H): New.
2841 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
2842 the define_insn below.
2843 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
2844 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
2845 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
2846 patterns): Wrap RHS with COMPARE.
2847 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
2848 (*cmpdi_internal): Name this pattern.
2849 (cmpdi): Change to define_insn.
2850 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
2851 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
2852 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
2854 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
2855 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
2856 (conditional_trap): Change to...
2857 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
2858 (*conditional_trap): Use the ordered_comparison_operator and
2859 const1_operand predicates.
2860 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
2861 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
2862 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
2863 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
2865 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
2866 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
2867 (mcore_gen_compare): New.
2868 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
2869 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
2870 (mcore_gen_compare): ... this.
2871 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
2872 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
2873 (stack probe pattern): Use cbranchsi4.
2875 * config/mips/predicates.md (mips_cstore_operator): New.
2876 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
2877 * config/mips/mips.md (any_cond): Delete.
2878 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
2880 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
2881 fixuns_truncsfdi2): Use cbranch patterns.
2882 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
2883 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
2884 Adjust call to mips_expand_conditional_branch.
2885 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
2887 * config/mips/mips-protos.h (mips_expand_conditional_branch,
2888 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
2889 * config/mips/mips.c (cmp_operands): Delete.
2890 (mips_emit_compare): Get comparison operands from *op0/*op1.
2891 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
2892 that it succeeds. Use op0/op1 instead of cmp_operands.
2893 (mips_expand_conditional_branch, mips_expand_conditional_move,
2894 mips_expand_conditional_trap): Likewise.
2895 (mips_block_move_loop): Use cbranch patterns.
2896 * config/mips/mips.h (cmp_operands): Delete.
2898 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
2899 (mmix_gen_compare_reg): Just return a register in the right CC mode.
2900 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
2901 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
2902 (*cmpcc_folded): Rename to...
2903 (*cmpdi_folded): this.
2904 (*cmpcc): Rename to...
2906 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
2909 (cbranchdf4): New. Handle invalid comparisons here.
2910 * config/mmix/predicates.md (float_comparison_operator): New.
2912 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
2913 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
2914 * config/mn10300/mn10300.md (tst): Delete.
2915 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
2916 Name these patterns and wrap RHS in a compare.
2917 (*cmpsi): Make this pattern private. Include tst.
2918 (*cmpsf): Make this pattern private.
2919 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
2920 (compare with zero peepholes): Likewise.
2922 (cbranchsi4, cbranchsf4): New.
2923 (casesi): Use cbranchsi4.
2925 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
2926 hppa_branch_type): Delete.
2927 (return_addr_rtx): Use cbranchsi4.
2928 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
2929 Emit CCFPmode comparison here.
2930 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2931 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2932 hppa_branch_type): Delete.
2933 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2934 (movsicc, movdicc): Remove references to hppa_compare_op0,
2935 hppa_compare_op1 and compare_from_rtx.
2936 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2937 (casesi): Use cbranchsi4.
2939 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2940 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2941 * config/pdp11/pdp11.md (register_or_const0_operand): New.
2942 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
2943 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2945 (cbranchdf4, cbranchhi4, cbranchqi4): New.
2946 (*branch, *branch_inverted): New.
2948 * config/picochip/picochip.md (cbranchhi4): Use
2949 ordered_comparison_operator.
2950 (cmphi, bCC): Remove.
2952 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2953 (trap_comparison_operator): Delete.
2954 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2955 rs6000_emit_cbranch): Accept mode and operands.
2956 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2957 rs6000_compare_fp_p): Delete.
2958 (rs6000_generate_compare): Accept mode and comparison. Extract code
2959 and op0/op1 from there. Replace references to rs6000_compare_op0
2960 and rs6000_compare_op1.
2961 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2962 extract result from passed operands.
2963 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2964 extract loc from passed operands.
2965 (rs6000_emit_cmove): Likewise.
2966 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2967 rs6000_compare_fp_p): Delete.
2968 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2969 (cbranch<GPR>4, cbranch<FP>4): New.
2970 (cstore<mode>4): New. Consolidate here all choices about when to use
2971 portable or specialized sCC sequences.
2972 (stack_protect_test): Use cbranchsi4.
2973 (conditional_trap): Replace with ctrap<GPR>4.
2974 (conditional trap insn): Replace trap_comparison_operator with
2975 ordered_comparison_operator.
2977 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2978 (s390_emit_prologue): Use ctrap.
2979 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2980 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2981 New predicates replacing...
2982 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2983 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2984 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2985 (add<mode>cc): Do not use s390_compare_op0/op1.
2986 (s<code>): Change to...
2987 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2989 (cstorecc4): ... this. Handle EQ or NE equally.
2990 (*sne): Un-privatize for use in cstorecc4.
2991 (b<code>): Change to...
2992 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2993 (conditional_trap): Replace with...
2994 (ctrap<GPR>4, ctrap<FP>4): ... these.
2995 (stack_protect): Use cbranchcc4.
2997 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2998 * config/score/score-protos.h (score_gen_cmp): Delete.
2999 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3000 (score_block_move-loop): Use cbranchsi4.
3001 * config/score/score.md (cbranchsi4): New.
3002 (cmpsi, bCC): Delete.
3003 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3004 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3005 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3006 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3007 * config/score/score3.h (score3_gen_cmp): Delete.
3008 * config/score/score7.h (score7_gen_cmp): Delete.
3010 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3011 (sh_emit_scc_to_t): ... this. Return void.
3012 (from_compare): Rename to...
3013 (sh_emit_compare_and_branch): ... this.
3014 (sh_emit_compare_and_set): New.
3015 (sh_expand_t_scc): Accept operands.
3016 * config/sh/predicates.md (sh_float_comparison_operator): New.
3017 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3018 (prepare_scc_operands): Rename to...
3019 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
3021 (sh_emit_cheap_store_flag): New.
3022 (sh_emit_set_t_insn): New.
3023 (from_compare): Rename to...
3024 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
3025 handling of TARGET_SH2E floating point to avoid recursive call.
3026 Generate branch here.
3027 (sh_emit_compare_and_set): New.
3028 (sh_expand_t_scc): Get op0/op1 from arguments.
3029 (sh_emit_cheap_store_flag): New.
3030 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3032 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3033 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3034 (movsicc, movdicc): Do nothing when it recreated operands from
3035 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
3036 prepare_scc_operands (now sh_emit_scc_to_t).
3037 (udivdi3): Use cstoresi4.
3038 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3039 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3040 (cbranchint4_media, cbranchfp4_media): New.
3041 (casesi): Use cbranchdi4.
3042 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3044 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3045 (movnegt): Remove second operand.
3046 (cbranchsf4, cbranchdf4): New.
3047 (stack_protect): Use cbranchdi4/cbranchsi4.
3049 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3050 (gen_compare_reg): Accept comparison, extract part of it to...
3051 (gen_compare_reg_1): ... this.
3052 (gen_compare_operator): Delete.
3053 (gen_v9_scc): Accept separate destination, comparison code and arms.
3054 Do not use sparc_compare_op0/sparc_compare_op1.
3055 (emit_scc_insn, emit_conditional_branch_insn): New.
3056 (emit_v9_brxx): Make static. Remove useless assertion.
3057 (sparc_emit_float_lib_cmp): Return RTL instead of calling
3059 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3060 * config/sparc/sparc-protos.h (gen_compare_reg,
3061 sparc_emit_float_lib_cmp): Adjust prototype.
3062 (emit_scc_insn, emit_conditional_branch_insn): New.
3063 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3064 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3065 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3066 iterators to the top.
3067 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3068 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3069 snedi_special_trunc): Delete.
3070 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3071 and snedi_special_trunc.
3072 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3073 cbranchdi4, cbranch<F:mode>4): New.
3074 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3075 here. Use gen_compare_reg instead of gen_compare_operator.
3076 (conditional_trap): Replace with...
3077 (ctrapsi4, ctrapdi4): ... this.
3078 (stack_protect_test): Use cbranchcc4.
3080 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3082 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
3083 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3084 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
3085 from operands[0] or operands[3] depending on is_set.
3086 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3087 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3088 cmpdf, bCC), sCC: Remove.
3089 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
3090 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3092 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3093 spu_emit_branch_or_set.
3095 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3097 * config/stormy16/stormy16.h (xstormy16_compare_op0,
3098 xstormy16_compare_op1): Delete.
3099 * config/stormy16/stormy16.c (xstormy16_compare_op0,
3100 xstormy16_compare_op1): Delete.
3101 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3103 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3104 (cmphi, cmpsi, bCC): Remove.
3106 * config/v850/v850.md (tstsi, cmpsi): Fold into...
3107 (*cmpsi): ... this one.
3108 (cbranchsi4, cstoresi4): New.
3109 (bCC expanders): Delete.
3110 (sCC insns): Fold into...
3111 (*setcc): ... this one.
3112 (casesi): Do not use gen_cmpsi and gen_bgtu.
3113 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3114 (movsicc): Simplify.
3115 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3117 * config/vax/vax-protos.h (cond_name): New.
3118 (vax_output_conditional_branch): Remove.
3119 * config/vax/vax.c (cond_name): New.
3120 (vax_output_conditional_branch): Remove.
3121 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3122 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3123 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
3124 (bit<VAXint>): Wrap source with (compare).
3125 (b<code> and following unnamed pattern): Rename to *branch and
3126 *branch_reversed. Change macroization to match_operator.
3127 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3129 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3130 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3131 Change last argument to machine_mode.
3132 (xtensa_expand_scc): Add machine_mode argument.
3133 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3134 (gen_conditional_move, xtensa_expand_conditional_branch,
3135 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3136 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3137 Adjust operand numbers.
3138 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3140 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3141 (cmpsi, cmpsf, b<code>, s<code>): Delete.
3142 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3144 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
3146 * optabs.c (prepare_cmp_insn): Temporarily disable test that
3147 causes spurious differences between trunk and cond-optab branch.
3149 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
3152 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3154 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
3156 * tree.c (iterative_hash_pointer): Delete.
3157 (iterative_hash_expr): Short-circuit handling of NULL pointer.
3158 Hash UIDs and versions of SSA names. Don't special-case built-in
3159 function declarations.
3161 2009-05-11 Ian Lance Taylor <iant@google.com>
3164 * graphite.c: Force -Wc++-compat to only be a warning before
3165 #including "cloog/cloog.h".
3167 2009-05-11 Martin Jambor <mjambor@suse.cz>
3169 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3171 2009-05-11 Jan Hubicka <jh@suse.cz>
3173 * tree-ssa-loop-ivcanon.c: Include target.h
3174 (struct loop_size): new structure.
3175 (constant_after_peeling): New predicate.
3176 (tree_estimate_loop_size): New function.
3177 (estimated_unrolled_size): Rewrite for new estimates.
3178 (try_unroll_loop_completely): Use new estimates.
3179 * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3181 2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
3183 * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3184 libcpp interface change.
3185 (spu_macro_to_expand): Likewise.
3187 2009-05-11 Paolo Bonzini <bonzini@gnu.org>
3189 PR tree-optimization/40026
3190 * gimplify.c (gimplify_init_constructor): Change initial conditional
3191 to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
3192 optimize_compound_literals_in_ctor.
3194 2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
3196 * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3198 * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3200 2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
3202 * tree-vect-data-refs.c (vect_analyze_group_access): Use
3203 HOST_WIDE_INT for gap.
3205 2009-05-11 Ira Rosen <irar@il.ibm.com>
3207 PR tree-optimization/40074
3208 * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3209 account in group size and step comparison.
3211 2009-05-11 Richard Guenther <rguenther@suse.de>
3213 * passes.c (init_optimization_passes): Strip now incorrect comment.
3214 (execute_function_todo): Do not set PROP_alias.
3215 * tree-pass.h (PROP_alias): Remove.
3216 * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3217 * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3218 * tree-nrv.c (pass_return_slot): Likewise.
3219 * tree-object-size.c (pass_object_sizes): Likewise.
3220 * tree-ssa-dom.c (pass_dominator): Likewise.
3221 (pass_phi_only_cprop): Likewise.
3222 * tree-ssa-dse.c (pass_dse): Likewise.
3223 * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3224 (pass_cselim): Likewise.
3225 * tree-ssa-pre.c (pass_pre): Likewise.
3226 (pass_fre): Likewise.
3227 * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3228 * tree-ssa-sink.c (pass_sink_code): Likewise.
3229 * tree-stdarg.c (pass_stdarg): Likewise.
3230 * tree-tailcall.c (pass_tail_calls): Likewise.
3231 * tree-vrp.c (pass_vrp): Likewise.
3233 2009-05-10 Ian Lance Taylor <iant@google.com>
3235 * basic-block.h (enum profile_status): Break out of struct
3237 * cgraph.h (struct inline_summary): Break out of struct
3239 * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3240 of struct cgraph_order_sort.
3241 * combine.c (enum undo_kind): New enum, broken out of struct undo.
3242 * cse.c (struct branch_path): Break out of struct
3243 cse_basic_block_data.
3244 * except.h (enum eh_region_type): Break out of struct eh_region.
3245 * gcc.c (enum add_del): Break out of struct modify_target.
3246 * genrecog.c (enum decision_type): Break out of struct decision_test.
3247 * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3249 * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3250 * regmove.c (enum match_use): New enum, broken out of struct match.
3251 * sched-int.h (enum post_call_group): New enum, broken out of
3253 (struct deps_reg): Break out of struct deps.
3254 * target.h (struct asm_int_op): Break out of struct gcc_target.
3255 * tree-eh.c (struct goto_queue_node): Break out of struct
3257 * tree-inline.h (enum copy_body_cge_which): Break out of
3259 * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3261 * c-decl.c (in_struct, struct_types): New static variables.
3262 (pushtag): Add loc parameter. Change all callers.
3263 (lookup_tag): Add ploc parameter. Change all callers.
3264 (check_compound_literal_type): New function.
3265 (parser_xref_tag): Add loc parameter. Change all callers. If
3266 -Wc++-compat, warn about struct/union/enum types defined within a
3268 (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3269 and loc parameters. Change all callers. Change error calls to
3270 error_at, using loc. For a redefinition, if the location of the
3271 original definition is known, report it. Set in_struct and
3272 struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
3273 (finish_struct): Add new parameters enclosing_in_struct and
3274 enclosing_struct_types. Change all callers. Set
3275 C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3276 in the struct. If in a struct, add this struct to struct_types.
3277 (start_enum): Add loc parameter. Change all callers. Use
3278 error_at for errors, using loc. For a redefinition, if the
3279 location of the original definition is known, report it. If in a
3280 struct, add this enum type to struct_types. If -Wc++-compat warn
3281 if in sizeof, typeof, or alignof.
3282 * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3283 (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3284 (c_parser_enum_specifier): Get enum location for start_enum.
3285 (c_parser_struct_or_union_specifier): Get struct location for
3286 start_struct. Save in_struct and struct_types status between
3287 start_struct and finish_struct.
3288 (c_parser_cast_expression): Get location of cast.
3289 (c_parser_alignof_expression): Get location of type.
3290 (c_parser_postfix_expression): Likewise.
3291 (c_parser_postfix_expression_after_paren_type): Add type_loc
3292 parameter. Change all callers. Call check_compound_literal_type.
3293 Use type_loc for error about variable size type.
3294 * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3295 of an enum constant from an enum type defined in a struct or union.
3296 (c_cast_expr): Add loc parameter. Change all callers. If
3297 -Wc++-compat, warn about defining a type in a cast.
3298 * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3299 (start_enum, start_struct, finish_struct): Update declarations.
3300 (parser_xref_tag, c_cast_expr): Update declarations.
3301 (check_compound_literal_type): Declare.
3303 2009-05-11 Ben Elliston <bje@au.ibm.com>
3305 * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3306 for recent libcpp interface change.
3307 (rs6000_macro_to_expand): Likewise.
3309 2009-05-10 Michael Matz <matz@suse.de>
3312 * config/arm/arm.c (require_pic_register): Emit on entry edge,
3313 not at entry of function.
3315 2009-05-10 Richard Guenther <rguenther@suse.de>
3317 PR tree-optimization/40081
3319 * tree-sra.c (instantiate_element): Instantiate scalar replacements
3320 using the main variant of the element type. Do not fiddle with
3321 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3323 * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3324 structs with volatile fields.
3326 2009-05-10 Jan Hubicka <jh@suse.cz>
3328 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3329 (estimate_move_cost): Assert that it does not get called for
3331 (estimate_num_insns): Skip VOID types in argument handling.
3332 (optimize_inline_calls): Delete unreachable blocks and verify that
3335 2009-05-10 Jan Hubicka <jh@suse.cz>
3337 * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3338 * cgraph.c (cgraph_mark_address_taken_node): New function.
3339 (dump_cgraph_node): Dump new flag.
3340 * cgraph.h (struct cgraph_node): Add address_taken.
3341 (cgraph_mark_address_taken_node): New function.
3342 * ipa.c (cgraph_postorder): Prioritize functions with address taken
3343 since new direct calls can be born.
3345 2009-05-10 Joseph Myers <joseph@codesourcery.com>
3347 * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3350 2009-05-10 Jan Hubicka <jh@suse.cz>
3353 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3355 (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3356 * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3357 * tree-inline.c (copy_bb): Set frequency correctly.
3358 (fold_marked_statements): Update call to
3359 cgraph_update_edges_for_call_stmt.
3361 2009-05-10 Joseph Myers <joseph@codesourcery.com>
3363 * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3364 identifiers in diagnostics.
3365 * config/arm/arm.c (arm_handle_fndecl_attribute,
3366 arm_handle_isr_attribute): Likewise.
3367 * config/avr/avr.c (avr_handle_progmem_attribute,
3368 avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3369 * config/bfin/bfin.c (handle_int_attribute,
3370 bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3371 bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3372 bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3374 * config/darwin.c (darwin_handle_kext_attribute,
3375 darwin_handle_weak_import_attribute): Likewise.
3376 * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3377 h8300_handle_eightbit_data_attribute,
3378 h8300_handle_tiny_data_attribute): Likewise.
3379 * config/i386/i386.c (ix86_handle_cconv_attribute,
3380 ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3381 * config/i386/winnt.c (ix86_handle_shared_attribute,
3382 ix86_handle_selectany_attribute): Likewise.
3383 * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3384 * config/m32c/m32c.c (function_vector_handler): Likewise.
3385 * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3386 m68hc11_handle_fntype_attribute): Likewise.
3387 * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3388 * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3389 * config/mips/mips.c (mips_insert_attributes,
3390 mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3391 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3392 rs6000_handle_struct_attribute): Likewise.
3393 * config/sh/sh.c (sh_insert_attributes,
3394 sh_handle_resbank_handler_attribute,
3395 sh_handle_interrupt_handler_attribute,
3396 sh2a_handle_function_vector_handler_attribute,
3397 sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3399 * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3400 * config/spu/spu.c (spu_handle_fndecl_attribute,
3401 spu_handle_vector_attribute): Likewise.
3402 * config/stormy16/stormy16.c
3403 (xstormy16_handle_interrupt_attribute): Likewise.
3404 * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3405 * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3407 2009-05-10 Joseph Myers <joseph@codesourcery.com>
3409 * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3410 (pp_translate_identifiers): New.
3411 (pp_identifier): Only conditionally translate identifier to locale
3413 * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3414 (pp_base_tree_identifier): Only conditionally translate identifier
3415 to locale character set.
3416 * c-pretty-print.c (M_): Define.
3417 (pp_c_type_specifier, pp_c_primary_expression): Mark English
3418 fragments for conditional translation with M_.
3419 * tree-pretty-print.c (maybe_init_pretty_print): Disable
3420 identifier translation.
3422 2009-05-10 Richard Guenther <rguenther@suse.de>
3424 PR tree-optimization/40081
3425 * tree-sra.c (instantiate_element): Instantiate scalar replacements
3426 using the main variant of the element type. Do not fiddle with
3427 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3429 2009-05-09 Jan Hubicka <jh@suse.cz>
3432 * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3433 indirect calls; verify cgraph afterwards.
3435 2009-05-09 Jan Hubicka <jh@suse.cz>
3438 * ipa.c (update_inlined_to_pointer): New function.
3439 (cgraph_remove_unreachable_nodes): Use it.
3441 2009-05-09 Jan Hubicka <jh@suse.cz>
3443 * tree-eh.c (struct leh_state): Remove prev_try.
3444 (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3446 * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
3447 copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3448 remove_eh_handler_and_replace, foreach_reachable_handler,
3449 verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3450 * except.h (struct eh_region): Remove eh_region_u_cleanup.
3451 (gen_eh_region_cleanup): Update prototype.
3453 2009-05-09 Jan Hubicka <jh@suse.cz>
3456 * except.c (copy_eh_region): Always set prev_try.
3457 (redirect_eh_edge_to_label): Find outer try.
3458 (foreach_reachable_handler): When looking for prev try
3459 handle case where previous try is not going to be taken.
3461 2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
3463 PR tree-optimization/40049
3464 * tree-vect-stmts.c (vectorizable_operation): If the machine has
3465 only vector/vector shifts, convert the type of the constant to the
3466 appropriate type to avoid building incorrect trees, which
3467 eventually have problems with garbage collection.
3469 2009-05-08 Joseph Myers <joseph@codesourcery.com>
3471 * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3472 -1 for complex floating-point types if honoring signed zeros.
3474 2009-05-08 Jan Hubicka <jh@suse.cz>
3476 * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3477 argument; handle correctly when profile is absent.
3478 (build_cgraph_edges): Update.
3479 (rebuild_cgraph_edges): Update.
3480 * cgraph.c: Do not include varray.h.
3481 (cgraph_set_call_stmt_including_clones): New function.
3482 (cgraph_create_edge_including_clones): Likewise
3483 (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3484 (cgraph_update_edges_for_call_stmt): Handle clones.
3485 (cgraph_remove_node): Handle clone tree.
3486 (cgraph_remove_node_and_inline_clones): New function.
3487 (dump_cgraph_node): Dump clone tree.
3488 (cgraph_clone_node): Handle clone tree.
3489 (clone_function_name): Bring here from tree-inline.c.
3490 (cgraph_create_virtual_clone): New function.
3491 * cgraph.h (ipa_replace_map): Move here from ipa.h.
3492 (cgraph_clone_info): New function.
3493 (strut cgraph_node): Add clone_info and new clone tree pointers.
3494 (cgraph_remove_node_and_inline_clones,
3495 cgraph_set_call_stmt_including_clones,
3496 cgraph_create_edge_including_clones,
3497 cgraph_create_virtual_clone): Declare.
3498 (cgraph_function_versioning): Use VEC argument.
3499 (compute_call_stmt_bb_frequency): Update prototype.
3500 (cgraph_materialize_all_clones): New function.
3501 * ipa-cp.c (ipcp_update_cloned_node): Remove.
3502 (ipcp_create_replace_map): Update to VECtors.
3503 (ipcp_update_callgraph): Use virtual clones.
3504 (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3505 (ipcp_update_profiling): Do not update local profiling.
3506 (ipcp_insert_stage): Use VECtors and virtual clones.
3507 * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3508 (clone_of_p): New function.
3509 (cgraph_preserve_function_body_p): Use clone tree.
3510 (cgraph_optimize): Materialize clones.
3511 (cgraph_function_versioning): Update for VECtors.
3512 (save_inline_function_body): Use clone tree.
3513 (cgraph_materialize_clone): New function.
3514 (cgraph_materialize_all_clones): Likewise.
3515 * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3516 * ipa.c: Include gimple.h.
3517 (cgraph_remove_unreachable_nodes): Use clone tree.
3518 * ipa-prop.c (ipa_note_param_call): Update call to
3519 compute_call_stmt_bb_frequencycall.
3520 * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3521 * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3522 (copy_bb): Handle updating of clone tree; add new edge when new call
3524 (expand_call_inline): Be strict about every call having edge.
3525 (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3526 (delete_unreachable_blocks_update_callgraph): New function.
3527 (tree_function_versioning): Use VECtors; always remove unreachable
3528 blocks and fold conditionals.
3529 * tree-inline.h: Do not include varray.h.
3530 (tree_function_versioning): Remove.
3531 * Makefile.in (GTFILES): Remove tree-inline.c
3532 * passes.c (do_per_function): Do only functions having body.
3533 * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3536 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
3537 Andrew Morrow <acm@google.com>
3540 * c-common.c (c_common_attribute_table): Permit deprecated
3541 attribute to take an optional argument.
3542 (handle_deprecated_attribute): If the optional argument to
3543 __attribute__((deprecated)) is not a string ignore the attribute
3546 * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3547 * c-typeck.c (build_component_ref): Likewise.
3548 (build_external_ref): Likewise.
3550 * toplev.c (warn_deprecated_use): Add an attribute argument.
3551 Emit the message associated with __attribute__((deprecated)).
3553 * toplev.h (warn_deprecated_use): Updated.
3555 * doc/extend.texi: Document new optional parameter to
3556 __attribute__((deprecated))
3558 2009-05-08 Michael Eager <eager@eagercon.com>
3560 * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3561 !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3563 2009-05-08 Richard Guenther <rguenther@suse.de>
3565 PR tree-optimization/40062
3566 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3567 Avoid exponential behavior.
3569 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
3571 PR rtl-optimization/33928
3573 * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3574 process_uses, build_single_def_use_links): New.
3575 (update_df): Update use_def_ref.
3576 (forward_propagate_into): Use get_def_for_use instead of use-def
3578 (fwprop_init): Call build_single_def_use_links and let it initialize
3580 (fwprop_done): Free use_def_ref.
3581 (fwprop_addr): Eliminate duplicate call to df_set_flags.
3582 * df-problems.c (df_rd_simulate_artificial_defs_at_top,
3583 df_rd_simulate_one_insn): New.
3584 (df_rd_bb_local_compute_process_def): Update head comment.
3585 (df_chain_create_bb): Use the new RD simulation functions.
3586 * df.h (df_rd_simulate_artificial_defs_at_top,
3587 df_rd_simulate_one_insn): New.
3588 * opts.c (decode_options): Enable fwprop at -O1.
3589 * doc/invoke.texi (-fforward-propagate): Document this.
3591 2009-05-08 Joseph Myers <joseph@codesourcery.com>
3594 * c-typeck.c (build_binary_op): Handle arithmetic between one real
3595 and one complex operand specially.
3596 * tree-complex.c (some_nonzerop): Do not identify a real value as
3597 zero if flag_signed_zeros.
3599 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
3601 PR rtl-optimization/33928
3602 * loop-invariant.c (record_use): Fix && vs. || mishap.
3604 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
3606 PR rtl-optimization/33928
3607 * loop-invariant.c (struct use): Add addr_use_p.
3608 (struct def): Add n_addr_uses.
3609 (struct invariant): Add cheap_address.
3610 (create_new_invariant): Set cheap_address.
3611 (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
3612 (record_uses): Pass df_ref to record_use.
3613 (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3616 2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
3618 * config/sh/sh.c: Do not include c-pragma.h.
3620 2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
3622 * config/spu/spu.c: Remove include of c-common.h.
3624 2009-05-07 Janis Johnson <janis187@us.ibm.com>
3627 * c-common.h (mark_valid_location_for_stdc_pragma,
3628 valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3629 clear_float_const_decimal64, float_const_decimal64_p): New.
3630 * c.opt (Wunsuffixed-float-constants): New.
3631 * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3632 unsuffixed float constant, handle new warning.
3633 * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3634 * c-decl.c (c_scope): New flag float_const_decimal64.
3635 (set_float_const_decimal64, clear_float_const_decimal64,
3636 float_const_decimal64_p): New.
3637 (push_scope): Set new flag.
3638 * c-parser.c (c_parser_translation_unit): Mark when it's valid
3639 to use STDC pragmas.
3640 (c_parser_external_declaration): Ditto.
3641 (c_parser_compound_statement_nostart): Ditto.
3642 * c-pragma.c (valid_location_for_stdc_pragma,
3643 mark_valid_location_for_stdc_pragma,
3644 valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3645 handle_pragma_float_const_decimal64): New.
3646 (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
3647 * cp/semantics.c (valid_location_for_stdc_pragma_p,
3648 set_float_const_decimal64, clear_float_const_decimal64,
3649 float_const_decimal64_p): New dummy functions.
3650 * doc/extend.texi (Decimal Float): Remove statement that the
3651 pragma, and suffix for double constants, are not supported.
3652 * doc/invoke.texi (Warning Options): List new option.
3653 (-Wunsuffixed-float-constants): New.
3655 2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
3657 * config/i386/i386.c: Do not include c-common.h.
3659 2009-05-07 Mark Heffernan <meheff@google.com>
3661 * doc/invoke.texi (Debugging Options): Document change of debugging
3663 * opts.c (decode_options): Make dump_base_name relative to
3664 aux_base_name directory.
3666 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
3668 * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
3669 * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
3671 2009-05-07 Rafael Avila de Espindola <espindola@google.com>
3673 * Makefile.in (install-plugin): Simplify a bit.
3675 2009-05-07 Paolo Bonzini <bonzini@gnu.org>
3677 * Makefile.in (OBJS-common): Add regcprop.o.
3679 * timevar.def (TV_CPROP_REGISTERS): New.
3680 * regrename.c (regrename_optimize): Return 0.
3681 (rest_of_handle_regrename): Delete.
3682 (pass_rename_registers): Point to regrename_optimize.
3683 (struct value_data_entry, struct value_data,
3684 kill_value_one_regno, kill_value_regno, kill_value,
3685 set_value_regno, init_value_data, kill_clobbered_value,
3686 kill_set_value, kill_autoinc_value, copy_value,
3687 mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3688 replace_oldest_value_reg, replace_oldest_value_addr,
3689 replace_oldest_value_mem, copyprop_hardreg_forward_1,
3690 debug_value_data, validate_value_data): Move...
3691 * regcprop.c: ... here.
3692 (rest_of_handle_cprop): Delete.
3693 (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3695 2009-05-07 Jakub Jelinek <jakub@redhat.com>
3698 * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3699 GEN_INT for 1 << bitnum.
3700 (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3703 2009-05-07 Uros Bizjak <ubizjak@gmail.com>
3705 * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3706 Remove wrong description of "nand" operation.
3708 2009-05-06 Richard Guenther <rguenther@suse.de>
3709 Adam Nemet <anemet@caviumnetworks.com>
3711 * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3712 comment. Add that if LHS is not a gimple register, then RHS1 has
3713 to be a single object (GIMPLE_SINGLE_RHS).
3715 2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
3717 * expr.c (get_def_for_expr): Move it up in the file.
3718 (store_field): When expanding a bit-field store, look at the
3719 defining gimple stmt for the masking conversion.
3721 2009-05-06 Janis Johnson <janis187@us.ibm.com>
3724 * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3725 decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3726 32-bit memcpy into long.
3728 2009-05-06 Jakub Jelinek <jakub@redhat.com>
3730 * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3731 (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3733 (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3734 instead of appending DW_OP_deref*.
3736 2009-05-06 Michael Matz <matz@suse.de>
3739 * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3740 (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3742 2009-05-06 Rafael Avila de Espindola <espindola@google.com>
3744 * Makefile.in (install-plugin): Fix srcdir handling.
3746 2009-05-06 Andrey Belevantsev <abel@ispras.ru>
3748 * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3749 when processing for not_regs_needed bitmap.
3750 * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
3751 handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
3752 handling it for rhs.
3754 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3756 * config/i386/i386.md (unnamed inc/dec peephole): Use
3757 optimize_insn_for_size_p instead of optimize_size.
3758 * config/i386/predicates.md (incdec_operand): Likewise.
3759 (aligned_operand): Likewise.
3760 * config/i386/sse.md (divv8sf3): Likewise.
3761 (sqrtv8sf2): Likewise.
3763 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3765 * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
3767 * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
3769 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
3771 * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
3772 ssemodesuffixf2c with avxmodesuffixf2c.
3774 2009-05-06 Joseph Myers <joseph@codesourcery.com>
3777 * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
3779 2009-05-05 Jakub Jelinek <jakub@redhat.com>
3781 * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
3782 (struct tree_base): Adjust spacing for 8 bit boundaries.
3783 (struct tree_decl_common): Add decl_by_reference_flag bit.
3784 (DECL_BY_REFERENCE): Adjust.
3785 * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
3786 print DECL_BY_REFERENCE bit.
3787 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
3788 * dwarf2out.c (loc_by_reference, gen_decl_die): Check
3789 DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
3790 (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
3794 * gimplify.c (gimplify_switch_expr): If case labels cover the whole
3795 range of the type, but default label is missing, add it with one
3796 of the existing labels instead of adding a new label for it.
3798 2009-05-05 Joseph Myers <joseph@codesourcery.com>
3802 2009-05-05 Rafael Avila de Espindola <espindola@google.com>
3804 * Makefile.in (enable_plugin, plugin_includedir): New.
3805 (install): Depend on install-plugin.
3806 (PLUGIN_HEADERS): New.
3807 (install-plugin): New.
3808 * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
3810 2009-05-05 Richard Guenther <rguenther@suse.de>
3812 PR tree-optimization/40022
3813 * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
3815 (phivn_valid_p): Fix tuplification error, simplify.
3816 (phiprop_insert_phi): Add dumps.
3817 (propagate_with_phi): Simplify.
3819 2009-05-05 Richard Guenther <rguenther@suse.de>
3822 * builtins.c (gimplify_va_arg_expr): Properly build the address.
3824 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
3826 * tree.h (strip_float_extensions): Remove duplicate declaration.
3827 (build_low_bits_mask, debug_fold_checksum, expand_function_end,
3828 expand_function_start, stack_protect_prologue, stack_protect_epilogue,
3829 block_ultimate_origin): Rearrange the declarations line to match the
3830 comment that indicates the .c file which the functions are defined.
3831 (dwarf2out_*, set_decl_rtl): Add comment.
3832 (get_base_address): Adjust comment.
3833 (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
3834 declarations line and add comment.
3835 (is_builtin_name): Add blank after function name, for clarity.
3837 2009-05-04 Joseph Myers <joseph@codesourcery.com>
3839 * attribs.c (decl_attributes): Use %qE for identifiers in
3841 * cgraphunit.c (verify_cgraph_node): Translate function names to
3842 locale character set in diagnostics.
3843 * coverage.c (get_coverage_counts): Use %qE for identifiers in
3845 * doc/invoke.texi (-finstrument-functions-exclude-function-list):
3846 Document that functions are named in UTF-8.
3847 * expr.c (expand_expr_real_1): Translate function names to locale
3848 character set in diagnostics.
3849 * gimplify.c (omp_notice_variable, omp_is_private,
3850 gimplify_scan_omp_clauses): Use %qE for identifiers in
3852 * langhooks.c (lhd_print_error_function): Translate function names
3853 to locale character set.
3854 * langhooks.h (decl_printable_name): Document that return value is
3855 in internal character set.
3856 * stmt.c: Include pretty-print.h
3857 (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
3859 (resolve_operand_name_1): Translate named operand name to locale
3861 * stor-layout.c (finalize_record_size): Use %qE for identifiers in
3863 * toplev.c (announce_function): Translate function names to locale
3865 (warn_deprecated_use): Use %qE for identifiers in diagnostics.
3866 (default_tree_printer): Use pp_identifier or translate identifiers
3867 to locale character set. Mark "<anonymous>" for translation.
3868 * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
3869 for identifiers in diagnostics.
3870 * tree.c (handle_dll_attribute): Use %qE for identifiers in
3872 * varasm.c (output_constructor): Use %qE for identifiers in
3875 2009-05-04 Rafael Avila de Espindola <espindola@google.com>
3877 * configure.ac: use ` ` instead of $()
3878 * configure: Regenerate.
3880 2009-05-05 Ben Elliston <bje@au.ibm.com>
3882 * config/pa/linux-atomic.c: Eliminate conditional include of
3883 errno.h on non-LP64 systems to simplify build requirements.
3885 2009-05-04 Joseph Myers <joseph@codesourcery.com>
3887 * c-common.c (handle_mode_attribute): Use %qE for identifiers in
3889 * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
3890 and pass value to identifier_to_locale.
3891 (warn_variable_length_array): Make name a tree.
3892 (grokdeclarator): Separate diagnostic texts for named and unnamed
3893 declarators. Use %qE for named declarators.
3894 * c-parser.c (c_lex_one_token): Use %qE for identifiers in