1 2009-09-22 Loren J. Rittle <ljrittle@acm.org>
3 * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
4 Enable a new case for __FreeBSD__ >= 7.
5 * crtstuff.c: Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6 * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
7 * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
10 * doc/install.texi (*-*-freebsd*): Update target information.
12 2009-09-22 Richard Guenther <rguenther@suse.de>
15 * tree-dfa.c (get_ref_base_and_extent): Handle trailing
16 arrays really properly.
18 2009-09-22 Richard Henderson <rth@redhat.com>
21 * target.h (struct gcc_target): Add asm_out.trampoline_template,
22 calls.static_chain, calls.trampoline_init,
23 calls.trampoline_adjust_address.
24 * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
25 (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
26 (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
27 * builtins.c (expand_builtin_setjmp_receiver): Use
28 targetm.calls.static_chain; only clobber registers.
29 (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
30 set up memory attributes properly for the trampoline block.
31 (expand_builtin_adjust_trampoline): Use
32 targetm.calls.trampoline_adjust_address.
33 * calls.c (prepare_call_address): Add fndecl argument. Use
34 targetm.calls.static_chain.
35 * df-scan.c (df_need_static_chain_reg): Remove.
36 (df_get_entry_block_def_set): Use targetm.calls.static_chain;
37 consolodate static chain handling.
38 * doc/tm.texi: Document new hooks.
39 * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
40 (init_emit_regs): Don't initialize them.
41 * expr.h (prepare_call_address): Update decl.
42 * final.c (profile_function): Use targetm.calls.static_chain.
43 * function.c (expand_function_start): Likewise.
44 * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
45 * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
46 only clobber registers.
47 * targhooks.c (default_static_chain): New.
48 (default_asm_trampoline_template, default_trampoline_init): New.
49 (default_trampoline_adjust_address): New.
50 * targhooks.h: Declare them.
51 * varasm.c (assemble_trampoline_template): Use
52 targetm.asm_out.trampoline_template. Make the memory block const
55 * config/alpha/alpha.c (alpha_trampoline_init): Rename from
56 alpha_initialize_trampoline. Make static. Merge VMS parameter
57 differences into the TARGET_ABI_OPEN_VMS code block.
58 (TARGET_TRAMPOLINE_INIT): New.
59 * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
60 (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
61 * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
62 (INITIALIZE_TRAMPOLINE): Remove.
64 * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
65 (TRAMPOLINE_TEMPLATE): Merge with ...
66 (INITIALIZE_TRAMPOLINE): ... this and move ...
67 * config/arc/arc.c (arc_trampoline_init): ... here.
68 (TARGET_TRAMPOLINE_INIT): New.
70 * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
71 (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
72 (arm_asm_trampoline_template): New.
73 (arm_trampoline_init, arm_trampoline_adjust_address): New.
74 * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
75 THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
76 code to arm_asm_trampoline_template.
77 (TRAMPOLINE_ADJUST_ADDRESS): Move code to
78 arm_trampoline_adjust_address.
79 (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
80 adjust for target hook parameters.
82 * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Remove.
84 * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
85 * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
86 (bfin_trampoline_init): Rename from initialize_trampoline;
87 make static; update for target hook parameters.
88 (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
89 * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
90 bfin_asm_trampoline_template.
91 (INITIALIZE_TRAMPOLINE): Remove.
93 * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
94 TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
95 cris_trampoline_init): New.
96 * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
97 cris_asm_trampoline_template.
98 (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
99 adjust for target hook parameters.
101 * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
103 * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
104 TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
105 fr30_trampoline_init): New.
106 * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
107 fr30_asm_trampoline_template.
108 (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
109 adjust for target hook parameters.
111 * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
112 (frv_trampoline_init): Rename from frv_initialize_trampoline;
113 make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
114 * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
115 * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
117 * config/h8300/h8300.c (h8300_trampoline_init): New.
118 (TARGET_TRAMPOLINE_INIT): New.
119 * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
120 to h8300_trampoline_init and adjust for hook parameters.
122 * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
123 * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
124 (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
125 make static; adjust for hook parameters.
126 * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
128 * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
129 (TARGET_TRAMPOLINE_INIT): New.
130 (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
131 * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
132 iq2000_asm_trampoline_template.
133 (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
134 (TRAMPOLINE_CODE_SIZE): New.
135 (TRAMPOLINE_SIZE): Use it.
136 (TRAMPOLINE_ALIGNMENT): Follow Pmode.
138 * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
139 * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
140 (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
141 adjust for hook parameters.
142 * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
144 * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
145 (m32r_trampoline_init): New.
146 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
147 m32r_trampoline_init.
149 * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
150 (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
151 make static; update for hook parameters.
152 * config/m68hc11/m68hc11-protos.h: Update.
153 * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
155 * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
156 (TARGET_TRAMPOLINE_INIT): New.
157 (mcore_function_value): Fix typo.
158 (mcore_asm_trampoline_template, mcore_trampoline_init): New.
159 * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
160 to mcore_asm_trampoline_template.
161 (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
163 * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
164 * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
165 (mep_trampoline_init): Rename from mep_init_trampoline; make static;
166 update for hook parameters.
167 * config/mep/mep-protos.h (mep_init_trampoline): Remove.
169 * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
170 mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
171 mips_trampoline_init): New.
172 * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
173 mips_asm_trampoline_template.
174 (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
175 update for hook parameters.
177 * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
178 (TARGET_TRAMPOLINE_INIT): New.
179 (mmix_trampoline_size): Remove.
180 (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
181 make static. Remove out-of-date tetra vs octa comment.
182 (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
183 make static; update for hook parameters.
184 * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
185 (INITIALIZE_TRAMPOLINE): Remove.
186 (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
187 (TRAMPOLINE_ALIGNMENT): New.
188 * gcc/config/mmix/mmix-protos.h: Update.
190 * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
191 mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
192 mn10300_trampoline_init): New.
193 * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
194 mn10300_asm_trampoline_template.
195 (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
197 * config/moxie/moxie.c (moxie_static_chain,
198 moxie_asm_trampoline_template, moxie_trampoline_init,
199 TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
200 TARGET_TRAMPOLINE_INIT): New.
201 * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
202 moxie_trampoline_init.
203 (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
204 (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
206 * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
207 pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
208 pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
209 pa_trampoline_adjust_address): New.
210 * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
211 pa_asm_trampoline_template.
212 (TRAMPOLINE_ALIGNMENT): New.
213 (TRAMPOLINE_CODE_SIZE): Move to pa.c.
214 (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
215 adjust for hook parameters.
216 (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
218 * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
219 (TARGET_TRAMPOLINE_INIT): New.
220 * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
221 (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
223 * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
225 * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
226 * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
227 (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
228 make static; adjust parameters for the hook.
229 * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
231 * config/s390/s390.c (s390_asm_trampoline_template): Rename from
232 s390_trampoline_template; make static.
233 (s390_trampoline_init): Rename from s390_initialize_trampoline;
234 make static; adjust for target hook.
235 (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
236 * config/s390/s390-protos.h: Remove trampoline decls.
237 * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
238 (TRAMPOLINE_TEMPLATE): Remove.
239 (TRAMPOLINE_ALIGNMENT): New.
241 * config/score/score-protos.h (score_initialize_trampoline): Remove.
242 * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
243 (TARGET_TRAMPOLINE_INIT): New.
244 (score_asm_trampoline_template): New.
245 (score_trampoline_init): Rename from score_initialize_trampoline;
246 make static; adjust for hook parameters.
247 * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
248 score[37]_asm_trampoline_template.
249 (INITIALIZE_TRAMPOLINE): Remove.
250 * config/score/score3.c (score3_asm_trampoline_template): New.
251 (score3_trampoline_init): Rename from score3_initialize_trampoline;
252 adjust for target hook.
253 * config/score/score7.c (score7_asm_trampoline_template): New.
254 (score7_trampoline_init): Rename from score7_initialize_trampoline;
255 adjust for target hook.
256 * config/score/score3.h, config/score/score7.h: Update.
258 * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
259 * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
260 (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
261 (sh_trampoline_init): Rename from sh_initialize_trampoline;
262 make static; adjust for target hook parameters.
263 (sh_trampoline_adjust_address): New.
264 * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
265 (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
267 * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
268 (sparc32_initialize_trampoline): Rename from
269 sparc_initialize_trampoline; make static; replace tramp parameter
270 with m_tramp and update memory accesses.
271 (sparc64_initialize_trampoline): Similarly.
272 (sparc_trampoline_init): New.
273 * config/sparc/sparc-protos.h: Remove trampoline decls.
274 * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
275 * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
277 * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
278 (array_to_constant): Make ARR parameter const.
279 (spu_trampoline_init): Rename from spu_initialize_trampoline;
280 make static; update for hook parameters.
281 * config/spu/spu-protos.h: Update decls.
282 * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
284 * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
285 from xstormy16_initialize_trampoline; make static; update for
287 (TARGET_TRAMPOLINE_INIT): New.
288 * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
290 * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
291 (TARGET_TRAMPOLINE_INIT): New.
292 (v850_can_eliminate): Make static.
293 (v850_asm_trampoline_template, v850_trampoline_init): New.
294 * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
295 v850_asm_trampoline_template.
296 (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
297 and adjust for target hook parameters.
299 * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
300 (TARGET_TRAMPOLINE_INIT): New.
301 (vax_asm_trampoline_template, vax_trampoline_init): New.
302 * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
303 vax_asm_trampoline_template.
304 (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
306 * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
307 (TARGET_TRAMPOLINE_INIT): New.
308 (xtensa_asm_trampoline_template): Rename from
309 xtensa_trampoline_template; make static.
310 (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
311 make static; update for hook parameters.
312 * config/xtensa/xtensa-protos.h: Remove trampoline decls.
313 * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
314 (INITIALIZE_TRAMPOLINE): Remove.
316 * config/i386/i386.c (ix86_function_regparm): Do not issue an
317 error for nested functions with regparm=3.
318 (ix86_compute_frame_layout): Adjust frame pointer offset for
319 ix86_static_chain_on_stack.
320 (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
321 (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
322 don't reset to UNITS_PER_WORD.
323 (ix86_emit_leave): Adjust ix86_cfa_state.
324 (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
325 (ix86_static_chain): New.
326 (ix86_trampoline_init): Rename from x86_initialize_trampoline;
327 make static; update for target hook parameters; use ix86_static_chain.
328 (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
329 * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
330 (INITIALIZE_TRAMPOLINE): Remove.
331 (TRAMPOLINE_SIZE): Use 24 for 64-bit.
332 (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
333 to the end. Add static_chain_on_stack.
334 (ix86_static_chain_on_stack): New.
336 * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
337 (m68k_output_mi_thunk): Don't use static_chain_rtx.
338 (m68k_trampoline_init): New.
339 * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
340 m68k_trampoline_init and adjust for hook parameters.
341 * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
342 (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
344 2009-09-22 Jakub Jelinek <jakub@redhat.com>
346 * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
347 for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
349 * reload1.c (reload): Call wrap_constant when substituting
350 reg for equiv inside of DEBUG_INSNs.
353 * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
354 add_call_src_coords_attributes, add_high_low_attributes,
355 gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
356 gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
357 dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
358 when -gdwarf-2 -gstrict-dwarf.
359 (loc_list_from_tree): Likewise. Avoid using DWARF4 additions when
360 -gdwarf-[23] -gstrict-dwarf.
361 (address_of_int_loc_descriptor, loc_descriptor,
362 loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
363 DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
364 * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
366 2009-09-22 Richard Guenther <rguenther@suse.de>
368 PR tree-optimization/41428
369 * tree-ssa-ccp.c (ccp_fold_stmt): New function.
370 (ccp_finalize): Pass it to substitute_and_fold.
372 2009-09-22 Richard Guenther <rguenther@suse.de>
374 * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
375 (substitute_and_fold): Adjust prototype.
376 * tree-vrp.c (vrp_evaluate_conditional): Make static.
377 (simplify_stmt_using_ranges): Likewise.
378 (fold_predicate_in): Move here from tree-ssa-propagate.c.
379 (vrp_fold_stmt): New function.
380 (vrp_finalize): Pass it to substitute_and_fold.
381 * tree-flow.h (vrp_evaluate_conditional): Remove.
382 (simplify_stmt_using_ranges): Likewise.
383 * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
384 * tree-ssa-copy.c (fini_copy_prop): Likewise.
385 * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
387 (fold_predicate_in): Move to tree-vrp.c.
388 (substitute_and_fold): Use the callback instead of calling into
389 tree-vrp.c functions directly.
391 2009-09-22 Jakub Jelinek <jakub@redhat.com>
393 * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
394 comparison warning on rs6000.
397 * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
398 GIMPLE_EH_MUST_NOT_THROW cleanup.
399 (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
401 2009-09-22 Jack Howarth <howarth@bromo.med.uc.edu>
404 * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
405 * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
406 LIB_SPEC for darwin10 and later since it always uses the unwinder in
407 libSystem which is derived from the gcc 4.2.1 unwinder.
409 2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
412 * varasm.c (default_encode_section_info): Copy TLS model into
413 sym_ref flags regardless of backend support for TLS, for all
414 model types except TLS_MODEL_EMULATED.
416 2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
419 * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
420 we can handle it correctly.
422 2009-09-21 Gerald Pfeifer <gerald@pfeifer.com>
424 * doc/install.texi (os2): Remove section.
426 2009-09-21 Gerald Pfeifer <gerald@pfeifer.com>
428 * doc/standards.texi (Objective-C): Adjust two URLs.
430 2009-09-21 Giuseppe Scrivano <gscrivano@gnu.org>
432 * tree-tailcall.c (process_assignment): Don't check if a multiplication
433 or an addition are already present.
434 (find_tail_calls): Combine multiple additions and multiplications.
435 (adjust_accumulator_values): Emit accumulators.
437 2009-09-21 Kai Tietz <kai.tietz@onevision.com>
439 * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
440 xmm register restore.
442 2009-09-21 Jan Hubicka <jh@suse.cz>
444 * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
445 (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
448 2009-09-21 Eric Botcazou <ebotcazou@adacore.com>
450 * stor-layout.c (layout_type): Remove obsolete code.
452 2009-09-20 H.J. Lu <hongjiu.lu@intel.com>
455 * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
457 2009-09-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
460 * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
461 (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
462 (fold_builtin_2, do_mpc_arg1): Update accordingly.
463 * fold-const.c (const_binop): Likewise.
464 * real.h (do_mpc_arg2): Update prototype.
466 2009-09-20 Jan Hubicka <jh@suse.cz>
468 * dwarf2out.c (add_const_value_attribute): Return true if successful.
469 (add_location_or_const_value_attribute): Rewrite using loc_list_from_tree.
470 (tree_add_const_value_attribute): Return true if successful.
471 (tree_add_const_value_attribute_for_decl): Likewise.
473 * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
474 (loc_descriptor): ... here;
475 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
476 (cst_pool_loc_descr): Break out from ...; do not reffer constant
477 pool items that was not marked for output.
478 (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
479 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
480 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
481 handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
482 IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
483 CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
484 DW_OP_stack_value to get address of items that are not available
486 (dw_loc_list): Handle single element lists correctly.
488 2009-09-20 Kai Tietz <kai.tietz@onevision.com>
489 Pascal Obry <obry@adacore.com>
491 * unwind-dw2-fde.c (classify_object_over_fdes):
492 Cast the constant 1 to _Unwind_Ptr.
493 (add_fdes): Likewise.
494 (linear_search_fdes): Likewise.
496 2009-09-20 Eric Botcazou <ebotcazou@adacore.com>
498 * stor-layout.c (set_sizetype): Avoid useless type copy.
500 2009-09-20 Richard Sandiford <rdsandiford@googlemail.com>
502 * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
504 (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
505 * configure, config.in: Regenerate.
506 * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
508 * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
509 (ASM_PREFERRED_EH_DATA_FORMAT): Define. Use MIPS_EH_INDIRECT
510 for global data if the output could be used in a shared library.
511 * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
512 to 0 if TARGET_WRITABLE_EH_FRAME.
514 2009-09-20 Paolo Bonzini <bonzini@gnu.org>
516 PR rtl-optimization/39886
517 * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
518 just when insn is equal to BB_END (bb).
520 2009-09-19 Adam Nemet <anemet@caviumnetworks.com>
522 * config/mips/mips.opt (mrelax-pic-calls): New option.
523 * config/mips/mips.c (mips_strip_unspec_address): Move it up in
525 (mips_unspec_call): Change "unspec_call" expander into this.
526 (mips_strip_unspec_call): New function.
527 (mips_got_load): Call mips_unspec_call instead of
528 gen_unspec_call<mode>.
529 (mips16_build_call_stub): Fix comment for fp_code. Adjust call to
531 (mips_cfg_in_reorg): New function.
532 (mips16_lay_out_constants): Use it to decide whether to call
533 CFG-aware insn splitting.
534 (r10k_insert_cache_barriers): Move CFG set-up code from here to
535 mips_reorg. Move DF set-up code from here ...
536 (mips_df_reorg): ... to here. Call r10k_insert_cache_barriers
538 (mips_reorg): Call mips_df_reorg instead of
539 r10k_insert_cache_barriers. Move CFG set-up code here from
540 r10k_insert_cache_barriers.
541 (mips_call_expr_from_insn): New function.
542 (mips_pic_call_symbol_from_set): Likewise.
543 (mips_find_pic_call_symbol): Likewise.
544 (mips_annotate_pic_call_expr): Likewise.
545 (mips_get_pic_call_symbol): Likewise.
546 (mips_annotate_pic_calls): Likewise.
547 (mips_override_options): Disable -mrelax-pic-calls unless PIC
549 (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
550 * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
551 * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
553 * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
554 (unspec_call<mode>): Remove it.
555 (sibcall_internal, sibcall_value_internal,
556 sibcall_value_multiple_internal, call_internal, call_split,
557 call_value_internal, call_value_split,
558 call_value_multiple_internal, call_value_multiple_split): Pass
559 SIZE_OPNO to MIPS_CALL.
560 (call_internal_direct, call_direct_split,
561 call_value_internal_direct, call_value_direct_split): Pass -1 as
562 SIZE_OPNO to MIPS_CALL.
563 * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
564 * configure: Regenerate.
565 * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
566 and -mno-relax-pic-calls.
567 (MIPS Options): Document -mrelax-pic-calls
568 and -mno-relax-pic-calls.
570 2009-09-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
573 * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
574 in the directory this rule is called from, rather than the
575 toplevel 'gcc' directory, to fix in-tree build.
577 2009-09-19 Chris Demetriou <cgd@google.com>
579 PR preprocessor/28435:
580 * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
581 to cpplib that the preprocessor output is needed.
583 2009-09-19 Jakub Jelinek <jakub@redhat.com>
585 * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
586 *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
587 *return_and_restore_fpregs_<mode>,
588 *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
591 * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
592 instead of assuming it has always a REG inside of it.
594 2009-09-18 Gerald Pfeifer <gerald@pfeifer.com>
596 * config/freebsd.h: Update comment on types.
599 2009-09-18 Jason Merrill <jason@redhat.com>
601 * c.opt: Add -fno-deduce-init-list.
603 2009-09-18 Neil Vachharajani <nvachhar@google.com>
605 * value-prof.c (interesting_stringop_to_profile_p): Added output
606 argument to indicate which parameter is the size parameter.
607 * value-prof.c (gimple_stringop_fixed_value): Use
608 INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
609 * value-prof.c (gimple_stringops_transform): Update call sites to
610 INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
611 * testsuite/gcc.dg/tree-prof/val-prof-7.c: Added test case.
613 2009-09-18 Uros Bizjak <ubizjak@gmail.com>
616 From David Binderman <dcb314@hotmail.com>:
617 * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
618 local variable f. Remove stale comments.
619 (ix86_compute_frame_layout): Remove useless local variable total_size.
621 (legitimate_address_p): Remove useless local variables
622 reason_rtx and reason.
623 (ix86_split_copysign_const): Remove useless local variable op1.
624 (scale_counter): Remove useless local variable piece_size_mask.
626 2009-09-18 Jakub Jelinek <jakub@redhat.com>
628 * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
631 2009-09-17 Michael Haubenwallner <michael.haubenwallner@salomon.at>
634 * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
636 2009-09-17 Jakub Jelinek <jakub@redhat.com>
638 * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
641 2009-09-17 Alexandre Oliva <aoliva@redhat.com>
643 * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
644 DW_OP_implicit_value even without dwarf_version 4.
646 2009-09-17 Jan Hubicka <jh@suse.cz>
648 * dwarf2out.c: Include tree-pass.h and gimple.h.
649 (loc_list_plus_const): New function.
650 (loc_descriptor_from_tree_1): Rename to ...
651 (loc_descriptor_from_tree): ... remove original.
652 (loc_list_from_tree): New function.
653 (add_AT_location_description): Accept location list.
654 (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
655 (concatn_mem_loc_descriptor): Remove.
656 (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
658 (secname_for_decl): Move up.
659 (hidden_reference_p): New function; break out from ...
660 (loc_by_refernece): ... here; move up.
661 (dw_loc_list): New function.
662 (single_element_loc_list): New function.
663 (single_element_loc_list_p): New function.
664 (add_loc_descr_to_each): New function.
665 (add_loc_list): New function.
666 (loc_descr_from_tree): Make wraper of loc_list_from_tree.
667 (loc_list_from_tree): Reroganized from loc_descr_from_tree;
668 add diagnostics why expansion failed.
669 (add_location_or_const_value_attribute): Support location lists.
670 (add_bound_info): Likewise.
671 (descr_info_loc): Update call of loc_descriptor_from_tree.
672 (gen_variable_die): Work on location lists.
673 * final.c (pass_final): Add dump file.
674 * Makefile.in (dwarf2out.o): Add new dependencies.
676 2009-09-17 Janis Johnson <janis187@us.ibm.com>
679 * real.c decimal_from_integer, decimal_integer_string): New.
680 (real_from_integer): Use them as special case for decimal float.
681 * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
682 (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
683 Do not append zero after the decimal point in string to convert.
685 2009-09-17 Alexander Monakov <amonakov@ispras.ru>
687 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
688 for ARRAY_REFs. Use array_ref_{low,up}_bound to determine bounds.
690 2009-09-17 Martin Jambor <mjambor@suse.cz>
692 * common.opt (fipa-sra): New switch.
693 * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
694 * timevar.def (TV_IPA_SRA): New timevar.
695 * params.def (ipa-sra-ptr-growth-factor): New parameter.
696 * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
697 * tree-sra.c: Include cgraph.c.
698 (enum sra_mode): Added SRA_MODE_EARLY_IPA.
699 (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
700 and grp_not_necessarilly_dereferenced.
701 (func_param_count): New variable.
702 (encountered_apply_args): New variable.
703 (bb_dereferences): New variable.
704 (final_bbs): New variable.
705 (no_accesses_representant): New variable.
706 (no_accesses_p): New function.
707 (dump_access): Dump the new fields.
708 (sra_initialize): Set encountered_apply_args to false.
709 (get_ssa_base_param): New function.
710 (mark_parm_dereference): New function.
711 (create_access): Caring for INIDRECT_REFs and different handling of
712 varialble length accesses in early IPA SRA. Store the stmt - a new
713 parameter - to the new access.
714 (build_access_from_expr_1): New parameter stmt, passed to
715 create_access. Handle INDIRECT_REFs.
716 (build_access_from_expr): Pass the current statement to
717 build_access_from_expr_1.
718 (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
720 (build_accesses_from_assign): Pass the current statement to
721 build_access_from_expr_1. Do not create assign links in IPA-SRA.
722 (scan_function): Call handle_ssa_defs on phi nodes. Set bits in
723 final_bbs when necessary. Check for calls to __builtin_apply_args.
724 Fixup EH info if anythng was changed.
725 (is_unused_scalar_param): New function.
726 (ptr_parm_has_direct_uses): New function.
727 (find_param_candidates): New function.
728 (mark_maybe_modified): New function.
729 (analyze_modified_params): New function.
730 (propagate_dereference_distances): New function.
731 (dump_dereferences_table): New function.
732 (analyze_caller_dereference_legality): New function.
733 (unmodified_by_ref_scalar_representative): New function.
734 (splice_param_accesses): New function.
735 (decide_one_param_reduction): New function.
736 (enum ipa_splicing_result): New type.
737 (splice_all_param_accesses): New function.
738 (get_param_index): New function.
739 (turn_representatives_into_adjustments): New function.
740 (analyze_all_param_acesses): New function.
741 (get_replaced_param_substitute): New function.
742 (get_adjustment_for_base): New function.
743 (replace_removed_params_ssa_names): New function.
744 (sra_ipa_reset_debug_stmts): New function.
745 (sra_ipa_modify_expr): New function.
746 (sra_ipa_modify_assign): New function.
747 (convert_callers): New function.
748 (modify_function): New function.
749 (ipa_sra_preliminary_function_checks): New function.
750 (ipa_early_sra): New function.
751 (ipa_early_sra_gate): New function.
752 (pass_early_ipa_sra): New variable.
753 * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
755 2009-09-17 Michael Matz <matz@suse.de>
758 * tree.c (build_type_attribute_qual_variant): Export.
759 * tree.h (build_type_attribute_qual_variant): Declare.
760 * tree-inline.c (remap_type_1): Use it to build variants with
761 the original qualifiers and attributes.
763 2009-09-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
765 * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
766 without a fallthrough edge.
768 2009-09-16 DJ Delorie <dj@redhat.com>
770 * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
771 chip and ignore the "fast_interrupt" attribute if so.
773 2009-09-16 Richard Henderson <rth@redhat.com>
776 * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
779 2009-09-16 Richard Henderson <rth@redhat.com>
782 * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
783 is set only if DECL_NO_STATIC_CHAIN is unset.
784 * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
785 (FOR_EACH_NEST_INFO): New.
786 (walk_all_functions): Use it.
787 (finalize_nesting_tree): Likewise.
788 (unnest_nesting_tree): Likewise.
789 (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
790 (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
791 (convert_gimple_call): Early out if gimple_call_chain already set.
792 (convert_all_function_calls): Iterate until no new functions
793 require a static chain.
794 (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
795 when building a trampoline. Use dump_function_to_file instead
797 (lower_nested_functions): Open dump_file. Validate that decls
798 that have DECL_NO_STATIC_CHAIN from the front end don't have that
799 bit reset by this pass.
801 2009-09-16 Michael Matz <matz@suse.de>
804 * tree.h (struct tree_decl_common): Add decl_restricted_flag,
805 shorten decl_common_unused.
806 (DECL_RESTRICTED_P): New accessor.
807 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
808 to disambiguate marked decls and restrict pointers.
810 2009-09-16 Richard Henderson <rth@redhat.com>
813 * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
815 2009-09-16 Jakub Jelinek <jakub@redhat.com>
817 * integrate.c (set_block_abstract_flags): Call
818 set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
820 2009-09-16 Richard Guenther <rguenther@suse.de>
823 * tree-flow-inline.h (may_be_aliased): Compute readonly variables
826 2009-09-16 DJ Delorie <dj@redhat.com>
827 Kaz Kojima <kkojima@gcc.gnu.org>
829 * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
830 (sh_expand_prologue): Update calls to output_stack_adjust.
831 (sh_expand_epilogue): Likewise.
833 2009-09-15 Adam Nemet <anemet@caviumnetworks.com>
836 * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
837 trying to limit the extent of searches in the insn stream.
839 2009-09-15 Nathan Froyd <froydnj@codesourcery.com>
840 Jakub Jelinek <jakub@redhat.com>
844 * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
846 (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
847 SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
848 (rs6000_savres_strategy): Always save FP registers inline if the
849 target doesn't support hardware double-precision. Set the above
850 bits in return value when needed.
851 (rs6000_savres_routine_sym): Fix computation for cache selector.
852 Mark the generated symbol as a function. Rename exitp argument to
853 lr. Move code for determining the name of the symbol...
854 (rs6000_savres_routine_name): ...here. New function. Add cases for
855 getting the names right on AIX and 64-bit Linux.
856 (savres_routine_name): New variable.
857 (rs6000_make_savres_rtx): Rename exitp argument to lr. Don't assert
858 lr isn't set when savep. Use r12 resp. r1 instead of r11 depending
859 on what the target routine uses as a base register. If savep && lr
860 describe saving of r0 into memory slot.
861 (rs6000_emit_prologue): Correct use of call_used_regs. Fix out of
862 line calls for AIX ABI.
863 (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
864 determine FP save/restore functions.
865 (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
866 frame_reg_rtx != sp_reg_rtx. Use gen_add3_insn instead of
868 (rs6000_emit_epilogue): Adjust computation of restore_lr.
869 Duplicate restoration of LR and execute the appropriate one
870 depending on whether GPRs are being restored inline. Set r11 from
871 offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
872 r11, adjust sp_offset. Use gen_add3_insn instead of gen_addsi3.
873 Fix out of line calls for AIX ABI.
874 * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
876 * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
878 (*restore_gpregs_spe): Likewise.
879 (*return_and_restore_gpregs_spe): Likewise.
880 * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
881 Define to empty string unconditionally.
882 * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
883 Define to empty string unconditionally.
884 (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
887 2009-09-15 Jan Hubicka <jh@suse.cz>
889 * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
890 * params.def (inline-insns-auto): Likewise.
892 2009-09-15 Martin Jambor <mjambor@suse.cz>
894 * ipa-inline.c (estimate_function_body_sizes): Dump info about
895 individual statements only at TDF_DETAILS dump level. Format
896 source for 80 characters per line.
898 2009-09-15 Christian Bruel <christian.bruel@st.com>
900 * regrename.c (do_replace): Update REG_DEAD notes.
902 2009-09-15 Revital Eres <eres@il.ibm.com>
904 * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
905 * targhooks.c (default_builtin_support_vector_misalignment):
906 New builtin function.
907 * targhooks.h (default_builtin_support_vector_misalignment):
909 * target.h (builtin_support_vector_misalignment):
910 New field in struct gcc_target.
911 * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
912 new builtin function.
913 * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
915 * config/rs6000/rs6000.c
916 (rs6000_builtin_support_vector_misalignment): New function.
917 (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
919 2009-09-15 Jie Zhang <jie.zhang@analog.com>
921 * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
923 (bfin_optimize_loop): Likewise.
924 (bfin_gen_bundles): Likewise.
925 (workaround_speculation): Likewise.
926 (find_load): Return NULL_RTX for debug_insn.
928 2009-09-15 Uros Bizjak <ubizjak@gmail.com>
930 * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
933 2009-09-14 DJ Delorie <dj@redhat.com>
935 * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
936 * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
939 2009-09-14 Richard Henderson <rth@redhat.com>
940 Jakub Jelinek <jakub@redhat.com>
942 * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
943 * cfgbuild.c (make_edges): Handle asm goto.
944 * cfglayout.c (fixup_reorder_chain): Likewise.
945 * cfgrtl.c (patch_jump_insn): Likewise.
946 * gimple-pretty-print.c (dump_gimple_asm): Likewise.
947 * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
948 (gimple_build_asm_vec): Add and use labels parameter.
949 (gimple_build_asm): Remove.
950 (walk_gimple_asm): Walk labels too.
951 * gimple.def (GIMPLE_ASM): Update docs.
952 * gimple.h: Update decls.
953 (struct gimple_statement_asm): Change nc to use unsigned char;
955 (gimple_asm_nlabels): New.
956 (gimple_asm_label_op, gimple_asm_set_label_op): New.
957 * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
958 into gimple_build_asm_vec.
959 * jump.c (mark_jump_label_asm): New.
960 (mark_jump_label): Use it.
961 (redirect_jump_1): Handle asm goto.
962 (invert_jump_1): Soft fail if X is null.
963 * recog.c (extract_asm_operands): New.
964 (asm_noperands): Use it; handle asm labels.
965 (decode_asm_operands): Use extract_asm_operands.
966 (asm_operand_ok): Properly handle empty string.
967 * reg-stack.c (get_asm_operands_in_out): Rename from
968 get_asm_operand_n_inputs; use extract_asm_operands; return both
969 inputs and outputs by reference; update all callers.
970 * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
971 * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
972 (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
973 (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
974 (extract_asm_operands): Declare.
975 * stmt.c (expand_asm_operands): Add and use labels parameter.
976 (check_unique_operand_names): Likewise.
977 (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
978 (expand_asm_stmt): Handle asm labels.
979 * tree-cfg.c (make_gimple_asm_edges): New.
980 (make_edges): Use it.
981 (cleanup_dead_labels): Handle asm labels.
982 (is_ctrl_altering_stmt): Likewise.
983 (gimple_redirect_edge_and_branch): Likewise.
984 * tree.def (ASM_EXPR): Add 5th operand.
985 * tree.h (ASM_LABELS): New.
986 (resolve_asm_operand_names): Update decl.
988 * c-parser.c (c_parser_asm_statement): Parse asm goto.
989 (c_parser_asm_goto_operands): New.
990 * c-tree.h (build_asm_expr): Update decl.
991 * c-typeck.c (build_asm_expr): Add and use labels parameter.
992 * doc/extend.texi: Document asm goto.
994 2009-09-14 Richard Henderson <rth@redhat.com>
996 * except.h: Update declarations.
997 (struct pointer_map_t): Forward declare.
998 (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
999 (struct eh_landing_pad_d, eh_landing_pad): New.
1000 (struct eh_catch_d, eh_catch): New.
1001 (struct eh_region_d): Remove next_region_sharing_label, aka,
1002 label, tree_label, landing_pad, post_landing_pad, resume,
1003 may_contain_throw. Rename region_number to index. Remove
1004 u.eh_catch, u.eh_throw. Rename u.eh_try.eh_catch to first_catch.
1005 Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
1006 (VEC(eh_landing_pad,gc)): New.
1007 (struct eh_status): Remove last_region_number. Add lp_array,
1008 throw_stmt_table, ttype_data, ehspec_data.
1009 (ehr_next, FOR_ALL_EH_REGION_AT): New.
1010 (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
1011 * except.c (lang_protect_cleanup_actions): Return tree.
1012 (struct ehl_map_entry): Remove.
1013 (init_eh_for_function): Push zero entries for region and lp_array.
1014 (gen_eh_region): Add to region_array immediately.
1015 (gen_eh_region_catch): Operate on eh_catch objects.
1016 (gen_eh_landing_pad): New.
1017 (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
1018 (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
1019 (get_eh_region_from_number, get_eh_region_from_number_fn): New.
1020 (get_eh_landing_pad_from_number_fn): New.
1021 (get_eh_landing_pad_from_number): New.
1022 (get_eh_region_from_lp_number_fn): New.
1023 (get_eh_region_from_lp_number): New.
1024 (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
1025 (get_exception_pointer, get_exception_filter): Remove.
1026 (collect_eh_region_array, can_be_reached_by_runtime): Remove.
1027 (current_function_has_exception_handlers): Simplify.
1028 (bring_to_root, eh_region_replaceable_by_p): Remove.
1029 (replace_region, hash_type_list, hash_eh_region): Remove.
1030 (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
1031 (label_to_region_map, num_eh_regions): Remove.
1032 (get_next_region_sharing_label, must_not_throw_labels): Remove.
1033 (find_exception_handler_labels): Remove.
1034 (duplicate_eh_regions_0, find_prev_try): Remove.
1035 (struct duplicate_eh_regions_data): New.
1036 (duplicate_eh_regions_1): Rewrite.
1037 (duplicate_eh_regions): Return a pointer map instead of an
1039 (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
1040 (redirect_eh_edge_to_label): Remove.
1041 (eh_region_outermost): Rewrite using eh_region pointers
1042 instead of integers.
1043 (add_ttypes_entry): Update for ttype_data move to eh_status.
1044 (add_ehspec_entry): Rewrite with VEC instead of varray.
1045 (assign_filter_values): Likewise. Export.
1046 (build_post_landing_pads, connect_post_landing_pads): Remove.
1047 (dw2_build_landing_pads): Rewrite to use lp_array.
1048 (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
1049 (sjlj_assign_call_site_values): Rewrite to use lp_array.
1050 (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
1051 (sjlj_mark_call_sites): Update for landing pad numbers.
1052 (finish_eh_generation): Rewrite.
1053 (gate_handle_eh): Do nothing for no eh tree.
1054 (pass_rtl_eh): Move up near finish_eh_generation.
1055 (remove_eh_landing_pad): New.
1056 (remove_eh_handler): Export.
1057 (remove_eh_region, remove_eh_handler_and_replace): Remove.
1058 (for_each_eh_label): Rewrite to use lp_array.
1059 (make_reg_eh_region_note): New.
1060 (make_reg_eh_region_note_nothrow_nononlocal): New.
1061 (insn_could_throw_p): New.
1062 (copy_reg_eh_region_note_forward): New.
1063 (copy_reg_eh_region_note_backward): New.
1064 (check_handled, add_reachable_handler): Remove.
1065 (reachable_next_level, foreach_reachable_handler): Remove.
1066 (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
1067 (get_eh_region_and_lp_from_rtx): New.
1068 (get_eh_region_from_rtx): New.
1069 (can_throw_internal_1, can_throw_external_1): Remove.
1070 (can_throw_internal): Use get_eh_region_from_rtx.
1071 (can_throw_external): Use get_eh_region_and_lp_from_rtx.
1072 (insn_nothrow_p, can_nonlocal_goto): New.
1073 (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
1074 (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
1075 (add_action_record): Use VEC not varray.
1076 (collect_one_action_chain): Update for eh_region changes.
1077 (convert_to_eh_region_ranges): Make static. Use VEC not varray.
1078 Use get_eh_region_and_lp_from_rtx.
1079 (gate_convert_to_eh_region_ranges): New.
1080 (pass_convert_to_eh_region_ranges): Use it.
1081 (push_uleb128, push_sleb128): Use VEC not varray.
1082 (output_one_function_exception_table): Likewise.
1083 (dump_eh_tree): Update for eh_region changes.
1084 (verify_eh_tree): Likewise.
1085 (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
1086 * tree-eh.c: Include target.h.
1087 (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
1088 Don't disallow GIMPLE_RESX; adjust argument check.
1089 (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
1090 (record_stmt_eh_region): Update for landing pad numbers;
1091 generate a landing pad if necessary.
1092 (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
1093 (remove_stmt_from_eh_lp_fn): Similarly.
1094 (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
1095 Update for lp numbers; don't special case missing throw_stmt_table.
1096 (lookup_expr_eh_lp): Similarly.
1097 (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
1098 (eh_seq, eh_region_may_contain_throw): New.
1099 (struct leh_state): Add ehp_region.
1100 (struct leh_tf_state): Remove eh_label.
1101 (emit_post_landing_pad): New.
1102 (emit_resx, emit_eh_dispatch): New.
1103 (note_eh_region_may_contain_throw): New.
1104 (frob_into_branch_around): Take eh_region not eh label;
1105 emit eh code into eh_seq.
1106 (honor_protect_cleanup_actions): Early exit for no actions. Don't
1107 handle EXC_PTR_EXPR, FILTER_EXPR. Use gimple_build_eh_must_not_throw,
1108 lower_eh_must_not_throw. Emit code to eh_seq.
1109 (lower_try_finally_nofallthru): Emit eh code to eh_seq.
1110 (lower_try_finally_onedest): Likewise.
1111 (lower_try_finally_copy): Likewise.
1112 (lower_try_finally_switch): Likewise.
1113 (lower_try_finally): Initialize ehp_region.
1114 (lower_catch): Update for eh_catch objects.
1115 (lower_eh_filter): Don't handle must_not_throw.
1116 (lower_eh_must_not_throw): New.
1117 (lower_cleanup): Don't set eh_label.
1118 (lower_eh_constructs_2): Resolve eh builtins.
1119 Handle GIMPLE_EH_MUST_NOT_THROW.
1120 (lower_eh_constructs): Initialize eh_region_may_contain_throw.
1121 Add eh_seq to the end of the function body.
1122 (make_eh_dispatch_edges): New.
1123 (make_eh_edge): Remove.
1124 (make_eh_edges): Simplify for landing pads.
1125 (redirect_eh_edge_1): New.
1126 (redirect_eh_edge): Use it.
1127 (redirect_eh_dispatch_edge): New.
1128 (stmt_could_throw_p): Use a switch. Allow RESX.
1129 (stmt_can_throw_external): Use lookup_stmt_eh_lp.
1130 (stmt_can_throw_internal): Likewise.
1131 (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
1132 (maybe_clean_or_replace_eh_stmt): Update for landing pads.
1133 (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
1134 (gate_refactor_eh): New.
1135 (pass_refactor_eh): Use it.
1136 (lower_resx, execute_lower_resx, pass_lower_resx): New.
1137 (lower_eh_dispatch, execute_lower_eh_dispatch): New.
1138 (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
1139 (remove_unreachable_handlers): Rename from
1140 tree_remove_unreachable_handlers; rewrite for landing pads;
1141 call remove_eh_handler directly.
1142 (remove_unreachable_handlers_no_lp): New.
1143 (unsplit_eh, unsplit_all_eh): New.
1144 (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
1145 (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
1146 (cleanup_empty_eh_unsplit): New.
1147 (cleanup_empty_eh): Rewrite.
1148 (cleanup_all_empty_eh): New.
1149 (execute_cleanup_eh): Rename from cleanup_eh. Remove unreachable
1150 handlers first. Use unsplit_all_eh, cleanup_all_empty_eh.
1151 (gate_cleanup_eh): New.
1152 (pass_cleanup_eh): Use it.
1153 (verify_eh_edges): Move later in file. Expect one EH edge.
1154 (verify_eh_dispatch_edge): New.
1156 * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
1157 (gtype-desc.o): Add TARGET_H.
1158 (tree.o): Use EXCEPT_H, not except.h.
1159 (cfgbuild.o): Add EXPR_H.
1160 (GTFILES): Add vecprim.h.
1161 * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
1162 BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
1163 * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
1164 BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
1165 * calls.c (emit_call_1): Use make_reg_eh_region_note.
1166 * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
1167 calls to can_throw_internal.
1168 (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
1169 (make_edges): Don't handle RESX; use can_nonlocal_goto.
1170 * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
1171 (expand_gimple_stmt): Use make_reg_eh_region_note.
1172 (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
1173 (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
1174 or find_exception_handler_labels.
1175 * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX. Assert
1176 there is exacly one EH edge. Use can_nonlocal_goto and
1178 * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
1179 (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
1180 * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
1181 * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
1182 * dce.c (deletable_insn_p_1): Don't test may_trap_p.
1183 (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
1184 * dse.c (scan_insn): Use insn_could_throw_p.
1185 * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
1186 * expr.c (expand_expr_real): Use make_reg_eh_region_note.
1187 (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
1188 * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
1189 EXC_PTR_EXPR or FILTER_EXPR.
1190 (tree_expr_nonzero_warnv_p): Likewise.
1191 * function.h: Include vecprim.h, not varray.h
1192 (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
1193 move ttype_data and ehspec_data members to struct eh_status; change
1194 action_record_data member to a VEC.
1195 * gcse.c (hash_scan_set): Use can_throw_internal.
1196 * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
1197 * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
1198 * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
1199 (block_may_fallthru): Don't handle RESX_EXPR.
1200 * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
1201 (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
1202 (dump_gimple_stmt): Dump landing pad information with TDF_EH;
1203 handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
1204 * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
1205 GIMPLE_EH_DISPATCH, GIMPLE_RESX.
1206 (gimple_size): Likewise.
1207 (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
1208 (gimple_build_resx): Use gimple_build_with_ops.
1209 (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
1210 (is_gimple_val): Likewise.
1211 (is_gimple_stmt): Remove RESX_EXPR.
1212 * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
1213 (GIMPLE_RESX): Reorder with other EH constructs.
1214 * gimple.h (struct gimple_statement_eh_mnt): New.
1215 (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
1216 (gimple_eh_filter_must_not_throw): Remove.
1217 (gimple_eh_filter_set_must_not_throw): Remove.
1218 (gimple_eh_must_not_throw_fndecl): New.
1219 (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
1220 (is_gimple_resx): New.
1221 * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
1222 Don't copy EH_FILTER_MUST_NOT_THROW.
1223 * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
1224 * ipa-inline.c (estimate_function_body_sizes): Don't try to
1225 handle must_not_throw_labels specially.
1226 * ipa-pure-const.c (check_call): Update debug statement for LP.
1227 * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
1228 * ipa-utils.c (get_base_var): Likewise.
1229 * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
1230 * lower-subreg.c (move_eh_region_note): Remove.
1231 (resolve_simple_move): Use copy_reg_eh_region_note_forward.
1232 * omp-low.c (new_omp_context): Update for eh_lp_nr.
1233 (create_task_copyfn): Likewise.
1234 (maybe_catch_exception): Use gimple_build_eh_filter.
1235 * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
1236 REG_EH_REGION. Use make_reg_eh_region_note_nothrow_nononlocal.
1237 * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
1238 and pass_lower_resx.
1239 * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
1240 * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
1241 can_throw_internal, can_nonlocal_goto.
1242 * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
1243 copy_reg_eh_region_note_forward.
1244 (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
1245 (emit_output_reload_insns): Likewise.
1246 (copy_eh_notes): Remove.
1247 * rtl.def (RESX): Remove.
1248 * rtl.h: Update declarations.
1249 * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
1250 * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
1251 (update_eh_label): Remove.
1252 (cleanup_dead_labels_eh): New.
1253 (cleanup_deal_labels): Use it instead of update_eh_label.
1254 (gimple_merge_blocks): Update landing pad data structure when
1255 removing a landing pad label.
1256 (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
1257 test; handle GIMPLE_EH_MUST_NOT_THROW.
1258 (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
1259 (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
1260 (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
1261 (verify_stmt): Likewise. Verify landing pads.
1262 (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
1263 (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
1264 (struct move_stmt_d): Add eh_map.
1265 (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
1266 (move_stmt_r): Remap eh region numbers in builtin calls,
1267 resx and eh_dispatch.
1268 (move_block_to_fn): Remove eh_offset parameter. Use
1269 maybe_duplicate_eh_stmt_fn.
1270 (find_outermost_region_in_block): Operate on eh_region pointers
1271 instead of region numbers.
1272 (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
1273 duplicate_eh_regions.
1274 * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
1275 test earlier. Disallow EH landing pads.
1276 * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
1277 * tree-flow.h: Update declarations.
1278 (struct tree_ann_common_d): Replace rn with lp_nr.
1279 * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
1280 (remap_eh_region_nr, remap_eh_region_tree_nr): New.
1281 (remap_gimple_stmt): Remap eh region numbers in builtin calls,
1282 resx and eh_dispatch.
1283 (copy_bb): Use maybe_duplicate_eh_stmt_fn.
1284 (copy_edges_for_bb): Use make_eh_dispatch_edges.
1285 (copy_cfg_body): Expect eh_map instead of eh_region_offset
1286 from duplicate_eh_regions.
1287 (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
1288 update RESX; handle EH_DISPATCH.
1289 (expand_call_inline): Set eh_lp_nr, not eh_region.
1290 (maybe_inline_call_in_expr): Likewise.
1291 * tree-inline.h (struct copy_body_data): Replace eh_region with
1292 eh_lp_nr, eh_region_offset with eh_map.
1293 * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
1294 * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
1295 * tree-pretty-print.c (dump_generic_node): Don't handle
1296 EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
1297 * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
1298 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
1299 EXC_PTR_EXPR, FILTER_EXPR.
1300 * tree-ssa-operands.c (get_expr_operands): Likewise.
1301 * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
1302 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
1303 (ao_ref_init_from_vn_reference): Likewise.
1304 * tree-ssa-sink.c (statement_sink_location): Likewise.
1305 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1306 (mark_virtual_phi_result_for_renaming): Export. Tidy.
1307 * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
1308 EXC_PTR_EXPR, FILTER_EXPR.
1309 (is_exception_related): Remove.
1310 (compute_avail): Don't call it.
1311 * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
1312 * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
1313 (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
1314 (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
1316 (build_resx): Remove.
1317 * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
1318 * tree.h: Update declarations.
1319 (EH_FILTER_MUST_NOT_THROW): Remove.
1320 (struct tree_label_decl): Add eh_landing_pad_nr.
1321 (EH_LANDING_PAD_NR): New.
1322 * value-prof.c (gimple_ic): Tidy variable names. Update for
1323 landing pad numbers.
1324 (gimple_stringop_fixed_value): Tidy variable names. Assert
1325 that neither call stmt can throw.
1326 * vecprim.h (uchar): New.
1327 (VEC(uchar,heap), VEC(uchar,gc)): New.
1329 * c-common.c (c_define_builtins): Update call to
1330 build_common_builtin_nodes.
1331 * c-parser.c (c_parse_file): Don't call
1332 default_init_unwind_resume_libfunc.
1334 2009-09-14 Richard Sandiford <rdsandiford@googlemail.com>
1336 * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
1337 (mips_cprestore_address_p): Likewise.
1338 (mips_save_gp_to_cprestore_slot): Likewise.
1339 (mips_restore_gp): Rename to...
1340 (mips_restore_gp_from_cprestore_slot): ...this.
1341 (mips_must_initialize_gp_p): Declare.
1342 (mips_emit_save_slot_move): Likewise.
1343 (mips_output_load_label): Return nothing.
1344 (mips_eh_uses): Declare.
1345 * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
1346 (TARGET_CPRESTORE_DIRECTIVE): New macro.
1347 (TARGET_ABSOLUTE_JUMPS): Likewise.
1348 (EH_USES): Likewise.
1349 (FIRST_PSEUDO_REGISTER): Update comment.
1350 (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
1351 (MIPS_CALL): ...here.
1352 (REGISTER_NAMES): Add $cprestore.
1353 * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
1354 Add load_label_length, has_inflexible_gp_insn_p,
1355 has_flexible_gp_insn_p, must_initialize_gp_p and
1356 must_restore_gp_when_clobbered_p.
1357 (mips_expand_call): Don't generate split instructions here.
1358 (mips_split_call): Update the call to mips_restore_gp after
1359 the above name change.
1360 (mips16_cfun_returns_in_fpr_p): Move earlier in file.
1361 (mips_find_gp_ref): New function.
1362 (mips_insn_has_inflexible_gp_ref_p): Likewise.
1363 (mips_cfun_has_inflexible_gp_ref_p): Likewise.
1364 (mips_insn_has_flexible_gp_ref_p): Likewise.
1365 (mips_cfun_has_flexible_gp_ref_p): Likewise.
1366 (mips_function_has_gp_insn): Delete.
1367 (mips_global_pointer): Drop the df_regs_ever_live_p check.
1368 Use the new functions above. Only return INVALID_REGNUM
1369 for TARGET_ABSOLUTE_JUMPS.
1370 (mips_must_initialize_gp_p): New function.
1371 (mips_get_cprestore_base_and_offset): New function, extracted from...
1372 (mips_cprestore_slot): ...here. Take a bool parameter.
1373 (mips_cfun_has_cprestore_slot_p): New function.
1374 (mips_cprestore_address_p): Likewise.
1375 (mips_save_gp_to_cprestore_slot): Likewise.
1376 (mips_restore_gp): Rename to...
1377 (mips_restore_gp_from_cprestore_slot): ...this. Assert
1378 epilogue_completed. Update the call to mips_cprestore_slot.
1379 Test cfun->machine->must_restore_gp_when_clobbered_p.
1380 (mips_direct_save_slot_move_p): New function.
1381 (mips_emit_save_slot_move): Likewise.
1382 (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
1383 of cfun->machine->global_pointer.
1384 (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
1385 (mips_save_reg): Use mips_emit_save_slot_move.
1386 (mips_expand_prologue): Set must_initialize_gp_p.
1387 Use mips_cfun_has_cprestore_slot_p. Use gen_potential_cprestore
1388 for all cprestore saves. Emit a use_cprestore instruction after
1389 setting up the cprestore slot.
1390 (mips_restore_reg): Use mips_emit_save_slot_move.
1391 (mips_process_load_label): New function.
1392 (mips_load_label_length): Likewise.
1393 (mips_output_load_label): Don't return asm: output it here instead.
1394 Use mips_process_load_label.
1395 (mips_adjust_insn_length): Adjust the length of branch instructions
1396 that have length MAX_PIC_BRANCH_LENGTH.
1397 (mips_output_conditional_branch): Update the call to
1398 mips_output_load_label. Assume the branch target is OPERANDS[0]
1399 rather than OPERANDS[1]. Use MIPS_ABSOLUTE_JUMP for absolute jumps.
1400 (mips_output_order_conditional_branch): Swap the meaning of
1401 OPERANDS[0] and OPERANDS[1].
1402 (mips_variable_issue): Don't count ghost instructions.
1403 (mips_expand_ghost_gp_insns): New function.
1404 (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
1405 (mips_output_mi_thunk): Set must_initialize_gp_p.
1406 (mips_eh_uses): New function.
1407 * config/mips/predicates.md (cprestore_save_slot_operand)
1408 (cprestore_load_slot_operand): New predicates.
1409 * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
1410 (UNSPEC_MOVE_GP): Likewise.
1411 (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
1412 (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
1413 (CPRESTORE_SLOT_REGNUM): New register.
1414 (MAX_PIC_BRANCH_LENGTH): New constant.
1415 (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
1416 (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
1417 branches. Fix commentary.
1418 (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
1419 Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
1420 Change type to "ghost".
1421 (loadgp_absolute_<mode>): Likewise.
1422 (loadgp_rtp_<mode>): Likewise.
1423 (copygp_mips16): Likewise.
1424 (loadgp_blockage): Remove redundant mode attribute.
1425 (potential_cprestore): New instruction.
1426 (cprestore): Turn into an unspec set.
1427 (use_cprestore): New instruction.
1428 (*branch_fp): Swap operands 0 and 1. Remove redundant mode attribute.
1429 (*branch_fp_inverted): Likewise.
1430 (*branch_order<mode>): Likewise.
1431 (*branch_order<mode>_inverted): Likewise.
1432 (*branch_equality<mode>): Likewise.
1433 (*branch_equality<mode>_inverted): Likewise.
1434 (*branch_bit<bbv><mode>): Likewise.
1435 (*branch_bit<bbv><mode>_inverted): Likewise.
1436 (*branch_equality<mode>_mips16): Remove redundant mode.
1437 (jump): Turn into a define_expand.
1438 (*jump_absolute): New instruction.
1439 (*jump_pic): Likewise.
1440 (*jump_mips16): Rename previously-unnamed pattern. Remove
1441 redundant mode attribute.
1442 (restore_gp): Split on epilogue_completed rather than
1443 reload_completed. Change type to "ghost".
1444 (move_gp<mode>): New instruction.
1445 * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
1446 Remove redundant mode attribute.
1447 * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
1448 (bc1any4f, bc1any2t, bc1any2f): Likewise.
1449 (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
1451 2009-09-14 Michael Meissner <meissner@linux.vnet.ibm.com>
1454 * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
1455 are returned in the same register (vs34 or v2) that Altivec vector
1456 types are returned in.
1457 (rs6000_libcall_value): Ditto.
1460 * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
1461 instead of explicit addsi3/adddi3 calls.
1462 (rs6000_split_multireg_move): Ditto.
1463 (rs6000_emit_allocate_stack): Ditto.
1464 (rs6000_emit_prologue): Ditto.
1465 (rs6000_output_mi_thunk): Ditto.
1467 * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
1468 size is 64 bits if we can use 64-bit registers.
1470 2009-09-14 Bernd Schmidt <bernd.schmidt@analog.com>
1472 * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
1475 From Jie Zhang <jie.zhang@analog.com>:
1476 * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
1477 save FP and RETS with saveall attribute.
1478 (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
1479 with saveall attribute.
1481 * config/bfin/bfin.c (bfin_expand_builtin,
1482 case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
1485 From Jie Zhang <jie.zhang@analog.com>:
1486 * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
1487 before use in two places.
1488 * config/bfin/bfin.md (AREG): Define mode iterator.
1489 (reload_in, reload_out): Use mode iterator AREG.
1491 2009-09-14 Richard Guenther <rguenther@suse.de>
1494 * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
1495 EH personality path.
1497 2009-09-13 Richard Guenther <rguenther@suse.de>
1498 Rafael Avila de Espindola <espindola@google.com>
1500 * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1501 (LANG_HOOKS_EH_PERSONALITY): Likewise.
1502 (LANG_HOOKS_INITIALIZER): Adjust.
1503 (lhd_pass_through_t): Declare.
1504 * langhooks.h (struct lang_hooks): Add eh_runtime_type and
1506 * langhooks.c (lhd_pass_through_t): New function.
1507 * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
1508 dwarf2out_begin_prologue): Use personality from current_function_decl.
1509 * expr.h (get_personality_function): Declare.
1510 * expr.c (get_personality_function): New function.
1511 (build_personality_function): Likewise.
1512 * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
1513 (eh_personality_libfunc): Remove.
1514 * optabs.c (build_libfunc_function): New function split out from ...
1515 (init_one_libfunc): ... here.
1516 * tree.h (DECL_FUNCTION_PERSONALITY): New.
1517 (tree_function_decl): Add personality.
1518 (lhd_gcc_personality): Declare.
1519 (build_personality_function): Likewise.
1520 * tree.c (gcc_eh_personality_decl): New.
1521 (lhd_gcc_personality): New function.
1522 * except.h (lang_eh_runtime_type): Remove.
1523 (enum eh_personality_kind): New.
1524 (build_personality_function): Declare.
1525 (function_needs_eh_personality): Declare.
1526 * except.c (lang_eh_runtime_type): Remove.
1527 (function_needs_eh_personality): New function.
1528 (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
1529 (sjlj_emit_function_enter, output_function_exception_table):
1530 Use personality from current_function_decl.
1531 * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
1532 * tree-inline.c (tree_can_inline_p): Do not inline across different
1534 (expand_call_inline): Likewise. Adjust the callers EH personality.
1535 (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
1536 * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
1537 * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
1538 (c-parser.o): Likewise
1539 * c-tree.h (c_eh_initialized_p): Remove.
1540 (c_maybe_initialize_eh): Likewise.
1541 * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
1542 (finish_decl): Don't call c_maybe_initialize_eh.
1543 (c_eh_initialized_p): Remove.
1544 (c_maybe_initialize_eh): Likewise.
1545 * c-parser.c (c_parser_omp_construct): Likewise.
1546 (c_parse_file): Initialize exception handling.
1548 2009-09-13 Kai Tietz <kai.tietz@onevision.com>
1550 * config.gcc (tm_file): Remove i386/biarch32.h
1551 for i?86-w64-mingw* case.
1552 (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
1554 * config.host: Set for x64 mingw the option
1555 use_long_long_for_widest_fast_int to yes.
1557 2009-09-13 Eric Botcazou <ebotcazou@adacore.com>
1559 * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
1560 * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
1561 (dbxout_begin_function): Likewise.
1562 * final.c (dwarf2_debug_info_emitted_p): New predicate.
1563 (final_start_function): Do not emit debug info if DECL_IGNORED_P is
1564 set on the function.
1565 (final_end_function): Likewise.
1566 (final_scan_insn): Likewise.
1567 (rest_of_handle_final): Likewise.
1568 * varasm.c (assemble_start_function): Likewise.
1569 * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
1571 2009-09-12 Jason Merrill <jason@redhat.com>
1573 * dbgcnt.c (dbg_cnt_process_single_pair): constify.
1574 * opts.c (common_handle_option): constify.
1576 2009-09-12 Gerald Pfeifer <gerald@pfeifer.com>
1578 * doc/install.texi (avr): Remove obsolete reference site.
1580 2009-09-12 Gerald Pfeifer <gerald@pfeifer.com>
1582 * doc/install.texi (Binaries): Adjust AIX link.
1584 2009-09-12 Akim Demaille <demaille@gostai.com>
1586 * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
1587 Use an imperative sentence.
1589 2009-09-11 Richard Henderson <rth@redhat.com>
1591 * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
1592 structure-name and has-tree-operands arguments; update all entries.
1593 * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
1595 * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
1596 (gsstruct_code_size): New.
1597 (gss_for_code_): New.
1598 (gss_for_code): Remove.
1599 (gimple_size): Rewrite using gsstruct_code_size.
1600 (gimple_statement_structure): Move to gimple.h.
1601 * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
1602 (gss_for_code, gimple_statement_structure): New.
1603 (gimple_ops): Use new arrays; tidy.
1605 2009-09-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1607 * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
1608 operand to be a PLUS expression.
1609 * config/pa/pa.c (pa_secondary_reload): Likewise.
1611 2009-09-11 Jakub Jelinek <jakub@redhat.com>
1613 * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
1615 * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
1618 2009-09-11 Bernd Schmidt <bernd.schmidt@analog.com>
1620 From Jie Zhang <jie.zhang@analog.com>:
1621 * doc/extend.texi (node Function Attributes): Document l2
1623 (node Blackfin Variable Attributes): Document l2 variable attributes.
1625 2009-09-11 Loren J. Rittle <ljrittle@acm.org>
1627 * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
1628 to match the system compiler's configuration at inflection point.
1629 Add comment to remark a remaining difference with system compiler.
1631 * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
1632 * configure: Regenerate.
1634 2009-09-11 Bernd Schmidt <bernd.schmidt@analog.com>
1636 From Jie Zhang <jie.zhang@analog.com>:
1637 * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
1638 (bfin_handle_l2_attribute): New.
1639 (bfin_attribute_table): Add l2 attribute.
1641 2009-09-11 Michael Matz <matz@suse.de>
1644 * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
1645 on the local_decls list.
1647 2009-09-11 Alexandre Oliva <aoliva@redhat.com>
1651 * cselib.c (cselib_expand_value_rtx_cb): Document callback
1653 (cselib_expand_value_rtx_1): Use callback for SUBREGs. Adjust
1654 for VALUEs, to implement the documented interface.
1655 * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
1656 Adjust for VALUEs and anything else, to implement the
1657 documented interface.
1659 2009-09-10 Nathan Froyd <froydnj@codesourcery.com>
1661 * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
1662 with actual SPE/paired vector modes before using 64-bit alignment.
1663 Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
1665 2009-09-10 DJ Delorie <dj@redhat.com>
1667 * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
1670 * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
1671 * config/mep/mep.c (mep_legitimate_constant_p): New.
1672 * config/mep/mep-protos.h: Prototype it.
1674 2009-09-10 Richard Henderson <rth@redhat.com>
1676 * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
1678 2009-09-10 Jason Merrill <jason@redhat.com>
1680 * tree.c (chain_index): New fn.
1681 * tree.h: Declare it.
1683 2009-09-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1685 * config/sol2-c.c (cmn_err_length_specs): Initialize
1686 scalar_identity_flag.
1688 2009-09-10 Richard Henderson <rth@redhat.com>
1690 * tree.h (struct tree_decl_common): Move align member earlier;
1691 move label_decl_uid member ...
1692 (struct tree_label_decl): ... here.
1693 (LABEL_DECL_UID): Update to match.
1695 * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
1698 * tree-cfg.c (gimple_redirect_edge_and_branch): Do
1699 gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
1701 * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
1702 dest_prev if the edge is complex.
1704 * tree-cfg.c (is_ctrl_stmt): Use a switch.
1706 * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
1707 loop latch tests earlier.
1709 * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
1710 before GIMPLE_RETURN, not after its predecessor; insert
1713 * gimple-iterator.c (gimple_find_edge_insert_loc): Use
1714 gimple_seq_empty_p to test for no PHI nodes.
1715 * tree-cfg.c (split_critical_edges): Likewise.
1717 * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
1719 2009-09-10 Hariharan Sandanagobalane <hariharan@picochip.com>
1721 * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
1722 introduced by the VTA branch merge.
1724 2009-09-10 Uros Bizjak <ubizjak@gmail.com>
1726 * ira-conflicts.c: Use fputs or putc instead of fprintf
1730 * tree-switch-conversion.c: Ditto.
1732 2009-09-10 Hariharan Sandanagobalane <hariharan@picochip.com>
1734 * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
1735 introduced by the VTA branch merge.
1737 2009-09-10 Uros Bizjak <ubizjak@gmail.com>
1740 2009-09-09 Uros Bizjak <ubizjak@gmail.com>
1742 PR rtl-optimization/39779
1743 * expr.c (convert_modes): Return when mode == oldmode after
1744 CONST_INTs are processed.
1746 2009-09-10 Nick Clifton <nickc@redhat.com>
1748 * config/mep/mep.c (mep_encode_section_info): Copy weakness
1749 attribute and referring decl when creating renamed symbol.
1751 2009-09-10 Richard Guenther <rguenther@suse.de>
1754 * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
1756 (cgraph_finalize_compilation_unit): Compute reachability
1757 before emitting thunks. Properly process aliases before
1758 possibly removing unreachable nodes.
1760 2009-09-10 Richard Guenther <rguenther@suse.de>
1763 * tree.c (struct free_lang_data_d): Add worklist member.
1764 (find_decls_types_r): Push onto the worklist instead of recursing.
1765 Handle TREE_BINFOs properly.
1766 (find_decls_types): New function wrapped around find_decls_types_r
1767 to process the worklist.
1768 (find_decls_types_in_eh_region): Use it.
1769 (find_decls_types_in_node): Likewise.
1770 (find_decls_types_in_var): Likewise.
1771 (free_lang_data_in_cgraph): Likewise. Free the worklist.
1772 * tree.h (RECORD_OR_UNION_TYPE_P): New.
1773 (AGGREGATE_TYPE_P): Adjust.
1775 2009-09-09 Jason Merrill <jason@redhat.com>
1777 * configure.ac: Check glibc version even if we have an in-tree
1780 2009-09-09 Anthony Green <green@moxielogic.com>
1782 * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
1783 the constant 0 when appropriate.
1784 * config/moxie/constraints.md: Add constraint O.
1786 * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
1787 to pass up to 6 32-bit argument values in registers.
1788 (moxie_function_arg): Ditto.
1789 (moxie_arg_partial_bytes): Ditto.
1790 * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
1791 (REG_PARM_STACK_SPACE): Ditto.
1792 (FUNCTION_ARG_REGNO_P): Ditto.
1794 * config/moxie/moxie.c (moxie_expand_prologue): Use dec
1795 instruction to allocate stack space.
1797 2009-09-09 Segher Boessenkool <segher@kernel.crashing.org>
1799 * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
1800 unnecessarily stringent constraints. Fix address
1801 calculation in the splitters.
1803 2009-09-09 Uros Bizjak <ubizjak@gmail.com>
1805 PR rtl-optimization/39779
1806 * expr.c (convert_modes): Return when mode == oldmode after
1807 CONST_INTs are processed.
1809 2009-09-09 Kai Tietz <kai.tietz@onevision.com>
1812 * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
1813 (ix86_expand_prologue): Take frame.padding0 into logic of
1815 (ix86_expand_epilogue): Likewise.
1817 2009-09-09 Jakub Jelinek <jakub@redhat.com>
1819 * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
1821 (SHLIB_LINK, SHLIB_INSTALL): Use them.
1822 * config/t-slibgcc-libgcc: New file.
1823 * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
1825 2009-09-09 Martin Jambor <mjambor@suse.cz>
1827 PR tree-optimization/41089
1828 * tree-sra.c (find_var_candidates): Do not consider va_lists in
1831 2009-09-09 Richard Henderson <rth@redhat.com>
1833 * gimple.h (CASE_GIMPLE_OMP): New.
1834 (is_gimple_omp): Use it.
1835 * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
1836 (verify_gimple_debug): Likewise.
1838 2009-09-09 Richard Guenther <rguenther@suse.de>
1840 PR tree-optimization/41101
1841 * tree-ssa-pre.c (maximal_set): Remove.
1842 (compute_antic_aux): Treat the maximal set as implicitly all ones.
1843 Defer all blocks we didn't visit at least one successor.
1844 (add_to_exp_gen): Do not add to the maximal set.
1845 (make_values_for_phi): Likewise.
1846 (compute_avail): Likewise.
1847 (init_pre): Do not allocate the maximal set.
1848 (execute_pre): Do not dump it.
1850 2009-09-09 Martin Jambor <mjambor@suse.cz>
1852 * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
1853 an SSA_NAME rather than a is_gimple_variable.
1855 2009-09-09 Richard Guenther <rguenther@suse.de>
1858 * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
1859 code dealing with plain pointer bases.
1860 (maybe_fold_offset_to_reference): Likewise.
1861 (maybe_fold_stmt_addition): Adjust.
1863 2009-09-09 Richard Guenther <rguenther@suse.de>
1865 * tree.c (free_lang_data_in_type): Do not free the type variant
1867 (free_lang_data): Merge char_type_node with its properly signed
1869 (pass_ipa_free): Collect after freeing language specific data.
1871 2009-09-09 Michael Matz <matz@suse.de>
1874 * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
1875 SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
1876 * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
1879 2009-09-08 DJ Delorie <dj@redhat.com>
1881 * config/mep/mep.c (conversions[]): Add "ml" pattern.
1883 2009-09-04 Jason Merrill <jason@redhat.com>
1885 * tree.c (tree_find_value): Remove.
1886 * tree.h: Remove prototype.
1887 * varasm.c (assemble_external): Use value_member instead.
1889 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1891 * toplev.c (process_options): Choose default debugging type when
1892 gtoggle enables debug info and type is unset.
1894 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1898 * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
1901 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1903 * configure: Rebuilt with modified libtool.m4.
1905 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1910 * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
1912 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1914 * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
1915 (remove_statement): Likewise.
1916 (rewrite_use_nonlinear_expr): Adjust.
1917 (remove_unused_ivs): Collect SSA NAMEs to remove and call...
1918 * tree-ssa.c (release_defs_bitset): ... this. New.
1919 * tree-flow.h (release_defs_bitset): Declare.
1921 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
1924 * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
1925 in the middle block.
1927 2009-09-08 Kai Tietz <kai.tietz@onevision.com>
1929 * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
1930 via intptr_t to long type.
1931 (insert_operand_rank): Cast long type via intptr_t to
1933 * genattrtab.c (RTL_HASH): Use intptr_t to cast from
1935 * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
1936 from pointer to unsigned via uintptr_t.
1938 * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
1939 uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
1941 * configure: Regenerated.
1942 * config.in: Regenerated
1943 * system.h (stdint.h): Add include.
1944 (inttypes.h): Likewise.
1945 * Makefile.in (aclocal): Add config/stdint.m4.
1946 * aclocal.m4: Regenerated.
1948 2009-09-08 Bernd Schmidt <bernd.schmidt@analog.com>
1950 * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
1952 (note_np_check_stores): New function.
1953 (harmless_null_pointer_p): New function.
1954 (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH. Callers
1955 changed. Take into account whether we're in the shadow of a condjump
1956 that tested NP_REG for NULL.
1957 Lose all code that tested for SEQUENCEs.
1958 (workaround_speculation): Avoid inserting NOPs for loads that are
1959 either always executed or a NULL pointer.
1961 2009-09-08 Jan Hubicka <jh@suse.cz>
1963 * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
1964 * params.def (early-inlining-insns): Likewise.
1966 2009-09-08 Jakub Jelinek <jakub@redhat.com>
1968 PR rtl-optimization/41239
1969 * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
1970 * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
1972 * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
1973 across calls, as the calls might not always return normally.
1974 (call_may_noreturn_p): New function.
1975 (deps_analyze_insn): Update last_function_call_may_noreturn list.
1976 (init_deps): Initialize it.
1977 (remove_from_deps): Also remove calls from
1978 last_function_call_may_noreturn list.
1980 2009-09-07 Richard Henderson <rth@redhat.com>
1982 * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
1983 more VR->OPERANDS than LHS operands. Free LHS before returning.
1985 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
1987 * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
1988 (attr "addrtype"): New member "spreg".
1989 Use it if mem_spfp_address_operand is true for the address.
1990 (attr "type"): New entry "stall".
1991 (cpu_unit "load"): New.
1992 (insn_reservations "load32", "loadp", "loadi"): Add reservation of
1994 (insn_reservation "loadsp"): New.
1995 (insn_reservation "load_stall1"): New.
1996 (insn_reservation "load_stall3"): New.
1998 * config/bfin/predicates.md (const1_operand, const3_operand): New.
1999 (mem_p_address_operand): Exclude stack and frame pointer based
2001 (mem_spfp_address_operand): New; match them here.
2002 * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
2003 (bfin_reorg): Call it if scheduling insns.
2004 (bfin_gen_bundles): Remove dummy insns created by
2005 add_sched_insns_for_speculation.
2007 From Jie Zhang <jie.zhang@analog.com>:
2008 * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
2009 bfin_si_revision, bfin_workarounds): Move these ...
2010 * config/bfin/bfin.h: ... here.
2012 From Mike Frysinger <michael.frysinger@analog.com>
2013 * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
2014 BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
2015 * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
2016 bf547m, bf548m, and bf549m.
2017 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
2018 for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
2019 __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
2020 BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
2021 * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2022 bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
2023 * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2024 * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2025 * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
2026 bf542m, bf544m, bf547m, bf548m, and bf549m.
2028 From Jie Zhang <jie.zhang@analog.com>:
2029 * config/bfin/predicates.md (p_register_operand): New predicate.
2030 (dp_register_operand): New predicate.
2031 * config/bfin/bfin-protos.h (WA_05000074): Define.
2032 (ENABLE_WA_05000074): Define.
2033 * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
2034 (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
2035 * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
2036 (define_attr addrtype): Allow load/store register to be P register.
2037 (define_attr storereg): New.
2038 (define_cpu_unit anomaly_05000074): New.
2039 (define_insn_reservation dsp32shiftimm): New.
2040 (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
2041 (define_insn_reservation loadp): Cannot use slot2.
2042 (define_insn_reservation loadsp): Cannot use slot2.
2043 (define_insn_reservation storep): Cannot use slot2. Does not
2044 apply when working around 05000074.
2045 (define_insn_reservation storep_anomaly_05000074): New.
2046 (define_insn_reservation storei): Does not apply when working
2048 (define_insn_reservation storei_anomaly_05000074): New.
2049 (define_attr length): Add dsp32shiftimm case.
2050 (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
2051 ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
2052 movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
2053 ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
2054 Set type as dsp32shiftimm for dsp32shiftimm alternatives.
2056 2009-09-07 Martin Jambor <mjambor@suse.cz>
2059 * tree-sra.c (create_artificial_child_access): Return NULL if
2060 build_ref_for_offset fails.
2061 (propagate_subacesses_accross_link): Allow build_ref_for_offset
2062 and create_artificial_child_access to fail.
2064 2009-09-06 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
2067 * unwind-dw2.c (uw_init_context_1): Mark noinline.
2068 * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
2069 * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
2071 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
2073 * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
2074 block, ensure it has an exit edge. Emit a barrier after a jump.
2076 2009-09-07 Nick Clifton <nickc@redhat.com>
2078 * gcc.c (this_is_linker_script): New variable. Like
2079 this_is_library_file but for the %T constructor.
2080 (end_going_arg): If this_is_linker_script is set then locate the
2081 script and insert a --script switch before it
2082 (do_spec_2): Initialise this_is_linker_script.
2083 (do_spec_1): Likewise. Handle %T construct.
2084 (eval_spec_function): Preserve this_is_linker_script.
2085 * doc/invoke.texi: Document %T construct in spec files.
2086 * config/m32c/m32c.h (LIB_SPEC): Use it.
2088 2009-09-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2090 * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
2091 * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
2092 when volatile flag is set.
2093 * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
2095 2009-09-06 Eric Botcazou <ebotcazou@adacore.com>
2098 * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
2099 (combine_stack_adjustments_for_block): Allow insns between stack
2100 adjustments and stores with corresponding pre-(dec|inc)rement or
2101 pre-modify operation.
2103 2009-09-06 Jakub Jelinek <jakub@redhat.com>
2106 * combine-stack-adj.c (struct csa_memlist): Rename to...
2107 (struct csa_reflist): ... this. Rename mem field to ref.
2108 (free_csa_memlist): Rename to...
2109 (free_csa_reflist): ... this.
2110 (record_one_stack_memref): Rename to...
2111 (record_one_stack_ref): ... this. Handle also REG_P.
2112 (try_apply_stack_adjustment): Handle also REG_P.
2113 (struct record_stack_memrefs_data): Rename to...
2114 (struct record_stack_refs_data): ... this. Rename memlist field to
2116 (record_stack_memrefs): Rename to...
2117 (record_stack_refs): ... this. For DEBUG_INSNs keep traversing
2118 subexpressions instead of failing when a MEM contains SP references.
2119 For SP itself in DEBUG_INSNs queue it also onto reflist chain.
2120 (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
2122 2009-09-06 Richard Guenther <rguenther@suse.de>
2125 * tree.c (build_array_type): Do not record types marked
2126 with structural equality in the canonical type hashtable.
2128 2009-09-06 Richard Guenther <rguenther@suse.de>
2131 * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
2133 2009-09-05 Richard Guenther <rguenther@suse.de>
2136 * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
2138 2009-09-05 Richard Guenther <rguenther@suse.de>
2141 * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
2143 2009-09-05 Richard Guenther <rguenther@suse.de>
2146 * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
2147 before comparing function argument types.
2149 2009-09-05 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2152 * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
2155 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
2158 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
2160 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
2161 locators before emit_insn is called.
2163 2009-09-04 Vladimir Makarov <vmakarov@redhat.com>
2166 * ira.c (update_equiv_reg): Revert my previous patch for the PR.
2167 * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
2168 (reginfo_init): Don't call allocate_reg_info.
2170 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
2173 * config/alpha/alpha.c (alpha_does_function_need_gp): Use
2174 NONDEBUG_INSN_P instead of INSN_P.
2176 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
2179 * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
2181 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
2184 * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
2185 pattern of the split.
2187 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
2189 * toplev.c (process_options): Move setter of flag_var_tracking
2190 before other tests that depend on it. Move down setter of
2191 flag_rename_registers. Don't enable var-tracking-assignments
2192 by default if selective scheduling is enabled. Warn if both
2195 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
2197 * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
2198 comment. Use switch statement to catch overlaps between rtx
2199 and tree codes. Accept FUNCTION_DECLs in addition to those in...
2200 (IS_DECL_CODE): ... here. Remove.
2201 (check_value_is_not_decl): Remove.
2202 (dv_from_decl, dv_from_value): Check after conversion.
2204 2009-09-04 Richard Guenther <rguenther@suse.de>
2207 * (cgraph_finalize_compilation_unit): Move finalizing aliases
2208 after emitting tunks. Move emitting thunks and ctors from ...
2209 (cgraph_optimize): ... here. Remove redundant
2210 cgraph_analyze_functions.
2211 * varasm.c (find_decl_and_mark_needed): Remove no longer
2213 (finish_aliases_1): Adjust check for thunk aliases.
2215 2009-09-04 Daniel Gutson <dgutson@codesourcery.com>
2217 * config/arm/arm.md (ctzsi2): Added braces
2218 to avoid warning that broke booststrap.
2220 2009-09-04 Martin Jambor <mjambor@suse.cz>
2222 PR tree-optimization/41112
2223 * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
2224 handle variable-bounded arrays.
2225 (expr_with_var_bounded_array_refs_p): New function.
2226 (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
2228 2009-09-04 Wolfgang Gellerich <gellerich@de.ibm.com>
2230 * config/s390/2097.md: Removed two incorrect bypasses.
2231 (z10_fsimpdf): Fixed latency.
2232 (z10_fhex): New insn_reservation.
2233 (z10_floaddf): Fixed latency.
2234 (z10_floadsf): Fixed latency.
2235 (z10_ftrunctf): Fixed latency.
2236 (z10_ftruncdf): Fixed latency.
2237 * config/s390/s390.c (z10_cost): Fixed values.
2238 (s390_adjust_priority): Added z10 path.
2239 * config/s390/s390.md (type): Added fhex.
2240 (*mov<mode>_64dfp): Updated type attribute.
2241 (*mov<mode>_64): Updated type attribute.
2242 (*mov<mode>_31): Updated type attribute.
2243 (*mov<mode>"): Likewise.
2244 * config/s390/2084.md (x_fsimpdf): Updated condition.
2246 2009-09-04 Andreas Krebbel <krebbel1@de.ibm.com>
2248 * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
2249 RTXs in the predicate for operand 1.
2251 2009-09-03 Daniel Gutson <dgutson@codesourcery.com>
2253 * config/arm/arm.md (UNSPEC_RBIT): New constant.
2254 (rbitsi2): New insn.
2255 (ctzsi2): New expand.
2256 * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
2258 2009-09-03 Martin Jambor <mjambor@suse.cz>
2260 * tree-sra.c (duplicate_expr_for_different_base): Removed.
2261 (create_artificial_child_access): Use build_ref_for_offset instead
2262 of duplicate_expr_for_different_base.
2263 (propagate_subacesses_accross_link): Likewise.
2265 2009-09-03 Richard Sandiford <rdsandiford@googlemail.com>
2267 * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
2269 (mips16e_collect_argument_saves): Skip debug instructions.
2270 (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
2271 (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
2272 (r10k_insert_cache_barriers): Likewise.
2273 (mips_reorg_process_insns): Likewise.
2275 2009-09-03 Vladimir Makarov <vmakarov@redhat.com>
2278 * ira.c (update_equiv_reg): Remove check on class likely spill.
2280 2009-09-03 Jakub Jelinek <jakub@redhat.com>
2283 * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
2284 SIGN_EXTEND or ZERO_EXTEND. Don't assume there is a REG inside of
2288 * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
2289 the stack slot if it is passed by invisible reference.
2290 * var-tracking.c (vt_add_function_parameters): Handle arguments passed
2291 by invisible reference.
2293 2009-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
2295 * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2296 * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
2297 * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
2299 * config/bfin/sync.md: New file.
2300 * config/bfin/bfin.md: Include it.
2301 (UNSPEC_ATOMIC): New.
2302 (UNSPEC_ONES): Provide a unique number.
2304 From Jie Zhang <jie.zhang@analog.com>:
2305 * config/bfin/bfin.c (ret_regs): New.
2306 (must_save_fp_p): Don't return true because of frame_pointer_needed.
2307 (must_save_rets_p): New.
2308 (n_regs_saved_by_prologue): Use must_save_rets_p instead of
2309 current_function_is_leaf.
2310 (do_link): Likewise.
2311 (do_unlink): Likewise.
2312 (expand_interrupt_handler_prologue): Use ret_regs array.
2313 (expand_interrupt_handler_epilogue): Use ret_regs array and
2314 pass return register to gen_return_internal.
2315 (bfin_expand_epilogue): Pass return register to
2316 gen_return_internal.
2317 (bfin_expand_call): Explicitly clobber RETS.
2318 * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
2319 * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
2320 call_insn_fdpic, call_value_insn_fdpic, call_symbol,
2321 call_value_symbol, call_insn, call_value_insn): Explicitly clobber
2323 (return_internal): Take a reg rtx rather than the register number.
2325 2009-09-03 H.J. Lu <hongjiu.lu@intel.com>
2327 * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
2328 when comparing against estimated_loop_iterations_int return.
2330 2009-09-03 Richard Guenther <rguenther@suse.de>
2332 * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
2333 eh_personality_libfunc.
2335 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
2337 * tree-parloops.c (separate_decls_in_region): Add space.
2339 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
2341 * tree-parloops.c (separate_decls_in_region): Change the condition
2342 checking if there are reductions in the loop.
2344 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
2346 PR tree-optimization/38275
2347 * tree-parloops.c (parallelize_loops): Replace profitability condition
2348 for expected number of iterations.
2350 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
2352 * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
2353 (bootstrap-debug): Explain conditions in which it becomes default.
2354 (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
2357 2009-09-03 Namhyung Kim <namhyung@gmail.com>
2359 * doc/invoke.texi (Optimize Options): Move
2360 -finline-small-functions to the -O2 list.
2362 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
2364 * toplev.c (process_options): Enable var-tracking-assignments
2365 by default if var-tracking is enabled.
2367 2009-09-02 David Daney <ddaney@caviumnetworks.com>
2369 * cfgbuild.c (find_bb_boundaries): Split blocks containing a
2371 * emit-rtl.c (prev_nonnote_insn_bb): New function.
2372 * rtl.h (prev_nonnote_insn_bb): Declare it.
2374 2009-09-03 Diego Novillo <dnovillo@google.com>
2376 * cgraph.c (cgraph_node_for_decl): New.
2377 * cgraph.h (cgraph_node_for_decl): Declare.
2378 * tree.c (host_integerp): Return 0 if T is NULL.
2380 2009-09-03 Diego Novillo <dnovillo@google.com>
2382 * tree.h (struct alias_pair): Move from varasm.c.
2383 (alias_pairs): Likewise.
2384 (TYPE_MAXVAL): Define.
2385 (TYPE_MINVAL): Define.
2386 (iterative_hash_host_wide_int): Declare.
2387 (remove_unreachable_alias_pairs): Declare.
2388 * tree-pass.h (pass_ipa_free_lang_data): Declare.
2389 * diagnostic.c (default_diagnostic_starter): Make extern.
2390 (default_diagnostic_finalizer): Make extern.
2391 * diagnostic.h (default_diagnostic_starter): Declare.
2392 (default_diagnostic_finalizer): Declare.
2393 (default_tree_printer): Declare.
2394 * toplev.c (default_tree_printer): Make extern.
2396 2009-09-03 Richard Guenther <rguenther@suse.de>
2397 Diego Novillo <dnovillo@google.com>
2399 * cgraph.c (cgraph_add_new_function): Remove gimplification.
2400 * cgraphunit.c (cgraph_expand_function): Do not emit
2401 associated thunks from here.
2402 (cgraph_emit_thunks): New.
2403 (cgraph_optimize): Call it.
2404 Return if any IPA pass finds an error.
2405 * varasm.c (finish_aliases_1): Ignore errorneous aliases used
2408 2009-09-03 Simon Baldwin <simonb@google.com>
2409 Rafael Espindola <espindola@google.com>
2410 Richard Guenther <rguenther@suse.de>
2411 Doug Kwan <dougkwan@google.com>
2412 Diego Novillo <dnovillo@google.com>
2414 * tree.c: Include tree-pass.h, langhooks-def.h,
2415 diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
2416 (free_lang_data_in_type): New.
2417 (need_assembler_name_p): New.
2418 (free_lang_data_in_block): New.
2419 (free_lang_data_in_decl): New.
2420 (struct free_lang_data_d): New.
2421 (add_tree_to_fld_list): New.
2422 (find_decls_types_r): New.
2423 (get_eh_types_for_runtime): New.
2424 (find_decls_types_in_eh_region): New.
2425 (find_decls_types_in_node): New.
2426 (find_decls_types_in_var): New.
2427 (free_lang_data_in_cgraph): New.
2428 (free_lang_data): New.
2429 (gate_free_lang_data): New.
2430 (pass_ipa_free_lang_data): New.
2432 2009-09-03 Diego Novillo <dnovillo@google.com>
2434 * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
2435 * langhooks.h (struct lang_hooks): Add field free_lang_data.
2436 (lang_hooks): Remove const qualifier.
2437 * ipa.c (cgraph_remove_unreachable_nodes): Call
2438 remove_unreachable_alias_pairs.
2439 * except.c (add_type_for_runtime): Check if TYPE has
2440 already been converted.
2441 (lookup_type_for_runtime): Likewise.
2442 (check_handled): Handle converted types.
2443 * varasm.c (remove_unreachable_alias_pairs): New.
2444 * gimple.c: Include demangle.h.
2445 (gimple_decl_printable_name): New.
2446 (gimple_fold_obj_type_ref): New.
2447 * gimple.h (gimple_decl_printable_name): Declare.
2448 (gimple_fold_obj_type_ref): Declare.
2449 * passes.c (init_optimization_passes): Add pass
2450 pass_ipa_free_lang_data.
2451 * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
2452 (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
2454 2009-09-03 Diego Novillo <dnovillo@google.com>
2456 * c-lang.c (lang_hooks): Remove const qualifier.
2458 2009-09-02 Loren James Rittle <ljrittle@acm.org>
2460 * doc/install.texi (*-*-freebsd*): Update target information.
2462 2009-09-02 Anatoly Sokolov <aesok@post.ru>
2464 * hard-reg-set.h (call_fixed_regs): Remove.
2465 * reginfo.c (call_fixed_regs): Remove.
2466 (init_reg_sets_1): Remove initialization of call_fixed_regs.
2467 (globalize_reg): Don't use call_fixed_regs.
2468 * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
2471 2009-09-01 Michael Matz <matz@suse.de>
2473 * expr.h (emit_storent_insn, expand_expr_real_1,
2474 expand_expr_real_2): Declare.
2475 * expr.c (emit_storent_insn, expand_expr_real_1,
2476 expand_expr_real_2): Export.
2477 (store_expr): Setting and evaluating dont_return_target is useless.
2478 (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
2479 LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
2480 * except.c (expand_resx_expr): Rename to ...
2481 (expand_resx_stmt): ... this. Rewrite to take gimple statement.
2482 * except.h (expand_resx_stmt): Declare.
2483 * stmt.c: Add include gimple.h
2484 (expand_asm_expr): Rename to ...
2485 (expand_asm_stmt): ... this. Rewrite to take gimple statement.
2486 (expand_case): Rewrite to take gimple statement.
2487 * tree.h (expand_asm_stmt): Declare.
2488 (expand_case): Change prototype.
2489 * Makefile.in (stmt.o): Depend on gimple.h.
2490 * builtins.c (expand_builtin_synchronize): Build gimple asm
2491 statement, not an ASM_EXPR.
2492 * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
2493 gimple_to_tree, release_stmt_tree): Remove.
2494 (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
2495 ggc_free, but hold comparison code and operands separately.
2496 Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
2497 (expand_call_stmt, expand_gimple_stmt_1,
2498 expand_gimple_stmt): New helpers.
2499 (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
2500 release_stmt_tree. Call expand_gimple_stmt instead.
2501 (expand_gimple_basic_block): Ditto.
2503 * calls.c (emit_call_1): Don't look at EH regions here, make
2504 fntree parameter useless.
2505 (expand_call): New local rettype for TREE_TYPE(exp), use it
2506 throughout. Remove local p, use addr instead.
2507 Don't look at EH regions here.
2509 2009-09-02 Vladimir Makarov <vmakarov@redhat.com>
2511 * doc/invoke.texi (-fsched-pressure): Document it.
2512 (-fsched-reg-pressure-heuristic): Remove it.
2514 * reload.c (ira.h): Include.
2515 (find_reloads): Add choosing reload on number of small spilled
2518 * haifa-sched.c (ira.h): Include.
2519 (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
2520 saved_reg_pressure, curr_reg_live, saved_reg_live,
2521 region_ref_regs): New variables.
2522 (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
2523 initiate_reg_pressure_info, setup_ref_regs,
2524 initiate_bb_reg_pressure_info, save_reg_pressure,
2525 restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
2527 (setup_insn_reg_pressure_info): New function.
2528 (rank_for_schedule): Add pressure checking and insn issue time.
2529 Remove comparison of insn reg weights.
2530 (ready_sort): Set insn reg pressure info.
2531 (update_register_pressure, setup_insn_max_reg_pressure,
2532 update_reg_and_insn_max_reg_pressure,
2533 sched_setup_bb_reg_pressure_info): New functions.
2534 (schedule_insn): Add code for printing and updating reg pressure info.
2535 (find_set_reg_weight, find_insn_reg_weight): Remove.
2536 (ok_for_early_queue_removal): Do nothing if pressure_only_p.
2537 (debug_ready_list): Print reg pressure info.
2538 (schedule_block): Ditto. Check insn issue time.
2539 (sched_init): Set up sched_pressure_p. Allocate and set up some
2540 reg pressure related info.
2541 (sched_finish): Free some reg pressure related info.
2542 (fix_tick_ready): Make insn always ready if pressure_p.
2543 (init_h_i_d): Don't call find_insn_reg_weight.
2544 (haifa_finish_h_i_d): Free insn reg pressure info.
2546 * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2547 ira_memory_move_cost, ira_class_hard_regs,
2548 ira_class_hard_regs_num, ira_no_alloc_regs,
2549 ira_available_class_regs, ira_reg_class_cover_size,
2550 ira_reg_class_cover, ira_class_translate): Move to ira.h.
2552 * ira-lives.c (single_reg_class): Check mode to find how many
2553 registers are necessary for operand.
2554 (ira_implicitly_set_insn_hard_regs): New.
2556 * common.opt (fsched-pressure): New options.
2557 (fsched-reg-pressure-heuristic): Remove.
2559 * ira.c (setup_eliminable_regset): Rename to
2560 ira_setup_eliminable_regset. Make it external.
2561 (expand_reg_info): Pass cover class to setup_reg_classes.
2562 (ira): Call resize_reg_info instead of allocate_reg_info.
2564 * sched-deps.c: Include ira.h.
2565 (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
2566 (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
2567 reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
2568 mark_insn_hard_regno_birth, mark_insn_reg_birth,
2569 mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
2570 mark_insn_reg_store, mark_insn_reg_clobber,
2571 setup_insn_reg_pressure_info): New.
2572 (sched_analyze_1): Update implicit_reg_pending_uses.
2573 (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
2574 Use them to create dependencies. Set insn reg uses and pressure
2575 info. Process reg_pending_uses in one place.
2576 (free_deps): Free implicit sets.
2577 (remove_from_deps): Remove implicit sets if necessary. Check
2578 implicit sets when clearing reg_last_in_use.
2579 (init_deps_global): Clear implicit_reg_pending_clobbers and
2580 implicit_reg_pending_uses.
2582 * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
2583 ira_memory_move_cost, ira_class_hard_regs,
2584 ira_class_hard_regs_num, ira_no_alloc_regs,
2585 ira_available_class_regs, ira_reg_class_cover_size,
2586 ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
2587 (ira_setup_eliminable_regset, ira_set_pseudo_classes,
2588 ira_implicitly_set_insn_hard_regs): New prototypes.
2590 * ira-costs.c (pseudo_classes_defined_p, allocno_p,
2591 cost_elements_num): New variables.
2592 (allocno_costs, total_costs): Rename to costs and
2593 total_allocno_costs.
2594 (COSTS_OF_ALLOCNO): Rename to COSTS.
2595 (allocno_pref): Rename to pref.
2596 (allocno_pref_buffer): Rename to pref_buffer.
2597 (common_classes): Rename to regno_cover_class.
2599 (record_reg_classes): Set allocno attributes only if allocno_p.
2600 (record_address_regs): Ditto. Use COST_INDEX instead of ALLOCNO_NUM.
2601 (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
2602 and COSTS_OF_ALLOCNO.
2603 (print_costs): Rename to print_allocno_costs.
2604 (print_pseudo_costs): New.
2605 (process_bb_node_for_costs): Split into 2 functions with new
2606 function process_bb_for_costs. Pass BB to process_bb_for_costs.
2607 (find_allocno_class_costs): Rename to find_costs_and_classes. Add
2608 new parameter dump_file. Use cost_elements_num instead of
2609 ira_allocnos_num. Make one iteration if preferred classes were
2610 already calculated for scheduler. Make 2 versions of code
2611 depending on allocno_p.
2612 (setup_allocno_cover_class_and_costs): Check allocno_p. Use
2613 regno_cover_class and COSTS instead of common_classes and
2615 (init_costs, finish_costs): New.
2616 (ira_costs): Set up allocno_p and cost_elements_num. Call
2617 init_costs and finish_costs.
2618 (ira_set_pseudo_classes): New.
2620 * rtl.h (allocate_reg_info): Remove.
2621 (resize_reg_info): Change return type.
2622 (reg_cover_class): New.
2623 (setup_reg_classes): Add new parameter.
2625 * sched-int.h (struct deps_reg): New member implicit_sets.
2626 (sched_pressure_p, sched_regno_cover_class): New external definitions.
2627 (INCREASE_BITS): New macro.
2628 (struct reg_pressure_data, struct reg_use_data): New.
2629 (struct _haifa_insn_data): Remove reg_weight. Add members
2630 reg_pressure, reg_use_list, reg_set_list, and
2631 reg_pressure_excess_cost_change.
2632 (struct deps): New member implicit_sets.
2633 (pressure_p): New variable.
2634 (COVER_CLASS_BITS, INCREASE_BITS): New macros.
2635 (struct reg_pressure_data, struct reg_use_data): New.
2636 (INSN_REG_WEIGHT): Remove.
2637 (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
2638 INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
2639 (sched_init_region_reg_pressure_info,
2640 sched_setup_bb_reg_pressure_info): New prototypes.
2642 * reginfo.c (struct reg_pref): New member coverclass.
2643 (reg_cover_class): New function.
2644 (reginfo_init, pass_reginfo_init): Move after free_reg_info.
2645 (reg_info_size): New variable.
2646 (allocate_reg_info): Make static. Setup reg_info_size.
2647 (resize_reg_info): Use reg_info_size. Return flag of resizing.
2648 (setup_reg_classes): Add a new parameter. Setup cover class too.
2650 * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
2653 * sched-rgn.c (deps_join): Set up implicit_sets.
2654 (schedule_region): Set up region and basic blocks pressure
2657 * passes.c (init_optimization_passes): Move
2658 pass_subregs_of_mode_init before pass_sched.
2660 2009-09-02 Martin Jambor <mjambor@suse.cz>
2662 * tree-sra.c (struct access): New field grp_hint.
2663 (dump_access): Dump grp_hint.
2664 (sort_and_splice_var_accesses): Set grp_hint if a group is read
2666 (analyze_access_subtree): Only scalarize accesses with grp_hint set or
2667 those which have been specifically read and somehow written to.
2668 (propagate_subacesses_accross_link): Set grp_hint of right child and
2669 also possibly of the left child.
2671 2009-09-02 Jakub Jelinek <jakub@redhat.com>
2673 * tree-object-size.c (addr_object_size): Always use object_size_type
2674 0 or 2 when determining the pointer pointed object size.
2676 2009-09-02 Richard Guenther <rguenther@suse.de>
2679 2009-08-31 Richard Guenther <rguenther@suse.de>
2681 * builtins.c (fold_builtin_memory_op): Use the alias oracle
2682 to query if the memory regions for memmove overlap.
2683 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
2684 asserts on pointers, instead deal with odd trees.
2685 (ptr_derefs_may_alias_p): Likewise.
2686 (refs_may_alias_p_1): Constructor bases also never alias.
2688 2009-08-01 Christian Bruel <christian.bruel@st.com>
2691 2009-07-31 Christian Bruel <christian.bruel@st.com>
2692 * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2694 2009-09-01 Alexandre Oliva <aoliva@redhat.com>
2696 * doc/invoke.texi (-fvar-tracking-assignments): New.
2697 (-fvar-tracking-assignments-toggle): New.
2698 (-fdump-final-insns=file): Mark filename as optional.
2699 (--param min-nondebug-insn-uid): New.
2700 (-gdwarf-@{version}): Mention version 4.
2701 * opts.c (common_handle_option): Accept it.
2702 * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
2703 * regrename.c (regrename_optimize): Drop last. Don't count debug
2704 insns as uses. Don't reject change because of debug insn.
2705 (do_replace): Reject DEBUG_INSN as chain starter. Take base_regno
2706 from the chain starter, and check for inexact matches in DEBUG_INSNS.
2707 (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
2708 (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
2709 * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
2710 * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
2711 * doc/gimple.texi (is_gimple_debug): New.
2712 (gimple_debug_bind_p): New.
2713 (is_gimple_call, gimple_assign_cast_p): End sentence with period.
2714 * doc/install.texi (bootstrap-debug): More details.
2715 (bootstrap-debug-big, bootstrap-debug-lean): Document.
2716 (bootstrap-debug-lib): More details.
2717 (bootstrap-debug-ckovw): Update.
2718 (bootstrap-time): New.
2719 * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
2720 (insert_phi_nodes_for): Insert debug stmts.
2721 (rewrite_stmt): Take iterator. Insert debug stmts.
2722 (rewrite_enter_block): Adjust.
2723 (maybe_replace_use_in_debug_stmt): New.
2724 (rewrite_update_stmt): Use it.
2725 (mark_use_interesting): Return early for debug stmts.
2726 * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
2727 stmts before replacing stmt.
2728 (move_computations_stmt): Likewise.
2729 * ira-conflicts.c (add_copies): Skip debug insns.
2730 * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
2731 (regstat_bb_compute_ri): Skip debug insns.
2732 * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
2733 * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
2734 check_loop_closed_ssa_stmt): Skip debug stmts.
2735 * tree-tailcall.c (find_tail_calls): Likewise.
2736 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
2737 * tree.h (MAY_HAVE_DEBUG_STMTS): New.
2738 (build_var_debug_value_stat): Declare.
2739 (build_var_debug_value): Define.
2740 (target_for_debug_bind): Declare.
2741 * reload.c (find_equiv_reg): Skip debug insns.
2742 * rtlanal.c (reg_used_between_p): Skip debug insns.
2743 (side_effects_p): Likewise.
2744 (canonicalize_condition): Likewise.
2745 * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
2746 insns never depend on debug insns.
2747 (create_ddg_dep_no_link): Likewise.
2748 (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
2749 Don't add inter-loop dependencies for debug insns.
2750 (build_intra_loop_deps): Likewise.
2751 (create_ddg): Count debug insns.
2752 * ddg.h (struct ddg::num_debug): New.
2753 (num_backargs): Pair up with previous int field.
2754 * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
2755 -fcompare-debug-second.
2756 * final.c (get_attr_length_1): Skip debug insns.
2757 (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
2758 * gcc.c (invoke_as): Call compare-debug-dump-opt.
2759 (driver_self_specs): Map -fdump-final-insns to
2760 -fdump-final-insns=..
2761 (get_local_tick): New.
2762 (compare_debug_dump_opt_spec_function): Test for . argument and
2763 compute output name. Compute temp output spec without flag name.
2764 Compute -frandom-seed.
2765 (OPT): Undef after use.
2766 * cfgloopanal.c (num_loop_insns): Skip debug insns.
2767 (average_num_loop_insns): Likewise.
2768 * params.h (MIN_NONDEBUG_INSN_UID): New.
2769 * gimple.def (GIMPLE_DEBUG): New.
2770 * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
2771 * auto-inc-dec.c (merge_in_block): Skip debug insns.
2772 (merge_in_block): Fix whitespace.
2773 * toplev.c (flag_var_tracking): Update comment.
2774 (flag_var_tracking_assignments): New.
2775 (flag_var_tracking_assignments_toggle): New.
2776 (process_options): Don't open final insns dump file if we're not
2777 going to write to it. Compute defaults for var_tracking.
2778 * df-scan.c (df_insn_rescan_debug_internal): New.
2779 (df_uses_record): Handle debug insns.
2780 * haifa-sched.c (ready): Initialize n_debug.
2781 (contributes_to_priority): Skip debug insns.
2782 (dep_list_size): New.
2784 (rank_for_schedule): Likewise. Schedule debug insns as soon as
2785 they're ready. Disregard previous debug insns to make decisions.
2786 (queue_insn): Never queue debug insns.
2787 (ready_add, ready_remove_first, ready_remove): Count debug insns.
2788 (schedule_insn): Don't reject debug insns because of issue rate.
2789 (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
2790 (queue_to_ready): Skip and discount debug insns.
2791 (choose_ready): Let debug insns through.
2792 (schedule_block): Check boundary debug insns. Discount debug
2793 insns, schedule them early. Adjust whitespace.
2794 (set_priorities): Check for boundary debug insns.
2795 (add_jump_dependencies): Use dep_list_size.
2796 (prev_non_location_insn): New.
2797 (check_cfg): Use it.
2798 * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
2800 (remove_unused_ivs): Reset debug stmts.
2801 * modulo-sched.c (const_iteration_count): Skip debug insns.
2802 (res_MII): Discount debug insns.
2803 (loop_single_full_bb_p): Skip debug insns.
2804 (sms_schedule): Likewise.
2805 (sms_schedule_by_order): Likewise.
2806 (ps_has_conflicts): Likewise.
2807 * caller-save.c (refmarker_fn): New.
2808 (save_call_clobbered_regs): Replace regs with saved mem in
2810 (mark_referenced_regs): Take pointer, mark and arg. Adjust.
2811 Call refmarker_fn mark for hardregnos.
2812 (mark_reg_as_referenced): New.
2813 (replace_reg_with_saved_mem): New.
2814 * ipa-pure-const.c (check_stmt): Skip debug stmts.
2815 * cse.c (cse_insn): Canonicalize debug insns. Skip them when
2817 (cse_extended_basic_block): Skip debug insns.
2818 (count_reg_usage): Likewise.
2819 (is_dead_reg): New, split out of...
2820 (set_live_p): ... here.
2821 (insn_live_p): Use it for debug insns.
2822 * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
2823 (execute_optimize_stdarg): Likewise.
2824 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2825 * tree-ssa-propagate.c (substitute_and_fold): Don't regard
2826 changes in debug stmts as changes.
2827 * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
2828 (moveup_expr): Don't move across debug insns. Don't move
2829 debug insn if it would create a bookkeeping block.
2830 (moveup_expr_cached): Don't use cache for debug insns that
2831 are heads of blocks.
2832 (compute_av_set_inside_bb): Skip debug insns.
2833 (sel_rank_for_schedule): Schedule debug insns first. Remove
2835 (block_valid_for_bookkeeping_p); Support lax searches.
2836 (create_block_for_bookkeeping): Adjust block numbers when
2837 encountering debug-only blocks.
2838 (find_place_for_bookkeeping): Deal with debug-only blocks.
2839 (generate_bookkeeping_insn): Accept no place to insert.
2840 (remove_temp_moveop_nops): New argument full_tidying.
2841 (prepare_place_to_insert): Deal with debug insns.
2842 (advance_state_on_fence): Debug insns don't start cycles.
2843 (update_boundaries): Take fence as argument. Deal with
2845 (schedule_expr_on_boundary): No full_tidying on debug insns.
2846 (fill_insns): Deal with debug insns.
2847 (track_scheduled_insns_and_blocks): Don't count debug insns.
2848 (need_nop_to_preserve_insn_bb): New, split out of...
2849 (remove_insn_from_stream): ... this.
2850 (fur_orig_expr_not_found): Skip debug insns.
2851 * rtl.def (VALUE): Move up.
2853 * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
2854 (nearest_common_dominator_of_uses): Take debug_stmts argument.
2855 Set it if debug stmts are found.
2856 (statement_sink_location): Skip debug stmts. Propagate
2857 moving defs into debug stmts.
2858 * ifcvt.c (first_active_insn): Skip debug insns.
2859 (last_active_insns): Likewise.
2860 (cond_exec_process_insns): Likewise.
2861 (noce_process_if_block): Likewise.
2862 (check_cond_move_block): Likewise.
2863 (cond_move_convert_if_block): Likewise.
2864 (block_jumps_and_fallthru_p): Likewise.
2865 (dead_or_predicable): Likewise.
2866 * dwarf2out.c (debug_str_hash_forced): New.
2867 (find_AT_string): Add comment.
2868 (gen_label_for_indirect_string): New.
2869 (get_debug_string_label): New.
2870 (AT_string_form): Use it.
2871 (mem_loc_descriptor): Handle non-TLS symbols. Handle MINUS , DIV,
2872 MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING. Accept but
2873 discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
2874 several operations that cannot be represented with DWARF opcodes.
2875 (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND. Require
2876 dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
2877 (dwarf2out_var_location): Take during-call mark into account.
2878 (output_indirect_string): Update comment. Output if there are
2879 label and references.
2880 (prune_indirect_string): New.
2881 (prune_unused_types): Call it if debug_str_hash_forced.
2882 More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
2883 (dw_long_long_const): Remove.
2884 (struct dw_val_struct): Change val_long_long type to rtx.
2885 (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
2886 val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
2887 (output_die): Likewise. Use HOST_BITS_PER_WIDE_INT size of each
2888 component instead of HOST_BITS_PER_LONG.
2889 (output_loc_operands): Likewise. For const8* assert
2890 HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
2891 (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
2892 rather than HOST_BITS_PER_LONG is >= 64.
2893 (add_AT_long_long): Remove val_hi and val_lo arguments, add
2895 (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
2896 HOST_BITS_PER_LONG for dw_val_class_long_long.
2897 (add_const_value_attribute): Adjust add_AT_long_long caller. Don't
2898 handle TLS SYMBOL_REFs. If CONST wraps a constant, tail recurse.
2899 (dwarf_stack_op_name): Handle DW_OP_implicit_value and
2901 (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
2902 Handle DW_OP_implicit_value.
2903 (extract_int): Move prototype earlier.
2904 (mem_loc_descriptor): For SUBREG punt if inner
2905 mode size is wider than DWARF2_ADDR_SIZE. Handle SIGN_EXTEND
2906 and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}. Handle
2907 EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
2908 UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
2909 (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
2910 instead of Pmode size.
2911 (loc_descriptor): Add MODE argument. Handle CONST_INT, CONST_DOUBLE,
2912 CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
2913 attempt to handle other expressions. Don't handle TLS SYMBOL_REFs.
2914 (concat_loc_descriptor, concatn_loc_descriptor,
2915 loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
2916 (add_location_or_const_value_attribute): Likewise. For single
2917 location loc_lists attempt to use add_const_value_attribute
2918 for constant decls. Add DW_AT_const_value even if
2919 NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
2921 * cfgbuild.c (inside_basic_block_p): Handle debug insns.
2922 (control_flow_insn_p): Likewise.
2923 * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
2924 (separate_decls_in_region_debug_bind): New.
2925 (separate_decls_in_region): Process debug bind stmts afterwards.
2926 * recog.c (verify_changes): Handle debug insns.
2927 (extract_insn): Likewise.
2928 (peephole2_optimize): Skip debug insns.
2929 * dse.c (scan_insn): Skip debug insns.
2930 * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
2932 (setup_id_for_insn): Handle debug insns.
2933 (maybe_tidy_empty_bb): Adjust whitespace.
2934 (tidy_control_flow): Skip debug insns.
2935 (sel_remove_insn): Adjust for debug insns.
2936 (sel_estimate_number_of_insns): Skip debug insns.
2937 (create_insn_rtx_from_pattern): Handle debug insns.
2938 (create_copy_of_insn_rtx): Likewise.
2939 * sel-sched-.h (sel_bb_end): Declare.
2940 (sel_bb_empty_or_nop_p): New.
2941 (get_all_loop_exits): Use it.
2942 (_eligible_successor_edge_p): Likewise.
2943 (return_nop_to_pool): Adjust.
2944 * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
2945 * ira-lives.c (process_bb_node_lives): Skip debug insns.
2946 * gimple-pretty-print.c (dump_gimple_debug): New.
2947 (dump_gimple_stmt): Use it.
2948 (dump_bb_header): Skip gimple debug stmts.
2949 * regmove.c (optimize_reg_copy_1): Discount debug insns.
2950 (fixup_match_2): Likewise.
2951 (regmove_backward_pass): Likewise. Simplify combined
2952 replacement. Handle debug insns.
2953 * function.c (instantiate_virtual_regs): Handle debug insns.
2954 * function.h (struct emit_status): Add x_cur_debug_insn_uid.
2955 * print-rtl.h: Include cselib.h.
2956 (print_rtx): Print VALUEs. Split out and recurse for VAR_LOCATIONs.
2957 * df.h (df_inns_rescan_debug_internal): Declare.
2958 * gcse.c (alloc_hash_table): Estimate n_insns.
2959 (cprop_insn): Don't regard debug insns as changes.
2960 (bypass_conditional_jumps): Skip debug insns.
2961 (one_pre_gcse_pass): Adjust.
2962 (one_code_hoisting_pass): Likewise.
2963 (compute_ld_motion_mems): Skip debug insns.
2964 (one_cprop_pass): Adjust.
2965 * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
2966 (if_convertible_stmt_p): Handle debug stmts.
2967 * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
2968 * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
2969 * ira-build.c (create_bb_allocnos): Skip debug insns.
2970 * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
2971 (has_single_use): Likewise.
2972 (single_imm_use): Likewise.
2973 (num_imm_uses): Likewise.
2974 * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
2975 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
2976 (create_outofssa_var_map): Likewise.
2977 * lower-subreg.c (adjust_decomposed_uses): New.
2978 (resolve_debug): New.
2979 (decompose_multiword_subregs): Use it.
2980 * tree-dfa.c (find_referenced_vars): Skip debug stmts.
2981 * emit-rtl.c: Include params.h.
2982 (cur_debug_insn_uid): Define.
2983 (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
2984 (copy_rtx_if_shared_1): Handle debug insns.
2985 (reset_used_flags): Likewise.
2986 (set_used_flags): LIkewise.
2987 (get_max_insn_count): New.
2988 (next_nondebug_insn): New.
2989 (prev_nondebug_insn): New.
2990 (make_debug_insn_raw): New.
2991 (emit_insn_before_noloc): Handle debug insns.
2992 (emit_jump_insn_before_noloc): Likewise.
2993 (emit_call_insn_before_noloc): Likewise.
2994 (emit_debug_insn_before_noloc): New.
2995 (emit_insn_after_noloc): Handle debug insns.
2996 (emit_jump_insn_after_noloc): Likewise.
2997 (emit_call_insn_after_noloc): Likewise.
2998 (emit_debug_insn_after_noloc): Likewise.
2999 (emit_insn_after): Take loc from earlier non-debug insn.
3000 (emit_jump_insn_after): Likewise.
3001 (emit_call_insn_after): Likewise.
3002 (emit_debug_insn_after_setloc): New.
3003 (emit_debug_insn_after): New.
3004 (emit_insn_before): Take loc from later non-debug insn.
3005 (emit_jump_insn_before): Likewise.
3006 (emit_call_insn_before): Likewise.
3007 (emit_debug_insn_before_setloc): New.
3008 (emit_debug_insn_before): New.
3009 (emit_insn): Handle debug insns.
3010 (emit_debug_insn): New.
3011 (emit_jump_insn): Handle debug insns.
3012 (emit_call_insn): Likewise.
3014 (init_emit): Take min-nondebug-insn-uid into account.
3015 Initialize cur_debug_insn_uid.
3016 (emit_copy_of_insn_after): Handle debug insns.
3017 * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
3018 location of single rhs in place.
3019 (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
3020 (floor_sdiv_adjust): New.
3021 (cell_sdiv_adjust): New.
3022 (cell_udiv_adjust): New.
3023 (round_sdiv_adjust): New.
3024 (round_udiv_adjust): New.
3025 (wrap_constant): Moved from cselib.
3026 (unwrap_constant): New.
3027 (expand_debug_expr): New.
3028 (expand_debug_locations): New.
3029 (expand_gimple_basic_block): Drop hiding redeclaration. Expand
3031 (gimple_expand_cfg): Expand debug locations.
3032 * cselib.c: Include tree-pass.h.
3033 (struct expand_value_data): New.
3034 (cselib_record_sets_hook): New.
3035 (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
3036 (cselib_clear_table): Move, and implemnet in terms of...
3037 (cselib_reset_table_with_next_value): ... this.
3038 (cselib_get_next_unknown_value): New.
3039 (discard_useless_locs): Don't discard preserved values.
3040 (cselib_preserve_value): New.
3041 (cselib_preserved_value_p): New.
3042 (cselib_preserve_definitely): New.
3043 (cselib_clear_preserve): New.
3044 (cselib_preserve_only_values): New.
3045 (new_cselib_val): Take rtx argument. Dump it in details.
3046 (cselib_lookup_mem): Adjust.
3047 (expand_loc): Take regs_active in struct. Adjust. Silence
3048 dumps unless details are requested.
3049 (cselib_expand_value_rtx_cb): New.
3050 (cselib_expand_value_rtx): Rename and reimplment in terms of...
3051 (cselib_expand_value_rtx_1): ... this. Adjust. Silence dumps
3052 without details. Copy more subregs. Try to resolve values
3053 using a callback. Wrap constants.
3054 (cselib_subst_to_values): Adjust.
3055 (cselib_log_lookup): New.
3056 (cselib_lookup): Call it.
3057 (cselib_invalidate_regno): Don't count preserved values as useless.
3058 (cselib_invalidate_mem): Likewise.
3059 (cselib_record_set): Likewise.
3060 (struct set): Renamed to cselib_set, moved to cselib.h.
3061 (cselib_record_sets): Adjust. Call hook.
3062 (cselib_process_insn): Reset table when it would be cleared.
3063 (dump_cselib_val): New.
3064 (dump_cselib_table): New.
3065 * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
3066 (remove_forwarder_block): Support moving debug stmts.
3067 * cselib.h (cselib_record_sets_hook): Declare.
3068 (cselib_expand_callback): New type.
3069 (cselib_expand_value_rtx_cb): Declare.
3070 (cselib_reset_table_with_next_value): Declare.
3071 (cselib_get_next_unknown_value): Declare.
3072 (cselib_preserve_value): Declare.
3073 (cselib_preserved_value_p): Declare.
3074 (cselib_preserve_only_values): Declare.
3075 (dump_cselib_table): Declare.
3076 * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
3077 (try_crossjump_to_edge): Likewise.
3078 (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
3079 dominated blocks when debug stmts are present.
3080 * simplify-rtx.c (delegitimize_mem_from_attrs): New.
3081 * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
3082 (set_var_live_on_entry): Likewise.
3083 * loop-invariant.c (find_invariants_bb): Skip debug insns.
3084 * cfglayout.c (curr_location, last_location): Make static.
3085 (set_curr_insn_source_location): Don't avoid bouncing.
3086 (get_curr_insn_source_location): New.
3087 (get_curr_insn_block): New.
3088 (duplicate_insn_chain): Handle debug insns.
3089 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
3091 * common.opt (fcompare-debug): Move to sort order.
3092 (fdump-unnumbered-links): Likewise.
3093 (fvar-tracking-assignments): New.
3094 (fvar-tracking-assignments-toggle): New.
3095 * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
3096 because of debug stmts.
3097 (mark_stmt_if_obviously_necessary): Mark debug stmts.
3098 (eliminate_unnecessary_stmts): Walk dominated blocks before
3100 * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
3101 * ira.c (memref_used_between_p): Skip debug insns.
3102 (update_equiv_regs): Likewise.
3103 * sched-deps.c (sd_lists_size): Accept empty list.
3104 (sd_init_insn): Mark debug insns.
3105 (sd_finish_insn): Unmark them.
3106 (sd_add_dep): Reject non-debug deps on debug insns.
3107 (fixup_sched_groups): Give debug insns group treatment.
3109 (sched_analyze_reg): Don't mark debug insns for sched before call.
3110 (sched_analyze_2): Handle debug insns.
3111 (sched_analyze_insn): Compute next non-debug insn. Handle debug
3113 (deps_analyze_insn): Handle debug insns.
3114 (deps_start_bb): Skip debug insns.
3115 (init_deps): Initialize last_debug_insn.
3116 * tree-ssa.c (target_for_debug_bind): New.
3117 (find_released_ssa_name): New.
3118 (propagate_var_def_into_debug_stmts): New.
3119 (propagate_defs_into_debug_stmts): New.
3120 (verify_ssa): Skip debug bind stmts without values.
3121 (warn_uninialized_vars): Skip debug stmts.
3122 * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
3123 * rtl.c (rtx_equal_p_cb): Handle VALUEs.
3124 (rtx_equal_p): Likewise.
3125 * ira-costs.c (scan_one_insn): Skip debug insns.
3126 (process_bb_node_for_hard_reg_moves): Likewise.
3127 * rtl.h (DEBUG_INSN_P): New.
3128 (NONDEBUG_INSN_P): New.
3129 (MAY_HAVE_DEBUG_INSNS): New.
3130 (INSN_P): Accept debug insns.
3131 (RTX_FRAME_RELATED_P): Likewise.
3132 (INSN_DELETED_P): Likewise
3133 (PAT_VAR_LOCATION_DECL): New.
3134 (PAT_VAR_LOCATION_LOC): New.
3135 (PAT_VAR_OCATION_STATUS): New.
3136 (NOTE_VAR_LOCATION_DECL): Reimplement.
3137 (NOTE_VAR_LOCATION_LOC): Likewise.
3138 (NOTE_VAR_LOCATION_STATUS): Likewise.
3139 (INSN_VAR_LOCATION): New.
3140 (INSN_VAR_LOCATION_DECL): New.
3141 (INSN_VAR_LOCATION_LOC): New.
3142 (INSN_VAR_LOCATION_STATUS): New.
3143 (gen_rtx_UNKNOWN_VAR_LOC): New.
3144 (VAR_LOC_UNKNOWN_P): New.
3145 (NOTE_DURING_CALL_P): New.
3146 (SCHED_GROUP_P): Accept debug insns.
3147 (emit_debug_insn_before): Declare.
3148 (emit_debug_insn_before_noloc): Declare.
3149 (emit_debug_insn_beore_setloc): Declare.
3150 (emit_debug_insn_after): Declare.
3151 (emit_debug_insn_after_noloc): Declare.
3152 (emit_debug_insn_after_setloc): Declare.
3153 (emit_debug_insn): Declare.
3154 (make_debug_insn_raw): Declare.
3155 (prev_nondebug_insn): Declare.
3156 (next_nondebug_insn): Declare.
3157 (delegitimize_mem_from_attrs): Declare.
3158 (get_max_insn_count): Declare.
3159 (wrap_constant): Declare.
3160 (unwrap_constant): Declare.
3161 (get_curr_insn_source_location): Declare.
3162 (get_curr_insn_block): Declare.
3163 * tree-inline.c (insert_debug_decl_map): New.
3164 (processing_debug_stmt): New.
3165 (remap_decl): Don't create new mappings in debug stmts.
3166 (remap_gimple_op_r): Don't add references in debug stmts.
3167 (copy_tree_body_r): Likewise.
3168 (remap_gimple_stmt): Handle debug bind stmts.
3169 (copy_bb): Skip debug stmts.
3170 (copy_edges_for_bb): Likewise.
3171 (copy_debug_stmt): New.
3172 (copy_debug_stmts): New.
3173 (copy_body): Copy debug stmts at the end.
3174 (insert_init_debug_bind): New.
3175 (insert_init_stmt): Take id. Skip and emit debug stmts.
3176 (setup_one_parameter): Remap variable earlier, register debug mapping.
3177 (estimate_num_insns): Skip debug stmts.
3178 (expand_call_inline): Preserve debug_map.
3179 (optimize_inline_calls): Check for no debug_stmts left-overs.
3180 (unsave_expr_now): Preserve debug_map.
3181 (copy_gimple_seq_and_replace_locals): Likewise.
3182 (tree_function_versioning): Check for no debug_stmts left-overs.
3183 Init and destroy debug_map as needed. Split edges unconditionally.
3184 (build_duplicate_type): Init and destroy debug_map as needed.
3185 * tree-inline.h: Include gimple.h instead of pointer-set.h.
3186 (struct copy_body_data): Add debug_stmts and debug_map.
3187 * sched-int.h (struct ready_list): Add n_debug.
3188 (struct deps): Add last_debug_insn.
3189 (DEBUG_INSN_SCHED_P): New.
3190 (BOUNDARY_DEBUG_INSN_P): New.
3191 (SCHEDULE_DEBUG_INSN_P): New.
3192 (sd_iterator_cond): Accept empty list.
3193 * combine.c (create_log_links): Skip debug insns.
3194 (combine_instructions): Likewise.
3195 (cleanup_auto_inc_dec): New. From Jakub Jelinek: Make sure the
3196 return value is always unshared.
3197 (struct rtx_subst_pair): New.
3198 (auto_adjust_pair): New.
3199 (propagate_for_debug_subst): New.
3200 (propagate_for_debug): New.
3201 (try_combine): Skip debug insns. Propagate removed defs into
3203 (next_nonnote_nondebug_insn): New.
3204 (distribute_notes): Use it. Skip debug insns.
3205 (distribute_links): Skip debug insns.
3206 * tree-outof-ssa.c (set_location_for_edge): Likewise.
3207 * resource.c (mark_target_live_regs): Likewise.
3208 * var-tracking.c: Include cselib.h and target.h.
3209 (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
3211 (micro_operation_type_name): New.
3212 (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
3213 (struct micro_operation_def): Update comments.
3214 (decl_or_value): New type. Use instead of decls.
3215 (struct emit_note_data_def): Add vars.
3216 (struct attrs_def): Use decl_or_value.
3217 (struct variable_tracking_info_def): Add permp, flooded.
3218 (struct location_chain_def): Update comment.
3219 (struct variable_part_def): Use decl_or_value.
3220 (struct variable_def): Make var_part a variable length array.
3222 (scratch_regs): New.
3223 (cselib_hook_called): New.
3224 (dv_is_decl_p): New.
3225 (dv_is_value_p): New.
3228 (dv_as_opaque): New.
3229 (dv_onepart_p): New.
3231 (IS_DECL_CODE): New.
3232 (check_value_is_not_decl): New.
3233 (dv_from_decl): New.
3234 (dv_from_value): New.
3235 (dv_htab_hash): New.
3236 (variable_htab_hash): Use it.
3237 (variable_htab_eq): Support values.
3238 (variable_htab_free): Free from the right pool.
3239 (attrs_list_member, attrs_list_insert): Use decl_or_value.
3240 (attrs_list_union): Adjust.
3241 (attrs_list_mpdv_union): New.
3242 (tie_break_pointers): New.
3243 (canon_value_cmp): New.
3244 (unshare_variable): Return possibly-modified slot.
3245 (vars_copy_1): Adjust.
3246 (var_reg_decl_set): Adjust. Split out of...
3247 (var_reg_set): ... this.
3248 (get_init_value): Adjust.
3249 (var_reg_delete_and_set): Adjust.
3250 (var_reg_delete): Adjust.
3251 (var_regno_delete): Adjust.
3252 (var_mem_decl_set): Split out of...
3253 (var_mem_set): ... this.
3254 (var_mem_delete_and_set): Adjust.
3255 (var_mem_delete): Adjust.
3259 (variable_union): Adjust. Speed up merge of 1-part vars.
3260 (variable_canonicalize): Use unshared slot.
3261 (VALUED_RECURSED_INTO): New.
3262 (find_loc_in_1pdv): New.
3263 (struct dfset_merge): New.
3264 (insert_into_intersection): New.
3265 (intersect_loc_chains): New.
3267 (canonicalize_loc_order_check): New.
3268 (canonicalize_values_mark): New.
3269 (canonicalize_values_star): New.
3270 (variable_merge_over_cur): New.
3271 (variable_merge_over_src): New.
3272 (dataflow_set_merge): New.
3273 (dataflow_set_equiv_regs): New.
3274 (remove_duplicate_values): New.
3275 (struct dfset_post_merge): New.
3276 (variable_post_merge_new_vals): New.
3277 (variable_post_merge_perm_vals): New.
3278 (dataflow_post_merge_adjust): New.
3279 (find_mem_expr_in_1pdv): New.
3280 (dataflow_set_preserve_mem_locs): New.
3281 (dataflow_set_remove_mem_locs): New.
3282 (dataflow_set_clear_at_call): New.
3283 (onepart_variable_different_p): New.
3284 (variable_different_p): Use it.
3285 (dataflow_set_different_1): Adjust. Make detailed dump more verbose.
3286 (track_expr_p): Add need_rtl parameter. Don't generate rtl
3288 (track_loc_p): Pass it true.
3289 (struct count_use_info): New.
3290 (find_use_val): New.
3291 (replace_expr_with_values): New.
3293 (use_type): New, partially split out of...
3294 (count_uses): ... this. Count new micro-ops.
3295 (count_uses_1): Adjust.
3296 (count_stores): Adjust.
3297 (count_with_sets): New.
3298 (VAL_NEEDS_RESOLUTION): New.
3299 (VAL_HOLDS_TRACK_EXPR): New.
3300 (VAL_EXPR_IS_COPIED): New.
3301 (VAL_EXPR_IS_CLOBBERED): New.
3302 (add_uses): Adjust. Generate new micro-ops.
3303 (add_uses_1): Adjust.
3304 (add_stores): Generate new micro-ops.
3305 (add_with_sets): New.
3306 (find_src_status): Adjust.
3307 (find_src_set_src): Adjust.
3308 (compute_bb_dataflow): Use dataflow_set_clear_at_call.
3309 Handle new micro-ops. Canonicalize value equivalances.
3310 (vt_find_locations): Compute total size of hash tables for
3311 dumping. Perform merge for var-tracking-assignments. Don't
3312 disregard single-block loops.
3313 (dump_attrs_list): Handle decl_or_value.
3314 (dump_variable): Take variable. Deal with decl_or_value.
3315 (dump_variable_slot): New.
3316 (dump_vars): Use it.
3317 (dump_dataflow_sets): Adjust.
3318 (set_slot_part): New, extended to support one-part variables
3319 after splitting out of...
3320 (set_variable_part): ... this.
3321 (clobber_slot_part): New, split out of...
3322 (clobber_variable_part): ... this.
3323 (delete_slot_part): New, split out of...
3324 (delete_variable_part): .... this.
3325 (check_wrap_constant): New.
3326 (vt_expand_loc_callback): New.
3327 (vt_expand_loc): New.
3328 (emit_note_insn_var_location): Adjust. Handle values. Handle
3329 EMIT_NOTE_AFTER_CALL_INSN.
3330 (emit_notes_for_differences_1): Adjust. Handle values.
3331 (emit_notes_for_differences_2): Likewise.
3332 (emit_notes_for_differences): Adjust.
3333 (emit_notes_in_bb): Take pointer to set. Emit AFTER_CALL_INSN notes.
3334 Adjust. Handle new micro-ops.
3335 (vt_add_function_parameters): Adjust. Create and bind values.
3336 (vt_initialize): Adjust. Initialize scratch_regs and
3337 valvar_pool, flooded and perm.. Initialize and use cselib. Log
3338 operations. Move some code to count_with_sets and add_with_sets.
3339 (delete_debug_insns): New.
3340 (vt_debug_insns_local): New.
3341 (vt_finalize): Release permp, valvar_pool, scratch_regs. Finish
3343 (var_tracking_main): If var-tracking-assignments is enabled
3344 but var-tracking isn't, delete debug insns and leave. Likewise
3345 if we exceed limits or fail the stack adjustments tests, and
3346 after all var-tracking processing.
3347 More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
3348 (dataflow_set): Add traversed_vars.
3349 (value_chain, const_value_chain): New typedefs.
3350 (value_chain_pool, value_chains): New variables.
3351 (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
3352 add_value_chains, add_cselib_value_chains, remove_value_chain,
3353 remove_value_chains, remove_cselib_value_chains): New functions.
3354 (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
3355 shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
3357 (shared_hash_find_slot_unshare, shared_hash_find_slot,
3358 shared_hash_find_slot_noinsert, shared_hash_find): Update.
3359 (dst_can_be_shared): New variable.
3360 (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
3361 Clear dst_can_be_shared. If set->traversed_vars is non-NULL and
3362 different from set->vars, look up slot again instead of using the
3364 (dataflow_set_init): Initialize traversed_vars.
3365 (variable_union): Use shared_hash_*. Use initially NO_INSERT
3366 lookup if set->vars is shared. Don't keep slot cleared before
3367 calling unshare_variable. Unshare set->vars if needed. Adjust
3368 unshare_variable callers. Clear dst_can_be_shared if needed.
3369 Even ->refcount == 1 vars must be unshared if set->vars is shared
3370 and var needs to be modified.
3371 (dataflow_set_union): Set traversed_vars during canonicalization.
3372 (VALUE_CHANGED, DECL_CHANGED): Define.
3373 (set_dv_changed, dv_changed_p): New static inlines.
3374 (track_expr_p): Clear DECL_CHANGED.
3375 (dump_dataflow_sets): Set it.
3376 (variable_was_changed): Call set_dv_changed.
3377 (emit_note_insn_var_location): Likewise.
3378 (changed_variables_stack): New variable.
3379 (check_changed_vars_1, check_changed_vars_2): New functions.
3380 (emit_notes_for_changes): Do nothing if changed_variables is
3381 empty. Traverse changed_variables with check_changed_vars_1,
3382 call check_changed_vars_2 on each changed_variables_stack entry.
3383 (emit_notes_in_bb): Add SET argument. Just clear it at the
3384 beginning, use it instead of local &set, don't destroy it at the end.
3385 (vt_emit_notes): Call dataflow_set_clear early on all
3386 VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
3387 computed set, dataflow_set_clear also VTI(bb)->in when we are
3388 done with the basic block. Initialize changed_variables_stack,
3389 free it afterwards. If ENABLE_CHECKING verify that after noting
3390 differences to an empty set value_chains hash table is empty.
3391 (vt_initialize): Initialize value_chains and value_chain_pool.
3392 (vt_finalize): Delete value_chains htab, free value_chain_pool.
3393 (variable_tracking_main): Call dump_dataflow_sets before calling
3394 vt_emit_notes, not after it.
3395 * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
3396 (propagate_var_def_into_debug_stmts): Declare.
3397 * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
3398 (df_set_note): Reject debug insns.
3399 (df_whole_mw_reg_dead_p): Take added_notes_p argument. Don't
3400 add notes to debug insns.
3401 (df_note_bb_compute): Adjust. Likewise.
3402 (df_simulate_uses): Skip debug insns.
3403 (df_simulate_initialize_backwards): Likewise.
3404 * reg-stack.c (subst_stack_regs_in_debug_insn): New.
3405 (subst_stack_regs_pat): Reject debug insns.
3406 (convert_regs_1): Handle debug insns.
3407 * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
3408 (print-rtl.o): Depend on cselib.h.
3409 (cselib.o): Depend on TREE_PASS_H.
3410 (var-tracking.o): Depend on cselib.h and TARGET_H.
3411 * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
3412 (init_ready_list): Skip boundary debug insns.
3413 (add_branch_dependences): Skip debug insns.
3414 (free_block_dependencies): Check for blocks with only debug insns.
3415 (compute_priorities): Likewise.
3416 * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
3417 (gimple_build_with_ops_stat): Take subcode as unsigned. Adjust
3419 (gimple_build_debug_bind_stat): New.
3420 (empty_body_p): Skip debug stmts.
3421 (gimple_has_side_effects): Likewise.
3422 (gimple_rhs_has_side_effects): Likewise.
3423 * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
3424 (gimple_build_debug_bind_stat): Declare.
3425 (gimple_build_debug_bind): Define.
3426 (is_gimple_debug): New.
3427 (gimple_debug_bind_p): New.
3428 (gimple_debug_bind_get_var): New.
3429 (gimple_debug_bind_get_value): New.
3430 (gimple_debug_bind_get_value_ptr): New.
3431 (gimple_debug_bind_set_var): New.
3432 (gimple_debug_bind_set_value): New.
3433 (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
3434 (gimple_debug_bind_reset_value): New.
3435 (gimple_debug_bind_has_value_p): New.
3436 (gsi_next_nondebug): New.
3437 (gsi_prev_nondebug): New.
3438 (gsi_start_nondebug_bb): New.
3439 (gsi_last_nondebug_bb): New.
3440 * sched-vis.c (print_pattern): Handle VAR_LOCATION.
3441 (print_insn): Handle DEBUG_INSN.
3442 * tree-cfg.c (remove_bb): Walk stmts backwards. Let loc
3443 of first insn prevail.
3444 (first_stmt): Skip debug stmts.
3445 (first_non_label_stmt): Likewise.
3446 (last_stmt): Likewise.
3447 (has_zero_uses_1): New.
3448 (single_imm_use_1): New.
3449 (verify_gimple_debug): New.
3450 (verify_types_in_gimple_stmt): Handle debug stmts.
3451 (verify_stmt): Likewise.
3452 (debug_loop_num): Skip debug stmts.
3453 (remove_edge_and_dominated_blocks): Remove dominators last.
3454 * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
3455 (linearize_expr): Likewise.
3456 * config/i386/i386.c (ix86_delegitimize_address): Call
3457 default implementation.
3458 * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
3459 (group_barrier_needed): Skip debug insns.
3460 (emit_insn_group_barriers): Likewise.
3461 (emit_all_insn_group_barriers): Likewise.
3462 (ia64_variable_issue): Handle debug insns.
3463 (ia64_dfa_new_cycle): Likewise.
3464 (final_emit_insn_group_barriers): Skip debug insns.
3465 (ia64_dwarf2out_def_steady_cfa): Take frame argument. Don't
3466 def cfa without frame.
3467 (process_set): Likewise.
3468 (process_for_unwind_directive): Pass frame on.
3469 * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
3470 (rs6000_delegitimize_address): New.
3471 (rs6000_debug_adjust_cost): Handle debug insns.
3472 (is_microcoded_insn): Likewise.
3473 (is_cracked_insn): Likewise.
3474 (is_nonpipeline_insn): Likewise.
3475 (insn_must_be_first_in_group): Likewise.
3476 (insn_must_be_last_in_group): Likewise.
3477 (force_new_group): Likewise.
3478 * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
3479 contains only debug insns.
3480 (rtl_merge_blocks): Skip debug insns.
3481 (purge_dead_edges): Likewise.
3482 (rtl_block_ends_with_call_p): Skip debug insns.
3483 * dce.c (deletable_insn_p): Handle VAR_LOCATION.
3484 (mark_reg_dependencies): Skip debug insns.
3485 * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
3486 * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
3487 * tree-ssa-threadedge.c
3488 (record_temporary_equivalences_from_stmts): Skip debug stmts.
3489 * regcprop.c (replace_oldest_value_addr): Skip debug insns.
3490 (replace_oldest_value_mem): Use ALL_REGS for debug insns.
3491 (copyprop_hardreg_forward_1): Handle debug insns.
3492 * reload1.c (reload): Skip debug insns. Replace unassigned
3493 pseudos in debug insns with their equivalences.
3494 (eliminate_regs_in_insn): Skip debug insns.
3495 (emit_input_reload_insns): Skip debug insns at first, adjust
3497 * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
3498 (get_indirect_ref_operands): Pass opf_no_vops on.
3499 (get_expr_operands): Likewise. Skip debug stmts.
3500 (parse_ssa_operands): Scan debug insns with opf_no_vops.
3502 2009-09-01 Richard Henderson <rth@redhat.com>
3504 * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
3505 stmt_ends_pp_p statements at least once.
3506 * tree-vrp.c (vrp_initialize): Likewise.
3507 (vrp_visit_stmt): Be prepared for non-interesting stmts.
3509 2009-09-01 Dodji Seketeli <dodji@redhat.com>
3512 Fix AIX bootstrap after PR debug/30161
3513 * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
3514 that is a GNU extension.
3515 (tmpl_value_parm_die_table): Move the definition of this global
3516 outside #ifdef DWARF2_DEBUGGING_INFO region.
3518 2009-09-01 Richard Guenther <rguenther@suse.de>
3520 * tree.c (tree_expr_size): New function.
3521 * tree.h (tree_expr_size): Declare.
3522 * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
3523 * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
3524 * langhooks.c (lhd_expr_size): Remove.
3525 * langhooks.h (struct lang_hooks): Remove expr_size.
3526 * explow.c (expr_size): Use tree_expr_size.
3527 (int_expr_size): Likewise.
3528 * langhooks-def.h (lhd_expr_size): Remove.
3529 (LANG_HOOKS_EXPR_SIZE): Likewise.
3530 (LANG_HOOKS_INITIALIZER): Adjust.
3532 2009-09-01 Richard Guenther <rguenther@suse.de>
3534 * tree-flow.h (mark_addressable): Move declaration ...
3535 * tree.h (mark_addressable): ... here.
3536 * stmt.c (expand_asm_operands): Use mark_addressable, not
3537 lang_hooks.mark_addressable.
3538 * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
3539 LANG_HOOKS_MARK_ADDRESSABLE.
3540 * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
3541 * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
3543 2009-08-31 Chris Demetriou <cgd@google.com>
3545 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
3546 vectorize if not TARGET_SSE2.
3548 2009-08-31 DJ Delorie <dj@redhat.com>
3550 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
3551 registers if no coprocessor is enabled.
3553 2009-08-31 Dodji Seketeli <dodji@redhat.com>
3556 * cgraph.h (cgraph_get_node): Declare ...
3557 * cgraph.c (cgraph_get_node): ... new function.
3558 * dwarf2out.c (gen_generic_params_dies,
3559 generic_parameter_die, tree_add_const_value_attribute_for_decl,
3560 make_ith_pack_parameter_name,
3561 append_entry_to_tmpl_value_parm_die_table,
3562 gen_remaining_tmpl_value_param_die_attribute): New functions.
3563 (gen_subprogram_die): Generate debug info for template parameters
3564 if debug info level is higher than DINFO_LEVEL_TERSE.
3565 Use tree_add_const_value_attribute_for_decl instead of
3566 tree_add_const_value_attribute.
3567 (gen_const_die): Use tree_add_const_value_attribute_for_decl
3568 instead of tree_add_const_value_attribute.
3569 (gen_struct_or_union_type_die): Generate debug
3570 info for template parameters if debug info level is higher than
3572 (tree_add_const_value_attribute): Handle integral and pointer
3573 constants. Update comment.
3574 (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
3575 (dwarf_attr_name): Support DW_AT_GNU_template_name.
3576 (reference_to_unused): Fix thinko. Remove redundant predicates from
3578 (tree_add_const_value_attribute): Make this work for constant
3580 tree_add_const_value_attribute_for_decl is to be used for variable
3582 (add_location_or_const_value_attribute): Use
3583 tree_add_const_value_attribute_for_decl now.
3584 (dwarf2out_finish): Emit the DW_AT_const_value attribute of
3585 DW_TAG_template_value_param DIEs after function DIEs have been
3587 * langhooks.h (lang_hooks_for_types): Add
3588 get_argument_pack_elems.
3589 (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
3590 (lang_hooks): Added get_innermost_generic_parms,
3591 get_innermost_generic_args.
3592 * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
3593 LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
3594 LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
3595 LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
3597 2009-08-31 DJ Delorie <dj@redhat.com>
3599 * config/mep/mep.c (machine_function): Add frame_locked flag. Set
3600 it once we start generating the prologue or epilogue.
3601 (mep_call_saves_register): If the frame is locked, re-use
3603 (mep_assign_save_slots): New, broken out from mep_expand_prologue.
3604 (mep_expand_prologue): Call it.
3605 (mep_expand_epilogue): Likewise.
3606 (mep_start_function): Use the same logic as mep_expand_prologue.
3607 (mep_pass_by_reference): Make logic more readable.
3608 (mep_return_in_memory): Zero-sized objects are passed in memory.
3609 (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
3611 2009-08-31 Richard Guenther <rguenther@suse.de>
3613 * builtins.c (fold_builtin_memory_op): Use the alias oracle
3614 to query if the memory regions for memmove overlap.
3615 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
3616 asserts on pointers, instead deal with odd trees.
3617 (ptr_derefs_may_alias_p): Likewise.
3618 (refs_may_alias_p_1): Constructor bases also never alias.
3620 2009-08-31 Gerald Pfeifer <gerald@pfeifer.com>
3622 * doc/install.texi (Final install): Adjust reference on where to
3623 order printed manuals.
3625 2009-08-30 Olivier Hainque <hainque@adacore.com>
3627 * dwarf2out.c (switch_to_frame_table_section): Move
3628 definition prior to first use.
3630 2009-08-30 Richard Guenther <rguenther@suse.de>
3632 PR tree-optimization/41186
3633 * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
3634 (ao_ref_init_from_ptr_and_size): New function.
3635 (ref_maybe_used_by_call_p_1): Be more precise tracking
3636 used ranges for builtin functions.
3637 (ref_maybe_used_by_call_p): Adjust.
3638 (call_may_clobber_ref_p_1): Be more precise tracking clobbered
3639 ranges for builtin functions.
3640 * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
3642 2009-08-30 Alan Modra <amodra@bigpond.net.au>
3645 * fwprop.c (get_reg_use_in): Delete.
3646 (free_load_extend): New function.
3647 (forward_propagate_subreg): Use it.
3649 2009-08-29 Kaz Kojima <kkojima@gcc.gnu.org>
3651 * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
3653 2009-08-29 Kai Tietz<kai.tietz@onevision.com>
3656 * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
3659 2009-08-29 Douglas B Rupp <rupp@gnat.com>
3661 * crtstuff.c (__do_global_dtors_aux): Use atexit if no
3662 fini or fini_array section.
3664 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3666 * graphite-dependences.c (graphite_legal_transform_bb): Call
3667 pbb_remove_duplicate_pdrs.
3668 * graphite-poly.c (can_collapse_pdr): Removed.
3669 (pdr_find_duplicate): Removed.
3670 (can_collapse_pdrs): New.
3671 (pbb_remove_duplicate_pdrs): New.
3672 (new_poly_dr): Do not look for duplicates.
3673 * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
3674 (PBB_PDR_DUPLICATES_REMOVED): New.
3675 (pbb_remove_duplicate_pdrs): Declared.
3677 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3679 * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
3680 the strides by multiplying by PDR_NB_REFS.
3681 * graphite-poly.c (can_collapse_pdr): New.
3682 (pdr_find_duplicate): New.
3683 (new_poly_dr): Call pdr_find_duplicate. Collapse duplicate PDRs.
3684 Initialize PDR_NB_REFS.
3685 * graphite-poly.h (struct poly_dr): Add field nb_refs.
3687 (new_poly_dr): Number of subscripts is a graphite_dim_t.
3689 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3692 * graphite-poly.c (apply_poly_transforms): Remove legality test before
3695 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3697 * graphite-dependences.c (pddr_original_scattering): Return NULL
3698 for read-read dependence relations.
3699 * graphite-poly.h (enum poly_dr_type): Fix comment.
3702 (pdr_may_write_p): New.
3704 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3706 * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
3707 (struct poly_dr): Same.
3708 (new_poly_dr): Same.
3709 * graphite-poly.c (new_poly_dr): Same.
3710 * graphite-dependences.c (dot_deps): Disable call to system.
3712 2009-08-28 Cary Coutant <ccoutant@google.com>
3715 * dwarf2out.c (gen_type_die_with_usage): Use proper context for
3716 struct/union/enum types local to a function.
3718 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
3719 Sebastian Pop <sebastian.pop@amd.com>
3721 * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
3722 pbb_strip_mine_time_depth. Changed the implementation so that
3723 transformation is expressed as a transformation on
3724 time (scatttering) dimensions. Also, ensures that the 2d+1
3725 scheduling format is preserved.
3726 (pbb_strip_mine_profitable_p): Profitability is based on the
3727 iteration number of a given time (scattering) dimension,
3728 and not on a original loop depth dimension.
3729 (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
3730 (pbb_do_strip_mine): Call psct_dynamic_dim.
3731 * graphite-poly.c (pbb_number_of_iterations_at_time): New.
3732 * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
3733 (pbb_nb_dynamic_scattering_transform): New.
3734 (psct_dynamic_dim): New.
3736 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
3738 * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3739 * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
3740 * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
3741 * graphite-interchange.c (build_linearized_memory_access): Same.
3742 (memory_stride_in_loop): Same.
3744 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3746 * graphite-dependences.c (pddr_original_scattering): New.
3747 (graphite_legal_transform_dr): Call pddr_original_scattering.
3750 * graphite-dependences.h (dot_deps): Declared.
3751 * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
3752 (print_pdr): Print PDR_ID.
3753 * graphite-poly.h (struct poly_dr): Add field id.
3756 * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
3758 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3760 * graphite-dependences.c (graphite_carried_dependence_level_k): Do
3761 not delete the original dependence relation.
3763 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3765 * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
3766 (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
3767 (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
3768 (free_poly_ddr): New.
3769 (pddr_is_empty): New.
3770 (dependence_polyhedron_1): Now returns a poly_ddr_p.
3771 (dependence_polyhedron): Same. Remove useless gcc_assert.
3773 (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
3774 (graphite_carried_dependence_level_k): Call pddr_is_empty.
3775 * graphite-dependences.h (enum poly_dependence_kind): New.
3776 (poly_dr_pair): Renamed poly_ddr. Added a field kind.
3777 (PDRP_SOURCE): Renamed PDDR_SOURCE.
3778 (PDRP_SINK): Renamed PDDR_SINK.
3779 (PDRP_DDP): Renamed PDDR_DDP.
3781 (free_poly_ddr): Declared.
3782 * graphite-poly.c (new_scop): Use the new hash function names.
3783 * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
3784 into original_pddrs.
3785 (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
3787 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3789 * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
3790 bounds with LT_EXPR to make niter analysis more precise on code
3791 generated by Graphite.
3793 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
3795 * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
3796 (graphite_legal_transform_bb): Same.
3797 (poly_drs_may_alias_p): Same.
3799 2009-08-28 Richard Guenther <rguenther@suse.de>
3801 * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
3803 2009-08-28 Jan Beulich <jbeulich@novell.com>
3805 * config/i386/netware.c: Include langhooks.h.
3806 (i386_nlm_encode_section_info): Simplify.
3807 (netware_override_options): Delete.
3808 * config/i386/netware.h (netware_override_options): Delete
3810 (OVERRIDE_OPTIONS): Delete definition.
3811 (SUBTARGET_OVERRIDE_OPTIONS): Define.
3812 (ASM_COMMENT_START): Define.
3813 * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
3815 2009-08-28 Jan Beulich <jbeulich@novell.com>
3817 * configure.ac: For in-tree ld, do a plain version check to
3818 determine whether comdat groups are supported.
3819 * configure: Regenerate.
3821 2009-08-28 Olivier Hainque <hainque@adacore.com>
3823 * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
3824 always defined. Reflect definition or absence of such for
3825 COLLECT_EXPORT_LIST. Readability helper.
3826 (scanfilter): New enum, to help control what symbols
3827 are to be considered or ignored by scan_prog_file.
3828 (enum pass): Rename as "scanpass", moved together with scanfilter
3829 prior to scan_prog_file's prototype.
3830 (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
3831 Group prototype with the scanpass/scanfilter definitions, factorize
3832 head comments for the several implementations at the prototype.
3833 (main): Reorganize the first pass link control to let AIX
3834 drag only the needed frame tables in executables. Prevent
3835 frame tables collection during the scan aimed at static ctors.
3836 Pre-link and scan for frame tables later to compensate.
3837 * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
3838 A C statement to issue assembly directives that create a reference
3839 to the given DWARF table identifier label from the current function
3841 * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
3842 to differentiate first time section entry. Only emit a .data
3843 tables start identifier label the first time around.
3844 (switch_to_frame_table_section): New function. Helper for
3845 output_call_frame_info to switch possibly BACK into the eh_frame
3846 or the debug_frame section depending on FOR_EH.
3847 (output_call_frame_info): Use helper to first enter the proper
3849 (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
3850 emit a link to the frame table start label from each function
3852 * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
3853 New function. Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
3854 * config/rs6000/rs6000-protos.h: Declare it.
3855 * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
3857 2009-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
3859 * config/sh/sh.c (split_branches): Check the result of
3862 2009-08-27 Steve Ellcey <sje@cup.hp.com>
3864 * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
3865 using -pthread -fopenmp
3867 2009-08-27 Gerald Pfeifer <gerald@pfeifer.com>
3869 * doc/service.texi (service directory): Update URL.
3871 2009-08-27 Uros Bizjak <ubizjak@gmail.com>
3873 PR rtl-optimization/40861
3874 * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
3875 extract word from a multi-word subreg for negative byte positions.
3877 2009-08-27 Tristan Gingold <gingold@adacore.com>
3878 Douglas B Rupp <rupp@gnat.com>
3880 * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
3881 (SECTION_VMS_OVERLAY): Define.
3882 (ia64_vms_common_object_attribute): Added. Handle the "common_object"
3884 (ia64_vms_elf_asm_named_section): Added. Generate .section pseudo-op
3886 (ia64_vms_output_aligned_decl_common): Added. Generate pseudo-op for
3887 common_object declarations.
3888 (ia64_section_type_flags): Set section flag for common_object.
3889 * config/ia64/ia64-protos.h
3890 (ia64_vms_output_aligned_decl_common): Declare.
3891 (ia64_vms_elf_asm_named_section): Declare.
3893 2009-08-27 Michael Matz <matz@suse.de>
3895 * expr.c (expand_expr_real_2): New function taking exploded
3896 unary or binary expression, split out from ...
3897 (expand_expr_real_1): ... here. Move over all unary/binary
3898 switch parts to above function, in particular these codes:
3899 PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
3900 MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
3901 ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
3902 FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
3903 FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
3904 BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
3905 BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
3906 LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
3907 NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
3908 UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
3909 WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
3910 VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
3911 VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
3912 VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
3913 VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
3914 VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
3915 VEC_PACK_FIX_TRUNC_EXPR.
3916 (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
3919 2009-08-27 Richard Guenther <rguenther@suse.de>
3921 * gengtype.c (main): Handle uint64_t.
3922 * ipa-utils.c (get_base_var): Indent properly.
3923 * tree-ssa-live.c (debug_scope_block): New function.
3924 * tree-flow.h (debug_scope_block): Declare.
3925 * tree-ssa-copy.c (replace_exp_1): Add vertical space.
3926 * basic-block.h (enum profile_status): Rename to
3927 enum profile_status_d.
3928 (x_profile_status): Adjust type.
3930 2009-08-27 Dodji Seketeli <dodji@redhat.com>
3933 * dwarf2out.c (get_context_die): Declare this static function.
3934 (gen_type_die_with_usage): Make sure a DIE is a generated for
3935 the context of a typedef.
3937 2009-08-26 Anatoly Sokolov <aesok@post.ru>
3939 * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
3942 2009-08-26 Richard Sandiford <rdsandiford@googlemail.com>
3944 * config/mips/mips-protos.h (mips_output_sync): Declare.
3945 (mips_sync_loop_insns): Likewise.
3946 (mips_output_sync_loop): Replace first two parameters with an rtx.
3947 * config/mips/mips.c (mips_multi_member): New structure.
3948 (mips_multi_members): New variable.
3949 (mips_multi_start): New function.
3950 (mips_multi_add): Likewise.
3951 (mips_multi_add_insn): Likewise.
3952 (mips_multi_add_label): Likewise.
3953 (mips_multi_last_index): Likewise.
3954 (mips_multi_copy_insn): Likewise.
3955 (mips_multi_set_operand): Likewise.
3956 (mips_multi_write): Likewise.
3957 (mips_print_operand_punctuation): Remove '%|' and '%-'.
3958 (mips_init_print_operand_punct): Update accordingly.
3959 (mips_start_ll_sc_sync_block): New function.
3960 (mips_end_ll_sc_sync_block): Likewise.
3961 (mips_output_sync): Likewise.
3962 (mips_sync_insn1_template): Likewise.
3963 (mips_sync_insn2_template): Likewise.
3964 (mips_get_sync_operand): Likewise.
3965 (mips_process_sync_loop): Likewise.
3966 (mips_output_sync_loop): Use mips_process_sync_loop.
3967 (mips_sync_loop_insns): New function.
3968 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
3969 (MIPS_COMPARE_AND_SWAP_12): Likewise.
3970 (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
3971 (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
3972 (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
3973 (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
3974 (MIPS_SYNC_OLD_OP_12): Likewise.
3975 (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
3976 (MIPS_SYNC_NEW_OP_12): Likewise.
3977 (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
3978 (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
3979 (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
3980 (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
3981 (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
3982 (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
3983 * config/mips/mips.md (sync_mem): New attribute.
3984 (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
3985 (sync_exclusive_mask, sync_required_oldval): Likewise.
3986 (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
3987 (sync_release_barrier): Likewise.
3988 (length): Handle sync loops.
3989 (sync): Use mips_output_sync.
3990 * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
3991 (sync_compare_and_swap<mode>): Set the new sync_* attributes
3992 and use mips_output_sync_loop.
3993 (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
3994 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3995 (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
3996 (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
3997 (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
3998 (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
3999 (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
4000 (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
4001 (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
4003 2009-08-26 Richard Guenther <rguenther@suse.de>
4006 * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
4007 the types to not match.
4008 * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
4010 * tree-ssa.c (useless_type_conversion_p): Conversions to
4011 pointers to unprototyped functions are useless.
4013 2009-08-26 Richard Guenther <rguenther@suse.de>
4015 * tree-ssa-structalias.c (create_variable_info_for): Remove strange
4016 whole-program condition, prepare to be called for non-globals.
4017 (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
4018 params build a representative with known type and track its fields.
4020 2009-08-26 Uros Bizjak <ubizjak@gmail.com>
4022 * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
4023 clearing by a taken branch.
4024 (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
4025 effectively after bbro pass.
4026 (sync_nand<mode>): Ditto.
4027 (sync_old_<fetchop_name><mode>): Ditto.
4028 (sync_old_nand<mode>): Ditto.
4029 (sync_new_<fetchop_name><mode>): Dito.
4030 (sync_new_nand<mode>): Ditto.
4031 (sync_compare_and_swap<mode>_1): Ditto.
4032 (*sync_compare_and_swap<mode>): Ditto.
4033 (sync_lock_test_and_set<mode>_1): Ditto.
4034 ("sync_lock_test_and_set<mode>): Ditto.
4036 2009-08-25 Douglas B Rupp <rupp@gnat.com>
4038 * hwint.h (HOST_LONG_FORMAT): New macro
4039 * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
4040 Use HOST_PTR_PRINTF.
4041 * system.h (HOST_PTR_PRINTF): Resurrect old macro
4042 * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
4043 (HOST_PTR_PRINTF): Document.
4045 2009-08-25 Jan Hubicka <jh@suse.cz>
4047 * config/i386/bmmintrin.h: Replace by #error.
4050 Michael Meissner <michael.meissner@amd.com>
4051 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4052 Tony Linthicum <tony.linthicum@amd.com>
4054 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
4055 (TARGET_ROUND): New macro for the round/ptest instructions which
4056 are shared between SSE4.1 and SSE5.
4057 (OPTION_MASK_ISA_ROUND): Ditto.
4058 (OPTION_ISA_ROUND): Ditto.
4059 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
4060 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
4062 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
4063 (-mfused-madd): New switch to give users control over whether the
4064 compiler optimizes to use the multiply/add SSE5 instructions.
4066 * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
4067 (ix86_handle_option): Turn off 3dnow if -msse5.
4068 (override_options): Add SSE5 support.
4069 (print_operand): %Y prints comparison codes for SSE5 com/pcom
4071 (ix86_expand_sse_movcc): Add SSE5 support.
4072 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
4073 vector type to the next largest size.
4074 (ix86_expand_sse5_pack): New function to use pperm to pack a
4075 vector type to the next smallest size.
4076 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
4077 (IX86_BUILTIN_FMADDSD): Ditto.
4078 (IX86_BUILTIN_FMADDPS): Ditto.
4079 (IX86_BUILTIN_FMADDPD): Ditto.
4080 (IX86_BUILTIN_FMSUBSS): Ditto.
4081 (IX86_BUILTIN_FMSUBSD): Ditto.
4082 (IX86_BUILTIN_FMSUBPS): Ditto.
4083 (IX86_BUILTIN_FMSUBPD): Ditto.
4084 (IX86_BUILTIN_FNMADDSS): Ditto.
4085 (IX86_BUILTIN_FNMADDSD): Ditto.
4086 (IX86_BUILTIN_FNMADDPS): Ditto.
4087 (IX86_BUILTIN_FNMADDPD): Ditto.
4088 (IX86_BUILTIN_FNMSUBSS): Ditto.
4089 (IX86_BUILTIN_FNMSUBSD): Ditto.
4090 (IX86_BUILTIN_FNMSUBPS): Ditto.
4091 (IX86_BUILTIN_FNMSUBPD): Ditto.
4092 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
4093 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
4094 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
4095 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
4096 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
4097 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
4098 (IX86_BUILTIN_PPERM): Ditto.
4099 (IX86_BUILTIN_PERMPS): Ditto.
4100 (IX86_BUILTIN_PERMPD): Ditto.
4101 (IX86_BUILTIN_PMACSSWW): Ditto.
4102 (IX86_BUILTIN_PMACSWW): Ditto.
4103 (IX86_BUILTIN_PMACSSWD): Ditto.
4104 (IX86_BUILTIN_PMACSWD): Ditto.
4105 (IX86_BUILTIN_PMACSSDD): Ditto.
4106 (IX86_BUILTIN_PMACSDD): Ditto.
4107 (IX86_BUILTIN_PMACSSDQL): Ditto.
4108 (IX86_BUILTIN_PMACSSDQH): Ditto.
4109 (IX86_BUILTIN_PMACSDQL): Ditto.
4110 (IX86_BUILTIN_PMACSDQH): Ditto.
4111 (IX86_BUILTIN_PMADCSSWD): Ditto.
4112 (IX86_BUILTIN_PMADCSWD): Ditto.
4113 (IX86_BUILTIN_PHADDBW): Ditto.
4114 (IX86_BUILTIN_PHADDBD): Ditto.
4115 (IX86_BUILTIN_PHADDBQ): Ditto.
4116 (IX86_BUILTIN_PHADDWD): Ditto.
4117 (IX86_BUILTIN_PHADDWQ): Ditto.
4118 (IX86_BUILTIN_PHADDDQ): Ditto.
4119 (IX86_BUILTIN_PHADDUBW): Ditto.
4120 (IX86_BUILTIN_PHADDUBD): Ditto.
4121 (IX86_BUILTIN_PHADDUBQ): Ditto.
4122 (IX86_BUILTIN_PHADDUWD): Ditto.
4123 (IX86_BUILTIN_PHADDUWQ): Ditto.
4124 (IX86_BUILTIN_PHADDUDQ): Ditto.
4125 (IX86_BUILTIN_PHSUBBW): Ditto.
4126 (IX86_BUILTIN_PHSUBWD): Ditto.
4127 (IX86_BUILTIN_PHSUBDQ): Ditto.
4128 (IX86_BUILTIN_PROTB): Ditto.
4129 (IX86_BUILTIN_PROTW): Ditto.
4130 (IX86_BUILTIN_PROTD): Ditto.
4131 (IX86_BUILTIN_PROTQ): Ditto.
4132 (IX86_BUILTIN_PROTB_IMM): Ditto.
4133 (IX86_BUILTIN_PROTW_IMM): Ditto.
4134 (IX86_BUILTIN_PROTD_IMM): Ditto.
4135 (IX86_BUILTIN_PROTQ_IMM): Ditto.
4136 (IX86_BUILTIN_PSHLB): Ditto.
4137 (IX86_BUILTIN_PSHLW): Ditto.
4138 (IX86_BUILTIN_PSHLD): Ditto.
4139 (IX86_BUILTIN_PSHLQ): Ditto.
4140 (IX86_BUILTIN_PSHAB): Ditto.
4141 (IX86_BUILTIN_PSHAW): Ditto.
4142 (IX86_BUILTIN_PSHAD): Ditto.
4143 (IX86_BUILTIN_PSHAQ): Ditto.
4144 (IX86_BUILTIN_FRCZSS): Ditto.
4145 (IX86_BUILTIN_FRCZSD): Ditto.
4146 (IX86_BUILTIN_FRCZPS): Ditto.
4147 (IX86_BUILTIN_FRCZPD): Ditto.
4148 (IX86_BUILTIN_CVTPH2PS): Ditto.
4149 (IX86_BUILTIN_CVTPS2PH): Ditto.
4150 (IX86_BUILTIN_COMEQSS): Ditto.
4151 (IX86_BUILTIN_COMNESS): Ditto.
4152 (IX86_BUILTIN_COMLTSS): Ditto.
4153 (IX86_BUILTIN_COMLESS): Ditto.
4154 (IX86_BUILTIN_COMGTSS): Ditto.
4155 (IX86_BUILTIN_COMGESS): Ditto.
4156 (IX86_BUILTIN_COMUEQSS): Ditto.
4157 (IX86_BUILTIN_COMUNESS): Ditto.
4158 (IX86_BUILTIN_COMULTSS): Ditto.
4159 (IX86_BUILTIN_COMULESS): Ditto.
4160 (IX86_BUILTIN_COMUGTSS): Ditto.
4161 (IX86_BUILTIN_COMUGESS): Ditto.
4162 (IX86_BUILTIN_COMORDSS): Ditto.
4163 (IX86_BUILTIN_COMUNORDSS): Ditto.
4164 (IX86_BUILTIN_COMFALSESS): Ditto.
4165 (IX86_BUILTIN_COMTRUESS): Ditto.
4166 (IX86_BUILTIN_COMEQSD): Ditto.
4167 (IX86_BUILTIN_COMNESD): Ditto.
4168 (IX86_BUILTIN_COMLTSD): Ditto.
4169 (IX86_BUILTIN_COMLESD): Ditto.
4170 (IX86_BUILTIN_COMGTSD): Ditto.
4171 (IX86_BUILTIN_COMGESD): Ditto.
4172 (IX86_BUILTIN_COMUEQSD): Ditto.
4173 (IX86_BUILTIN_COMUNESD): Ditto.
4174 (IX86_BUILTIN_COMULTSD): Ditto.
4175 (IX86_BUILTIN_COMULESD): Ditto.
4176 (IX86_BUILTIN_COMUGTSD): Ditto.
4177 (IX86_BUILTIN_COMUGESD): Ditto.
4178 (IX86_BUILTIN_COMORDSD): Ditto.
4179 (IX86_BUILTIN_COMUNORDSD): Ditto.
4180 (IX86_BUILTIN_COMFALSESD): Ditto.
4181 (IX86_BUILTIN_COMTRUESD): Ditto.
4182 (IX86_BUILTIN_COMEQPS): Ditto.
4183 (IX86_BUILTIN_COMNEPS): Ditto.
4184 (IX86_BUILTIN_COMLTPS): Ditto.
4185 (IX86_BUILTIN_COMLEPS): Ditto.
4186 (IX86_BUILTIN_COMGTPS): Ditto.
4187 (IX86_BUILTIN_COMGEPS): Ditto.
4188 (IX86_BUILTIN_COMUEQPS): Ditto.
4189 (IX86_BUILTIN_COMUNEPS): Ditto.
4190 (IX86_BUILTIN_COMULTPS): Ditto.
4191 (IX86_BUILTIN_COMULEPS): Ditto.
4192 (IX86_BUILTIN_COMUGTPS): Ditto.
4193 (IX86_BUILTIN_COMUGEPS): Ditto.
4194 (IX86_BUILTIN_COMORDPS): Ditto.
4195 (IX86_BUILTIN_COMUNORDPS): Ditto.
4196 (IX86_BUILTIN_COMFALSEPS): Ditto.
4197 (IX86_BUILTIN_COMTRUEPS): Ditto.
4198 (IX86_BUILTIN_COMEQPD): Ditto.
4199 (IX86_BUILTIN_COMNEPD): Ditto.
4200 (IX86_BUILTIN_COMLTPD): Ditto.
4201 (IX86_BUILTIN_COMLEPD): Ditto.
4202 (IX86_BUILTIN_COMGTPD): Ditto.
4203 (IX86_BUILTIN_COMGEPD): Ditto.
4204 (IX86_BUILTIN_COMUEQPD): Ditto.
4205 (IX86_BUILTIN_COMUNEPD): Ditto.
4206 (IX86_BUILTIN_COMULTPD): Ditto.
4207 (IX86_BUILTIN_COMULEPD): Ditto.
4208 (IX86_BUILTIN_COMUGTPD): Ditto.
4209 (IX86_BUILTIN_COMUGEPD): Ditto.
4210 (IX86_BUILTIN_COMORDPD): Ditto.
4211 (IX86_BUILTIN_COMUNORDPD): Ditto.
4212 (IX86_BUILTIN_COMFALSEPD): Ditto.
4213 (IX86_BUILTIN_COMTRUEPD): Ditto.
4214 (IX86_BUILTIN_PCOMEQUB): Ditto.
4215 (IX86_BUILTIN_PCOMNEUB): Ditto.
4216 (IX86_BUILTIN_PCOMLTUB): Ditto.
4217 (IX86_BUILTIN_PCOMLEUB): Ditto.
4218 (IX86_BUILTIN_PCOMGTUB): Ditto.
4219 (IX86_BUILTIN_PCOMGEUB): Ditto.
4220 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
4221 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
4222 (IX86_BUILTIN_PCOMEQUW): Ditto.
4223 (IX86_BUILTIN_PCOMNEUW): Ditto.
4224 (IX86_BUILTIN_PCOMLTUW): Ditto.
4225 (IX86_BUILTIN_PCOMLEUW): Ditto.
4226 (IX86_BUILTIN_PCOMGTUW): Ditto.
4227 (IX86_BUILTIN_PCOMGEUW): Ditto.
4228 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
4229 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
4230 (IX86_BUILTIN_PCOMEQUD): Ditto.
4231 (IX86_BUILTIN_PCOMNEUD): Ditto.
4232 (IX86_BUILTIN_PCOMLTUD): Ditto.
4233 (IX86_BUILTIN_PCOMLEUD): Ditto.
4234 (IX86_BUILTIN_PCOMGTUD): Ditto.
4235 (IX86_BUILTIN_PCOMGEUD): Ditto.
4236 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
4237 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
4238 (IX86_BUILTIN_PCOMEQUQ): Ditto.
4239 (IX86_BUILTIN_PCOMNEUQ): Ditto.
4240 (IX86_BUILTIN_PCOMLTUQ): Ditto.
4241 (IX86_BUILTIN_PCOMLEUQ): Ditto.
4242 (IX86_BUILTIN_PCOMGTUQ): Ditto.
4243 (IX86_BUILTIN_PCOMGEUQ): Ditto.
4244 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
4245 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
4246 (IX86_BUILTIN_PCOMEQB): Ditto.
4247 (IX86_BUILTIN_PCOMNEB): Ditto.
4248 (IX86_BUILTIN_PCOMLTB): Ditto.
4249 (IX86_BUILTIN_PCOMLEB): Ditto.
4250 (IX86_BUILTIN_PCOMGTB): Ditto.
4251 (IX86_BUILTIN_PCOMGEB): Ditto.
4252 (IX86_BUILTIN_PCOMFALSEB): Ditto.
4253 (IX86_BUILTIN_PCOMTRUEB): Ditto.
4254 (IX86_BUILTIN_PCOMEQW): Ditto.
4255 (IX86_BUILTIN_PCOMNEW): Ditto.
4256 (IX86_BUILTIN_PCOMLTW): Ditto.
4257 (IX86_BUILTIN_PCOMLEW): Ditto.
4258 (IX86_BUILTIN_PCOMGTW): Ditto.
4259 (IX86_BUILTIN_PCOMGEW): Ditto.
4260 (IX86_BUILTIN_PCOMFALSEW): Ditto.
4261 (IX86_BUILTIN_PCOMTRUEW): Ditto.
4262 (IX86_BUILTIN_PCOMEQD): Ditto.
4263 (IX86_BUILTIN_PCOMNED): Ditto.
4264 (IX86_BUILTIN_PCOMLTD): Ditto.
4265 (IX86_BUILTIN_PCOMLED): Ditto.
4266 (IX86_BUILTIN_PCOMGTD): Ditto.
4267 (IX86_BUILTIN_PCOMGED): Ditto.
4268 (IX86_BUILTIN_PCOMFALSED): Ditto.
4269 (IX86_BUILTIN_PCOMTRUED): Ditto.
4270 (IX86_BUILTIN_PCOMEQQ): Ditto.
4271 (IX86_BUILTIN_PCOMNEQ): Ditto.
4272 (IX86_BUILTIN_PCOMLTQ): Ditto.
4273 (IX86_BUILTIN_PCOMLEQ): Ditto.
4274 (IX86_BUILTIN_PCOMGTQ): Ditto.
4275 (IX86_BUILTIN_PCOMGEQ): Ditto.
4276 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
4277 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
4278 (enum multi_arg_type): New enum for describing the various SSE5
4279 intrinsic argument types.
4280 (bdesc_multi_arg): New table for SSE5 intrinsics.
4281 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
4282 (ix86_expand_multi_arg_builtin): New function for creating SSE5
4284 (ix86_expand_builtin): Add SSE5 intrinsic support.
4285 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
4286 operand instructions.
4287 (ix86_expand_sse5_multiple_memory): New function to split the
4288 second memory reference from SSE5 instructions.
4289 (type_has_variadic_args_p): Delete in favor of stdarg_p.
4290 (ix86_return_pops_args): Use stdarg_p to determine if the function
4291 has variable arguments.
4292 (ix86_setup_incoming_varargs): Ditto.
4293 (x86_this_parameter): Ditto.
4295 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
4297 (ix86_expand_sse5_pack): Ditto.
4298 (ix86_sse5_valid_op_p): Ditto.
4299 (ix86_expand_sse5_multiple_memory): Ditto.
4301 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
4302 constant for SSE5 support.
4303 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
4304 (UNSPEC_SSE5_TRUEFALSE): Ditto.
4305 (UNSPEC_SSE5_PERMUTE): Ditto.
4306 (UNSPEC_SSE5_ASHIFT): Ditto.
4307 (UNSPEC_SSE5_LSHIFT): Ditto.
4308 (UNSPEC_FRCZ): Ditto.
4309 (UNSPEC_CVTPH2PS): Ditto.
4310 (UNSPEC_CVTPS2PH): Ditto.
4311 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
4313 (COM_FALSE_S): Ditto.
4314 (COM_FALSE_P): Ditto.
4315 (COM_TRUE_S): Ditto.
4316 (COM_TRUE_P): Ditto.
4317 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
4318 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
4320 (memory attribute): Ditto.
4321 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4322 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
4323 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
4324 (floor<mode>2): Ditto.
4325 (ceil<mode>2): Ditto.
4326 (btrunc<mode>2): Ditto.
4327 (nearbyintdf2): Ditto.
4328 (nearbyintsf2): Ditto.
4329 (sse_setccsf): Disable if SSE5.
4330 (sse_setccdf): Ditto.
4331 (sse5_setcc<mode>): New support for SSE5 conditional move.
4332 (sse5_pcmov_<mode>): Ditto.
4334 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
4336 (SSEMODEF2P): Ditto.
4337 (ssemodesuffixf4): New mode attribute for SSE5.
4338 (ssemodesuffixf2s): Ditto.
4339 (ssemodesuffixf2c): Ditto.
4340 (sserotatemax): Ditto.
4341 (ssescalarmode): Ditto.
4342 (sse_maskcmpv4sf3): Disable if SSE5.
4343 (sse_maskcmpv2df3): Ditto.
4344 (sse_vmmaskcmpv4sf3): Ditto.
4345 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
4346 (sse5_vmfmadd<mode>4): Ditto.
4347 (sse5_fmsub<mode>4): Ditto.
4348 (sse5_vmfmsub<mode>4): Ditto.
4349 (sse5_fnmadd<mode>4): Ditto.
4350 (sse5_vmfnmadd<mode>4): Ditto.
4351 (sse5_fnmsub<mode>4): Ditto.
4352 (sse5_vmfnmsub<mode>4): Ditto.
4353 (sse5i_fmadd<mode>4): Ditto.
4354 (sse5i_fmsub<mode>4): Ditto.
4355 (sse5i_fnmadd<mode>4): Ditto.
4356 (sse5i_fnmsub<mode>4): Ditto.
4357 (sse5i_vmfmadd<mode>4): Ditto.
4358 (sse5i_vmfmsub<mode>4): Ditto.
4359 (sse5i_vmfnmadd<mode>4): Ditto.
4360 (sse5i_vmfnmsub<mode>4): Ditto.
4361 (mulv16qi3): Add SSE5 support.
4363 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
4364 (sse2_mulv4si3): Disable if SSE5.
4365 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
4366 (sse4_1_roundps): Ditto.
4367 (sse4_1_roundsd): Ditto.
4368 (sse4_1_roundss): Ditto.
4369 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
4371 (sse_maskcmpsf3): Ditto.
4372 (sse_vmmaskcmpv4sf3): Ditto.
4373 (sse2_maskcmpv2df3): Ditto.
4374 (sse2_maskcmpdf3): Ditto.
4375 (sse2_vmmaskcmpv2df3): Ditto.
4376 (sse2_eq<mode>3): Ditto.
4377 (sse2_gt<mode>3): Ditto.
4378 (sse5_pcmov_<mode>): Add SSE5 support.
4379 (vec_unpacku_hi_v16qi): Ditto.
4380 (vec_unpacks_hi_v16qi): Ditto.
4381 (vec_unpacku_lo_v16qi): Ditto.
4382 (vec_unpacks_lo_v16qi): Ditto.
4383 (vec_unpacku_hi_v8hi): Ditto.
4384 (vec_unpacks_hi_v8hi): Ditto.
4385 (vec_unpacku_lo_v8hi): Ditto.
4386 (vec_unpacks_lo_v8hi): Ditto.
4387 (vec_unpacku_hi_v4si): Ditto.
4388 (vec_unpacks_hi_v4si): Ditto.
4389 (vec_unpacku_lo_v4si): Ditto.
4390 (vec_unpacks_lo_v4si): Ditto.
4391 (sse5_pmacsww): New SSE5 intrinsic insn.
4392 (sse5_pmacssww): Ditto.
4393 (sse5_pmacsdd): Ditto.
4394 (sse5_pmacssdd): Ditto.
4395 (sse5_pmacssdql): Ditto.
4396 (sse5_pmacssdqh): Ditto.
4397 (sse5_pmacsdqh): Ditto.
4398 (sse5_pmacsswd): Ditto.
4399 (sse5_pmacswd): Ditto.
4400 (sse5_pmadcsswd): Ditto.
4401 (sse5_pmadcswd): Ditto.
4402 (sse5_pcmov_<move>): Conditional move support on SSE5.
4403 (sse5_phaddbw): New SSE5 intrinsic insn.
4404 (sse5_phaddbd): Ditto.
4405 (sse5_phaddbq): Ditto.
4406 (sse5_phaddwd): Ditto.
4407 (sse5_phaddwq): Ditto.
4408 (sse5_phadddq): Ditto.
4409 (sse5_phaddubw): Ditto.
4410 (sse5_phaddubd): Ditto.
4411 (sse5_phaddubq): Ditto.
4412 (sse5_phadduwd): Ditto.
4413 (sse5_phadduwq): Ditto.
4414 (sse5_phaddudq): Ditto.
4415 (sse5_phsubbw): Ditto.
4416 (sse5_phsubwd): Ditto.
4417 (sse5_phsubdq): Ditto.
4418 (sse5_pperm): Ditto.
4419 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
4420 (sse5_pperm_zero_v16qi_v8hi): Ditto.
4421 (sse5_pperm_sign_v8hi_v4si): Ditto.
4422 (sse5_pperm_zero_v8hi_v4si): Ditto.
4423 (sse5_pperm_sign_v4si_v2di): Ditto.
4424 (sse5_pperm_sign_v4si_v2di): Ditto.
4425 (sse5_pperm_pack_v2di_v4si): Ditto.
4426 (sse5_pperm_pack_v4si_v8hi): Ditto.
4427 (sse5_pperm_pack_v8hi_v16qi): Ditto.
4428 (sse5_perm<mode>): New SSE5 intrinsic insn.
4429 (rotl<mode>3): Ditto.
4430 (sse5_rotl<mode>3): Ditto.
4431 (sse5_ashl<mode>3): Ditto.
4432 (sse5_lshl<mode>3): Ditto.
4433 (sse5_frcz<mode>2): Ditto.
4434 (sse5s_frcz<mode>2): Ditto.
4435 (sse5_cvtph2ps): Ditto.
4436 (sse5_cvtps2ph): Ditto.
4437 (sse5_vmmaskcmp<mode>3): Ditto.
4438 (sse5_com_tf<mode>3): Ditto.
4439 (sse5_maskcmp<mode>3): Ditto.
4440 (sse5_maskcmp_uns<mode>3): Ditto.
4441 (sse5_maskcmp_uns2<mode>3): Ditto.
4442 (sse5_pcom_tf<mode>3): Ditto.
4444 * config/i386/predicates.md (sse5_comparison_float_operator):
4445 New predicate to match the comparison operators supported by
4446 the SSE5 com instruction.
4447 (ix86_comparison_int_operator): New predicate to match just the
4448 signed int comparisons.
4449 (ix86_comparison_uns_operator): New predicate to match just the
4450 unsigned int comparisons.
4452 * doc/invoke.texi (-msse5): Add documentation.
4453 (-mfused-madd): Ditto.
4455 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
4457 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
4459 (x86_64-*-*): Ditto.
4461 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
4463 * config/i386/bmmintrin.h: New file, provide common x86 compiler
4464 intrinisics for SSE5.
4466 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
4469 * config/i386/mmintrin-common.h: New file, to contain common
4470 instructions between SSE4.1 and SSE5.
4472 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
4473 FOREACH_FUNCTION_ARGS to iterate over the argument list.
4474 (gen_regparm_prefix): Ditto.
4476 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
4477 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
4478 prototype_p to determine if a function is prototyped.
4480 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
4482 * c-common.c (c_common_reswords) add the alignof keyword,
4483 with same RID as __alignof and __alignof__
4485 2009-08-25 Anatoly Sokolov <aesok@post.ru>
4487 * hooks.h (hook_bool_const_int_const_int_true): Declare.
4488 * hooks.c (hook_bool_const_int_const_int_true): New function.
4489 * target.h (struct gcc_target): Add can_eliminate field.
4490 * target-def.h (TARGET_CAN_ELIMINATE): Define.
4491 (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
4492 * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
4493 * reload1.c (update_eliminables, init_elim_table): (Ditto.).
4494 (elim_table): Revise comment.
4495 * system.h (CAN_ELIMINATE): Poison.
4496 * defaults.h (CAN_ELIMINATE): Remove.
4497 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
4499 * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
4500 * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
4502 (alpha_vms_can_eliminate): Declare as static, change return type to
4504 * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
4506 * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
4507 * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
4508 (arm_can_eliminate): New function.
4510 * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
4511 * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
4512 (avr_can_eliminate): Declare as static.
4513 * config/avr/avr-protos.h (avr_can_eliminate): Remove.
4515 * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
4516 * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
4517 (bfin_can_eliminate): New function.
4519 * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
4520 * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
4521 (crx_can_eliminate): New function.
4523 * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
4524 * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
4525 (fr30_can_eliminate): New function.
4527 * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
4528 * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
4529 (frv_can_eliminate): New function.
4531 * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
4532 * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
4533 (h8300_can_eliminate): New function.
4535 * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
4536 * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
4537 (i386_can_eliminate): Declare as static, change return type to bool.
4538 * config/i386/i386-protos.h (i386_can_eliminate): Remove.
4540 * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
4541 * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
4542 (ia64_can_eliminate): New function.
4544 * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
4545 * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
4546 (iq2000_can_eliminate): New function.
4548 * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
4549 * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
4550 (m32r_can_eliminate): New function.
4552 * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
4553 * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
4554 (m68hc11_can_eliminate): New function.
4556 * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
4557 * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
4558 (m68k_can_eliminate): New function.
4560 * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
4561 * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
4562 (mep_can_eliminate): New function.
4564 * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
4565 * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
4566 (mips_can_eliminate): New function.
4568 * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
4569 * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
4570 (rs6000_can_eliminate): New function.
4572 * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
4573 * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
4574 (s390_can_eliminate): Declare as static.
4575 * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
4577 * config/score/score.h (CAN_ELIMINATE): Remove macro.
4578 * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
4579 (score_can_eliminate): New function.
4581 * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
4582 * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
4583 (sparc_can_eliminate): Declare as static.
4584 * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
4586 * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
4587 * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
4588 (xstormy16_can_eliminate): New function.
4590 * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
4591 * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
4592 (v850_can_eliminate): New function.
4594 2009-08-25 Uros Bizjak <ubizjak@gmail.com>
4596 * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
4597 (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
4598 (*movdfcc_ext[1234]): Disable for IEEE mode.
4600 2009-08-25 Eric Botcazou <ebotcazou@adacore.com>
4602 * gimplify.c (prepare_gimple_addressable): New static function.
4603 (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
4605 (gimplify_addr_expr): Invoke it similarly on the operand instead of
4606 manually fiddling with it.
4608 2009-08-25 Michael Matz <matz@suse.de>
4610 * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
4611 * dojump.c (do_jump_by_parts_greater): Take two operands instead of
4613 (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
4614 (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
4615 (do_jump): Split out code for simple binary comparisons into ...
4616 (do_jump_1): ... this, taking the individual operands and code.
4617 Change callers to helper function above accordingly.
4618 * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
4621 2009-08-25 Michael Matz <matz@suse.de>
4623 * expr.h (struct separate_ops, sepops): New type for passing
4624 around an exploded simple expression.
4625 * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
4626 Use this structure instead of expression tree.
4627 (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
4628 expression, only its type.
4629 (expand_vec_cond_expr): Take type and individual operands instead
4631 * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
4632 expand_vec_shift_expr): Change prototype accordingly.
4633 * tree-vect-stmts.c (vectorizable_condition): Change call of
4634 expand_vec_cond_expr_p to pass only type.
4635 * expr.c (do_store_flags): Change prototype and implementation
4636 to take an exploded expression.
4637 (expand_expr_real_1): New local ops initialized with details
4638 of the full expression. Use it instead of full
4639 expression in calls to do_store_flags, expand_vec_cond_expr,
4640 expand_widen_pattern_expr and expand_vec_shift_expr.
4642 2009-08-25 Michael Matz <matz@suse.de>
4644 * expr.c (expand_expr_real_1): New local treeop0, treeop1,
4645 treeop2 initialized with first three operands of the full expression.
4646 Substitute all TREE_OPERAND (exp, [012]) calls with them.
4648 2009-08-25 Kai Tietz <kai.tietz@onevision.com>
4650 * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
4651 (__gthread_objc_condition_allocate): Mark arguments as unused.
4652 (__gthread_objc_condition_deallocate): Likewise.
4653 (__gthread_objc_condition_wait): Likewise.
4654 (__gthread_objc_condition_broadcast): Likewise.
4655 (__gthread_objc_condition_signal): Likewise.
4656 (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
4657 (__gthread_objc_thread_id): Likewise.
4659 2009-08-25 Janus Weil <janus@gcc.gnu.org>
4662 * tree-pretty-print.c (print_call_name): Print the correct call name
4663 for procedure pointer components.
4665 2009-08-24 Steve Ellcey <sje@cup.hp.com>
4667 * config/ia64/ia64.c (ia64_promote_function_mode): Call
4668 default_promote_function_mode when not VMS.
4670 2009-08-24 Olivier Hainque <hainque@adacore.com>
4672 * convert.c (convert_to_integer): Don't assume an input pointer is
4673 POINTER_SIZE wide. Fetch from the type instead.
4675 2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4677 * configure.ac (AC_PREREQ): Bump to 2.64.
4679 2009-08-24 Rafael Avila de Espindola <espindola@google.com>
4681 * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
4682 (process_command): Don't search standard_exec_prefix_1 and
4683 standard_exec_prefix_2.
4685 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4687 * config/arm/arm.c (output_return_instruction): Handle for
4690 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4692 * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
4694 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4696 * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
4697 (*arm_movdf_vfp): Likewise.
4699 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4701 * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
4702 (vashr<mode>3): Rename from ashr<mode>3.
4703 (vlshr<mode>3): Rename from lshr<mode>3.
4705 2009-08-24 Kai Tietz <kai.tietz@onevision.com>
4708 * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
4709 (check_format_info_main): Use scalar_identify_flag.
4710 (check_format_types): Check for scalar size identity if
4711 scalar_identify_flag is set.
4712 (printf_length_specs): Extend by new field.
4713 (asm_fprintf_length_specs): Likewise.
4714 (gcc_diag_length_specs): Likewise.
4715 (scanf_length_specs): Likewise.
4716 (strfmon_length_specs): Likewise.
4717 (gcc_gfc_length_specs): Likewise.
4718 * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
4719 (ms_printf_flag_specs): Likewise.
4720 * c-format.h (format_length_info): Add new member scalar_identity_flag.
4722 2009-08-23 Uros Bizjak <ubizjak@gmail.com>
4725 * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
4726 (*call_value_pop_1): Ditto.
4727 (*sibcall_pop_1): New insn pattern.
4728 (*sibcall_value_pop_1): Ditto.
4730 2009-08-23 Alan Modra <amodra@bigpond.net.au>
4733 * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
4736 2009-08-23 Alan Modra <amodra@bigpond.net.au>
4739 * fwprop.c (try_fwprop_subst): Allow multiple sets.
4740 (get_reg_use_in): New function.
4741 (forward_propagate_subreg): Propagate through subreg of zero_extend
4744 2009-08-22 Kaz Kojima <kkojima@gcc.gnu.org>
4746 * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
4747 * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
4749 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
4751 * configure.ac: Remove --with-datarootdir, --with-docdir,
4752 --with-htmldir switches. No need to call AC_SUBST for
4753 datarootdir, docdir, htmldir any more.
4754 * configure: Regenerate.
4755 * doc/install.texi (Configuration): Document --datarootdir,
4756 --docdir, --htmldir, --pdfdir; update documentation for
4757 --infodir, --mandir.
4758 (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
4761 * aclocal.m4: Regenerate.
4762 * config.in: Regenerate.
4763 * configure: Regenerate.
4765 2009-08-21 Douglas B Rupp <rupp@gnat.com>
4766 Olivier Hainque <hainque@adacore.com>
4768 * config/ia64/ia64.c: Include libfuncs.h.
4769 (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
4770 (ia64_expand_call): Use reg 25 on VMS.
4771 (ia64_initialize_trampoline): Fix for VMS ABI.
4772 (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
4773 (ia64_function_arg): Initialize reg 25 on VMS.
4774 Fix OpenVMS ABI issues for varargs.
4775 For OpenVMS, emit the Argument Information register set in the
4776 incoming/sibcall case as well.
4777 (ia64_arg_type): New function.
4778 (ia64_function_arg_advance): Keep track of cum->words.
4779 Fix OpenVMS ABI issues for varargs.
4780 (ia64_function_value): On VMS, promote mode of non-aggregate types.
4781 (ia64_override_options): Set flag_no_common on VMS.
4782 (ia64_init_builtins): Disable FWRITE builtin.
4783 (ia64_asm_output_external): Call DO_CRTL_NAMES.
4784 (ia64_vms_init_libfuncs): Add decc$ routines.
4785 (ia64_vms_valid_pointer_mode): New function.
4786 (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
4787 (ia64_promote_function_mode): New function
4788 * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
4789 (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
4790 (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
4791 (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
4792 (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
4793 (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
4794 Suppress trailing '#' if VALUE is numeric.
4795 * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
4796 ia64_promote_function_mode.
4797 (TARGET_VALID_POINTER_MODE): Define.
4799 2009-08-21 Michael Meissner <meissner@linux.vnet.ibm.com>
4802 * config/rs6000/rs6000.c (rs6000_override_options): Use
4803 TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
4806 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
4807 reporting of vector + decimal/boolean/complex error.
4809 2009-08-21 Jakub Jelinek <jakub@redhat.com>
4811 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
4812 __vector double TYPE_DECL.
4814 2009-08-21 Richard Earnshaw <rearnsha@arm.com>
4816 * arm.h (MACHMODE): New define. Include insn-modes.h if available.
4817 (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
4818 * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
4819 to pointer to enum machine_mode. Update all callers as needed.
4821 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
4823 * config/alpha/alpha.md (exception_receiver): Emit alternative
4824 GP load sequence if flag_reorder_blocks_and_partition is set.
4825 (*exception_receiver_2): Also enable when
4826 flag_reorder_blocks_and_partition is set.
4828 2009-08-20 Matt Rice <ratmice@gmail.com>
4829 Diego Novillo <dnovillo@google.com>
4831 * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
4834 2009-08-20 Richard Guenther <rguenther@suse.de>
4836 * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
4837 * c-tree.h (c_dup_lang_specific_decl): Remove.
4838 (struct lang_decl, struct lang_type): Move definitions ...
4839 * c-lang.h: ... here. New file.
4840 * c-decl.c: Include c-lang.h.
4841 (c_dup_lang_specific_decl): Remove.
4842 * c-typeck.c: Include c-lang.h.
4843 * Makefile.in (c-decl.o): Add c-lang.h dependency.
4844 (c-typeck.o): Likewise.
4845 * c-config-lang.in (gtfiles): Add c-lang.h.
4846 * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
4849 2009-08-20 Uros Bizjak <ubizjak@gmail.com>
4851 * config/alpha/alpha.c (alpha_end_function): Do not clear
4852 crtl->emit structure and free insn locators if cfun->is_thunk is true,
4853 this is now handled in generic code.
4855 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
4857 * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
4858 (s390_z10_fix_long_loop_prediction): New function.
4859 (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
4860 (s390_reorg): Walk over the INSNs and invoke
4861 s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
4863 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
4865 * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
4866 "*brx_64bit", "*brx_31bit"): New patterns.
4867 * config/s390/s390.c ('E'): New output modifier.
4869 2009-08-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4870 Richard Earnshaw <richard.earnshaw@arm.com>
4872 * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
4873 * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
4875 2009-08-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
4877 * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
4879 * pa.c (emit_move_sequence): Check if address of operand1 is valid
4880 for mode mode of operand0 when doing secondary reload for SAR.
4882 2009-08-19 Jakub Jelinek <jakub@redhat.com>
4885 * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
4886 of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
4888 2009-08-19 Jason Merrill <jason@redhat.com>
4890 * doc/invoke.texi (C++ Dialect Options): Note change of minimum
4891 supported template depth in C++0x.
4893 2009-08-19 Jakub Jelinek <jakub@redhat.com>
4895 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
4896 free_after_compilation.
4897 * config/score/score7.c (score7_output_mi_thunk): Likewise.
4898 * config/score/score3.c (score3_output_mi_thunk): Likewise.
4899 * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
4900 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
4901 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
4902 * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
4903 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4905 2009-08-19 Ian Lance Taylor <iant@google.com>
4907 * doc/md.texi (Insn Canonicalizations): Correct canonicalization
4908 of (plus (mult (neg B) C) A).
4910 2009-08-18 Michael Matz <matz@suse.de>
4912 * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
4913 instead of comparing TYPE_MAIN_VARIANT for equality.
4914 * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
4915 vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
4916 * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
4917 * gimplify.c (goa_lhs_expr_p): Ditto and use
4918 STRIP_USELESS_TYPE_CONVERSION.
4920 2009-08-18 Michael Matz <matz@suse.de>
4922 * tree-ssa-structalias.c (create_variable_info_for): Also mark
4923 first field in a struct.
4924 (intra_create_variable_infos): Don't deal with flag_argument_noalias.
4926 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
4928 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4929 locators before emit_insn is called. Remove assert that
4931 (alpha_end_function): Clear crtl->emit structure and free insn
4932 locators if cfun->is_thunk is true.
4934 2009-08-18 Jason Merrill <jason@redhat.com>
4936 * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
4938 * configure.ac: Test for it.
4939 * configure, config.in: Regenerate.
4940 * doc/install.texi: Document --enable-gnu-unique-object.
4942 2009-08-18 Richard Guenther <rguenther@suse.de>
4945 * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
4946 pow(x,y*z) only if x is nonnegative.
4948 2009-08-18 Jakub Jelinek <jakub@redhat.com>
4950 * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
4954 * config/rs6000/rs6000.c (rs6000_legitimize_address): For
4955 [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
4957 2009-08-17 DJ Delorie <dj@redhat.com>
4959 * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
4960 * config/m32c/prologue.md (epilogue_freit): New.
4962 * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
4963 (bank_switch_p): Likewise.
4964 (fast_interrupt_p): Likewise.
4965 (interrupt_p): Likewise.
4966 (m32c_conditional_register_usage): Round memregs size up.
4967 (need_to_save): We only need to save $a0 when we use ENTER.
4968 (interrupt_p): Check for fast_interrupt too.
4969 (bank_switch_p): New.
4970 (fast_interrupt_p): New.
4971 (m32c_attribute_table): Add bank_switch and fast_interrupt.
4972 (m32c_emit_prolog): Support bank switching and fast interrupts.
4973 * doc/extend.texi (Function Attributes): Add bank_switch and
4976 2009-08-17 Douglas B Rupp <rupp@gnat.com>
4978 * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
4979 * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
4981 2009-08-16 Douglas B Rupp <rupp@gnat.com>
4983 * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
4984 (menu): Add IA-64/VMS Options.
4985 (IA-64/VMS Options): Likewise.
4987 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
4990 * config/mips/mips.md (*lwxs): Use :P for pointer values.
4992 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
4994 * config/mips/mips-protos.h (mips_push_asm_switch): New function.
4995 (mips_pop_asm_switch): Likewise.
4996 * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
4998 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
4999 (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
5000 (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
5001 (mips_print_operand_punctuation): Use them. Check mips_noreorder
5002 instead of set_noreorder.
5003 (mips_output_function_prologue): Use the new functions.
5004 (mips_output_function_epilogue): Likewise.
5005 (mips_need_noat_wrapper_p): New function, split out from...
5006 (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
5007 Use mips_push_asm_switch and mips_pop_asm_switch.
5008 * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
5009 and mips_pop_asm_switch.
5010 (ASM_OUTPUT_REG_POP): Likewise.
5011 (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
5012 Use mips_pop_asm_switch.
5013 (mips_asm_switch): New structure.
5014 (set_noreorder, set_nomacro): Replace with...
5015 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
5016 * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
5017 instead of set_nomacro.
5018 (fix_truncsfsi2_macro): Likewise.
5019 (cprestore): Likewise.
5020 (hazard): Use mips_noreorder instead of set_noreorder.
5021 * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
5023 2009-08-16 Uros Bizjak <ubizjak@gmail.com>
5025 * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
5026 from prev_active_insn.
5028 2009-08-16 Anatoly Sokolov <aesok@post.ru>
5030 * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
5031 * config/avr/avr.c (avr_override_options): Initialize
5032 avr_current_arch variable.
5033 (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
5034 __AVR_HAVE_16BIT_SP__ according to the device type.
5035 (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
5037 (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
5038 Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
5040 2009-08-16 Dodji Seketeli <dodji@redhat.com>
5043 * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
5044 generating inlined subroutine die only. We shouldn't be
5045 called for anything else.
5046 (gen_block_die): Don't generate inline subroutine debug info for
5049 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
5051 * graphite-poly.c (print_pbb): Print PBB index.
5053 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
5056 * graphite-interchange.c (ppl_max_for_le): Moved...
5057 * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
5058 * graphite-ppl.c (ppl_max_for_le): ... here. Correct the use of
5059 ppl_Pointset_Powerset_C_Polyhedron_maximize.
5060 * graphite-ppl.h (ppl_max_for_le): Declared.
5062 2009-08-14 Olatunji Ruwase <tjruwase@google.com>
5064 * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
5065 supported on all platforms.
5066 * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
5067 * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
5068 * c-pragma.c: Likewise.
5069 * target-def.h (TARGET_INITIALIZER): Remove
5070 TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5071 * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
5073 2009-08-14 Douglas B Rupp <rupp@gnat.com>
5075 * config/ia64/fde-vms.c: New file.
5076 * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
5077 * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
5078 (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
5079 (uw_frame_state_for): Only register a personality routine if it is
5080 known to be compatible with our expectations.
5081 (_Unwind_FindEnclosingFunction, uw_frame_state_for):
5082 Declare unw_table_entry stack variable and
5083 mod all calls to _Unwind_FindTableEntry to add arg.
5084 * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
5085 (_Unwind_FindTableEntry): Add arg to prototype.
5087 2009-08-14 Eric Botcazou <ebotcazou@adacore.com>
5089 * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
5090 field 'signal_pfs_loc'.
5091 (uw_frame_state_for): Remove duplicate code dealing with leaf
5092 procedures without unwind info.
5093 If in the frame after unwinding through a signal handler, restore
5094 the AR.PFS register instead of the CFM if AR.PFS has not been saved.
5095 * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
5096 'pfs_loc' to the AR.PFS location in the signal context; instead
5097 set 'signal_pfs_loc'.
5098 Manually generate the unwind info for the AR.PFS register.
5099 (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
5100 ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
5101 (ia64_handle_unwabi): Test 'fs->unwabi' against them.
5102 Do not set 'pfs_loc' to the AR.PFS location in the signal context;
5103 instead set 'signal_pfs_loc'.
5104 Remove code preventing the AR.PFS register from being restored
5105 from the signal context.
5107 2009-08-14 Douglas B Rupp <rupp@gnat.com>
5108 Tristan Gingold <gingold@adacore.com>
5110 * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
5111 * config/ia64/t-vms: New file.
5112 * config/ia64/vms64.h: New file.
5113 * config/ia64/vms.h: New file.
5114 * config/ia64/vms-crtinit.asm: New file.
5115 * config/ia64/vms_symvec_libgcc_s.opt: New file.
5116 * config/ia64/vms-unwind.h: New file.
5118 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
5120 * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
5123 2009-08-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5126 * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
5128 * real.h (do_mpc_arg2): ... here.
5129 * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
5132 2009-08-14 Rafael Avila de Espindola <espindola@google.com>
5134 * final.c (add_debug_prefix_map): Don't use GC memory for
5135 old_prefix and new_prefix.
5137 2009-08-14 Richard Guenther <rguenther@suse.de>
5139 * ipa-prop.c (compute_complex_pass_through): If we cannot
5140 compute a non-varying offset for IPA_JF_ANCESTOR punt.
5142 2009-08-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
5144 * c-lex.c (c_lex_with_flags): Increase size of local variable
5145 to avoid memory clobber.
5147 2009-08-14 Paolo Bonzini <bonzini@gnu.org>
5150 * config/i386/i386.c (ix86_fp_comparison_strategy):
5151 Only enable/disable sahf at function granularity.
5153 2009-08-14 Hans-Peter Nilsson <hp@axis.com>
5155 PR rtl-optimization/41064
5156 * reload1.c (reload_as_needed): Don't call extract_insn
5157 for known invalid replacements after calling
5158 validate_replace_rtx_group and verify_changes.
5160 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
5163 * config/i386/sse.md (SSEMODE124C8): New mode iterator.
5164 (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
5165 ix86_expand_fp_vcond.
5166 (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
5167 Assert that operation is supported by ix86_expand_int_vcond.
5168 (vcondu<SSEMODE124C8:mode>): Ditto.
5170 2009-08-13 DJ Delorie <dj@redhat.com>
5172 * config/i386/djgpp-stdint.h: New.
5173 * config.gcc (djgpp): Use it.
5175 2009-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
5177 * config/sh/sh.c (sh_override_options): When flag_exceptions or
5178 flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
5180 2009-08-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
5182 * tree-ssa-loop-prefetch.c
5183 (prune_ref_by_group_reuse): Enhance probabilistic analysis
5184 for long-stride pruning.
5185 (compute_miss_rate): New function to compute the probability
5186 that two memory references access different cache lines.
5188 2009-08-13 Dave Korn <dave.korn.cygwin@gmail.com>
5190 * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
5192 2009-08-13 Richard Guenther <rguenther@suse.de>
5195 * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
5196 use the constant pointer type.
5197 * gimplify.c (canonicalize_addr_expr): Canonicalize independent
5198 of CV qualifiers on the target pointer type.
5199 * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
5200 conversion check before restrict check.
5202 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
5205 * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
5207 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
5209 * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
5211 2009-08-12 Richard Guenther <rguenther@suse.de>
5213 PR tree-optimization/41011
5214 * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
5215 and reference constructing.
5217 2009-08-12 Xinliang David Li <davidxl@google.com>
5219 PR tree-optimization/41012
5220 * tree-flow.h : New external interface.
5221 * gimple-low.c (check_call_arg): Change to public function.
5222 Remove argument mismatch check in lowering.
5223 * tree-inline.h (tree_can_inline_p): Interface change.
5224 * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
5226 * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
5227 Call change to tree_can_inline_p function.
5228 (cgraph_decide_inlining_incrementally): Ditto.
5230 2009-08-12 Richard Sandiford <rdsandiford@googlemail.com>
5232 PR tree-optimization/41031
5233 * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
5234 on the partition variable rather than promote_mode on the source
5235 type. Assert that the partition variable's type has the same
5236 mode as the source value's.
5238 2009-08-12 Paolo Bonzini <bonzini@gnu.org>
5240 * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
5241 for for_return == 2.
5242 * function.c (assign_parm_setup_reg): Use for_return == 2, improve
5244 * calls.c (expand_call): Fix typo.
5245 * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
5247 * stmt.c (expand_value_return): Use promote_function_mode to copy out
5249 * targhooks.c (default_promote_function_mode): Handle for_return == 2.
5250 * config/cris/cris.c (cris_promote_function_mode): Likewise.
5251 * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
5252 * config/pa/pa.c (pa_promote_function_mode): Likewise.
5254 2009-08-12 Andrew Haley <aph@redhat.com>
5256 * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
5258 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5261 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
5263 2009-08-12 Richard Guenther <rguenther@suse.de>
5265 * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
5266 * gimplify.c (gimplify_modify_expr): Do not use
5267 lang_hooks.types_compatible_p.
5268 * tree-ssa.c (useless_type_conversion_p): For aggregates
5269 just return false if the canonical types differ.
5271 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5274 * sese.c (convert_for_phi_arg): New.
5275 (add_guard_exit_phis): Use convert_for_phi_arg.
5277 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5279 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
5280 unknown subscript upper bounds.
5282 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5283 Pranav Garg <pranav.garg2107@gmail.com>
5285 * graphite-interchange.c (gather_access_strides): Removed.
5286 (ppl_max_for_le): New.
5287 (build_linearized_memory_access): New.
5288 (memory_stride_in_loop): New.
5289 (pbb_interchange_profitable_p): Reimplemented.
5290 * graphite-ppl.h (ppl_new_id_map): New.
5291 (ppl_interchange): New.
5293 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5295 * graphite-interchange.c (compute_subscript): Removed.
5296 (compute_array_size_cstr): Removed.
5297 (compute_array_size_poly): Removed.
5298 (compute_array_size): Removed.
5299 (gather_access_strides_poly): Removed.
5300 (gather_access_strides): Empty.
5302 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5304 * graphite-dependences.c (dependence_polyhedron_1): Replace
5305 pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
5306 (graphite_legal_transform_dr): Same.
5307 (graphite_carried_dependence_level_k): Same.
5308 * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
5309 Initialize PDR_NB_SUBSCRIPTS.
5310 (print_pdr_access_layout): Replace pdr_nb_subscripts with
5312 * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
5313 (PDR_NB_SUBSCRIPTS): New.
5314 (pdr_nb_subscripts): Removed.
5315 (pdr_dim): Simplified.
5316 * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
5317 with PDR_NB_SUBSCRIPTS.
5319 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5321 * graphite-interchange.c (compute_array_size): Remove use of
5323 * graphite-poly.c (new_poly_dr): Remove argument data_container.
5324 Do not initialize PDR_DATA_CONTAINER.
5325 (print_pdr): Do not print PDR_DATA_CONTAINER.
5326 * graphite-poly.h (struct poly_dr): Remove data_container field.
5327 (PDR_DATA_CONTAINER): Removed.
5328 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
5330 (build_poly_dr): Same.
5332 2009-08-12 Konrad Trifunovic <konrad.trifunovic@gmail.com>
5333 Sebastian Pop <sebastian.pop@amd.com>
5335 * graphite-dependences.c (graphite_legal_transform_dr): Work on a
5336 copy of the dependence polyhedron. Free the temporary objects.
5337 (graphite_carried_dependence_level_k): Free unused objects before
5340 * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
5341 * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
5342 * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
5343 * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
5344 * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
5346 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5348 * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
5349 Early return without analyzing the data dependences if no
5350 transform has been done. Call restore_scattering if the transform
5352 (graphite-interchange.c): Same.
5353 * graphite-poly.c (print_scattering_function): Test for
5355 (graphite_read_transforms): Initialize PBB_TRANSFORMED.
5356 (apply_poly_transforms): Do not gcc_assert that
5357 the transform is legal.
5358 (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
5359 Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
5360 PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
5361 (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
5362 * graphite-poly.h (struct poly_scattering): New.
5363 (struct poly_bb): Add original, transformed, and saved fields.
5364 Remove transformed_scattering, original_scattering,
5365 nb_local_variables and nb_scattering_transform fields.
5366 (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
5367 (poly_scattering_new): New.
5368 (poly_scattering_free): New.
5369 (poly_scattering_copy): New.
5370 (store_scattering_pbb): New.
5371 (store_scattering): New.
5372 (restore_scattering_pbb): New.
5373 (restore_scattering): New.
5374 * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
5375 Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
5377 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5379 * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
5382 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5384 * Makefile.in (graphite.o): Depends on PREDICT_H.
5385 * graphite.c: Include predict.h.
5386 (graphite_finalize): Call tree_estimate_probability.
5387 * predict.c (predict_loops): Do not call scev_initialize and
5389 (tree_estimate_probability_bb): New.
5390 (tree_estimate_probability): Do not initialize loops: move that
5391 code to the driver. Call tree_estimate_probability_bb.
5392 (tree_estimate_probability_driver): New.
5393 (pass_profile): Use tree_estimate_probability_driver.
5394 * predict.h (tree_estimate_probability): Declared.
5396 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
5398 * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
5399 * graphite-dependences.c (graphite_legal_transform): Add time to
5400 TV_GRAPHITE_DATA_DEPS.
5401 (dependency_between_pbbs_p): Same.
5402 * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
5404 2009-08-12 Andrey Belevantsev <abel@ispras.ru>
5406 PR rtl-optimization/41033
5407 * alias.c (nonoverlapping_component_refs_p): Punt when strict
5408 aliasing is disabled.
5410 2009-08-11 Adam Nemet <anemet@caviumnetworks.com>
5412 * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
5413 si_mask_operand, and_load_operand, low_bitmask_operand,
5414 and_reg_operand, and_operand): New predicates.
5415 * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
5416 * config/mips/mips.c (and_operands_ok): New function.
5417 * config/mips/mips-protos.h (and_operands_ok): Declare it.
5418 * config/mips/mips.md (move_type): Add ext_ins and logical.
5419 (type): Handle them.
5420 (and<mode>3): Use and_reg_operand as the second operand's predicate.
5421 (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
5422 shift_shift. Remove commutative constraint modifier.
5423 (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
5425 (*clear_upper32_dext): Remove define_insn_and_split.
5426 (*clear_upper32): Turn this define_insn_and_split ...
5427 (splitter for ANDing register with 0xffff_ffff): .. into this.
5429 2009-08-11 Adam Nemet <anemet@caviumnetworks.com>
5431 * combine.c (try_widen_shift_mode): Factor out code to check if an
5432 integer constant is a low-order bitmask from here ...
5433 * rtlanal.c (low_bitmask_len): ... to here.
5434 * rtl.h (low_bitmask_len): Declare.
5436 2009-08-11 Uros Bizjak <ubizjak@gmail.com>
5439 * config/alpha/alpha.md (addsi3): Remove expander.
5440 (addsi3): Rename from *addsi3_internal insn pattern.
5441 (subsi3): Remove expander.
5442 (subsi3): Rename from *subsi3_internal insn pattern.
5444 2009-08-11 Douglas B Rupp <rupp@gnat.com>
5446 * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
5449 2009-08-11 Vasiliy Fofanov <fofanov@adacore.com>
5450 Eric Botcazou <botcazou@adacore.com>
5451 Douglas B Rupp <rupp@gnat.com>
5453 * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
5454 that records that fit in 64 bits are returned by immediate value,
5455 as required by OpenVMS Calling Standard.
5456 (function_value): Adjust for above modification.
5457 (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
5458 virtual_incoming_args_rtx as base object, not next_arg.
5459 * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
5461 2009-08-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
5463 * reload.c (find_reloads_subreg_address): Check the original
5464 req_equiv_mem address to detect the case where an address is
5465 not valid in the outer mode.
5467 2009-08-11 Richard Guenther <rguenther@suse.de>
5470 * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
5472 2009-08-10 Douglas B Rupp <rupp@gnat.com>
5474 * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
5475 (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
5477 2009-08-10 Olivier Hainque <hainqueu@adacore.com>
5478 Douglas B Rupp <rupp@gnat.com>
5480 * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
5481 PT_STACK when frame_pointer_needed on OpenVMS.
5482 (alpha_pv_save_size, alpha_using_fp): Remove.
5483 (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
5484 with proper processing for PT_NULL.
5485 (alpha_vms_initial_elimination_offset): New function. Support for
5486 INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
5487 (alpha_sa_size): Force procedure type to PT_STACK when
5488 frame_pointer_needed on OpenVMS.
5489 * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
5490 (alpha_using_fp): Likewise.
5491 (alpha_vms_can_eliminate): Add prototype.
5492 (alpha_vms_initial_elimination_offset): Likewise.
5493 * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
5494 Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
5496 2009-08-10 Eric Botcazou <botcazou@adacore.com>
5497 Douglas B Rupp <rupp@gnat.com>
5499 * config/alpha/alpha.c (common_object_handler): New function.
5500 (vms_attribute_table): Declare a single attribute "common_object".
5501 (vms_output_aligned_decl_common): New global function.
5502 (SECTION_VMS_OVERLAY): Delete.
5503 (SECTION_VMS_GLOBAL): Likewise.
5504 (SECTION_VMS_INITIALIZE): Likewise.
5505 (vms_asm_named_section): Remove support for above flags.
5506 (vms_section_type_flags): Delete.
5507 (TARGET_SECTION_TYPE_FLAGS): Likewise.
5508 * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
5509 * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
5510 (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
5512 2009-08-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
5515 * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
5516 (sub_ddmmss): Likewise.
5518 2009-08-10 Andreas Tobler <a.tobler@schweiz.org>
5521 * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
5524 2009-08-10 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
5527 * reload1.c (reload_as_needed): Use cancel_changes to completely
5528 undo a failed replacement attempt.
5530 2009-08-10 Richard Guenther <rguenther@suse.de>
5533 * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
5534 (useless_type_conversion_p): ... here. Require pointer targets
5537 2009-08-10 Dodji Seketeli <dodji@redhat.com>
5540 * tree-inline.c (copy_statement_list): The resulting copy shouldn't
5541 loose the original type of the statement list.
5543 2009-08-09 Douglas B Rupp <rupp@gnat.com>
5545 * config/alpha/alpha.c: Include libfuncs.h
5546 (avms_asm_output_extern): New function.
5547 (alpha_init_libfuncs): Init some decc libfuncs.
5548 * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
5549 * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
5550 (DO_CRTL_NAMES): Define.
5552 * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
5553 (LONG_TYPE_SIZE): Define.
5554 (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
5555 (SUBTARGET_SWITCHES): Define malloc64 switch.
5556 (TARGET_DEFAULT): Default MASK_MALLOC64 set.
5557 (MASK_RETURN_ADDR): Define.
5558 doc/invoke.texi (mmalloc64): Document switch.
5560 2009-08-09 Olivier Hainque <hainque@adacore.com>
5561 Douglas B Rupp <rupp@gnat.com>
5563 * config/alpha/alpha.c (struct machine_function): New flag for VMS,
5564 uses_condition_handler.
5565 (alpha_expand_builtin_establish_vms_condition_handler): New expander.
5566 (alpha_expand_builtin_revert_vms_condition_handler): New expander.
5567 (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
5568 and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
5569 (code_for_builtin): New insn codes for the new alpha_builtins.
5570 (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
5571 (alpha_sa_size): Account for uses_condition_handler.
5572 (alpha_expand_prologue): Likewise.
5573 (alpha_start_function): Likewise.
5574 (alpha_expand_epilogue): Likewise.
5575 * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
5576 establish/revert expanders.
5577 * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
5578 * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
5579 New expander, resorting to the alpha.c associated function.
5580 (builtin_revert_vms_condition_handler): Likewise.
5581 * config/alpha/vms-gcc_shell_handler.c: New file. Implements
5582 __gcc_shell_handler, the static VMS condition handler used as
5583 an indirection wrapper to the current dynamically established
5585 * config/alpha/vms-unwind.h: Complete rewrite.
5586 * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
5587 * config/alpha/vms.h (MD_UNWIND_SUPPORT):
5589 2009-08-09 Eric Botcazou <botcazou@adacore.com>
5590 Douglas B Rupp <rupp@gnat.com>
5592 * config/alpha/alpha.c (alpha_links): Add 'target' field.
5593 (alpha_need_linkage): Handle aliases. Return function symbol.
5594 (alpha_use_linkage): Rename 'linkage' argument to 'func'.
5595 Use ultimate alias target for the linkage name.
5596 * config/alpha/alpha.md (movmemdi): Use the symbol returned
5597 by alpha_need_linkage for the function symbol.
5598 (setmemdi): Likewise.
5600 2009-08-09 Douglas B Rupp <rupp@gnat.com>
5602 * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
5603 * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
5604 (ASM_WEAKEN_LABEL): Define.
5605 (CRT_CALL_STATIC_FUNCTION): Define.
5606 (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
5607 (ENDFILE_SPEC): Define.
5608 (INIT_SECTION_ASM_OP): Define.
5609 * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
5610 * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
5612 (MULTILIB_OSDIRNAMES): Define.
5613 (shlib_version): Define.
5614 (SHLIB_EXT): Define.
5615 (SHLIB_OBJS): Define.
5616 (SHLIB_NAME): Define.
5617 (SHLIB_MULTILIB): Define.
5618 (SHLIB_INSTALL): Define.
5619 (SHLIB_SYMVEC): Define.
5620 (SHLIB_SYMVECX2): Define.
5621 (SHLIB_LINK): Define.
5623 2009-08-09 Douglas B Rupp <rupp@gnat.com>
5625 * config/alpha/alpha.c (alpha_initialize_trampoline):
5626 Initialize VMS trampoline IAW ABI for bounded procedure calls.
5627 (alpha_start_function): Emit transfer address on nested functions
5628 for VMS trampoline call.
5629 * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
5630 since no longer used.
5631 * config/alpha/vms-tramp.asm: Remove.
5632 * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
5633 since now only data initialized at runtime.
5635 2009-08-09 Douglas B Rupp <rupp@gnat.com>
5637 * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
5638 (LINK_GCC_C_SEQUENCE_SPEC): Define.
5639 (MD_EXEC_PREFIX): Remove, no longer used.
5640 (MD_STARTFILE_PREFIX): Likewise.
5641 (INCLUDE_DEFAULTS): Likewise.
5642 * config/alpha/t-vms:
5643 (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
5645 2009-08-09 Richard Guenther <rguenther@suse.de>
5647 PR tree-optimization/41016
5648 * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
5649 (operand_precision): Remove.
5650 (integral_operand_p): Likewise.
5651 (recognize_single_bit_test): Adjust.
5653 2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
5655 * c-common.c (c_fully_fold_internal): Issue a warning if a binary
5656 operation overflows. Likewise non-cast unary arithmetic.
5657 If one arm of a conditional expression is always taken,
5658 inhibit evaluation warnings for the other arm. Likewise inhibit
5659 evaluation warnings for the second && or || operand if the first
5660 operand is enough to determine the result.
5661 * c-typeck.c (build_conditional_expr): Apply the same inhibition
5663 (build_binary_op): Prevent duplicate evaluation warnings.
5665 2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
5667 * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
5668 and destination have different modes, Use promote_mode to
5669 determine the signedness of the conversion. Assert that the
5670 promoted source mode matches the destination mode. Don't pass
5671 the destination and destination mode to expand_expr if the source
5672 mode is different. Simplify conversion logic.
5674 2009-08-09 Ira Rosen <irar@il.ibm.com>
5676 PR tree-optimization/41008
5677 * tree-vect-loop.c (vect_is_simple_reduction): Get operands
5678 from condition only in case it's a comparison. Adjust checks.
5680 2009-08-09 Bernd Schmidt <bernd.schmidt@analog.com>
5682 * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
5683 * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
5684 * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
5685 (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
5686 (dump_cand): Handle them.
5687 (struct iv_cand): New members COST_STEP and AINC_USE.
5688 (stmt_after_increment): Likewise.
5689 (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos. All
5690 callers changed. Use gimple_uid comparison instead of scanning.
5691 (add_candidate_1): When looking for identical candidates, take
5692 AINC_USE into account. Set it for new candidates.
5693 (force_expr_to_var_cost): Cast target_spill_cost to int.
5694 (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
5695 All callers changed. Check for availability of autoinc addressing
5696 modes, both in general for a given mode, and in the specific use case.
5697 (get_computation_cost_at): New argument CAN_AUTOINC. All callers
5699 (get_computation_cost): Likewise.
5700 (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
5701 add_autoinc_candidates): New static functions.
5702 (add_candidate): Call add_autoinc_candidates for candidates based on
5704 (find_iv_candidates): Call set_autoinc_for_original_candidates.
5705 (determine_use_iv_cost_address): If we have an autoinc candidate at
5706 the matching use, verify autoinc is possible and subtract the cost
5707 of the candidate's step from the cost.
5708 (determine_iv_cost): Record the cost of the increment in the COST_STEP
5709 member of the candidate.
5710 (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
5711 determine_use_iv_costs. Call renumber_gimple_stmt_uids_in_blocks.
5713 2009-08-09 Douglas B Rupp <rupp@gnat.com>
5715 * config.build (ia64-hp-*vms*): New target.
5716 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5718 * config.gcc (ia64-hp-*vms*): New target.
5719 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5721 * config.host (ia64-hp-*vms*): New target.
5722 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
5725 2009-08-08 Richard Guenther <rguenther@suse.de>
5727 PR tree-optimization/40991
5728 * tree-ssa-pre.c (eliminate): Delay purging EH edges.
5730 2009-08-08 Richard Sandiford <rdsandiford@googlemail.com>
5732 * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
5733 mode check. Do truncations in an integer mode.
5734 (force_to_mode): Handle subregs for all mode types. Only do
5735 arithmetic simplifications on integer modes.
5737 2009-08-07 Richard Guenther <rguenther@suse.de>
5739 PR tree-optimization/40999
5740 * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
5741 (maybe_fold_reference): Lookup constant initializers.
5742 (fold_gimple_assign): Likewise.
5744 2009-08-07 Richard Guenther <rguenther@suse.de>
5746 * tree-ssa.c (useless_type_conversion_p_1): Only for types
5747 that require structural equality defer to the langhook.
5749 2009-08-07 Martin Jambor <mjambor@suse.cz>
5751 * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
5753 (struct ipa_pass_through_data): New type.
5754 (struct ipa_ancestor_jf_data): New type.
5755 (union jump_func_value): Removed field formal_id, added fields
5756 pass_through and ancestor.
5757 (struct ipa_param_call_note): Changed type of formal_id to int from
5759 * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
5760 operations jump functions and ancestor jump functions.
5761 (compute_complex_pass_through): New function.
5762 (compute_scalar_jump_functions): Call compute_complex_pass_through,
5763 reflect changes in the jump function strucutre.
5764 (update_jump_functions_after_inlining): Ignore complex pass-through
5765 and ancestor jump functions.
5766 * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
5767 polynomial pass-through with operation jump functions.
5769 2009-08-07 Jakub Jelinek <jakub@redhat.com>
5771 * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
5772 fde->dw_fde_begin as begin label instead of hot/cold label.
5773 Use LLSDAC label instead of LLSDA for second section lsda.
5774 (dwarf2out_do_cfi_startproc): Add SECOND argument. Use LLSDAC
5775 label instead of LLSDA if it is true.
5776 (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
5778 * except.c (add_call_site, dw2_size_of_call_site_table): Add
5779 SECTION argument. Use it as index into crtl->eh.call_site_record
5781 (dw2_output_call_site_table): Likewise. Add CS_FORMAT argument,
5782 use it to determine how to print table entries instead of using
5783 #ifdef HAVE_AS_LEB128. For SECTION > 0 use hot resp. cold
5784 label instead of normal begin label as base.
5785 (sjlj_assign_call_site_values): Adjust add_call_site caller.
5786 (convert_to_eh_region_ranges): When doing hot/cold partitioning,
5787 ensure no EH range spans between sections and that landing pads
5788 are always in the corresponding section.
5789 (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
5790 for crtl->eh.call_site_record being an array rather than scalar.
5791 (output_one_function_exception_table): New function, copied
5792 from output_function_exception_table. Adjust
5793 dw2_size_of_call_site_table, dw2_output_call_site_table
5794 callers. For SECOND section use *C suffixed labels.
5795 (output_function_exception_table): Call
5796 output_one_function_exception_table and, when doing hot/cold
5797 partitioning, also another time for the second section.
5798 * opts.c: Include except.h.
5799 (decode_options): Allow -freorder-blocks-and-partition with
5800 exceptions, unless SJLJ or TARGET_UNWIND_INFO.
5801 * Makefile.in (opts.o): Depend on $(EXCEPT_H).
5802 * function.h (struct rtl_eh): Change call_site_record from
5803 scalar into array of 2 elements.
5805 2009-08-07 Martin Jambor <mjambor@suse.cz>
5807 * ipa-prop.c (count_formal_params_1): New function.
5808 (ipa_get_vector_of_formal_parms): New function.
5809 (get_vector_of_formal_parm_types): New function.
5810 (ipa_modify_formal_parameters): New function.
5811 (ipa_modify_call_arguments): New function.
5812 (index_in_adjustments_multiple_times_p): New function.
5813 (ipa_combine_adjustments): New function.
5814 (ipa_dump_param_adjustments): New function.
5815 * ipa-prop.h (struct ipa_parm_adjustment): New type.
5816 (ipa_get_vector_of_formal_parms): Declare.
5817 (ipa_modify_formal_parameters): Declare.
5818 (ipa_modify_call_arguments): Declare.
5819 (ipa_combine_adjustments): Declare.
5820 (ipa_dump_param_adjustments): Declare.
5821 (build_ref_for_offset): Declare.
5822 * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
5823 * tree-sra.c: Include ipa-prop.c.
5824 (build_ref_for_offset): Make public.
5826 2009-08-06 Neil Vachharajani <nvachhar@gmail.com>
5828 * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
5830 2009-08-06 Thomas Schwinge <tschwinge@gnu.org>
5832 * gcc/doc/extend.texi (__builtin_extract_return_address)
5833 (__builtin_frob_return_address): Document.
5835 2009-08-06 Paul Brook <paul@codesourcery.com>
5837 * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
5838 (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
5839 implementation on ARMv6-M.
5841 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
5843 * doc/extend.texi (pcs): Document new attribute for ARM.
5845 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
5847 * arm.c (pcs_attribute_args): Comment out unsupported attribute
5850 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
5852 * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
5855 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
5857 * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
5859 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
5861 Merge ARM/hard_vfp_branch to trunk.
5863 2009-08-04 Richard Earnshaw <rearnsha@arm.com>
5865 * arm.c (libcall_eq): New function.
5866 (libcall_hash): New function.
5867 (add_libcall): New function.
5868 (arm_libcall_uses_aapcs_base): New function.
5869 (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
5870 libcalls using the base PCS.
5871 (arm_init_cumulative_args): Likewise.
5873 2009-07-20 Joseph Myers <joseph@codesourcery.com>
5875 * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
5876 Use base ABI for conversion libfuncs between HFmode and SFmode.
5878 2009-05-12 Joseph Myers <joseph@codesourcery.com>
5880 * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
5881 V4SImode as representatives of all 64-bit and 128-bit vector
5882 types. Allow vector types without vector modes.
5883 (aapcs_vfp_is_call_or_return_candidate): Handle vector types
5884 without vector modes like BLKmode.
5885 (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
5886 BLKmode. Avoid unsupported vector modes or TImode moves for
5888 (aapcs_vfp_allocate_return_reg): Likewise.
5889 (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
5890 V8QImode if TARGET_NEON || TARGET_IWMMXT.
5892 2009-05-12 Joseph Myers <joseph@codesourcery.com>
5894 * config/arm/arm.c (arm_handle_pcs_attribute): New.
5895 (arm_get_pcs_model): Pass attribute arguments to
5896 arm_pcs_from_attribute.
5897 (arm_init_cumulative_args): Use base AAPCS for conversions from
5898 floating-point types to DImode.
5899 (arm_attribute_table): Add pcs attribute.
5900 (arm_handle_pcs_attribute): New.
5901 * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
5902 conversions from floating-point types to DImode, also declare them
5903 to use base AAPCS and declare functions they call to use base
5904 AAPCS and their RTABI names.
5906 2009-05-12 Joseph Myers <joseph@codesourcery.com>
5908 * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
5909 -mfloat-abi=hard not being supported for VFP.
5911 2009-05-11 Kazu Hirata <kazu@codesourcery.com>
5913 * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
5914 SYMBOL_REF to hard_libcall_value.
5916 2009-03-05 Joseph Myers <joseph@codesourcery.com>
5917 Richard Earnshaw <rearnsha@arm.com>
5919 * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
5920 has been put on the stack, all remaining co-processory arguments for
5921 that co-processor also go on the stack.
5923 2009-03-05 Joseph Myers <joseph@codesourcery.com>
5925 * config/arm/arm.c (arm_return_in_memory): Handle returning
5926 vectors of suitable size in registers also for AAPCS case.
5928 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
5930 * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
5932 2008-12-09 Richard Earnshaw <rearnsha@arm.com>
5934 ARM Hard-VFP calling convention
5935 * target-def.h (TARGET_LIBCALL_VALUE): New hook.
5936 * target.h (gcc_target): Add libcall_value to table of call hooks.
5937 * targhooks.h (default_libcall_value): Default implementation.
5938 * targhooks.c (default_libcall_value): Likewise.
5939 * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
5940 * optabs.c (expand_unop): Use it.
5941 * expr.h (hard_libcall_value): Pass the function RTX through.
5942 * calls.c (emit_library_call_value_1): Update call to
5944 * explow.c (hard_libcall_value): Use new target hook.
5945 * testsuite/lib/target-supports.exp
5946 (check_effective_target_arm_hard_vfp_ok): New hook.
5947 (check_effective_target_arm_neon_ok): Improve test for neon
5949 * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
5950 * config/arm/arm.c: Include cgraph.h
5951 (TARGET_FUNCTION_VALUE): Override default hook.
5952 (arm_pcs_default): New variable.
5953 (arm_override_options): Don't fault hard calling convention with VFP.
5954 Add support for AAPCS variants.
5955 (arm_function_value): Make static. Handle AAPCS variants.
5956 (arm_libcall_value): New function.
5957 (arm_apply_result_size): Handle VFP registers in results.
5958 (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
5960 (pcs_attribute_args): New variable.
5961 (arm_pcs_from_attribute): New function.
5962 (arm_get_pcs_model): New function.
5963 (aapcs_vfp_cum_init): New function.
5964 (aapcs_vfp_sub_candidate): New function.
5965 (aapcs_vfp_is_return_candidate): New function.
5966 (aapcs_vfp_is_call_candidate): New function.
5967 (aapcs_vfp_allocate): New function.
5968 (aapcs_vfp_allocate_return_reg): New function.
5969 (aapcs_vfp_advance): New function.
5970 (aapcs_cp_arg_layout): New variable.
5971 (aapcs_select_call_coproc): New function.
5972 (aapcs_select_return_coproc): New function.
5973 (aapcs_allocate_return_reg): New function.
5974 (aapcs_libcall_value): New function.
5975 (aapcs_layout_arg): New function.
5976 (arm_init_cumulative_args): Initialize AAPCS args data.
5977 (arm_function_arg): Handle AAPCS variants using new interface.
5978 (arm_arg_parital_bytes): Likewise.
5979 (arm_function_arg_advance): New function.
5980 (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
5981 calling conventions.
5982 (arm_setup_incoming_varargs): Handle new AAPCS args data.
5983 * arm.h (NUM_VFP_ARG_REGS): Define.
5984 (LIBCALL_VALUE): Update.
5985 (FUNCTION_VALUE): Delete.
5986 (FUNCTION_VALUE_REGNO_P): Add VFP regs.
5987 (arm_pcs): New enum.
5988 (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
5989 (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
5990 (FUNCTION_ARG_REGNO_P): Add VFP regs.
5991 * arm-protos.h (arm_function_arg_advance): Add.
5992 (aapcs_libcall_value): Add.
5993 (arm_function_value): Delete.
5995 2009-08-06 Uros Bizjak <ubizjak@gmail.com>
5996 H.J. Lu <hongjiu.lu@intel.com>
5999 * config/i386/i386.c (standard_sse_mode_p): Remove.
6000 (standard_sse_constant_p): Return 2 for integer mode
6001 vector_all_ones_operand when SSE2 is enabled.
6002 (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
6003 (ix86_expand_vector_move): Do not check for negative values from
6004 standard_sse_constant_p.
6006 2009-08-06 Richard Guenther <rguenther@suse.de>
6008 * tree-ssa.c (useless_type_conversion_p_1): Make function and
6009 array type comparisons frontend independent.
6010 * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
6011 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
6012 out array reference lower bound and element size operands.
6013 (ao_ref_init_from_vn_reference): Properly compute the offset
6014 for ARRAY_RANGE_REF.
6015 (vn_reference_fold_indirect): Fill out array reference lower
6016 bound and element size operands.
6017 * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
6018 a non gimple valued reference operand which can happen for
6019 array reference lower bound or element size.
6020 (create_component_ref_by_pieces_1): Properly generate the
6021 element size operand for array references.
6023 2009-08-06 Richard Guenther <rguenther@suse.de>
6025 PR tree-optimization/40964
6026 * tree.c (iterative_hash_host_wide_int): Export.
6027 * tree.h (iterative_hash_host_wide_int): Declare.
6028 * tree-ssa-structalias.c (heapvar_map): New struct.
6029 (heapvar_map_eq): New function.
6030 (heapvar_map_hash): Likewise.
6031 (heapvar_lookup): Adjust.
6032 (heapvar_insert): Likewise.
6033 (make_constraint_from_heapvar): Allow multiple heap variables
6034 per decl at different offsets.
6035 (init_alias_heapvars): Adjust.
6037 2009-08-04 David Daney <ddaney@caviumnetworks.com>
6039 * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
6040 * mips_output_sync_loop (mips_output_sync_loop): Only emit
6041 trailing sync if TARGET_SYNC_AFTER_SC.
6043 2009-08-05 David Daney <ddaney@caviumnetworks.com>
6045 * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
6046 compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
6047 sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
6048 sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
6049 sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6050 sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6051 sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6052 sync_new_nand<mode>, sync_lock_test_and_set<mode>,
6053 test_and_set_12): Rewrite calls to mips_output_sync_loop.
6054 * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
6055 the prototype declaration match the definition.
6056 * gcc/config/mips/mips.c (mips_output_sync_loop): Emit sync
6057 instructions explicitly. Add barrier_before and operands
6059 * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
6060 MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
6061 MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
6062 MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6063 MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
6064 MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
6066 2009-08-05 Andrew Pinski <pinskia@gmail.com>
6068 * tree-ssa-alias.c: Fix intervals to use [) syntax.
6070 2009-08-05 Uros Bizjak <ubizjak@gmail.com>
6071 Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
6074 * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
6077 2009-08-05 Jakub Jelinek <jakub@redhat.com>
6079 PR rtl-optimization/40924
6080 * dse.c (canon_address): Before calling cselib_expand_value_rtx
6081 make sure canon_rtx (mem_address) isn't simpler than
6082 canon_rtx (expanded_mem_address).
6084 2009-08-05 Li Feng <nemokingdom@gmail.com>
6086 * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
6088 (build_scop_drs): Build alias set for each SCoP.
6090 2009-08-04 Sandra Loosemore <sandra@codesourcery.com>
6092 * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
6093 * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
6094 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
6095 (MIPS_ARCH_FLOAT_SPEC): Likewise.
6096 (BASE_DRIVER_SELF_SPECS): Likewise.
6098 2009-08-04 Andrew Pinski <pinskia@gmail.com>
6100 * tree-ssa-alias.c: Fix some comment typos.
6102 2009-08-04 Kaz Kojima <kkojima@gcc.gnu.org>
6104 * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
6105 ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
6107 2009-08-03 Janis Johnson <janis187@us.ibm.com>
6110 * simplify-rtx.c (simplify_binary_operation_1): Disable
6111 simplifications for decimal float operations.
6113 2009-08-03 Jakub Jelinek <jakub@redhat.com>
6116 * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
6117 operand of INDIRECT_REF.
6119 2009-08-03 Uros Bizjak <ubizjak@gmail.com>
6121 * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
6122 constants referencing TLS symbols.
6124 2009-08-03 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
6126 * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
6127 __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
6129 2009-08-03 Richard Guenther <rguenther@suse.de>
6131 * tree.c (make_vector_type): Build a main variant first,
6132 get the canonical one and then build the variant.
6133 * tree-ssa.c (useless_type_conversion_p_1): Handle
6135 (useless_type_conversion_p): Conversions to pointers to
6136 incomplete record types are useless.
6138 2009-08-03 Richard Guenther <rguenther@suse.de>
6140 * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
6141 file will be created.
6142 * omp-low.c (pass_diagnose_omp_blocks): Likewise.
6143 * toplev.c (compile_file): Adjust comment.
6145 2009-08-03 Kaz Kojima <kkojima@gcc.gnu.org>
6147 * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
6148 * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
6149 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6150 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6151 (sh_promote_function_mode): Fix typo.
6153 2009-08-03 Andreas Krebbel <krebbel1@de.ibm.com>
6155 * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
6157 2009-08-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
6159 * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
6160 declaration arguments.
6162 2009-08-02 Uros Bizjak <ubizjak@gmail.com>
6164 * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
6165 of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
6166 (ix86_split_ashl): Ditto.
6167 (ix86_expand_vector_init_one_nonzero): Ditto.
6168 (ix86_expand_vector_set): Ditto.
6169 (ix86_expand_reduc_v4sf): Ditto.
6171 2009-08-02 Paolo Bonzini <bonzini@gnu.org>
6173 * explow.c (promote_function_mode): Remove assert.
6174 * config/sh/sh.c (sh_promote_function_mode): Declare.
6176 2009-08-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
6178 * config/pa/pa.c (pa_promote_function_mode): Declare.
6179 Change to static. Fix promote_mode call.
6181 * gthr-dce.h (CONST_CAST2): Define if not defined.
6182 (__gthread_setspecific): Use CONST_CAST2 to fix warning.
6184 * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
6186 2009-08-01 Paolo Bonzini <bonzini@gnu.org>
6188 * expr.c (store_constructor): Use promote_decl_mode. Remove
6189 now write-only variable unsignedp.
6190 (expand_expr_real_1): Use promote_decl_mode.
6191 * expr.h (promote_function_mode, promote_decl_mode): New.
6192 (promote_mode): Remove last argument.
6193 * function.c (assign_temp): Drop last argument of promote_mode.
6194 (assign_parm_find_data_types): Use promote_function_mode.
6195 (assign_parm_setup_reg): Likewise.
6196 (expand_function_end): Use promote_function_mode.
6197 * calls.c (initialize_argument_information): Use promote_function_mode.
6198 (precompute_arguments): Use promote_mode instead of checking if
6199 only PROMOTE_FUNCTION_MODE is defined.
6200 (expand_call): When making sibcall decisions, use promote_function_mode.
6201 Below, remove an if for targetm.calls.promote_function_return and
6202 and use promote_function_mode.
6203 (emit_library_call_value_1): Use promote_function_mode, fix bug
6204 where promote_mode was passed FOR_CALL == 0 for a return value in an
6206 * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6207 * explow.c (promote_function_mode, promote_decl_mode): New.
6208 (promote_mode): Keep only the FOR_CALL == 0 case.
6209 * combine.c (setup_incoming_promotion): Remove test of
6210 promote_function_args. Use promote_function_mode.
6211 * stmt.c (expand_value_return): Use promote_decl_mode.
6212 (expand_decl): Use promote_decl_mode.
6214 * expr.c (store_constructor): Use promote_decl_mode. Remove
6215 now write-only variable unsignedp.
6216 (expand_expr_real_1): Use promote_decl_mode.
6217 * expr.h (promote_function_mode, promote_decl_mode): New.
6218 (promote_mode): Remove last argument.
6219 * function.c (assign_temp): Drop last argument of promote_mode.
6220 (assign_parm_find_data_types): Use promote_function_mode.
6221 (assign_parm_setup_reg): Likewise.
6222 (expand_function_end): Use promote_function_mode.
6223 * calls.c (initialize_argument_information): Use promote_function_mode.
6224 (precompute_arguments): Use promote_mode instead of checking if
6225 only PROMOTE_FUNCTION_MODE is defined.
6226 (expand_call): When making sibcall decisions, use promote_function_mode.
6227 Below, remove an if for targetm.calls.promote_function_return and
6228 and use promote_function_mode.
6229 (emit_library_call_value_1): Use promote_function_mode, fix bug
6230 where promote_mode was passed FOR_CALL == 0 for a return value in an
6232 * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
6233 * explow.c (promote_function_mode, promote_decl_mode): New.
6234 (promote_mode): Keep only the FOR_CALL == 0 case.
6235 * combine.c (setup_incoming_promotion): Remove test of
6236 promote_function_args. Use promote_function_mode.
6237 * stmt.c (expand_value_return): Use promote_decl_mode.
6238 (expand_decl): Use promote_decl_mode.
6240 * explow.c (promote_function_mode): Just call the target hook.
6241 * targhooks.c (default_promote_function_mode,
6242 default_promote_function_mode_always_promote): New.
6243 * targhooks.h (default_promote_function_mode,
6244 default_promote_function_mode_always_promote): Declare.
6245 * target.h (promote_function_args, promote_function_return): Remove.
6246 (promote_function_mode): New.
6247 * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6248 TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6249 (TARGET_PROMOTE_FUNCTION_MODE): New.
6250 (TARGET_CALLS): Adjust.
6251 * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
6252 TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
6254 * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
6255 * config/s390/s390.c (s390_promote_function_mode): ... here,
6256 with pointer handling.
6257 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6258 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6260 * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
6261 * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
6262 with pointer handling.
6263 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6264 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6266 * config/sh/sh-protos.h (sh_promote_function_mode): New.
6267 * config/sh/sh.c (sh_promote_function_mode): New.
6268 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6269 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6271 * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
6272 * config/cris/cris.c (cris_promote_function_mode): ... here.
6273 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6274 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6276 * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
6277 * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
6278 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6279 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
6281 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
6282 * config/arm/arm.c (arm_promote_function_mode): ... here, without
6283 complex type handling.
6284 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6285 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6287 * config/pa/pa.c (pa_promote_function_mode): New.
6288 (TARGET_PROMOTE_FUNCTION_MODE): Define.
6289 (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6291 * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
6292 TARGET_PROMOTE_FUNCTION_RETURN): Remove.
6293 (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
6294 * config/xtensa/xtensa.c: Likewise.
6295 * config/stormy16/stormy16.c: Likewise.
6296 * config/iq2000/iq2000.c: Likewise.
6297 * config/rs6000/rs6000.c: Likewise.
6298 * config/picochip/picochip.c: Likewise.
6299 * config/arc/arc.c: Likewise.
6300 * config/mcore/mcore.c: Likewise.
6301 * config/score/score.c: Likewise.
6302 * config/mips/mips.c: Likewise.
6303 * config/bfin/bfin.c: Likewise.
6304 * config/ia64/ia64.c: Likewise (disabled though).
6306 * config/frv/frv.h: Remove pointless remark.
6308 * doc/tm.texi (PROMOTE_FUNCTION_MODE,
6309 TARGET_PROMOTE_FUNCTION_ARGS,
6310 TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
6311 (TARGET_PROMOTE_FUNCTION_MODE): ... this.
6313 2009-08-01 Sebastian Pop <sebastian.pop@amd.com>
6315 * doc/invoke.texi (-fgraphite-force-parallel): Renamed
6316 -floop-parallelize-all.
6317 * toplev.c (process_options): Rename flag_graphite_force_parallel to
6318 flag_loop_parallelize_all.
6319 * tree-ssa-loop.c (gate_graphite_transforms): Same.
6320 * graphite.c (graphite_transform_loops): Same.
6322 * graphite-poly.c (apply_poly_transforms): Same.
6324 2009-07-31 Richard Earnshaw <rearnsha@arm.com>
6326 PR tree-optimization/40914
6327 * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
6328 if set, then check the delta field of the PMF record.
6329 (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
6330 (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
6331 call is stored in the delta.
6333 2009-07-31 Adam Nemet <anemet@caviumnetworks.com>
6335 * config/mips/mips.md (*clear_upper32_dext): New pattern.
6337 2009-07-31 Uros Bizjak <ubizjak@gmail.com>
6339 * config/i386/bsd.h (ASM_BYTE): New define.
6340 * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
6341 * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
6342 .byte. Use fputs or putc instead of fprintf where appropriate.
6343 * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte. Use
6344 fputs or putc instead of fprintf where appropriate.
6345 * config/i386/i386elf.h: Ditto.
6346 * config/i386/sysv4.h: Ditto.
6348 * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
6349 * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
6350 (*tls_global_dynamic_64): Ditto.
6352 2009-07-31 Christian Bruel <christian.bruel@st.com>
6354 * gcc/config.gcc (sh*-*-elf): test with_libgloss.
6356 2009-07-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6358 * config/arm/arm.c (arm_arm_address_cost): Fix typo.
6359 Remove dead code for MINUS.
6361 2009-07-31 Anthony Green <green@moxielogic.com>
6363 * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
6365 (moxie_expand_epilogue): Ditto for epilogue.
6366 (moxie_setup_incoming_varargs): ABI change. Use 5 registers for
6368 (moxie_function_arg): Ditto.
6369 (moxie_pass_by_reference): Ditto.
6370 (moxie_arg_partial_bytes): Ditto.
6371 * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
6372 (FUNCTION_ARG_ADVANCE) Ditto.
6373 (REG_PARM_STACK_SPACE) Ditto.
6374 (FUNCTION_ARG_REGNO_P) Dito.
6376 * config.gcc: Add moxie linux config support.
6377 * gcc/config/moxie/uclinux.h: New file.
6379 2009-07-31 DJ Delorie <dj@redhat.com>
6381 * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
6382 (UNSPECV_SP_SWITCH_E): New.
6383 (sp_switch_1): Change to an unspec.
6384 (sp_switch_2): Change to an unspec. Don't use post-inc when we
6386 * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
6387 reference the new stack's address
6389 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6391 * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
6392 graphite-clast-to-gimple.o, graphite-dependences.o,
6393 graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6394 graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
6395 (graphite-blocking.o,
6396 graphite-clast-to-gimple.o, graphite-dependences.o,
6397 graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
6398 graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
6399 * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
6400 * cfgloop.h (struct loop): Add can_be_parallel field.
6401 * common.opt (fgraphite-identity): Moved up.
6402 (fgraphite-force-parallel): New flag.
6403 * graphite.c: Rewrite.
6404 * graphite.h: Rewrite.
6405 * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
6407 * toplev.c (graphite_out_file): New file descriptor.
6408 (graphite_in_file): New.
6409 (process_options): flag_graphite_force_parallel cannot be used without
6411 * tree-ssa-loop.c: Include toplev.h.
6412 (gate_graphite_transforms): Enable flag_graphite for
6413 flag_graphite_force_parallel.
6415 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6417 * ChangeLog.graphite: New.
6418 * graphite-blocking.c: New.
6419 * graphite-clast-to-gimple.c: New.
6420 * graphite-clast-to-gimple.h: New.
6421 * graphite-dependences.c: New.
6422 * graphite-dependences.h: New.
6423 * graphite-interchange.c: New.
6424 * graphite-poly.c: New.
6425 * graphite-poly.h: New.
6426 * graphite-ppl.c: New.
6427 * graphite-ppl.h: New.
6428 * graphite-scop-detection.c: New.
6429 * graphite-scop-detection.h: New.
6430 * graphite-sese-to-poly.c: New.
6431 * graphite-sese-to-poly.h: New.
6435 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6437 * tree-chrec.c (evolution_function_right_is_integer_cst): New.
6438 * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
6440 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6442 * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
6443 (scev_is_linear_expression): Return false if the evolution is not
6444 affine multivariate.
6446 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6448 * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
6449 * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
6451 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6453 * tree-data-ref.c (debug_data_references): New.
6454 (debug_data_reference): New.
6455 * tree-data-ref.h (debug_data_references): Declared.
6456 (debug_data_reference): Declared.
6458 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6460 * tree-data-ref.c (stmt_simple_memref_p: Removed.
6461 * tree-data-ref.h (scop_p): Removed.
6462 (struct data_reference): Remove field scop.
6464 (stmt_simple_memref_p): Removed.
6466 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6468 * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
6469 * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
6472 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6474 * doc/invoke.texi (-fgraphite-force-parallel): Documented.
6476 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6478 * doc/invoke.texi (-fgraphite-identity): Documented.
6480 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6482 * tree-scalar-evolution.c: Fix comment.
6483 (instantiate_scev_1): Return unknow from scev instantiation if the
6484 result is not above instantiate_below.
6486 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
6488 * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
6489 static anymore. Instantiate the symbols that may have been introduced
6491 * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
6494 2009-07-30 DJ Delorie <dj@redhat.com>
6496 * config/mep/mep.c (mep_asm_init_sections): Add section flags and
6497 .vliw directive to VLIW sections.
6499 2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
6501 * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
6503 ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
6504 (AUTOHEADER): New variable.
6505 ($(srcdir)/cstamp-h.in): Use it.
6507 2009-07-30 Michael Meissner <meissner@linux.vnet.ibm.com>
6508 Pat Haugen <pthaugen@us.ibm.com>
6509 Revital Eres <ERES@il.ibm.com>
6511 * config/rs6000/vector.md (VEC_F): Add VSX support.
6515 (vector_load_<mode>): Ditto.
6516 (vector_store_<mode>): Ditto.
6517 (vector GPR move split): Ditto.
6518 (vec_reload_and_plus_<mptrsize>): Ditto.
6519 (vec_reload_and_reg_<mptrsize>): Ditto.
6520 (add<mode>3): Ditto.
6521 (sub<mode>3): Ditto.
6522 (mul<mode>3): Ditto.
6523 (neg<mode>2): Ditto.
6524 (abs<mode>2): Ditto.
6525 (smin<mode>3): Ditto.
6526 (smax<mode>3): Ditto.
6527 (vector_eq<mode>): Ditto.
6528 (vector_gt<mode>): Ditto.
6529 (vector_ge<mode>): Ditto.
6530 (vector_gtu<mode>): Ditto.
6531 (vector_select_<mode>_uns): Ditto.
6532 (vector_eq_<mode>_p): Ditto.
6533 (vector_gt_<mode>_p): Ditto.
6534 (vector_ge_<mode>_p): Ditto.
6535 (vector_gtu_<mode>_p): Ditto.
6536 (cr6_test_for_zero): Ditto.
6537 (cr6_test_for_zero_reverse): Ditto.
6538 (cr6_test_for_lt): Ditto.
6539 (cr6_test_for_lt_reverse): Ditto.
6540 (xor<mode>3): Ditto.
6541 (ior<mode>3): Ditto.
6542 (and<mode>3): Ditto.
6543 (one_cmpl<mode>2): Ditto.
6544 (nor<mode>2): Ditto.
6545 (andc<mode>2): Ditto.
6546 (float<VEC_int<mode>2): Ditto.
6547 (unsigned_float<VEC_int><mode>2): Ditto.
6548 (fix_trunc<mode><VEC_int>2): Ditto.
6549 (fixuns_trunc<mode><VEC_int>2): Ditto.
6551 (vec_set<mode>): Ditto.
6552 (vec_extract<mode>): Ditto.
6553 (vec_interleave_highv4sf): Ditto.
6554 (vec_interleave_lowv4sf): Ditto.
6555 (vec_realign_load_<mode>): Ditto.
6556 (vec_shl_<mode>): Ditto.
6557 (vec_shr_<mode>): Ditto.
6558 (div<mode>3): New patterns for VSX.
6559 (vec_interleave_highv2df): Ditto.
6560 (vec_interleave_lowv2df): Ditto.
6561 (vec_pack_trunc_v2df): Ditto.
6562 (vec_pack_sfix_trunc_v2df): Ditto.
6563 (vec_pack_ufix_trunc_v2df): Ditto.
6564 (vec_unpacks_hi_v4sf): Ditto.
6565 (vec_unpacks_lo_v4sf): Ditto.
6566 (vec_unpacks_float_hi_v4si): Ditto.
6567 (vec_unpacks_float_lo_v4si): Ditto.
6568 (vec_unpacku_float_hi_v4si): Ditto.
6569 (vec_unpacku_float_lo_v4si): Ditto.
6570 (movmisalign<mode>): Ditto.
6571 (vector_ceil<mode>2): New patterns for vectorizing math library.
6572 (vector_floor<mode>2): Ditto.
6573 (vector_btrunc<mode>2): Ditto.
6574 (vector_copysign<mode>3): Ditto.
6576 * config/rs6000/predicates.md (easy_vector_constant_msb): New
6577 predicate for setting the high bit in each word, used for copysign.
6579 * config/rs6000/ppc-asm.h (f19): Whitespace.
6580 (f32-f63): Define if VSX.
6581 (v0-v31): Define if Altivec.
6582 (vs0-vs63): Define if VSX.
6584 * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
6586 * config/rs6000/power7.md: New file, provide tuning parameters for
6589 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
6590 (rs6000_cpu_cpp_builtins): Ditto.
6591 (altivec_overloaded_builtins): Ditto.
6592 (altivec_resolve_overloaded_builtin): Ditto.
6594 * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
6595 debug switch to disable vectorizing simple math builtin
6598 * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
6599 Vectorize simple math builtin functions.
6600 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
6601 hook to vectorize math builtins.
6602 (rs6000_override_options): Enable -mvsx on -mcpu=power7.
6603 (rs6000_builtin_conversion): Add VSX/power7 support.
6604 (rs6000_builtin_vec_perm): Ditto.
6605 (vsplits_constant): Add support for loading up a vector constant
6606 with just the high bit set in each part.
6607 (rs6000_expand_vector_init): Add VSX/power7 support.
6608 (rs6000_expand_vector_set): Ditto.
6609 (rs6000_expand_vector_extract): Ditto.
6610 (rs6000_emit_move): Ditto.
6611 (bdesc_3arg): Ditto.
6612 (bdesc_2arg): Ditto.
6613 (bdesc_1arg): Ditto.
6614 (rs6000_expand_ternop_builtin): Ditto.
6615 (altivec_expand_builtin): Ditto.
6616 (rs6000_expand_unop_builtin): Ditto.
6617 (rs6000_init_builtins): Ditto.
6618 (altivec_init_builtins): Ditto.
6619 (builtin_function_type): Ditto.
6620 (rs6000_common_init_builtins): Ditto.
6621 (rs6000_handle_altivec_attribute); Ditto.
6622 (rs6000_mangle_type): Ditto.
6623 (rs6000_vector_mode_supported_p): Ditto.
6624 (rs6000_mode_dependent_address): Altivec addresses with AND -16
6627 * config/rs6000/vsx.md: New file for VSX support.
6629 * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
6630 identifing values with just the most significant bit set.
6631 (enum rs6000_builtins): Add builtins for VSX. Add simple math
6632 vectorized builtins.
6634 * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
6635 (UNSPEC_VRFIM): Delete.
6636 (splitter for loading up vector with most significant bit): New
6637 splitter for vectorizing copysign.
6638 (altivec_vrfiz): Rename from altivec_fturncv4sf2. Add support for
6639 vectorizing simple math functions.
6640 (altivec_vrfip): Add support for vectorizing simple math functions.
6641 (altivec_vrfim): Ditto.
6642 (altivec_copysign_v4sf3): New insn for Altivec copysign support.
6644 * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
6645 (power7.md, vsx.md): Include for power7 support.
6646 (copysigndf3): Use VSX instructions if -mvsx.
6647 (negdf2_fpr): Ditto.
6648 (absdf2_fpr): Ditto.
6649 (nabsdf2_fpr): Ditto.
6650 (adddf3_fpr): Ditto.
6651 (subdf3_fpr): Ditto.
6652 (muldf3_fpr): Ditto.
6653 (divdf3_fpr): Ditto.
6654 (fix_truncdfdi2_fpr): Ditto.
6655 (cmpdf_internal1): Ditto.
6656 (fred, fred_fpr): Convert into expander/insn to add VSX support.
6657 (btruncdf2, btruncdf2_fpr): Ditto.
6658 (ceildf2, ceildf2_fpr): Ditto.
6659 (floordf2, floordf2_fpr): Ditto.
6660 (floatdidf2, floatdidf2_fpr): Ditto.
6661 (fmadddf4_fpr): Name insn. Use VSX instructions if -mvsx.
6662 (fmsubdf4_fpr): Ditto.
6663 (fnmadddf4_fpr_1): Ditto.
6664 (fnmadddf4_fpr_2): Ditto.
6665 (fnmsubdf4_fpr_1): Ditto.
6666 (fnmsubdf4_fpr_2): Ditto.
6667 (fixuns_truncdfdi2): Add expander for VSX support.
6668 (fix_truncdfdi2): Ditto.
6669 (fix_truncdfsi2): Ditto.
6671 (btruncsf2): Whitespace.
6672 (movdf_hardfloat32): Add support for VSX registers.
6673 (movdf_softfloat32): Ditto.
6674 (movdf_hardfloat64): Ditto.
6675 (movdf_hardfloat64_mfpgpr): Ditto.
6676 (movdf_softfloat64): Ditto.
6677 (movti splitters): Add check for vector registers supporting
6678 TImode in the future.
6679 (bpermd): Add power7 bpermd instruction.
6681 * config/rs6000/altivec.h (vec_div): Define if VSX.
6685 (vec_nearbyint): Ditto.
6688 (all predicates): Use the generic builtin function, and not the V4SF
6689 specific function so that the predicates will work with VSX's V2DF.
6693 * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
6694 Document new VSX functions and types.
6696 * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
6699 * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
6700 "wa", and "j" constraints. Modify "v" to talk about Altivec
6701 instead of just vector.
6703 2009-07-30 Andrew MacLeod <amacleod@redhat.com>
6706 * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
6707 location for phi arguments.
6708 (rewrite_update_phi_arguments): Find locations for reaching defs.
6709 * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
6710 Add location to add_phi_arg calls.
6711 * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
6712 * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
6713 split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
6714 * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
6715 create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
6716 * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
6717 * tree-phinodes.c (make_phi_node): Initialize location.
6718 (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
6719 (add_phi_arg): Add location parameter.
6720 (remove_phi_arg_num): Move location when moving phi argument.
6721 * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
6723 * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
6724 slpeel_update_phi_nodes_for_guard1,
6725 slpeel_update_phi_nodes_for_guard2,
6726 slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
6727 vect_loop_versioning): Set locations.
6728 * tree-parloops.c (create_phi_for_local_result,
6729 transform_to_exit_first_loop, create_parallel_loop): Add locations.
6730 * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
6731 * tree-vect-loop.c (get_initial_def_for_induction,
6732 vect_create_epilog_for_reduction, vect_finalize_reduction): Add
6734 * tree-flow-inline.h (gimple_phi_arg_location): New. Return locus.
6735 (gimple_phi_arg_location_from_edge): New. Return locus from an edge.
6736 (gimple_phi_arg_set_location): New. Set locus.
6737 (gimple_phi_arg_has_location): New. Check for locus.
6738 (redirect_edge_var_map_location): New. Return locus from var_map.
6739 * tree-vect-data-refs.c (vect_setup_realignment): Set location.
6740 * tree-ssa-phiopt.c (conditional_replacement): Set locus when
6741 combining PHI arguments.
6742 (cond_store_replacement): Set location.
6743 * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
6744 * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
6745 scop_add_exit_phis_edge): Add locations.
6746 * tree-cfgcleanup.c (remove_forwarder_block,
6747 remove_forwarder_block_with_phi): Add locations.
6748 * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
6749 * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
6751 * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
6752 * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
6753 flush_pending_stmts): Add source location.
6754 * lambda-code.c (perfect_nestify): Maintain location stack with argument
6755 stack to preserve locations.
6756 * tree-vect-stmts.c (vectorizable_load): Add location.
6757 * tree-inline.c (copy_phis_for_bb): Copy locus.
6758 (setup_one_parameter): Add call locus to inlined parameter stmts.
6759 (initialize_inlined_parameters): Pass in call location as parameter
6761 (tree_function_versioning): Pass location to setup_one_parameter.
6762 * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
6763 * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
6764 copy and edge lists.
6765 (insert_partition_copy_on_edge, insert_value_copy_on_edge,
6766 insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
6767 locus parameter and override the stmt default if provided.
6768 (new_elim_graph, clear_elim_graph, delete_elim_graph,
6769 elim_graph_add_edge, elim_graph_remove_succ_edge,
6770 FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
6771 elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
6772 eliminate_phi): Add locus info in elimination graph for each edge and
6774 (insert_backedge_copies): Copy locus if present.
6775 * tree-flow.h (struct _edge_var_map): Add locus field.
6776 * tree-switch_conversions.c (fix_phi_nodes): Add locations.
6777 * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
6778 add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
6780 * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
6782 2009-07-30 Martin Jambor <mjambor@suse.cz>
6784 PR tree-optimization/40570
6785 * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
6788 2009-07-30 Razya Ladelsky <razya@il.ibm.com>
6790 * ssa-loop-manip.c: Include langhooks.h.
6791 (rewrite_phi_with_iv): New.
6792 (rewrite_all_phi_nodes_with_iv): New.
6793 (canonicalize_loop_ivs): Move here from tree-parloops.c.
6794 Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
6795 * tree-parloops.c (loop_parallel_p): Move out all conditions
6796 except dependency check.
6797 (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
6798 (gen_parallel_loop): Call canonicalize_loop_ivs without
6799 reduction_list argument.
6800 (build_new_reduction): New.
6801 (gather_scalar_reductions): New.
6802 (try_get_loop_niter): New.
6803 (try_create_reduction_list): New.
6804 (parallleize_loops): Change the parallel conditions check.
6805 * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
6806 * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
6808 2009-07-30 Dave Korn <dave.korn.cygwin@gmail.com>
6810 * opt-functions.awk (opt_args): Allow argument to be enclosed in
6812 * doc/options.texi (Option properties): Mention new quoting syntax.
6814 2009-07-29 Douglas B Rupp <rupp@gnat.com>
6816 * config/alpha/alpha.c (alpha_start_function):
6817 Handle VMS_DEBUG_MAIN_POINTER
6818 * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
6819 * doc/invoke.texi: Document -mdebug-main switch.
6821 2009-07-29 Richard Henderson <rth@redhat.com>
6823 * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
6824 (cgraph_create_edge_including_clones): Likewise.
6825 * tree-inline.c (copy_bb): Operate on the correct edges
6826 when updating the callgraph.
6828 2009-07-29 Douglas B Rupp <rupp@gnat.com>
6830 * config/alpha/vms-cc.c: Deleted.
6831 * config/alpha/vms-ld.c: Deleted.
6832 * config/alpha/t-vms64: Moved to config/vms
6833 * config/alpha/vms-crt0-64.c: Moved to config/vms
6834 * config/alpha/vms-crt0.c: Moved to config/vms
6835 * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
6836 * config/alpha/vms-psxcrt0.c: Moved to config/vms
6837 * config/alpha/xm-vms.h: Moved to config/vms
6838 * config/alpha/x-vms: Moved to config/vms
6839 * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
6841 * config/vms/t-vms: Moved here from config/alpha. Alpha specific
6842 parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
6844 * config/vms/t-vms64: Moved here from config/alpha
6845 * config/vms/vms-crt0-64.c: Moved here from config/alpha.
6846 (argc,argv,envp): Enforce 32bit malloc'ing.
6847 * config/vms/vms-psxcrt0-64.c: Likewise.
6848 * config/vms/vms-crt0.c: Moved here from config/alpha.
6849 * config/vms/vms-psxcrt0.c: Likewise.
6850 * config/vms/vms-crtl-64.h: New file.
6851 * config/vms/vms-crtl.h: New file.
6852 * config/vms/vms.opt: New file.
6853 * config/vms/xm-vms64.h: New file.
6854 * config/vms/xm-vms.h: Moved here from config/alpha.
6855 (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
6857 * config/vms/x-vms: Moved here from config/alpha.
6858 (version, VMS_EXTRA_PARTS): Moved to t-vms.
6859 (vms-ld.o, vms-cc.o): Removed.
6860 (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
6862 2009-07-29 Douglas B Rupp <rupp@gnat.com>
6864 * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
6865 correct stack (obvious VMS fix).
6867 2009-07-29 Douglas B Rupp <rupp@gnat.com>
6869 * dwarf2out.c (output_file_names): Output VMS style file name, size,
6870 date, version info if VMS_DEBUGGING_INFO defined.
6871 * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
6872 size, date calculating code moved here.
6874 2009-07-29 Paul Brook <paul@codesourcery.com>
6876 * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
6879 2009-07-29 Uros Bizjak <ubizjak@gmail.com>
6882 * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
6883 to DImode when generating insq_le insn.
6885 2009-07-28 Douglas B Rupp <rupp@gnat.com>
6887 * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
6888 New macro set for VMS_DEBUGGGING_INFO.
6889 (AT_string_form): Use it.
6891 2009-07-28 DJ Delorie <dj@redhat.com>
6893 * config/mep/mep.c (vtext_section): New.
6894 (vftext_section): New.
6895 (ftext_section): New.
6896 (mep_select_section): Add support for functions.
6897 (mep_unique_section): Likewise.
6898 (mep_asm_init_sections): Likewise.
6899 (mep_encode_section_info): Remove it from here.
6901 * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
6903 2009-07-28 Paolo Bonzini <bonzinI@gnu.org>
6905 * tree.h (TREE_DEPRECATED): Document it is used for types too.
6906 (TYPE_VECTOR_OPAQUE): Use default_def_flag
6908 2009-07-28 Douglas B Rupp <rupp@gnat.com>
6910 * dwarf2out.c (output_file_names): Test new macro
6911 DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
6912 (add_comp_dir_attribute): Likewise.
6914 2009-07-28 Kai Tietz <kai.tietz@onevision.com>
6916 * config/i386/mingw-w64.h (LINK_SPEC): Add
6917 separating space between commands.
6919 2009-07-28 Jan Hubicka <jh@suse.cz>
6921 PR tree-optimization/40759
6922 * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
6925 2009-07-27 DJ Delorie <dj@redhat.com>
6927 * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
6928 types are dword-aligned.
6929 (mep_expand_va_start): Likewise.
6931 2009-07-27 Olivier Hainque <hainque@adacore.com>
6932 Douglas B Rupp <rupp@gnat.com>
6934 * convert.c (convert_to_pointer): Don't assume the target
6935 pointer type is POINTER_SIZE long. Fetch its precision instead.
6937 2009-07-27 Douglas B Rupp <rupp@gnat.com>
6939 * system.h (fopen): Undefine if macro.
6941 2009-07-27 Jakub Jelinek <jakub@redhat.com>
6943 * dwarf2out.c (output_cfi_p): Removed.
6944 (output_cfis): New function.
6945 (output_fde): New function, split from output_call_frame_info.
6946 (output_call_frame_info): Use it.
6947 (dwarf2out_switch_text_section): Use output_cfis.
6949 2009-07-24 Kai Tietz <kai.tietz@onevision.com>
6951 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
6952 TARGET_BI_ARCH is specified without enabling SJLJ.
6953 * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
6954 if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
6956 2009-07-26 Mikael Pettersson <mikpe@it.uu.se>
6958 * arm.md (negdi2): Use DImode if forcing a value into a register.
6960 2009-07-26 Ira Rosen <irar@il.ibm.com>
6962 PR tree-optimization/40801
6963 * tree-vect-stmts.c (vectorizable_call): Get previous copy
6964 of vector operand from the previous copy of vector statement.
6965 Pass the correct definition type value to
6966 vect_get_vec_def_for_stmt_copy().
6968 2009-07-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
6970 * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
6971 const char ** conversion.
6973 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6975 * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
6976 fancy_abort() if !ENABLE_ASSERT_CHECKING.
6977 (gcc_unreachable): Invoke __builtin_unreachable() if
6978 !ENABLE_ASSERT_CHECKING.
6980 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6982 PR rtl-optimization/40445
6983 * emit-rtl.c (next_nonnote_insn_bb): New function.
6984 * rtl.h (next_nonnote_insn_bb): Declare new function.
6985 * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
6986 with no successors that is the successor of the ENTRY_BLOCK.
6987 Continue from the top after removing an empty fallthrough block.
6988 * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
6989 of next_nonnote_insn.
6991 2009-07-25 David Daney <ddaney@caviumnetworks.com>
6993 * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
6995 2009-07-25 Martin Jambor <mjambor@suse.cz>
6997 * c-common.c (c_common_attribute_table): New element for noclone.
6998 (handle_noclone_attribute): New function. Forward-declare.
6999 * tree-inline.c (tree_versionable_function_p): Check for noclone
7001 * doc/extend.texi (Labels as Values): Document need for noclone.
7002 (Function Attributes): Document noclone attribute.
7004 2009-07-25 Jakub Jelinek <jakub@redhat.com>
7006 PR rtl-optimization/34999
7007 * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
7008 and dw_fde_switched_cold_to_hot fields.
7009 (output_cfi_p): New function.
7010 (output_call_frame_info): If fde->dw_fde_switched_sections,
7011 output 2 FDEs instead of one with corrupted header.
7012 (dwarf2out_do_cfi_startproc): New function.
7013 (dwarf2out_begin_prologue): Use it. Initialize fde->dw_fde_switch_cfi
7014 and fde->dw_fde_switched_cold_to_hot.
7015 (dwarf2out_switch_text_section): Compute
7016 fde->dw_fde_switched_cold_to_hot. Switch to new text section here.
7017 If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
7018 dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
7019 Otherwise, compute fde->dw_fde_switch_cfi.
7021 2009-07-24 Cary Coutant <ccoutant@google.com>
7023 * tree-cfg.c (assign_discriminator): Add explicit parentheses.
7025 2009-07-24 Cary Coutant <ccoutant@google.com>
7027 * cfghooks.c (split_block): Copy discriminator to new block.
7028 * tree-cfg.c (assign_discriminator): Check location of last
7029 instruction in block as well as first.
7031 2009-07-24 Uros Bizjak <ubizjak@gmail.com>
7033 * config/i386/linux.c: Use fputs or putc instead of fprintf
7035 * config/i386/gas.h: Ditto.
7036 * config/i386/x86-64.h: Ditto.
7037 * config/i386/att.h: Ditto.
7039 2009-07-24 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
7041 * expmed.c (emit_store_flag): Use a recursive call to optimize the
7044 2009-07-24 Martin Jambor <mjambor@suse.cz>
7046 * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
7047 (ipa_push_func_to_list_1): Declare.
7048 (ipa_push_func_to_list): New function.
7050 * ipa-prop.c (ipa_push_func_to_list_1): New function.
7051 (ipa_init_func_list): Call ipa_push_func_to_list_1.
7052 (ipa_push_func_to_list): Removed.
7053 (ipa_pop_func_from_list): Clear node_enqueued flag.
7055 2009-07-24 Andreas Krebbel <krebbel1@de.ibm.com>
7057 * config/s390/s390.c (override_options): Default
7058 max-unrolled-insns to 100 for z10 tuning.
7060 2009-07-24 Tobias Grosser <grosser@fim.uni-passau.de>
7062 * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
7063 tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
7064 tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
7065 tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
7066 tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
7067 tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
7068 lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
7070 2009-07-24 Kai Tietz <kai.tietz@onevision.com>
7072 * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
7073 use default set in mingw32.h header.
7074 * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
7075 64-bit /mingw/include path.
7076 (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
7079 2009-07-23 Neil Vachharajani <nvachhar@google.com>
7081 PR rtl-optimization/40209
7082 * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
7084 2009-07-23 Uros Bizjak <ubizjak@gmail.com>
7086 * config/i386/i386.c: Use ASM_LONG instead of .long. Concatenate
7087 ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
7088 with the rest of string where appropriate. Use fputs or putc
7089 instead of fprintf where appropriate.
7091 2009-07-22 Michael Meissner <meissner@linux.vnet.ibm.com>
7092 Pat Haugen <pthaugen@us.ibm.com>
7093 Revital Eres <ERES@il.ibm.com>
7095 * config/rs6000/vector.md: New file. Move most of the vector
7096 expander support here from altivec.md to allow for the VSX vector
7097 unit in the future. Add support for secondary_reload patterns.
7098 Rewrite the patterns for vector comparison, and vector comparison
7099 predicate instructions so that the RTL expresses the desired
7100 behavior, instead of using unspec.
7102 * config/rs6000/constraints.md ("f" constraint): Use
7103 rs6000_constraints to hold the precalculated register class.
7104 ("d" constraint): Ditto.
7105 ("wd" constraint): New constraint for VSX.
7106 ("wf" constraint): Ditto.
7107 ("ws" constraint): Ditto.
7108 ("wa" constraint): Ditto.
7109 ("wZ" constraint): Ditto.
7110 ("j" constraint): Ditto.
7112 * config/rs6000/predicates.md (vsx_register_operand): New
7114 (vfloat_operand): New predicate for vector.md.
7115 (vint_operand): Ditto.
7116 (vlogical_operand): Ditto.
7117 (easy_fp_constant): If VSX, 0.0 is an easy constant.
7118 (easy_vector_constant): Add VSX support.
7119 (altivec_indexed_or_indirect_operand): New predicate for
7120 recognizing Altivec style memory references with AND -16.
7122 * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
7123 for vector secondary reload support.
7124 (rs6000_vector_reg_class): Delete, replacing it with
7126 (rs6000_vsx_reg_class): Ditto.
7127 (rs6000_constraints): New array to hold the register classes of
7128 each of the register constraints that can vary at runtime.
7129 (builtin_mode_to_type): New static array for builtin function type
7131 (builtin_hash_table): New static hash table for builtin function
7133 (TARGET_SECONDARY_RELOAD): Define target hook.
7134 (TARGET_IRA_COVER_CLASSES): Ditto.
7135 (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
7136 registers are 128 bits if VSX memory reference instructions are used.
7137 (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
7139 (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
7140 (rs6000_debug_reg_global): Move -mdebug=reg statements here.
7141 Print several of the scheduling related parameters.
7142 (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
7143 rs6000_constraints instead of rs6000_vector_reg_class. Move
7144 -mdebug=reg code to rs6000_debug_reg_global. Add support for
7145 -mvsx-align-128 debug switch. Drop testing float_p if VSX or
7146 Altivec. Add VSX support. Setup for secondary reload support on
7147 Altivec/VSX registers.
7148 (rs6000_override_options): Make power7 set the scheduling groups
7149 like the power5. Add support for new debug switches to override
7150 the scheduling defaults. Temporarily disable -mcpu=power7 from
7151 setting -mvsx. Add support for debug switches -malways-hint,
7152 -msched-groups, and -malign-branch-targets.
7153 (rs6000_buitlin_conversion): Add support for returning unsigned
7154 vector conversion functions to fix regressions due to stricter
7156 (rs6000_builtin_mul_widen_even): Ditto.
7157 (rs6000_builtin_mul_widen_odd): Ditto.
7158 (rs6000_builtin_vec_perm): Ditto.
7159 (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
7160 (rs6000_expand_vector_init): Initial VSX support for using xxlxor
7162 (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
7164 (bdesc_3arg): Add builtins for unsigned types. Add builtins for
7165 VSX types for bit operations. Changes to accomidate vector.md.
7166 (bdesc_2arg): Ditto.
7167 (bdesc_1arg): Ditto.
7168 (struct builtin_description_predicates): Rewrite predicate
7169 handling so that RTL describes the operation, instead of passing
7170 the instruction to be used as a string argument.
7171 (bdesc_altivec_preds): Ditto.
7172 (altivec_expand_predicate_builtin): Ditto.
7173 (altivec_expand_builtin): Ditto.
7174 (rs6000_expand_ternop_builtin): Use a switch instead of an if
7175 statement for vsldoi support.
7176 (altivec_expand_ld_builtin): Change to use new names from vector.md.
7177 (altivec_expand_st_builtin): Ditto.
7178 (paired_expand_builtin): Whitespace changes.
7179 (rs6000_init_builtins): Add V2DF/V2DI types. Initialize the
7180 builtin_mode_to_type table for secondary reload. Call
7181 builtin_function_type to build random builtin functions.
7182 (altivec_init_builtins): Change to use builtin_function_type to
7183 create builtin function types dynamically as we need them.
7184 (builtin_hash_function): New support for hashing the tree types
7185 for builtin function as we need it, rather than trying to build
7186 all of the trees that we need. Add initial preliminary VSX support.
7187 (builtin_function_type): Ditto.
7188 (builtin_function_eq): Ditto.
7189 (builtin_hash_struct): Ditto.
7190 (rs6000_init_builtins): Ditto.
7191 (rs6000_common_init_builtins): Ditto.
7192 (altivec_init_builtins): Ditto.
7193 (rs6000_common_init_builtins): Ditto.
7194 (enum reload_reg_type): New enum for simplifing reg classes.
7195 (rs6000_reload_register_type): Simplify register classes into GPR,
7196 Vector, and other registers. Altivec and VSX addresses in reload.
7197 (rs6000_secondary_reload_inner): Ditto.
7198 (rs6000_ira_cover_classes): New target hook, that returns the
7199 appropriate cover classes, based on -mvsx being used or not.
7200 (rs6000_secondary_reload_class): Add VSX support.
7201 (get_vec_cmp_insn): Delete, rewrite vector conditionals.
7202 (get_vsel_insn): Ditto.
7203 (rs6000_emit_vector_compare): Rewrite vector conditional support
7204 so that where we can, we use RTL operators, instead of blindly use
7206 (rs6000_emit_vector_select): Ditto.
7207 (rs6000_emit_vector_cond_expr): Ditto.
7208 (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
7209 (create_TOC_reference): Add -mdebug=addr support.
7210 (emit_frame_save): VSX loads/stores need register indexed addressing.
7212 * config/rs6000/rs6000.md: Include vector.md.
7214 * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
7216 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
7217 support for V2DI, V2DF in logical, permute, select operations.
7219 * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
7220 switch for vsx/power7.
7221 (-mvsx-scalar-memory): Ditto.
7222 (-mvsx-align-128): Ditto.
7223 (-mallow-movmisalign): Ditto.
7224 (-mallow-df-permute): Ditto.
7225 (-msched-groups): Ditto.
7226 (-malways-hint): Ditto.
7227 (-malign-branch-targets): Ditto.
7229 * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
7231 (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
7232 (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
7233 (rs6000_vector_reg_class): Delete.
7234 (rs6000_vsx_reg_class): Ditto.
7235 (enum rs6000_reg_class_enum): New enum for the constraints that
7236 vary based on target switches.
7237 (rs6000_constraints): New array to hold the register class for all
7238 of the register constraints that vary based on the switches used.
7239 (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
7240 (enum rs6000_builtins): Add unsigned varients for the builtin
7241 declarations returned by target hooks for expanding multiplies,
7242 select, and permute operations. Add VSX builtins.
7243 (enum rs6000_builtin_type_index): Add entries for VSX.
7244 (V2DI_type_node): Ditto.
7245 (V2DF_type_node): Ditto.
7246 (unsigned_V2DI_type_node): Ditto.
7247 (bool_long_type_node): Ditto.
7248 (intDI_type_internal_node): Ditto.
7249 (uintDI_type_internal_node): Ditto.
7250 (double_type_internal_node): Ditto.
7252 * config/rs6000/altivec.md (whole file): Move all expanders to
7253 vector.md from altivec.md. Rename insn matching functions to be
7255 (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
7256 (altivec_vcmp*): Ditto.
7257 (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
7258 (VM): New iterator for moves that includes the VSX types.
7259 (altivec_vperm_<mode>): Add VSX types. Add unsigned types.
7260 (altivec_vperm_<mode>_uns): New, for unsigned types.
7261 (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
7262 (altivec_eq<mode>): Ditto.
7263 (altivec_gt<mode>): Ditto.
7264 (altivec_gtu<mode>): Ditto.
7265 (altivec_eqv4sf): Ditto.
7266 (altivec_gev4sf): Ditto.
7267 (altivec_gtv4sf): Ditto.
7268 (altivec_vcmpbfp_p): Ditto.
7270 2009-07-23 Richard Earnshaw <rearnsha@arm.com>
7272 * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
7275 2009-07-23 Uros Bizjak <ubizjak@gmail.com>
7278 * config/i386/i386.c (output_387_ffreep): Rewrite to use
7279 ASM_SHORT instead of .word.
7280 * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
7281 instead of .word in asm template.
7283 2009-07-22 Vladimir Makarov <vmakarov@redhat.com>
7286 * ira-lives.c (bb_has_abnormal_call_pred): New function.
7287 (process_bb_node_lives): Use it.
7289 * ira.c (setup_cover_and_important_classes): Don't setup
7290 ira_important_class_nums. Add cover classes to the end of
7292 (cover_class_order, comp_reg_classes_func, reorder_important_classes):
7294 (find_reg_class_closure): Use reorder_important_classes.
7296 * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
7298 * config/i386/i386.c (i386_ira_cover_classes): New function.
7299 (TARGET_IRA_COVER_CLASSES): Redefine.
7301 * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
7302 importance of order of cover classes in the array.
7304 2009-07-22 Diego Novillo <dnovillo@google.com>
7306 * tree-pass.h (TDF_EH): Define.
7307 * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
7308 contains TDF_EH, print the EH region number holding GS.
7309 * tree-dump.c (dump_options): Add "eh".
7310 * doc/invoke.texi: Document it.
7312 2009-07-22 Doug Kwan <dougkwan@google.com>
7314 * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
7316 2009-07-22 Michael Matz <matz@suse.de>
7318 PR tree-optimization/35229
7319 PR tree-optimization/39300
7321 * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
7322 (inhibit_phi_insertion): New function.
7323 (insert_into_preds_of_block): Call it for REFERENCEs.
7324 (init_pre): Initialize and finalize scalar evolutions.
7325 * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
7327 2009-07-22 Uros Bizjak <ubizjak@gmail.com>
7329 * config/i386/predicates.md (zero_extended_scalar_load_operand):
7330 Use CONST_VECTOR_NUNITS to determine number of elements.
7332 2009-07-22 Andreas Krebbel <krebbel1@de.ibm.com>
7334 * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
7335 (U, W): Constraints are now deprecated and will be removed if we
7337 * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
7339 ("prefetch"): Add the stcmh instruction for prefetching.
7340 * config/s390/s390.c (s390_symref_operand_p): Function moved. No
7342 (s390_short_displacement): Return always true if compiling for
7343 machines not providing the long displacement facility.
7344 (s390_mem_constraint): Support the new constraint letter Z.
7345 (s390_check_qrst_address): New function.
7347 2009-07-21 DJ Delorie <dj@redhat.com>
7349 * config/mep/mep.c (mep_legitimize_arg): Leave control registers
7352 2009-07-21 Jason Merrill <jason@redhat.com>
7354 * c-common.c (max_tinst_depth): Increase default to 1024.
7356 2009-07-21 Uros Bizjak <ubizjak@gmail.com>
7358 * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
7359 (vec_unpacku_float_lo_v4si): Ditto.
7361 2009-07-21 Uros Bizjak <ubizjak@gmail.com>
7364 * config/i386/sse.md (sse2_cvtudq2ps): New expander.
7365 (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
7366 (builtin_description): Add __builtin_ia32_cvtudq2ps.
7367 (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
7369 2009-07-21 Jakub Jelinek <jakub@redhat.com>
7371 PR tree-optimization/40813
7372 * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
7375 2009-07-21 Kaz Kojima <kkojima@gcc.gnu.org>
7377 * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
7378 with a NOP_EXPR if needed.
7380 2009-07-21 Paul Brook <paul@codesourcery.com>
7382 * tree-vectorizer.c (increase_alignment): Handle nested arrays.
7383 Terminate debug dump with newline.
7385 2009-07-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
7387 * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
7388 Cast "1" to unsigned HOST_WIDE_INT.
7389 (compute_zdepdi_operands): Limit maximum length to 64 bits. Limit
7390 deposit length to the maximum length - lsb. Extend length if
7391 HOST_BITS_PER_WIDE_INT is 32.
7393 2009-07-20 Olatunji Ruwase <tjruwase@google.com>
7395 * cgraph.h (constant_pool_htab): New function.
7396 (constant_descriptor_tree): Move from varasm.c.
7397 * varasm.c (constant_pool_htab): New function.
7398 (constant_descriptor_tree): Move to cgraph.h.
7400 2009-07-20 Olatunji Ruwase <tjruwase@google.com>
7402 * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
7404 2009-07-20 Shujing Zhao <pearly.zhao@oracle.com>
7406 * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
7409 2009-07-20 Xinliang David Li <davidxl@google.com>
7411 * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
7413 2009-07-20 Adam Nemet <anemet@caviumnetworks.com>
7415 * config/mips/mips.md (move_type): Add arith.
7416 (type): Handle arith.
7417 (zero_extendsidi2): Rename this into ...
7418 (*zero_extendsidi2): ... this. Don't match if ISA_HAS_EXT_INS.
7419 (zero_extendsidi2): New expander.
7420 (*zero_extendsidi2_dext): New pattern.
7422 2009-07-20 Nick Clifton <nickc@redhat.com>
7424 * config.gcc (mips64-*-*): Add definition of tm_defines in order
7425 to set MIPS_ABI_DEFAULT.
7426 * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
7428 2009-07-20 Jakub Jelinek <jakub@redhat.com>
7430 * tree-object-size.c (addr_object_size): Handle unions with
7431 array in it as last field of structs in __bos (, 1) as __bos (, 0).
7433 PR tree-optimization/40792
7434 * tree.c (build_function_type_skip_args): Remove bogus assert.
7436 2009-07-20 Jan Hubicka <jh@suse.cz>
7437 Martin Jambor <mjambor@suse.cz>
7439 * cgraph.h (combined_args_to_skip): New field.
7440 * cgraph.c (cgraph_create_virtual_clone): Properly handle
7441 combined_args_to_skip and args_to_skip.
7442 * tree-inline.c (update_clone_info): New function.
7443 (tree_function_versioning): Call update_clone_info.
7444 * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
7446 (cgraph_materialize_all_clones): More extensive dumping, working
7447 with combined_args_to_skip rather than args_to_skip.
7449 2009-07-20 Ira Rosen <irar@il.ibm.com>
7451 * tree-vectorizer.h (vectorizable_condition): Add parameters.
7452 * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
7453 (get_initial_def_for_reduction): Likewise.
7454 (vectorizable_reduction): Skip the check of first operand in case
7455 of COND_EXPR. Add check that it is outer loop vectorization if
7456 nested cycle was detected. Call vectorizable_condition() for
7457 COND_EXPR. If reduction epilogue cannot be created do not fail for
7458 nested cycles (if it is not double reduction). Assert that there
7459 is only one type in the loop in case of COND_EXPR. Call
7460 vectorizable_condition() to vectorize COND_EXPR.
7461 * tree-vect-stmts.c (vectorizable_condition): Update comment.
7462 Add parameters. Allow nested cycles if called from
7463 vectorizable_reduction(). Use reduction vector variable if provided.
7464 (vect_analyze_stmt): Call vectorizable_reduction() before
7465 vectorizable_condition().
7466 (vect_transform_stmt): Update call to vectorizable_condition().
7468 2009-07-20 Christian Bruel <christian.bruel@st.com>
7470 * config/sh/sh.opt (-mfmovd): Resurrect and document.
7471 * doc/invoke.texi (-mfmovd): Likewise.
7472 * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
7474 2009-07-20 Jan Hubicka <jh@suse.cz>
7476 * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
7477 when handling SSA name.
7479 2009-07-19 Jan Hubicka <jh@suse.cz>
7481 PR tree-optimization/40676
7482 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
7483 virtual PHIs in empty BBs.
7485 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
7487 * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
7488 re-expanded the compound use gen_lowpart instead to convert to the
7491 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
7493 * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
7494 OUTER_CONST arguments.
7495 <LSHIFTRT>: Use them to allow widening if the bits shifted in from
7496 the new wider mode will be masked off.
7497 (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
7499 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
7501 * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
7502 high-order bits are zero.
7504 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
7506 * combine.c (simplify_shift_const_1): Split code to determine
7508 (try_widen_shift_mode): ... here. Allow widening for ASHIFTRT if the
7509 new bits shifted in are identical to the old sign bit.
7511 2009-07-18 Richard Guenther <rguenther@suse.de>
7514 * gimplify.c (gimplify_call_expr): Reject code using results from
7515 functions returning void.
7517 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
7519 * doc/md.texi: Document the new PowerPC "es" constraint.
7520 Document that "m" can include automodified addresses on this target,
7521 and explain how %U must be used. Extend the "Q" and "Z" documentation
7522 to suggest "es" as well as "m".
7523 * config/rs6000/constraints.md (es): New memory constraint.
7524 (Q, Z): Update strings to match new documentation.
7526 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
7528 * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
7529 offset from virtual_stack_vars_rtx and arg_pointer_rtx.
7530 * config/rs6000/predicates.md (volatile_mem_operand): Use
7531 offsettable_nonstrict_memref_p.
7532 * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
7533 (*floatunssidf2_internal): Likewise.
7534 (*fix_truncdfsi2_internal): Likewise.
7535 (*fix_trunctfsi2_internal): Likewise.
7537 2009-07-17 Anatoly Sokolov <aesok@post.ru>
7539 * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
7541 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7543 2009-07-17 Richard Guenther <rguenther@suse.de>
7546 * tree-pass.h (pass_diagnose_omp_blocks): Declare.
7547 (pass_warn_unused_result): Likewise.
7548 (TODO_set_props): Remove.
7549 * omp-low.c (diagnose_omp_structured_block_errors): Change to
7551 (pass_diagnose_omp_blocks): Define.
7552 * c-decl.c (pop_file_scope): Do not finalize the CU here.
7553 (c_gimple_diagnostics_recursively): Remove.
7554 (finish_function): Do not call it.
7555 (c_write_global_declarations): Continue after errors.
7556 Finalize the CU here.
7557 * c-gimplify.c (c_genericize): Do not gimplify here.
7558 * c-common.c (c_warn_unused_result): Move ...
7559 * tree-cfg.c (do_warn_unused_result): ... here.
7560 (run_warn_unused_result): New function.
7561 (gate_warn_unused_result): New function.
7562 (pass_warn_unused_result): New pass.
7563 * c-common.h (c_warn_unused_result): Remove.
7564 * flags.h (flag_warn_unused_result): Declare.
7565 * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
7566 * opts.c (flag_warn_unused_result): Initialize to false.
7567 * toplev.c (compile_file): Add comment.
7568 * omp-low.c (create_omp_child_function): Do not register
7569 the function with the frontend.
7570 (diagnose_omp_structured_block_errors): Prepare to be
7571 called as optimization pass.
7572 (gate_diagnose_omp_blocks): New function.
7573 (pass_diagnose_omp_blocks): New pass.
7574 * cgraph.h (cgraph_optimize): Remove.
7575 (cgraph_analyze_function): Likewise.
7576 * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
7577 * cgraphunit.c (cgraph_lower_function): Lower nested functions
7578 before their parents here.
7579 (cgraph_finalize_function): Not here.
7580 (cgraph_analyze_function): Gimplify functions here.
7581 (cgraph_finalize_compilation_unit): Continue after errors.
7582 Optimize the callgraph from here.
7583 (cgraph_optimize): Make static.
7584 * langhooks.c (write_global_declarations): Finalize the CU.
7585 * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
7586 (gimplify_function_tree): Assert we gimplify only once.
7587 Set PROP_gimple_any property.
7588 * tree-nested.c (gimplify_all_functions): New function.
7589 (lower_nested_functions): Gimplify all nested functions.
7590 * gimple.h (diagnose_omp_structured_block_errors): Remove.
7591 * passes.c (init_optimization_passes): Add pass_warn_unused_result
7592 and pass_diagnose_omp_blocks after gimplification. Do not
7593 set TODO_set_props on all_lowering_passes.
7594 (execute_one_pass): Do not handle TODO_set_props.
7595 * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
7596 (gimplify.o): Add tree-pass.h dependency.
7597 * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
7598 (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
7599 (unsave_r): Likewise.
7600 * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
7603 2009-07-17 Sandra Loosemore <sandra@codesourcery.com>
7605 * doc/service.texi (Service): Restore previously removed link,
7606 which isn't broken after all.
7608 2009-07-17 Richard Guenther <rguenther@suse.de>
7610 PR tree-optimization/40321
7611 * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
7612 PHI nodes to the maximal set.
7613 (make_values_for_phi): Add PHI arguments to the maximal set.
7614 (execute_pre): Dump PHI_GEN and the maximal set.
7616 2009-07-17 Jakub Jelinek <jakub@redhat.com>
7619 * gimplify.c (gimplify_conversion): Don't change non-conversions into
7622 2009-07-16 Sandra Loosemore <sandra@codesourcery.com>
7624 * doc/extend.texi (Nested Functions): Replace broken link with
7626 * doc/service.texi (Service): Remove broken link.
7628 2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
7631 * builtins.c (expand_builtin_memcmp): Use loc instead of
7632 EXPR_LOCATION (exp).
7633 (expand_builtin_strncmp): Likewise.
7635 2009-07-17 Aldy Hernandez <aldyh@redhat.com>
7636 Manuel López-Ibáñez <manu@gcc.gnu.org>
7639 * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
7640 builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
7641 tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
7642 c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
7643 calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
7644 tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
7645 tree-inline.c, c-common.c, c-common.h, gimple.c,
7646 tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
7647 convert.c: Add location argument to fold_{unary,binary,ternary},
7648 fold_build[123], build_call_expr, build_size_arg,
7649 build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
7650 fold_build1_initializer, fold_build2_initializer,
7651 fold_build3_initializer, fold_build_call_array,
7652 fold_build_call_array_initializer, fold_single_bit_test,
7653 omit_one_operand, omit_two_operands, invert_truthvalue,
7654 fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
7655 combine_comparisons, fold_builtin_*, fold_call_expr,
7656 build_range_check, maybe_fold_offset_to_address, round_up,
7659 2009-07-16 Jason Merrill <jason@redhat.com>
7662 * c-common.c (c_common_reswords): Add __is_standard_layout
7664 * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
7665 * doc/implement-cxx.texi: New.
7666 * doc/gcc.texi: Include it.
7668 2009-07-16 DJ Delorie <dj@redhat.com>
7670 * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
7671 compares that may be indirectly affected by previous instructions.
7673 2009-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7675 * builtins.c (do_mpc_arg2): New.
7676 (fold_builtin_2): Fold builtin cpow.
7677 * real.h (HAVE_mpc_pow): New.
7679 2009-07-16 Bingfeng Mei <bmei@broadcom.com>
7681 * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
7682 comparison to skip unprofitable schedule
7684 2009-07-16 Simon Baldwin <simonb@google.com>
7686 * gcc.c (option_map): New flag -no-canonical-prefixes.
7687 * (display_help): Print help text for new flag.
7688 * (process_command): Move options translation and language specifics
7689 and handle new flag early. Use it to set a function pointer to a
7690 prefix builder. Replace make_relative_prefix calls with calls to
7691 the function pointed to. Ignore new flag in regular options handling.
7692 * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
7694 2009-07-15 DJ Delorie <dj@redhat.com>
7696 * config/mep/mep.md (sibcall_internal): Change register to avoid
7698 (sibcall_value_internal): Likewise.
7700 2009-07-15 Eric Botcazou <ebotcazou@adacore.com>
7702 PR rtl-optimization/40710
7703 * resource.c (mark_target_live_regs): Reset DF problem to LR.
7705 2009-07-15 Adam Nemet <anemet@caviumnetworks.com>
7707 * config/mips/mips.md (*extenddi_truncate<mode>,
7708 *extendsi_truncate<mode>): Change type attribute to move_type
7709 with shift_shift. Split out code handling exts from here ...
7710 (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
7712 (*extendhi_truncateqi): Change type attribute to move_type with
7713 shift_shift. Split out code handling exts from here ...
7714 (*extendhi_truncateqi_exts): ... to this new pattern.
7716 2009-07-15 Uros Bizjak <ubizjak@gmail.com>
7718 * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
7719 instead of "and" with inverted sign bit mask value. Use
7720 "nonimmediate_operand" for operand 1 and operand 2 predicate.
7721 Allocate registers only for operand 4 and operand 5.
7723 2009-07-15 Jakub Jelinek <jakub@redhat.com>
7726 * fold-const.c (fold_cond_expr_with_comparison): When folding
7727 < and <= to MIN, make sure the MIN uses the same type as the
7728 comparison's operands.
7730 2009-07-15 Richard Earnshaw <rearnsha@arm.com>
7732 * arm.md (ior_xor): New code iterator.
7733 (split for ior/xor with shift and zero-extend): New split pattern.
7734 * arm/predicates.md (subreg_lowpart_operator): New special predicate.
7736 2009-07-15 Richard Guenther <rguenther@suse.de>
7738 * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
7741 2009-07-15 Richard Guenther <rguenther@suse.de>
7744 * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
7746 2009-07-15 Maxim Kuvyrkov <maxim@codesourcery.com>
7748 * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
7749 handle 2.6.30 kernel.
7751 2009-07-15 DJ Delorie <dj@redhat.com>
7753 * config/mep/mep.md (sibcall_internal): Change register to allow
7754 for 24-bit addresses.
7755 (sibcall_value_internal): Likewise.
7757 2009-07-14 Ghassan Shobaki <ghassan.shobaki@amd.com>
7759 * doc/invoke.texi: Added descriptions of the scheduling heuristics
7760 that are enabled/disabled by the flags introduced by a previous patch.
7762 2009-07-14 DJ Delorie <dj@redhat.com>
7764 * config/mep/mep.md (sibcall_internal): Include non-toggling
7766 (sibcall_value_internal): Likewise.
7768 2009-07-14 Taras Glek <tglek@mozilla.com>
7769 Rafael Espindola <espindola@google.com>
7771 * doc/sourcebuild.texi: Document install-plugin target.
7772 * configure.ac: Added install-plugin target to language makefiles.
7773 * configure: Regenerate.
7774 * Makefile.in: (install-plugin): Install more headers,
7775 depend on lang.install-plugin.
7777 2009-07-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
7779 * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
7782 2009-07-14 DJ Delorie <dj@redhat.com>
7784 * config/mep/mep.c (mep_vliw_jmp_match): New function.
7785 * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
7786 * config/mep/mep.md (sibcall_internal): Change test from
7787 mep_vliw_mode_match to mep_vliw_jmp_match.
7788 (sibcall_value_internal): Likewise.
7790 2009-07-14 Uros Bizjak <ubizjak@gmail.com>
7792 * config/i386/sse.md (copysign<mode>3): New expander.
7793 * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
7794 * config/i386/i386.c (ix86_build_signbit_mask): Make public.
7795 Use ix86_build_const_vector.
7796 (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
7797 IX86_BUILTIN_CPYSGNPD.
7798 (builtin_description): Add __builtin_ia32_copysignps and
7799 __builtin_ia32_copysignpd.
7800 (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
7801 and BUILT_IN_COPYSIGNF.
7803 2009-07-13 Jason Merrill <jason@redhat.com>
7805 * builtins.c (can_trust_pointer_alignment): New fn.
7806 (get_pointer_alignment): Factor it out from here.
7807 * tree.h: Declare it.
7809 2009-07-14 David Edelsohn <edelsohn@gnu.org>
7811 * config/rs6000/predicates.md (offsettable_mem_operand): Test
7814 2009-07-14 Dodji Seketeli <dodji@redhat.com>
7818 * dwarf2.out.c (gen_type_die_with_usage): Added comment.
7820 2009-07-14 Richard Guenther <rguenther@suse.de>
7821 Andrey Belevantsev <abel@ispras.ru>
7824 * cfgexpand.c (partition_stack_vars): Do not bother to update
7825 alias information when not optimizing.
7827 2009-07-14 Richard Guenther <rguenther@suse.de>
7828 Andrey Belevantsev <abel@ispras.ru>
7830 * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
7831 (pt_solution_set): Likewise.
7832 * tree-ssa-alias.c (refs_may_alias_p_1): Export.
7833 * tree-ssa-structalias.c (pt_solution_set): New function.
7834 * final.c (rest_of_clean_state): Free SSA data structures.
7835 * print-rtl.c (print_decl_name): Remove.
7836 (print_mem_expr): Implement in terms of print_generic_expr.
7837 * alias.c (ao_ref_from_mem): New function.
7838 (rtx_refs_may_alias_p): Likewise.
7839 (true_dependence): Query alias-export info.
7840 (canon_true_dependence): Likewise.
7841 (write_dependence_p): Likewise.
7842 * tree-dfa.c (get_ref_base_and_extent): For void types leave
7844 * emit-rtl.c (component_ref_for_mem_expr): Remove.
7845 (mem_expr_equal_p): Use operand_equal_p.
7846 (set_mem_attributes_minus_bitpos): Do not use
7847 component_ref_for_mem_expr.
7848 * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
7849 (update_alias_info_with_stack_vars): Likewise.
7850 (partition_stack_vars): Call update_alias_info_with_stack_vars.
7851 * tree-ssa.c (delete_tree_ssa): Do not release SSA names
7852 explicitly nor clear stmt operands.
7853 Free the decl-to-pointer map.
7854 * tree-optimize.c (execute_free_datastructures): Do not free
7855 SSA data structures here.
7856 * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
7857 * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
7858 (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
7860 (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
7862 2009-07-13 DJ Delorie <dj@redhat.com>
7864 * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
7865 unrolling at the right iteration count.
7867 * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
7870 2009-07-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
7872 * haifa-sched.c (rank_for_schedule): Introduced flags to
7873 enable/disable individual scheduling heuristics.
7874 * common.opt: Introduced flags to enable/disable individual
7875 heuristics in the scheduler.
7876 * doc/invoke.texi: Introduced flags to enable/disable individual
7877 heuristics in the scheduler.
7879 2009-07-13 Kai Tietz <kai.tietz@onevision.com>
7881 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
7882 config/i386/mingw-tls.c.
7883 * config/i386/mingw-tls.c: Removed.
7885 2009-07-13 Ira Rosen <irar@il.ibm.com>
7887 * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
7888 checks access only relevant statements.
7889 (vectorizable_reduction): Likewise.
7891 2009-07-12 Kai Tietz <kai.tietz@onevision.com>
7893 * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
7894 just for 32-bit case.
7896 2009-07-12 Jan Hubicka <jh@suse.cz>
7898 PR tree-optimization/40585
7899 * except.c (expand_resx_expr): When there already is resume
7900 instruction, produce linked list.
7901 (build_post_landing_pads): Assert that resume is empty.
7902 (connect_post_landing_pads): Handle resume lists.
7903 (dump_eh_tree): Dump resume list.
7905 2009-07-12 Ira Rosen <irar@il.ibm.com>
7907 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
7908 with additional argument.
7909 * tree-vectorizer.h (enum vect_def_type): Add
7910 vect_double_reduction_def.
7911 (vect_is_simple_reduction): Add argument.
7912 * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
7914 (vect_analyze_scalar_cycles_1): Detect double reduction. Call
7915 vect_is_simple_reduction with additional argument.
7916 (vect_analyze_loop_operations): Handle exit phi nodes in case of
7918 (reduction_code_for_scalar_code): Handle additional codes by
7919 returning ERROR_MARK for them. Fix comment and indentation.
7920 (vect_is_simple_reduction): Fix comment, add argument to specify
7921 double reduction. Detect double reduction.
7922 (get_initial_def_for_induction): Fix indentation.
7923 (get_initial_def_for_reduction): Fix comment and indentation.
7924 Handle double reduction. Create initial definitions that do not
7925 require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
7926 (vect_create_epilog_for_reduction): Fix comment, add argument to
7927 handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
7928 epilogue result extraction. Create double reduction phi node and
7929 replace relevant uses.
7930 (vectorizable_reduction): Call vect_is_simple_reduction with
7931 additional argument. Fix indentation. Update epilogue code treatment
7932 according to the changes in reduction_code_for_scalar_code. Check
7933 for double reduction. Call vect_create_epilog_for_reduction with
7934 additional argument.
7935 * tree-vect-stmts.c (process_use): Handle double reduction, update
7937 (vect_mark_stmts_to_be_vectorized): Handle double reduction.
7938 (vect_get_vec_def_for_operand): Likewise.
7940 2009-07-12 Danny Smith <dansmister@gmail.com>
7942 * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
7943 dllexport if !TREE_PUBLIC.
7944 (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
7946 2009-07-11 Anatoly Sokolov <aesok@post.ru>
7948 * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
7949 (avr_extra_arch_macro) Remove declatation.
7950 * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
7951 (avr_extra_arch_macro) Declare as static.
7952 * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
7954 2009-07-11 Jan Hubicka <jh@suse.cz>
7957 * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
7959 2009-07-11 Jakub Jelinek <jakub@redhat.com>
7962 * dwarf2out.c (dw_fde_struct): Add in_std_section and
7963 cold_in_std_section bits.
7964 (dwarf2out_begin_prologue): Initialize them.
7965 (dwarf2out_finish): Don't emit FDE range into .debug_ranges
7966 if already covered by text_section or cold_text_section range.
7968 PR rtl-optimization/40667
7969 * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
7970 * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
7971 * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
7972 * config/i386/i386.c (ix86_minimum_alignment): New function.
7973 * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
7974 * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
7975 * emit-rtl.c (gen_reg_rtx): Likewise.
7976 * function.c (assign_parms): Likewise. If nominal_type needs
7977 bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
7978 rather than passed_type's alignment.
7981 * function.c (assign_parm_setup_stack): Adjust
7982 MEM_OFFSET (data->stack_parm) if promoted_mode is different
7983 from nominal_mode on big endian.
7985 2009-07-11 Paolo Bonzini <bonzini@gnu.org>
7987 * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
7989 2009-07-10 DJ Delorie <dj@redhat.com>
7991 * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
7993 2009-07-10 Mark Mitchell <mark@codesourcery.com>
7995 * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
7997 (thumb2_cbnz): Likewise.
7999 2009-07-10 David Daney <ddaney@caviumnetworks.com>
8002 * config.gcc (supported_defaults): Add synci.
8003 (with_synci): Add validation.
8004 (all_defaults): Add synci.
8005 * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
8008 * config/mips/mips.opt (msynci): New option.
8009 * config/mips/mips.c (mips_override_options): Warn on use of
8010 -msynci for targets that do now support it.
8011 * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
8013 * gcc/doc/invoke.texi (-msynci): Document the new option.
8014 * doc/install.texi (--with-synci): Document the new option.
8016 2009-07-10 Richard Guenther <rguenther@suse.de>
8018 PR tree-optimization/40496
8019 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
8020 the PHI result with a compatible type.
8022 2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
8026 * c.opt (Wunused-result): New.
8027 * doc/invoke.texi: Document it.
8028 * c-common.c (c_warn_unused_result): Use it.
8030 2009-07-09 DJ Delorie <dj@redhat.com>
8032 * targhooks.c (default_target_can_inline_p): Rename from
8033 default_target_option_can_inline_p.
8034 * targhooks.h (default_target_can_inline_p): Likewise.
8035 * target-def.h (TARGET_CAN_INLINE_P): Rename from
8036 TARGET_OPTION_CAN_INLINE_P.
8037 * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
8038 * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
8039 (mep_target_can_inline_p): Rename from
8040 mep_target_option_can_inline_p.
8043 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
8044 registers used to pass vectors.
8046 * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
8048 2009-07-09 Tom Tromey <tromey@redhat.com>
8050 * unwind-dw2-fde-darwin.c: Include dwarf2.h.
8051 * config/mmix/mmix.c: Include dwarf2.h.
8052 * config/rs6000/darwin-fallback.c: Include dwarf2.h.
8053 * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
8054 * config/sh/sh.c: Include dwarf2.h.
8055 * config/i386/i386.c: Include dwarf2.h.
8056 * Makefile.in (DWARF2_H): Remove 'elf'.
8057 * except.c: Include dwarf2.h.
8058 * unwind-dw2.c: Include dwarf2.h.
8059 * dwarf2out.c: Include dwarf2.h.
8060 * unwind-dw2-fde-glibc.c: Include dwarf2.h.
8061 * unwind-dw2-fde.c: Include dwarf2.h.
8062 * dwarf2asm.c: Include dwarf2.h.
8064 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
8066 * haifa-sched.c (insn_finishes_cycle_p): New static function.
8067 (max_issue): Use it.
8068 * sched-int.h (struct sched_info: insn_finishes_block_p): New
8070 * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
8071 (region_sched_info): Update.
8072 * sched-ebb.c (ebb_sched_info): Update.
8073 * modulo-sched.c (sms_sched_info): Update.
8074 * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
8076 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
8078 * varasm.c (build_constant_desc): Don't share RTL in pool entries.
8080 2009-07-09 Basile Starynkevitch <basile@starynkevitch.net>
8082 * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
8084 2009-07-09 Jakub Jelinek <jakub@redhat.com>
8087 * fold-const.c (fold_cond_expr_with_comparison): Don't replace
8088 arg1 with arg01 if arg1 is already INTEGER_CST.
8090 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
8092 * simplify-rtx.c (simplify_binary_operation_1) <AND>:
8093 Transform (and (truncate)) into (truncate (and)).
8095 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
8097 * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
8098 creating LHS paradoxical subregs. Fix surrounding returns to
8099 use NULL_RTX rather than 0.
8101 2009-07-08 DJ Delorie <dj@redhat.com>
8103 * config/mep/mep.c: (mep_option_can_inline_p): New.
8104 (TARGET_OPTION_CAN_INLINE_P): Define.
8106 2009-07-08 Mark Wielaard <mjw@redhat.com>
8109 * dwarf2out.c (add_data_member_location_attribute): When we have
8110 only a constant offset don't emit a new location description using
8111 DW_OP_plus_uconst, but just add the constant with add_AT_int, when
8114 2009-07-08 Richard Henderson <rth@redhat.com>
8117 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
8118 (enum reg_class): Add CLOBBERED_REGS.
8119 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
8120 * config/i386/i386.c (ix86_conditional_register_usage): Moved
8121 from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
8122 (ix86_function_ok_for_sibcall): Tidy. Disallow MS->SYSV sibcalls.
8123 (ix86_expand_call): Use sibcall_insn_operand when needed. Don't
8124 force 64-bit sibcalls into R11.
8125 * config/i386/constraints.md (U): New constraint.
8126 * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
8127 (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
8128 (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
8130 2009-07-08 Shujing Zhao <pearly.zhao@oracle.com>
8132 * basic-block.h (dump_regset, debug_regset): Remove duplicate
8134 * c-objc-common.h (c_initialize_diagnostics): Ditto.
8135 * ebitmap.h (dump_ebitmap): Ditto.
8136 * optabs.h (optab_libfunc): Ditto.
8137 * tree.h (tree_expr_nonzero_warnv_p): Ditto.
8138 * tree-flow.h (vect_can_force_dr_alignment_p,
8139 get_vectype_for_scalar_type): Ditto.
8140 (vectorize_loops): Move prototype to ...
8141 * tree-vectorizer.h: ... here. Also, adjust comment.
8142 (vect_set_verbosity_level): Remove duplicate prototype.
8143 * tree-ssa-loop.c: Include tree-vectorizer.h.
8144 * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
8146 2009-07-08 Nick Clifton <nickc@redhat.com>
8148 * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
8151 2009-07-08 DJ Delorie <dj@redhat.com>
8153 * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
8154 cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
8155 cpmovtocc_P0S_P1): Mark volatile. Note which registers are
8157 * config/mep/intrinsics.md: Regenerated.
8158 * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
8159 registers when asm() or calls are detected.
8161 2009-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
8164 * gimplify.c (gimplify_expr): Propagate no_warning flag when
8166 * gimple (gimple_build_call_from_tree): Likewise.
8167 * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
8168 no_warning flag before warning.
8170 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
8172 * tree.c (set_expr_locus): Remove.
8173 * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
8174 * c-typeck.c (c_finish_stmt_expr): Replace EXPR_LOCUS by
8176 * gimplify.c (internal_get_tmp_var): Likewise.
8177 (gimplify_call_expr): Likewise.
8178 (gimplify_one_sizepos): Likewise.
8180 2009-07-07 Eric Botcazou <ebotcazou@adacore.com>
8183 * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
8184 to variables for debugging purposes.
8186 2009-06-23 Mark Loeser <mark@halcy0n.com>
8189 * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
8191 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
8193 * pretty-print.c (pp_base_format): Remove %J.
8194 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8195 gcc_cxxdiag_char_table): Likewise.
8196 (init_dynamic_diag_info): Likewise.
8198 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
8200 * pretty-print.c (pp_base_format): Remove %H.
8201 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
8202 gcc_cxxdiag_char_table): Likewise.
8203 (init_dynamic_diag_info): Likewise.
8204 * config/mep/mep.c (mep_select_section): Likewise.
8206 2009-07-07 Duncan Sands <baldrick@free.fr>
8208 * final.c (pass_clean_state): Give the pass a name.
8209 * passes.c (pass_rest_of_compilation): Likewise.
8210 * tree-optimize.c (pass_all_optimizations): Likewise.
8212 2009-07-07 H.J. Lu <hongjiu.lu@intel.com>
8214 * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
8215 an extra 'decl' for error_at.
8217 2009-07-07 Jakub Jelinek <jakub@redhat.com>
8220 * tree-tailcall.c (adjust_return_value_with_ops,
8221 create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
8222 if it has complex or vector type.
8224 2009-07-07 Olivier Hainque <hainque@adacore.com>
8226 * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
8229 2009-07-07 Basile Starynkevitch <basile@starynkevitch.net>
8231 * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
8233 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
8235 * cgraphunit.c: Replace %J by an explicit location. Update all calls.
8236 * c-decl.c: Likewise.
8237 * function.c: Likewise.
8238 * varasm.c: Likewise.
8239 * tree-ssa.c: Likewise.
8240 * c-common.c: Likewise.
8241 * tree-cfg.c: Likewise.
8242 * config/spu/spu.c: Likewise.
8243 * config/ia64/ia64.c: Likewise.
8244 * config/v850/v850.c: Likewise.
8246 2009-07-06 DJ Delorie <dj@redhat.com>
8248 * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
8249 * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
8250 unspecified accesses to control registers.
8251 * config/mep/intrinsics.md: Regenerate.
8252 * config/mep/intrinsics.h: Regenerate.
8253 * config/mep/mep-intrin.h: Regenerate.
8255 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
8257 * c-lex.c: Replace %H by an explicit location. Update all calls.
8258 * c-common.c: Likewise.
8259 * c-decl.c: Likewise.
8260 * c-typeck.c: Likewise.
8261 * fold-const.c: Likewise.
8262 * gimplify.c: Likewise.
8264 * tree-cfg.c: Likewise.
8265 * tree-ssa-loop-niter.c: Likewise.
8266 * tree-vrp.c: Likewise.
8267 * value-prof.c: Likewise.
8269 2009-07-06 Diego Novillo <dnovillo@google.com>
8271 * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
8272 if it has one. Handle cases where VAR does not have an
8273 annotation or cfun is NULL.
8275 2009-07-06 Diego Novillo <dnovillo@google.com>
8277 * tree.c: Include debug.h.
8278 (initialize_tree_contains_struct): New.
8279 (init_ttree): Call it.
8280 (tree_node_structure_for_code): Factor out of ...
8281 (tree_node_structure): ... here.
8282 * treestruct.def (TS_PHI_NODE): Remove.
8283 (TS_GIMPLE_STATEMENT): Remove.
8285 2009-07-06 Diego Novillo <dnovillo@google.com>
8287 * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
8288 (debug_tree_chain): Handle cycles.
8290 2009-07-06 Nick Clifton <nickc@redhat.com>
8291 DJ Delorie <dj@redhat.com>
8293 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8294 __FMOVD_ENABLED__ is defined.
8296 (TARGET_FMOVD): Provide a default definition.
8297 (MASK_FMOVD): Likewise.
8298 (TARGET_CPU_CPP_BUILTINS): Define
8299 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8300 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8301 two fmov instructions depending upon whether TARGET_FMOVD is enabled.
8302 (split for DF load from memory into register): Also handle
8303 MEMs which consist of REG+DISP addressing.
8304 (split for DF store from register to memory): Likewise.
8305 (movsf_ie): Always use single fp_mode.
8306 * config/sh/sh.c (sh_override_options): Do not automatically
8307 enable TARGET_MOVD for the SH2A when supporting doubles - leave
8308 that to the -mfmovd command line switch.
8309 (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
8310 (fldi_ok): Always allow.
8311 * config/sh/sh.opt (mfmovd): Remove this switch.
8312 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8314 2009-07-06 J"orn Rennecke <joern.rennecke@arc.com>
8315 Kaz Kojima <kkojima@gcc.gnu.org>
8317 PR rtl-optimization/30807
8318 * postreload.c (reload_combine): For every new use of REG_SUM,
8319 record the use of BASE.
8321 2009-07-06 Jan Hubicka <jh@suse.cz>
8323 * params.def: Revert my accidental commit at 2009-06-30.
8325 2009-07-04 Ian Lance Taylor <iant@google.com>
8328 * config/i386/msformat-c.c (mingw_format_attributes): Declare as
8330 (mingw_format_attribute_overrides): Likewise.
8332 2009-07-04 Jakub Jelinek <jakub@redhat.com>
8335 * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
8336 don't check cfa.reg. Instead of cfa.indirect use
8337 fde && fde->drap_reg != INVALID_REGNUM test.
8339 2009-07-04 Eric Botcazou <ebotcazou@adacore.com>
8341 * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
8343 2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
8346 * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
8348 2009-07-03 Richard Guenther <rguenther@suse.de>
8350 PR tree-optimization/40640
8351 * tree-switch-conversion.c (build_arrays): Perform arithmetic
8354 2009-07-03 Jan Hubicka <jh@suse.cz>
8356 * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
8357 for size, reduce amount of inlining.
8359 2009-07-03 Richard Guenther <rguenther@suse.de>
8362 * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
8363 if t +- x is known to not overflow and the conversion widens the
8365 * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
8367 2009-07-03 Jan Hubicka <jh@suse.cz>
8369 * ipa-pure-const.c (analyze): Update loop optimizer init.
8370 * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
8371 try_remove_empty_loop, remove_empty_loops): Remove.
8372 * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
8373 * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
8374 to mark regular loops as neccesary.
8375 (degenerate_phi_p): New function.
8376 (propagate_necessity, remove_dead_phis): Use it.
8377 (forward_edge_to_pdom): Likewise.
8378 (eliminate_unnecessary_stmts): Take care to remove uses of results of
8379 virtual PHI nodes that became unreachable.
8380 (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
8381 * tree-flow.h (remove_empty_loops): Remove.
8382 * passes.c (init_optimization_passes): Remove.
8384 2009-07-03 Uros Bizjak <ubizjak@gmail.com>
8386 * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
8387 can_create_pseudo_p.
8388 (*fix_trunc<mode>_i387_1): Ditto.
8389 (*floathi<mode>2_1): Ditto.
8390 (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
8391 (*fistdi2_1): Ditto.
8392 (*fist<mode>2_1): Ditto.
8393 (frndintxf2_floor): Ditto.
8394 (*fist<mode>2_floor_1): Ditto.
8395 (frndintxf2_ceil): Ditto.
8396 (*fist<mode>2_ceil_1): Ditto.
8397 (frndintxf2_trunc): Ditto.
8398 (frndintxf2_mask_pm): Ditto.
8399 (fxam<mode>2_i387_with_temp): Ditto.
8400 * config/i386/sse.md (mulv16qi3): Ditto.
8401 (*sse2_mulv4si3): Ditto.
8403 (sse4_2_pcmpestr): Ditto.
8404 (sse4_2_pcmpistr): Ditto.
8406 2009-07-03 Jan Hubicka <jh@suse.cz>
8408 * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
8409 (mark_stmt_necessary): Set it.
8410 (mark_operand_necessary): Set it.
8411 (mark_control_dependent_edges_necessary): Set it.
8412 (mark_virtual_phi_result_for_renaming): New function.
8413 (get_live_post_dom): New function.
8414 (forward_edge_to_pdom): New function.
8415 (remove_dead_stmt): Fix handling of control dependences.
8416 (tree_dce_init): Init new bitmap.
8417 (tree_dce_done): Free it.
8419 2009-07-02 Richard Guenther <rguenther@suse.de>
8422 * tree-ssa-structalias.c (new_var_info): Initialize
8425 2009-07-02 Jan Hubicka <jh@suse.cz>
8427 * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
8430 2009-07-02 Paolo Bonzini <bonzini@gnu.org>
8432 * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
8433 instead of recomputing it. Adjust calls.
8434 (emit_store_flag): Adjust recursive calls.
8436 2009-07-02 Richard Guenther <rguenther@suse.de>
8438 * tree-ssa-live.c (remove_unused_locals): Do not remove
8440 * tree-ssa-structalias.c (handle_lhs_call): Delay setting
8441 of DECL_EXTERNAL for HEAP variables.
8442 (compute_points_to_sets): Set DECL_EXTERNAL for escaped
8443 HEAP variables. Do not adjust RESTRICT vars.
8444 (find_what_var_points_to): Nobody cares if something
8447 2009-07-02 Ben Elliston <bje@au.ibm.com>
8449 * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
8450 pc_low and pc_high declarations to the top of the function.
8452 2009-07-01 DJ Delorie <dj@redhat.com>
8454 * config/mep/mep.c (mep_handle_option): Leave IVC2 control
8456 (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
8457 * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
8458 unspecified accesses to control registers.
8459 * config/mep/intrinsics.md: Regenerate.
8460 * config/mep/intrinsics.h: Regenerate.
8461 * config/mep/mep-intrin.h: Regenerate.
8463 2009-07-01 Anthony Green <green@moxielogic.com>
8465 * config/moxie/moxie.c (moxie_expand_prologue): Use dec
8466 instruction when possible.
8467 (moxie_expand_prologue): Ditto. Also, save an instruction and
8468 some complexity by popping off of $r12 instead of $sp.
8469 * config/moxie/moxie.md (movsi_pop): Don't assume $sp. Take two
8472 2009-07-01 Richard Henderson <rth@redhat.com>
8475 * function.c (reposition_prologue_and_epilogue_notes): If epilogue
8476 contained no insns, reposition note before last insn.
8478 2009-07-01 Richard Henderson <rth@redhat.com>
8481 * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
8482 DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
8484 2009-07-01 Michael Meissner <meissner@linux.vnet.ibm.com>
8487 * config/rs6000/rs6000.c (print_operand): Undo change that breaks
8488 darwin9 for printing reg addresses with %y.
8490 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
8492 * combine.c (force_to_mode): Handle TRUNCATE. Factor out
8493 truncation from operands in binary operations.
8495 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
8498 2009-01-11 Adam Nemet <anemet@caviumnetworks.com>
8499 * expmed.c (store_bit_field_1): Properly truncate the paradoxical
8500 subreg of op0 to the original op0.
8502 * expmed.c (store_bit_field_1): Use a temporary as the destination
8503 instead of a paradoxical subreg when we need to truncate the result.
8505 2009-07-01 DJ Delorie <dj@redhat.com>
8507 * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
8508 names to VLIW variants.
8509 (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
8510 * config/mep/intrinsics.md: Regenerate.
8511 * config/mep/intrinsics.h: Regenerate.
8512 * config/mep/mep-intrin.h: Regenerate.
8514 2009-07-01 Jakub Jelinek <jakub@redhat.com>
8517 * jump.c (returnjump_p): Revert last patch.
8518 * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
8520 2009-07-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
8523 * pa.md (casesi32p): Use jump table label to determine the offset
8525 (casesi64p): Likewise.
8527 * pa.c (forward_branch_p): Return bool type. Use instruction
8528 addresses when available. Assert that INSN has a jump label.
8529 (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
8532 2009-07-01 Richard Guenther <rguenther@suse.de>
8534 PR tree-optimization/19831
8535 * tree-ssa-dce.c (propagate_necessity): Calls to functions
8536 that only act as barriers do not make any previous stores necessary.
8537 * tree-ssa-structalias.c (handle_lhs_call): Delay making
8538 HEAP variables global, do not add a constraint from nonlocal.
8539 (find_func_aliases): Handle escapes through return statements.
8540 (compute_points_to_sets): Make escaped HEAP variables global.
8542 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
8545 * expmed.c (emit_store_flag): Perform a conversion if necessary,
8546 after reducing a DImode cstore to SImode.
8548 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
8550 * expr.c (expand_expr_real_1): Reinstate fallthrough to
8551 TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
8553 2009-07-01 Maciej W. Rozycki <macro@linux-mips.org>
8555 * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro. Set to 1.
8556 * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro. Redefine the
8558 * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
8559 and umod_optab if TARGET_BSD_DIVMOD.
8560 * config/vax/lib1funcs.asm: New file.
8561 * config/vax/t-linux: New file.
8562 * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
8564 2009-06-30 Jakub Jelinek <jakub@redhat.com>
8567 * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
8568 to type arguments that have void type.
8571 * dwarf2out.c (gen_formal_parameter_die): Call
8572 equate_decl_number_to_die if node is different from origin.
8574 2009-06-30 Anthony Green <green@moxielogic.com>
8576 Clean up moxie port for --enable-build-with-cxx.
8577 * config/moxie/moxie.c (moxie_function_value): First two
8578 parameters are const_tree, not tree.
8579 * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
8580 (REG_CLASS_NAMES): Ditto.
8581 (REGNO_REG_CLASS): Ditto.
8582 * config/moxie/moxie-protos.h (moxie_override_options): Declare.
8583 (moxie_function_value): Fix constyness of arguments.
8585 2009-06-30 Eric Botcazou <ebotcazou@adacore.com>
8587 * cgraphunit.c (cgraph_finalize_compilation_unit): Call
8588 finalize_size_functions before further processing.
8589 * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
8590 (variable_size): Call self_referential_size on size expressions
8591 that contain a PLACEHOLDER_EXPR.
8592 (size_functions): New static variable.
8593 (copy_self_referential_tree_r): New static function.
8594 (self_referential_size): Likewise.
8595 (finalize_size_functions): New global function.
8596 * tree.c: Include tree-inline.h.
8597 (push_without_duplicates): New static function.
8598 (find_placeholder_in_expr): New global function.
8599 (substitute_in_expr) <tcc_declaration>: Return the replacement object
8601 <tcc_expression>: Likewise.
8602 <tcc_vl_exp>: If the replacement object is a constant, try to inline
8603 the call in the expression.
8604 * tree.h (finalize_size_functions): Declare.
8605 (find_placeholder_in_expr): Likewise.
8606 (FIND_PLACEHOLDER_IN_EXPR): New macro.
8607 (substitute_placeholder_in_expr): Update comment.
8608 * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
8610 (copy_tree_body_r): Likewise.
8611 (copy_tree_body): New static function.
8612 (maybe_inline_call_in_expr): New global function.
8613 * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
8614 (maybe_inline_call_in_expr): Declare.
8615 * Makefile.in (tree.o): Depend on TREE_INLINE_H.
8616 (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
8619 2009-06-30 Richard Guenther <rguenther@suse.de>
8621 * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
8623 (propagate_necessity): Do not mark reaching defs of stores
8626 2009-06-30 Jan Hubicka <jh@suse.cz>
8628 * cfgloopanal.c (check_irred): Move into ...
8629 (mark_irreducible_loops): ... here; return true if ireducible
8631 * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
8632 (analyze_function): Try to prove loop finiteness.
8633 * cfgloop.h (mark_irreducible_loops): Update prototype.
8634 * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
8636 2009-06-30 Basile Starynkevitch <basile@starynkevitch.net>
8638 * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
8640 2009-06-30 Ira Rosen <irar@il.ibm.com>
8642 PR tree-optimization/40542
8643 * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
8646 2009-06-30 Martin Jambor <mjambor@suse.cz>
8648 PR tree-optimization/40582
8649 * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
8650 than useless_type_conversion_p.
8651 (generate_subtree_copies): Increment sra_stats.subtree_copies at a
8654 2009-06-30 Martin Jambor <mjambor@suse.cz>
8657 * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
8659 2009-06-30 Richard Guenther <rguenther@suse.de>
8661 * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
8662 use ao_ref references.
8663 (walk_aliased_vdefs): Likewise.
8664 * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
8665 * tree-ssa-dce.c (struct ref_data): Remove.
8666 (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
8667 (mark_aliased_reaching_defs_necessary): Adjust.
8668 (mark_all_reaching_defs_necessary_1): Likewise.
8670 2009-06-30 Paolo Bonzini <bonzini@gnu.org>
8673 * expmed.c (emit_cstore): New name of emit_store_flag_1.
8674 (emit_store_flag_1): Extract from emit_store_flag, adjust
8675 calls to (what now is) emit_cstore.
8676 (emit_store_flag): Call emit_store_flag_1 and also use it
8677 for what used to be recursive calls.
8679 2009-06-30 Wei Guozhi <carrot@google.com>
8682 * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
8683 if the target bb post dominates from bb.
8684 * config/i386/i386.c (memory_address_length): Check existence of base
8685 register before using it.
8687 2009-06-30 Nick Clifton <nickc@redhat.com>
8688 DJ Delorie <dj@redhat.com>
8690 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
8691 __FMOVD_ENABLED__ is defined.
8693 (TARGET_FMOVD): Provide a default definition.
8694 (MASK_FMOVD): Likewise.
8695 (TARGET_CPU_CPP_BUILTINS): Define
8696 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
8697 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
8698 two fmov instructions depending upon whether TARGET_FMOVD is
8700 (split for DF load from memory into register): Also handle
8701 MEMs which consist of REG+DISP addressing.
8702 (split for DF store from register to memory): Likewise.
8703 * config/sh/sh.opt (mfmovd): Remove this switch.
8704 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
8705 * config/sh/sh.c (sh_override_options): Do not automatically
8706 enable TARGET_MOVD for the SH2A when supporting doubles - leave
8707 that to the -mfmovd command line switch.
8709 * config/sh/sh.c (broken_move): Do not restrict fldi test to only
8711 (fldi_ok): Always allow.
8712 * config/sh/sh.md (movsf_ie): Always use single fp_mode.
8714 2009-06-29 DJ Delorie <dj@redhat.com>
8716 * doc/install.texi (mep-x-elf): Correct chip's full name.
8718 2009-06-29 H.J. Lu <hongjiu.lu@intel.com>
8720 * doc/extend.texi: Fix typo.
8722 2009-06-29 Tom Tromey <tromey@redhat.com>
8725 * Makefile.in (DWARF2_H): New variable.
8727 (dwarf2out.o): Likewise.
8728 (dwarf2asm.o): Likewise.
8729 * config/i386/t-i386: Use DWARF2_H.
8730 * except.c: Include elf/dwarf2.h.
8731 * unwind-dw2.c: Include elf/dwarf2.h.
8732 * dwarf2out.c: Include elf/dwarf2.h.
8733 (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
8734 <dtprel>: New field.
8735 (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
8736 (size_of_loc_descr): Likewise.
8737 (output_loc_operands_raw): Likewise.
8738 (output_loc_operands): Handle new dtprel field.
8739 (loc_checksum): Update.
8740 (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
8741 * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
8742 * unwind-dw2-fde.c: Include elf/dwarf2.h.
8743 * dwarf2asm.c: Include elf/dwarf2.h.
8744 * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
8745 * config/mmix/mmix.c: Include elf/dwarf2.h.
8746 * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
8747 * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
8748 * config/sh/sh.c: Include elf/dwarf2.h.
8749 * config/i386/i386.c: Include elf/dwarf2.h.
8751 2009-06-29 DJ Delorie <dj@redhat.com>
8753 * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
8755 * doc/extend.texi: Add MeP attributes and pragmas.
8756 * doc/invoke.text: Add MeP Options.
8757 * doc/contrib.texi: Add MeP contribution.
8758 * doc/md.texi: Add MeP constraints.
8759 * doc/install.texi: Add MeP target.
8761 2009-06-30 Anatoly Sokolov <aesok@post.ru>
8763 * target.h (struct gcc_target): Add frame_pointer_required field.
8764 * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
8765 (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
8766 * ira.c (setup_eliminable_regset): Use frame_pointer_required target
8768 * reload1.c (update_eliminables): (Ditto.).
8769 * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
8770 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8771 (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
8773 * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
8775 * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
8776 * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8777 (arm_frame_pointer_required): New function.
8779 * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
8780 * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8781 (avr_frame_pointer_required_p): Declare as static.
8782 * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
8784 * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
8785 * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8786 (bfin_frame_pointer_required): Make as static, change return type
8788 * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
8790 * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
8791 * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8792 (cris_frame_pointer_required): New function.
8794 * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
8796 * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
8797 * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8798 (fr30_frame_pointer_required): New function.
8800 * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
8801 * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8802 (frv_frame_pointer_required): Make as static, change return type
8804 * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
8806 * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
8807 * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8808 (ix86_frame_pointer_required): Make as static, change return type to
8810 * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
8812 * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
8813 * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8815 * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
8817 * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
8819 * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
8821 * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
8822 * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8823 (mips_frame_pointer_required): Make as static.
8824 * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
8826 * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
8827 * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8828 (mmix_frame_pointer_required): Mew function.
8830 * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
8831 * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8833 * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
8835 * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
8837 * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
8839 * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
8840 (CAN_ELIMINATE): Redefine.
8841 * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
8842 (sparc_frame_pointer_required): New function.
8843 (sparc_can_eliminate): New function.
8844 * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
8846 * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
8847 * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8849 * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
8850 * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
8851 (xtensa_frame_pointer_required): Make as static, change return type
8853 * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
8856 2009-06-29 Olatunji Ruwase <tjruwase@google.com>
8858 * doc/plugins.texi: Document PLUGIN_START_UNIT.
8859 * toplev.c (compile_file): Call PLUGIN_START_UNIT.
8860 * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
8861 * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
8862 (register_callback): Handle PLUGIN_START_UNIT.
8863 (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
8865 2009-06-29 Eric Botcazou <ebotcazou@adacore.com>
8867 * tree.c (process_call_operands): Propagate TREE_READONLY from the
8869 (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
8870 (build3_stat): Propagate TREE_READONLY for COND_EXPR.
8872 2009-06-29 Daniel Jacobowitz <dan@codesourcery.com>
8874 * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
8877 2009-06-29 Uros Bizjak <ubizjak@gmail.com>
8879 * doc/extend.texi (Additional Floating Types): __float128 is also
8880 supported on i386 targets.
8882 2009-06-29 Richard Guenther <rguenther@suse.de>
8885 * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
8887 (pt_solutions_same_restrict_base): Declare.
8888 * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
8890 (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
8891 (make_constraint_from, make_copy_constraint): Move earlier.
8892 (make_constraint_from_heapvar): New function.
8893 (make_constraint_from_restrict): Likewise.
8894 (handle_lhs_call): Use it.
8895 (find_func_aliases): Use it to track conversions to restrict
8897 (struct fieldoff): Add only_restrict_pointers flag.
8898 (push_fields_onto_fieldstack): Initialize it.
8899 (create_variable_info_for): Track global restrict qualified pointers.
8900 (intra_create_variable_infos): Use make_constraint_from_heapvar.
8901 Track restrict qualified pointer arguments.
8902 (set_uids_in_ptset): Use varinfo is_global_var flag.
8903 (find_what_var_points_to): Set the vars_contains_restrict flag.
8904 Always create the points-to solution for sets including restrict tags.
8905 (pt_solutions_same_restrict_base): New function.
8906 * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
8907 qualified pointers use pt_solutions_same_restrict_base as
8908 additional source for disambiguation.
8910 2009-06-29 Richard Guenther <rguenther@suse.de>
8913 * alias.c (find_base_decl): Remove.
8914 (get_deref_alias_set_1): Remove restrict handling.
8915 * c-common.c (c_apply_type_quals_to_decl): Do not set
8916 DECL_POINTER_ALIAS_SET.
8917 * gimplify.c (find_single_pointer_decl_1): Remove.
8918 (find_single_pointer_decl): Likewise.
8919 (internal_get_tmp_var): Remove restrict handling.
8920 (gimple_regimplify_operands): Likewise.
8921 * omp-low.c (expand_omp_atomic_pipeline): Do not set
8922 DECL_POINTER_ALIAS_SET. Use ref-all pointers.
8923 * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
8924 * tree.c (restrict_base_for_decl): Remove.
8925 (init_ttree): Do not allocate it.
8926 (make_node_stat): Do not set DECL_POINTER_ALIAS_SET. Set
8927 LABEL_DECL_UID for label decls.
8928 (copy_node_stat): Do not copy restrict information.
8929 (decl_restrict_base_lookup): Remove.
8930 (decl_restrict_base_insert): Likewise.
8931 (print_restrict_base_statistics): Likewise.
8932 (dump_tree_statistics): Do not call print_restrict_base_statistics.
8933 * tree.h (DECL_POINTER_ALIAS_SET): Remove.
8934 (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
8935 (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
8936 (LABEL_DECL_UID): Adjust.
8937 (DECL_BASED_ON_RESTRICT_P): Remove.
8938 (DECL_GET_RESTRICT_BASE): Likewise.
8939 (SET_DECL_RESTRICT_BASE): Likewise.
8940 (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
8942 * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
8943 instead of DECL_POINTER_ALIAS_SET.
8944 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
8945 * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
8946 * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
8948 2009-06-29 Richard Guenther <rguenther@suse.de>
8950 PR tree-optimization/40579
8951 * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
8952 the IL to simplify has constants that overflowed.
8954 2009-06-28 Uros Bizjak <ubizjak@gmail.com>
8956 PR tree-optimization/40550
8957 * tree-vect-generic.c (expand_vector_operations_1): Compute in
8958 vector_compute_type only when the size of vector_compute_type is
8959 less than the size of type.
8961 2009-06-28 Eric Botcazou <ebotcazou@adacore.com>
8963 * fold-const.c (contains_label_1): Fix comments.
8964 (contains_label_p): Do not walk trees multiple time.
8966 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
8968 * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
8969 * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
8970 cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
8971 ix86_fp_comparison_operator.
8972 (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
8973 *fp_jcc_2_sse, *fp_jcc_2_387): Delete
8974 (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
8975 *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
8976 !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
8977 to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
8978 (related splits): Change predicate to ix86_fp_comparison_operator.
8979 * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
8980 instead of ix86_fp_comparison_codes.
8981 (ix86_trivial_fp_comparison_operator,
8982 ix86_fp_comparison_operator): New.
8983 * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
8984 (ix86_expand_compare): Eliminate last two parameters.
8985 (ix86_fp_jump_nontrivial_p): Kill.
8986 * config/i386/i386.c (put_condition_code): Eliminate call to
8987 ix86_fp_comparison_codes and subsequent assertion.
8988 (ix86_fp_comparison_codes): Eliminate.
8989 (ix86_fp_swap_condition): New.
8990 (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
8991 ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
8992 into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
8993 (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
8994 and ix86_fp_swap_condition.
8995 (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
8996 Use ix86_fp_comparison_strategy.
8997 (ix86_expand_compare): Likewise. Eliminate last two arguments.
8998 (ix86_fp_jump_nontrivial_p): Eliminate.
8999 (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple. Adjust
9000 call to ix86_expand_compare.
9001 (ix86_split_fp_branch, ix86_expand_setcc,
9002 ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
9003 ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
9005 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
9007 * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
9008 related to jump_clobbers.
9009 * config/arm/arm.md (conds): Remove jump_clob case.
9010 (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
9011 splits): Change comparison_operator to arm_comparison_operator.
9012 (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
9015 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
9017 * dojump.c (do_compare_rtx_and_jump): Try swapping the
9018 condition for floating point modes.
9019 * expmed.c (emit_store_flag_1): Move here a bigger part
9021 (emit_store_flag): Try swapping the condition for floating point
9023 * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
9025 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
9027 * expr.c (expand_expr_real_1): Just use do_store_flag.
9028 (do_store_flag): Drop support for TRUTH_NOT_EXPR. Use
9029 emit_store_flag_force.
9030 * expmed.c (emit_store_flag_force): Copy here trick
9031 previously in expand_expr_real_1. Try reversing the comparison.
9032 (emit_store_flag_1): Work if target is NULL.
9033 (emit_store_flag): Work if target is NULL, using the result mode
9034 from the comparison. Use split_comparison, restructure final part
9035 to simplify conditionals.
9037 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
9039 * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
9040 * dojump.c (do_jump): Change handling of floating-point
9041 ops to use just do_compare_and_jump.
9042 (split_comparison): New.
9043 (do_compare_rtx_and_jump): Add here logic coming previously
9044 in do_jump, using split_comparison.
9046 2009-06-27 H.J. Lu <hongjiu.lu@intel.com>
9049 * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
9051 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9053 * tree-ssa-alias.c: Fix unintentional commit.
9055 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9057 * passes.c (execute_one_pass): Fix unintentional commit.
9059 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9061 * df-problems.c (df_set_seen, df_unset_seen): Delete.
9062 (df_rd_local_compute, df_md_local_compute): Inline them.
9064 (df_md_scratch): New.
9065 (df_md_alloc, df_md_free): Allocate/free it.
9066 (df_md_local_compute): Only include live registers in init.
9067 (df_md_transfer_function): Prune the in-set computed by
9068 the confluence function, and the gen-set too.
9070 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9072 PR rtl-optimization/26854
9073 * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
9074 * df-problems.c (df_rd_add_problem): Fix comment.
9075 (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
9076 df_md_simulate_artificial_defs_at_top,
9077 df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
9078 df_md_bb_local_compute, df_md_local_compute, df_md_reset,
9079 df_md_transfer_function, df_md_init, df_md_confluence_0,
9080 df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
9081 problem_MD, df_md_add_problem): New.
9082 * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
9083 df_md_get_bb_info): New.
9084 (DF_LAST_PROBLEM_PLUS1): Adjust.
9086 * Makefile.in (fwprop.o): Include domwalk.h.
9087 * fwprop.c: Include domwalk.h.
9088 (reg_defs, reg_defs_stack): New.
9089 (bitmap_only_bit_between): Remove.
9090 (process_defs): New.
9091 (process_uses): Use reg_defs and local_md instead of
9092 bitmap_only_bit_between and local_rd.
9093 (single_def_use_enter_block): New, from build_single_def_use_links.
9094 (single_def_use_leave_block): New.
9095 (build_single_def_use_links): Remove code moved to
9096 single_def_use_enter_block, invoke domwalk.
9097 (use_killed_between): Adjust comment.
9099 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9101 * bitmap.h (bitmap_ior_and_into): New.
9102 * bitmap.c (bitmap_ior_and_into): New.
9104 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
9106 * domwalk.h (struct dom_walk_data): Remove all callbacks except
9107 before_dom_children_before_stmts and after_dom_children_after_stmts.
9108 Rename the two remaining callbacks to just before_dom_children and
9109 after_dom_children. Remove other GIMPLE statement walking bits.
9110 * domwalk.c (walk_dominator_tree): Remove now unsupported features.
9111 * graphite.c: Do not include domwalk.h.
9112 * tree-into-ssa.c (interesting_blocks): New global.
9113 (struct mark_def_sites_global_data): Remove it and names_to_rename.
9114 (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
9115 rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
9116 now that they're not domwalk callbacks.
9117 (rewrite_initialize_block): Rename to...
9118 (rewrite_enter_block): ... this, place after called functions. Test
9119 interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
9120 (rewrite_finalize_block): Rename to...
9121 (rewrite_leave_block): ... this, place after called functions.
9122 (rewrite_update_init_block): Rename to...
9123 (rewrite_update_enter_block): ... this, place after called functions.
9124 Test interesting_blocks, call rewrite_update_stmt and
9125 rewrite_update_phi_arguments.
9126 (rewrite_update_fini_block): Rename to...
9127 (rewrite_leave_block): ... this, place after called functions.
9128 (rewrite_blocks): Remove last argument, simplify initialization of
9130 (mark_def_sites_initialize_block): Rename to...
9131 (mark_def_sites_block): ... this, call mark_def_sites.
9132 (mark_def_sites_blocks): Remove argument, simplify initialization of
9134 (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
9135 (update_ssa): Likewise.
9136 * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
9138 (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
9139 (dom_opt_initialize_block): Rename to...
9140 (dom_opt_enter_block): ... this, place after called functions. Walk
9141 statements here, inline propagate_to_outgoing_edges.
9142 (dom_opt_finalize_block): Rename to...
9143 (dom_opt_leave_block): ... this, place after called functions.
9144 * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
9146 (dse_enter_block, dse_record_phi): New.
9147 (dse_record_phis): Delete.
9148 (dse_finalize_block): Rename to...
9149 (dse_leave_block): ... this.
9150 (tree_ssa_dse): Simplify initialization of walk_data.
9151 * tree-ssa-loop-im.c (determine_invariantness, move_computations):
9152 Adjust initialization of walk_data.
9153 * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
9154 * tree-ssa-loop-phiopt.c (get_non_trapping):
9155 Adjust initialization of walk_data.
9156 * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
9157 * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
9158 it's not a domwalk callback.
9159 (uncprop_initialize_block): Rename to...
9160 (dse_enter_block): ... this, call uncprop_into_successor_phis.
9161 (dse_finalize_block): Rename to...
9162 (dse_leave_block): ... this.
9163 (tree_ssa_uncprop): Simplify initialization of walk_data.
9164 * Makefile.in: Adjust dependencies.
9166 2009-06-27 Richard Earnshaw <rearnsha@arm.com>
9168 * arm.md (casesi): Fix test for Thumb1.
9169 (thumb1_casesi_internal_pic): Likewise.
9170 (thumb1_casesi_dispatch): Likewise.
9172 2009-06-26 Daniel Gutson <dgutson@codesourcery.com>
9174 * config/arm/arm-cores.def: Added core cortex-m0.
9175 * config/arm/arm-tune.md: Regenerated.
9176 * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
9178 2009-06-26 DJ Delorie <dj@redhat.com>
9180 * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
9182 * config/mep/mep.c (mep_bundle_insns): Account for the fact that
9183 the scheduler doesn't tag jump insns.
9185 2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
9187 * c-decl.c (merge_decls): Re-indent.
9189 2009-06-26 Janis Johnson <janis187@us.ibm.com>
9192 * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
9193 Special-case decimal float constants.
9195 2009-06-26 Richard Henderson <rth@redhat.com>
9197 * function.h (struct function): Add cannot_be_copied_reason,
9198 and cannot_be_copied_set.
9199 * tree-inline.c (has_label_address_in_static_1): Rename from
9200 inline_forbidden_p_2; don't set inline_forbidden_reason here.
9201 (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
9202 don't set inline_forbidden_reason.
9203 (copy_forbidden): New function, split out of inline_forbidden_p.
9204 (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
9205 (inline_forbidden_p): Use copy_forbidden.
9206 (tree_versionable_function_p): Likewise.
9207 (inlinable_function_p): Merge into tree_inlinable_function_p.
9208 (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
9209 * ipa-cp.c (ipcp_versionable_function_p): New function.
9210 (ipcp_cloning_candidate_p): Use it.
9211 (ipcp_node_modifiable_p): Likewise.
9213 2009-06-26 Olatunji Ruwase <tjruwase@google.com>
9215 * builtins.c (expand_builtin_alloca): Handle builtin alloca
9216 that is marked not to be inlined. Remove flag_mudflap use.
9217 * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
9218 (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
9220 2009-06-26 Steve Ellcey <sje@cup.hp.com>
9223 * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
9224 * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
9226 2009-06-26 Kai Tietz <kai.tietz@onevision.com>
9228 * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
9230 (__mingwthr_remove_key_dtor): Likewise.
9232 2009-06-26 Richard Guenther <rguenther@suse.de>
9234 * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
9236 2009-06-26 Steven Bosscher <steven@gcc.gnu.org>
9239 * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
9240 try the non-cond_exec path also.
9242 2009-06-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
9245 * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
9246 (output_cbranch): Use new functions.
9247 (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
9250 2009-06-25 Michael Meissner <meissner@linux.vnet.ibm.com>
9251 Pat Haugen <pthaugen@us.ibm.com>
9252 Revital Eres <ERES@il.ibm.com>
9254 * config/rs6000/rs6000.c (print_operand): Correct lossage message
9255 for %c error. Add %x support to print VSX registers as a unified
9256 register set, instead of separate float and altivec registers.
9257 Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
9258 %y case, and add support for VSX pre-modify addresses.
9259 (output_toc): Add assert for CONST containing an integer constant
9261 (rs6000_adjust_cost): Add POWER7 support.
9262 (insn_must_be_first_in_group): Ditto.
9263 (insn_must_be_last_in_group): Ditto.
9264 (rs6000_emit_popcount): Ditto.
9265 (rs6000_vector_mode_supported_p): Ditto.
9267 * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
9268 Change some of the functions called by macros to being called
9269 through a pointer, so debug functions can be inserted if
9270 -mdebug=addr or -mdebug=cost.
9271 (rs6000_preferred_reload_class_ptr): Ditto.
9272 (rs6000_secondary_reload_class_ptr): Ditto.
9273 (rs6000_secondary_memory_needed_ptr): Ditto.
9274 (rs6000_cannot_change_mode_class_ptr): Ditto.
9275 (rs6000_secondary_reload_inner): Ditto.
9276 (rs6000_legitimize_reload_address): Ditto.
9277 (rs6000_legitimize_reload_address_ptr): Ditto.
9278 (rs6000_mode_dependent_address): Ditto.
9279 (rs6000_mode_dependent_address_ptr): Ditto.
9281 * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
9282 function to return true if the mode allows reg + integer
9284 (virtual_stack_registers_memory_p): New function to return true if
9285 the address refers to a virtual stack register.
9286 (rs6000_legitimate_offset_address_p): Move code to say whether a
9287 mode supports reg+int addressing to reg_offset_addressing_ok_p and
9289 (rs6000_legitimate_address_p): Add checks for modes that only can
9290 do reg+reg addressing. Start adding VSX support.
9291 (rs6000_legitimize_reload_address): Ditto.
9292 (rs6000_legitimize_address): Ditto.
9293 (rs6000_debug_legitimate_address_p): New debug functions for
9294 -mdebug=addr and -mdebug=cost.
9295 (rs6000_debug_rtx_costs): Ditto.
9296 (rs6000_debug_address_costs): Ditto.
9297 (rs6000_debug_adjust_cost): Ditto.
9298 (rs6000_debug_legitimize_address): Ditto.
9299 (rs6000_legitimize_reload_address_ptr): Point to call normal
9300 function or debug function. Make functions called via pointer
9302 (rs6000_mode_dependent_address_ptr): Ditto.
9303 (rs6000_secondary_reload_class_ptr): Ditto.
9304 (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
9305 (rs6000_emit_move): Add -mdebug=addr support. Change an abort
9306 into a friendlier error.
9307 (rs6000_init_builtins): Add initial VSX support.
9308 (rs6000_adjust_cost): Fix some spacing issues.
9310 * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
9311 (REG_CLASS_NAMES): Ditto.
9312 (REG_CLASS_CONTENTS): Ditto.
9313 (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
9314 pointer, to add -mdebug=addr support.
9315 (CANNOT_CHANGE_MODE_CLASS): Ditto.
9316 (SECONDARY_RELOAD_CLASS): Call through a pointer to add
9317 -mdebug=addr support.
9318 (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
9319 (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
9320 (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
9322 * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
9324 (bswapsi*): Set attribute types for load/store. Add combiner
9325 patterns to eliminate zero extend on 64-bit.
9326 (bswapdi*): Add support for swapping 64-bit values. Use ldbrx and
9327 stdbrx if the hardware supports those instructions.
9329 2009-06-25 Ian Lance Taylor <iant@google.com>
9331 * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
9332 (Link Options): Document -static-libstdc++.
9334 2009-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
9337 * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
9338 DATA_ALIGNMENT instead.
9340 2009-06-25 Richard Guenther <rguenther@suse.de>
9342 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
9343 indirect references against the callused/escaped solutions.
9344 (call_may_clobber_ref_p_1): Likewise.
9346 2009-06-25 Martin Jambor <mjambor@suse.cz>
9348 PR tree-optimization/40493
9349 * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
9350 (enum unscalarized_data_handling): New type.
9351 (handle_unscalarized_data_in_subtree): Return what has been done.
9352 (load_assign_lhs_subreplacements): Handle left flushes differently.
9353 (sra_modify_assign): Use unscalarized_data_handling, simplified
9354 condition determining whether to remove the statement.
9356 2009-06-25 Basile Starynkevitch <basile@starynkevitch.net>
9358 * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
9359 excerpt - @ should be doubled for texinfo.
9361 2009-06-24 Ian Lance Taylor <iant@google.com>
9363 * config/arc/arc.c: Include "df.h".
9364 (arc_attribute_table): Make static. Move higher in file.
9365 (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
9366 (output_shift): Initialize n later to avoid warning.
9367 * config/arm/arm.c (arm_attribute_table): Make static. Move
9369 * config/avr/avr.c (avr_attribute_table): Make static. Move
9371 (reg_class_tab): Change array type from int to enum reg_class.
9372 (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
9374 (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
9375 (lshrhi3_out): Likewise.
9376 (class_likely_spilled_p): Change return type to bool.
9377 (avr_rtx_costs): Use local code variable with enum type.
9378 * config/avr/avr.md (movmemhi): Use add_reg_note.
9379 (andhi3, andsi3): Don't use AS2 with "and".
9380 (iorhi3, iorsi3): Don't use AS2 with "or".
9381 * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
9382 * config/crx/crx.c: Include "df.h".
9383 (crx_attribute_table): Make static.
9384 * config/m32r/m32r.c: Include "df.h".
9385 (m32r_attribute_table): Make static. Move higher in file.
9386 (pop): Use add_reg_note.
9387 (block_move_call): Change 0 to LCT_NORMAL in function call.
9388 * config/m32r/m32r.md (movsi_insn): Remove unused local value.
9389 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
9390 * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
9391 declare, not just when TREE_CODE is defined.
9392 * config/m68hc11/m68hc11.c: Include "expr.h".
9393 (m68hc11_attribute_table): Make static. Move higher in file.
9394 (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
9396 (m68hc11_register_indirect_p): Likewise.
9397 (m68hc11_function_arg_padding): Change return type to enum
9399 (emit_move_after_reload): Use add_reg_note.
9400 (m68hc11_emit_logical): Change code parameter to enum rtx_code.
9401 (m68hc11_split_logical): Likewise.
9402 (m68hc11_rtx_costs): Add local code_and outer_code variables with
9404 * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
9405 to VOIDmode in function call.
9406 * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
9408 (m68hc11_split_logical): Update declaration.
9409 (m68hc11_function_arg_padding): Update declaration.
9410 * config/mcore/mcore.c (regno_reg_class): Change form array of int
9411 to array of enum reg_class.
9412 (mcore_attribute_table): Make static. Move higher in file.
9413 (mcore_rtx_costs): Add cast to enum type.
9414 * config/mcore/mcore.h (regno_reg_class): Update declaration.
9415 (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
9416 * config/sh/sh.c (sh_attribute_table): Make static. Move higher
9418 * config/sh/predicates.md (trapping_target_operand): Rename and to
9420 * config/sparc/sparc.c (sparc_attribute_table): Make static. Move
9422 * config/spu/spu.c (spu_attribute_table): Make static. Move
9424 * config/v850/v850.c (v850_attribute_table): Make static. Move
9426 (v850_rtx_costs): Use local code with enum type.
9427 (expand_epilogue): Add cast.
9428 * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
9430 2009-06-23 Takashi YOSHII <yoshii.takashi@renesas.com>
9433 * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
9434 -m2a-single-only and -m2a-nofpu.
9435 * config/sh/sh.opt: Document m2a generates FPU code.
9437 2009-06-24 Anatoly Sokolov <aesok@post.ru>
9439 * defaults.h (CAN_ELIMINATE): Provide default.
9440 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
9441 * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
9442 * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
9443 * config/spu/spu.h (CAN_ELIMINATE): Delete.
9444 * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
9445 * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
9446 * config/cris/cris.h (CAN_ELIMINATE): Delete.
9447 * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
9448 * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
9449 * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
9451 2009-06-24 DJ Delorie <dj@redhat.com>
9453 * mep-ext-cop.cpu: Fix copyright notice.
9454 * mep-default: Fix copyright notice.
9455 * mep-core: Fix copyright notice.
9456 * mep: Fix copyright notice.
9457 * mep-ivc2: Fix copyright notice.
9458 * mep-c5: Fix copyright notice.
9460 2009-06-24 Denis Chertykov <chertykov@gmail.com>
9462 * doc/contrib.texi (Contributors):
9464 2009-06-24 Andreas Krebbel <krebbel1@de.ibm.com>
9467 * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
9468 src and dst operands if necessary.
9470 2009-06-23 DJ Delorie <dj@redhat.com>
9473 * config.gcc: Add mep support.
9474 * recog.c: Resurrect validate_replace_rtx_subexp().
9475 * recog.h: Likewise.
9476 * config/mep/: Add new port:
9477 * config/mep/constraints.md: New file.
9478 * config/mep/default.h: New file.
9479 * config/mep/intrinsics.h: New file.
9480 * config/mep/intrinsics.md: New file.
9481 * config/mep/ivc2-template.h: New file.
9482 * config/mep/mep-c5.cpu: New file.
9483 * config/mep/mep-core.cpu: New file.
9484 * config/mep/mep-default.cpu: New file.
9485 * config/mep/mep-ext-cop.cpu: New file.
9486 * config/mep/mep-intrin.h: New file.
9487 * config/mep/mep-ivc2.cpu: New file.
9488 * config/mep/mep-lib1.asm: New file.
9489 * config/mep/mep-lib2.c: New file.
9490 * config/mep/mep-pragma.c: New file.
9491 * config/mep/mep-protos.h: New file.
9492 * config/mep/mep-tramp.c: New file.
9493 * config/mep/mep.c: New file.
9494 * config/mep/mep.cpu: New file.
9495 * config/mep/mep.h: New file.
9496 * config/mep/mep.md: New file.
9497 * config/mep/mep.opt: New file.
9498 * config/mep/predicates.md: New file.
9499 * config/mep/t-mep: New file.
9501 2009-06-23 Ian Lance Taylor <iant@google.com>
9503 * configure.ac: Invoke AC_PROG_CXX. Separate C specific warnings
9504 from loose_warn into c_loose_warn and from strict_warn into
9505 c_strict_warn. Set and substitute warn_cxxflags. Check for
9506 --enable-build-with-cxx. Set and substitute
9507 ENABLE_BUILD_WITH_CXX. Set and substitute HOST_LIBS.
9508 * Makefile.in (CXXFLAGS): New variable.
9509 (C_LOOSE_WARN, C_STRICT_WARN): New variables.
9510 (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN). Add $(C_STRICT_WARN) if
9511 the default is the same as $(STRICT_WARN).
9512 (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
9513 (CXX): New variable.
9514 (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
9515 (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
9516 (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
9517 (HOST_LIBS): New variable.
9518 (GCC_CFLAGS): Add $(C_LOOSE_WARN).
9519 (ALL_CXXFLAGS): New variable.
9520 (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
9521 * doc/install.texi (Configuration): Document
9522 --enable-build-with-cxx, --with-stage1-ldflags,
9523 --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
9524 * configure: Rebuild.
9526 2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
9528 * config/arm/arm.c (arm_override_options): Fix braces and formatting
9529 from previous commit.
9531 2009-06-23 Ian Lance Taylor <iant@google.com>
9533 * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
9535 2009-06-23 Ian Lance Taylor <iant@google.com>
9537 * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
9538 with ATTRIBUTE_UNUSED.
9540 2009-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
9541 Pat Haugen <pthaugen@us.ibm.com>
9542 Revital Eres <eres@il.ibm.com>
9544 * config.in (HAVE_AS_POPCNTD): Add default definition.
9545 (HAVE_AS_LWSYNC): Ditto.
9547 * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
9549 (gcc_cv_as_powerpc_cmpb): Ditto.
9550 (gcc_cv_as_powerpc_dfp): Ditto.
9551 (gcc_cv_as_powerpc_vsx): Ditto.
9552 (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
9553 supporting the popcntd/lwsync instructions.
9554 (gcc_cv_as_powerpc_lwsync): Ditto.
9555 * configure: Regenerate.
9557 * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
9558 -mcpu=native and -mcpu=power7.
9559 * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
9561 * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
9562 a variable instead of a mask to reduce the number of mask bits.
9563 * config/rs6000/sysv4.opt (-mbit-align): Ditto.
9564 (-mbit-word): Ditto.
9565 (-mregnames): Ditto.
9566 * config/rs6000/rs6000.opt (-mupdate): Ditto.
9567 (-mfused-madd): Ditto.
9569 * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
9571 (-mvsx): New switch for VSX instructions.
9572 (-misel): Move from a variable to a mask to allow it to be set by
9575 * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
9576 function declaration to an array declaration.
9577 (rs6000_hard_regno_nregs): New external array declaration.
9579 * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
9580 files included by rs6000.md.
9582 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
9583 SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
9585 * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
9587 (rs6000_debug_reg): New -mdebug= variables.
9588 (rs6000_debug_addr): Ditto.
9589 (rs6000_debug_cost): Ditto.
9590 (rs6000_pmode): New variable to hold Pmode.
9591 (rs6000_pointer_size): New variable to hold POINTER_SIZE.
9592 (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
9593 calculated at compiler start.
9594 (rs6000_hard_regno_nregs): Change function to an array which holds
9595 HARD_REGNO_NREGS calculated at compiler start.
9596 (rs6000_explicit_options): Delete isel field.
9597 (rs6000_vector_unit): New array to hold which vector unit
9598 supports arithmetic options for a given type.
9599 (rs6000_vector_mem): New array to hold which vector unit supports
9600 memory reference operations for a given type.
9601 (rs6000_vector_align): New array to given the alignment of each
9603 (power7_cost): New basic costs for power7.
9604 (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
9605 (rs6000_hard_regno_nregs_internal): New function, moved from
9606 HARD_REGNO_NREGS, to calculate the number of registers each hard
9607 register takes for each type.
9608 (rs6000_debug_reg_print): New function for -mdebug=reg support.
9609 (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
9610 (+rs6000_init_hard_regno_mode_ok): New function, move calculation
9611 of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
9612 unit information here so it is calculated once at compiler startup
9614 (rs6000_override_options): Make -misel a target mask. Add more
9615 power7 target masks. Setup Pmode and POINTER_SIZE. Add initial
9616 VSX support. Add support for -mdebug=reg, -mdebug=addr, and
9618 (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
9619 (rs6000_handle_option): Move -misel from variable to target mask.
9620 (rs6000_builtin_mask_for_load): Add VSX support.
9621 (rs6000_conditional_register_usage): Ditto.
9622 (USE_ALTIVEC_FOR_ARG_P): Ditto.
9623 (function_arg_boundary): Ditto.
9624 (rs6000_expand_builtin): Ditto.
9625 (def_builtin): Make abort message a little friendlier.
9626 (rs6000_emit_int_cmove): Add support for 64-bit isel.
9628 * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
9629 assembler support the popcntd instruction instead of a vsx
9630 instruction to enable power7 support.
9631 (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
9632 (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
9633 option to the assembler if -mcpu=native.
9634 (ASM_CPU_NATIVE_SPEC): Ditto.
9635 (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
9637 (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
9638 the lwsync instruction.
9639 (enum processor_type): Add PROCESSOR_POWER7.
9640 (rs6000_debug_reg): New -mdebug= options.
9641 (rs6000_debug_addr): Ditto.
9642 (rs6000_debug_cost): Ditto.
9643 (rs6000_isel): Delete.
9644 (enum rs6000_vector): New enum to say what vector unit we have.
9645 (VECTOR_UNIT_*): New macros to say which vector unit has
9646 arithmetic operations for a given type.
9647 (VECTOR_MEM_*): New macros to say which vector unit has memory
9648 operations for a given type.
9649 (TARGET_LDBRX): Whether the machine supports the ldbrx
9651 (TARGET_ISEL): Delete, -misel moved to be a mask.
9652 (TARGET_ISEL64): New macro for 64-bit isel support.
9653 (UNITS_PER_VSX_WORD): New macro.
9654 (POINTER_SIZE): Move to be an external variable, rather than
9655 calculating whether we are generating 32 ot 64-bit code.
9657 (STACK_BOUNDARY): Add VSX support.
9658 (LOCAL_ALIGNMENT): Ditto.
9659 (SLOW_UNALIGNED_ACCESS): Ditto.
9660 (VSX_REGNO_P): New macro for VSX support.
9661 (VFLOAT_REGNO_P): Ditto.
9662 (VINT_REGNO_P): Ditto.
9663 (VLOGICAL_REGNO_P): Ditto.
9664 (VSX_VECTOR_MODE): Ditto.
9665 (VSX_SCALAR_MODE): Ditto.
9667 (VSX_MOVE_MODE): Ditto.
9668 (VSX_REG_CLASS_P): Ditto.
9669 (HARD_REGNO_NREGS): Instead of calling a function, use an array
9671 (UNITS_PER_SIMD_WORD): Add VSX support.
9672 (MODES_TIEABLE_P): Ditto.
9673 (STARTING_FRAME_OFFSET): Ditto.
9674 (STACK_DYNAMIC_OFFSET): Ditto.
9675 (EPILOGUE_USES): Ditto.
9676 (REGNO_REG_CLASS): Move to array lookup.
9677 (CLASS_MAX_NREGS): Ditto.
9678 (rs6000_vector_reg_class): Add declaration.
9679 (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
9680 overlap with the floating point and Altivec registers.
9682 * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
9684 * config/rs6000/driver-rs6000.c (asm_names): New static array to
9685 give the appropriate asm switches if -mcpu=native.
9686 (host_detect_local_cpu): Add support for "asm".
9687 (host_detect_local_cpu): Follow GNU code guidelines for name.
9689 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
9690 -mbit-word to a variable instead of being a target mask.
9692 * config/rs6000/sync.md (lwsync): If the assembler supports it,
9693 emit the lwsync instruction instead of emitting the instruction as
9694 an integer constant.
9696 * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
9697 fixuns_trundfsi2, move expander into rs6000.md.
9699 * config/rs6000/rs6000.md (cpu): Add power7.
9700 (sel, *ptrsize): New mode attributes for 32/64-bit isel.
9701 (logical predicate patterns): Change the single instruction
9702 primitives that set CR0 to be fast_compare instead of compare.
9704 (popcntwsi2): Add support for ISA 2.06 popcount instructions.
9705 (popcntddi2): Ditto.
9706 (popcount<mode>): Ditto.
9707 (floating multiply/add insns): Name the floating point
9709 (isel_signed_<mode>): Add support for -misel on 64-bit systems.
9710 (isel_unsigned_<mode>): Ditto.
9711 (fixuns_trundfsi2): Move expander here from spe.md.
9712 (smindi3): Define if we have -misel on 64-bit systems.
9717 2009-06-23 Anatoly Sokolov <aesok@post.ru>
9719 * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
9721 * config/avr/avr.c (avr_current_device): New variable.
9722 (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
9723 (avr_arch, mcu_type_s): Move to avr.h.
9724 * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
9725 default_data_section_start fields.
9726 (avr_arch): Moved from avr.c.
9727 (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
9728 library_name fields.
9729 (avr_current_device, avr_mcu_types, avr_arch_types,
9730 avr_device_to_arch, avr_device_to_data_start,
9731 avr_device_to_startfiles, avr_device_to_devicelib): Declare.
9732 (EXTRA_SPEC_FUNCTIONS): Define.
9733 (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
9734 options mapping. Use device_to_arch and device_to_data_start insted.
9735 (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
9736 (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
9737 * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
9738 * config/avr/driver-avr.c: New file.
9739 * config/avr/avr-devices.c: New file.
9741 2009-06-23 Jakub Jelinek <jakub@redhat.com>
9743 * var-tracking.c (unshare_variable): Force initialized to
9744 be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
9745 (set_variable_part): Likewise.
9746 (struct variable_union_info): Remove pos_src field.
9747 (vui_vec, vui_allocated): New variables.
9748 (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
9749 unconditionally. Avoid XCVECNEW/free for every sorting, for dst_l
9750 == 1 use a simpler sorting algorithm. Compute pos field right
9751 away, don't fill in pos_src. For dst_l == 2 avoid qsort.
9752 Avoid quadratic comparison if !flag_var_tracking_uninit.
9753 (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
9754 unshare_variable unconditionally.
9755 (dataflow_set_different_2): Removed.
9756 (dataflow_set_different): Don't traverse second hash table.
9757 (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
9758 unconditionally to var_reg_set or var_mem_set.
9759 (emit_notes_in_bb): Likewise.
9760 (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
9762 (emit_note_insn_var_location): Don't set initialized to
9763 VAR_INIT_STATUS_INITIALIZED early.
9764 (vt_finalize): Free vui_vec if needed, clear vui_vec and
9766 * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
9768 * tree-object-size.c (addr_object_size): Instead of checking
9769 for non-NULL TREE_CHAIN of the FIELD_DECL check that there
9770 are no FIELD_DECLs following it.
9772 2009-06-23 Andreas Krebbel <krebbel1@de.ibm.com>
9774 * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
9775 order to match bswaps with signed source operands.
9777 2009-06-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
9779 * sdbout.c (sdbout_one_type): Fix braces in switch.
9781 2009-06-23 Richard Guenther <rguenther@suse.de>
9783 * tree-ssa-structalias.c (struct variable_info): Add is_global_var
9785 (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
9786 readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
9787 var_callused, callused_tree, var_storedanything, storedanything_tree,
9788 var_integer, integer_tree): Remove global variables.
9789 (new_var_info): Do not pass new id, append the new var to the
9790 global variable vector.
9791 (do_ds_constraint): Use is_global_var member of the variable-info.
9792 (new_scalar_tmp_constraint_exp): Adjust.
9793 (create_function_info_for): Likewise.
9794 (create_variable_info_for): Likewise.
9795 (find_what_var_points_to): Remove dead code.
9796 (init_base_vars): Simplify.
9797 (compute_points_to_sets): Adjust.
9799 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
9801 * combine.c (try_combine): Dump information about the insns we're
9804 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
9806 * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
9807 check when calling force_to_mode on TRUNCATE's operand.
9809 2009-06-22 Ian Lance Taylor <iant@google.com>
9811 * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
9813 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
9815 * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
9817 2009-06-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9819 * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
9820 override library linkage flags such as -static-libgcc or
9823 2009-06-22 Maxim Kuvyrkov <maxim@codesourcery.com>
9825 * config/m68k/m68k-devices.def: Add line for MCF5221x.
9827 2009-06-22 Ian Lance Taylor <iant@google.com>
9829 * config/linux.opt: Put mglibc ahead of muclibc.
9831 * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
9832 for duplicate decls.
9834 2009-06-22 Matthias Klose <doko@ubuntu.com>
9836 * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
9838 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
9841 * c-parser.c (c_parser_objc_message_args): Return error_mark_node
9842 instead of NULL if a parser error occurs.
9844 2009-06-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
9846 * dwarf2out.c (dwarf2_debug_hooks): Initialize
9847 non-DWARF2_DEBUGGING_INFO version.
9849 2009-06-22 Kai Tietz <kai.tietz@onevision.com>
9851 * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
9852 i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
9854 * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
9855 (LIBGCC2_TF_CEXT): Define.
9858 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
9861 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
9863 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
9865 * config/arm/arm.c (arm_override_options): Disable
9866 -mcaller-super-interworking and -mcallee-super-interworking.
9867 * doc/invoke.texi (ARM Options): Document this.
9869 2009-06-22 Nathan Sidwell <nathan@codesourcery.com>
9871 * config/arm/arm.c (arm_print_operand): Deal with HIGH.
9872 * config/arm/constraints.md (j): New constraint for movw operands.
9873 (N): Remove thumb2 meaning.
9874 * config/arm/arm.md (*arm_movw): Delete.
9875 (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
9876 * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
9877 * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
9879 2009-06-22 Martin Jambor <mjambor@suse.cz>
9881 PR tree-optimization/40492
9882 * tree-sra.c (sra_modify_assign): Pass zero offsets to
9883 build_ref_for_offset.
9885 2009-06-22 Shujing Zhao <pearly.zhao@oracle.com>
9887 * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
9888 JUMP_TABLE_DATA_P predicates where applicable.
9889 * auto-inc-dec.c: Ditto.
9890 * builtins.c: Ditto.
9891 * caller-save.c: Ditto.
9893 * cfgcleanup.c: Ditto.
9894 * cfglayout.c: Ditto.
9897 * combine-stack-adj.c: Ditto.
9903 * dwarf2asm.c: Ditto.
9904 * dwarf2out.c: Ditto.
9905 * emit-rtl.c: Ditto.
9911 * function.c: Ditto.
9914 * genpreds.c: Ditto.
9915 * genrecog.c: Ditto.
9917 * ira-costs.c: Ditto.
9918 * ira-lives.c: Ditto.
9921 * lower-subreg.c: Ditto.
9922 * modulo-sched.c: Ditto.
9924 * postreload.c: Ditto.
9925 * print-rtl.c: Ditto.
9934 * sched-vis.c: Ditto.
9936 * sel-sched-ir.c: Ditto.
9937 * simplify-rtx.c: Ditto.
9938 * targhooks.c: Ditto.
9939 * var-tracking.c: Ditto.
9940 * vmsdbgout.c: Ditto.
9942 2009-06-22 Matthias Klose <doko@ubuntu.com>
9944 * Makefile.in (install-plugin): Always use DESTDIR.
9946 2009-06-22 Olivier Hainque <hainque@adacore.com>
9948 * config/pa/pa.c (output_call): Don't optimize post call jumps
9949 into return address adjustments if the call may throw.
9951 2009-06-21 Richard Earnshaw <rearnsha@arm.com>
9953 * arm.c (thumb1_output_casesi): New function.
9954 * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
9955 optimizing for size or PIC.
9956 (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
9957 * arm.md (UNSPEC_THUMB1_CASESI): New constant.
9958 (casesi): Handle Thumb-1 when optimizing for size or PIC.
9959 (thumb1_casesi_internal_pic): New expand rule.
9960 (thumb1_casesi_dispatch): New pattern.
9961 * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
9963 * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
9964 in the text seciton when PIC or optimizing for size.
9965 * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
9966 * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
9967 preservation properties of code.
9968 (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
9969 (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
9970 (__gnu_thumb1_case_si): New function.
9971 * t-arm (LIB1ASMSRC): Define here.
9972 (LIB1ASMFUNCS): Add some common functions.
9973 * t-arm-elf (LIB1ASMSRC): Delete.
9974 (LIB1ASMFUNCS): Append to existing set.
9975 * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9976 * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9977 * t-symbian (LIB1ASMFUNCS): Likewise.
9978 * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9979 * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9981 2009-06-21 Richard Guenther <rguenther@suse.de>
9983 PR tree-optimization/38729
9984 * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
9985 to loops with a single exit if -fno-expensive-optimizations.
9987 2009-06-21 Jakub Jelinek <jakub@redhat.com>
9989 * var-tracking.c (struct shared_hash_def, shared_hash): New types.
9990 (dataflow_set): Change vars type from htab_t to shared_hash.
9991 (shared_hash_pool, empty_shared_hash): New variables.
9992 (vars_clear): Removed.
9993 (shared_hash_shared, shared_hash_htab, shared_hash_copy,
9994 shared_hash_find_slot_unshare, shared_hash_find_slot,
9995 shared_hash_find_slot_noinsert, shared_hash_find): New
9997 (shared_hash_unshare, shared_hash_destroy): New functions.
9998 (unshare_variable): Unshare set->vars if shared, use
10000 (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
10001 (get_init_value, find_src_set_src, dump_dataflow_set,
10002 clobber_variable_part, emit_notes_for_differences): Use
10004 (dataflow_set_init): Remove second argument, set vars to
10005 empty_shared_hash instead of creating a new htab.
10006 (dataflow_set_clear): Call shared_hash_destroy and set vars
10007 to empty_shared_hash instead of calling vars_clear.
10008 (dataflow_set_copy): Don't call vars_copy, instead just share
10009 the src htab with dst.
10010 (variable_union): Use shared_hash_*, use initially NO_INSERT
10011 lookup if set->vars is shared. Don't keep slot cleared before
10012 calling unshare_variable. Unshare set->vars if needed.
10013 Even ->refcount == 1 vars must be unshared if set->vars is shared
10014 and var needs to be modified.
10015 (variable_canonicalize): New function.
10016 (dataflow_set_union): If dst->vars is empty, just share src->vars
10017 with dst->vars and traverse with variable_canonicalize to canonicalize
10018 and unshare what is needed.
10019 (dataflow_set_different): If old_set and new_set use the same shared
10020 htab, they aren't different. If number of htab elements is different,
10021 htabs are different. Use shared_hash_*.
10022 (dataflow_set_destroy): Call shared_hash_destroy instead of
10024 (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
10025 second argument to dataflow_set_init.
10026 (vt_initialize): Likewise. Initialize shared_hash_pool and
10027 empty_shared_hash, move bb in/out initialization afterwards.
10028 Use variable_htab_free instead of NULL as changed_variables del hook.
10029 (variable_was_changed): Change type of second argument to pointer to
10030 dataflow_set. When inserting var into changed_variables, bump
10031 refcount. Unshare set->vars if set is shared htab and slot needs to
10033 (set_variable_part): Use shared_hash_*, use initially NO_INSERT
10034 lookup if set->vars is shared. Unshare set->vars if needed.
10035 Even ->refcount == 1 vars must be unshared if set->vars is shared
10036 and var needs to be modified. Adjust variable_was_changed caller.
10037 (delete_variable_part): Use shared_hash_*. Even ->refcount == 1
10038 vars must be unshared if set->vars is shared and var needs to be
10039 modified. Adjust variable_was_changed caller.
10040 (emit_note_insn_var_location): Don't pool_free var.
10041 (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
10043 (vt_finalize): Call htab_delete on empty_shared_hash->htab and
10044 free_alloc_pool on shared_hash_pool.
10046 2009-06-20 Anthony Green <green@moxielogic.com>
10048 * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
10049 * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
10051 2009-06-20 Richard Guenther <rguenther@suse.de>
10053 * tree-ssa-structalias.c (find_func_aliases): For memset use
10054 a constraint from NULL if we memset to zero.
10055 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
10056 we explicitly handle that do not read from memory.
10057 (call_may_clobber_ref_p_1): Properly handle builtins that may
10060 2009-06-20 Richard Guenther <rguenther@suse.de>
10062 PR tree-optimization/40495
10063 * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
10064 (new_scalar_tmp_constraint_exp): New function.
10065 (process_constraint): Do not create temporary decls.
10066 (process_all_all_constraints): Likewise.
10067 (handle_const_call): Likewise.
10068 (create_function_info_for): Do not set decl.
10070 2009-06-19 Ian Lance Taylor <iant@google.com>
10072 * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
10073 (rs6000_attribute_table): Make static; move before use.
10075 2009-06-19 Eric Botcazou <ebotcazou@adacore.com>
10077 * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
10078 <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
10079 Propagate the TREE_READONLY flag without overwriting it.
10080 (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
10081 Propagate the TREE_READONLY flag onto the result.
10082 (process_call_operands): Move around. Use correct constant value.
10084 2009-06-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
10087 * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
10088 * config/arm/arm.md: Likewise.
10090 2009-06-19 Ian Lance Taylor <iant@google.com>
10092 * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
10093 to GIMPLE_ERROR_MARK.
10095 * c-typeck.c (build_conditional_expr): Add op1_original_type and
10096 op2_original_type parameters. Warn about using different enum types.
10097 * c-parser.c (c_parser_conditional_expression): Pass original
10098 types to build_conditional_expr.
10099 * c-tree.h (build_conditional_expr): Update declaration.
10101 2009-06-19 Ian Lance Taylor <iant@google.com>
10103 * config/i386/i386.c (ix86_function_specific_save): Test that
10104 fields match values, rather than testing the values are in a
10107 2009-06-19 Richard Guenther <rguenther@suse.de>
10109 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
10110 ADDR_EXPR pointers.
10111 (ptr_derefs_may_alias_p): Likewise.
10112 (ptr_deref_may_alias_ref_p_1): New function.
10113 (ptr_deref_may_alias_ref_p): Likewise.
10114 (ref_maybe_used_by_call_p_1): Handle builtins that are not
10115 covered by looking at the ESCAPED solution.
10116 (call_may_clobber_ref_p_1): Likewise.
10117 * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
10118 Handle NULL_TREE offset. Do not produce redundant constraints.
10119 (process_all_all_constraints): New helper function.
10120 (do_structure_copy): Use it.
10121 (handle_lhs_call): Likewise.
10122 (find_func_aliases): Handle some builtins with pointer arguments
10123 and/or return values explicitly.
10125 2009-06-19 Ian Lance Taylor <iant@google.com>
10127 * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
10129 2009-06-19 Ian Lance Taylor <iant@google.com>
10131 * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
10133 2009-06-19 Ian Lance Taylor <iant@google.com>
10135 * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
10136 * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
10139 * c-decl.c (finish_decl): If -Wc++-compat, warn about
10140 uninitialized const.
10142 2009-06-19 Ian Lance Taylor <iant@google.com>
10144 * dse.c (struct store_info): Rename bitmap field to bmap. Change
10147 * c-decl.c (in_struct, struct_types): Remove.
10148 (struct c_binding): Add in_struct field.
10149 (c_binding_ptr): Define type, along with VEC.
10150 (struct c_struct_parse_info): Define.
10151 (struct_parse_info): New static variable.
10152 (bind): Initialize in_struct field.
10153 (start_struct): Remove enclosing_in_struct and
10154 enclosing_struct_types parameters. Add
10155 enclosing_struct_parse_info parameter. Change all callers. Set
10156 struct_parse_info rather than in_struct and struct_types.
10157 (grokfield): If -Wc++-compat and there is a symbol binding for the
10158 field name, set the in_struct flag and push it on the
10159 struct_parse_info->fields vector.
10160 (warn_cxx_compat_finish_struct): New static function.
10161 (finish_struct): Remove enclosing_in_struct and
10162 enclosing_struct_types parameters. Add
10163 enclosing_struct_parse_info parameter. Change all callers. Don't
10164 set C_TYPE_DEFINED_IN_STRUCT here. Call
10165 warn_cxx_compat_finish_struct. Free struct_parse_info and set to
10166 parameter. Only push on struct_types if warn_cxx_compat.
10167 (finish_enum): Only push on struct_types if warn_cxx_compat.
10168 (declspecs_add_type): Add loc parameter. Change all callers.
10169 Change all error calls to error_at. Pass loc, not input_location,
10170 to pedwarn calls. Warn if -Wc++-compat and a typedef name is
10171 defined in a struct. If -Wc++-compat and parsing a struct, record
10172 that a typedef name was used.
10173 * c-parser.c (c_parser_declspecs): Get location to pass to
10174 declspecs_add_type.
10175 (c_parser_struct_or_union_specifier): Update calls to start_struct
10177 * c-tree.h (struct c_struct_parse_info): Declare.
10178 (finish_struct, start_struct): Update declarations.
10179 (declspecs_add_type): Update declaration.
10181 2009-06-19 Ian Lance Taylor <iant@google.com>
10183 * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
10184 variable with an anonymous type.
10186 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
10188 * see.c: Remove for real.
10190 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
10192 * optabs.h (enum optab_index): Add new OTI_significand.
10193 (significand_optab): Define corresponding macro.
10194 * optabs.c (init_optabs): Initialize significand_optab.
10195 * genopinit.c (optabs): Implement significand_optab using
10196 significand?f2 patterns.
10197 * builtins.c (expand_builtin_mathfn): Handle
10198 BUILT_IN_SIGNIFICAND{,F,L}.
10199 (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
10200 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
10202 * config/i386/i386.md (significandxf2, significand<mode>2): New
10203 expanders to implement significandf, significand and significandl
10204 built-ins as inline x87 intrinsics.
10206 2009-06-18 Anatoly Sokolov <aesok@post.ru>
10208 * config/avr/avr.c (avr_override_options): Remove setting value of
10209 PARAM_INLINE_CALL_COST.
10211 2009-06-18 Richard Henderson <rth@redhat.com>
10214 * tree-pass.h (TDF_ASMNAME): New.
10215 * tree-dump.c (dump_options): Add asmname.
10216 * doc/invoke.texi: Document it.
10218 * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
10219 (dump_decl_name): ...here.
10220 (dump_function_name): New flags arg; mind TDF_ASMNAME.
10221 (dump_generic_node): Update dump_function_name calls.
10222 (print_call_name): New flags arg; update all dump calls.
10223 * diagnostic.h (print_call_name): Update.
10224 * gimple-pretty-print.c (dump_gimple_call): Update.
10226 2009-06-18 H.J. Lu <hongjiu.lu@intel.com>
10229 * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
10231 2009-06-18 Diego Novillo <dnovillo@google.com>
10233 * doc/plugins.texi: Document plugin_is_GPL_compatible.
10234 * plugin.c (str_license): Declare.
10235 (try_init_one_plugin): Assert that the symbol
10236 'plugin_is_GPL_compatible' exists.
10238 2009-06-18 Sergei Dyshel <sergeid@il.ibm.com>
10241 * Makefile.in (OBJS-common): Remove see.o.
10243 * common.opt (fsee): Mark as preserved for backward compatibility.
10244 * opts.c (common_handle_option): Add OPT_fsee to the backward
10245 compatibility section.
10246 * passes.c (init_optimization_passes, pass_see): Remove pass.
10247 * timevar.def (TV_SEE): Remove.
10248 * tree-pass.h (pass_see): Remove declaration.
10249 * doc/invoke.texi (-fsee): Remove documentation.
10251 2009-06-18 Martin Jambor <mjambor@suse.cz>
10253 * tree-sra.c: Include statistics.h
10254 (sra_stats): New variable.
10255 (sra_initialize): Clear sra_stats.
10256 (create_access_replacement): Increment sra_stats.replacements.
10257 (get_access_replacement): Do not return twice.
10258 (analyze_all_variable_accesses): Increment statistics counter by the
10259 number of scalarized aggregates.
10260 (generate_subtree_copies): Increment sra_stats.subtree_copies.
10261 (sra_modify_expr): Increment sra_stats.exprs.
10262 (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
10263 (sra_modify_assign): Increment sra_stats.exprs,
10264 sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
10265 (perform_intra_sra): Update statistics counters.
10266 * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
10268 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
10270 * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
10271 (arm_scalar_mode_supported_p): New function.
10273 2009-06-18 Paul Brook <paul@codesourcery.com>
10274 Sandra Loosemore <sandra@codesourcery.com>
10276 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
10277 (__extendhfsf2, __truncsfhf2): Define.
10278 * config/arm/fp16.c: New file.
10279 * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10280 * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
10282 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
10284 * doc/extend.texi (Half-Precision): New section.
10285 * doc/invoke.texi (Option Summary): List -mfp16-format.
10286 (ARM Options): List neon-fp16 as -mfpu value. Document -mfp16-format.
10287 * config/arm/arm.opt (mfp16-format=): New.
10288 * config/arm/arm.c: Include intl.h.
10289 (TARGET_INVALID_PARAMETER_TYPE): Redefine.
10290 (TARGET_INVALID_RETURN_TYPE): Redefine.
10291 (TARGET_PROMOTED_TYPE): Redefine.
10292 (TARGET_CONVERT_TO_TYPE): Redefine.
10293 (arm_fp16_format): Define.
10294 (all_fpus): Add entry for neon-fp16.
10295 (fp_model_for_fpu): Likewise.
10296 (struct fp16_format): Declare.
10297 (all_fp16_formats): Define.
10298 (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
10300 (arm_override_options): Set arm_fp16_format. Call sorry for fp16
10302 (arm_legitimate_index_p): Treat HFmode like HImode.
10303 (thumb1_legitimate_address_p): Make it recognize HFmode constants.
10304 (coproc_secondary_reload_class): Special-case HFmode.
10305 (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
10306 (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
10307 (arm_init_fp16_builtins): New.
10308 (arm_init_builtins): Call it.
10309 (arm_invalid_parameter_type): New.
10310 (arm_invalid_return_type): New.
10311 (arm_promoted_type): New.
10312 (arm_convert_to_type).
10313 (arm_file_start): Deal with neon-fp16 as fpu_name. Emit tag for fp16
10315 (arm_emit_fp16_const): New function.
10316 (arm_mangle_type): Mangle __fp16 as "Dh".
10317 * config/arm/arm.h (TARGET_VFPD32): Make it know about
10319 (TARGET_NEON_FP16): New.
10320 (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
10321 (enum fputype): Add FPUTYPE_NEON_FP16.
10322 (enum arm_fp16_format_type): Declare.
10323 (arm_fp16_format): Declare.
10324 (LARGEST_EXPONENT_IS_NORMAL): Define.
10325 * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
10326 * config/arm/arm-modes.def (HFmode): Define.
10327 * config/arm/vfp.md: (*movhf_vfp): New.
10328 (extendhfsf2): New.
10330 * config/arm/arm.md: (fpu): Add neon_fp16.
10331 (floatsihf2, floatdihf2): New.
10332 (fix_trunchfsi2, fix_trunchfdi2): New.
10334 (extendhfdf2): New.
10336 (*arm32_movhf): New.
10337 (*thumb1_movhf): New.
10338 (consttable_2): Add check for HFmode constants.
10339 (consttable_4): Handle HFmode constants.
10341 2009-06-18 Uros Bizjak <ubizjak@gmail.com>
10343 * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
10345 2009-06-17 Olivier Hainque <hainque@adacore.com>
10347 * collect2.c (main): Use CONST_CAST2 to perform char ** to
10348 const char ** conversion in AIX specific section.
10350 2009-06-17 H.J. Lu <hongjiu.lu@intel.com>
10352 * config/i386/i386.c (ix86_special_builtin_type): Remove
10353 UINT64_FTYPE_PINT. Add UINT64_FTYPE_PUNSIGNED.
10354 (bdesc_special_args): Updated.
10355 (ix86_init_mmx_sse_builtins): Likewise.
10356 (ix86_expand_special_args_builtin): Likewise.
10358 2009-06-17 Richard Henderson <rth@redhat.com>
10360 * tree-pretty-print.c (maybe_dump_asm_name): New.
10361 (dump_decl_name): Use it.
10362 (PRINT_FUNCTION_NAME): Merge into...
10363 (dump_function_name): ... here. Use maybe_dump_asm_name.
10365 2009-06-17 Cary Coutant <ccoutant@google.com>
10367 * dbxout.c (dbxout_source_line): Add is_stmt parameter.
10369 * debug.c (struct gcc_debug_hooks): Change placeholder for
10371 (debug_nothing_int_charstar_int): Replaced by...
10372 (debug_nothing_int_charstar_int_bool): ...this.
10373 * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
10374 source_line prototype.
10375 (debug_nothing_int_charstar_int): Replaced by...
10376 (debug_nothing_int_charstar_int_bool): ...this.
10377 * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
10378 * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
10379 Output is_stmt operand when necessary.
10380 * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
10381 (notice_source_line): Add is_stmt parameter.
10382 * sdbout.c (sdbout_source_line): Add is_stmt parameter.
10383 * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
10385 * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
10386 * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
10388 2009-06-17 Ian Lance Taylor <iant@google.com>
10390 * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
10392 (struct store_by_pieces_d): Rename from store_by_pieces. Change
10395 2009-06-17 Adam Nemet <anemet@caviumnetworks.com>
10397 * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
10398 STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
10399 tree_strip_sign_nop_conversions and
10400 tree_ssa_strip_useless_type_conversions rather than stripping
10401 the operations here.
10402 (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
10404 * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
10405 * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
10406 * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
10407 tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
10410 2009-06-17 Michael Eager <eager@eagercon.com>
10412 * config/rs6000/constraints.md (register_constraint "d"): New.
10413 * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
10414 truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
10415 *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
10416 *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
10417 trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
10418 divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
10419 fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
10420 * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
10421 __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
10422 __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
10424 * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
10425 *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
10426 *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
10427 *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
10428 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
10429 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
10430 stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
10431 *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
10432 *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
10433 trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
10434 *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
10435 *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
10436 *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
10437 * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
10439 2009-06-16 Ian Lance Taylor <iant@google.com>
10441 * profile.c (total_num_never_executed): Don't define.
10442 (compute_branch_probabilities): Don't count or print
10443 num_never_executed.
10444 (init_branch_prob): Don't set total_num_never_executed.
10445 (end_branch_prob): Don't print total_num_never_executed.
10447 2009-06-17 David Daney <ddaney@caviumnetworks.com>
10449 * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
10451 2009-06-17 David Edelsohn <edelsohn@gnu.org>
10453 * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
10454 (nabstd2_fpr): Same.
10456 2009-06-17 Steve Ellcey <sje@cup.hp.com>
10458 * expr.c (expand_assignment): Change complex type check.
10460 2009-06-17 Basile Starynkevitch <basile@starynkevitch.net>
10462 * doc/plugins.texi (Building GCC plugins): Added new section.
10464 2009-06-17 Ian Lance Taylor <iant@google.com>
10466 * c-pch.c (get_ident): Don't set size of templ array.
10467 (pch_init): Don't set size of partial_pch array.
10469 * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
10470 string constant to intialize an array whose size is the length of
10473 2009-06-17 Richard Guenther <rguenther@suse.de>
10475 PR tree-optimization/40389
10476 * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
10477 to addressable types.
10478 * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
10480 2009-06-17 Richard Guenther <rguenther@suse.de>
10482 PR middle-end/40460
10483 * tree-chrec.h (build_polynomial_chrec): If we cannot determine
10484 if there is no evolution of left in the loop bail out.
10485 * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
10486 chrec_fold_multiply.
10488 2009-06-16 J"orn Rennecke <joern.rennecke@arc.com>
10489 Janis Johnson <janis187@us.ibm.com>
10492 * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
10493 for the symbol ref of a constant that is the source of a move
10494 - nor for any other not-obvious-label-ref constants.
10496 2009-06-16 Olatunji Ruwase <tjruwase@google.com>
10498 * plugin.c (position_pass): Skip newly inserted pass during list
10499 traversal to avoid repeated insertion.
10501 2009-06-16 Ian Lance Taylor <iant@google.com>
10503 * vec.h (VEC_stack_alloc): Define different version if
10504 GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
10505 (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
10506 (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
10507 (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
10509 2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
10511 * config.gcc (extra_headers): Add ia32intrin.h for x86.
10513 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
10514 IX86_BUILTIN_BSRDI. IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
10515 IX86_BUILTIN_RDTSCP. IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
10516 IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
10517 (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
10518 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10519 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10520 (bdesc_special_args): Add __builtin_ia32_rdtsc and
10521 __builtin_ia32_rdtscp.
10522 (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
10523 __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
10524 and __builtin_ia32_rorhi.
10525 (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
10526 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
10527 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
10528 (ix86_expand_args_builtin): Likewise.
10529 (ix86_expand_special_args_builtin): Likewise.
10531 * config/i386/i386.md (UNSPECV_RDTSCP): New.
10532 (UNSPECV_RDTSC): Likewise.
10533 (UNSPECV_RDPMC): Likewise.
10534 (*bsr): Renamed to ...
10536 (*bsr_rex64): Renamed to ...
10539 (*rdpmc): Likewise.
10540 (*rdpmc_rex64): Likewise.
10542 (*rdtsc): Likewise.
10543 (*rdtsc_rex64): Likewise.
10544 (rdtscp): Likewise.
10545 (*rdtscp): Likewise.
10546 (*rdtscp_rex64): Likewise.
10548 * config/i386/ia32intrin.h: New.
10550 * config/i386/x86intrin.h: Include <ia32intrin.h>.
10552 2009-06-16 Ian Lance Taylor <iant@google.com>
10554 * ira-build.c (copy_info_to_removed_store_destinations):
10555 Initialize parent_a.
10557 2009-06-16 Ian Lance Taylor <iant@google.com>
10559 * c-decl.c (grokdeclarator): Change size_varies to bool.
10561 2009-06-16 Ian Lance Taylor <iant@google.com>
10563 * sel-sched.c: Make forward declarations of move_op_hooks and
10564 fur_hooks explicitly extern.
10566 2009-06-16 Ian Lance Taylor <iant@google.com>
10568 * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
10569 * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
10571 2009-06-16 Ian Lance Taylor <iant@google.com>
10573 * resource.c (mark_referenced_resources): Change
10574 include_delayed_effects parameter to bool. Change all callers.
10575 (mark_end_of_function_resources): Likewise.
10576 * reorg.c (insn_references_resource_p): Likewise.
10577 (insn_sets_resource_p): Likewise.
10578 * resource.h (mark_referenced_resources): Update declaration.
10579 (mark_end_of_function_resources): Update declaration.
10581 2009-06-16 David Edelsohn <edelsohn@gnu.org>
10583 * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
10585 2009-06-16 David Edelsohn <edelsohn@gnu.org>
10587 * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
10588 GCC can bootstrap on AIX with GNU Binutils 2.20.
10590 2009-06-16 Ian Lance Taylor <iant@google.com>
10592 * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
10594 2009-06-16 Ian Lance Taylor <iant@google.com>
10596 * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
10597 inline, not extern inline.
10598 (exact_log2): Likewise.
10599 * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
10601 (exact_log2): Likewise, but don't test CTZ_HWI.
10603 2009-06-16 Ian Lance Taylor <iant@google.com>
10605 * bitmap.c (bitmap_clear): Don't declare as inline.
10606 * gimple.c (gimplify_assign): Likewise.
10607 * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
10608 * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
10609 (sched_scan_info): Remove duplicate definition.
10611 2009-06-16 Ian Lance Taylor <iant@google.com>
10613 * c-common.c (skip_evaluation): Don't define.
10614 (c_inhibit_evaluation_warnings): Define global variable.
10615 (overflow_warning): Check c_inhibit_evaluation_warnings rather
10616 than skip_evaluation.
10617 (convert_and_check, warn_for_div_by_zero): Likewise.
10618 * c-common.h (skip_evaluation): Don't declare.
10619 (c_inhibit_evaluation_warnings): Declare.
10620 * c-parser.c (c_parser_typeof_specifier): Set
10621 c_inhibit_evaluation_warnings rather than skip_evaluation.
10622 (c_parser_conditional_expression): Likewise.
10623 (c_parser_binary_expression): Likewise.
10624 (c_parser_sizeof_expression): Likewise.
10625 (c_parser_alignof_expression): Likewise.
10626 * c-typeck.c (build_indirect_ref): Check
10627 c_inhibit_evaluation_warnings rather than skip_evaluation.
10628 (build_conditional_expr, build_binary_op): Likewise.
10630 2009-06-16 Richard Guenther <rguenther@suse.de>
10632 * tree-ssa-alias.c (is_escape_site): Remove.
10633 * tree-ssa-alias.h (enum escape_type): Remove.
10634 (is_escape_site): Likewise.
10635 * tree-ssa-structalias.c (find_func_aliases): Handle escapes
10636 via casts and asms without deferring to is_escape_site.
10638 2009-06-16 Jakub Jelinek <jakub@redhat.com>
10640 PR middle-end/40446
10641 * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
10642 use gen_lowpart if op0 has complex mode.
10644 2009-06-16 Richard Guenther <rguenther@suse.de>
10646 * tree-ssa-structalias.c (do_ds_constraint): Stores in global
10647 variables add them to ESCAPED.
10648 (find_func_aliases): Do not make all indirectly stored values escaped.
10650 2009-06-16 Rafael Avila de Espindola <espindola@google.com>
10652 * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
10653 make_decl_one_only.
10655 2009-06-16 Martin Jambor <mjambor@suse.cz>
10657 PR tree-optimization/40432
10658 * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
10659 check whether we need to force gimple register operand.
10661 2009-06-16 Martin Jambor <mjambor@suse.cz>
10663 PR tree-optimization/40413
10664 * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
10665 build_ref_for_offset.
10666 (propagate_subacesses_accross_link): Fix a typo in a comment.
10668 2009-06-16 Ira Rosen <irar@il.ibm.com>
10670 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
10671 with additional parameter.
10672 * tree-vectorizer.h (enum vect_def_type): Add new value
10674 (enum vect_relevant): Add comments.
10675 (vect_is_simple_reduction): Add new argument.
10676 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
10677 Detect nested cycles.
10678 (vect_is_simple_reduction): Update documentation, add an argument to
10679 distinguish inner-loop reduction from nested cycle, detect nested
10680 cycles, fix printings and indentation, don't swap operands in case
10682 (get_initial_def_for_reduction): Handle subtraction.
10683 (vect_create_epilog_for_reduction): Add new argument to specify
10684 reduction variable.
10685 (vect_finalize_reduction): Handle subtraction, fix comments.
10686 (vectorizable_reduction): Handle nested cycles. In case of nested
10687 cycle keep track of the reduction variable position. Call
10688 vect_is_simple_reduction with additional parameter. Use original
10689 statement code in reduction epilogue for nested cycle. Call
10690 vect_create_epilog_for_reduction with additional parameter.
10691 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
10692 inner-loop vectorization.
10693 (vect_recog_widen_sum_pattern): Likewise.
10694 * tree-vect-stmts.c (process_use): Distinguish between nested cycles
10696 (vect_mark_stmts_to_be_vectorized): Likewise.
10697 (vect_get_vec_def_for_operand): Handle nested cycles.
10699 2009-06-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
10701 * doc/invoke.texi (Debugging Options): Fix option index entries
10702 for -fdump-statistics, -frandom-seed add entries for
10703 -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
10704 (FRV Options): Fix entries for -mTLS, -mtls.
10705 (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
10706 (i386 and x86-64 Options): Fix entry for -mno-red-zone.
10707 (M68hc1x Options): Fix @itemx for -mnominmax.
10708 (MCore Options): Fix entry for -mno-lsim.
10709 (MMIX Options): Fix entry for -mabi=mmixware.
10710 (PDP-11 Options): Fix entry for -mbcopy-builtin.
10712 2009-06-16 Basile Starynkevitch <basile@starynkevitch.net>
10714 * doc/plugins.texi (Interacting with the GCC Garbage Collector):
10715 Mention the plugin mode of gengtype.
10716 * doc/gty.texi (Source Files Containing Type Information): Likewise.
10717 * gengtype.c: Updated copyright.
10718 (plugin_files, nb_plugin_files) Added new static variables.
10719 (measure_input_list) Care about plugin_files.
10720 (write_rtx_next): Added early return in plugin mode.
10721 (create_file): Updated copyright year in generated file. Added
10723 (oprintf): Added early return if NULL outf.
10724 (get_output_file_with_visibility): Care of plugin_files.
10725 (get_output_file_name): May return null.
10726 (write_local): Added early return.
10727 (put_mangled_filename): Ditto.
10728 (finish_root_table): Added check for base_files.
10729 (write_roots): Care about null when plugins.
10730 (main): Added plugin mode.
10732 2009-06-15 Ian Lance Taylor <iant@google.com>
10734 * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
10735 * gcov.c (read_count_file): Add braces around variables declared
10738 * c.opt (Wjump-misses-init): New warning.
10739 * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
10740 -Wall and -Wc++-compat if not already set.
10741 (c_common_post_options): Clear warn_jump_misses_init if it was not
10743 * c-decl.c (struct c_binding): Change type field to a union with
10744 new label field. Make it the first field in the struct. Update
10745 references to type to use u.type instead.
10746 (struct c_spot_bindings): Define.
10747 (struct c_goto_bindings): Define.
10748 (c_goto_bindings_p): Define, along with VECs.
10749 (struct c_label_vars): Define.
10750 (struct c_scope): Add has_label_bindings field.
10751 (bind_label, set_spot_bindings): New static functions.
10752 (decl_jump_unsafe, update_spot_bindings): New static functions.
10753 (update_label_decls): New static function.
10754 (pop_scope): Call update_label_decls. Don't call c_end_vm_scope.
10755 Update binding u.label field to shadowed field.
10756 (c_binding_start_stmt_expr): New function.
10757 (c_binding_end_stmt_expr): New function.
10758 (pushdecl): Don't call c_begin_vm_scope.
10759 (make_label): Add defining and p_label_vars parameters. Change
10761 (lookup_label): Correct test for whether a label has not yet been
10762 defined. Call bind_label rather than bind.
10763 (warn_about_goto): New static function.
10764 (lookup_label_for_goto): New function.
10765 (declare_label): Call bind_label rather than bind.
10766 (check_earlier_gotos): New static function.
10767 (define_label): Don't give errors about jumping into statement
10768 expressions or scopes of variably modified types. Call
10769 set_spot_bindings and check_earlier_gotos. Call bind_label
10770 instead of bind. Don't set label_context_stack_se or
10771 label_context_stack_vm.
10772 (c_get_switch_bindings): New function.
10773 (c_release_switch_bindings): New function.
10774 (c_check_switch_jump_warnings): New function.
10775 (start_function): Don't set label_context_stack_se or
10776 label_context_stack_vm.
10777 (finish_function): Likewise.
10778 * c-typeck.c (label_context_stack_se): Don't define.
10779 (label_context_stack_vm): Don't define.
10780 (c_finish_goto_label): Call lookup_label_for_goto rather than
10781 lookup_label. Don't give errors about jumping into a statement
10782 expression or the scope of a variably modified type. Don't set
10783 label_context_stack_se or label_context_stack_vm.
10784 (struct c_switch): Remove blocked_stmt_expr and blocked_vm
10785 fields. Add bindings field.
10786 (c_start_case): Don't set deleted fields. Set bindings field.
10787 (do_case): Rework order of tests. Don't check blocked_stmt_expr
10788 or blocked_vm. Call c_check_switch_jump_warnings.
10789 (c_finish_case): Don't test blocked_stmt_expr field. Call
10790 c_release_switch_bindings.
10791 (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
10792 c_switch_stack. Don't walk label_context_stack_se labels. Don't
10793 set label_context_stack_se. Call c_bindings_start_stmt_expr.
10794 (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
10795 c_switch_stack. Don't walk label_context_stack_se labels. Don't
10796 set label_context_stack_se. Call c_bindings_end_stmt_expr.
10797 (c_begin_vm_scope, c_end_vm_scope): Don't define.
10798 * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
10799 (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
10800 (C_DECL_UNJUMPABLE_VM): Don't define.
10801 (C_DECL_UNDEFINABLE_VM): Don't define.
10802 (struct c_label_list): Don't define.
10803 (struct c_label_context_se): Don't define.
10804 (struct c_label_context_vm): Don't define.
10805 (struct c_spot_bindings): Declare.
10806 (c_bindings_start_stmt_expr): Declare.
10807 (c_bindings_end_stmt_expr): Declare.
10808 (lookup_label_for_goto): Declare.
10809 (c_get_switch_bindings, c_release_switch_bindings): Declare.
10810 (c_check_switch_jump_warnings): Declare.
10811 (label_context_stack_se, label_context_stack_vm): Don't declare.
10812 (c_finish_goto_label): Update declaration.
10813 (c_begin_vm_scope, c_end_vm_scope): Don't declare.
10814 * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
10815 (Warning Options): Document -Wjump-misses-init.
10817 2009-06-15 Jakub Jelinek <jakub@redhat.com>
10819 * tree-object-size.c (addr_object_size): Fix a pasto in the last
10822 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
10824 * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
10826 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
10828 * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
10830 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
10832 * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
10834 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
10836 * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
10837 Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
10838 * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
10839 * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
10840 * dwarf2asm.c (dw2_force_const_mem): Update call to
10841 make_decl_one_only.
10842 * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
10843 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
10844 * langhooks.c (lhd_comdat_group): Remove.
10845 * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
10846 * tree.h (DECL_COMDAT_GROUP): New.
10847 (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
10848 (tree_decl_with_vis): Add comdat_group. Remove one_only.
10849 (make_decl_one_only): Change signature.
10850 * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
10851 make_decl_one_only.
10852 (make_decl_one_only): Change signature.
10853 (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
10855 2009-06-15 Richard Guenther <rguenther@suse.de>
10857 PR middle-end/40439
10858 * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
10860 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
10862 * tree-ssa-math-opts.c: Remove extra divide.
10864 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
10866 * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
10868 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
10870 * passes.c: Add bswap pass.
10871 * tree-pass.h: Add pass_optimize_bswap declaration.
10872 * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
10873 Include rtl.h, expr.h and optabs.h for optab_handler check.
10874 (struct symbolic_number, pass_optimize_bswap): New definition.
10875 (do_shift_rotate, verify_symbolic_number_p): New functions.
10876 (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
10877 (gate_optimize_bswap): New function.
10878 * tree.c (widest_int_cst_value): New function.
10879 * tree.h (widest_int_cst_value): Prototype added.
10881 2009-06-14 Steven Bosscher <steven@gcc.gnu.org>
10883 * cfgcleanup.c (old_insns_match_p): Remove code to substitute
10884 REG_EQUAL/REG_EQUIV notes.
10886 2009-06-14 Richard Guenther <rguenther@suse.de>
10888 PR middle-end/40389
10889 * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10890 has its address taken if NRV was applied and it is addressable.
10891 * tree-ssa-structalias.c (get_constraint_for_address_of): New
10892 function split out from ...
10893 (get_constraint_for_1): ... here.
10894 (handle_rhs_call): Use it to mark the return slot escaped if
10895 it is addressable and NRV was applied.
10897 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
10899 * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
10900 Change first argument type to location_t.
10901 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
10902 Do not set input_location.
10903 Use loc instead of input_location throughout.
10905 2009-06-13 Richard Guenther <rguenther@suse.de>
10907 PR tree-optimization/40421
10908 * tree-predcom.c (should_unroll_loop_p): Remove.
10909 (tree_predictive_commoning_loop): Use can_unroll_loop_p.
10911 2009-06-13 Michael Meissner <meissner@linux.vnet.ibm.com>
10913 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10914 Add location argument.
10916 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
10918 * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
10920 * config/s390/s390.c (s390_build_builtin_va_list): Same.
10921 (s390_gimplify_va_arg): Pass location to create_artificial_label.
10922 * config/spu/spu-protos.h: Add location to
10923 spu_resolve_overloaded_builtin.
10924 * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
10925 spu_build_builtin_va_list.
10926 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
10927 argument. Pass location to build_function_call_vec.
10928 * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
10930 (emit_fpu_switch): Same.
10931 (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
10932 * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
10933 to build_decl and create_artificial_label.
10934 (xtensa_gimplify_va_arg_expr): Same.
10935 * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
10936 (xstormy16_gimplify_va_arg_expr): Same.
10937 * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
10938 * config/arm/arm.c (arm_build_builtin_va_list): Same.
10939 * config/mips/mips.c (mips_build_builtin_va_list): Same.
10940 (mips16_build_function_stub): Same.
10941 (mips16_build_call_stub): Same.
10943 2009-06-13 Richard Earnshaw <rearnsha@arm.com>
10946 * arm/constraints.md (Pa, Pb): New constraints.
10947 * arm/arm.md (thumb1_addsi3): Support more complex additions. Add a
10948 split pattern to deal with them.
10950 2009-06-13 Joerg Sonnenberger <joerg@britannica.bec.de>
10952 * doc/invoke.texi: Add missing option -Wp,OPTION in list,
10953 fix index entry for -Xpreprocessor.
10955 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
10957 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10958 Add location argument to build_decl call.
10959 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
10960 (rs6000_init_builtins): Same.
10961 (spe_init_builtins): Same.
10962 (rs6000_gimplify_va_arg): Add location argument to
10963 create_artificial_label call.
10965 2009-06-12 Steven Bosscher <steven@gcc.gnu.org>
10967 * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
10968 * combine-stack-adj.c (pass_stack_adjustments): Use it.
10969 * Makefile.in: Fix GGC dependency for gcse.o.
10971 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
10973 * tree-pretty-print.c (dump_generic_node): Dump column numbers.
10974 * gimple-pretty-print.c (dump_gimple_stmt): Same.
10975 * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
10977 * c-parser.c (c_parser_binary_expression): Use current column while
10978 building binary operations.
10979 * common.opt (fshow-column): Enable by default.
10980 * tree-vrp.c (check_array_ref): Use warning_at.
10981 (check_array_bounds): Use location from call back if expr has no
10983 * tree.h: Add location argument to maybe_fold_*.
10984 * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
10985 (maybe_fold_offset_to_array_ref): Add location argument and use it.
10986 (maybe_fold_offset_to_component_ref): Same.
10987 (maybe_fold_offset_to_reference): Same.
10988 (maybe_fold_offset_to_address): Same.
10989 (maybe_fold_stmt_indirect): Same.
10990 (maybe_fold_stmt_addition): Same.
10991 (fold_stmt_r): Pass location to maybe_fold_*.
10992 (fold_gimple_assign): Same.
10993 * c-tree.h: Add location argument to finish_decl,
10994 default_function_array_conversion, store_init_value.
10995 * c-decl.c (define_label): Use error_at.
10996 (c_make_fname_decl): Pass location to finish_decl.
10997 (finish_decl): New location argument.
10998 (build_compound_literal): Pass location to store_init_value.
10999 (grokdeclarator): Pass location to finish_decl.
11001 * c-typeck.c (array_to_pointer_conversion): New location argument.
11002 (function_to_pointer_conversion): Same.
11003 (default_function_array_conversion): Same.
11004 (parser_build_unary_op): Pass location to overflow_warning.
11005 (parser_build_binary_op): Same. Use warning_at.
11006 (build_unary_op): Pass location to array_to_pointer_conversion.
11007 (build_c_cast): Pass location to digest_init.
11008 (build_modify_expr): New location argument.
11009 (convert_for_assignment): Same.
11010 (store_init_value): Same.
11011 (digest_init): Same.
11012 (output_init_element): Pass location to digest_init and
11013 array_to_pointer_conversion.
11014 (c_finish_return): Pass location to convert_for_assignment.
11015 * gimplify.c (gimplify_conversion): Pass location to
11016 maybe_fold_offset_to_address.
11017 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
11018 to maybe_fold_stmt_addition.
11019 * c-omp.c (c_finish_omp_atomic): Pass new location to
11021 (c_finish_omp_for): Same.
11022 * c-common.c (overflow_warning): New argument.
11023 * c-common.h: New argument to build_modify_expr, overflow_warning.
11024 * c-parser.c (c_parser_declaration_or_fndef): Pass location to
11026 (c_parser_initializer): Pass location to
11027 default_function_array_conversion.
11028 (c_parser_initelt): Same.
11029 (c_parser_initval): Same.
11030 (c_parser_asm_operands): Same.
11031 (c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
11032 (c_parser_conditional_expression): Same.
11033 (c_parser_binary_expression): Add location info to stack. Use it.
11034 (c_parser_unary_expression): Pass location to
11035 default_function_array_conversion, parser_build_unary_op,
11036 build_indirect_ref, c_parser_postfix_expression_after_primary.
11037 (c_parser_postfix_expression_after_primary): New location argument.
11039 (c_parser_expression_conv): Pass location to
11040 default_function_array_conversion.
11041 (c_parser_expr_list): Same.
11042 (c_parser_omp_atomic): Same.
11043 (c_parser_omp_for_loop): Same.
11044 * c-tree.h: (struct c_declarator): Add comment to id_loc.
11045 (build_array_declarator): New argument.
11046 * c-decl.c (build_array_declarator): Add location argument.
11047 (grokdeclarator): Set id_loc for cdk_array.
11048 * c-parser.c (c_parser_direct_declarator_inner): Pass location to
11049 build_array_declarator.
11050 * tree.c (build_omp_clause): Add location argument.
11051 * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
11052 (OMP_CLAUSE_LOCATION): New macro.
11053 (struct tree_omp_clause): Add location field.
11054 (build_omp_clause): Add argument.
11055 * testsuite/gcc.dg/gomp/for-1.c: Fix column.
11056 * cp/pt.c (tsubst_omp_for_iterator): Pass location to
11058 * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
11059 (cp_parser_omp_clause_collapse): Same.
11060 (cp_parser_omp_clause_default): Same.
11061 (cp_parser_omp_clause_if): Same.
11062 (cp_parser_omp_clause_nowait): Same.
11063 (cp_parser_omp_clause_num_threads): Same.
11064 (cp_parser_omp_clause_ordered): Same.
11065 (cp_parser_omp_clause_schedule): Same.
11066 (cp_parser_omp_clause_untied): Same.
11067 (cp_parser_omp_for_loop): Same.
11068 (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11069 * c-tree.h (c_start_case): Add location argument.
11070 (c_process_expr_stmt): Same.
11071 (c_finish_goto_*): Same.
11072 * tree-parloops.c (initialize_reductions): Pass location to
11074 (create_parallel_loop): Same.
11075 * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
11076 (gfc_trans_omp_reduction_list): Same.
11077 (gfc_trans_omp_clauses): Same.
11078 (gfc_trans_omp_do): Same.
11079 * c-typeck.c (c_finish_goto_label): Same.
11080 (c_finish_goto_ptr): New location argument.
11081 (c_start_case): Same.
11082 (emit_side_effect_warnings): Same.
11083 (c_process_expr_stmt): Same.
11084 (c_finish_stmt_expr): Same.
11085 (c_finish_omp_clauses): Use error_at instead of error.
11086 * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
11088 * c-omp.c (c_split_parallel_clauses): New location argument.
11089 * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
11090 to build_omp_clause.
11091 (convert_local_reference_stmt): Same.
11092 (convert_gimple_call): Same.
11093 * c-common.h (c_split_parallel_clauses): New argument.
11094 * c-parser.c (c_parser_statement_after_labels): Pass location to
11095 c_finish_goto_label.
11096 (c_parser_switch_statement): Pass location to c_start_case.
11097 (c_parser_for_statement): Pass location to c_finish_expr_stmt,
11098 and c_process_expr_stmt.
11099 (c_parser_omp_variable_list): Add location argument.
11100 (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
11101 (c_parser_omp_clause_default): Same.
11102 (c_parser_omp_clause_if): Same.
11103 (c_parser_omp_clause_num_threads): Same.
11104 (-c_parser_omp_clause_ordered): Same.
11105 (c_parser_omp_clause_reduction): Pass location to
11106 c_parser_omp_variable_list.
11107 (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
11108 (c_parser_omp_clause_untied): Same.
11109 (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
11110 (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
11112 * c-tree.h (check_for_loop_decls, undeclared_variable,
11113 build_component_ref, build_array_ref, build_external_ref,
11114 c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
11115 build_conditional_expr, build_compound_expr, c_cast_expr,
11116 build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
11117 c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
11119 * c-semantics.c (build_stmt): Same.
11120 (build_case_label): Same.
11121 * c-decl.c (c_finish_incomplete_decl): Pass location on down.
11122 (undeclared_variable): New argument.
11123 (make_label): Same.
11124 (lookup_label): Pass location on down.
11125 (define_label): Same.
11126 (finish_decl): Same.
11127 (build_compound_literal): Same.
11128 (finish_struct): Same.
11129 (finish_function): Do not set location here.
11130 (check_for_loop_decls): New argument.
11131 * tree.c (save_expr): Set location.
11132 (build_empty_stmt): New argument.
11133 * tree.h (build_empty_stmt): New argument to build_empty_stmt.
11134 (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
11135 * builtins.c (gimplify_va_arg_expr): Use locations.
11136 (expand_builtin_sync_operation): Same.
11137 * c-typeck.c (build_component_ref): New argument.
11138 (build_array_ref): Same.
11139 (build_external_ref): Same.
11140 (c_expr_sizeof_expr): Same.
11141 (c_expr_sizeof_type): Same.
11142 (parser_build_unary_op): Same.
11143 (build_conditional_expr): Same.
11144 (build_compound_expr): Pass location on down.
11145 (build_compound_expr): New argument.
11146 (build_c_cast): Same.
11147 (c_cast_expr): Same.
11148 (build_asm_expr): Same.
11149 (c_finish_return): Same.
11150 (c_process_expr_stmt): Pass location on down.
11151 (c_finish_stmt_expr): New argument.
11152 (push_clenaup): Same.
11153 (c_finish_omp_parallel): Same.
11154 (c_finish_omp_task): Same.
11155 * gimplify.c (gimplify_call_expr): Pass location on down.
11156 * c-omp.c (c_finish_omp_master): New argument.
11157 (c_finish_omp_critical): Same.
11158 (c_finish_omp_ordered): Same.
11159 (c_finish_omp_barrier): Same.
11160 (-c_finish_omp_taskwait): Same.
11161 (c_finish_omp_atomic): Same.
11162 (c_finish_omp_flush): Same.
11163 * tree-inline.c (copy_tree_body_r): Pass location on down.
11164 (inline_forbidden_p): Remove use of input_location.
11165 * c-gimplify.c (c_build_bind_expr): New argument.
11166 * c-common.c (c_common_truthvalue_conversion): Pass location on down.
11167 (c_sizeof_or_alignof_type): New argument.
11168 (c_alignof_expr): Same.
11169 (build_va_arg): Same.
11170 (c_add_case_label): Same.
11171 * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
11172 c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
11173 c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
11174 c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
11175 c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
11176 c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
11178 * stub-objc.c (objc_build_selector_expr): Same.
11179 (objc_build_throw_stmt): Same.
11180 * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
11181 (c_parser_initelt): Same.
11182 (c_parser_compound_statement): Same.
11183 (c_parser_compound_statement_nostart): Same.
11184 (c_parser_label): Same.
11185 (c_parser_statement_after_labels): Same.
11186 (c_parser_if_body): Same.
11187 (c_parser_else_body): Same.
11188 (c_parser_if_statement): Same.
11189 (c_parser_switch_statement): Same.
11190 (c_parser_while_statement): Same.
11191 (c_parser_do_statement): Same.
11192 (c_parser_for_statement): Same.
11193 (c_parser_asm_statement): Same.
11194 (c_parser_conditional_expression): Same.
11195 (c_parser_binary_expression): Same.
11196 (c_parser_cast_expression): Same.
11197 (c_parser_unary_expression): Same.
11198 (c_parser_sizeof_expression): Same.
11199 (c_parser_alignof_expression): Same.
11200 (c_parser_postfix_expression): Same.
11201 (c_parser_expression): Same.
11202 (c_parser_objc_receiver): Same.
11203 (c_parser_omp_variable_list): Same.
11204 (c_parser_omp_structured_block): Same.
11205 (c_parser_omp_atomic): New argument.
11206 (c_parser_omp_barrier): Same.
11207 (c_parser_omp_critical): Same.
11208 (c_parser_omp_flush): Pass location on down.
11209 (c_parser_omp_for_loop): New argument.
11210 (c_parser_omp_for): Same.
11211 (c_parser_omp_master): Same.
11212 (c_parser_omp_ordered): Same.
11213 (c_parser_omp_sections_scope): Same.
11214 (c_parser_omp_sections): Same.
11215 (c_parser_omp_parallel): Same.
11216 (c_parser_omp_single): Same.
11217 (c_parser_omp_task): Same.
11218 (c_parser_omp_taskwait): Pass location on down.
11219 (c_parser_omp_construct): Same.
11220 (c_parser_omp_threadprivate): Same.
11221 * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
11222 builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
11223 tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
11224 c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
11225 c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
11226 emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
11227 rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
11228 tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
11229 config/i386/i386.c, stmt.c:
11230 Add location argument to the following function definitions and/or
11231 function calls: build_decl, objcp_start_struct, objcp_finish_struct,
11232 start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
11233 cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
11234 build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
11235 do_case, c_finish_bc_stmt, build_compound_literal,
11236 build_function_call.
11237 * c-decl.c (build_compound_literal): Add location argument.
11238 Make all diagnostic calls use location.
11239 (start_struct): Same.
11240 (finish_struct): Same.
11241 (start_enum): Same.
11242 (build_enumerator): Same.
11243 (start_function): Same.
11244 (grokdeclarator): Make all diagnostic calls use location.
11245 (store_parm_decls_oldstyle): Same.
11246 * c-typeck.c (build_function_call): Add location argument.
11247 Make all diagnostic calls use location.
11249 (c_finish_bc_stmt): Same.
11250 * tree-nested.c (get_trampoline_type): Add argument.
11251 Pass location to build_decl.
11252 (lookup_tramp_for_decl): Pass location to get_trampoline_type.
11253 * rtl.h (RTL_LOCATION): New.
11254 * c-common.c (c_add_case_label): Add location argument.
11255 Make all diagnostic calls use location.
11256 * c-common.h: Add location argument to make_fname_decl, do_case,
11257 c_add_case_label, build_function_call, resolve_overloaded_builtin.
11258 * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
11259 Set it appropriately for every case. Pass enum_loc to start_enum
11260 call. Pass value_loc first to build_enumerator. Pass enum_loc to
11262 (c_parser_struct_or_union_specifier): Save location. Use it for
11263 start_struct, finish_struct, and parser_xref_tag.
11265 2009-06-12 Ian Lance Taylor <iant@google.com>
11267 * fold-const.c (fold_unary): Rename local variable and to and_expr.
11269 * c-opts.c (c_common_handle_option): For -Wc++-compat set
11270 cpp_opts->warn_cxx_operator_names.
11272 2009-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
11275 * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
11276 is returns NULL and OP is a VCE, look through the VCE.
11278 2009-06-12 Ian Lance Taylor <iant@google.com>
11281 * collect2.c (main): Use CONST_CAST2 in code inside #if
11282 LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
11284 2009-06-12 Joey Ye <joey.ye@intel.com>
11286 PR middle-end/39146
11287 * cfgexpand.c (get_decl_align_unit): Update
11288 max_used_stack_slot_alignment with align instead of
11289 stack_alignment_needed.
11291 * function.c (assign_stack_local_1): Update
11292 max_used_stack_slot_alignment with alignment_in_bits instead
11293 of stack_alignment_needed.
11294 (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
11297 2009-06-12 Jakub Jelinek <jakub@redhat.com>
11299 * dwarf2out.c (last_var_location_insn): New variable.
11300 (dwarf2out_end_epilogue): Clear last_var_location_insn.
11301 (dwarf2out_var_location): Don't record anything after last real
11302 insn. Only change labels if there were any real instructions
11303 in between last note and this one, or if changed sections.
11305 2009-06-11 Richard Henderson <rth@redhat.com>
11307 * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
11308 note when storing the frame pointer in a register.
11309 (FRP): Don't redefine to nothing for epilogue.
11310 (alpha_expand_epilogue): Mark register and sp restores.
11311 (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
11313 * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
11314 when gen_lowpart is needed.
11316 2009-06-11 Richard Henderson <rth@redhat.com>
11318 * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
11320 * dwarf2out.c (need_data_align_sf_opcode): New.
11321 (div_data_align): Move earlier.
11322 (def_cfa_1, reg_save): Use it.
11324 2009-06-11 H.J. Lu <hongjiu.lu@intel.com>
11326 * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
11327 (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
11328 (ix86_handle_option): Handle OPT_mcrc32.
11329 (ix86_target_string): Add -mcrc32.
11330 (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
11332 * config/i386/i386.h (TARGET_CRC32): New.
11334 * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
11335 (sse4_2_crc32di): Likewise.
11337 * config/i386/i386.opt (mcrc32): New.
11339 * doc/invoke.texi: Document -mcrc32.
11341 2009-06-11 Richard Henderson <rth@redhat.com>
11343 * common.opt (gdwarf-): Accept a version number.
11344 * doc/invoke.texi (gdwarf-): Update docs.
11345 * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
11346 * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
11347 version level, and record it.
11349 * dwarf2.h (DW_CIE_VERSION): Remove.
11350 * dwarf2out.c (DWARF_VERSION): Remove.
11351 (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
11352 (output_call_frame_info): Use CIE version 3 for dwarf3,
11353 or if the return register column is out of range for version 1.
11354 (dwarf_stack_op_name): Add all dwarf3 values.
11355 (DEBUG_PUBTYPES_SECTION): New.
11356 (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
11357 encoding change for dwarf3.
11358 (output_die) [dw_val_class_die_ref]: Likewise.
11359 (output_compilation_unit_header): Emit correct version for dwarf3.
11360 (output_line_info): Likewise.
11361 (output_pubnames): Update for DWARF_VERSION removal.
11362 (output_aranges): Likewise.
11363 (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
11364 (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
11365 (dwarf2out_finish): Likewise.
11367 2009-06-11 David Daney <ddaney@caviumnetworks.com>
11369 * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
11372 2009-06-11 David Daney <ddaney@caviumnetworks.com>
11375 * doc/extend.texi ( __builtin_unreachable): Document new builtin.
11376 * builtins.c (expand_builtin_unreachable): New function.
11377 (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
11378 * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
11379 * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
11381 * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
11382 searching for missing barriers.
11384 2009-06-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
11386 * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
11387 when -fprofile-generate* was passed.
11388 * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11390 2009-06-11 Anthony Green <green@moxielogic.com>
11392 * config/moxie/moxie.md: Define length attribute for all instructions.
11394 (*b<cond:code>): Support limited branch ranges for new PC-relative
11395 branch instructions.
11396 * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
11398 2009-06-11 Jakub Jelinek <jakub@redhat.com>
11400 * config/i386/i386.c (min_insn_size): Use get_attr_length
11401 for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
11402 For __asm return 0.
11404 * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
11405 instead of emit_insn_before.
11407 2009-06-10 Ian Lance Taylor <iant@google.com>
11410 * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
11413 2009-06-10 Revital Eres <eres@il.ibm.com>
11415 * passes.c (init_optimization_passes): Reschedule
11416 predictive-commoning pass before complete unroll pass.
11418 2009-06-10 Martin Jambor <mjambor@suse.cz>
11420 * cgraph.c (cgraph_node_can_be_local_p): New function.
11421 (cgraph_make_node_local): New function.
11422 * cgraph.h (cgraph_node_can_be_local_p): Declare.
11423 (cgraph_make_node_local): Declare.
11425 2009-06-10 Nathan Froyd <froydnj@codesourcery.com>
11427 * tree.h (tree_base): Add packed_flag and user_align fields.
11428 Decrease size of spare field.
11429 (TYPE_USER_ALIGN): Use user_align from tree_base.
11430 (DECL_USER_ALIGN): Likewise.
11431 (TYPE_PACKED): Use packed_flag from tree_base.
11432 (DECL_PACKED): Likewise.
11433 (tree_type): Delete packed_flag and user_align fields. Widen
11434 precision field. Widen mode field and shuffle fields to align
11435 mode on an 8-bit boundary.
11436 (tree_decl_common): Delete decl_flag_1 and user_align fields.
11437 Renumber decl_flag_* fields. Fix comments. Widen
11438 decl_common_unused field.
11439 (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
11440 (DECL_EXTERNAL): Likewise.
11441 (DECL_BIT_FIELD): Likewise.
11442 (DECL_NONADDRESSABLE_P): Likewise.
11443 (TYPE_DECL_SUPRESS_DEBUG): Likewise.
11444 * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
11446 2009-06-10 Ian Lance Taylor <iant@google.com>
11448 * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
11449 (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
11450 (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
11451 (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
11452 (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
11453 DEF_VEC_ALLOC_FUNC_P.
11454 (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
11455 (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
11456 DEF_VEC_ALLOC_FUNC_O.
11457 (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
11458 (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
11459 DEF_VEC_ALLOC_FUNC_I.
11460 (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
11461 (vec_stack_p_reserve_exact_1): Declare.
11462 (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
11463 (vec_stack_free): Declare.
11464 (VEC_stack_alloc): Define.
11465 (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
11466 (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
11467 (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
11468 * vec.c (void_p): New type. Call DEF_VEC_P and DEF_VEC_ALLOC_P
11470 (stack_vecs): New static variable.
11471 (vec_stack_p_reserve_exact_1): New function.
11472 (vec_stack_o_reserve_1): New static function.
11473 (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
11474 (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
11475 (vec_stack_free): New function.
11476 * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
11477 (VEC_df_ref_stack_alloc): Define.
11478 (df_mw_hardreg_ptr): New type. Use DEF_VEC_P and
11479 DEF_VEC_ALLOC_P_STACK.
11480 (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
11481 (struct df_collection_rec): Change _vec fields to VEC. Remove
11483 (df_free_collection_rec): Adjust for new fields.
11484 (df_insn_rescan): Use new df_collection_rec fields.
11485 (df_notes_rescan, df_canonize_collection_rec): Likewise.
11486 (df_ref_create_structure, df_ref_record): Likewise.
11487 (df_get_conditional_uses, df_get_call_refs): Likewise.
11488 (df_insn_refs_collect, df_bb_refs_collect): Likewise.
11489 (df_bb_refs_record, df_record_entry_block_defs): Likewise.
11490 (df_record_exit_block_uses, df_bb_verify): Likewise.
11491 (df_swap_refs): Change ref_vec parameter to VEC. Change all callers.
11492 (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
11493 Remove count parameter. Change return type to void. Change all
11495 (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
11496 Remove count parameter. Change return type to void. Change all
11498 (df_install_refs): Change old_vec parameter to VEC. Remove count
11499 parameter. Change all callers.
11500 (df_install_mws): Change old_vec parameter to VEC. Remove count
11501 parameter. Change all callers.
11502 (df_refs_verify): Change new_rec parameter to VEC. Change call
11504 (df_mws_verify): Likewise.
11506 2009-06-10 Alexandre Oliva <aoliva@redhat.com>
11508 * gcc.c (compare_files): Cast munmap argumento to caddr_t.
11510 2009-06-10 H.J. Lu <hongjiu.lu@intel.com>
11512 * doc/extend.texi: Add description for __builtin_ia32_crc32di.
11514 2009-06-10 Anthony Green <green@moxielogic.com>
11516 * config/moxie/crti.asm: New file.
11517 * config/moxie/crtn.asm: New file.
11518 * config/moxie/moxie.c: New file.
11519 * config/moxie/moxie.h: New file.
11520 * config/moxie/sfp-machine.h: New file.
11521 * config/moxie/moxie-protos.h: New file.
11522 * config/moxie/t-moxie: Created.
11523 * config/moxie/t-moxie-softfp: Created.
11524 * config/moxie/moxie.md: Created.
11525 * config/moxie/constraints.md: Created.
11526 * config.gcc: Add moxie support.
11527 * doc/md.texi (Machine Constraints): Add moxie constraints.
11528 * doc/contrib.texi (Contributors): Mention moxie port.
11529 * doc/install.texi (Specific): Mention the moxie port.
11531 2009-06-09 Ian Lance Taylor <iant@google.com>
11533 * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
11534 compiling with C++.
11535 * optabs.c (optab_table): Only use designated initializers if
11536 HAVE_DESIGNATED_INITIALIZERS is defined.
11537 (convert_optab_table): Likewise.
11538 (init_optabs): Always call init_insn_codes if
11539 HAVE_DESIGNATED_INITIALIZERS is not defined.
11541 2009-06-09 Ian Lance Taylor <iant@google.com>
11543 * targhooks.c (default_builtin_vectorized_function): Change fn
11544 parameter to unsigned int.
11545 (default_builtin_vectorized_conversion): Change code parameter to
11547 (default_builtin_reciprocal): Change fn parameter to unsigned int.
11548 * targhooks.h: Update declarations.
11549 * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
11550 parameter to unsigned int.
11552 * c-typeck.c (comptypes_check_enum_int): New static function.
11553 (comptypes_internal): Add enum_and_int_p parameter. Change all
11555 (comp_target_types): Add location parameter. Change all callers.
11556 (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
11557 Change all callers.
11558 (function_types_compatible_p, type_lists_compatible_p): Likewise.
11559 (build_conditional_expr): Add colon_loc parameter. Change all
11561 (convert_for_assignment): Add location parameter. Change all callers.
11562 * c-parser.c (c_parser_conditional_expression): Pass location of
11563 colon to build_conditional_expr.
11564 * c-tree.h (build_conditional_expr): Update declaration.
11566 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
11568 * graphite.c: Revert previous patch.
11570 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
11573 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11575 2009-06-09 Ghassan Shobaki <ghassan.shobaki@amd.com>
11577 * tree-ssa-loop-prefetch.c
11578 (loop_prefetch_arrays): Fixed a portability problem in printf format
11581 2009-06-09 Martin Jambor <mjambor@suse.cz>
11583 PR tree-optimization/40351
11584 * tree-sra.c (propagate_subacesses_accross_link): Check that a
11585 refrence to a potential artifical subaccess can be constructed.
11587 2009-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
11589 * config/sh/sh-protos.h (sh_optimization_options): Declare.
11590 (sh_override_options): Likewise.
11591 * config/sh/sh.c: Include params.h.
11592 (sh_optimization_options): New.
11593 (sh_override_options): Likewise.
11594 * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
11595 (OVERRIDE_OPTIONS): Use sh_override_options.
11597 2009-06-08 Jakub Jelinek <jakub@redhat.com>
11599 * dwarf2out.c (emit_cfa_remember): New variable.
11600 (add_fde_cfi): If emit_cfa_remember, recurse to add
11601 DW_CFA_remember_state first.
11602 (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
11603 instead just set emit_cfa_remember.
11605 2009-06-08 Jan Hubicka <jh@suse.cz>
11608 * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
11610 2009-06-08 Jan Hubicka <jh@suse.cz>
11612 PR middle-end/39834
11613 * cgraphunit.c (save_inline_function_body): Do not copy transform
11614 hooks for saved inline bodies.
11615 * ipa-passes.c (do_per_function): Do not add the hoks multiple times
11616 for given function.
11618 2009-06-08 Adam Nemet <anemet@caviumnetworks.com>
11620 * jump.c (returnjump_p): Handle delayed branches. Add missing
11623 2009-06-08 Jan Hubicka <jh@suse.cz>
11625 PR middle-end/40102
11626 * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
11627 original node might've been modified.
11628 * tree-inline.c (copy_bb): Do not assume that all clones are the same.
11630 2009-06-08 Jakub Jelinek <jakub@redhat.com>
11632 * tree-object-size.c (addr_object_size): Add OSI argument.
11633 Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
11634 (compute_builtin_object_size, expr_object_size): Adjust callers.
11635 (plus_stmt_object_size): Call addr_object_size instead of
11636 compute_builtin_object_size.
11638 2009-06-08 Ghassan Shobaki <ghassan.shobaki@amd.com>
11639 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
11641 * tree-ssa-loop-prefetch.c
11642 (gather_memory_references): Introduced a counter for the number of
11644 (anything_to_prefetch_p): Introduced a counter for the number of
11646 (is_loop_prefetching_profitable): New function with a cost model
11648 (loop_prefetch_arrays): Use the new cost model to determine if
11649 prefetching is profitable.
11650 * params.def (MIN_INSN_TO_PREFETCH_RATIO,
11651 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11652 * params.h (MIN_INSN_TO_PREFETCH_RATIO,
11653 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11654 * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
11655 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
11657 2009-06-08 Michael Matz <matz@suse.de>
11660 * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
11661 partitions use the same.
11662 (expand_one_var): Deal with DECL_RTL sometimes begin set also
11663 for basevars of SSA_NAMEs.
11664 (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
11665 to not expand them twice.
11666 (gimple_expand_cfg): Clear DECL_RTL for those decls that have
11669 2009-06-08 Alexandre Oliva <aoliva@redhat.com>
11671 * common.opt (fcompare-debug=, fcompare-debug-second): New.
11672 (fdump-final-insns=, gtoggle): New.
11673 * doc/invoke.texi: Document them.
11674 * final.c (rest_of_clean_state): Dump final insn stream.
11675 * gcc.c (invoke_as): Hook in -fcompare-debug.
11676 (static_spec_functions): Add compare-debug-dump-opt,
11677 compare-debug-self-opt and compare-debug-auxbase-opt.
11678 (compare_debug, compare_debug_second, compare_debug_opt): New.
11679 (switches_debug_check, n_switches_debug_check): New.
11680 (debug_auxbase_opt, debug_check_temp_file): New.
11681 (process_command): Handle -fno-compare-debug, -fcompare-debug and
11683 (do_self_spec): Handle arguments after switches.
11684 (do_spec_1): Add .gk extension to temp file basenames for compare.
11685 (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
11686 (cc1_options): Use it instead of normal auxbase computation for
11687 the second compare-debug compilation.
11688 (compare_files): New.
11689 (main): Set up and implement compare debug mode.
11690 (compare_debug_dump_opt_spec_function): New.
11691 (compare_debug_self_opt_spec_function): New.
11692 (compare_debug_auxbase_opt_spec_function): New.
11693 * toplev.c (process_options): Handle flag_gtoggle,
11694 flag_dump_final_insns.
11695 * coverage.c (coverage_begin_output): Don't overwrite .gcno file
11696 during -fcompare-debug-second compilation.
11698 2009-06-07 Ian Lance Taylor <iant@google.com>
11700 * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
11701 * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
11703 * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
11704 with no default node. Change warning with %H to warning_at.
11705 Don't clear warn_switch around case checking.
11706 * doc/invoke.texi (Warning Options): Clarify distinction between
11707 -Wswitch and -Wswitch-enum.
11709 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11711 * tree-pass.h (TODO_update_ssa_any): Document internal use only.
11713 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11715 * gbl-ctors.h: Add header guard.
11717 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11719 * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
11720 sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
11721 vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
11722 vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
11723 prototypes for removed functions.
11724 (expressions_equal_p): Move to ...
11725 * tree-ssa-sccvn.h: ... here and ...
11726 * matrix-reorg.c: ... adjust includes.
11728 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11730 * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
11732 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11734 * c-decl.c (finish_decl): Use bool for variable was_incomplete.
11735 (finish_function): Remove erroneous whitespace.
11737 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11739 * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
11740 (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
11742 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11744 * errors.c (internal_error): Commentary typo fix.
11745 * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
11746 * tree-ssa-pre.c: Ditto.
11748 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
11750 * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
11751 them is supposed to hold actual statements.
11753 2009-06-06 Ian Lance Taylor <iant@google.com>
11755 * doc/extend.texi (Attribute Syntax): Document that C++ labels on
11756 empty statements can now have attributes.
11758 2009-06-05 Shujing Zhao <pearly.zhao@oracle.com>
11760 * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
11761 * config/mips/mips.md: Ditto.
11763 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
11765 * config/rs6000/eabi.asm (__eabi_convert): Don't define if
11767 (__eabi_uconvert): Likewise.
11769 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
11771 * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
11772 CFI_* definitions with IN_GCC.
11774 2009-06-05 David Edelsohn <edelsohn@gnu.org>
11776 * xcoffout.h (xcoffout_source_line): Update prototype.
11778 2009-06-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11780 * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
11781 mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
11783 2009-06-05 Jakub Jelinek <jakub@redhat.com>
11785 PR middle-end/40340
11786 * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
11787 inlined_function_outer_scope_p blocks for artificial inlines
11789 * tree.c (tree_nonartificial_location): Rewrite using
11790 block_nonartificial_location.
11792 2009-06-05 Revital Eres <eres@il.ibm.com>
11793 Leehod Baruch <leehod@il.ibm.com>
11795 * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
11796 (expand_expr_real_1): Remove comment.
11797 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
11798 Vectorize misaligned access when the target supports it.
11799 (vect_supportable_dr_alignment): Check for unaligned access support.
11800 * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
11803 2009-06-05 Julian Brown <julian@codesourcery.com>
11805 * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
11806 * config/arm/ieee754-sf.S (cmpsf2): Likewise.
11808 2009-06-05 Richard Guenther <rguenther@suse.de>
11811 * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
11812 as possibly unused.
11814 2009-06-05 Jakub Jelinek <jakub@redhat.com>
11816 * config/s390/s390.c (global_not_special_regno_p): New static inline.
11817 (save_gprs): Don't tell unwinder when a global register is saved.
11818 (s390_emit_epilogue): Emit needed epilogue unwind info.
11820 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
11822 * dwarf2out.c (deferred_asm_name): New.
11823 (add_name_and_src_coords_attributes): Defer creation of
11824 DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
11826 (move_linkage_attr): New.
11827 (dwarf2out_finish): Revisit deferrals and emit attributes at the
11830 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
11832 * tree-nested.c (finalize_nesting_tree_1): Declare the
11833 frame_decl in the binding tree.
11835 2009-06-04 Cary Coutant <ccoutant@google.com>
11837 * basic-block.h (struct basic_block_def): Add discriminator field.
11838 * dbxout.c (dbxout_source_line): Add new parameter. Change all
11840 * debug.c (do_nothing_debug_hooks): Add additional entry.
11841 (debug_nothing_int_charstar_int): New function.
11842 * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
11843 (debug_nothing_int_charstar_int): New declaration.
11844 * dwarf2out.c (dwarf2out_source_line): Add new parameter. Write
11845 discriminator value in .loc directive.
11846 * final.c (last_discriminator): New variable.
11847 (discriminator): New variable.
11848 (final_start_function): Initialize above variables, pass current
11849 discriminator to debug hook.
11850 (notice_source_line): Check for discriminator change.
11851 * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
11852 * sdbout.c (sdbout_source_line): New parameter.
11853 * tree-cfg.c (struct locus_discrim_map): New structure type.
11854 (discriminator_per_locus): New hash table.
11855 (build_gimple_cfg): Allocate and free discriminator hash table.
11856 (make_edges): Call assign_discriminator.
11857 (locus_map_hash): New function.
11858 (locus_map_eq): New function.
11859 (next_discriminator_for_locus): New function.
11860 (same_line_p): New function.
11861 (assign_discriminator): New function.
11862 (make_cond_expr_edges): Call assign_discriminator.
11863 (make_gimple_switch_edges): Likewise.
11864 (first_non_label_stmt): New function.
11865 * vmsdbgout.c (vmsdbgout_source_line): Add new parameter. Change
11867 * xcoffout.c (xcoffout_source_line): Add new parameter.
11869 * configure.ac (gcc_cv_as_discriminator): New configury check for
11870 gas support for discriminator.
11871 * configure: Regenerate.
11872 * config.in: Regenerate.
11874 2009-06-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
11876 * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
11877 val after checking for integers.
11879 2009-06-04 Uros Bizjak <ubizjak@gmail.com>
11881 * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
11883 (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11884 (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
11885 (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
11886 * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
11887 X64_REGPARM_MAX. Use X86_64_MS_SSE_REGPARM_MAX instead of
11888 X64_SSE_REGPARM_MAX.
11889 * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
11890 X64_SSE_REGPARM_MAX.
11892 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
11894 * gcc.c (report_times_to_file): New.
11895 (execute): Implement it.
11896 (process_command): Support -time=.
11897 * doc/invoke.texi: Document it.
11899 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
11901 * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
11902 that have value exprs.
11904 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
11906 * dwarf2asm.c (dw2_force_const_mem): Defer creation of
11907 declarations for constants until...
11908 (dw2_output_indirect_constant_1): ... this point.
11910 2009-06-04 Richard Earnshaw <rearnsha@arm.com>
11913 * arm.md (arm_addsi3): Don't try to split an add with an
11914 eliminable register until after reload has completed.
11916 2009-06-03 Ian Lance Taylor <iant@google.com>
11918 * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
11919 * genattrtab.c (write_length_unit_log): Likewise.
11920 * genchecksum.c (dosum): Likewise.
11921 * gengtype.c (write_rtx_next): Likewise.
11922 (finish_root_table, write_roots): Likewise.
11923 * gimple.c (gimple_ops_offset_): Likewise.
11924 * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
11925 * config/arc/arc.c (arc_attribute_table): Likewise.
11926 * config/arm/arm.c (arm_attribute_table): Likewise.
11927 * config/avr/avr.c (avr_attribute_table): Likewise.
11928 * config/crx/crx.c (crx_attribute_table): Likewise.
11929 * config/m32r/m32r.c (m32r_attribute_table): Likewise.
11930 * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
11931 * config/mcore/mcore.c (mcore_attribute_table): Likewise.
11932 * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
11933 * config/sh/sh.c (sh_attribute_table): Likewise.
11934 * config/sparc/sparc.c (sparc_attribute_table): Likewise.
11935 * config/spu/spu.c (spu_attribute_table): Likewise.
11936 * config/v850/v850.c (v850_attribute_table): Likewise.
11938 * config/alpha/alpha.c (vms_attribute_table): Make static.
11939 * config/bfin/bfin.c (bfin_attribute_table): Likewise.
11940 * config/h8300/h8300.c (h8300_attribute_table): Likewise.
11941 * config/mips/mips.c (mips_attribute_table): Likewise.
11943 * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
11945 (cc1-checksum.o): Likewise.
11947 2009-06-03 Steve Ellcey <sje@cup.hp.com>
11949 * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
11951 2009-06-03 Jakub Jelinek <jakub@redhat.com>
11953 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
11954 insn if it is changing sp. Use gen_add3_insn instead of
11955 conditionally gen_addsi3 and gen_adddi3.
11956 (offset_below_red_zone_p): New static inline function.
11957 (rs6000_emit_epilogue): Emit needed epilogue unwind info.
11958 Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
11959 * config/rs6000/ppc-asm.h: Include auto-host.h.
11960 (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
11961 CFI_RESTORE): Define.
11962 * config/rs6000/crtresxgpr.asm: Add unwind info.
11963 * config/rs6000/crtresxfpr.asm: Likewise.
11964 * config/rs6000/crtresgpr.asm: Likewise.
11965 * config/rs6000/crtresfpr.asm: Likewise.
11966 * config/rs6000/crtsavgpr.asm: Likewise.
11967 * config/rs6000/crtsavfpr.asm: Likewise.
11969 * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
11970 argument of DWARF2_FRAME_REG_OUT macros.
11972 2009-06-03 Julian Brown <julian@codesourcery.com>
11974 * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
11975 words or less (including TImode) in core registers.
11977 2009-06-03 Richard Guenther <rguenther@suse.de>
11979 PR middle-end/40328
11980 * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
11982 2009-06-03 Andrey Belevantsev <abel@ispras.ru>
11984 * statistics.c (statistics_counter_event): Do not record event
11985 in pass dump if its number == -1.
11986 (curr_statistics_hash): Add assert that we never get passes
11987 with static number == -1.
11989 2009-06-03 Richard Guenther <rguenther@suse.de>
11990 Andrey Belevantsev <abel@ispras.ru>
11992 * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
11993 non-BLKmode arrays addressable.
11995 2009-06-03 Maxim Kuvyrkov <maxim@codesourcery.com>
11997 * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
11998 * config/m68k/m68k.h: ... here.
11999 * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
12002 2009-06-03 Martin Jambor <mjambor@suse.cz>
12004 PR tree-optimization/40323
12005 * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
12008 2009-06-03 Richard Guenther <rguenther@suse.de>
12010 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12013 2009-06-03 Shujing Zhao <pearly.zhao@oracle.com>
12015 * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12016 JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
12017 JUMP_TABLE_DATA_P where applicable.
12018 * config/sh/sh.c: Ditto.
12019 * config/sh/sh.h: Ditto.
12020 * config/sh/sh.md: Ditto.
12021 * config/sh/symbian.c: Ditto.
12023 2009-06-03 Uros Bizjak <ubizjak@gmail.com>
12025 * config/i386/driver-i386.c (describe_cache): Optimize
12026 concatenation of strings. Use snprintf instead of sprintf.
12027 (host_detect_local_cpu): Ditto. Ignore -march and -mtune for native
12028 target when not compiling with GCC.
12030 2009-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
12032 * config/sh/sh.c: Revert last change.
12033 (sh_expand_epilogue): Emit a blockage insn before the frame
12034 pointer adjustment unconditionally.
12036 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
12038 * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
12039 * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
12040 * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
12041 * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
12042 to COLLECT_GCC_OPTIONS.
12044 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
12046 * collect2.c (target_system_root): New variable.
12047 (main): Handle --sysroot=.
12048 (ignore_library): Strip the sysroot from the library path.
12050 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
12052 * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
12053 (collect2.o): Depend on collect2-aix.h.
12054 (collect2-aix.o): New rule.
12055 * collect2-aix.h: New file.
12056 * collect2-aix.c: Likewise.
12057 * collect2.c: Include collect2-aix.h. Don't undefine
12058 OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
12059 Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
12060 Use TARGET_AIX_VERSION instead of _AIX51.
12061 * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
12062 * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
12063 * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
12064 * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
12065 * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
12067 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
12069 * collect2.c (ignore_library): Avoid premature post-increment
12070 and null deference.
12072 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
12074 * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
12075 * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
12076 !CROSS_DIRECTORY_STRUCTURE alternative and use it for
12077 CROSS_DIRECTORY_STRUCTURE too.
12078 (LINK_LIBG_SPEC): Likewise.
12079 (LIB_SPEC): Add %R to sysroot paths.
12080 * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
12081 (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
12082 * config/rs6000/aix51.h: As for aix43.h.
12083 * config/rs6000/aix52.h: Likewise.
12084 * config/rs6000/aix53.h: Likewise.
12085 * config/rs6000/aix61.h: Likewise.
12086 * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
12087 to the beginning of sysroot paths.
12089 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12091 * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
12092 INSN_LISTs that are out of the REG_NOTE range.
12094 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12096 * loop-unroll.c (struct iv_to_split): Add pointer to next.
12097 (struct var_to_expand): Likewise.
12098 (struct opt_info): Add head and tail for linked lists of the above.
12099 (analyze_insn_to_expand_var): Initialize next.
12100 (analyze_iv_to_split_insn): Likewise.
12101 (analyze_insns_in_loop): Create linked lists.
12102 (allocate_basic_variable): Simplify for use without hash table.
12103 (insert_var_expansion_initialization): Likewise, make it type-safer.
12104 (combine_var_copies_in_loop_exit): Likewise.
12105 (apply_opt_in_copies): Walk lists rather than hash tables.
12106 (release_var_copies): Simplified and inlined by hand into...
12107 (free_opt_info): ... this function.
12109 2009-06-02 Richard Guenther <rguenther@suse.de>
12111 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
12114 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12116 * cfgexpand.c (gimple_expand_cfg): Discard the source location
12117 only for builtins that are not overridden.
12119 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12121 * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
12124 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12126 * df-core.c (df_ref_debug): Honor -fdump-noaddr.
12128 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12130 * combine.c (move_deaths): Compare LUIDs within the same BB only.
12132 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
12134 * common.opt (fdump-unnumbered-links): New.
12135 * doc/invoke.texi (-fdump-unnumbered-links): Document it.
12136 * print-rtl.c (flag_dump_unnumbered_links): New.
12137 (print_rtx): Test it.
12139 2009-06-02 Richard Earnshaw <rearnsha@arm.com>
12141 * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
12142 push/pop multiple to 8-byte alignment.
12144 2009-06-01 Jakub Jelinek <jakub@redhat.com>
12146 * config/i386/i386.c (queued_cfa_restores): New static variable.
12147 (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
12149 (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
12150 (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
12151 Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
12152 Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
12153 note unconditionally.
12154 (ix86_emit_restore_regs_using_mov): Likewise.
12155 (ix86_emit_restore_sse_regs_using_mov): Likewise.
12156 (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
12157 it through to ix86_emit_restore_reg_using_pop.
12158 (ix86_emit_leave): Add RED_OFFSET argument. Call
12159 ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
12160 instead of adding REG_CFA_OFFSET note unconditionally.
12161 (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
12162 the above functions. Call ix86_add_queued_cfa_restore_notes when
12165 * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
12166 force output of the label even for dwarf2out_do_cfi_asm.
12167 (add_fde_cfi): If -g2 and above and cfi might change CFA,
12168 force creation of CFI label and chain DW_CFA_set_loc jumping to it
12169 for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
12171 (dwarf2out_stack_adjust, dwarf2out_frame_debug,
12172 dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
12173 dwarf2out_cfi_label callers.
12174 * tree.h (dwarf2out_cfi_label): Adjust prototype.
12175 * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
12176 Adjust dwarf2out_cfi_label callers.
12177 * config/vax/vax.c (vax_output_function_prologue): Likewise.
12179 * config/i386/i386.h (struct machine_cfa_state,
12180 struct machine_function): Guard with ifndef USED_FOR_TARGET
12181 instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
12184 * emutls.c (__emutls_get_address): Change arr->size to mean number
12185 of allocated arr->data entries instead of # of slots + 1.
12187 PR middle-end/40316
12188 * recog.c (peep2_reinit_state): New function.
12189 (peephole2_init_state): Use it at the end of a basic block and also
12190 when seeing a RTX_FRAME_RELATED_P insn.
12192 2009-06-01 Steve Ellcey <sje@cup.hp.com>
12194 * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
12195 fixuns_truncrfdi2): New.
12196 (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
12197 *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
12198 *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
12199 *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
12200 *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
12201 *recip_approx): Remove.
12202 (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
12203 moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
12204 divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
12206 * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
12209 2009-06-01 Ian Lance Taylor <iant@google.com>
12211 * attribs.c (register_attribute): Use CONST_CAST.
12212 * collect2.c (main): Use CONST_CAST2.
12213 (scan_prog_file): Likewise.
12214 * gcc.c (process_command, main): Likewise.
12215 * toplev.c (toplev_main): Likewise.
12217 * c-typeck.c (handle_warn_cast_qual): New static function,
12218 partially broken out of build_c_cast.
12219 (build_c_cast): Call handle_warn_cast_qual.
12220 * doc/invoke.texi (Warning Options): Document new effect of
12223 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
12225 * diagnostic.c (diagnostic_build_prefix): Always print columns.
12226 (diagnostic_report_current_module): Print columns.
12227 * common.opt (flag_show_column): Enable by default.
12229 2009-06-01 Luis Machado <luisgpm@br.ibm.com>
12231 * alias.c (find_base_term): Check for NULL term before returning.
12233 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
12235 Revert due to PR40320:
12236 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
12237 * calls.c (emit_library_call_value_1): Don't force_operand for move
12240 2009-06-01 Olivier Hainque <hainque@adacore.com>
12241 Eric Botcazou <ebotcazou@adacore.com>
12243 * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
12244 to be processed as a bitfield for constructor output purposes.
12245 * output.h (initializer_constant_valid_for_bitfield_p): Declare
12247 * varasm.c (oc_local_state): New type, output_constructor
12248 local state to support communication with helpers.
12249 (oc_outer_state): New type, output_constructor outer state of
12250 relevance in recursive calls.
12251 (output_constructor_array_range): New output_constructor helper,
12252 extracted code for an array range element.
12253 (output_constructor_regular_field): New output_constructor helper,
12254 extracted code for an element that is not a bitfield.
12255 (output_constructor_bitfield): New output_constructor helper,
12256 extracted code for a bitfield element. Accept an OUTER state
12257 argument for recursive processing. Recurse on record or array
12258 CONSTRUCTOR values, possibly past noop conversions.
12259 (initializer_constant_valid_for_bitfield_p): New predicate. Whether
12260 VALUE is a valid constant-valued expression for use in a static
12261 bit-field initializer.
12262 (output_constructor): Rework to use helpers. Accept and honor an
12263 OUTER state argument for recursive calls. Return total size. Be
12264 prepared for nested constructors initializing bitfields.
12265 (output_constant): Feed OUTER in calls to output_constructor.
12267 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
12269 * calls.c (emit_library_call_value_1): Don't force_operand for move
12272 2009-06-01 Nick Clifton <nickc@redhat.com>
12274 * doc/invoke.texi (IA-64 Options): Fix typo.
12276 2009-06-01 Ira Rosen <irar@il.ibm.com>
12278 PR tree-optimization/39129
12279 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
12281 (vect_do_peeling_for_loop_bound): Use
12282 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12283 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12284 (vect_loop_versioning): Likewise.
12285 (vect_create_cond_for_alias_checks): Fix indentation.
12286 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
12288 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
12289 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
12290 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
12291 "control flow in loop".
12292 (vect_estimate_min_profitable_iters): Use
12293 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
12294 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
12295 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12296 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
12297 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
12298 statement belongs to a group of strided accesses with the exact code
12300 (vectorizable_load): Likewise.
12301 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
12302 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
12304 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
12306 * config/freebsd-stdint.h: New file.
12307 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
12308 Add freebsd-stdint.h to tm_file.
12310 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
12312 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
12313 (thumb2_extendhidi2): Likewise.
12315 2009-05-31 Ian Lance Taylor <iant@google.com>
12317 * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
12319 2009-05-31 Ian Lance Taylor <iant@google.com>
12321 * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
12322 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
12323 (ipa-reference.o): Depend upon gt-ipa-reference.h.
12325 2009-05-31 Jason Merrill <jason@redhat.com>
12327 * tree-pretty-print.c (print_call_name): Take the callee, not the
12328 call itself. Make non-static. Use dump_function_name for functions.
12329 (dump_generic_node): Adjust.
12330 * diagnostic.h: Declare print_call_name.
12331 * gimple-pretty-print.c (dump_gimple_call): Use it.
12333 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
12335 * config/sh/sh.md (ashldi3_std): New define_expand.
12338 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
12341 * config/sh/sh.c: Include debug.h.
12342 (sh_expand_epilogue): Emit a blockage insn before the frame
12343 pointer adjustment also when dwarf2out_do_frame returns true.
12345 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
12347 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
12348 (thumb2_extendqidi2): New pattern.
12350 2009-05-31 Ira Rosen <irar@il.ibm.com>
12352 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
12353 mark phis for renaming.
12354 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
12355 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
12356 Call mark_sym_for_renaming.
12357 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
12358 * tree-vect-loop.c (vect_transform_loop): Remove
12359 vect_memsyms_to_rename initialization and a call to
12360 mark_set_for_renaming.
12362 2009-05-31 Jakub Jelinek <jakub@redhat.com>
12364 PR middle-end/40304
12365 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
12366 frame related even if !set_cfa && style < 0.
12368 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
12370 * config/i386/mingw-tls.c: New file.
12371 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
12372 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
12373 defining _WIN32 but not __CYGWIN__.
12375 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12377 * configure.ac: Add MPC support.
12379 * config.in, configure: Regenerate.
12381 2009-05-29 Richard Henderson <rth@redhat.com>
12383 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
12384 NOTE_INSN_BASIC_BLOCK.
12385 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
12386 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
12387 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
12389 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
12391 (add_cfi): Disable check redefining cfa away from drap.
12392 (lookup_cfa_1): Add remember argument; handle remember/restore.
12393 (lookup_cfa): Pass remember argument.
12394 (cfa_remember): New.
12395 (compute_barrier_args_size_1): Remove sibcall check.
12396 (dwarf2out_frame_debug_def_cfa): New.
12397 (dwarf2out_frame_debug_adjust_cfa): New.
12398 (dwarf2out_frame_debug_cfa_offset): New.
12399 (dwarf2out_frame_debug_cfa_register): New.
12400 (dwarf2out_frame_debug_cfa_restore): New.
12401 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
12402 (dwarf2out_begin_epilogue): New.
12403 (dwarf2out_frame_debug_restore_state): New.
12404 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
12405 DW_CFA_restore_state.
12406 (output_cfi_directive): Likewise.
12407 (convert_cfa_to_fb_loc_list): Likewise.
12408 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
12409 * dwarf2out.h: Update.
12410 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
12411 (copy_insn_1): Early out for null.
12412 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
12413 and dwarf2out_frame_debug_restore_state.
12414 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
12415 (prologue_insn_hash, epilogue_insn_hash): New.
12416 (free_after_compilation): Adjust freeing accordingly.
12417 (record_insns): Create hash table if needed; push insns into
12418 hash instead of array.
12419 (maybe_copy_epilogue_insn): New.
12420 (contains): Search hash table instead of array.
12421 (sibcall_epilogue_contains): Remove.
12422 (thread_prologue_and_epilogue_insns): Split eh_return insns
12423 and mark them as epilogues.
12424 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
12425 scanning in terms of basic blocks.
12426 * insn-notes.def (CFA_RESTORE_STATE): New.
12427 * jump.c (returnjump_p_1): Accept EH_RETURN.
12428 (eh_returnjump_p_1, eh_returnjump_p): New.
12429 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
12430 CFA_REGISTER, CFA_RESTORE): New.
12431 * rtl.def (EH_RETURN): New.
12432 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
12434 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
12435 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
12437 * config/i386/i386.c (gen_push): Update cfa state.
12438 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
12439 add a CFA_ADJUST_CFA note.
12440 (ix86_dwarf_handle_frame_unspec): Remove.
12441 (ix86_expand_prologue): Update cfa state.
12442 (ix86_emit_restore_reg_using_pop): New.
12443 (ix86_emit_restore_regs_using_pop): New.
12444 (ix86_emit_leave): New.
12445 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
12446 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
12447 * config/i386/i386.h (struct machine_cfa_state): New.
12448 (ix86_cfa_state): New.
12449 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
12450 (eh_return_internal): Merge from eh_return_<mode>,
12451 use eh_return rtx, split w/ epilogue.
12453 2009-05-29 Ian Lance Taylor <iant@google.com>
12455 * builtins.c (validate_gimple_arglist): Don't use va_arg with
12457 * calls.c (emit_library_call_value_1): Likewise.
12459 * c-typeck.c (c_build_va_arg): New function.
12460 * c-tree.h (c_build_va_arg): Declare.
12461 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
12462 instead of build_va_arg.
12464 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
12466 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
12467 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
12468 (ptr_difference_cost): Use affine combinations to compute it.
12469 (difference_cost): Likewise.
12470 (get_computation_cost_at): Compute more accurate cost for addresses
12471 if the ratio is a multiplier allowed in addresses.
12472 For non-addresses, consider that an additional offset or symbol is
12475 2009-05-29 Jakub Jelinek <jakub@redhat.com>
12477 * config/i386/i386.c (ix86_decompose_address): Avoid useless
12478 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
12480 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
12481 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
12482 (prefix_rex): For UNIT_MMX don't imply the prefix by default
12484 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
12485 to 1 for TYPE_SSE{IADD1,CVT1}.
12486 (prefix_vex_imm8): Removed.
12487 (length_vex): Only pass 1 as second argument to
12488 ix86_attr_length_vex_default if prefix_extra is 0.
12489 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
12490 (length): For prefix vex computation use length_immediate
12491 attribute instead of prefix_vex_imm8.
12492 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
12493 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
12494 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
12495 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
12496 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
12497 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
12498 a space in between the operands.
12499 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
12500 if one operand is 0xff and the other one si, di, bp or sp.
12501 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
12502 other one si, di, bp or sp.
12503 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
12504 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
12505 type and mode attributes.
12506 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
12507 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
12508 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
12509 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
12510 prefix_data16 attribute iff MODE_DF.
12511 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
12512 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
12513 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
12514 constm128_operand in length_immediate computation.
12515 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
12516 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
12517 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
12518 length_immediate attribute to 1.
12519 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
12520 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
12521 for certain alternatives.
12522 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
12523 prefix_data16 attribute if MODE_V1DF.
12524 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
12525 length_immediate to 1.
12526 (set_got_rex64, set_rip_rex64): Remove length attribute, set
12527 length_address to 4, set mode attribute to MODE_DI.
12528 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
12529 (fxam<mode>2_i387): Set length attribute to 4.
12530 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
12531 *prefetch_3dnow_rex): Override length_address attribute.
12532 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
12534 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
12535 (constm128_operand): Removed.
12536 * config/i386/i386.c (memory_address_length): For
12537 disp && !index && !base in 64-bit mode account for SIB byte if
12538 print_operand_address can't optimize disp32 into disp32(%rip)
12539 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
12540 for fs: or gs: segment.
12541 (ix86_attr_length_immediate_default): When checking if shortform
12542 is possible, truncate immediate to the length of the non-shortened
12544 (ix86_attr_length_address_default): Ignore MEM_P operands
12546 (ix86_attr_length_vex_default): Only check for DImode on
12547 GENERAL_REG_P operands.
12548 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
12549 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
12550 (sse_cvttps2pi): Clear prefix_rep attribute.
12551 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
12553 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
12554 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
12555 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
12556 iff operand 2 is const_int_operand.
12557 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
12558 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
12559 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
12561 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
12563 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
12564 prefix_data16 attribute for movlpd and movhpd instructions.
12565 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
12566 length_immediate for shufpd instruction.
12567 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
12568 (avx_cmpp<avxmodesuffixf2c><mode>3,
12569 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
12570 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
12571 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
12572 *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
12573 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
12574 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
12575 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
12576 prefix_data16 attribute for the first alternative to 1.
12577 (*avx_loadlps): Override length_immediate for the first alternative.
12578 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
12579 attributes for second alternative.
12580 (*vec_concatv2sf_sse4_1): Override length_immediate and
12581 prefix_data16 attributes for second alternative.
12582 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
12583 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
12584 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
12585 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
12586 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
12587 prefix_data16 and length_immediate to 1.
12588 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
12590 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
12591 prefix_extra attribute for variants that don't have 0f prefix alone.
12592 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
12593 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
12594 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
12595 *sse4_1_pextrd): Set length_immediate to 1.
12596 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
12597 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
12599 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
12600 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
12601 length_immediate to 1 for second alternative.
12602 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
12603 prefix_extra and length_immediate attributes for the first
12605 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
12607 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
12608 to 1 for the first and third alternative.
12609 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
12611 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
12613 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
12615 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
12616 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
12617 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
12618 *avx_psign<mode>3): Set prefix_extra attribute to 1.
12619 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
12620 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
12621 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
12622 ssse3_psign<mode>3): Override prefix_rex attribute.
12623 (*avx_palignrti): Override prefix_extra and length_immediate to 1.
12624 (ssse3_palignrti): Override length_immediate to 1.
12625 (ssse3_palignrdi): Override length_immediate to 1, override
12626 prefix_rex attribute.
12627 (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
12628 (sse4a_extrqi): Override length_immediate to 2.
12629 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
12630 (sse4a_insertq): Override prefix_data16 to 0.
12631 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
12632 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
12633 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
12634 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
12635 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
12636 and length_immediate to 1.
12637 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
12638 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
12639 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
12640 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
12641 and length_immediate to 1.
12642 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
12643 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
12644 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
12645 avx_ptest256): Override prefix_extra to 1.
12646 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
12647 Override prefix_data16 and length_immediate to 1.
12648 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
12649 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
12650 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
12651 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
12652 prefix_data16 to 0 and prefix_extra to 2.
12653 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
12654 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
12656 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
12657 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
12658 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
12659 and prefix_extra to 2.
12660 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
12661 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
12662 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
12663 avx_vpermilvar<mode>3,
12664 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
12665 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
12666 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
12667 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
12668 Override prefix_extra to 1.
12669 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
12670 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
12671 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
12672 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
12673 prefix_extra and length_immediate to 1.
12674 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
12676 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
12677 to 1 for the first alternative.
12678 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
12679 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
12681 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
12682 *movv2sf_internal_avx, *movv2sf_internal): Override
12683 prefix_rep attribute for certain alternatives.
12684 (*mov<mode>_internal): Override prefix_rep or prefix_data16
12685 attributes for certain alternatives.
12686 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
12687 attributes for certain alternatives.
12688 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
12689 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
12690 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
12691 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
12692 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
12693 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
12694 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
12695 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
12696 length_immediate to 1 if operand 2 is const_int_operand.
12697 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
12698 *vec_extractv2si_1): Set length_immediate attribute to 1.
12699 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
12700 using old 3DNOW insn rather than SSE/3DNOW_A.
12701 (mmx_emms, mmx_femms): Clear modrm attribute.
12703 2009-05-29 Martin Jambor <mjambor@suse.cz>
12705 * tree-sra.c: New implementation of SRA.
12707 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
12708 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
12709 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
12710 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
12711 (SRA_MAX_STRUCTURE_COUNT): Removed.
12712 (SRA_FIELD_STRUCTURE_RATIO): Removed.
12713 * doc/invoke.texi (sra-max-structure-size): Removed.
12714 (sra-field-structure-ratio): Removed.
12716 2009-05-29 Jakub Jelinek <jakub@redhat.com>
12718 PR middle-end/40291
12719 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
12722 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
12724 PR rtl-optimization/40101
12725 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
12726 seqno. Adjust comment.
12727 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
12728 inserting bookkeeping before a jump, the jump is not scheduled.
12729 When no positive seqno found, provide a value. Add comment.
12731 2009-05-29 Richard Guenther <rguenther@suse.de>
12733 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
12734 short-cutting on the first component.
12736 2009-05-29 Jakub Jelinek <jakub@redhat.com>
12738 PR middle-end/39958
12739 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
12740 for trees other than decls/types.
12742 2009-05-29 Richard Guenther <rguenther@suse.de>
12744 * tree-ssa-operands.c (get_expr_operands): Do not handle
12745 INDIRECT_REFs in the handled-component case. Remove
12746 unused get_ref_base_and_extent case.
12747 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
12748 tree_low_cst and host_integerp where possible.
12749 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
12750 codes for equivalence.
12751 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
12753 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
12755 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
12756 to tmake_file for i[34567]86-*-cygwin*.
12758 2009-05-29 Jakub Jelinek <jakub@redhat.com>
12761 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
12762 (altivec_categorize_keyword, init_vector_keywords,
12763 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
12766 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
12768 * tree.c (handle_dll_attribute): Check if node is
12769 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
12771 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
12773 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
12775 (thumb2_zero_extendqidi2): Likewise.
12777 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
12779 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
12780 instead of gen_movrt.
12781 * config/sh/sh.md (movrt): Remove.
12783 2009-05-28 Steve Ellcey <sje@cup.hp.com>
12785 * doc/invoke.texi (IA-64 Options):
12786 Add -msdata, -mfused-madd, -mno-inline-float-divide,
12787 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
12788 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
12789 -msched-prefer-non-control-spec-insns,
12790 -msched-stop-bits-after-every-cycle,
12791 -msched-count-spec-in-critical-path,
12792 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
12793 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
12794 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
12795 and -msched-spec-verbose.
12797 2009-05-28 Joseph Myers <joseph@codesourcery.com>
12799 * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
12800 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
12802 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
12804 2009-05-28 Richard Guenther <rguenther@suse.de>
12806 * tree-ssa-alias.c (ao_ref_init): New function.
12807 (ao_ref_base): Likewise.
12808 (ao_ref_base_alias_set): Likewise.
12809 (ao_ref_alias_set): Likewise.
12810 (refs_may_alias_p_1): Change signature.
12811 (refs_may_alias_p): Adjust.
12812 (refs_anti_dependent_p): Likewise.
12813 (refs_output_dependent_p): Likewise.
12814 (call_may_clobber_ref_p_1): Change signature.
12815 (call_may_clobber_ref_p): Adjust.
12816 (stmt_may_clobber_ref_p_1): New function split out from ...
12817 (stmt_may_clobber_ref_p): ... here.
12818 (maybe_skip_until): Adjust signature.
12819 (get_continuation_for_phi): Likewise.
12820 (walk_non_aliased_vuses): Likewise.
12821 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
12822 (ao_ref_init): Declare.
12823 (ao_ref_base): Likewise.
12824 (ao_ref_alias_set): Likewise.
12825 (stmt_may_clobber_ref_p_1): Likewise.
12826 (walk_non_aliased_vuses): Adjust.
12827 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
12828 (get_ref_from_reference_ops): remove.
12829 (vn_reference_lookup_2): Adjust signature.
12830 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
12831 (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
12832 (vn_reference_lookup): Adjust.
12833 (vn_reference_insert): Likewise.
12834 (vn_reference_insert_pieces): Adjust signature.
12835 (visit_reference_op_call): Adjust.
12836 * tree-ssa-pre.c (get_expr_type): Simplify.
12837 (phi_translate_1): Adjust.
12838 (compute_avail): Likewise.
12839 (translate_vuse_through_block): Do not re-build trees.
12840 (value_dies_in_block_x): Likewise.
12841 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
12843 (vn_reference_lookup_pieces): Adjust declaration.
12844 (vn_reference_insert_pieces): Likewise.
12846 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
12848 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
12849 with checking disabled.
12851 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
12855 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
12856 macro definition for support of three-operand format aligned
12857 .comm directive in assembler on cygwin/pe/mingw target OS.
12858 * configure: Regenerate.
12859 * config.h: Regenerate.
12861 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
12862 aligned form of .comm directive if -mpe-aligned-commons is in effect.
12863 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
12865 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
12866 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
12868 2009-05-28 Ira Rosen <irar@il.ibm.com>
12870 PR tree-optimization/40254
12871 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
12872 in analysis of basic blocks.
12874 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
12876 PR middle-end/33699
12877 * target.h (struct gcc_target): Fix indentation. Add const_anchor.
12878 * target-def.h (TARGET_CONST_ANCHOR): New macro.
12879 (TARGET_INITIALIZER): Use it.
12880 * cse.c (CHEAPER): Move it up to the other macros.
12881 (insert): Rename this ...
12882 (insert_with_costs): ... to this. Add cost parameters. Update
12884 (insert): New function. Call insert_with_costs.
12885 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
12886 find_reg_offset_for_const, try_const_anchors): New functions.
12887 (cse_insn): Call try_const_anchors. Adjust cost of src_related
12888 when using a const-anchor. Call insert_const_anchors.
12889 * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
12890 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
12892 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
12894 * tree-inline.c (remap_decls): Enable nonlocalized variables
12895 when not optimizing.
12897 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
12899 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
12900 Simplify other tests involving optimize.
12902 2009-05-27 Tom Tromey <tromey@redhat.com>
12904 * unwind-dw2.c (_Unwind_DebugHook): New function.
12905 (uw_install_context): Call _Unwind_DebugHook.
12907 2009-05-27 Tom Tromey <tromey@redhat.com>
12909 * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
12911 2009-05-27 Ian Lance Taylor <iant@google.com>
12913 * Makefile.in (LINKER, LINKER_FLAGS): Define.
12914 (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
12915 (ALL_LINKERFLAGS): Define.
12916 (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
12917 (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
12918 (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
12919 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
12920 (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
12921 $(LINKER_FOR_BUILD).
12922 (build/gcov-iov$(build_exeext)): Likewise.
12924 2009-05-27 Julian Brown <julian@codesourcery.com>
12926 * gcse.c (target.h): Include.
12927 (can_assign_to_reg_without_clobbers_p): Check that the target allows
12928 copy of argument to a pseudo register.
12930 2009-05-27 Diego Novillo <dnovillo@google.com>
12932 * tree-ssa-live.c (dump_scope_block): Document arguments.
12933 (dump_scope_blocks): Document.
12934 (debug_scope_blocks): New.
12935 * tree-flow.h (debug_scope_blocks): Declare.
12937 2009-05-21 Denis Chertykov <denisc@overta.ru>
12939 * doc/contrib.texi (Contributors): Add myself to the list.
12941 2009-05-27 Olivier Hainque <hainque@adacore.com>
12943 * expr.c (target_align): New function. Alignment the TARGET of an
12944 assignment may be assume to have.
12945 (highest_pow2_factor_for_target): Use it instead of relying on
12946 immediate tree attributes of TARGET, not necessarily honored when
12947 intermediate bitfields are involved.
12949 2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
12952 * config/i386/driver-i386.c (host_detect_local_cpu): Support
12953 AVX, SSE4, AES, PCLMUL and POPCNT.
12955 2009-05-27 Diego Novillo <dnovillo@google.com>
12957 * tree-pretty-print.c (dump_location): New.
12958 (dump_generic_node): Call it.
12959 Factor code to handle BLOCK nodes ...
12960 (dump_block_node): ... here.
12962 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
12964 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
12966 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
12968 * gcc-plugin.h: Include config.h and system.h.
12969 (IN_GCC): Define if not defined.
12971 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
12973 PR middle-end/40249
12974 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
12977 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
12979 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
12981 * config/m32r/m32r.h: Ditto.
12982 * config/m32r/m32r.md: Ditto.
12983 * config/m32r/predicates.md: Ditto.
12985 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
12987 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
12989 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
12992 (Loading plugins): typo.
12993 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
12994 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
12995 (Interacting with the GCC Garbage Collector): Added new section.
12996 (Giving information about a plugin): Added new section for
12998 * ggc.h (ggc_register_root_tab): Added declaration.
12999 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
13000 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
13001 (register_callback): Improved comment in declaration.
13002 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
13003 (extra_root_vec) Added static variable for dynamic roots registration.
13004 (ggc_register_root_tab) Added new routine.
13005 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
13006 PLUGIN_GGC_MARKING event.
13007 * ggc-zone.c: Include plugin.h.
13008 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13009 * ggc-page.c: Include plugin.h.
13010 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
13011 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
13012 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
13013 (register_callback): check lack of callbacks for
13014 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
13015 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
13016 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
13017 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
13018 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
13019 dependency on plugin.h.
13020 (plugin.o): Added dependency on ggc.h...
13022 2009-05-26 Richard Guenther <rguenther@suse.de>
13024 PR middle-end/40248
13026 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13027 with mismatched comparison modes.
13029 * expr.c (expand_expr_real_1): Expand the operand of a
13030 VIEW_CONVERT_EXPR in its natural mode.
13032 2009-05-26 Ian Lance Taylor <iant@google.com>
13034 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
13035 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
13036 (ALL_COMPILERFLAGS): Define.
13037 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
13038 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
13039 (collect2$(exeext), collect2.o): Likewise.
13040 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
13041 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
13042 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
13043 (libbackend.o, intl.o, cppdefault.o): Likewise.
13044 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
13045 (build/%.o): Use $(COMPILER_FOR_BUILD).
13046 (build/gen%$(build_exeext)): Likewise.
13047 (build/gcov-iov$(build_exeext)): LIkewise.
13048 * config/t-darwin (darwin.o): Use $(COMPILER).
13049 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
13050 * config/t-sol2 (sol2-c.o): Likewise.
13051 (sol2.o): Likewise.
13052 * config/t-vxworks (vxworks.o): Likewise.
13053 * config/x-darwin (host-darwin.o): Likewise.
13054 * config/x-hpux (host-hpux.o): Likewise.
13055 * config/x-linux (host-linux.o): Likewise.
13056 * config/x-solaris (host-solaris.o): Likewise.
13057 * config/alpha/x-alpha (driver-alpha.o): Likewise.
13058 * config/arm/t-arm (arm-c.o): Likewise.
13059 * config/arm/t-pe (pe.o): Likewise.
13060 * config/arm/t-wince-pe (pe.o): Likewise.
13061 * config/i386/t-cygming (winnt.o): Likewise.
13062 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
13063 * config/i386/t-cygwin (cygwin1.o): Likewise.
13064 (cygwin2.o): Likewise.
13065 * config/i386/t-i386 (i386-c.o): Likewise.
13066 * config/i386/t-interix (winnt.o): Likewise.
13067 * config/i386/t-netware (netware.o): Likewise.
13068 * config/i386/t-nwld (nwld.o): Likewise.
13069 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
13070 * config/i386/x-i386 (driver-i386.o): Likewise.
13071 * config/i386/x-cygwin (host-cygwin.o): Likewise.
13072 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
13073 * config/ia64/t-ia64 (ia64-c.o): Likewise.
13074 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
13075 * config/mips/x-native (driver-native.o): Likewise.
13076 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
13077 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
13078 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
13079 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
13080 * config/score/t-score-elf (score7.o): Likewise.
13081 (score3.o): Likewise.
13082 * config/sh/t-sh (sh-c.o): Likewise.
13083 * config/sh/t-symbian (sh-c.o): Likewise.
13084 (symbian.o): Likewise.
13085 * config/spu/t-spu-elf (spu-c.o): Likewise.
13086 * config/v850/t-v850 (v850-c.o): Likewise.
13087 * config/v850/t-v850e (v850-c.o): Likewise.
13089 2009-05-26 Richard Guenther <rguenther@suse.de>
13091 PR tree-optimization/40122
13092 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
13093 VECTOR_CSTs if possible.
13094 (fold_gimple_assign): Likewise.
13096 2009-05-26 Richard Guenther <rguenther@suse.de>
13098 PR middle-end/40252
13099 * fold-const.c (fold_binary): Use the correct types for building
13102 2009-05-26 Richard Guenther <rguenther@suse.de>
13104 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
13105 redundant calls to merge_alias_info.
13106 (bump_vector_ptr): Likewise.
13107 * tree-ssa-copy.c (merge_alias_info): Remove.
13108 (replace_exp_1): Remove call to merge_alias_info.
13109 (propagate_tree_value): Likewise.
13110 (fini_copy_prop): Propagate points-to info.
13111 * tree-flow.h (merge_alias_info): Remove.
13113 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
13115 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
13117 2009-05-25 Jan Hubicka <jh@suse.cz>
13119 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
13120 * cgraph.h (struct inline_summary): New filed self_wize,
13121 size_inlining_benefit, self_time and time_inlining_benefit.
13122 (struct cgraph_global_info): Replace insns by time ans size fields.
13123 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
13124 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
13125 (ipcp_update_callgraph): Do not touch function bodies.
13126 * ipa-inline.c: Include except.h
13127 (MAX_TIME): New constant.
13128 (overall_insns): Remove.
13129 (leaf_node_p): New.
13130 (overall_size, max_benefit): New static variables.
13131 (cgraph_estimate_time_after_inlining): New function.
13132 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
13133 (cgraph_clone_inlined_nodes): Update size.
13134 (cgraph_mark_inline_edge): Update size.
13135 (cgraph_estimate_growth): Use size info.
13136 (cgraph_check_inline_limits): Check size.
13137 (cgraph_default_inline_p): Likewise.
13138 (cgraph_edge_badness): Compute badness based on benefit and size cost.
13139 (cgraph_decide_recursive_inlining): Check size.
13140 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
13142 (cgraph_decide_inlining): Likewise.
13143 (cgraph_decide_inlining_incrementally): Likewise; honor
13144 PARAM_EARLY_INLINING_INSNS.
13145 (likely_eliminated_by_inlining_p): New predicate.
13146 (estimate_function_body_sizes): New function.
13147 (compute_inline_parameters): Use it.
13148 * except.c (must_not_throw_labels): New function.
13149 * except.h (must_not_throw_labels): Declare.
13150 * tree-inline.c (init_inline_once): Kill inlining_weigths
13151 * tree-ssa-structalias.c: Avoid uninitialized warning.
13152 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
13153 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
13154 (PARAM_INLINE_CALL_COST): Remove.
13155 (PARAM_EARLY_INLINING_INSNS): New.
13157 2009-05-25 Richard Guenther <rguenther@suse.de>
13159 PR tree-optimization/36327
13160 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
13161 callback for reference translation or lookup at the point of may-defs.
13162 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
13163 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
13164 for union COMPONENT_REFs.
13165 (vn_reference_lookup_3): New callback. Lookup from memset
13166 and CONSTRUCTOR assignment, translate through struct copies.
13167 (vn_reference_lookup_pieces): Make sure to not free the
13168 passed operands array. Adjust walk_non_aliased_vuses call.
13169 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
13170 make sure we do not leak memory.
13172 2009-05-25 Richard Guenther <rguenther@suse.de>
13174 * tree-ssa-alias.h (dump_points_to_solution): Declare.
13175 * tree-inline.c (expand_call_inline): Reset the escaped and
13176 callused solutions.
13177 * tree-ssa-structalias.c (pass_build_ealias): New.
13178 * tree-pass.h (pass_build_ealias): Declare.
13179 * passes.c (init_optimization_passes): Add PTA during
13180 early optimizations.
13181 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
13182 and CALLUSED solutions.
13183 (dump_points_to_solution): New function, split out from ...
13184 (dump_points_to_info_for): ... here.
13185 * tree-parloops.c (parallelize_loops): Reset the escaped and
13186 callused solutions.
13188 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
13191 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
13192 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
13194 2009-05-25 Ira Rosen <irar@il.ibm.com>
13196 PR tree-optimization/40238
13197 * tree-vect-stmts.c (vect_init_vector): Insert initialization
13198 statements after basic block's labels.
13199 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
13200 to free the allocated memory.
13202 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
13204 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
13205 return address with a USE.
13207 2009-05-24 Richard Guenther <rguenther@suse.de>
13209 PR middle-end/40233
13210 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
13211 array type from the main variant of the inner type.
13213 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
13215 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
13216 definition to bool (from int) to un-break build.
13217 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
13219 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
13221 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
13222 discard_stmt_changes): Delete.
13223 * tree-ssa-operands.c (scb_stack): Delete.
13224 (init_ssa_operands): Do not initialize it.
13225 (fini_ssa_operands): Do not free it.
13226 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
13228 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
13229 update_stmt, remove the others. Fix comments.
13230 * tree-dfa.c (optimize_stack_restore): Likewise.
13231 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
13232 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
13233 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13234 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
13236 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
13237 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
13238 (dom_opt_finalize_block): Likewise, adjusting access to
13240 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
13241 (stmts_to_rescan): Change item type to gimple.
13242 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
13244 2009-05-24 Ira Rosen <irar@il.ibm.com>
13246 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
13247 * tree-pass.h (pass_slp_vectorize): New pass.
13248 * params.h (SLP_MAX_INSNS_IN_BB): Define.
13249 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
13250 * tree-vectorizer.c (timevar.h): Include.
13251 (user_vect_verbosity_level): Declare.
13252 (vect_location): Fix comment.
13253 (vect_set_verbosity_level): Update user_vect_verbosity_level
13254 instead of vect_verbosity_level.
13255 (vect_set_dump_settings): Add an argument. Ignore user defined
13256 verbosity if dump flags require higher level of verbosity. Print to
13257 stderr only for loop vectorization.
13258 (vectorize_loops): Update call to vect_set_dump_settings.
13259 (execute_vect_slp): New function.
13260 (gate_vect_slp): Likewise.
13261 (struct gimple_opt_pass pass_slp_vectorize): New.
13262 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
13263 access its members.
13264 (vec_info_for_bb): New function.
13265 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
13266 (VECTORIZATION_ENABLED): New macro.
13267 (SLP_ENABLED, SLP_DISABLED): Likewise.
13268 (vect_is_simple_use): Add bb_vec_info argument.
13269 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
13270 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
13271 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
13272 vect_schedule_slp, vect_analyze_slp): Likewise.
13273 (vect_analyze_stmt): Add slp_tree argument.
13274 (find_bb_location): Declare.
13275 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
13276 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
13277 (vect_analyze_loop_operations, vect_analyze_loop,
13278 get_initial_def_for_induction, vect_create_epilog_for_reduction,
13279 vect_finalize_reduction, vectorizable_reduction,
13280 vectorizable_live_operation, vect_transform_loop): Likewise.
13281 * tree-data-ref.c (dr_analyze_innermost): Update comment,
13282 skip evolution analysis if analyzing a basic block.
13283 (dr_analyze_indices): Likewise.
13284 (initialize_data_dependence_relation): Skip the test whether the
13285 object is invariant for basic blocks.
13286 (compute_all_dependences): Skip dependence analysis for data
13287 references in basic blocks.
13288 (find_data_references_in_stmt): Don't fail in case of invariant
13289 access in basic block.
13290 (find_data_references_in_bb): New function.
13291 (find_data_references_in_loop): Move code to
13292 find_data_references_in_bb and add a call to it.
13293 (compute_data_dependences_for_bb): New function.
13294 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
13295 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
13297 (vect_analyze_data_ref_dependence): Check for interleaving in case of
13298 unknown dependence in basic block and fail in case of dependence in
13300 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
13301 dependence instances from either loop or basic block vectorization
13303 (vect_compute_data_ref_alignment): Check if it is loop vectorization
13304 before calling nested_in_vect_loop_p.
13305 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
13306 dependence instances from either loop or basic block vectorization
13308 (vect_verify_datarefs_alignment): Likewise.
13309 (vect_enhance_data_refs_alignment): Adjust function calls.
13310 (vect_analyze_data_refs_alignment): Likewise.
13311 (vect_analyze_group_access): Fix printing. Skip different checks if
13312 DR_STEP is 0. Keep strided stores either in loop or basic block
13313 vectorization data structure. Fix indentation.
13314 (vect_analyze_data_ref_access): Fix comments, allow zero step in
13316 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
13317 dependence instances from either loop or basic block vectorization
13319 (vect_analyze_data_refs): Update comment. Call
13320 compute_data_dependences_for_bb to analyze basic blocks.
13321 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
13322 case of loop vectorization. In case of basic block vectorization use
13323 data-ref itself as a base.
13324 (vect_create_data_ref_ptr): In case of basic block vectorization:
13325 don't advance the pointer, add new statements before the current
13326 statement. Adjust function calls.
13327 (vect_supportable_dr_alignment): Support only aligned accesses in
13328 basic block vectorization.
13329 * common.opt (ftree-slp-vectorize): New flag.
13330 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
13331 (vect_pattern_recog_1): Likewise.
13332 * tree-vect-stmts.c (process_use): Likewise.
13333 (vect_init_vector): Add new statements in the beginning of the basic
13334 block in case of basic block SLP.
13335 (vect_get_vec_def_for_operand): Adjust function calls.
13336 (vect_finish_stmt_generation): Likewise.
13337 (vectorizable_call): Add assert that it is loop vectorization, adjust
13339 (vectorizable_conversion, vectorizable_assignment): Likewise.
13340 (vectorizable_operation): In case of basic block SLP, take
13341 vectorization factor from statement's type and skip the relevance
13342 check. Adjust function calls.
13343 (vectorizable_type_demotion): Add assert that it is loop
13344 vectorization, adjust function calls.
13345 (vectorizable_type_promotion): Likewise.
13346 (vectorizable_store): Check for outer loop only in case of loop
13347 vectorization. Adjust function calls. For basic blocks, skip the
13348 relevance check and don't advance pointers.
13349 (vectorizable_load): Likewise.
13350 (vectorizable_condition): Add assert that it is loop vectorization,
13351 adjust function calls.
13352 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
13353 that it is not reduction, get vector type, call only supported
13354 functions, skip loop specific parts.
13355 (vect_transform_stmt): Check for outer loop only in case of loop
13357 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
13358 (vect_is_simple_use): Fix comment, add new argument, fix conditions
13359 for external definition.
13360 * passes.c (pass_slp_vectorize): New pass.
13361 * tree-vect-slp.c (find_bb_location): New function.
13362 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
13363 check for patterns only in loops.
13364 (vect_build_slp_tree): Add argument, adjust function calls, fail in
13365 case of multiple types in basic block SLP.
13366 (vect_mark_slp_stmts_relevant): New function.
13367 (vect_supported_load_permutation_p): Fix comment.
13368 (vect_analyze_slp_instance): Add argument. In case of basic block
13369 SLP, take vectorization factor from statement's type, check that
13370 unrolling factor is 1. Adjust function call. Save SLP instance in
13371 either loop or basic block vectorization structure. Return FALSE,
13373 (vect_analyze_slp): Add argument. Get strided stores groups from
13374 either loop or basic block vectorization structure. Return FALSE
13375 if basic block SLP failed.
13376 (new_bb_vec_info): New function.
13377 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
13378 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
13379 (vect_schedule_slp): Add argument. Get SLP instances from either
13380 loop or basic block vectorization structure. Set vectorization factor
13381 to be 1 for basic block SLP.
13382 (vect_slp_transform_bb): New function.
13383 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
13385 2009-05-23 Mark Mitchell <mark@codesourcery.com>
13387 * final.c (shorten_branches): Do not align labels for jump tables.
13388 (final_scan_insn): Use JUMP_TABLE_DATA_P.
13390 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
13392 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
13393 Remove outdated reference to flow.c and fix nits.
13394 * doc/gccint.texi: Tweak RTL description.
13395 * doc/rtl.texi: Likewise.
13397 2009-05-23 Denis Chertykov <chertykov@gmail.com>
13399 * config/avr/avr.c: Change my email address.
13400 * config/avr/avr.h: Likewise.
13401 * config/avr/avr.md: Likewise.
13402 * config/avr/avr-protos.h: Likewise.
13403 * config/avr/libgcc.S: Likewise.
13405 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
13407 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
13408 (spu_split_load, spu_split_store): Change return type to int.
13409 (spu_split_convert): Declare.
13410 * config/spu/predicates.md (spu_mem_operand): Remove.
13411 (spu_mov_operand): Update.
13412 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
13413 * config/spu/spu.c (regno_aligned_for_load): Remove.
13414 (reg_aligned_for_addr, spu_expand_load): Define.
13415 (spu_expand_extv): Reimplement and handle MEM.
13416 (spu_expand_insv): Handle MEM.
13417 (spu_sched_reorder): Handle insn's with length 0.
13418 (spu_legitimate_address_p): Reimplement.
13419 (store_with_one_insn_p): Return TRUE for any mode with size
13420 larger than 16 bytes.
13421 (address_needs_split): Define.
13422 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
13424 (spu_convert_move): Define.
13425 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
13426 (spu_split_store): Change all MEM's to TImode.
13427 (spu_init_expanders): Preallocate registers that correspond to
13428 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
13430 (spu_split_convert): Define.
13431 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
13432 (_move<mode>, _movdi, _movti): Update predicate and condition.
13433 (load, store): Change to define_split.
13434 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
13436 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
13437 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
13438 define_insn_and_split of lshr<mode>3.
13439 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
13440 (<v>ashr<mode>3_imm): Define.
13441 (extv, extzv, insv): Allow MEM operands.
13442 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
13443 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
13444 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
13445 (_spu_convert2): Change to define_insn_and_split and remove the
13446 corresponding define_peephole2.
13447 (stack_protect_set, stack_protect_test, stack_protect_test_si):
13448 Change predicates to memory_operand.
13450 2009-05-22 Mark Mitchell <mark@codesourcery.com>
13452 * config/arm/thumb2.md: Add 16-bit multiply instructions.
13454 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
13456 PR tree-optimization/40219
13457 * tree.c (iterative_hash_expr): Make sure the builtin function is
13458 a normal builtin function and not a front end or back end builtin
13459 before indexing into the built_in_decls array.
13461 2009-05-22 Richard Guenther <rguenther@suse.de>
13463 PR middle-end/38964
13464 * alias.c (write_dependence_p): Do not use TBAA for answering
13465 anti-dependence or output-dependence.
13466 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
13467 (emit_pointer_definition): Remove.
13468 (emit_alias_warning): Likewise.
13469 (find_what_var_points_to): Remove TBAA pruning code.
13470 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
13472 (compute_points_to_sets): Remove code computing the set of
13473 dereferenced pointers.
13474 * tree-data-ref.c (dr_may_alias_p): Properly use the split
13475 oracle for querying anti and output dependencies.
13476 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
13477 if TBAA may be applied.
13478 (refs_anti_dependent_p): New function.
13479 (refs_output_dependent_p): Likewise.
13480 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
13481 (refs_output_dependent_p): Likewise.
13482 * doc/tree-ssa.texi (Memory model): New section.
13483 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13484 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13485 * cfgexpand.c (expand_gimple_basic_block): Do not handle
13486 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
13487 * expr.c (expand_expr_real_1): Likewise.
13488 * gimple-low.c (lower_stmt): Likewise.
13489 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
13490 (dump_gimple_cdt): Remove.
13491 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13492 (gimple_size): Likewise.
13493 (walk_gimple_op): Likewise.
13494 (is_gimple_stmt): Likewise.
13495 (walk_stmt_load_store_addr_ops): Likewise.
13496 (gimple_build_cdt): Remove.
13497 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
13498 * gimple.h (gimple_cdt_new_type): Remove.
13499 (gimple_cdt_new_type_ptr): Likewise.
13500 (gimple_cdt_set_new_type): Likewise.
13501 (gimple_cdt_location): Likewise.
13502 (gimple_cdt_location_ptr): Likewise.
13503 (gimple_cdt_set_location): Likewise.
13504 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13505 * tree-cfg.c (remove_useless_stmts_1): Do not handle
13506 GIMPLE_CHANGE_DYNAMIC_TYPE.
13507 (verify_types_in_gimple_stmt): Likewise.
13508 * tree-inline.c (estimate_num_insns): Likewise.
13509 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
13510 (copy_decl_to_var): Likewise.
13511 (copy_result_decl_to_var): Likewise.
13512 * tree-pretty-print.c (dump_generic_node): Do not handle
13513 CHANGE_DYNAMIC_TYPE_EXPR.
13514 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13515 * tree-ssa-operands.c (get_expr_operands): Likewise.
13516 * tree-ssa-structalias.c (struct variable_info): Remove
13517 no_tbaa_pruning member.
13518 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
13519 (unify_nodes): Do not copy it.
13520 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
13521 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
13522 (set_uids_in_ptset): Do not check it.
13523 (find_what_var_points_to): Likewise.
13524 (compute_tbaa_pruning): Remove.
13525 (compute_points_to_sets): Do not call it.
13526 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
13527 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
13528 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
13529 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
13530 (DECL_NO_TBAA_P): Likewise.
13531 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
13532 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
13533 (expand_omp_atomic_pipeline): Do not set it.
13534 * print-tree.c (print_node): Do not dump it.
13535 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13538 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
13541 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
13544 2009-05-22 Mark Mitchell <mark@codesourcery.com>
13546 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
13549 2009-05-22 Ben Elliston <bje@au.ibm.com>
13551 * Makefile.in (bversion.h, s-bversion): New targets.
13552 (TOPLEV_H): Add bversion.h.
13553 * toplev.h: Include "bversion.h".
13554 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
13555 the __format__ attribute only if compiling with the same version
13556 of GCC as the sources (the "build version").
13558 2009-05-22 Ben Elliston <bje@au.ibm.com>
13560 * c-format.c (handle_format_attribute): Fix comment typo.
13562 2009-05-21 Steve Ellcey <sje@cup.hp.com>
13565 * config/ia64/ia64.opt (mfused-madd): New.
13566 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
13567 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
13568 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
13569 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
13570 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
13571 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
13572 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
13573 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
13574 instruction if !TARGET_FUSED_MADD.
13575 (fpma, fpms): Remove colon from name.
13577 2009-05-22 Richard Guenther <rguenther@suse.de>
13579 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
13580 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
13581 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
13583 (create_expression_by_pieces): Only convert if necessary.
13584 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
13585 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
13587 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
13589 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
13590 regular pattern from a template and rename it ...
13591 (*extzv_truncsi_exts): ... to this.
13593 2009-05-21 Richard Guenther <rguenther@suse.de>
13595 * cgraph.h (struct cgraph_node): Remove inline_decl member.
13596 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
13597 (cgraph_default_inline_p): Likewise.
13598 (cgraph_decide_inlining_incrementally): Likewise.
13600 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
13601 Uros Bizjak <ubizjak@gmail.com>
13603 * config/i386/cpuid.h (bit_MOVBE): New.
13605 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
13607 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
13608 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
13609 (ix86_handle_option): Handle OPT_mmovbe.
13610 (ix86_target_string): Add -mmovbe.
13611 (pta_flags): Add PTA_MOVBE.
13612 (processor_alias_table): Add PTA_MOVBE to "atom".
13613 (override_options): Handle PTA_MOVBE.
13615 * config/i386/i386.h (TARGET_MOVBE): New.
13617 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
13618 (*bswapsi_movbe): New.
13619 (*bswapdi_movbe): Likewise.
13620 (bswapdi2): Renamed to ...
13621 (*bswapdi_1): This.
13622 (bswapdi2): New expander.
13624 * config/i386/i386.opt (mmovbe): New.
13626 * doc/invoke.texi: Document -mmovbe.
13628 2009-05-21 Taras Glek <tglek@mozilla.com>
13630 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
13631 * gcc-plugin.h (plugin_init): Updated signature.
13632 * gcc-plugin.h (plugin_name_args): Moved to this header.
13633 * doc/plugins.texi (plugin_init): Updated documention to reflect
13635 * doc/plugins.texi (plugin_name_args): Added to documention.
13637 2009-05-21 Mark Mitchell <mark@codesourcery.com>
13639 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
13640 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
13642 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
13644 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
13645 JUMP_TABLE_DATA_P predicates where applicable.
13646 * config/i386/predicates.md: Ditto.
13647 * config/i386/sse.md: Ditto.
13649 2009-05-21 Jakub Jelinek <jakub@redhat.com>
13651 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
13652 operand2 -128 override length_immediate attribute to 1.
13653 * config/i386/predicates.md (constm128_operand): New predicate.
13655 * config/i386/i386.c (memory_address_length): Handle %r12
13656 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
13658 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
13659 mode look through optional ZERO_EXTEND and SUBREG.
13660 * config/i386/i386.md (R12_REG): New define_constant.
13661 (prefix_data16): For sse unit set also for MODE_TI insns.
13662 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
13663 insns set if operand 1 is ext_QIreg_operand.
13664 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
13665 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
13667 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
13668 mode from MODE_DI to MODE_SI.
13669 (movdi_1_rex64): Override modrm and length_immediate attributes
13670 only for movabs (TYPE_IMOV, alternative 2).
13671 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
13672 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
13673 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
13674 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
13675 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
13676 prefix_rex attribute if DImode.
13677 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
13678 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
13679 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
13680 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
13681 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
13682 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
13683 Likewise. For TYPE_IMOV clear length_immediate attribute.
13684 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
13685 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
13686 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
13687 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
13688 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
13689 or one operand TYPE_ISHIFT.
13690 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
13691 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
13692 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
13693 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
13694 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
13695 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
13696 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
13697 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
13698 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
13699 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
13700 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
13701 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
13702 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
13703 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
13704 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
13705 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
13706 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
13707 set mode attribute, don't override length attribute.
13708 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
13710 (return_internal_long): Set length attribute to 2 instead of 1.
13711 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
13712 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
13713 prefix_rex attribute.
13714 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
13716 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
13718 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13720 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
13722 2009-05-20 Ian Lance Taylor <iant@google.com>
13724 * tree.c (build_tree_list_vec_stat): New function.
13725 (ctor_to_vec): New function.
13726 (build_nt_call_vec): New function.
13727 (build_call_array): Change args to be a const pointer.
13728 (build_call_vec): New function.
13729 * tree.h (build_nt_call_vec): Declare.
13730 (build_tree_list_vec_stat): Declare.
13731 (build_tree_list_vec): Define.
13732 (build_call_array): Update declaration.
13733 (build_call_vec): Declare.
13734 (ctor_to_vec): Declare.
13735 * c-common.c (tree_vector_cache): New static variable.
13736 (make_tree_vector): New function.
13737 (release_tree_vector): New function.
13738 (make_tree_vector_single): New function.
13739 (make_tree_vector_copy): New function.
13740 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
13741 (make_tree_vector_single, make_tree_vector_copy): Declare.
13742 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
13743 (c_parser_expr_list): Don't manage cache here, instead call
13745 (c_parser_release_expr_list): Remove static function.
13746 (c_parser_vec_to_tree_list): Remove static function.
13747 (c_parser_attributes): Call build_tree_list_vec instead of
13748 c_parser_vec_to_tree_list. Call release_tree_vector instead of
13749 c_parser_release_expr_list.
13750 (c_parser_postfix_expression_after_primary): Likewise.
13751 (c_parser_objc_keywordexpr): Likewise.
13753 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
13755 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
13756 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
13757 TARGET_CONVERT_TO_TYPE.
13758 * hooks.c (hook_tree_const_tree_null): Define.
13759 * hooks.h (hook_tree_const_tree_null): Declare.
13760 * target.h (struct gcc_target): Add invalid_parameter_type,
13761 invalid_return_type, promoted_type, and convert_to_type fields.
13762 * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
13763 (TARGET_INVALID_RETURN_TYPE): Define.
13764 (TARGET_PROMOTED_TYPE): Define.
13765 (TARGET_CONVERT_TO_TYPE): Define.
13766 (TARGET_INITIALIZER): Update for new fields.
13767 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
13768 (grokparms): Check targetm.invalid_parameter_type.
13769 * c-typeck.c (default_conversion): Check targetm.promoted_type.
13770 * c-convert.c (convert): Check targetm.convert_to_type.
13772 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
13774 * config/mips/mips.md (*extenddi_truncate<mode>,
13775 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
13777 (*extendhi_truncateqi): New define_insn_and_sptit.
13779 2009-05-20 Jakub Jelinek <jakub@redhat.com>
13781 PR middle-end/40204
13782 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
13783 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
13785 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
13787 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
13788 the operand of VIEW_CONVERT_EXPR.
13790 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
13792 * config/i386/driver-i386.c (host_detect_local_cpu): Check
13793 extended family and model for Intel processors. Support Intel Atom.
13795 2009-05-20 Olivier Hainque <hainque@adacore.com>
13797 * gstab.h (stab_code_type): Define, to be used instead of the
13798 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
13800 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
13801 occurrences by stab_code_type.
13802 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
13804 2009-05-20 Martin Jambor <mjambor@suse.cz>
13806 * tree-flow.h (insert_edge_copies_seq): Undeclare.
13807 (sra_insert_before): Likewise.
13808 (sra_insert_after): Likewise.
13809 (sra_init_cache): Likewise.
13810 (sra_type_can_be_decomposed_p): Likewise.
13811 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
13812 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
13813 (sra_insert_before): Likewise.
13814 (sra_insert_after): Likewise.
13815 (sra_init_cache): Likewise.
13816 (insert_edge_copies_seq): Made static and moved upwards.
13818 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
13821 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
13823 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
13824 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
13827 2009-05-20 Richard Guenther <rguenther@suse.de>
13829 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
13830 with mismatched comparison modes.
13832 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13834 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
13835 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
13836 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
13837 with shifts for Thumb2.
13838 (orsi_notsi): New for orn.
13839 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
13840 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
13841 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
13842 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
13843 Don't invert remainder for IOR.
13845 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
13847 PR tree-optimization/40087
13848 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
13849 number_of_iterations_ne): Rename never_infinite argument.
13850 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
13851 number_of_iterations_le): Handle pointer-type ivs when
13852 exit_must_be_taken is false.
13853 (number_of_iterations_cond): Do not always assume that
13854 exit_must_be_taken if the control variable is a pointer.
13856 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
13858 * c-typeck.c (build_binary_op): Allow % on integal vectors.
13859 * doc/extend.texi (Vector Extension): Document that % is allowed too.
13861 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
13863 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
13864 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
13866 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
13869 * c.opt (Wlogical-op): Disabled by default.
13870 * c-opt (c_common_post_options): Do not enable Wlogical-op with
13872 * doc/invoke.texi (Wlogical-op): Likewise.
13874 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
13876 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
13878 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
13879 Propagate the type of the first operand.
13880 <ASSERT_EXPR>: Simplify.
13881 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
13882 Rewrite using the RHS code as discriminant.
13883 <NOP_EXPR>: Turn into CASE_CONVERT.
13884 <PLUS_EXPR>: Propagate the type of the first operand.
13886 2009-05-19 Steve Ellcey <sje@cup.hp.com>
13888 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
13889 (ia64_dconst_0_375): New.
13890 * config/ia64/ia64.c (ia64_override_options): Remove
13891 -minline-sqrt-min-latency warning.
13892 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
13893 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
13894 * config/ia64/ia64.md (*sqrt_approx): Remove.
13895 (sqrtsf2): Remove #if 0.
13896 (sqrtsf2_internal_thr): Rewrite and move to div.md.
13897 (sqrtdf): Remove assert.
13898 (sqrtdf2_internal_thr): Rewrite and move to div.md.
13899 (sqrtxf2): Remove #if 0.
13900 (sqrtxf2_internal_thr): Rewrite and move to div.md.
13901 * div.md (sqrt_approx_rf): New.
13902 (sqrtsf2_internal_thr): New implementation.
13903 (sqrtsf2_internal_lat): New.
13904 (sqrtdf2_internal_thr: New implementation.
13905 (sqrtxf2_internal): New implementation.
13907 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
13908 Hans-Peter Nilsson <hp@axis.com>
13910 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
13911 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
13912 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
13913 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
13914 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
13915 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
13916 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
13917 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
13918 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
13919 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
13920 * c-common.c: ...from here.
13922 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
13924 * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
13926 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13928 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
13930 2009-05-19 Ben Elliston <bje@au.ibm.com>
13932 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
13933 assignments with memcpy calls.
13934 (add_fdes): Likewise.
13935 (binary_search_unencoded_fdes): Likewise.
13936 (linear_search_fdes): Eliminate type puns.
13938 2009-05-19 Richard Guenther <rguenther@suse.de>
13940 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
13941 not falsely claim to have propagated into all uses.
13943 2009-05-19 Ben Elliston <bje@au.ibm.com>
13945 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
13948 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
13950 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
13951 * config/sh/sh.c (sh_legitimate_address_p): Make static.
13952 (TARGET_LEGITIMATE_ADDRESS_P): New.
13953 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
13954 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
13956 2009-05-18 Dodji Seketeli <dodji@redhat.com>
13959 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
13960 child of the containing namespace's DIE.
13962 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
13964 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
13965 *zero_extendhi_truncqi): Move after the zero_extend patterns.
13966 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
13969 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
13972 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
13973 gen_align with gen_pad.
13974 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
13975 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
13977 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
13978 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
13980 * config/i386/i386.md (align): Renamed to ...
13981 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
13982 ASM_OUTPUT_MAX_SKIP_PAD.
13984 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
13986 * config.gcc: Fix variable syntax.
13989 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
13990 before calling exact_log2.
13991 (output_iorsi3): Likewise.
13992 (output_xorsi3): Likewise.
13994 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
13996 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
13997 for the none zero constant operand except for EQ and NE
13998 comprisons even when the first operand is R0.
14000 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
14002 * config/s390/2064.md: Remove trailing whitespaces.
14003 * config/s390/2084.md: Likewise.
14004 * config/s390/constraints.md: Likewise.
14005 * config/s390/fixdfdi.h: Likewise.
14006 * config/s390/libgcc-glibc.ver: Likewise.
14007 * config/s390/s390-modes.def: Likewise.
14008 * config/s390/s390-protos.h: Likewise.
14009 * config/s390/s390.c: Likewise.
14010 * config/s390/s390.h: Likewise.
14011 * config/s390/s390.md: Likewise.
14012 * config/s390/tpf-unwind.h: Likewise.
14014 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
14016 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
14018 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
14021 * configure.ac (m68k-*-*): Check if binutils support TLS.
14022 * configure: Regenerate.
14023 * config/m68k/predicates.md (symbolic_operand): Extend comment.
14024 * config/m68k/constraints.md (Cu): New constraint.
14025 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
14026 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
14027 (movsi): Handle TLS symbols.
14028 (addsi3_5200): Handle XTLS symbols, indent.
14029 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
14030 (m68k_tls_reference_p): Declare.
14031 (m68k_legitimize_address): Declare.
14032 (m68k_unwrap_symbol): Declare.
14033 * config/m68k/m68k.opt (mxtls): New option.
14034 * config/m68k/m68k.c (ggc.h): Include.
14035 (m68k_output_dwarf_dtprel): Implement hook.
14036 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
14037 (m68k_expand_prologue): Load GOT pointer when function needs it.
14038 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
14039 (m68k_legitimate_constant_address_p): Same.
14040 (m68k_decompose_address): Handle TLS references.
14041 (m68k_get_gp): New static function.
14042 (enum m68k_reloc): New contants.
14043 (TLS_RELOC_P): New macro.
14044 (m68k_wrap_symbol): New static function.
14045 (m68k_unwrap_symbol): New function.
14046 (m68k_final_prescan_insn_1): New static function.
14047 (m68k_final_prescan_insn): New function.
14048 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
14050 (legitimize_pic_address): Handle TLS references..
14051 (m68k_tls_get_addr, m68k_get_tls_get_addr)
14052 (m68k_libcall_value_in_a0_p)
14053 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
14054 (m68k_call_m68k_read_tp): Helper variables and functions for ...
14055 (m68k_legitimize_tls_address): Handle TLS references.
14056 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
14058 (m68k_legitimize_address): Handle TLS symbols.
14059 (m68k_get_reloc_decoration): New static function.
14060 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
14062 (m68k_output_dwarf_dtprel): Implement hook.
14063 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
14064 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
14065 m68k_call_* routines.
14066 (sched_attr_op_type): Handle TLS symbols.
14067 (gt-m68k.h): Include.
14068 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14069 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
14071 2009-05-18 Martin Jambor <mjambor@suse.cz>
14073 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
14074 (visit_store_addr_for_mod_analysis): New function.
14075 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
14076 (determine_cst_member_ptr): Use gimple_assign_single_p.
14077 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
14078 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
14079 operands. Don't check number of operands of a NOP_EXPR.
14081 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
14083 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
14085 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
14088 * c-common.c (warn_logical_operator): Don't warn if one of
14089 expression isn't always true or false.
14091 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
14093 * config/i386/biarch32.h: New file.
14094 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
14096 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
14098 * config/mips/mips.md (*zero_extend<mode>_trunchi,
14099 *zero_extend<mode>_truncqi): Merge these into ...
14100 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
14101 Name the pattern following this as *zero_extendhi_truncqi.
14103 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
14105 PR middle-end/39301
14106 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
14107 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
14108 (output_info): Make field HOST_WIDEST_INT.
14109 (print_statistics): Use HOST_WIDEST_INT_PRINT.
14110 (dump_bitmat_statistics): Same.
14112 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
14114 * config.gcc (use_gcc_stdint): Set to wrap.
14115 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
14116 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
14117 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14118 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14119 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
14120 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
14121 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
14122 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
14124 2009-05-16 Joseph Myers <joseph@codesourcery.com>
14126 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
14128 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
14129 Move definitions earlier.
14130 (OPT_ARCH64, OPT_ARCH32): Define.
14131 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
14134 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
14137 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
14140 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
14142 * arm.md (movdi2): Copy non-reg values to DImode registers.
14144 2009-05-16 Jakub Jelinek <jakub@redhat.com>
14147 * final.c (label_to_max_skip): New function.
14148 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
14149 CODE_LABEL_NUMBER <= max_labelno.
14150 * output.h (label_to_max_skip): New prototype.
14151 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
14152 (ix86_avoid_jump_mispredicts): ... this. Don't define if
14153 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
14154 Handle CODE_LABELs with >= 16 byte alignment or with
14155 max_skip == (1 << align) - 1.
14156 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
14157 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
14160 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
14161 .p2align 3 if MAX_SKIP is smaller than 7.
14162 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
14164 2009-05-15 Ian Lance Taylor <iant@google.com>
14166 * alias.c (struct alias_set_entry_d): Rename from struct
14167 alias_set_entry. Change all uses.
14168 * except.c (struct call_site_record_d): Rename from struct
14169 call_site_record. Change all uses.
14170 * except.h (struct eh_region_d): Rename from struct eh_region.
14172 * gcse.c (struct hash_table_d): Rename from struct hash_table.
14174 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
14175 ivtype_map_elt. Change all uses.
14176 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
14178 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
14179 * graphite.h (struct name_tree_d): Rename from struct name_tree.
14181 (struct sese_d): Rename from struct sese. Change all uses.
14182 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
14183 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
14184 * optabs.h (struct optab_d): Rename from struct optab. Change all
14186 (struct convert_optab_d): Rename from struct convert_optab.
14188 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
14189 ipa_opt_pass. Change all uses.
14190 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
14193 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
14194 defined as a typedef.
14195 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
14198 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
14201 * fold-const.c (make_range,build_range_check,merge_ranges): Move
14203 (merge_ranges): Returns bool.
14204 * tree.h (make_range): .. to here.
14205 (build_range_check): Likewise.
14206 (merge_ranges): Likewise. Renamed from merge_ranges.
14207 * c-typeck.c (parser_build_binary_op): Update calls to
14208 warn_logical_operator.
14209 * c-common.c (warn_logical_operator): Add new warning.
14210 * c-common.h (warn_logical_operator): Update declaration.
14212 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
14214 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
14216 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14218 * doc/install.texi: Document MPC requirements, flags etc.
14220 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
14221 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
14222 Evaluate constant arguments.
14223 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
14224 (fold_builtin_1): Likewise, also evaluate constant arguments.
14225 Remove superfluous break.
14226 (do_mpc_ckconv): New.
14227 * real.h: Include mpc.h.
14228 * toplev.c (print_version): Output MPC version info if available.
14230 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
14232 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
14234 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
14236 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
14239 2009-05-15 Jan Hubicka <jh@suse.cz>
14241 * doc/invoke.texi (max-early-inliner-iterations): New flag.
14242 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
14243 (try_inline): Fix return value.
14244 (cgraph_decide_inlining_incrementally): Honor new value.
14245 (cgraph_early_inlining): Handle indirect inlining.
14246 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
14248 2009-05-15 Jan Hubicka <jh@suse.cz>
14250 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
14251 * cgraphunit.c (cgraph_finalize_function): Set it.
14252 (cgraph_expand_function): Use it.
14254 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
14256 * real.c (encode_ieee_half): Define.
14257 (decode_ieee_half): Define.
14258 (ieee_half_format): Define.
14259 (arm_half_format): Define.
14260 * real.h (ieee_half_format): Declare.
14261 (arm_half_format): Declare.
14263 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
14265 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
14266 swapped, and reversed optabs exist before trying to use them.
14268 2009-05-15 Paul Brook <paul@codesourcery.com>
14269 Sandra Loosemore <sandra@codesourcery.com>
14271 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
14272 loads. Allow PRE_DEC.
14273 (output_move_neon): Handle PRE_DEC.
14274 (arm_print_operand): Add 'A' for neon structure loads.
14275 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
14276 * config/arm/neon.md (neon_mov): Update comment.
14277 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
14279 (Um): New constraint.
14281 2009-05-15 Jan Hubicka <jh@suse.cz>
14283 Revert the following patch until testsuite fallout is fixed:
14284 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14285 * cgraph.h (struct inline_summary): New filed self_wize,
14286 size_inlining_benefit, self_time and time_inlining_benefit.
14287 (struct cgraph_global_info): Replace insns by time ans size fields.
14288 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14289 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14290 (ipcp_update_callgraph): Do not touch function bodies.
14291 * ipa-inline.c: Include except.h
14292 (MAX_TIME): New constant.
14293 (overall_insns): Remove
14294 (overall_size, max_benefit): New static variables.
14295 (cgraph_estimate_time_after_inlining): New function.
14296 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14297 (cgraph_clone_inlined_nodes): Update size.
14298 (cgraph_mark_inline_edge): Update size.
14299 (cgraph_estimate_growth): Use size info.
14300 (cgraph_check_inline_limits): Check size.
14301 (cgraph_default_inline_p): Likewise.
14302 (cgraph_edge_badness): Compute badness based on benefit and size cost.
14303 (cgraph_decide_recursive_inlining): Check size.
14304 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14306 (cgraph_decide_inlining): Likewise.
14307 (cgraph_decide_inlining_incrementally): Likewise; honor
14308 PARAM_EARLY_INLINING_INSNS.
14309 (likely_eliminated_by_inlining_p): New predicate.
14310 (estimate_function_body_sizes): New function.
14311 (compute_inline_parameters): Use it.
14312 * except.c (must_not_throw_labels): New function.
14313 * except.h (must_not_throw_labels): Declare.
14314 * tree-inline.c (init_inline_once): Kill inlining_weigths
14315 * tree-ssa-structalias.c: Avoid uninitialized warning.
14316 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14317 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14318 (PARAM_INLINE_CALL_COST): Remove.
14319 (PARAM_EARLY_INLINING_INSNS): New.
14321 2009-05-15 Richard Guenther <rguenther@suse.de>
14323 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
14324 not TODO_update_ssa.
14326 2009-05-15 Richard Guenther <rguenther@suse.de>
14328 PR tree-optimization/39999
14329 * gimple.h (gimple_expr_type): Use the expression type looking
14330 through useless conversions.
14331 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
14332 (vn_nary_op_insert_stmt): Likewise.
14333 (simplify_binary_expression): Likewise.
14335 2009-05-15 Richard Guenther <rguenther@suse.de>
14337 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14338 New options, enabled by default.
14339 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
14341 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
14342 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
14343 * tree-ssa-structalias.c (gate_tree_pta): New function.
14344 (pass_build_alias): Use it.
14346 2009-05-15 Joseph Myers <joseph@codesourcery.com>
14348 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
14349 recurse on an invariant address if a conversion from a pointer
14350 type to a wider integer type is involved.
14352 2009-05-15 Jan Hubicka <jh@suse.cz>
14354 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
14355 * cgraph.h (struct inline_summary): New filed self_wize,
14356 size_inlining_benefit, self_time and time_inlining_benefit.
14357 (struct cgraph_global_info): Replace insns by time ans size fields.
14358 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
14359 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
14360 (ipcp_update_callgraph): Do not touch function bodies.
14361 * ipa-inline.c: Include except.h
14362 (MAX_TIME): New constant.
14363 (overall_insns): Remove
14364 (overall_size, max_benefit): New static variables.
14365 (cgraph_estimate_time_after_inlining): New function.
14366 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
14367 (cgraph_clone_inlined_nodes): Update size.
14368 (cgraph_mark_inline_edge): Update size.
14369 (cgraph_estimate_growth): Use size info.
14370 (cgraph_check_inline_limits): Check size.
14371 (cgraph_default_inline_p): Likewise.
14372 (cgraph_edge_badness): Compute badness based on benefit and size cost.
14373 (cgraph_decide_recursive_inlining): Check size.
14374 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
14376 (cgraph_decide_inlining): Likewise.
14377 (cgraph_decide_inlining_incrementally): Likewise; honor
14378 PARAM_EARLY_INLINING_INSNS.
14379 (likely_eliminated_by_inlining_p): New predicate.
14380 (estimate_function_body_sizes): New function.
14381 (compute_inline_parameters): Use it.
14382 * except.c (must_not_throw_labels): New function.
14383 * except.h (must_not_throw_labels): Declare.
14384 * tree-inline.c (init_inline_once): Kill inlining_weigths
14385 * tree-ssa-structalias.c: Avoid uninitialized warning.
14386 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
14387 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
14388 (PARAM_INLINE_CALL_COST): Remove.
14389 (PARAM_EARLY_INLINING_INSNS): New.
14390 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
14391 (inline-call-cost): Remove.
14392 (early-inlining-insns): New.
14394 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
14396 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
14398 (print_int_cst_bounds_in_octal_p): Likewise.
14399 (dbxout_type): Adjust calls to above functions. Be prepared to deal
14401 * dwarf2out.c (base_type_die): Likewise.
14402 (is_subrange_type): Delete.
14403 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
14404 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
14405 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
14406 if the destination type is boolean.
14407 (build_range_check): Do not special-case subtypes.
14408 (fold_sign_changed_comparison): Likewise.
14409 (fold_unary): Likewise.
14410 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
14411 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
14412 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
14413 * tree.c (subrange_type_for_debug_p): New predicate based on the
14414 former is_subrange_type.
14415 * tree.h (subrange_type_for_debug_p): Declare.
14416 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
14417 (convert_affine_scev): Remove call to above function.
14418 (chrec_convert_aggressive): Likewise.
14419 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
14420 false for conversions involving subtypes.
14421 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
14422 (vrp_val_min): Likewise.
14423 (needs_overflow_infinity): Likewise.
14424 (extract_range_from_unary_expr): Likewise.
14426 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
14428 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
14429 * config/frv/frv.c: Likewise.
14430 * config/s390/s390.c: Likewise.
14431 * config/sparc/sparc.h: Likewise.
14432 * config/i386/i386.h: Likewise.
14433 * config/i386/i386.c: Likewise.
14434 * config/crx/crx.c: Likewise.
14435 * config/m68hc11/m68hc11.h: Likewise.
14436 * config/iq2000/iq2000.c: Likewise.
14437 * config/mn10300/mn10300.h: Likewise.
14438 * config/mn10300/mn10300.c: Likewise.
14439 * config/m68k/m68k.c: Likewise.
14440 * config/rs6000/rs6000.c: Likewise.
14441 * config/rs6000/xcoff.h: Likewise.
14442 * config/rs6000/linux64.h: Likewise.
14443 * config/rs6000/sysv4.h: Likewise.
14444 * config/score/score3.c: Likewise.
14445 * config/score/score7.c: Likewise.
14446 * config/score/score.c: Likewise.
14447 * config/arm/arm.md: Likewise.
14448 * config/mips/mips.c: Likewise.
14449 * config/mips/mips.md: Likewise.
14450 * config/bfin/bfin.h: Likewise.
14451 * config/pa/pa.c: Likewise.
14452 * config/pa/constraints.md: Likewise.
14454 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
14455 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
14456 * config/pdp11/pdp11.h: Use memory_address_p instead.
14458 2009-05-14 Ian Lance Taylor <iant@google.com>
14460 * passes.c (finish_optimization_passes): Change i to int.
14461 * plugin.c (plugins_active_p): Change event to int.
14462 (dump_active_plugins): Likewise.
14463 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
14465 * tree.c (tree_range_check_failed): Change c to unsigned int.
14466 (omp_clause_range_check_failed): Likewise.
14467 (build_common_builtin_nodes): Change mode to int. Add cast.
14468 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
14469 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
14471 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
14472 ++ or -- with a variable of enum type.
14474 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
14477 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
14479 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
14481 * store-motion.c: Do not include params.h
14482 * Makefile.in: Fix dependencies for various files.
14484 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
14486 * auto-inc-dec.c: Fix pass description, remove apparent
14487 accidental duplication.
14489 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
14491 PR middle-end/40147
14492 * ipa-utils.h (memory_identifier_string): Moved to ...
14493 * tree.h (memory_identifier_string): Here. Add GTY(()).
14495 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
14497 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
14498 in the former documentation of...
14499 (GO_IF_LEGITIMATE_ADDRESS): ... this.
14500 * ira-conflicts.c (get_dup_num): Use address_operand.
14501 * targhooks.c (default_legitimate_address_p): New.
14502 * targhooks.h (default_legitimate_address_p): New.
14503 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
14505 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
14506 * target.h (struct target): Add legitimate_address_p.
14507 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
14508 (TARGET_INITIALIZER): Include it.
14510 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14511 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
14512 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
14513 (TARGET_LEGITIMATE_ADDRESS_P): New.
14515 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14516 (REG_OK_STRICT_P): Delete.
14517 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
14518 (frv_legitimate_address_p_1): ... this.
14519 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
14520 (frv_legitimate_address_p_1): ... the renamed old
14521 frv_legitimate_address_p.
14522 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
14523 (TARGET_LEGITIMATE_ADDRESS_P): New.
14525 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14526 * config/s390/s390-protos.h (legitimate_address_p): Remove.
14527 * config/s390/s390.c (legitimate_address_p): Rename to...
14528 (s390_legitimate_address_p): ... this, make static.
14529 (legitimize_address): Adjust call.
14530 (TARGET_LEGITIMATE_ADDRESS_P): New.
14531 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
14533 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14534 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
14535 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
14536 (TARGET_LEGITIMATE_ADDRESS_P): New.
14538 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14539 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
14540 * config/spu/spu.c (spu_legitimate_address): Rename to...
14541 (spu_legitimate_address_p): ... this, make static.
14542 (TARGET_LEGITIMATE_ADDRESS_P): New.
14544 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14545 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
14546 * config/sparc/sparc.c (legitimate_address_p): Rename to...
14547 (sparc_legitimate_address_p): ... this, make static and return bool.
14548 (legitimize_address): Adjust call.
14549 (TARGET_LEGITIMATE_ADDRESS_P): New.
14551 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14552 * config/i386/i386-protos.h (legitimate_address_p): Remove.
14553 * config/i386/i386.c (legitimate_address_p): Rename to...
14554 (ix86_legitimate_address_p): ... this, make static.
14555 (constant_address_p): Move after it, adjust call.
14556 (TARGET_LEGITIMATE_ADDRESS_P): New.
14558 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14559 * config/avr/avr-protos.h (legitimate_address_p): Remove.
14560 * config/avr/avr.c (legitimate_address_p): Rename to...
14561 (avr_legitimate_address_p): ... this, make static.
14562 (legitimize_address): Adjust call.
14563 (TARGET_LEGITIMATE_ADDRESS_P): New.
14565 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14566 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
14567 * config/crx/crx.c (crx_legitimate_address_p): Make static.
14568 (TARGET_LEGITIMATE_ADDRESS_P): New.
14570 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14571 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
14572 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
14573 (TARGET_LEGITIMATE_ADDRESS_P): New.
14575 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14576 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
14578 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
14580 (TARGET_LEGITIMATE_ADDRESS_P): New.
14582 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14583 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
14585 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
14587 (m68hc11_legitimate_address_p): ... this, make static.
14588 (go_if_legitimate_address_internal): Rename to...
14589 (m68hc11_legitimate_address_p_1): ... this.
14590 (legitimize_address): Adjust call.
14591 (TARGET_LEGITIMATE_ADDRESS_P): New.
14593 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14594 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
14595 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
14596 (TARGET_LEGITIMATE_ADDRESS_P): New.
14598 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14599 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
14600 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
14601 (mn10300_legitimate_address_p): ... this, make static.
14602 (TARGET_LEGITIMATE_ADDRESS_P): New.
14604 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14605 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
14606 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
14607 (TARGET_LEGITIMATE_ADDRESS_P): New.
14609 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14610 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
14611 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
14612 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14613 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
14614 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
14615 (rs6000_legitimate_address_p): ... this, make static.
14616 (TARGET_LEGITIMATE_ADDRESS_P): New.
14617 (REG_MODE_OK_FOR_BASE_P): Delete.
14618 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
14620 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14621 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
14623 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
14624 static, adjust types.
14625 (TARGET_LEGITIMATE_ADDRESS_P): New.
14627 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14628 * config/score/score.c (score_address_p): Rename to...
14629 (score_legitimate_address_p): ... this.
14630 (TARGET_LEGITIMATE_ADDRESS_P): New.
14631 * config/score/score3.c (score3_address_p): Rename to...
14632 (score3_legitimate_address_p): ... this.
14633 * config/score/score7.c (score7_address_p): Rename to...
14634 (score7_legitimate_address_p): ... this.
14636 * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
14637 THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
14638 GO_IF_LEGITIMATE_ADDRESS): Delete.
14639 * config/arm/arm-protos.h (thumb1_legitimate_address_p,
14640 thumb2_legitimate_address_p): Delete.
14641 (arm_legitimate_address_p): Rename to...
14642 (arm_legitimate_address_outer_p): ... this.
14643 * config/arm/constraints.md ("Uq"): Adjust call.
14644 * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
14645 * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
14647 (arm_legitimate_address_outer_p): ... this.
14648 (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
14650 (TARGET_LEGITIMATE_ADDRESS_P): New.
14652 * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14653 * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
14654 * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
14655 (TARGET_LEGITIMATE_ADDRESS_P): New.
14657 * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14658 * config/vax/vax-protos.h (legitimate_address_p): Remove.
14659 * config/vax/vax.c (legitimate_address_p): Rename to...
14660 (vax_legitimate_address_p): ... this, make static.
14661 (TARGET_LEGITIMATE_ADDRESS_P): New.
14663 * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14664 * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
14665 * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
14666 (TARGET_LEGITIMATE_ADDRESS_P): New.
14668 * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14669 * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
14670 * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
14671 (mmix_legitimate_address_p): ... this, make static.
14672 (TARGET_LEGITIMATE_ADDRESS_P): New.
14674 * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
14675 * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
14676 * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
14677 (TARGET_LEGITIMATE_ADDRESS_P): New.
14679 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
14681 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
14682 of MODE_COMPLEX_INT.
14684 2009-05-14 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
14686 * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
14687 LCT_NORMAL in function call.
14688 * mips-tdump.c (print_file_desc): Add cast to enum type.
14689 * mips-tfile.c (add_ext_symbol): Add casts to enum types.
14690 (mark_stabs): Add casts to enum types.
14691 (parse_stabs_common): Add casts to enum types.
14693 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
14695 * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
14696 Check for invalid values of LETTER.
14698 2009-05-13 Taras Glek <tglek@mozilla.com>
14700 * attribs.c (register_attribute): moved out attribute registration
14701 into register_attribute.
14702 * doc/plugins.texi: Documented register_attribute and
14704 * gcc-plugin.h: Added forward decl for register_attribute.
14705 * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
14706 * plugin.c (register_callback, invoke_plugin_callbacks): Added
14707 PLUGIN_ATTRIBUTES boilerplate.
14709 2009-05-14 Dave Korn <dave.korn.cygwin@gmail.com>
14711 * config/i386/msformat-c.c (ms_printf_length_specs): Use enumeration
14712 values even in sentinel and empty entries.
14713 (ms_printf_flag_specs): Likewise.
14714 (ms_scanf_flag_specs): Likewise.
14715 (ms_strftime_flag_specs): Likewise.
14716 (ms_print_char_table): Likewise.
14717 (ms_scan_char_table): Likewise.
14718 (ms_time_char_table): Likewise.
14720 2009-05-13 Doug Kwan <dougkwan@google.com>
14722 * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
14724 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
14726 * config/mips/mips.md (store): Add attributes for QI and HI.
14728 (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
14729 (truncdi<mode>2): ... this new pattern.
14731 2009-05-13 Brad Hards <bradh@kde.org>
14733 * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
14735 2009-05-14 Jakub Jelinek <jakub@redhat.com>
14736 Ben Elliston <bje@au.ibm.com>
14738 PR middle-end/40035
14739 * dse.c (check_mem_read_rtx): Guard against width == -1.
14741 2009-05-13 Michael Matz <matz@suse.de>
14743 PR middle-end/39976
14744 * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
14745 (trivially_conflicts_p): New function.
14746 (insert_backedge_copies): Use it.
14748 2009-05-13 Janis Johnson <janis187@us.ibm.com>
14750 * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
14751 (handle_stdc_pragma): Use new enum constant names.
14752 (handle_pragma_float_const_decimal64): Ditto.
14754 2009-05-13 Ian Lance Taylor <iant@google.com>
14756 * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
14759 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
14761 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
14762 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
14764 * config/m68k/m68k.h (FL_UCLINUX): Define.
14766 2009-05-13 Jan Hubicka <jh@suse.cz>
14768 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
14770 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
14772 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
14773 unless -fschedule-insns is specified.
14775 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
14778 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
14779 TARGET_EXPAND_CBRANCHDI4.
14780 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
14781 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
14782 (cmpeqdi): Fix comment.
14784 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
14786 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
14787 (sh_legitimate_address_p): Likewise.
14788 * config/sh/sh.c (sh_legitimate_index_p): New.
14789 (sh_legitimate_address_p): Likewise.
14790 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
14791 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
14792 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
14793 (MAYBE_BASE_REGISTER_RTX_P): New macro.
14794 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14795 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
14796 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
14797 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
14798 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
14800 2009-05-12 Jan Hubicka <jh@suse.cz>
14802 * tree-inline.c (estimate_operator_cost): Add operands;
14803 when division happens by constant, it is cheap.
14804 (estimate_num_insns): Loads and stores are not having cost of 0;
14805 EH magic stuff is cheap; when computing runtime cost of switch,
14806 use log2 base of amount of its cases; builtin_expect has cost of 0;
14807 compute cost for moving return value of call.
14808 (init_inline_once): Initialize time_based flags.
14809 * tree-inline.h (eni_weights_d): Add time_based flag.
14811 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
14813 * df-core.c: Update head documentation.
14815 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
14818 * rs6000.c (rs6000_generate_compare): Use op1b instead of
14819 shadowing exisiting variable op1.
14821 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
14824 * config/i386/driver-i386.c (processor_signatures): New enum.
14825 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
14826 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
14827 processor signature to detect geode processor.
14829 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
14833 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
14835 * optabs.c (prepare_cmp_insn): Temporarily disable test that
14836 causes spurious differences between trunk and cond-optab branch.
14838 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
14840 * dojump.c (compare_from_rtx): Delete.
14841 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
14842 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
14843 if the comparison does not satisfy the predicate; test predicates for
14844 operands 2 and 3 of a cstore pattern. Don't try cstore optab
14845 further if one existing pattern fails.
14846 * expr.h (compare_from_rtx): Delete.
14847 (prepare_operand): Declare it.
14848 * optabs.c: Change "lib call" to "libcall" throughout.
14849 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
14850 HAVE_conditional_trap, emit_cmp_insn): Delete.
14851 (can_compare_p): Delete cmp_optab case.
14852 (prepare_float_lib_cmp): Return an rtx and a machine mode.
14853 Accept other parameters by value.
14854 (prepare_operand): Make non-static.
14855 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
14856 other parameters by value. Try to widen operands here based on
14857 an optab_methods argument and looking at cbranch_optab.
14858 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
14859 loop. Use cbranch_optab directly.
14860 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
14861 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
14863 (emit_conditional_move, emit_conditional_add): Inline what's needed
14864 of compare_from_rtx, using new prepare_cmp_insn for the rest.
14865 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
14866 with COMPARE. Move cmov_optab and cstore_optab above
14867 with cbranch_optab, move cmp_optab down with ucmp_optab,
14868 remove tst_otpab. Do not initialize trap_rtx.
14869 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
14870 for trap code. Do not check HAVE_conditional_trap. Use
14871 prepare_cmp_insn. Accept no predicate for operand 3.
14872 * optabs.h (OTI_cmp): Mark as used only for libcalls.
14873 (OTI_ctrap, ctrap_optab): New.
14874 (tst_optab): Delete.
14875 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
14876 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
14877 with lookup of ctrap_optab.
14878 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
14880 (ctrap_optab): New.
14882 * combine.c (combine_simplify_rtx, simplify_set): Do not
14883 special case comparing against zero for cc0 machines.
14884 * simplify-rtx.c (simplify_binary_operation_1): Never remove
14885 COMPARE on cc0 machines.
14886 (simplify_relational_operation): Return a new expression when
14887 a COMPARE could be removed.
14888 * final.c (final_scan_insn): Compare cc_status values
14889 against LHS of a (compare FOO (const_int 0)) cc0 source.
14890 Also check if cc_status.value is the full compare.
14892 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
14893 (cstoreMM4): Document.
14894 (conditional_trap): Document ctrapMM4 instead.
14895 (sync_compare_and_swapMM): Refer to cbranchcc4.
14896 (Dependent Patterns): Eliminate obsolete information referring to
14897 the old jump optimization phase.
14898 (Canonicalization): Include cbranchcc4 case, omit canonicalization
14899 of compares with 0 on cc0 machines.
14900 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
14901 avoiding references to cc0. Remove text about storing operands
14903 * doc/tm.texi (Condition Codes): Include blurb on different
14904 condition code representations, separate into subsections for
14905 CC0, MODE_CC and conditional execution.
14907 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
14908 alpha_emit_setcc): Accept operands and a machine mode.
14909 * config/alpha/alpha.c (alpha_emit_conditional_branch):
14910 Get code/op0/op1 from operands, use machine mode argument
14911 instead of alpha_compare.fp_p. Emit the branch here.
14912 (alpha_emit_setcc): Likewise, and return boolean.
14913 (alpha_emit_conditional_move): Likewise. Assert that
14914 cmp_op_mode == cmp_mode, and simplify accordingly.
14915 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
14916 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
14917 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
14919 (stack probe test): Use cbranchdi4.
14920 * config/alpha/predicates.md (alpha_cbranch_operator): New.
14922 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
14923 * config/arc/arc.h (movsicc, movsfcc): Use it.
14924 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
14925 (cbranchsi4, cstoresi4): New.
14926 (cmpsi, bCC and sCC expanders): Remove.
14928 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
14929 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
14930 * config/arm/predicates.md (arm_comparison_operator): Only include
14931 floating-point operators if there is a hardware floating-point unit.
14932 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
14933 deferring to cbranch_cc and cstore_cc respectively.
14934 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
14935 cbranch_cc, cstore_cc): New.
14936 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
14938 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
14940 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
14941 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
14943 (adjust_insn_length): Adjust calls.
14944 (avr_reorg): Handle (compare (foo) (const_int 0)).
14945 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
14946 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
14947 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
14948 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
14950 (cbranchqi4, cbranchhi4, cbranchsi4): New.
14951 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
14953 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
14954 (cbranchsi4, cstorebi4, cstoresi4): New.
14955 (movbisi): This insn is duplicate, split it to zero_extend.
14956 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
14957 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
14958 (bfin_optimize_loop): Use cbranch expander.
14959 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
14960 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
14961 (bfin_bimode_comparison_operator): ... this.
14962 (bfin_direct_comparison_operator): New.
14964 * config/cris/cris.c (cris_normal_notice_update_cc): Look
14965 inside (compare FOO (const_int 0)).
14966 (cris_rtx_costs): Handle ZERO_EXTRACT.
14967 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
14968 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
14969 (*tstdi_v32): Delete.
14970 (*cmpdi_non_v32): Add M alternative for operand 1.
14971 (cmpsi, cmp<mode>): Make private.
14972 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
14974 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
14976 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
14977 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
14978 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
14979 (cc_reg_operand): New.
14980 (any_cond): Delete.
14981 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
14982 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
14983 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
14984 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
14985 crx_expand_scond): Delete.
14987 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
14989 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
14990 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
14992 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
14993 cstoresi4, cstoresf4, cstoredf4): New.
14994 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
14995 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
14996 Receive the entire operands array.
14997 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
14998 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
14999 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
15000 Get test/op0/op1 from the operands array.
15001 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
15003 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
15004 (h8300_expand_store): New.
15005 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
15007 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
15008 (h8300_expand_store): New.
15009 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
15010 or do not try to produce (set (cc0) REG).
15011 (peepholes): Wrap arguments with COMPARE. Add a peephole to
15012 change a compare into a move to a scratch register. Disable some
15013 peepholes when comparing with zero.
15014 (tstsi, tsthi, tstsi, cmpqi): Make private.
15016 (bCC, sCC): Delete.
15017 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
15020 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
15021 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
15022 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
15023 (ix86_emit_i387_log1p): Use cbranchxf2.
15024 (ix86_expand_setcc): Return void.
15025 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
15026 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
15027 cmp<MODEF>, cmpcc): Remove.
15028 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
15029 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
15030 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
15031 (sCC and bCC expanders): Remove.
15032 (stack_protect_test): Use cbranchcc4.
15034 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
15036 (ia64_expand_compare): Accept three rtx by reference and return void.
15037 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
15038 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
15039 from *expr. Update *expr with the BImode comparison to do.
15040 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
15041 cmptf, bCC, sCC, conditional_trap): Delete.
15042 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
15043 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
15044 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
15045 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
15046 * config/ia64/predicates.md (ia64_cbranch_operator): New.
15048 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
15049 type of last argument.
15050 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
15051 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
15052 use machine mode argument instead of branch_type. Remove dead
15053 code for floating-point comparisons.
15054 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
15055 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
15057 (cbranchsi4, cstoresi4): New.
15058 * config/iq2000/predicates.md (reg_or_const_operand): New.
15060 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
15061 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
15062 (b<code>_op): Rewrite to...
15063 (bcc_op): ... this, using match_operator.
15064 (s<code>_op): Rewrite to...
15065 (scc_op): ... this, using match_operator.
15066 (s<code>_24_op): Rewrite to...
15067 (scc_op_24): ... this, using match_operator.
15068 (s<code>_<mode>): Rewrite to...
15069 (cstore<mode>4): ... this, using match_operator.
15070 (s<code>_<mode>_24): Rewrite to...
15071 (cstore<mode>4_24): ... this, using match_operator.
15072 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
15073 m32c_unpend_compare, m32c_expand_scc): Delete.
15074 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
15075 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
15076 (m32c_expand_movcc): Change NE to EQ if necessary.
15077 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
15079 * config/m32r/m32r-protos.h (gen_cond_store): New.
15080 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
15081 (gen_cond_store): New, from sCC patterns.
15082 (m32r_expand_block_move): Use cbranchsi4.
15083 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
15084 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
15085 (cbranchsi4, cstoresi4): New.
15087 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
15089 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
15090 (m68hc11_notice_update_cc): Look into a compare with 0.
15091 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
15093 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
15094 cmphi, cmpqi, bCC): Delete.
15095 (cbranchsi4, cbranchhi4, cbranchqi4): New.
15096 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
15097 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
15100 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
15101 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
15102 * config/m68k/constraints.md (H): New.
15103 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
15104 the define_insn below.
15105 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
15106 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
15107 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
15108 patterns): Wrap RHS with COMPARE.
15109 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
15110 (*cmpdi_internal): Name this pattern.
15111 (cmpdi): Change to define_insn.
15112 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
15113 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
15114 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
15116 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
15117 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
15118 (conditional_trap): Change to...
15119 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
15120 (*conditional_trap): Use the ordered_comparison_operator and
15121 const1_operand predicates.
15122 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
15123 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
15124 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
15125 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
15127 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
15128 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
15129 (mcore_gen_compare): New.
15130 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
15131 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
15132 (mcore_gen_compare): ... this.
15133 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
15134 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
15135 (stack probe pattern): Use cbranchsi4.
15137 * config/mips/predicates.md (mips_cstore_operator): New.
15138 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
15139 * config/mips/mips.md (any_cond): Delete.
15140 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
15142 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
15143 fixuns_truncsfdi2): Use cbranch patterns.
15144 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
15145 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
15146 Adjust call to mips_expand_conditional_branch.
15147 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
15149 * config/mips/mips-protos.h (mips_expand_conditional_branch,
15150 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
15151 * config/mips/mips.c (cmp_operands): Delete.
15152 (mips_emit_compare): Get comparison operands from *op0/*op1.
15153 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
15154 that it succeeds. Use op0/op1 instead of cmp_operands.
15155 (mips_expand_conditional_branch, mips_expand_conditional_move,
15156 mips_expand_conditional_trap): Likewise.
15157 (mips_block_move_loop): Use cbranch patterns.
15158 * config/mips/mips.h (cmp_operands): Delete.
15160 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
15161 (mmix_gen_compare_reg): Just return a register in the right CC mode.
15162 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
15163 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
15164 (*cmpcc_folded): Rename to...
15165 (*cmpdi_folded): this.
15166 (*cmpcc): Rename to...
15168 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
15171 (cbranchdf4): New. Handle invalid comparisons here.
15172 * config/mmix/predicates.md (float_comparison_operator): New.
15174 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
15175 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
15176 * config/mn10300/mn10300.md (tst): Delete.
15177 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
15178 Name these patterns and wrap RHS in a compare.
15179 (*cmpsi): Make this pattern private. Include tst.
15180 (*cmpsf): Make this pattern private.
15181 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
15182 (compare with zero peepholes): Likewise.
15184 (cbranchsi4, cbranchsf4): New.
15185 (casesi): Use cbranchsi4.
15187 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
15188 hppa_branch_type): Delete.
15189 (return_addr_rtx): Use cbranchsi4.
15190 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
15191 Emit CCFPmode comparison here.
15192 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
15193 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
15194 hppa_branch_type): Delete.
15195 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
15196 (movsicc, movdicc): Remove references to hppa_compare_op0,
15197 hppa_compare_op1 and compare_from_rtx.
15198 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
15199 (casesi): Use cbranchsi4.
15201 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
15202 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
15203 * config/pdp11/pdp11.md (register_or_const0_operand): New.
15204 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
15205 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
15207 (cbranchdf4, cbranchhi4, cbranchqi4): New.
15208 (*branch, *branch_inverted): New.
15210 * config/picochip/picochip.md (cbranchhi4): Use
15211 ordered_comparison_operator.
15212 (cmphi, bCC): Remove.
15214 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
15215 (trap_comparison_operator): Delete.
15216 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
15217 rs6000_emit_cbranch): Accept mode and operands.
15218 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
15219 rs6000_compare_fp_p): Delete.
15220 (rs6000_generate_compare): Accept mode and comparison. Extract code
15221 and op0/op1 from there. Replace references to rs6000_compare_op0
15222 and rs6000_compare_op1.
15223 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
15224 extract result from passed operands.
15225 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
15226 extract loc from passed operands.
15227 (rs6000_emit_cmove): Likewise.
15228 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
15229 rs6000_compare_fp_p): Delete.
15230 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
15231 (cbranch<GPR>4, cbranch<FP>4): New.
15232 (cstore<mode>4): New. Consolidate here all choices about when to use
15233 portable or specialized sCC sequences.
15234 (stack_protect_test): Use cbranchsi4.
15235 (conditional_trap): Replace with ctrap<GPR>4.
15236 (conditional trap insn): Replace trap_comparison_operator with
15237 ordered_comparison_operator.
15239 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
15240 (s390_emit_prologue): Use ctrap.
15241 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
15242 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
15243 New predicates replacing...
15244 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
15245 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
15246 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
15247 (add<mode>cc): Do not use s390_compare_op0/op1.
15248 (s<code>): Change to...
15249 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
15250 (seq): Change to...
15251 (cstorecc4): ... this. Handle EQ or NE equally.
15252 (*sne): Un-privatize for use in cstorecc4.
15253 (b<code>): Change to...
15254 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
15255 (conditional_trap): Replace with...
15256 (ctrap<GPR>4, ctrap<FP>4): ... these.
15257 (stack_protect): Use cbranchcc4.
15259 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
15260 * config/score/score-protos.h (score_gen_cmp): Delete.
15261 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
15262 (score_block_move-loop): Use cbranchsi4.
15263 * config/score/score.md (cbranchsi4): New.
15264 (cmpsi, bCC): Delete.
15265 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
15266 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15267 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
15268 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
15269 * config/score/score3.h (score3_gen_cmp): Delete.
15270 * config/score/score7.h (score7_gen_cmp): Delete.
15272 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
15273 (sh_emit_scc_to_t): ... this. Return void.
15274 (from_compare): Rename to...
15275 (sh_emit_compare_and_branch): ... this.
15276 (sh_emit_compare_and_set): New.
15277 (sh_expand_t_scc): Accept operands.
15278 * config/sh/predicates.md (sh_float_comparison_operator): New.
15279 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
15280 (prepare_scc_operands): Rename to...
15281 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
15283 (sh_emit_cheap_store_flag): New.
15284 (sh_emit_set_t_insn): New.
15285 (from_compare): Rename to...
15286 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
15287 handling of TARGET_SH2E floating point to avoid recursive call.
15288 Generate branch here.
15289 (sh_emit_compare_and_set): New.
15290 (sh_expand_t_scc): Get op0/op1 from arguments.
15291 (sh_emit_cheap_store_flag): New.
15292 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
15294 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
15295 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
15296 (movsicc, movdicc): Do nothing when it recreated operands from
15297 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
15298 prepare_scc_operands (now sh_emit_scc_to_t).
15299 (udivdi3): Use cstoresi4.
15300 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
15301 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
15302 (cbranchint4_media, cbranchfp4_media): New.
15303 (casesi): Use cbranchdi4.
15304 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
15306 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
15307 (movnegt): Remove second operand.
15308 (cbranchsf4, cbranchdf4): New.
15309 (stack_protect): Use cbranchdi4/cbranchsi4.
15311 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
15312 (gen_compare_reg): Accept comparison, extract part of it to...
15313 (gen_compare_reg_1): ... this.
15314 (gen_compare_operator): Delete.
15315 (gen_v9_scc): Accept separate destination, comparison code and arms.
15316 Do not use sparc_compare_op0/sparc_compare_op1.
15317 (emit_scc_insn, emit_conditional_branch_insn): New.
15318 (emit_v9_brxx): Make static. Remove useless assertion.
15319 (sparc_emit_float_lib_cmp): Return RTL instead of calling
15321 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
15322 * config/sparc/sparc-protos.h (gen_compare_reg,
15323 sparc_emit_float_lib_cmp): Adjust prototype.
15324 (emit_scc_insn, emit_conditional_branch_insn): New.
15325 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
15326 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
15327 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
15328 iterators to the top.
15329 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
15330 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
15331 snedi_special_trunc): Delete.
15332 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
15333 and snedi_special_trunc.
15334 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
15335 cbranchdi4, cbranch<F:mode>4): New.
15336 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
15337 here. Use gen_compare_reg instead of gen_compare_operator.
15338 (conditional_trap): Replace with...
15339 (ctrapsi4, ctrapdi4): ... this.
15340 (stack_protect_test): Use cbranchcc4.
15342 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
15344 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
15345 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
15346 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
15347 from operands[0] or operands[3] depending on is_set.
15348 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
15349 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
15350 cmpdf, bCC), sCC: Remove.
15351 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
15352 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
15354 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
15355 spu_emit_branch_or_set.
15357 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
15359 * config/stormy16/stormy16.h (xstormy16_compare_op0,
15360 xstormy16_compare_op1): Delete.
15361 * config/stormy16/stormy16.c (xstormy16_compare_op0,
15362 xstormy16_compare_op1): Delete.
15363 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
15365 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
15366 (cmphi, cmpsi, bCC): Remove.
15368 * config/v850/v850.md (tstsi, cmpsi): Fold into...
15369 (*cmpsi): ... this one.
15370 (cbranchsi4, cstoresi4): New.
15371 (bCC expanders): Delete.
15372 (sCC insns): Fold into...
15373 (*setcc): ... this one.
15374 (casesi): Do not use gen_cmpsi and gen_bgtu.
15375 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
15376 (movsicc): Simplify.
15377 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
15379 * config/vax/vax-protos.h (cond_name): New.
15380 (vax_output_conditional_branch): Remove.
15381 * config/vax/vax.c (cond_name): New.
15382 (vax_output_conditional_branch): Remove.
15383 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
15384 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
15385 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
15386 (bit<VAXint>): Wrap source with (compare).
15387 (b<code> and following unnamed pattern): Rename to *branch and
15388 *branch_reversed. Change macroization to match_operator.
15389 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
15391 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
15392 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
15393 Change last argument to machine_mode.
15394 (xtensa_expand_scc): Add machine_mode argument.
15395 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
15396 (gen_conditional_move, xtensa_expand_conditional_branch,
15397 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
15398 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
15399 Adjust operand numbers.
15400 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
15402 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
15403 (cmpsi, cmpsf, b<code>, s<code>): Delete.
15404 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
15406 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
15408 * optabs.c (prepare_cmp_insn): Temporarily disable test that
15409 causes spurious differences between trunk and cond-optab branch.
15411 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
15414 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
15416 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
15418 * tree.c (iterative_hash_pointer): Delete.
15419 (iterative_hash_expr): Short-circuit handling of NULL pointer.
15420 Hash UIDs and versions of SSA names. Don't special-case built-in
15421 function declarations.
15423 2009-05-11 Ian Lance Taylor <iant@google.com>
15426 * graphite.c: Force -Wc++-compat to only be a warning before
15427 #including "cloog/cloog.h".
15429 2009-05-11 Martin Jambor <mjambor@suse.cz>
15431 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
15433 2009-05-11 Jan Hubicka <jh@suse.cz>
15435 * tree-ssa-loop-ivcanon.c: Include target.h
15436 (struct loop_size): new structure.
15437 (constant_after_peeling): New predicate.
15438 (tree_estimate_loop_size): New function.
15439 (estimated_unrolled_size): Rewrite for new estimates.
15440 (try_unroll_loop_completely): Use new estimates.
15441 * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
15443 2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
15445 * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
15446 libcpp interface change.
15447 (spu_macro_to_expand): Likewise.
15449 2009-05-11 Paolo Bonzini <bonzini@gnu.org>
15451 PR tree-optimization/40026
15452 * gimplify.c (gimplify_init_constructor): Change initial conditional
15453 to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
15454 optimize_compound_literals_in_ctor.
15456 2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
15458 * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
15460 * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
15462 2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
15464 * tree-vect-data-refs.c (vect_analyze_group_access): Use
15465 HOST_WIDE_INT for gap.
15467 2009-05-11 Ira Rosen <irar@il.ibm.com>
15469 PR tree-optimization/40074
15470 * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
15471 account in group size and step comparison.
15473 2009-05-11 Richard Guenther <rguenther@suse.de>
15475 * passes.c (init_optimization_passes): Strip now incorrect comment.
15476 (execute_function_todo): Do not set PROP_alias.
15477 * tree-pass.h (PROP_alias): Remove.
15478 * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
15479 * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
15480 * tree-nrv.c (pass_return_slot): Likewise.
15481 * tree-object-size.c (pass_object_sizes): Likewise.
15482 * tree-ssa-dom.c (pass_dominator): Likewise.
15483 (pass_phi_only_cprop): Likewise.
15484 * tree-ssa-dse.c (pass_dse): Likewise.
15485 * tree-ssa-phiopt.c (pass_phiopt): Likewise.
15486 (pass_cselim): Likewise.
15487 * tree-ssa-pre.c (pass_pre): Likewise.
15488 (pass_fre): Likewise.
15489 * tree-ssa-reassoc.c (pass_reassoc): Likewise.
15490 * tree-ssa-sink.c (pass_sink_code): Likewise.
15491 * tree-stdarg.c (pass_stdarg): Likewise.
15492 * tree-tailcall.c (pass_tail_calls): Likewise.
15493 * tree-vrp.c (pass_vrp): Likewise.
15495 2009-05-10 Ian Lance Taylor <iant@google.com>
15497 * basic-block.h (enum profile_status): Break out of struct
15498 control_flow_graph.
15499 * cgraph.h (struct inline_summary): Break out of struct
15501 * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
15502 of struct cgraph_order_sort.
15503 * combine.c (enum undo_kind): New enum, broken out of struct undo.
15504 * cse.c (struct branch_path): Break out of struct
15505 cse_basic_block_data.
15506 * except.h (enum eh_region_type): Break out of struct eh_region.
15507 * gcc.c (enum add_del): Break out of struct modify_target.
15508 * genrecog.c (enum decision_type): Break out of struct decision_test.
15509 * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
15511 * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
15512 * regmove.c (enum match_use): New enum, broken out of struct match.
15513 * sched-int.h (enum post_call_group): New enum, broken out of
15515 (struct deps_reg): Break out of struct deps.
15516 * target.h (struct asm_int_op): Break out of struct gcc_target.
15517 * tree-eh.c (struct goto_queue_node): Break out of struct
15519 * tree-inline.h (enum copy_body_cge_which): Break out of
15521 * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
15523 * c-decl.c (in_struct, struct_types): New static variables.
15524 (pushtag): Add loc parameter. Change all callers.
15525 (lookup_tag): Add ploc parameter. Change all callers.
15526 (check_compound_literal_type): New function.
15527 (parser_xref_tag): Add loc parameter. Change all callers. If
15528 -Wc++-compat, warn about struct/union/enum types defined within a
15530 (start_struct): Add enclosing_in_struct, enclosing_struct_types,
15531 and loc parameters. Change all callers. Change error calls to
15532 error_at, using loc. For a redefinition, if the location of the
15533 original definition is known, report it. Set in_struct and
15534 struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
15535 (finish_struct): Add new parameters enclosing_in_struct and
15536 enclosing_struct_types. Change all callers. Set
15537 C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
15538 in the struct. If in a struct, add this struct to struct_types.
15539 (start_enum): Add loc parameter. Change all callers. Use
15540 error_at for errors, using loc. For a redefinition, if the
15541 location of the original definition is known, report it. If in a
15542 struct, add this enum type to struct_types. If -Wc++-compat warn
15543 if in sizeof, typeof, or alignof.
15544 * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
15545 (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
15546 (c_parser_enum_specifier): Get enum location for start_enum.
15547 (c_parser_struct_or_union_specifier): Get struct location for
15548 start_struct. Save in_struct and struct_types status between
15549 start_struct and finish_struct.
15550 (c_parser_cast_expression): Get location of cast.
15551 (c_parser_alignof_expression): Get location of type.
15552 (c_parser_postfix_expression): Likewise.
15553 (c_parser_postfix_expression_after_paren_type): Add type_loc
15554 parameter. Change all callers. Call check_compound_literal_type.
15555 Use type_loc for error about variable size type.
15556 * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
15557 of an enum constant from an enum type defined in a struct or union.
15558 (c_cast_expr): Add loc parameter. Change all callers. If
15559 -Wc++-compat, warn about defining a type in a cast.
15560 * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
15561 (start_enum, start_struct, finish_struct): Update declarations.
15562 (parser_xref_tag, c_cast_expr): Update declarations.
15563 (check_compound_literal_type): Declare.
15565 2009-05-11 Ben Elliston <bje@au.ibm.com>
15567 * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
15568 for recent libcpp interface change.
15569 (rs6000_macro_to_expand): Likewise.
15571 2009-05-10 Michael Matz <matz@suse.de>
15574 * config/arm/arm.c (require_pic_register): Emit on entry edge,
15575 not at entry of function.
15577 2009-05-10 Richard Guenther <rguenther@suse.de>
15579 PR tree-optimization/40081
15581 * tree-sra.c (instantiate_element): Instantiate scalar replacements
15582 using the main variant of the element type. Do not fiddle with
15583 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15585 * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
15586 structs with volatile fields.
15588 2009-05-10 Jan Hubicka <jh@suse.cz>
15590 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
15591 (estimate_move_cost): Assert that it does not get called for
15593 (estimate_num_insns): Skip VOID types in argument handling.
15594 (optimize_inline_calls): Delete unreachable blocks and verify that
15595 callgraph is valid.
15597 2009-05-10 Jan Hubicka <jh@suse.cz>
15599 * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
15600 * cgraph.c (cgraph_mark_address_taken_node): New function.
15601 (dump_cgraph_node): Dump new flag.
15602 * cgraph.h (struct cgraph_node): Add address_taken.
15603 (cgraph_mark_address_taken_node): New function.
15604 * ipa.c (cgraph_postorder): Prioritize functions with address taken
15605 since new direct calls can be born.
15607 2009-05-10 Joseph Myers <joseph@codesourcery.com>
15609 * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
15610 tok->val.node.node.
15612 2009-05-10 Jan Hubicka <jh@suse.cz>
15614 PR middle-end/40084
15615 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
15617 (cgraph_update_edges_for_call_stmt): Take old_decl argument.
15618 * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
15619 * tree-inline.c (copy_bb): Set frequency correctly.
15620 (fold_marked_statements): Update call to
15621 cgraph_update_edges_for_call_stmt.
15623 2009-05-10 Joseph Myers <joseph@codesourcery.com>
15625 * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
15626 identifiers in diagnostics.
15627 * config/arm/arm.c (arm_handle_fndecl_attribute,
15628 arm_handle_isr_attribute): Likewise.
15629 * config/avr/avr.c (avr_handle_progmem_attribute,
15630 avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
15631 * config/bfin/bfin.c (handle_int_attribute,
15632 bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
15633 bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
15634 bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
15636 * config/darwin.c (darwin_handle_kext_attribute,
15637 darwin_handle_weak_import_attribute): Likewise.
15638 * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
15639 h8300_handle_eightbit_data_attribute,
15640 h8300_handle_tiny_data_attribute): Likewise.
15641 * config/i386/i386.c (ix86_handle_cconv_attribute,
15642 ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
15643 * config/i386/winnt.c (ix86_handle_shared_attribute,
15644 ix86_handle_selectany_attribute): Likewise.
15645 * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
15646 * config/m32c/m32c.c (function_vector_handler): Likewise.
15647 * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
15648 m68hc11_handle_fntype_attribute): Likewise.
15649 * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
15650 * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
15651 * config/mips/mips.c (mips_insert_attributes,
15652 mips_merge_decl_attributes, mips_expand_builtin): Likewise.
15653 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
15654 rs6000_handle_struct_attribute): Likewise.
15655 * config/sh/sh.c (sh_insert_attributes,
15656 sh_handle_resbank_handler_attribute,
15657 sh_handle_interrupt_handler_attribute,
15658 sh2a_handle_function_vector_handler_attribute,
15659 sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
15661 * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
15662 * config/spu/spu.c (spu_handle_fndecl_attribute,
15663 spu_handle_vector_attribute): Likewise.
15664 * config/stormy16/stormy16.c
15665 (xstormy16_handle_interrupt_attribute): Likewise.
15666 * config/v850/v850-c.c (ghs_pragma_section): Likewise.
15667 * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
15669 2009-05-10 Joseph Myers <joseph@codesourcery.com>
15671 * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
15672 (pp_translate_identifiers): New.
15673 (pp_identifier): Only conditionally translate identifier to locale
15675 * pretty-print.c (pp_construct): Set pp_translate_identifiers.
15676 (pp_base_tree_identifier): Only conditionally translate identifier
15677 to locale character set.
15678 * c-pretty-print.c (M_): Define.
15679 (pp_c_type_specifier, pp_c_primary_expression): Mark English
15680 fragments for conditional translation with M_.
15681 * tree-pretty-print.c (maybe_init_pretty_print): Disable
15682 identifier translation.
15684 2009-05-10 Richard Guenther <rguenther@suse.de>
15686 PR tree-optimization/40081
15687 * tree-sra.c (instantiate_element): Instantiate scalar replacements
15688 using the main variant of the element type. Do not fiddle with
15689 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
15691 2009-05-09 Jan Hubicka <jh@suse.cz>
15693 PR middle-end/40080
15694 * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
15695 indirect calls; verify cgraph afterwards.
15697 2009-05-09 Jan Hubicka <jh@suse.cz>
15700 * ipa.c (update_inlined_to_pointer): New function.
15701 (cgraph_remove_unreachable_nodes): Use it.
15703 2009-05-09 Jan Hubicka <jh@suse.cz>
15705 * tree-eh.c (struct leh_state): Remove prev_try.
15706 (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
15707 not track prev_try.
15708 * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
15709 copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
15710 remove_eh_handler_and_replace, foreach_reachable_handler,
15711 verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
15712 * except.h (struct eh_region): Remove eh_region_u_cleanup.
15713 (gen_eh_region_cleanup): Update prototype.
15715 2009-05-09 Jan Hubicka <jh@suse.cz>
15717 PR middle-end/40043
15718 * except.c (copy_eh_region): Always set prev_try.
15719 (redirect_eh_edge_to_label): Find outer try.
15720 (foreach_reachable_handler): When looking for prev try
15721 handle case where previous try is not going to be taken.
15723 2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
15725 PR tree-optimization/40049
15726 * tree-vect-stmts.c (vectorizable_operation): If the machine has
15727 only vector/vector shifts, convert the type of the constant to the
15728 appropriate type to avoid building incorrect trees, which
15729 eventually have problems with garbage collection.
15731 2009-05-08 Joseph Myers <joseph@codesourcery.com>
15733 * fold-const.c (fold_binary): Do not fold multiplication by 1 or
15734 -1 for complex floating-point types if honoring signed zeros.
15736 2009-05-08 Jan Hubicka <jh@suse.cz>
15738 * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
15739 argument; handle correctly when profile is absent.
15740 (build_cgraph_edges): Update.
15741 (rebuild_cgraph_edges): Update.
15742 * cgraph.c: Do not include varray.h.
15743 (cgraph_set_call_stmt_including_clones): New function.
15744 (cgraph_create_edge_including_clones): Likewise
15745 (cgraph_update_edges_for_call_stmt_node): New static cfunction.
15746 (cgraph_update_edges_for_call_stmt): Handle clones.
15747 (cgraph_remove_node): Handle clone tree.
15748 (cgraph_remove_node_and_inline_clones): New function.
15749 (dump_cgraph_node): Dump clone tree.
15750 (cgraph_clone_node): Handle clone tree.
15751 (clone_function_name): Bring here from tree-inline.c.
15752 (cgraph_create_virtual_clone): New function.
15753 * cgraph.h (ipa_replace_map): Move here from ipa.h.
15754 (cgraph_clone_info): New function.
15755 (strut cgraph_node): Add clone_info and new clone tree pointers.
15756 (cgraph_remove_node_and_inline_clones,
15757 cgraph_set_call_stmt_including_clones,
15758 cgraph_create_edge_including_clones,
15759 cgraph_create_virtual_clone): Declare.
15760 (cgraph_function_versioning): Use VEC argument.
15761 (compute_call_stmt_bb_frequency): Update prototype.
15762 (cgraph_materialize_all_clones): New function.
15763 * ipa-cp.c (ipcp_update_cloned_node): Remove.
15764 (ipcp_create_replace_map): Update to VECtors.
15765 (ipcp_update_callgraph): Use virtual clones.
15766 (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
15767 (ipcp_update_profiling): Do not update local profiling.
15768 (ipcp_insert_stage): Use VECtors and virtual clones.
15769 * cgraphunit.c (verify_cgraph_node): Verify clone tree.
15770 (clone_of_p): New function.
15771 (cgraph_preserve_function_body_p): Use clone tree.
15772 (cgraph_optimize): Materialize clones.
15773 (cgraph_function_versioning): Update for VECtors.
15774 (save_inline_function_body): Use clone tree.
15775 (cgraph_materialize_clone): New function.
15776 (cgraph_materialize_all_clones): Likewise.
15777 * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
15778 * ipa.c: Include gimple.h.
15779 (cgraph_remove_unreachable_nodes): Use clone tree.
15780 * ipa-prop.c (ipa_note_param_call): Update call to
15781 compute_call_stmt_bb_frequencycall.
15782 * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
15783 * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
15784 (copy_bb): Handle updating of clone tree; add new edge when new call
15786 (expand_call_inline): Be strict about every call having edge.
15787 (clone_fn_id_num, clone_function_name): Move to cgraph.c.
15788 (delete_unreachable_blocks_update_callgraph): New function.
15789 (tree_function_versioning): Use VECtors; always remove unreachable
15790 blocks and fold conditionals.
15791 * tree-inline.h: Do not include varray.h.
15792 (tree_function_versioning): Remove.
15793 * Makefile.in (GTFILES): Remove tree-inline.c
15794 * passes.c (do_per_function): Do only functions having body.
15795 * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
15798 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
15799 Andrew Morrow <acm@google.com>
15802 * c-common.c (c_common_attribute_table): Permit deprecated
15803 attribute to take an optional argument.
15804 (handle_deprecated_attribute): If the optional argument to
15805 __attribute__((deprecated)) is not a string ignore the attribute
15806 and emit a warning.
15808 * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
15809 * c-typeck.c (build_component_ref): Likewise.
15810 (build_external_ref): Likewise.
15812 * toplev.c (warn_deprecated_use): Add an attribute argument.
15813 Emit the message associated with __attribute__((deprecated)).
15815 * toplev.h (warn_deprecated_use): Updated.
15817 * doc/extend.texi: Document new optional parameter to
15818 __attribute__((deprecated))
15820 2009-05-08 Michael Eager <eager@eagercon.com>
15822 * config/rs6000/rs6000.md (*movdf_softfloat32): replace
15823 !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
15825 2009-05-08 Richard Guenther <rguenther@suse.de>
15827 PR tree-optimization/40062
15828 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
15829 Avoid exponential behavior.
15831 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
15833 PR rtl-optimization/33928
15835 * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
15836 process_uses, build_single_def_use_links): New.
15837 (update_df): Update use_def_ref.
15838 (forward_propagate_into): Use get_def_for_use instead of use-def
15840 (fwprop_init): Call build_single_def_use_links and let it initialize
15842 (fwprop_done): Free use_def_ref.
15843 (fwprop_addr): Eliminate duplicate call to df_set_flags.
15844 * df-problems.c (df_rd_simulate_artificial_defs_at_top,
15845 df_rd_simulate_one_insn): New.
15846 (df_rd_bb_local_compute_process_def): Update head comment.
15847 (df_chain_create_bb): Use the new RD simulation functions.
15848 * df.h (df_rd_simulate_artificial_defs_at_top,
15849 df_rd_simulate_one_insn): New.
15850 * opts.c (decode_options): Enable fwprop at -O1.
15851 * doc/invoke.texi (-fforward-propagate): Document this.
15853 2009-05-08 Joseph Myers <joseph@codesourcery.com>
15856 * c-typeck.c (build_binary_op): Handle arithmetic between one real
15857 and one complex operand specially.
15858 * tree-complex.c (some_nonzerop): Do not identify a real value as
15859 zero if flag_signed_zeros.
15861 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
15863 PR rtl-optimization/33928
15864 * loop-invariant.c (record_use): Fix && vs. || mishap.
15866 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
15868 PR rtl-optimization/33928
15869 * loop-invariant.c (struct use): Add addr_use_p.
15870 (struct def): Add n_addr_uses.
15871 (struct invariant): Add cheap_address.
15872 (create_new_invariant): Set cheap_address.
15873 (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
15874 (record_uses): Pass df_ref to record_use.
15875 (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
15878 2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
15880 * config/sh/sh.c: Do not include c-pragma.h.
15882 2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
15884 * config/spu/spu.c: Remove include of c-common.h.
15886 2009-05-07 Janis Johnson <janis187@us.ibm.com>
15889 * c-common.h (mark_valid_location_for_stdc_pragma,
15890 valid_location_for_stdc_pragma_p, set_float_const_decimal64,
15891 clear_float_const_decimal64, float_const_decimal64_p): New.
15892 * c.opt (Wunsuffixed-float-constants): New.
15893 * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
15894 unsuffixed float constant, handle new warning.
15895 * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
15896 * c-decl.c (c_scope): New flag float_const_decimal64.
15897 (set_float_const_decimal64, clear_float_const_decimal64,
15898 float_const_decimal64_p): New.
15899 (push_scope): Set new flag.
15900 * c-parser.c (c_parser_translation_unit): Mark when it's valid
15901 to use STDC pragmas.
15902 (c_parser_external_declaration): Ditto.
15903 (c_parser_compound_statement_nostart): Ditto.
15904 * c-pragma.c (valid_location_for_stdc_pragma,
15905 mark_valid_location_for_stdc_pragma,
15906 valid_location_for_stdc_pragma_p, handle_stdc_pragma,
15907 handle_pragma_float_const_decimal64): New.
15908 (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
15909 * cp/semantics.c (valid_location_for_stdc_pragma_p,
15910 set_float_const_decimal64, clear_float_const_decimal64,
15911 float_const_decimal64_p): New dummy functions.
15912 * doc/extend.texi (Decimal Float): Remove statement that the
15913 pragma, and suffix for double constants, are not supported.
15914 * doc/invoke.texi (Warning Options): List new option.
15915 (-Wunsuffixed-float-constants): New.
15917 2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
15919 * config/i386/i386.c: Do not include c-common.h.
15921 2009-05-07 Mark Heffernan <meheff@google.com>
15923 * doc/invoke.texi (Debugging Options): Document change of debugging
15925 * opts.c (decode_options): Make dump_base_name relative to
15926 aux_base_name directory.
15928 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
15930 * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
15931 * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
15933 2009-05-07 Rafael Avila de Espindola <espindola@google.com>
15935 * Makefile.in (install-plugin): Simplify a bit.
15937 2009-05-07 Paolo Bonzini <bonzini@gnu.org>
15939 * Makefile.in (OBJS-common): Add regcprop.o.
15941 * timevar.def (TV_CPROP_REGISTERS): New.
15942 * regrename.c (regrename_optimize): Return 0.
15943 (rest_of_handle_regrename): Delete.
15944 (pass_rename_registers): Point to regrename_optimize.
15945 (struct value_data_entry, struct value_data,
15946 kill_value_one_regno, kill_value_regno, kill_value,
15947 set_value_regno, init_value_data, kill_clobbered_value,
15948 kill_set_value, kill_autoinc_value, copy_value,
15949 mode_change_ok, maybe_mode_change, find_oldest_value_reg,
15950 replace_oldest_value_reg, replace_oldest_value_addr,
15951 replace_oldest_value_mem, copyprop_hardreg_forward_1,
15952 debug_value_data, validate_value_data): Move...
15953 * regcprop.c: ... here.
15954 (rest_of_handle_cprop): Delete.
15955 (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
15957 2009-05-07 Jakub Jelinek <jakub@redhat.com>
15959 PR middle-end/40057
15960 * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
15961 GEN_INT for 1 << bitnum.
15962 (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
15963 build_int_cst_type.
15965 2009-05-07 Uros Bizjak <ubizjak@gmail.com>
15967 * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
15968 Remove wrong description of "nand" operation.
15970 2009-05-06 Richard Guenther <rguenther@suse.de>
15971 Adam Nemet <anemet@caviumnetworks.com>
15973 * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
15974 comment. Add that if LHS is not a gimple register, then RHS1 has
15975 to be a single object (GIMPLE_SINGLE_RHS).
15977 2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
15979 * expr.c (get_def_for_expr): Move it up in the file.
15980 (store_field): When expanding a bit-field store, look at the
15981 defining gimple stmt for the masking conversion.
15983 2009-05-06 Janis Johnson <janis187@us.ibm.com>
15985 PR middle-end/39986
15986 * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
15987 decode_decimal64, encode_decimal128, decode_decimal128): Avoid
15988 32-bit memcpy into long.
15990 2009-05-06 Jakub Jelinek <jakub@redhat.com>
15992 * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
15993 (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
15995 (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
15996 instead of appending DW_OP_deref*.
15998 2009-05-06 Michael Matz <matz@suse.de>
16000 PR middle-end/40021
16001 * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
16002 (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
16004 2009-05-06 Rafael Avila de Espindola <espindola@google.com>
16006 * Makefile.in (install-plugin): Fix srcdir handling.
16008 2009-05-06 Andrey Belevantsev <abel@ispras.ru>
16010 * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
16011 when processing for not_regs_needed bitmap.
16012 * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
16013 handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
16014 handling it for rhs.
16016 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
16018 * config/i386/i386.md (unnamed inc/dec peephole): Use
16019 optimize_insn_for_size_p instead of optimize_size.
16020 * config/i386/predicates.md (incdec_operand): Likewise.
16021 (aligned_operand): Likewise.
16022 * config/i386/sse.md (divv8sf3): Likewise.
16023 (sqrtv8sf2): Likewise.
16025 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
16027 * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
16029 * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
16031 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
16033 * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
16034 ssemodesuffixf2c with avxmodesuffixf2c.
16036 2009-05-06 Joseph Myers <joseph@codesourcery.com>
16039 * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
16041 2009-05-05 Jakub Jelinek <jakub@redhat.com>
16043 * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
16044 (struct tree_base): Adjust spacing for 8 bit boundaries.
16045 (struct tree_decl_common): Add decl_by_reference_flag bit.
16046 (DECL_BY_REFERENCE): Adjust.
16047 * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
16048 print DECL_BY_REFERENCE bit.
16049 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
16050 * dwarf2out.c (loc_by_reference, gen_decl_die): Check
16051 DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
16052 (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
16055 PR middle-end/39666
16056 * gimplify.c (gimplify_switch_expr): If case labels cover the whole
16057 range of the type, but default label is missing, add it with one
16058 of the existing labels instead of adding a new label for it.
16060 2009-05-05 Joseph Myers <joseph@codesourcery.com>
16064 2009-05-05 Rafael Avila de Espindola <espindola@google.com>
16066 * Makefile.in (enable_plugin, plugin_includedir): New.
16067 (install): Depend on install-plugin.
16068 (PLUGIN_HEADERS): New.
16069 (install-plugin): New.
16070 * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
16072 2009-05-05 Richard Guenther <rguenther@suse.de>
16074 PR tree-optimization/40022
16075 * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
16077 (phivn_valid_p): Fix tuplification error, simplify.
16078 (phiprop_insert_phi): Add dumps.
16079 (propagate_with_phi): Simplify.
16081 2009-05-05 Richard Guenther <rguenther@suse.de>
16083 PR middle-end/40023
16084 * builtins.c (gimplify_va_arg_expr): Properly build the address.
16086 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
16088 * tree.h (strip_float_extensions): Remove duplicate declaration.
16089 (build_low_bits_mask, debug_fold_checksum, expand_function_end,
16090 expand_function_start, stack_protect_prologue, stack_protect_epilogue,
16091 block_ultimate_origin): Rearrange the declarations line to match the
16092 comment that indicates the .c file which the functions are defined.
16093 (dwarf2out_*, set_decl_rtl): Add comment.
16094 (get_base_address): Adjust comment.
16095 (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
16096 declarations line and add comment.
16097 (is_builtin_name): Add blank after function name, for clarity.
16099 2009-05-04 Joseph Myers <joseph@codesourcery.com>
16101 * attribs.c (decl_attributes): Use %qE for identifiers in
16103 * cgraphunit.c (verify_cgraph_node): Translate function names to
16104 locale character set in diagnostics.
16105 * coverage.c (get_coverage_counts): Use %qE for identifiers in
16107 * doc/invoke.texi (-finstrument-functions-exclude-function-list):
16108 Document that functions are named in UTF-8.
16109 * expr.c (expand_expr_real_1): Translate function names to locale
16110 character set in diagnostics.
16111 * gimplify.c (omp_notice_variable, omp_is_private,
16112 gimplify_scan_omp_clauses): Use %qE for identifiers in
16114 * langhooks.c (lhd_print_error_function): Translate function names
16115 to locale character set.
16116 * langhooks.h (decl_printable_name): Document that return value is
16117 in internal character set.
16118 * stmt.c: Include pretty-print.h
16119 (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
16121 (resolve_operand_name_1): Translate named operand name to locale
16123 * stor-layout.c (finalize_record_size): Use %qE for identifiers in
16125 * toplev.c (announce_function): Translate function names to locale
16127 (warn_deprecated_use): Use %qE for identifiers in diagnostics.
16128 (default_tree_printer): Use pp_identifier or translate identifiers
16129 to locale character set. Mark "<anonymous>" for translation.
16130 * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
16131 for identifiers in diagnostics.
16132 * tree.c (handle_dll_attribute): Use %qE for identifiers in
16134 * varasm.c (output_constructor): Use %qE for identifiers in
16137 2009-05-04 Rafael Avila de Espindola <espindola@google.com>
16139 * configure.ac: use ` ` instead of $()
16140 * configure: Regenerate.
16142 2009-05-05 Ben Elliston <bje@au.ibm.com>
16144 * config/pa/linux-atomic.c: Eliminate conditional include of
16145 errno.h on non-LP64 systems to simplify build requirements.
16147 2009-05-04 Joseph Myers <joseph@codesourcery.com>
16149 * c-common.c (handle_mode_attribute): Use %qE for identifiers in
16151 * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
16152 and pass value to identifier_to_locale.
16153 (warn_variable_length_array): Make name a tree.
16154 (grokdeclarator): Separate diagnostic texts for named and unnamed
16155 declarators. Use %qE for named declarators.
16156 * c-parser.c (c_lex_one_token): Use %qE for identifiers in
16158 * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
16159 identifiers in diagnostics.
16160 * c-typeck.c (push_member_name, start_init): Pass identifiers to
16161 identifier_to_locale. Mark "anonymous" strings for translation.
16163 2009-05-04 Michael Eager <eager@eagercon.com>
16165 * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
16166 address for DImode/DFmode only if double-precision FP regs.
16168 2009-05-04 Michael Eager <eager@eagercon.com>
16170 * config/rs6000/rs6000.c (rs6000_libcall_value): Add
16171 TARGET_SINGLE_FLOAT check.
16173 2009-05-04 Michael Eager <eager@eagercon.com>
16175 * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
16177 2009-05-04 Michael Eager <eager@eagercon.com>
16179 * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
16180 * config/rs6000/t-xilinx: New
16182 2009-05-04 Paolo Bonzini <bonzini@gnu.org>
16184 * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
16185 * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
16186 * gcc/explow.c (memory_address): Use target hook.
16187 * gcc/targhooks.c (default_legitimize_address): New.
16188 * gcc/targhooks.h (default_legitimize_address): New.
16189 * gcc/target.h (legitimize_address): New.
16190 * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
16191 (TARGET_INITIALIZER): Include it.
16192 * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
16194 * config/bfin/bfin-protos.h (legitimize_address): Remove.
16195 * config/bfin/bfin.c (legitimize_address): Remove.
16196 * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
16197 * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
16199 * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
16200 * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
16202 * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
16203 THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
16204 * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
16205 * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
16206 * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
16207 * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
16208 * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
16209 * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
16210 * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
16211 * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
16212 * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
16213 * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
16214 * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
16215 * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
16216 * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
16217 * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
16218 * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
16219 * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
16220 * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
16221 * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
16222 * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
16223 * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
16224 * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
16226 * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
16227 * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
16228 * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
16229 * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
16230 * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
16231 * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
16232 * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
16233 * gcc/config/arm/arm-protos.h (arm_legitimize_address,
16234 (thumb_legitimize_address): Delete.
16235 * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
16236 * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
16237 * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
16238 * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
16239 * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
16240 * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
16242 * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
16245 * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
16246 * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
16247 * config/m32r/m32r.c (m32r_legitimize_address): New.
16248 * config/m68k/m68k.c (m68k_legitimize_address): New.
16249 * config/score/score.c (score_legitimize_address): Standardize.
16250 * config/score/score3.c (score3_legitimize_address): Standardize.
16251 * config/score/score3.h (score3_legitimize_address): Adjust.
16252 * config/score/score7.c (score7_legitimize_address): Standardize.
16253 * config/score/score7.h (score7_legitimize_address): Adjust.
16254 * config/sh/sh.c (sh_legitimize_address): New.
16255 * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
16257 * gcc/config/s390/s390.c (legitimize_address): Rename to...
16258 (s390_legitimize_address): ... this.
16259 * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
16260 (sparc_legitimize_address): ... this.
16261 * gcc/config/i386/i386.c (legitimize_address): Rename to...
16262 (ix86_legitimize_address): ... this.
16263 * gcc/config/avr/avr.c (legitimize_address): Rename to...
16264 (avr_legitimize_address): ... this.
16265 * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
16266 (mn10300_legitimize_address): ... this.
16267 * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
16268 (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
16269 (alpha_expand_mov): Adjust call.
16271 * config/frv/frv.c (frv_legitimize_address): Return x on failure.
16272 * config/spu/spu.c (spu_legitimize_address): Likewise.
16273 * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
16274 * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
16276 2009-05-04 Joseph Myers <joseph@codesourcery.com>
16278 * intl.c (locale_encoding, locale_utf8): New.
16279 (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
16280 * intl.h (locale_encoding, locale_utf8): Declare.
16281 * pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV.
16282 (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
16284 * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
16286 (pp_tree_identifier): Define to call pp_base_tree_identifier.
16287 (pp_base_tree_identifier): Declare as function.
16288 (identifier_to_locale): Declare.
16289 * Makefile.in (pretty-print.o): Update dependencies.
16290 * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
16292 2009-05-04 Richard Guenther <rguenther@suse.de>
16294 PR middle-end/40015
16295 * builtins.c (fold_builtin_memory_op): Do not decay to element
16296 type if the size matches the whole array.
16298 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
16300 * expmed.c (synth_mult): When trying out a shift, pass the result
16303 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
16305 * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
16306 (shiftsub1_cost): New.
16307 (init_expmed): Compute shiftsub1_cost.
16308 (synth_mult): Optimize multiplications by constants of the form
16309 -(2^^m-1) for some constant positive integer m.
16311 2009-05-03 Richard Guenther <rguenther@suse.de>
16314 * c-typeck.c (array_to_pointer_conversion): Do not built
16315 ADDR_EXPRs of arrays of pointer-to-element type.
16316 * c-gimplify.c (c_gimplify_expr): Revert change fixing
16317 up wrong ADDR_EXPRs after-the-fact.
16318 * c-common.c (strict_aliasing_warning): Strip pointer
16319 conversions for obtaining the original type.
16320 * builtins.c (fold_builtin_memset): Handle array types.
16321 (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
16324 2009-05-03 Richard Guenther <rguenther@suse.de>
16326 PR middle-end/23329
16327 * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
16328 Do not lose casts from array types with unknown extent to array
16329 types with known extent.
16330 * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
16331 alias set compatibility.
16333 2009-05-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
16335 * flags.h (extra_warnings): Delete.
16336 * toplev.c (process_options): Handle Wuninitialized here.
16337 * opts.c (extra_warnings): Delete.
16338 (set_Wextra): Delete.
16339 (common_handle_option): -Wextra can be handled automatically.
16340 * c-opts.c (c_common_handle_option): Delete obsolete code.
16341 (c_common_post_options): Simplify comment.
16342 * common.opt (W): Add Var.
16344 (Wuninitialized): Initialize to -1.
16346 2009-05-03 Adam Nemet <anemet@caviumnetworks.com>
16347 Richard Guenther <rguenther@suse.de>
16349 * expr.c (get_def_for_expr): New function.
16350 (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
16351 SSA rather than trees.
16352 <MULT_EXPR>: Likewise. Use subexp0 and subexp1 instead of
16353 TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
16355 2009-05-03 Joseph Myers <joseph@codesourcery.com>
16357 * c-common.c (reswords): Add _Imaginary.
16358 * c-common.c (enum rid): Add RID_IMAGINARY.
16360 2009-05-03 Paolo Bonzini <bonzini@gnu.org>
16362 * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
16363 Patch by Richard Guenther.
16365 2009-05-03 Anatoly Sokolov <aesok@post.ru>
16367 * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
16368 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16369 * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
16370 * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
16371 * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
16372 * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
16373 * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
16374 * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
16375 * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
16376 * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
16377 * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
16378 * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
16379 * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
16380 * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
16381 * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
16382 * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
16383 * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
16384 * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
16386 2009-05-02 Richard Guenther <rguenther@suse.de>
16388 PR tree-optimization/39940
16389 * tree-ssa-pre.c (eliminate): Make sure we may propagate before
16392 2009-05-02 Richard Guenther <rguenther@suse.de>
16394 PR middle-end/40001
16395 * tree-ssa.c (execute_update_addresses_taken): Properly check
16396 if we can mark a variable DECL_GIMPLE_REG_P.
16397 * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
16398 back to the end of the function.
16399 (is_gimple_reg_type): Remove complex type special casing.
16400 * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
16403 2009-05-02 Ben Elliston <bje@au.ibm.com>
16405 * doc/collect2.texi (Collect2): Document search path behaviour
16406 when configured with --with-ld.
16408 2009-05-02 Jan Hubicka <jh@suse.cz>
16410 * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
16411 parameter; update callers.
16412 (coalesce_cost_edge): EH edges are costier because they needs
16413 splitting even if not critical and even more costier when there are
16414 multiple EH predecestors.
16416 2009-05-02 Jan Hubicka <jh@suse.cz>
16418 * except.c (remove_eh_handler_and_replace): Handle updating after
16419 removing TRY blocks.
16421 2009-05-02 Eric Botcazou <ebotcazou@adacore.com>
16423 * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
16425 2009-05-02 Steven Bosscher <steven@gcc.gnu.org>
16427 * varasm.c: Do not include c-pragma.h.
16428 * attribs.c: Do not incude c-common.h.
16430 2009-05-01 Michael Matz <matz@suse.de>
16432 * calls.c (initialize_argument_information): Handle SSA names like
16433 decls with a non MEM_P DECL_RTL.
16435 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
16437 * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
16438 * ipa-utils.c: Likewise.
16439 * ipa-type-escape.c: Likewise.
16440 * cgraphunit.c Do not include c-common.h.
16441 * ipa-pure-const.c: Likewise.
16442 * tree-if-conv.c: Likewise.
16443 * matrix-reorg.c: Do not include c-common.h and c-tree.h.
16444 * ipa-struct-reorg.c: Likewise.
16445 * tree-nomudflap.c: Likewise.
16446 * tree-ssa-structalias.c: Likewise.
16448 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
16450 * store-motion.c: Many cleanups to make this pass a first-class
16451 citizen instead of an appendix to gcse load motion. Add TODO list
16452 to make this pass faster/cleaner/better.
16454 (struct ls_expr): Post gcse.c-split cleanups.
16455 Rename to st_expr. Rename "loads" field to "antic_stores". Rename
16456 "stores" field to "avail_stores".
16457 (pre_ldst_mems): Rename to store_motion_mems.
16458 (pre_ldst_table): Rename to store_motion_mems_table.
16459 (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
16460 (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
16461 (ldst_entry): Rename to st_expr_entry, update users.
16462 (free_ldst_entry): Rename to free_st_expr_entry, update users.
16463 (free_ldst_mems): Rename to free_store_motion_mems, update users.
16464 (enumerate_ldsts): Rename to enumerate_store_motion_mems,
16466 (first_ls_expr): Rename to first_st_expr, update users.
16467 (next_ls_expr): Rename to next_st_expr, update users.
16468 (print_ldst_list): Rename to print_store_motion_mems. Print names of
16469 fields properly for store motion instead of names inherited from load
16471 (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
16472 (LAST_AVAIL_CHECK_FAILURE): Explain what this is. Undefine when we
16475 (ae_kill): Rename to st_kill, update users.
16476 (ae_gen): Rename to st_avloc, update users.
16477 (transp): Rename to st_transp, update users.
16478 (pre_insert_map): Rename to st_insert_map, update users.
16479 (pre_delete_map): Rename to st_delete_map, update users.
16480 (insert_store, build_store_vectors, free_store_memory,
16481 one_store_motion_pass): Update for abovementioned changes.
16483 (gcse_subst_count, gcse_create_count): Remove.
16484 (one_store_motion_pass): New statistics counters "n_stores_deleted"
16485 and "n_stores_created", local variables.
16487 (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
16490 (regvec, compute_store_table_current_insn): Remove.
16491 (reg_set_info, reg_clear_last_set): Remove.
16492 (compute_store_table): Use DF caches instead of local dataflow
16495 2009-05-01 Joseph Myers <joseph@codesourcery.com>
16497 * c-objc-common.c (c_tree_printer): Print identifiers with
16498 pp_identifier, not pp_string. Mark "({anonymous})" for
16500 * c-pretty-print.c (pp_c_ws_string): New.
16501 (pp_c_cv_qualifier, pp_c_type_specifier,
16502 pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
16503 pp_c_storage_class_specifier, pp_c_function_specifier,
16504 pp_c_attributes, pp_c_bool_constant, pp_c_constant,
16505 pp_c_primary_expression, pp_c_postfix_expression,
16506 pp_c_unary_expression, pp_c_shift_expression,
16507 pp_c_relational_expression, pp_c_equality_expression,
16508 pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
16509 use pp_string and pp_c_ws_string in place of pp_identifier and
16510 pp_c_identifier for non-identifiers. Mark English strings for
16512 * c-pretty-print.h (pp_c_ws_string): Declare.
16514 2009-04-30 Paul Pluzhnikov <ppluzhnikov@google.com>
16515 Roland McGrath <roland@redhat.com>
16517 * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
16518 (ENABLE_LD_BUILDID): New configuration option.
16519 * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
16520 (LINK_BUILDID_SPEC): New macro.
16521 (init_spec): If defined, prepend it between LINK_EH_SPEC and
16523 * doc/install.texi: Document --enable-linker-build-id option.
16524 * configure: Rebuild.
16525 * config.in: Rebuild.
16527 2009-04-30 Adam Nemet <anemet@caviumnetworks.com>
16529 * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
16530 MIPS_GP_SAVE_AREA_SIZE): Define new macros.
16531 (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD. Use
16532 MIPS_GP_SAVE_AREA_SIZE.
16533 * config/mips/mips.c (struct mips_frame_info): Update comment
16534 before arg_pointer_offset and hard_frame_pointer_offset.
16535 (mips_compute_frame_info): Update diagram before function: to
16536 correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
16537 indicate the position of frame_pointer_rtx with -fstack-protector and
16538 to show args_size. Don't allocate cprestore area for leaf functions
16539 if FRAME_GROWS_DOWNWARD. Use MIPS_GP_SAVE_AREA_SIZE to set
16541 (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
16543 2009-04-30 Michael Matz <matz@suse.de>
16545 PR tree-optimization/39955
16546 * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
16548 2009-04-30 Dave Korn <dave.korn.cygwin@gmail.com>
16550 * ira.c (setup_cover_and_important_classes): Use safe macro
16551 REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
16553 * genpreds.c (write_tm_preds_h): Output suitable definition of
16554 REG_CLASS_FOR_CONSTRAINT.
16556 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
16558 * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
16560 * bitmap.c (bitmap_descriptor): Likewise.
16561 * ggc-common.c (loc_descriptor): Likewise.
16562 * varray.c (varray_descriptor): Likewise.
16563 * vec.c (vec_descriptor): Likewise.
16565 2009-04-30 Eric Botcazou <ebotcazou@adacore.com>
16567 * Makefile.in (dce.o): Add $(EXCEPT_H).
16568 * dce.c: Include except.h and delete redundant vector definitions.
16569 (deletable_insn_p): Return false for non-call insns that can throw
16572 2009-04-30 Steven Bosscher <steven@gcc.gnu.org>
16574 * gcse.c (ae_gen): Remove.
16575 (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
16576 and make non-static function to make it available in store-motion.c.
16577 Update call sites with search-and-replace.
16578 (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
16579 extract_mentioned_regs, extract_mentioned_regs_helper,
16580 find_moveable_store, compute_store_table, load_kills_store, find_loads,
16581 store_killed_in_insn, store_killed_after, store_killed_before,
16582 build_store_vectors, insert_insn_start_basic_block, insert-store,
16583 remove_reachable_equiv_notes, replace_store_insn, delete_store,
16584 free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
16585 execute_rtl_store_motion, pass_rtl_store_motion): Move to...
16586 * store-motion.c: ...new file. Also copy data structures from gcse.c
16587 and clean up to remove parts not used by store motion.
16588 * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
16589 * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
16591 2009-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
16594 * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
16595 when optimizing for size.
16597 2009-04-30 Hans-Peter Nilsson <hp@axis.com>
16599 * gcse.c (gcse_constant_p): Fix typo in last change.
16601 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
16603 * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
16605 2009-04-30 Andreas Krebbel <krebbel1@de.ibm.com>
16607 * gcse.c (gcse_constant_p): Make sure the constant is sharable.
16609 2009-04-29 James E. Wilson <wilson@codesourcery.com>
16611 * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
16612 CONST_HIGH_PART result.
16614 2009-04-29 Anatoly Sokolov <aesok@post.ru>
16616 * config/avr/avr.c (initial_elimination_offset): Rename to
16617 avr_initial_elimination_offset.
16618 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
16619 change return type to bool.
16620 (avr_can_eliminate): New function.
16621 * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
16622 (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
16623 (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
16624 * config/avr/avr-protos.h (initial_elimination_offset): Rename to
16625 avr_initial_elimination_offset.
16626 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
16627 (avr_initial_elimination_offset): Define.
16629 2009-04-29 Eric Botcazou <ebotcazou@adacore.com>
16630 Steven Bosscher <steven@gcc.gnu.org>
16632 PR rtl-optimization/39938
16633 * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
16634 * cfgrtl.c: Include insn-attr.h.
16635 (rest_of_pass_free_cfg): New function.
16636 (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
16637 * resource.c (init_resource_info): Remove call to df_analyze.
16639 2009-04-29 Richard Guenther <rguenther@suse.de>
16642 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
16643 allow conversion to signed integers.
16645 2009-04-29 Richard Guenther <rguenther@suse.de>
16647 * tree-cfg.c (verify_gimple_assign_binary): Allow vector
16648 shifts of floating point vectors if the shift amount is
16649 a constant multiple of the element size.
16651 2009-04-29 Andreas Krebbel <krebbel1@de.ibm.com>
16652 Michael Matz <matz@suse.de>
16654 PR middle-end/39927
16656 * tree-outof-ssa.c (emit_partition_copy): New function.
16657 (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
16658 insert_part_to_rtx_on_edge): Perform the partition base var
16659 copy using emit_partition_copy.
16660 (insert_value_copy_on_edge): Convert constants to the right mode.
16661 (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
16662 (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
16664 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
16666 * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
16667 scan backwards to try to find a constant to initialize it.
16669 * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
16670 insn before the loop_end instruction, don't look past labels.
16672 2009-04-29 Richard Guenther <rguenther@suse.de>
16674 PR middle-end/39937
16675 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
16676 loose type conversions.
16677 (forward_propagate_addr_expr): Fix tuplification bug. Remove
16678 stmts only if there are no uses of its definition.
16680 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
16682 * config/bfin/bfin.h (splitting_loops): Declare.
16683 * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
16684 Reorder bit definitions to be ascending.
16685 (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
16686 * config/bfin/bfin.c (splitting_loops): New variable.
16687 (bfin_cpus): Add WA_LOAD_LCREGS as needed.
16688 (struct loop_info): Remove members INIT and LOOP_INIT.
16689 (bfin_optimize_loop): Don't set them. Reorder the code that generates
16690 the LSETUP sequence. Allow LC to be loaded from any register, but
16691 also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
16692 (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
16694 * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
16695 of reload_completed.
16698 * config/bfin/bfin.md (movsi_insn): Refine constraints.
16700 2009-04-29 Rafael Avila de Espindola <espindola@google.com>
16702 * Makefile.in (PLUGIN_VERSION_H): New.
16703 (OBJS-common): Remove plugin-version.o.
16704 (plugin.o): Depend on (PLUGIN_VERSION_H).
16705 (plugin-version.o): Remove.
16706 * configure: Regenerate
16707 * configure.ac: Create plugin-version.h.
16708 * gcc-plugin.h (plugin_gcc_version): Remove.
16709 (plugin_default_version_check): Change signature.
16710 * plugin-version.c: Remove.
16711 * plugin.c: Include plugin-version.h.
16712 (str_plugin_gcc_version_name): Remove.
16713 (try_init_one_plugin): Pass gcc version to plugin_init.
16714 (plugin_default_version_check): Both gcc and plugin versions are now
16717 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
16719 * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
16720 problematic last insns. Test for TYPE_CALL rather than CALL_P.
16721 Remove special case testing for last insn of inner loops. Don't fail
16722 if the loop ends with a jump, emit an extra nop instead.
16724 * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
16725 DREGS rather than comparing directly. Remove code that tries to
16726 account for latencies.
16728 2009-04-29 Richard Guenther <rguenther@suse.de>
16730 PR tree-optimization/39941
16731 * tree-ssa-pre.c (eliminate): Schedule update-ssa after
16732 eliminating an indirect call.
16734 2009-04-29 Richard Guenther <rguenther@suse.de>
16736 * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
16737 parameter. Allow invariants as base if !require_lvalue.
16738 (verify_gimple_assign_single): Adjust.
16740 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
16742 * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
16743 (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
16744 ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
16745 ssubhi3, ssaddhi3_parts and sssubhi3_parts.
16746 (flag_mulhi3_parts): Produce a HImode output rather than trying to set
16748 * config/bfin/bfin.c (bfin_expand_builtin,
16749 case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
16751 2009-04-28 Richard Guenther <rguenther@suse.de>
16753 * tree-vect-loop.c (get_initial_def_for_induction): Use
16754 correct types for pointer increment.
16756 2009-04-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16758 * toplev.c (print_version): Update GMP version string calculation.
16760 2009-04-28 Eric Botcazou <ebotcazou@adacore.com>
16762 PR rtl-optimization/39938
16763 * resource.c (init_resource_info): Add call to df_analyze.
16765 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
16767 * config/alpha/alpha.md (usegp): Cast the result of
16768 alpha_find_lo_sum_using_gp to enum attr_usegp.
16769 * config/alpha/alpha.c (override_options): Remove end-of-structure
16770 marker element from cpu_table. Use array size of cpu_table to handle
16771 -mcpu and -mtune options.
16772 (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
16774 2009-04-28 Joseph Myers <joseph@codesourcery.com>
16776 * config.gcc (powerpc*-*-* | rs6000-*-*): Add
16777 rs6000/option-defaults.h to tm_file. Support cpu_32, cpu_64,
16778 tune_32 and tune_64.
16779 * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
16780 support on PowerPC.
16781 * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
16782 * config/rs6000/option-defaults.h: ... here. New file.
16783 (OPT_64, OPT_32): Define.
16784 (MASK_64BIT): Define to 0 if not already defined.
16785 (OPT_ARCH64, OPT_ARCH32): Define.
16786 (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
16789 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
16791 * config/arm/arm.c (arm_override_options): Emit error on using
16794 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
16796 PR rtl-optimization/39914
16797 * ira-conflicts.c (ira_build_conflicts): Prohibit call used
16798 registers for allocnos created from user-defined variables only
16799 when not optimizing.
16801 2009-04-28 Richard Guenther <rguenther@suse.de>
16803 PR middle-end/39937
16804 * fold-const.c (fold_binary): Use distribute_real_division only
16807 2009-04-28 Steve Ellcey <sje@cup.hp.com>
16809 * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
16810 add hpux-stdint.h to tm_file.
16811 (hppa[12]*-*-hpux11*): Ditto.
16812 (ia64*-*-hpux*): Ditto.
16813 * config/hpux-stdint.h: New.
16814 * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
16815 __STDC_EXT__ for all compiles.
16816 * config/pa/pa-hpux.h: Ditto.
16817 * config/pa/pa-hpux10.h: Ditto.
16818 * config/pa/pa-hpux11.h: Ditto.
16820 2009-04-28 Catherine Moore <clm@codesourcery.com>
16822 * debug.h (set_name): Add comment.
16824 2009-04-28 Andrew Pinski <pinskia@gmail.com>
16827 * config/darwin.c (machopic_gen_offset): Check
16828 currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
16829 * config/arm/arm.c (require_pic_register): Likewise.
16831 2009-04-28 Paolo Bonzini <bonzini@gnu.org>
16833 * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
16834 m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
16835 m32c_promote_prototypes): Delete.
16837 2009-04-28 Michael Matz <matz@suse.de>
16839 PR middle-end/39922
16840 * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
16843 2009-04-28 Richard Guenther <rguenther@suse.de>
16845 * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
16847 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
16849 * config/arm/arm-cores.def: Add support for arm1156t2f-s.
16850 * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
16851 * config/arm/arm-tune.md: Regenerate.
16853 2009-04-28 Alexander Monakov <amonakov@ispras.ru>
16855 * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
16856 block if there are complex incoming edges.
16857 (sel_merge_blocks): Remove useless assert.
16858 (sel_redirect_edge_and_branch): Check that edge was redirected.
16859 * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
16860 (sel_find_rgns): Delete declaration.
16861 * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
16862 the region when it is not a preheader.
16864 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
16867 * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
16869 2009-04-28 Richard Guenther <rguenther@suse.de>
16871 * tree.h (SSA_NAME_VALUE): Remove.
16872 (struct tree_ssa_name): Remove value_handle member.
16873 * tree-vrp.c (execute_vrp): Initialize/free the value-handle
16874 array for jump threading.
16875 * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
16877 * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
16878 * tree-flow.h (threadedge_initialize_values): Declare.
16879 (threadedge_finalize_values): Likewise.
16880 * tree-ssa-threadedge.c (ssa_name_values): New global variable.
16881 (SSA_NAME_VALUE): Define.
16882 (threadedge_initialize_values): New function.
16883 (threadedge_finalize_values): Likewise.
16884 * tree-ssa-dom.c (ssa_name_values): New global variable.
16885 (SSA_NAME_VALUE): Define.
16886 (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
16888 2009-04-28 Ira Rosen <irar@il.ibm.com>
16890 * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
16891 Use REPORT_VECTORIZED_LOCATIONS instead
16892 REPORT_VECTORIZED_LOOPS.
16893 * tree-vectorizer.c (vect_verbosity_level): Make static.
16894 (vect_loop_location): Rename to vect_location.
16895 (vect_set_verbosity_level): Update comment.
16896 (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
16898 (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
16899 and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
16900 instead REPORT_UNVECTORIZED_LOOPS.
16901 * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
16902 and vect_loop_def to vect_external_def and vect_internal_def.
16903 (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
16904 and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
16905 REPORT_UNVECTORIZED_LOCATIONS.
16906 (enum vect_relevant): Update comment. Rename vect_unused_in_loop
16907 and vect_used_in_loop and to vect_unused_in_scope and
16908 vect_used_in_scope.
16909 (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
16910 (vect_verbosity_level): Remove declaration.
16911 (vect_analyze_operations): Likewise.
16912 (vect_analyze_stmt): Declare.
16913 * tree-vect-loop.c (vect_determine_vectorization_factor): Use
16914 REPORT_UNVECTORIZED_LOCATIONS.
16915 (vect_get_loop_niters): Fix indentation.
16916 (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
16917 (vect_analyze_loop_operations): New function.
16918 (vect_analyze_loop): Call vect_analyze_loop_operations instead of
16919 vect_analyze_operations.
16920 (vect_is_simple_reduction): Use new names.
16921 (vectorizable_live_operation, vect_transform_loop): Likewise.
16922 * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
16923 to specify whether the data references can be a part of interleaving
16925 (vect_analyze_data_ref_dependence): Use new names.
16926 (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
16927 (vect_create_addr_base_for_vector_ref): Remove redundant code.
16928 * tree-vect-patterns.c (widened_name_p): Use new names.
16929 (vect_recog_dot_prod_pattern): Likewise.
16930 * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
16931 (process_use, vect_mark_stmts_to_be_vectorized,
16932 vect_model_simple_cost, vect_model_store_cost,
16933 vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
16934 vectorizable_call, vectorizable_conversion, vectorizable_assignment,
16935 vectorizable_operation, vectorizable_type_demotion,
16936 vectorizable_type_promotion, vectorizable_store, vectorizable_load,
16937 vectorizable_condition): Likewise.
16938 (vect_analyze_operations): Split into vect_analyze_loop_operations
16940 (vect_analyze_stmt): ... new function.
16941 (new_stmt_vec_info): Use new names.
16942 (vect_is_simple_use): Use new names and fix comment.
16943 * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
16944 (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
16946 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
16949 * config/i386/i386.c (print_operand) ['Z']: Handle floating point
16950 and integer modes for x87 operands. Do not ICE for unsupported size,
16951 generate error instead. Generate error for unsupported operand types.
16952 ['z']: Do not handle HImode memory operands specially. Warning
16953 for floating-point operands. Fallthru to 'Z' for unsupported operand
16954 types. Do not ICE for unsupported size, generate error instead.
16955 (output_387_binary_op): Use %Z to output operands.
16956 (output_fp_compare): Ditto.
16957 (output_387_reg_move): Ditto.
16959 2009-04-28 Ben Elliston <bje@au.ibm.com>
16964 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
16966 * builtins.c (c_strlen): Do not warn here.
16967 * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
16968 * c-common.c (pointer_int_sum): Take an explicit location.
16969 Warn about offsets out of bounds.
16970 * c-common.h (pointer_int_sum): Adjust declaration.
16972 2009-04-27 Ian Lance Taylor <iant@google.com>
16974 * collect2.c (is_ctor_dtor): Change type of ret field in struct
16976 * dce.c (run_fast_df_dce): Change type of old_flags to int.
16977 * df-core.c (df_set_flags): Change return type to int. Change
16978 type of old_flags to int.
16979 (df_clear_flags): Likewise.
16980 * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
16981 (df_get_conditional_uses): Likewise.
16982 * df.h (df_set_flags, df_clear_flags): Update declarations.
16983 * dwarf2out.c (struct indirect_string_node): Change type of form
16984 field to enum dwarf_form.
16985 (AT_string_form): Change return type to enum dwarf_form.
16986 * fixed-value.c (fixed_compare): Add cast to enum type.
16987 * fwprop.c (update_df): Change 0 to VOIDmode.
16988 * gensupport.c: Change 0 to UNKNOWN.
16989 * gimple.h (gimple_cond_code): Add cast to enum type.
16990 * haifa-sched.c (reemit_notes): Add cast to enum type.
16991 * hooks.c (hook_int_void_no_regs): Remove function.
16992 * hooks.h (hook_int_void_no_regs): Remove declaration.
16993 * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
16994 * predict.c (combine_predictions_for_insn): Add casts to enum type.
16995 * real.c (real_arithmetic): Add cast to enum type.
16996 (real_compare): Likewise.
16997 * target.h (struct gcc_target): Change return type of
16998 branch_target_register_class to enum reg_class.
16999 * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
17000 default_branch_target_register_class.
17001 * targhooks.c (default_branch_target_register_class): New function.
17002 * targhooks.h (default_branch_target_register_class): Declare.
17003 * tree-data-ref.c (print_direction_vector): Add cast to enum type.
17004 * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
17006 * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
17008 * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
17009 vect_uninitialized_def. Change 0 to ERROR_MARK.
17010 * tree-vect-stmts.c (supportable_widening_operation): Don't
17011 initialize icode1 and icode2.
17012 * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
17013 * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
17015 (cmn_err_flag_specs): Change 0 to STD_C89.
17016 (cmn_err_char_table): Likewise.
17017 * config/arm/arm.c (get_arm_condition_code): Change type of code
17018 to enum arm_cond_code.
17019 (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
17020 (IWMMXT_BUILTIN2): Likewise.
17021 (neon_builtin_type_bits): Don't define typedef.
17022 (neon_builtin_datum): Change type of bits field to int.
17023 (arm_expand_neon_args): Add cast to enum type.
17024 * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
17026 * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN. Add
17027 casts to enum type.
17028 * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
17030 * config/mips/mips.md (jal_macro): Return enum constant.
17031 (single_insn): Likewise.
17032 * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
17034 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
17035 casts to enum type.
17036 * config/s390/s390.c (s390_tune_flags): Change type to int.
17037 (s390_arch_flags): Likewise.
17038 (s390_handle_arch_option): Change flags field of struct pta to int.
17039 * config/s390/s390.h (s390_tune_flags): Update declaration.
17040 (s390_arch_flags): Likewise.
17041 * config/sh/sh.c (prepare_move_operands): Compare
17042 tls_symbolic_operand result with enum constant.
17043 (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
17044 (sh_expand_prologue): Add cast to enum type.
17045 (sh_expand_epilogue): Likewise.
17046 (tls_symbolic_operand): Change return type to enum tls_model.
17047 (fpscr_set_from_mem): Add cast to enum type.
17048 (legitimize_pic_address): Compare tls_symbolic_operand result with
17050 (sh_target_reg_class): Change return type to enum reg_class.
17051 * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
17053 * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
17054 * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
17055 * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
17056 (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
17057 (delayed_branch, tls_call_delay): Likewise.
17058 (eligible_for_sibcall_delay): Likewise.
17059 (eligible_for_return_delay): Likewise.
17060 * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
17061 (spu_expand_builtin_1): Likewise.
17063 * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
17064 for all types of conversions.
17065 (output_init_element): Issue -Wc++-compat warning if needed when
17066 initializing a bitfield with enum type.
17067 * c-parser.c (c_parser_expression): Set original_type to
17068 original_type of right hand operand of comma operator.
17070 2009-04-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
17072 * doc/c-tree.texi (Types, Functions, Expression trees): Fix
17074 * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
17075 * doc/cpp.texi (Standard Predefined Macros)
17076 (Implementation-defined behavior): Likewise.
17077 * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
17078 * doc/gimple.texi (GIMPLE Exception Handling)
17079 (@code{GIMPLE_ASSIGN}): Likewise.
17080 * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
17081 * doc/invoke.texi (Warning Options, Optimize Options)
17082 (AVR Options, Darwin Options): Likewise.
17083 (Optimize Options): Reformulate -fwhole-program description.
17084 * doc/loop.texi (Lambda): Likewise.
17085 * doc/md.texi (Output Template, Define Constraints)
17086 (Standard Names, Insn Splitting): Likewise.
17087 * doc/options.texi (Option properties): Likewise.
17088 * doc/passes.texi (Tree-SSA passes): Likewise.
17089 * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
17090 * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
17091 (File Names and DBX): Likewise.
17092 * doc/trouble.texi (Incompatibilities): Likewise.
17094 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
17096 * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
17097 instruction is correct.
17099 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
17101 Allow non-constant arguments to conversion intrinsics.
17102 * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
17103 * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
17104 * spu.c (print_operand): Handle 'v' and 'w'.
17105 (exp2_immediate_p, spu_gen_exp2): Define.
17106 * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
17107 spu_convtf_1): Update parameter descriptions.
17108 * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
17109 * constraints.md ('v', 'w'): New.
17110 * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
17112 (i2f, I2F): New define_mode_attr.
17113 (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
17114 floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
17115 fixuns_truncv4sfv4si2): Update to use mode attribute.
17116 (float<mode><i2f>2_mul, float<mode><i2f>2_div,
17117 fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
17118 floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
17119 patterns for combine.
17121 2009-04-27 Steven Bosscher <steven@gcc.gnu.org>
17123 * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
17124 (cprop, hoist, pre, store_motion): New debug counters.
17125 * tree-pass.h (pass_tracer): Move to list of gimple passes, it
17126 is not an RTL pass anymore.
17127 (pass_profiling): Remove extern decl for pass removed in 2005.
17128 (pass_gcse, pass_jump_bypass): Remove.
17129 * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
17130 to 0 for clean state.
17131 * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
17132 * cse.c (gate_handle_cse_after_global_opts,
17133 rest_of_handle_cse_after_global_opts): New functions.
17134 (pass_cse_after_global_opts): New pass, does local CSE.
17135 * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
17136 (TV_CPROP): New timevar.
17137 * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
17138 (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
17139 (gcse_main, recompute_all_luids): Remove.
17140 (compute_hash_table_work): Call max_reg_num instead of reading
17142 (cprop_jump): Don't set run_jump_opt_after_gcse.
17143 (constprop_register): Always allow to alter jumps.
17144 (cprop_insn): Likewise.
17145 (do_local_cprop): Likewise.
17146 (local_cprop_pass): Likewise. Return non-zero if something changed.
17147 (cprop): Remove function, fold interesting bits into one_cprop_pass.
17148 (find_implicit_sets): Add note about missed optimization opportunity.
17149 (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
17150 pass_rtl_cprop execute function.
17151 Don't bother tracking the pass number, each pass gets its own dumpfile
17153 Always allow to alter jumpsand bypass jumps.
17154 (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
17155 will just find no suitable set.
17156 (pre_edge_insert): Fix dumping, this function is for PRE only.
17157 (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
17158 pass_rtl_pre execute function.
17159 (hoist_code): Return non-zero if something changed. Keep track of
17160 substitutions and insertions for statistics gathering similar to PRE.
17161 (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
17162 called from the pass_rtl_hoist execute function. Show pass statistics.
17163 (compute_store_table): Use max_reg_num directly instead of using the
17164 formerly global max_gcse_regno.
17165 (build_store_vectors): Likewise.
17166 (replace_store_insn): Fix dumping.
17167 (store_motion): Rename to ...
17168 (one_store_motion_pass): ... this. Rewrite to be "the" STORE_MOTION
17169 pass, called from the pass_rtl_store_motion execute function. Keep
17170 track of substitutions and insertions for statistics gathering similar
17172 (bypass_jumps): Remove, fold interesting bits into ...
17173 (one_cprop_pass): ... this. Rewrite to be "the" CPROP pass, called
17174 from the pass_rtl_cprop execute function.
17175 (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
17176 pass_jump_bypass): Remove.
17177 (gate_handle_gcse, rest_of_handle_gcse): Remove.
17178 (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
17179 (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
17180 (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
17181 (gate_rtl_store_motion, execute_rtl_store_motion,
17182 pass_rtl_store_motion): New.
17183 * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
17184 make it clear that -fcse-skip-blocks is a no-op for backward compat.
17185 * passes.c (init_optimization_passes): Remove pass_gcse and
17186 pass_jump_bypass. Schedule cprop, pre, hoist, cprop, store_motion,
17187 and cse_after_global_opts in place of pass_gcse. Schedule cprop
17188 instead of pass_jump_bypass.
17190 2009-04-27 Richard Guenther <rguenther@suse.de>
17192 PR middle-end/39928
17193 * gimplify.c (gimplify_expr): If we are required to create
17194 a temporary make sure it ends up as register.
17196 2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
17199 * config/i386/i386.c (construct_container): Don't call
17200 gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
17201 X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
17203 2009-04-27 Michael Matz <matz@suse.de>
17205 * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
17206 (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
17207 * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
17208 (dump_replaceable_exprs): Take a bitmap.
17209 * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
17211 (expand_gimple_basic_block): Likewise.
17212 * tree-ssa-ter.c (struct temp_expr_table_d): Make
17213 replaceable_expressions member a bitmap.
17214 (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
17215 (mark_replaceable): Likewise.
17216 (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
17217 * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
17219 2009-04-27 Richard Guenther <rguenther@suse.de>
17221 * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
17222 (verify_stmts): Dispatch to gimple/type verification code.
17223 * tree-inline.c (remap_gimple_op_r): Work around C++ FE
17224 issue with call argument types.
17226 2009-04-27 Michael Matz <matz@suse.de>
17228 * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
17229 (init_update_ssa, delete_update_ssa, update_ssa): Remove references
17232 2009-04-27 Richard Sandiford <rdsandiford@googlemail.com>
17233 Eric Botcazou <ebotcazou@adacore.com>
17235 * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
17236 a label's basic block.
17237 (mark_target_live_regs): Tidy and rework obsolete comments.
17238 Change back DF problem to LIVE. If a label starts a basic block,
17239 assume that all registers that used to be live then still are.
17240 (init_resource_info): If a label starts a basic block, set its
17241 BLOCK_FOR_INSN accordingly.
17242 (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
17244 2009-04-27 Richard Guenther <rguenther@suse.de>
17246 * tree-flow-inline.h (function_ann): Remove.
17247 (get_function_ann): Likewise.
17248 * tree-dfa.c (create_function_ann): Remove.
17249 * tree-flow.h (struct static_var_ann_d): Remove.
17250 (struct function_ann_d): Likewise.
17251 (union tree_ann_d): Remove fdecl member.
17252 (function_ann_t): Remove.
17253 (function_ann, get_function_ann, create_function_ann): Remove
17256 2009-04-27 Uros Bizjak <ubizjak@gmail.com>
17258 * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
17260 2009-04-27 Jan Hubicka <jh@suse.cz>
17262 * ipa-pure-const.c (struct funct_state_d): New fields
17263 state_previously_known, looping_previously_known; remove
17264 state_set_in_source.
17265 (analyze_function): Use new fields.
17266 (propagate): Avoid assumption that state_set_in_source imply
17269 * tree-ssa-loop-niter.c (finite_loop_p): New function.
17270 * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
17271 * cfgloop.h (finite_loop_p): Declare.
17273 2009-04-26 Michael Matz <matz@suse.de>
17275 * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
17277 2009-04-26 Michael Matz <matz@suse.de>
17279 * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
17280 pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
17281 * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
17282 pass_mark_used_blocks): Remove.
17283 * tree-optimize.c (pass_free_datastructures,
17284 execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
17285 * passes.c (init_optimization_passes): Don't call
17286 pass_mark_used_blocks, remove dead code.
17288 2009-04-26 H.J. Lu <hongjiu.lu@intel.com>
17290 * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
17291 * tree-ssa-live.h (register_ssa_partition): Likewise.
17293 2009-04-26 Michael Matz <matz@suse.de>
17296 * builtins.c (fold_builtin_next_arg): Handle SSA names.
17297 * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
17298 * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
17300 (compare_pairs): Swap cost comparison.
17301 (coalesce_ssa_name): Don't use change_partition_var.
17302 * tree-nrv.c (struct nrv_data): Add modified member.
17303 (finalize_nrv_r): Set it.
17304 (tree_nrv): Use it to update statements.
17305 (pass_nrv): Require PROP_ssa.
17306 * tree-mudflap.c (mf_decl_cache_locals,
17307 mf_build_check_statement_for): Use make_rename_temp.
17308 (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
17309 * alias.c (find_base_decl): Handle SSA names.
17310 * emit-rtl (set_reg_attrs_for_parm): Make non-static.
17311 (component_ref_for_mem_expr): Don't leak SSA names into RTL.
17312 * rtl.h (set_reg_attrs_for_parm): Declare.
17313 * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
17314 to "optimized", remove unused locals at finish.
17315 (execute_free_datastructures): Make global, call
17316 delete_tree_cfg_annotations.
17317 (execute_free_cfg_annotations): Don't call
17318 delete_tree_cfg_annotations.
17320 * ssaexpand.h: New file.
17321 * expr.c (toplevel): Include ssaexpand.h.
17322 (expand_assignment): Handle SSA names the same as register variables.
17323 (expand_expr_real_1): Expand SSA names.
17324 * cfgexpand.c (toplevel): Include ssaexpand.h.
17325 (SA): New global variable.
17326 (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
17327 (SSAVAR): New macro.
17328 (set_rtl): New helper function.
17329 (add_stack_var): Deal with SSA names, use set_rtl.
17330 (expand_one_stack_var_at): Likewise.
17331 (expand_one_stack_var): Deal with SSA names.
17332 (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
17333 before unique numbers.
17334 (expand_stack_vars): Use set_rtl.
17335 (expand_one_var): Accept SSA names, add asserts for them, feed them
17336 to above subroutines.
17337 (expand_used_vars): Expand all partitions (without default defs),
17338 then only the local decls (ignoring those expanded already).
17339 (expand_gimple_cond): Remove edges when jumpif() expands an
17340 unconditional jump.
17341 (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
17342 or remove abnormal edges. Ignore insns setting the LHS of a TERed
17344 (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
17345 members of SA; deal with PARM_DECL partitions here; expand
17346 all PHI nodes, free tree datastructures and SA. Commit instructions
17347 on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
17348 (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
17349 info and statements at start, collect garbage at finish.
17350 * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
17351 (VAR_ANN_PARTITION) Remove.
17352 (change_partition_var): Don't declare.
17353 (partition_to_var): Always return SSA names.
17354 (var_to_partition): Only accept SSA names.
17355 (register_ssa_partition): Only check argument.
17356 * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
17358 (delete_var_map): Don't free it.
17359 (var_union): Only accept SSA names, simplify.
17360 (partition_view_init): Mark only useful SSA names as used.
17361 (partition_view_fini): Only deal with SSA names.
17362 (change_partition_var): Remove.
17363 (dump_var_map): Use ssa_name instead of partition_to_var member.
17364 * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
17366 * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
17367 (struct _elim_graph): New member const_dests; nodes member vector of
17369 (set_location_for_edge): New static helper.
17370 (create_temp): Remove.
17371 (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
17372 insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
17373 (new_elim_graph): Allocate const_dests member.
17374 (clean_elim_graph): Truncate const_dests member.
17375 (delete_elim_graph): Free const_dests member.
17376 (elim_graph_size): Adapt to new type of nodes member.
17377 (elim_graph_add_node): Likewise.
17378 (eliminate_name): Likewise.
17379 (eliminate_build): Don't take basic block argument, deal only with
17380 partition numbers, not variables.
17381 (get_temp_reg): New static helper.
17382 (elim_create): Use it, deal with RTL temporaries instead of trees.
17383 (eliminate_phi): Adjust all calls to new signature.
17384 (assign_vars, replace_use_variable, replace_def_variable): Remove.
17385 (rewrite_trees): Only do checking.
17386 (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
17387 (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
17388 init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
17389 contains_tree_r, MAX_STMTS_IN_LATCH,
17390 process_single_block_loop_latch, analyze_edges_for_bb,
17391 perform_edge_inserts): Remove.
17392 (expand_phi_nodes): New global function.
17393 (remove_ssa_form): Take ssaexpand parameter. Don't call removed
17394 functions, initialize new parameter, remember partitions having a
17396 (finish_out_of_ssa): New global function.
17397 (rewrite_out_of_ssa): Make global. Adjust call to remove_ssa_form,
17398 don't reset in_ssa_p here, don't disable TER when mudflap.
17399 (pass_del_ssa): Remove.
17400 * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
17402 (execute_free_datastructures): Declare.
17403 * Makefile.in (SSAEXPAND_H): New variable.
17404 (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
17405 * basic-block.h (commit_one_edge_insertion): Declare.
17406 * passes.c (init_optimization_passes): Move pass_nrv and
17407 pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
17408 pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
17409 * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
17410 (redirect_branch_edge): Deal with super block when expanding, split
17411 out jump patching itself into ...
17412 (patch_jump_insn): ... here, new static helper.
17414 2009-04-26 Michael Matz <matz@suse.de>
17416 * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
17417 beyond num_ssa_names.
17418 * tree-ssa-ter.c (free_temp_expr_table): Likewise.
17419 * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
17421 2009-04-26 Jakub Jelinek <jakub@redhat.com>
17423 PR inline-asm/39543
17424 * fwprop.c (forward_propagate_asm): New function.
17425 (forward_propagate_and_simplify): Propagate also into __asm, if it
17426 doesn't increase the number of referenced registers.
17429 * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
17431 2009-04-26 Jakub Jelinek <jakub@redhat.com>
17433 * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
17434 note_nonlocal_vla_type for nonlocal VLAs.
17435 (note_nonlocal_vla_type, note_nonlocal_block_vlas,
17436 contains_remapped_vars, remap_vla_decls): New functions.
17437 (convert_nonlocal_reference_stmt): If not optimizing, call
17438 note_nonlocal_block_vlas on GIMPLE_BIND block vars.
17439 (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
17440 if it wasn't found in var_map.
17441 (finalize_nesting_tree_1): Call remap_vla_decls. If outermost
17442 GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
17443 to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
17445 * gimplify.c (nonlocal_vlas): New variable.
17446 (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
17448 (gimplify_body): Create and destroy nonlocal_vlas.
17450 * dwarf2out.c (loc_descr_plus_const): New function.
17451 (build_cfa_aligned_loc, tls_mem_loc_descriptor,
17452 mem_loc_descriptor, loc_descriptor_from_tree_1,
17453 descr_info_loc, gen_variable_die): Use it.
17455 * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
17456 !TREE_STATIC VAR_DECLs.
17457 * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
17458 DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
17459 (gen_variable_die): Likewise. Don't look at TREE_PRIVATE if
17460 DECL_BY_REFERENCE is valid.
17461 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
17462 for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
17463 * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
17464 Copy DECL_BY_REFERENCE.
17465 (struct nesting_copy_body_data): New type.
17466 (nesting_copy_decl): New function.
17467 (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
17468 if they have variable length.
17470 2009-04-26 Michael Matz <matz@suse.de>
17472 * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
17473 mark new temporaries for renaming.
17475 2009-04-26 Joseph Myers <joseph@codesourcery.com>
17478 * c-decl.c (global_bindings_p): Return negative value.
17479 (c_variable_size): New. Based on variable_size from
17481 (grokdeclarator): Call c_variable_size not variable_size.
17483 2009-04-26 Uros Bizjak <ubizjak@gmail.com>
17485 * config/i386/i386.c (print_operand) ['z']: Fix typo.
17487 2009-04-26 Kai Tietz <kai.tietz@onevision.com>
17489 * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
17490 Redefine it to just use mingw/include.
17491 (ASM_SPEC): Rules for -m32 and -m64.
17492 (LINK_SPEC): Use Likewise.
17493 (SPEC_32): New define.
17494 (SPEC_64): Likewise.
17495 (SUB_LINK_SPEC): Likewise.
17496 (MULTILIB_DEFAULTS): New define.
17497 * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
17498 Add multilib options.
17499 (MULTILIB_DIRNAMES): Likewise.
17500 (MULTILIB_OSDIRNAMES): Likewise.
17501 (LIBGCC): Likewise.
17502 (INSTALL_LIBGCC): Likewise.
17504 2009-04-26 Joseph Myers <joseph@codesourcery.com>
17507 * c-tree.h (enum c_inline_static_type): New.
17508 (record_inline_static): Declare.
17509 * c-decl.c (struct c_inline_static, c_inline_statics,
17510 record_inline_static, check_inline_statics): New.
17511 (pop_file_scope): Call check_inline_statics.
17512 (start_decl): Call record_inline_static instead of pedwarning
17513 directly for static in inline function.
17514 * c-typeck.c (build_external_ref): Call record_inline_static
17515 instead of pedwarning directly for static referenced in inline
17518 2009-04-26 Steven Bosscher <steven@gcc.gnu.org>
17520 * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
17521 not new but only being rescanned.
17522 * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
17523 reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
17524 alloc_reg_set_mem, free_reg_set_mem, record_one_set,
17525 record_set_info, compute_set, grealloc): Remove.
17526 (recompute_all_luids): New function.
17527 (gcse_main): Don't compute sets, and don't do related memory
17528 allocations/free-ing. If something changed before the end of the
17529 pass, update LUIDs using recompute_all_luids.
17530 (alloc_gcse_mem): Don't compute LUIDs. Don't allocate reg_set memory.
17531 (free_gcse_mem): Don't free it either.
17532 (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
17533 Use the df insn LUIDs.
17534 (load_killed_in_block): Likewise.
17535 (compute_hash_table_work): Don't compute reg_set_in_block.
17536 (compute_transp): Use DF_REG_DEF_CHAINs.
17537 (local_cprop_pass): Don't use compute_sets and related functions.
17538 (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
17539 Use get_max_uid() instead of max_cuid.
17540 (insert_insn_end_basic_block, pre_insert_copy_insn,
17541 update_ld_motion_stores): Don't try to
17542 keep reg_set tables up to date.
17543 (pre_insert_copies): Use df insn LUIDs.
17544 (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
17545 (reg_set_info): Don't use extra bitmap argument.
17546 (compute_store_table): Don't compute reg_set_in_block. Use DF scan
17547 information to compute regs_set_in_block.
17548 (free_store_memory, store_motion): Don't nullify reg_set_in_block.
17549 (bypass_jumps): Don't use compute_sets and friends.
17551 2009-04-26 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
17554 * opts.c (undocumented_msg): Do not leave blank even with
17557 2009-04-25 Joseph Myers <joseph@codesourcery.com>
17559 * c-decl.c (build_enumerator): Allow values folding to integer
17560 constants but not integer constant expressions with a pedwarn if
17563 2009-04-25 Joseph Myers <joseph@codesourcery.com>
17566 * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
17567 with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
17568 type is an integer constant.
17570 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
17573 * config/i386/i386.c (print_operand) ['z']: Revert handling of
17576 2009-04-25 Joseph Myers <joseph@codesourcery.com>
17579 * c-decl.c (grokdeclarator): Diagnose declarations of functions
17580 with variably modified return type and no storage class
17581 specifiers, except for the case of nested functions. Distinguish
17582 extern declarations of functions with variably modified return
17583 types from those of objects with variably modified types.
17585 2009-04-25 Jan Hubicka <jh@suse.cz>
17587 * tree.c (list_equal_p): New function.
17588 * tree.h (list_equal_p): Declare.
17589 * coretypes.h (edge_def, edge, const_edge, basic_block_def
17590 basic_block_def, basic_block, const_basic_block): New.
17591 * tree-eh.c (make_eh_edge): EH edges are not abnormal.
17592 (redirect_eh_edge): New function.
17593 (make_eh_edge_update_phi): EH edges are not abnormal.
17594 * except.c: Include tree-flow.h.
17595 (list_match): New function.
17596 (eh_region_replaceable_by_p): New function.
17597 (replace_region): New function.
17598 (hash_type_list): New function.
17599 (hash_eh_region): New function.
17600 (eh_regions_equal_p): New function.
17601 (merge_peers): New function.
17602 (remove_unreachable_regions): Verify EH tree when checking;
17604 (copy_eh_region_1): New function.
17605 (copy_eh_region): New function.
17606 (push_reachable_handler): New function.
17607 (build_post_landing_pads, dw2_build_landing_pads): Be ready for
17608 regions without label but with live RESX.
17609 * except.h (redirect_eh_edge_to_label): New.
17610 * tree-flow.h (redirect_eh_edge): New.
17611 * coretypes.h (edge_def, edge, const_edge, basic_block_def
17612 basic_block_def, basic_block, const_basic_block): Remove.
17613 * Makefile.in (except.o): Add dependency on tree-flow.h
17614 * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
17615 * basic-block.h (edge, const_edge, basic_block, const_basic_block):
17618 2009-04-25 Eric Botcazou <ebotcazou@adacore.com>
17621 * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
17622 on the destination of memcpy.
17624 2009-04-25 Paolo Bonzini <bonzini@gnu.org>
17626 * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
17627 REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
17628 REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
17630 2009-04-25 Jan Hubicka <jh@suse.cz>
17632 * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
17633 (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
17634 to be reached by different label than left.
17635 (update_eh_edges): Update comment; remove edge_to_remove if possible
17636 and return true if suceeded.
17637 (cleanup_empty_eh): Accept sharing map; handle shared regions.
17638 (cleanup_eh): Compute sharing map.
17639 * except.c (remove_eh_handler_and_replace): Add argument if we should
17641 (remove_unreachable_regions): Update for label sharing.
17642 (label_to_region_map): Likewise.
17643 (get_next_region_sharing_label): New function.
17644 (remove_eh_handler_and_replace): Add update_catch_try parameter; update
17646 (remove_eh_handler): Update.
17647 (remove_eh_region_and_replace_by_outer_of): New function.
17648 * except.h (struct eh_region): Add next_region_sharing_label.
17649 (remove_eh_region_and_replace_by_outer_of,
17650 get_next_region_sharing_label): Declare.
17651 * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
17653 2009-04-25 Jan Hubicka <jh@suse.cz>
17655 * tree-cfg.c (split_critical_edges): Split also edges where we can't
17656 insert code even if they are not critical.
17658 2009-04-25 Jan Hubicka <jh@suse.cz>
17660 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17661 (gimple_can_remove_branch_p): EH edges won't remove branch by
17663 * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
17664 updating of non-abnormal EH edges.
17665 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
17666 (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
17667 (split_critical_edges): Split also edges where emitting code on them
17668 will lead to splitting later.
17670 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
17671 H.J. Lu <hongjiu.lu@intel.com>
17674 * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
17675 the configured assembler supports fildq and fistpq mnemonics.
17676 (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
17677 * configure: Regenerated.
17678 * config.in: Ditto.
17680 * config/i386/i386.c (print_operand): Handle 'Z'.
17681 ['z']: Remove handling of special fild/fist suffixes.
17682 (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
17683 * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
17684 suffix of fild insn.
17685 (*floatsi<mode>2_vector_mixed): Ditto.
17686 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
17687 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
17688 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
17689 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
17690 * config/i386/gas.h (GAS_MNEMONICS): Remove.
17692 2009-04-25 Ben Elliston <bje@au.ibm.com>
17694 * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
17695 the source of a set operation.
17697 2009-04-25 Anatoly Sokolov <aesok@post.ru>
17699 * target.h (struct gcc_target): Add case_values_threshold field.
17700 * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
17701 (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
17702 * targhooks.c (default_case_values_threshold): New function.
17703 * targhooks.h (default_case_values_threshold): Declare function.
17704 * stmt.c (expand_case): Use case_values_threshold target hook.
17705 * expr.h (case_values_threshold): Remove declartation.
17706 * expr.c (case_values_threshold): Remove function.
17707 * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
17709 * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
17710 * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17711 (avr_case_values_threshold): Declare as static.
17712 * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
17714 * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
17715 * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
17716 (mn10300_case_values_threshold): New function.
17718 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
17720 * ira.c (setup_cover_and_important_classes): Add enum cast.
17722 2009-04-24 Vladimir Makarov <vmakarov@redhat.com>
17724 * genpreds.c (write_enum_constraint_num): Output definition of
17725 CONSTRAINT_NUM_DEFINED_P macro.
17726 * ira.c (setup_cover_and_important_classes): Use
17727 CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
17729 2009-04-24 DJ Delorie <dj@redhat.com>
17731 * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
17732 __SH2A_SINGLE_ONLY__ also.
17734 2009-04-24 Steve Ellcey <sje@cup.hp.com>
17736 * config/ia64/ia64.md (movfs_internal): Allow flt constants.
17737 (movdf_internal): Ditto.
17738 * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
17739 SFmode and DFmode constants.
17740 (ia64_print_operand): Add 'G' format for printing
17741 floating point constants.
17743 2009-04-24 Richard Guenther <rguenther@suse.de>
17745 * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
17746 from unsigned additions.
17748 2009-04-24 Joseph Myers <joseph@codesourcery.com>
17750 * c-typeck.c (set_init_index): Allow array designators that are
17751 not integer constant expressions with a pedwarn if pedantic.
17753 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
17755 * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
17756 zero if no overlap in nonzero bits between the operands.
17758 2009-04-24 Ian Lance Taylor <iant@google.com>
17760 * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
17761 (record_dead_and_set_regs): Likewise.
17762 * df.h (struct df_mw_hardreg): Change flags field to int.
17763 (struct df_base_ref): Likewise.
17764 (struct df): Change changeable_flags field to int.
17765 * df-scan.c (df_defs_record): Change clobber_flags to int.
17766 * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
17767 constants rather than #define macros.
17768 (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
17769 (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
17770 (enum dwarf_calling_convention): Likewise.
17771 (enum dwarf_line_number_x_ops): Likewise.
17772 (enum dwarf_call_frame_info): Likewise.
17773 (enum dwarf_source_language): Likewise.
17774 * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
17775 (add_calling_convention_attribute): Likewise.
17776 * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
17777 (combine_comparisons): Change compcode to int. Add cast to enum type.
17778 * genrecog.c (maybe_both_true_2): Change c to int.
17779 (write_switch): Likewise. Add cast to enum type.
17780 * gimplify.c (gimplify_omp_for): Handle return values from
17781 gimplify_expr using MIN rather than bitwise or.
17782 (gimplify_expr): Add cast to enum type.
17783 * ipa-prop.c (update_jump_functions_after_inlining): Change
17784 IPA_BOTTOM to IPA_JF_UNKNOWN.
17785 * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
17786 Add casts to enum type.
17787 (setup_cover_and_important_classes): Change cl to int. Add casts
17789 (setup_class_translate): Change cl and mode to int.
17790 (ira_init_once): Change mode to int.
17791 (free_register_move_costs): Likewise.
17792 (setup_prohibited_mode_move_regs): Add casts to enum type.
17793 * langhooks.c (add_builtin_function_common): Rework assertion that
17794 value fits bitfield.
17795 * mcf.c (add_fixup_edge): Change type parameter to edge_type.
17796 * omega.c (omega_do_elimination): Avoid math on enum types.
17797 * optabs.c (expand_vec_shift_expr): Remove casts to int.
17798 * opts.c (set_debug_level): Change 2 to enum constant. Use new
17799 int local to handle integral_argment value.
17800 * regmove.c (try_auto_increment): Change PUT_MODE to
17802 * reload.c (push_secondary_reload): Add casts to enum type.
17803 (secondary_reload_class, find_valid_class): Likewise.
17804 * reload1.c (emit_input_reload_insns): Likewise.
17805 * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
17806 * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
17807 * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
17809 * tree.c (build_common_builtin_nodes): Add casts to enum type.
17810 * tree-complex.c (complex_lattice_t): Typedef to int rather than
17812 (expand_complex_libcall): Add casts to enum type.
17813 * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
17814 * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
17815 with ERROR_MARK, not NUM_TREE_CODES.
17816 (vect_create_epilog_for_reduction): Likewise.
17817 (vectorizable_reduction): Don't initialize epiloc_reduc_code.
17818 When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
17819 * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
17821 * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
17822 vect_unused_in_loop. Change 0 to loop_vect.
17823 * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
17824 * var-tracking.c (get_init_value): Change return type to enum
17826 * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
17827 * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
17829 (arm_override_options): Add casts to enum type.
17830 (arm_emit_tls_decoration): Likewise.
17831 * config/i386/i386.c (ix86_function_specific_restore): Add casts
17833 * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
17834 * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
17835 * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
17837 * config/s390/s390.c (code_for_builtin_64): Change to array of
17839 (code_for_builtin_31): Likewise.
17840 (s390_expand_builtin): Change code_for_builtin to enum insn_code
17842 * config/sparc/sparc.c (sparc_override_options): Change value
17843 field in struct code_model to enum cmodel. In initializer change
17844 0 to NULL and add cast to enum type.
17846 * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
17847 Change all callers. Issue a -Wc++-compat warning using
17848 lhs_origtype if necessary.
17849 (convert_for_assignment): Issue -Wc++-compat warnings about
17850 invalid conversions to enum type on assignment.
17851 * c-common.h (build_modify_expr): Update declaration.
17853 2009-04-24 Nick Clifton <nickc@redhat.com>
17855 * config/iq2000/iq2000.c (function_arg): Handle TImode values.
17856 (function_arg_advance): Likewise.
17857 * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
17860 2009-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
17862 * config/s390/constraints.md ('I', 'J'): Fix condition.
17864 2009-04-24 Diego Novillo <dnovillo@google.com>
17866 * gengtype-parse.c (parse_error): Add newline after message.
17868 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
17870 * config/i386/sse.md (avxmodesuffixs): Removed.
17871 (*avx_pinsr<avxmodesuffixs>): Renamed to ...
17872 (*avx_pinsr<ssevecsize>): This.
17874 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
17876 * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
17877 follow chains of regs with a single definition, and allow expressions
17878 that are function_invariant_p.
17879 (simple_rhs_p): Allow expressions that are function_invariant_p.
17881 2009-04-24 Paolo Bonzini <bonzini@gnu.org>
17883 PR middle-end/39867
17884 * fold-const.c (fold_cond_expr_with_comparison): When folding
17885 > and >= to MAX, make sure the MAX uses the same type as the
17886 comparison's operands.
17888 2009-04-24 Nick Clifton <nickc@redhat.com>
17890 * config/frv/frv.c (frv_frame_access): Do not use reg+reg
17891 addressing for DImode accesses.
17892 (frv_print_operand_address): Handle PLUS case.
17893 * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
17895 2009-04-24 Jakub Jelinek <jakub@redhat.com>
17897 PR rtl-optimization/39794
17898 * alias.c (canon_true_dependence): Add x_addr argument.
17899 * rtl.h (canon_true_dependence): Adjust prototype.
17900 * cse.c (check_dependence): Adjust canon_true_dependence callers.
17901 * cselib.c (cselib_invalidate_mem): Likewise.
17902 * gcse.c (compute_transp): Likewise.
17903 * dse.c (scan_reads_nospill): Likewise.
17904 (record_store, check_mem_read_rtx): Likewise. For non-const-or-frame
17905 addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
17906 canon_base_addr of the group, plus optional offset.
17907 (struct group_info): Rename canon_base_mem to
17909 (get_group_info): Set canon_base_addr to canon_rtx of base, not
17910 canon_rtx of base_mem.
17912 2009-04-23 Paolo Bonzini <bonzini@gnu.org>
17914 * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
17915 Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
17917 2009-04-23 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
17919 * config/spu/spu-builtins.h: Delete file.
17921 * config/spu/spu.h (enum spu_builtin_type): Move here from
17923 (struct spu_builtin_description): Likewise. Add GTY marker.
17924 Do not use enum spu_function_code or enum insn_code.
17925 (spu_builtins): Add extern declaration.
17927 * config/spu/spu.c: Do not include "spu-builtins.h".
17928 (enum spu_function_code, enum spu_builtin_type_index,
17929 V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
17930 V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
17931 unsigned_V8HI_type_node, unsigned_V4SI_type_node,
17932 unsigned_V2DI_type_node): Move here from spu-builtins.h.
17933 (spu_builtin_types): Make static. Add GTY marker.
17934 (spu_builtins): Add extern declaration with GTY marker.
17935 Include "gt-spu.h".
17937 * config/spu/spu-c.c: Do not include "spu-builtins.h".
17938 (spu_resolve_overloaded_builtin): Do not use spu_function_code.
17939 Check programmatically whether all parameters are scalar.
17941 * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
17943 2009-04-23 Eric Botcazou <ebotcazou@adacore.com>
17945 * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
17946 assignment from the constructor either if the target is volatile.
17948 2009-04-23 Daniel Jacobowitz <dan@codesourcery.com>
17950 * config/arm/arm.md (insv): Do not share operands[0].
17952 2009-04-23 Nathan Sidwell <nathan@codesourcery.com>
17954 * config/vxlib-tls.c (active_tls_threads): Delete.
17955 (delete_hook_installed): New.
17956 (tls_delete_hook): Don't delete the delete hook.
17957 (tls_destructor): Delete it here.
17958 (__gthread_set_specific): Adjust installing the delete hook.
17959 (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
17960 __gthread_leave_tsd_dtor_context.
17962 2009-04-23 Rafael Avila de Espindola <espindola@google.com>
17964 * c-format.c (gcc_tdiag_char_table): Add support for %E.
17966 2009-04-23 Uros Bizjak <ubizjak@gmail.com>
17968 * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
17970 (alpha_rtx_costs): Ditto.
17971 (emit_unlikely_jump): Use add_reg_note.
17972 (emit_frame_store_1): Ditto.
17973 (alpha_expand_prologue): Ditto.
17974 (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
17975 * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
17977 2009-04-23 Nick Clifton <nickc@redhat.com>
17979 * config/v850/v850.md (epilogue): Remove suppressed code.
17980 (return): Rename to return_simple and remove test of frame size.
17981 * config/v850/v850.c (expand_epilogue): Rename call to gen_return
17982 to gen_return_simple.
17984 2009-04-22 Jing Yu <jingyu@google.com>
17987 * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
17989 2009-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
17992 * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
17993 and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the
17994 value is a VECTOR_CST, the element type is the element type of the
17997 2009-04-22 DJ Delorie <dj@redhat.com>
17999 * config/m32c/m32c.h: Update GTY annotations to new syntax.
18001 2009-04-22 Jakub Jelinek <jakub@redhat.com>
18003 * alias.c (find_base_term): Move around LO_SUM case, so that
18004 CONST falls through into PLUS/MINUS handling.
18007 * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
18008 into 0, use omit_one_operand.
18010 2009-04-23 Ben Elliston <bje@au.ibm.com>
18012 * config/rs6000/linux-unwind.h (get_regs): Remove type
18013 puns. Change the type of `pc' to an array of unsigned ints and
18014 update all users. Constify frame24.
18016 2009-04-22 DJ Delorie <dj@redhat.com>
18018 * config/m32c/m32c.c (m32c_special_page_vector_p): Move
18019 declarations before code.
18020 (current_function_special_page_vector): Likewise.
18021 (m32c_expand_insv): Silence a warning.
18023 2009-04-21 Taras Glek <tglek@mozilla.com>
18025 * alias.c: Update GTY annotations to new syntax.
18026 * basic-block.h: Likewise.
18027 * bitmap.h: Likewise.
18028 * c-common.h: Likewise.
18029 * c-decl.c: Likewise.
18030 * c-parser.c: Likewise.
18031 * c-pragma.c: Likewise.
18032 * c-tree.h: Likewise.
18033 * cfgloop.h: Likewise.
18034 * cgraph.h: Likewise.
18035 * config/alpha/alpha.c: Likewise.
18036 * config/arm/arm.h: Likewise.
18037 * config/avr/avr.h: Likewise.
18038 * config/bfin/bfin.c: Likewise.
18039 * config/cris/cris.c: Likewise.
18040 * config/darwin.c: Likewise.
18041 * config/frv/frv.c: Likewise.
18042 * config/i386/i386.c: Likewise.
18043 * config/i386/i386.h: Likewise.
18044 * config/i386/winnt.c: Likewise.
18045 * config/ia64/ia64.h: Likewise.
18046 * config/iq2000/iq2000.c: Likewise.
18047 * config/mips/mips.c: Likewise.
18048 * config/mmix/mmix.h: Likewise.
18049 * config/pa/pa.c: Likewise.
18050 * config/pa/pa.h: Likewise.
18051 * config/rs6000/rs6000.c: Likewise.
18052 * config/s390/s390.c: Likewise.
18053 * config/sparc/sparc.c: Likewise.
18054 * config/xtensa/xtensa.c: Likewise.
18055 * cselib.h: Likewise.
18056 * dbxout.c: Likewise.
18057 * dwarf2out.c: Likewise.
18058 * except.c: Likewise.
18059 * except.h: Likewise.
18060 * fixed-value.h: Likewise.
18061 * function.c: Likewise.
18062 * function.h: Likewise.
18063 * gimple.h: Likewise.
18064 * integrate.c: Likewise.
18065 * optabs.c: Likewise.
18066 * output.h: Likewise.
18067 * real.h: Likewise.
18069 * stringpool.c: Likewise.
18070 * tree-data-ref.c: Likewise.
18071 * tree-flow.h: Likewise.
18072 * tree-scalar-evolution.c: Likewise.
18073 * tree-ssa-address.c: Likewise.
18074 * tree-ssa-alias.h: Likewise.
18075 * tree-ssa-operands.h: Likewise.
18076 * tree.c: Likewise.
18077 * tree.h: Likewise.
18078 * varasm.c: Likewise.
18079 * varray.h: Likewise.
18081 * coretypes.h: Do not define GTY macro if it is already defined.
18082 * doc/gty.texi: Update GTY documentation to new syntax.
18083 * gengtype-lex.l: Enforce attribute-like syntax for GTY
18084 annotations on structs.
18085 * gengtype-parse.c: Likewise.
18087 2009-04-22 Mark Heffernan <meheff@google.com>
18089 * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
18091 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
18093 * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
18096 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
18098 * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
18099 the same as a PLUS without a shift. Increase the cost of a
18102 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18104 * Makefile.in: Update dependencies.
18105 * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
18106 * errors.h: Remove bogus comment about compatibility.
18107 (warning): Update declaration.
18108 * genautomata.c: Update all calls to warning.
18109 * gimple.c: Do not include errors.h. Include toplev.h.
18110 * tree-ssa-structalias.c: Do not include errors.h.
18111 * omega.c: Likewise.
18112 * tree-ssa-reassoc.c: Likewise.
18113 * config/spu/spu-c.c: Likewise.
18114 * config/spu/t-spu-elf: Update dependencies.
18116 2009-04-22 Richard Guenther <rguenther@suse.de>
18118 PR tree-optimization/39824
18119 * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
18120 make sure the types are compatible.
18122 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18125 * c-common.c (c_parse_error): Take a token_flags parameter.
18126 Use token_type for the token type instead.
18127 Pass token_flags to cpp_type2name.
18128 * c-common.h (c_parse_error): Update declaration.
18129 * c-parser.c (c_parser_error): Pass 0 as token flags.
18131 2009-04-22 Andrey Belevantsev <abel@ispras.ru>
18133 PR rtl-optimization/39580
18134 * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
18136 2009-04-22 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
18138 * function.c (expand_function_end): Do not emit a jump to the "naked"
18139 return label for fall-through returns.
18140 * except.c (sjlj_emit_function_exit): Always place the call to the
18141 unregister function at the location installed by expand_function_end.
18143 2009-04-22 Richard Guenther <rguenther@suse.de>
18145 PR tree-optimization/39845
18146 * tree-switch-conversion.c (build_arrays): Add new referenced vars.
18147 (gen_inbound_check): Likewise.
18149 2009-04-22 Nathan Sidwell <nathan@codesourcery.com>
18151 * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
18153 (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
18154 * config/vxlib.c (__gthread_once): Add race guard for PPC.
18156 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
18158 * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
18159 sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
18160 shift counts to avoid out-of-bounds array accesses.
18162 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
18164 * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
18165 (Pmode): Move above.
18167 2009-04-22 Uros Bizjak <ubizjak@gmail.com>
18169 * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
18170 NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
18171 GET_CODE macro. Use IN_RANGE macro where appropriate.
18172 * config/alpha/alpha.h: Ditto.
18173 * config/alpha/alpha.md: Ditto.
18174 * config/alpha/constraints.md: Ditto.
18175 * config/alpha/predicates.md: Ditto.
18177 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
18179 * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
18180 * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18181 * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18182 * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18183 * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18184 * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18185 * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18186 * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18187 * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18188 * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18189 * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18190 * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18191 * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18192 * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18193 * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18194 * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18195 * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18196 * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18197 * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18198 * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18199 * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18200 * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18201 * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18202 * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18203 * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18204 * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18205 * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
18207 2009-04-22 Laurynas Biveinis <laurynas.biveinis@gmail.com>
18209 * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
18210 references from comments.
18211 * cfgbuild.c: (count_basic_blocks): Delete.
18212 (find_basic_blocks_1): Delete.
18213 (find_basic_blocks): Delete.
18214 * except.c (finish_eh_generation): Make static. Move comment from
18215 except.h here. Remove find_basic_blocks references from comments.
18216 * except.h (finish_eh_generation): Delete.
18217 * basic-block.h (find_basic_blocks): Delete.
18218 * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
18220 2009-04-22 Dave Korn <dave.korn.cygwin@gmail.com>
18222 * sdbout.c (sdbout_symbol): Pass VOIDmode to eliminate_regs.
18223 (sdbout_parms): Likewise.
18225 2009-04-21 Kaz Kojima <kkojima@gcc.gnu.org>
18227 * config/sh/sh.c (prepare_cbranch_operands): Use
18228 LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
18229 (expand_cbranchdi4): Likewise.
18230 (from_compare): Add cast to enum type.
18231 (expand_cbranchsi4): Use add_reg_note.
18232 (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
18233 (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
18234 (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
18235 (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18236 * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
18237 instead of CODE_FOR_nothing.
18238 (cbranchdi4): Likewise. Fix the order of arguments for
18240 (push_fpscr): Use add_reg_note.
18241 (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
18242 reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
18244 2009-04-21 Joseph Myers <joseph@codesourcery.com>
18246 * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
18247 ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18248 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18249 ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
18250 ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
18251 FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
18252 config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
18253 config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
18254 config/alpha/x-vms, config/arc/t-arc,
18255 config/arm/README-interworking, config/arm/arm-c.c,
18256 config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
18257 config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
18258 config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
18259 config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
18260 config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
18261 config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
18262 config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
18263 config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
18264 config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
18265 config/cris/t-elfmulti, config/crx/t-crx,
18266 config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
18267 config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
18268 config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
18269 config/h8300/t-h8300, config/i386/athlon.md,
18270 config/i386/darwin-libgcc.10.4.ver,
18271 config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
18272 config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
18273 config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
18274 config/i386/t-linux64, config/i386/t-nwld,
18275 config/i386/t-rtems-i386, config/i386/t-sol2-10,
18276 config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
18277 config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
18278 config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
18279 config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
18280 config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
18281 config/iq2000/t-iq2000, config/libgcc-glibc.ver,
18282 config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
18283 config/m32r/t-m32r, config/m68hc11/t-m68hc11,
18284 config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
18285 config/m68k/t-uclinux, config/mcore/t-mcore,
18286 config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
18287 config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
18288 config/mips/crtn.asm, config/mips/irix-crti.asm,
18289 config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
18290 config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
18291 config/mips/mips-fixed.md, config/mips/sb1.md,
18292 config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
18293 config/mips/t-iris6, config/mips/t-isa3264,
18294 config/mips/t-libgcc-mips16, config/mips/t-linux64,
18295 config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
18296 config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
18297 config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
18298 config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
18299 config/mn10300/t-linux, config/mn10300/t-mn10300,
18300 config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
18301 config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
18302 config/picochip/libgccExtras/clzsi2.asm,
18303 config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
18304 config/rs6000/darwin-libgcc.10.4.ver,
18305 config/rs6000/darwin-libgcc.10.5.ver,
18306 config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
18307 config/rs6000/t-aix43, config/rs6000/t-aix52,
18308 config/rs6000/t-darwin, config/rs6000/t-fprules,
18309 config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
18310 config/rs6000/t-lynx, config/rs6000/t-netbsd,
18311 config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
18312 config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
18313 config/rs6000/t-rtems, config/rs6000/t-spe,
18314 config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
18315 config/score/t-score-elf, config/sh/divcost-analysis,
18316 config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
18317 config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
18318 config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
18319 config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
18320 config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
18321 config/stormy16/stormy-abi, config/stormy16/t-stormy16,
18322 config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
18323 config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
18324 config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
18325 config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
18326 config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
18327 gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
18328 java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
18329 limitx.h, version.c, xcoff.h: Add copyright and license notices.
18330 * config/h8300/genmova.sh: Include copyright and license notices
18331 in generated output.
18332 * config/h8300/mova.md: Regenerate.
18333 * doc/install.texi2html: Include word "Copyright" in copyright
18334 notice and use name "Free Software Foundation, Inc.".
18335 * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
18336 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
18337 ChangeLog-2007, ChangeLog-2008: Correct dates.
18339 2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
18341 * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
18342 NE_EXPR operations as well.
18343 * c-parser.c (c_parser_condition): Do not set location information on
18345 (c_parser_conditional_expression): Likewise.
18346 (c_parser_binary_expression): Set location information on operators.
18347 * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
18348 TRUTH_NOT_EXPR has been folded.
18349 * fold-const.c (fold_truth_not_expr): Copy location information from
18350 the incoming expression to the outgoing one.
18351 * gimplify.c (shortcut_cond_r): Add locus parameter. Pass it to
18352 recursive calls on the LHS of the operator but pass that of the
18353 operator to recursive calls on the RHS of the operator. Set it
18355 (shortcut_cond_expr): Set the locus of the operator on the second
18356 COND_EXPR and that of the expression on the first in degenerate cases.
18357 Pass the locus of the expression to calls to shortcut_cond_r.
18358 Set the locus of the 'then' block on the associated jump, if any.
18359 (gimplify_boolean_expr): Add locus parameter. Set it on the COND_EXPR.
18360 (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
18361 expression to call to gimplify_boolean_expr.
18363 2009-04-21 Kai Tietz <kai.tietz@onevision.com>
18365 * config.gcc: Add additional configuration for
18366 i686-w64-mingw* and x86_64-w64-mingw* triplet.
18367 * config/i386/mingw-w64.h: New mingw-w64 specific header.
18368 (CPP_SPEC): Redefine for allowing -municode option.
18369 (STARTFILE_SPEC): Likewise.
18370 * config/i386/t-mingw-w64: New.
18371 * config/i386/mingw-w64.opt: New.
18372 (municode): Add new target option.
18373 * doc/invoke.texi (municode): Add documentation for new option.
18375 2009-04-21 Ian Lance Taylor <iant@google.com>
18377 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18378 Correct test for number of arguments.
18379 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
18381 2009-04-21 Andreas Schwab <schwab@linux-m68k.org>
18383 * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
18384 argument of emit_library_call.
18386 2009-04-21 Richard Guenther <rguenther@suse.de>
18388 PR middle-end/39829
18389 * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
18390 inside VIEW_CONVERT_EXPRs.
18392 2009-04-21 Martin Jambor <mjambor@suse.cz>
18394 * tree-switch-conversion.c (build_constructors): Split a long line.
18395 (constructor_contains_same_values_p): New function.
18396 (build_one_array): Create assigns of constants if possible, do not
18397 call mark_sym_for_renaming, call update_stmt.
18398 (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
18399 make_rename_temp. Do not call mark_symbols_for_renaming, call
18401 (gen_def_assigns): Do not call mark_symbols_for_renaming or
18402 find_new_referenced_vars, call update_stmt.
18403 (gen_inbound_check): Use create_tmp_var and create ssa names manually
18404 instead of calling make_rename_temp. Do not call
18405 find_new_referenced_vars or mark_symbols_for_renaming, call
18408 2009-04-21 Richard Guenther <rguenther@suse.de>
18410 PR tree-optimization/39827
18411 * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
18412 (tree_ssa_phiprop): Pass the correct array size.
18414 2009-04-21 Uros Bizjak <ubizjak@gmail.com>
18416 * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
18418 2009-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
18421 * c-typeck.c (lvalue_p): Move declaration ...
18422 * c-common.h (lvalue_p): ... to here.
18423 * c-common.c (candidate_equal_p): New.
18424 (add_tlist): Use it.
18425 (merge_tlist): Use it.
18426 (warn_for_collisions_1): Likewise.
18427 (warning_candidate_p): Accept more candidates.
18428 (verify_tree): A warning candidate can be an expression. Use
18431 2009-04-21 Ben Elliston <bje@au.ibm.com>
18434 * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
18435 for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
18436 options. Remove -mcall-solaris documentation.
18438 2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
18441 * doc/invoke.texi (-Wlong-long): Update description.
18442 * c-lex (interpret_integer): Only warn if there was no previous
18443 overflow and -Wlong-long is enabled.
18444 * c-decl.c (declspecs_add_type): Drop redundant flags.
18445 * c.opt (Wlong-long): Init to -1.
18446 * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
18447 and front-end warn_long_long. Wlong-long only depends on other
18448 flags if it is uninitialized.
18449 * c-parser.c (disable_extension_diagnostics): warn_long_long is
18450 the same for CPP and FE.
18451 (restore_extension_diagnostics): Likewise.
18453 2009-04-20 Ian Lance Taylor <iant@google.com>
18455 Fix enum conversions which are invalid in C++:
18456 * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
18457 * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
18458 * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
18459 * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
18460 * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
18461 (dbxout_parms): Likewise.
18462 * df-core.c (df_set_flags): Change changeable_flags parameter to int.
18463 (df_clear_flags): Likewise.
18464 * df-problems.c (df_rd_bb_local_compute_process_def): Change
18465 top_flag parameter to int.
18466 (df_chain_create_bb_process_use): Likewise.
18467 (df_chain_add_problem): Change chain_flags parameter to unsigned int.
18469 * df-scan.c (df_ref_create): Change ref_flags parameter to int.
18470 (df_ref_create_structure, df_def_record_1): Likewise.
18471 (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
18472 (df_notes_rescan): Change 0 to VOIDmode in function call.
18473 (df_get_call_refs, df_insn_refs_collect): Likewise.
18474 (df_bb_regs_collect): Likewise.
18475 (df_entry_block_defs_collect): Likewise.
18476 (df_exit_block_uses_collect): Likewise.
18477 * df.h: Update declarations.
18478 * double-int.c (double_int_divmod): Add cast to enum type.
18479 * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
18480 * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
18481 (based_loc_descr): Likewise.
18482 (loc_descriptor_from_tree_1): Change first_op and second_op to
18483 enum dwarf_location_atom. Add cast to enum type.
18484 * expmed.c (init_expmed): Change 0 to SET in function call.
18485 * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
18486 (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
18487 (do_store_flag): Likewise.
18488 * fixed-value.h (struct fixed_value): Change mode to enum
18490 * function.c (assign_parms): Change 0 to VOIDmode in function call.
18491 * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
18493 (insert_insn_decl, insert_decl, insert_state): Likewise.
18494 (automata_list_finish): Likewise.
18495 * genrecog.c (process_define_predicate): Add cast to enum type.
18496 * gensupport.c (init_predicate_table): Add cast to enum type.
18497 * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
18499 (gimple_build_call_1, gimple_build_label): Likewise.
18500 (gimple_build_goto, gimple_build_asm_1): Likewise.
18501 (gimple_build_switch_1, gimple_build_cdt): Likewise.
18502 * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
18503 (enum fallback): Rename from enum fallback_t.
18504 (fallback_t): Typedef as int.
18505 * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
18506 GSI_SAME_STMT in function call.
18507 * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
18509 (setup_reg_class_relations): Likewise.
18510 (setup_reg_class_nregs): Change cl to int. Add casts to enum type.
18511 (setup_prohibited_class_mode_regs): Add cast to enum type.
18512 (setup_prohibited_mode_move_regs): Likewise.
18513 * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
18514 (record_address_regs): Change i to enum reg_class.
18515 * lists.c (alloc_EXPR_LIST): Add cast to enum type.
18516 * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
18517 (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
18518 (GET_MODE_2XWIDER_MODE): Likewise.
18519 (GET_CLASS_NARROWEST_MODE): Likewise.
18520 * omp-low.c (expand_omp_for): Add cast to enum type.
18521 * optabs.c (debug_optab_libfuncs): Add casts to enum type.
18522 * opts.c (enable_warning_as_error): Change kind to diagostic_t.
18523 * postreload.c (reload_cse_simplify_operands): Change rclass local
18525 * predict.c (combine_predictions_for_insn): Change best_predictor
18526 and predictor to enum br_predictor.
18527 (combine_predictions_for_bb): Likewise.
18528 (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
18529 use SET_PREDICT_EXPR_OUTCOME.
18530 * real.c (real_arithmetic): Change icode to code in function call.
18531 * reginfo.c (init_move_cost): Add casts to enum type.
18532 (init_reg_sets_1, init_fake_stack_mems): Likewise.
18533 * regmove.c (regclass_compatible_p): Change class0 and class1 to
18535 * reload.c (find_valid_class): Add casts to enum type.
18536 (push_reload): Change 0 to NO_REGS in function call.
18537 (find_reloads): Change this_alternative to array of enum
18538 reg_class. Remove some now-unnecessary casts.
18539 (make_memloc): Change 0 to VOIDmode in function call.
18540 * reload1.c (reload): Change 0 to VOIDmode in function call.
18541 (eliminate_regs_1, elimination_effects): Likewise.
18542 (eliminate_regs_in_insn): Likewise.
18543 (emit_input_reload_insns): Add cast to enum type.
18544 (delete_output_reload): Change 0 to VOIDmode in function call.
18545 * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
18546 to enum type in function call.
18547 * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
18548 (SET_PREDICT_EXPR_OUTCOME): Define.
18549 * tree-dump.c (get_dump_file_info): Change phase parameter to int.
18550 (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
18551 (dump_initialized_p, dump_flag_name, dump_end): Likewise.
18552 (dump_function): Likewise.
18553 * tree-dump.h: Update declarations.
18554 * tree-pass.h: Update declarations.
18555 * varasm.c (assemble_integer): Change mclass to enum mode_class.
18556 * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
18558 (arm_rtx_costs_1): Correct parenthesization.
18559 (arm_rtx_costs): Add casts to enum type.
18560 (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
18561 (vfp_emit_fstmd): Use add_rg_note.
18562 (emit_multi_reg_push, emit_sfm): Likewise.
18563 (thumb_set_frame_pointer): Likewise.
18564 (arm_expand_prologue): Likewise.
18565 (arm_regno_class): Change return type to enum reg_class.
18566 (thumb1_expand_prologue): Use add_reg_note.
18567 * config/arm/arm-protos.h (arm_regno_class): Update declaration.
18568 * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
18570 * config/arm/gentune.sh: Add cast to enum type.
18571 * config/arm/arm-tune.md: Rebuild.
18572 * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
18573 (ix86_split_fp_branch, predict_jump): Likewise.
18574 (ix86_expand_multi_arg_builtin): Change sub_code from enum
18575 insn_code to enum rtx_code.
18576 (ix86_builtin_vectorized_function): Add cast to enum type.
18577 * config/i386/i386.md (truncdfsf2): Change slot to enum
18579 (truncxf<mode>2, isinf<mode>2): Likewise.
18580 * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
18582 * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
18583 (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
18584 (insert_bundle_state): Change 1 to INSERT in function call.
18585 (ia64_add_bundle_selector_before): Likewise.
18586 * config/ia64/ia64.md (cpu attr): Add cast to enum type.
18587 (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
18588 (restore_stack_nonlocal): Likewise.
18589 * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
18591 * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
18593 (mips_rtx_costs): Likewise.
18594 (mips_override_options): Add casts to enum type.
18595 * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
18597 * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
18598 (store_reg, set_reg_plus_d): Likewise.
18599 (hppa_expand_prologue, hppa_profile_hook): Likewise.
18600 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
18602 (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
18604 (emit_unlikely_jump): Use add_reg_note.
18605 (rs6000_emit_allocate_stack): Likewise.
18606 (rs6000_frame_related, rs6000_emit_prologue): Likewise.
18607 (output_toc): Change 1 to INSERT in function call.
18608 (output_profile_hook): Change 0 to LCT_NORMAL in function call.
18609 (rs6000_initialize_trampoline): Likewise.
18610 (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
18612 * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
18613 (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
18614 (s390_expand_setmem, s390_expand_cmpmem): Likewise.
18615 (save_gprs): Use add_reg_note.
18616 (s390_emit_prologue): Likewise.
18617 (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
18618 * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
18619 (sparc_fold_builtin): Add cast to enum type.
18620 * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
18622 (spu_expand_prologue): Use add_reg_note.
18623 (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
18625 2009-04-20 Ian Lance Taylor <iant@google.com>
18627 * c-parser.c (c_parser_attributes): Change VEC back to tree list.
18628 (c_parser_postfix_expression_after_primary): Get VEC for list of
18629 arguments. Get original types of arguments. Call
18630 build_function_call_vec.
18631 (cached_expr_list_1, cached_expr_list_2): New static variables.
18632 (c_parser_expr_list): Change return type to VEC *. Add
18633 p_orig_types parameter. Change all callers.
18634 (c_parser_release_expr): New static function.
18635 (c_parser_vec_to_tree_list): New static function.
18636 * c-typeck.c (build_function_call): Rewrite to build a VEC and
18637 call build_function_call_vec.
18638 (build_function_call_vec): New function, based on old
18639 build_function_call.
18640 (convert_arguments): Remove nargs and argarray parameters. Change
18641 values to a VEC. Add origtypes parameter.
18642 (build_modify_expr): Add rhs_origtype parameter. Change all callers.
18643 (convert_for_assignment): Add origtype parameter. Change all
18644 callers. If warn_cxx_compat, check for conversion to an enum
18645 type when calling a function.
18646 (store_init_value): Add origtype parameter. Change all callers.
18647 (digest_init): Likewise.
18648 (struct init_node): Add origtype field.
18649 (add_pending_init): Add origtype parameter. Change all callers.
18650 (output_init_element): Likewise.
18651 (output_pending_init_elements): Pass origtype from init_node to
18652 output_init_element.
18653 (process_init_element): Pass origtype from c_expr to
18654 output_init_element.
18655 (c_finish_return): Add origtype parameter. Change all callers.
18656 * c-common.c (sync_resolve_size): Change params to VEC *. Change
18658 (sync_resolve_params): Likewise.
18659 (sync_resolve_return): Change params to first_param. Change caller.
18660 (resolve_overloaded_builtins): Change params to VEC *. Change
18661 callers. Save first parameter around call to build_function_call_vec.
18662 * c-decl.c (finish_decl): Add origtype parameter. Change all
18663 callers. Call build_function_call_vec rather than
18664 build_function_call for cleanup.
18665 * c-tree.h: Update declarations.
18666 * c-common.h: Update declarations.
18667 * stub-objc.c (objc_rewrite_function_call): Change parameter from
18668 params to first_param.
18669 * target.h (struct gcc_target): Change resolve_overloaded_builtin
18670 params parameter from tree to void *.
18671 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18672 Change arglist parameter to have type void *, and to be a pointer
18674 * config/rs6000/rs6000-protos.h
18675 (altivec_resolve_overloaded_builtin): Update declaration.
18676 * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
18677 fnargs parameter to have type void *, and to be a pointer to a
18678 VEC. Call build_function_call_vec instead of
18679 build_function_call.
18680 * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
18682 2009-04-20 Joey Ye <joey.ye@intel.com>
18683 Xuepeng Guo <xuepeng.guo@intel.com>
18684 H.J. Lu <hongjiu.lu@intel.com>
18686 * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
18688 * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
18689 (IX86_LEA_PRIORITY): Likewise.
18690 (distance_non_agu_define): New function.
18691 (distance_agu_use): Likewise.
18692 (ix86_lea_for_add_ok): Likewise.
18693 (ix86_dep_by_shift_count): Likewise.
18695 * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
18696 should split for LEA.
18698 * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
18700 (ix86_dep_by_shift_count): Likewise.
18702 2009-04-20 Richard Guenther <rguenther@suse.de>
18704 * expr.c (handled_component_p): Move ...
18705 * tree.h (handled_component_p): ... here.
18706 * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
18707 ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
18708 and REALPART_EXPR to be in one group.
18710 2009-04-20 Richard Guenther <rguenther@suse.de>
18712 * basic-block.h (get_all_dominated_blocks): Declare.
18713 * dominance.c (get_all_dominated_blocks): New function.
18714 * tree-cfg.c (get_all_dominated_blocks): Remove.
18715 (remove_edge_and_dominated_blocks): Adjust.
18716 * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
18717 (tree_ssa_phiprop): ... here. Use get_all_dominated_blocks
18718 instead of recursing.
18720 2009-04-20 Doug Kwan <dougkwan@google.com>
18722 * cgraph.h (cgraph_node_ptr): New type for vector functions.
18723 (struct cgraph_node_set_def): New type.
18724 (cgraph_node_set) New type. Also declare vector functions.
18725 (struct cgraph_node_set_element_def): New type.
18726 (cgraph_node_set_element): Ditto.
18727 (cgraph_node_set_iterator): New iterator type.
18728 (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
18729 cgraph_node_set_remove, dump_cgraph_node_set,
18730 debug_cgraph_node_set): New prototypes.
18731 (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
18732 cgraph_node_set_size): New inlines.
18733 * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
18734 including cgraph.h.
18735 (struct ipa_opt_pass): Add struct cgraph_node_set_def
18736 argument to function 'write_summary'.
18737 * ipa.c: Include ggc.h.
18738 (hash_cgraph_node_set_element,
18739 eq_cgraph_node_set_element, cgraph_node_set_new,
18740 cgraph_node_set_add, cgraph_node_set_remove,
18741 cgraph_node_set_find, dump_cgraph_node_set,
18742 debug_cgraph_node_set): New functions.
18743 * Makefile.in (ipa.o): Add dependency on GGC_H.
18745 2009-04-20 Ira Rosen <irar@il.ibm.com>
18747 PR tree-optimization/39675
18748 * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
18749 check of the return code of vect_schedule_slp. Check that
18750 stmt_vec_info still exists for the statement, before checking its
18751 vectorization type.
18753 2009-04-20 Michael Matz <matz@suse.de>
18755 * Makefile.in (generated_files): Take out $(simple_generated_c).
18757 2009-04-19 Dave Korn <dave.korn.cygwin@gmail.com>
18759 * config/i386/cygwin-stdint.h (INTPTR_TYPE): Remove "long".
18760 (UINTPTR_TYPE): Likewise.
18762 2009-04-19 Joseph Myers <joseph@codesourcery.com>
18765 * c-typeck.c (digest_init): Check for initializing an array with a
18768 2009-04-19 Joseph Myers <joseph@codesourcery.com>
18771 * c-semantics.c (pop_stmt_list): Propagate
18772 STATEMENT_LIST_HAS_LABEL to parent statement list.
18774 2009-04-19 Adam Nemet <anemet@caviumnetworks.com>
18776 * config/mips/mips.h (mips_tune_attr): New macro.
18777 * config/mips/mips.md (cpu): Use it.
18779 2009-04-19 Joseph Myers <joseph@codesourcery.com>
18782 * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
18785 2009-04-19 Diego Novillo <dnovillo@google.com>
18787 * toplev.c (compile_file): Move call to coverage_finish ...
18788 * cgraphunit.c (ipa_passes): ... here.
18789 Call cgraph_process_new_functions.
18790 * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
18791 * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
18793 2009-04-19 Jan Hubicka <jh@suse.cz>
18795 * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
18797 (dump_cgraph_node): Dump can throw external flag.
18798 * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
18800 2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
18804 * doc/invoke.texi: Add -Wlogical-op to -Wextra.
18805 * common.opt (Wlogical-op): Move from here...
18806 * c.opt (Wlogical-op): ... to here.
18807 * c-typeck.c (parser_build_binary_op): Update call to
18808 warn_logical_operator.
18809 * c-opts.c (c_common_post_options): Enable warn_logical_op with
18811 * c-common.c (warn_logical_op): Update.
18812 * c-common.h (warn_logical_op): Update declaration.
18814 2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
18816 * tree.c (protected_set_expr_location): Fix formatting.
18818 2009-04-18 Joseph Myers <joseph@codesourcery.com>
18821 * c-typeck.c (readonly_warning): new.
18822 (build_unary_op, build_modify_expr): Use readonly_warning for
18823 storing into something readonly but not const-qualified.
18825 2009-04-18 Joseph Myers <joseph@codesourcery.com>
18828 * c-typeck.c (build_unary_op): Check for taking address of
18829 expression of type void.
18831 2009-04-18 Joseph Myers <joseph@codesourcery.com>
18834 * c-typeck.c (build_function_call): Check for calling a function
18835 with qualified void return types. Call require_complete_type when
18838 2009-04-18 Jan Hubicka <jh@suse.cz>
18840 * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
18842 * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
18843 can_throw_external flag.
18844 * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
18845 * ipa-pure-const.c (ignore_edge): New function.
18846 (propagate): Compute order for NOTHROW computation; set NOTHROWs
18847 only over can_throw_external edges.
18848 (local_pure_const): Add nothrow flag.
18849 * ipa-utils.c (searchc): Add ignore_edge callback.
18850 (ipa_utils_reduced_inorder): Add ignore_edge callback.
18851 * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
18852 (set_nothrow_function_flags): Update cgraph.
18853 * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
18855 2009-04-18 Richard Guenther <rguenther@suse.de>
18857 PR middle-end/39804
18858 * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
18859 (fold_stmt): ... this and ...
18860 (fold_stmt_inplace): ... this.
18861 (fold_stmt_1): Fold references in calls and asms.
18862 * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
18864 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
18866 * tree-vrp.c (ssa_name_nonzero_p): Remove.
18867 * tree.h: Remove the prototype for ssa_name_nonzero_p.
18869 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
18871 * tree.c (function_args_count): Remove.
18872 * tree.h: Remove the prototype for function_args_count.
18874 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
18876 * tree-iterator.c (expr_only): Remove.
18877 * tree.h: Remove the prototype for expr_only.
18879 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
18881 * reginfo.c (cannot_change_mode_set_regs): Remove.
18882 * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
18884 2009-04-08 Anatoly Sokolov <aesok@post.ru>
18886 * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
18887 whether operands 0 and 1 overlaps.
18889 2009-04-18 Manuel López-Ibáñez <manu@gcc.gnu.org>
18891 PR middle-end/36902
18892 * tree-vrp.c (check_array_ref): Pass a location_t instead of a
18893 pointer. Use warning_at instead of warning.
18894 (search_for_addr_array): Likewise.
18895 (check_array_bounds): Likewise.
18896 (check_all_array_refs): Check that the incoming edge is not in the
18897 list of edges to be removed.
18898 (check_all_array_refs): Avoid the temporal pointer.
18899 (vrp_visit_cond_stmt): Fix typo.
18900 (simplify_switch_using_ranges): Handle the case where the switch
18901 index is an integer constant.
18903 2009-04-18 Adam Nemet <anemet@caviumnetworks.com>
18905 * config/mips/mips.c (mips_final_postscan_insn): Make it static.
18907 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
18909 * doc/extend.texi, doc/invoke.texi: Fix typos.
18911 2009-04-17 Cary Coutant <ccoutant@google.com>
18913 * tree-flow-inline.h (get_lineno): Fix inverted test.
18915 2009-04-17 Diego Novillo <dnovillo@google.com>
18917 * tree-ssa-pre.c (create_expression_by_pieces): Remove
18918 assertion for AVAIL_OUT.
18920 2009-04-17 Mike Frysinger <vapier@gentoo.org>
18923 * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
18924 * config/sh/linux-atomic.asm: Likewise.
18926 2009-04-17 Diego Novillo <dnovillo@google.com>
18928 * except.c (debug_eh_tree): New.
18929 (struct eh_region, struct eh_status): Move ...
18930 * except.h: ... here.
18931 (add_type_for_runtime): Declare extern.
18932 (lookup_type_for_runtime): Likewise.
18933 (debug_eh_tree): Declare.
18934 * Makefile.in (GTFILES): List except.h before except.c
18936 2009-04-17 Diego Novillo <dnovillo@google.com>
18938 * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
18939 * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
18940 * tree-dfa.c (find_referenced_vars_in): Factor out of ...
18941 (find_vars_r): ... here.
18942 * tree-flow.h (find_referenced_vars_in): Declare.
18943 * tree-ssa-pre.c (create_expression_by_pieces): Assert
18944 that AVAIL_OUT exists for BLOCK.
18945 * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
18946 (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
18947 (tree-parloops.o): Likewise.
18949 2009-04-17 Simon Baldwin <simonb@google.com>
18951 * toplev.c (default_tree_printer): Add handling for %E format.
18953 2009-04-17 Diego Novillo <dnovillo@google.com>
18955 * tree-pretty-print.c (dump_generic_node): Add break after
18956 TREE_BINFO handler. Handle COMPLEX_TYPE, REAL_TYPE and
18957 FIXED_POINT_TYPE. Handle NULL TREE_TYPEs. Handle METHOD_TYPE and
18958 FUNCTION_TYPE together. Call print_struct_decl when printing
18959 structures and TDF_SLIM is not given.
18960 (print_struct_decl): Fix logic for detecting recursion.
18962 2009-04-17 Rafael Avila de Espindola <espindola@google.com>
18965 * gcc.c (create_at_file): New.
18966 (compile_input_file_p): New.
18967 (do_spec_1): Use @args files for %i. Use create_at_file for %o.
18968 * main.c (main): Update call to toplev_main.
18969 * toplev.c (toplev_main): Change signature. Call expandargv.
18970 * toplev.h (toplev_main): Change signature.
18972 2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
18974 * dwarf2out.c (field_byte_offset): Use the type size as the field size
18975 if the latter is not constant.
18977 2009-04-17 David Edelsohn <edelsohn@gnu.org>
18979 * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
18981 2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
18983 * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
18984 * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
18986 2009-04-17 Richard Guenther <rguenther@suse.de>
18988 * tree-ssa-structalias.c (get_constraint_for_component_ref):
18989 Handle component references view-converting an invariant address.
18991 2009-04-17 Adam Nemet <anemet@caviumnetworks.com>
18993 * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
18994 TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
18995 TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
18996 TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
18997 Use @deftypevr rather than @deftypevar.
18999 2009-04-17 Richard Guenther <rguenther@suse.de>
19001 * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
19002 (get_prop_source_stmt): Likewise.
19003 (can_propagate_from): Likewise.
19005 2009-04-17 Andrew Stubbs <ams@codesourcery.com>
19007 * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
19008 TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
19009 (--with-multilib-list): Add default value.
19010 * configure: Regenerate.
19011 * Makefile.in (TM_ENDIAN_CONFIG): Define.
19012 (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
19013 * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
19014 TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
19015 Don't add default cpu to multilib list unnecessarily, but do enable
19016 the relevant compiler option..
19017 Add support for --with-multilib-list=<blank> and
19018 --with-multilib-list=!<somelib> to supress unwanted multilibs.
19019 * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
19020 (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
19021 (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
19022 TM_MULTILIB_CONFIG.
19023 (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
19024 (MULTILIB_OSDIRNAMES): New variable.
19025 * config/sh/t-1e: Delete file.
19026 * config/sh/t-mlib-sh1: Delete file.
19027 * config/sh/t-mlib-sh2: Delete file.
19028 * config/sh/t-mlib-sh2a: Delete file.
19029 * config/sh/t-mlib-sh2a-nofpu: Delete file.
19030 * config/sh/t-mlib-sh2a-single: Delete file.
19031 * config/sh/t-mlib-sh2a-single-only: Delete file.
19032 * config/sh/t-mlib-sh2e: Delete file.
19033 * config/sh/t-mlib-sh3e: Delete file.
19034 * config/sh/t-mlib-sh4: Delete file.
19035 * config/sh/t-mlib-sh4-nofpu: Delete file.
19036 * config/sh/t-mlib-sh4-single: Delete file.
19037 * config/sh/t-mlib-sh4-single-only: Delete file.
19038 * config/sh/t-mlib-sh4a: Delete file.
19039 * config/sh/t-mlib-sh4a-nofpu: Delete file.
19040 * config/sh/t-mlib-sh4a-single: Delete file.
19041 * config/sh/t-mlib-sh4a-single-only: Delete file.
19042 * config/sh/t-mlib-sh4al: Delete file.
19043 * config/sh/t-mlib-sh5-32media: Delete file.
19044 * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
19045 * config/sh/t-mlib-sh5-64media: Delete file.
19046 * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
19047 * config/sh/t-mlib-sh5-compact: Delete file.
19048 * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
19049 * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
19050 * doc/install.texi (Options specification): Add
19051 --with-multilib-list and --with-endian.
19053 2009-04-17 Rafael Avila de Espindola <espindola@google.com>
19055 * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
19057 (OBJS-common): Add plugin-version.o.
19058 (plugin-version.o): New.
19059 * gcc-plugin.h (plugin_gcc_version): New.
19060 (plugin_default_version_check): New.
19061 (plugin_init_func, plugin_init): Add version argument.
19062 * plugin-version.c: New.
19063 * plugin.c (str_plugin_gcc_version_name): New.
19064 (try_init_one_plugin): Read plugin_gcc_version from the plugin and
19065 pass it to the init function.
19066 (plugin_default_version_check): New.
19068 2009-04-17 Richard Guenther <rguenther@suse.de>
19070 * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
19071 for decl-vs-decl disambiguation.
19073 2009-04-17 Andreas Krebbel <krebbel1@de.ibm.com>
19075 * config/s390/s390.h (s390_tune_attr): New macro definition.
19076 * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
19078 2009-04-17 Richard Guenther <rguenther@suse.de>
19080 * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
19081 (fold_stmt_r): Likewise.
19082 (maybe_fold_reference): New function.
19083 (fold_gimple_assign): Handle cases fold_stmt_r did.
19084 (fold_stmt): Do not use fold_stmt_r.
19085 (fold_stmt_inplace): Likewise.
19087 2009-04-17 Richard Guenther <rguenther@suse.de>
19089 * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
19090 (record_equivalences_from_stmt): Remove useless checks and
19092 * tree-ssa-pre.c (eliminate): Avoid converting a constant if
19093 the type is already suitable.
19095 2009-04-17 Paolo Bonzini <bonzini@gnu.org>
19097 * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
19099 2009-04-17 Uros Bizjak <ubizjak@gmail.com>
19101 * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
19102 (CMPtype): Define as __gcc_CMPtype.
19104 2009-04-17 Aurelien Jarno <aurelien@aurel32.net>
19106 * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
19107 for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
19109 2009-04-17 Richard Guenther <rguenther@suse.de>
19111 PR tree-optimization/39746
19112 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
19113 special-casing for builtins and static variable use/def.
19114 (call_may_clobber_ref_p_1): Likewise.
19116 2009-04-16 Ian Lance Taylor <iant@google.com>
19118 * df.h: Include "timevar.h".
19119 (struct df_problem): Change tv_id field to timevar_id_t.
19120 * tree-pass.h: Include "timevar.h".
19121 (struct opt_pass): Change tv_id field to timevar_id_t.
19122 * timevar.h (timevar_id_t): Define TV_NONE.
19123 * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
19124 TV_NONE rather than tv_id != 0.
19125 (execute_one_pass): Likewise.
19126 * Makefile.in (DF_H): Add $(TIMEVAR_H).
19127 (TREE_PASS_H): Define. Change all instances of tree-pass.h in
19128 dependencies to $(TREE_PASS_H).
19129 * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
19131 (pass_branch_target_load_optimize2): Likewise.
19132 * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
19133 (pass_outof_cfg_layout_mode): Likewise.
19134 * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
19135 (pass_rebuild_cgraph_edges): Likewise.
19136 (pass_remove_cgraph_callee_edges): Likewise.
19137 * df-core.c (pass_df_initialize_opt): Likewise.
19138 (pass_df_initialize_no_opt): Likewise.
19139 (pass_df_finish): Likewise.
19140 * emit-rtl.c (pass_unshare_all_rtl): Likewise.
19141 * except.c (pass_set_nothrow_function_flags): Likewise.
19142 (pass_convert_to_eh_region_ranges): Likewise.
19143 * final.c (pass_compute_alignments): Likewise.
19144 * function.c (pass_instantiate_virtual_regs): Likewise.
19145 (pass_init_function): Likewise.
19146 (pass_leaf_regs): Likewise.
19147 (pass_match_asm_constraints): Likewise.
19148 * gimple-low.c (pass_lower_cf): Likewise.
19149 (pass_mark_used_blocks): Likewise.
19150 * init-regs.c (pass_initialize_regs): Likewise.
19151 * integrate.c (pass_initial_value_sets): Likewise.
19152 * ira.c (pass_ira): Likewise.
19153 * jump.c (pass_cleanup_barriers): Likewise.
19154 * omp-low.c (pass_expand_omp): Likewise.
19155 (pass_lower_omp): Likewise.
19156 * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
19157 * recog.c (pass_split_all_insns): Likewise.
19158 (pass_split_after_reload): Likewise.
19159 (pass_split_before_regstack): Likewise.
19160 (pass_split_before_sched2): Likewise.
19161 (pass_split_for_shorten_branches): Likewise.
19162 * reginfo.c (pass_reginfo_init): Likewise.
19163 (pass_subregs_of_mode_init): Likewise.
19164 (pass_subregs_of_mode_finish): Likewise.
19165 * passes.c (pass_postreload): Likewise.
19166 * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
19167 * tree-cfg.c (pass_remove_useless_stmts): Likewise.
19168 (pass_warn_function_return): Likewise.
19169 (pass_warn_function_noreturn): Likewise.
19170 * tree-complex.c (pass_lower_complex): Likewise.
19171 (pass_lower_complex_O0): Likewise.
19172 * tree-if-conv.c (pass_if_conversion): Likewise.
19173 * tree-into-ssa.c (pass_build_ssa): Likewise.
19174 * tree-mudflap.c (pass_mudflap_1): Likewise.
19175 (pass_mudflap_2): Likewise.
19176 * tree-nomudflap.c (pass_mudflap_1): Likewise.
19177 (pass_mudflap_2): Likewise.
19178 * tree-nrv.c (pass_return_slot): Likewise.
19179 * tree-object-size.c (pass_object_sizes): Likewise.
19180 * tree-optimize.c (pass_all_optimizations): Likewise.
19181 (pass_early_local_passes): Likewise.
19182 (pass_all_early_optimizations): Likewise.
19183 (pass_cleanup_cfg): Likewise.
19184 (pass_cleanup_cfg_post_optimizing): Likewise.
19185 (pass_free_datastructures): Likewise.
19186 (pass_free_cfg_annotations): Likewise.
19187 (pass_fixup_cfg): Likewise.
19188 (pass_init_datastructures): Likewise.
19189 * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
19190 (pass_late_warn_uninitialized): Likewise.
19191 (pass_update_address_taken): Likewise.
19192 * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
19193 * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
19194 (pass_cse_sincos): Likewise.
19195 (pass_convert_to_rsqrt): Likewise.
19196 * tree-ssa-structalias.c (pass_build_alias): Likewise.
19197 * tree-stdarg.c (pass_stdarg): Likewise.
19198 * tree-tailcall.c (pass_tail_recursion): Likewise.
19199 (pass_tail_calls): Likewise.
19200 * tree-vect-generic.c (pass_lower_vector): Likewise.
19201 (pass_lower_vector_ssa): Likewise.
19202 * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
19204 2009-04-16 Joseph Myers <joseph@codesourcery.com>
19206 * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
19208 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
19210 * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
19211 logical and signext.
19213 2009-04-16 Kaz Kojima <kkojima@gcc.gnu.org>
19216 * config/sh/predicates.md (arith_operand): Check if the operand
19217 of TRUNCATE is a REG.
19219 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19221 * cfgrtl.c (delete_insn_chain_and_edges): Remove.
19222 * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
19224 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19226 * tree-iterator.c (tsi_split_statement_list_after,
19227 tsi_split_statement_list_before): Remove.
19228 * tree-iterator.h: Remove the prototypes for
19229 tsi_split_statement_list_after and tsi_split_statement_list_before.
19231 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19233 * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
19234 * tree-ssa-propagate.h: Remove the prototype for
19235 stmt_makes_single_load.
19237 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19239 * emit-rtl.c (set_mem_attrs_from_reg): Remove.
19240 * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
19242 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19244 * tree-iterator.c (EXPR_LAST_BODY): Remove.
19246 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19248 * except.c (eh_region_outer_p): Remove.
19249 * except.h: Remove the prototype for eh_region_outer_p.
19251 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
19253 * function.c (current_function_assembler_name): Remove.
19254 * function.h: Remove the prototype for
19255 current_function_assembler_name.
19257 2009-04-16 Ian Lance Taylor <iant@google.com>
19259 * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
19260 (add_reg_note): Call alloc_reg_note.
19261 * rtl.h (alloc_reg_note): Declare.
19262 * combine.c (try_combine): Use alloc_reg_note.
19263 (recog_for_combine, move_deaths): Likewise.
19264 (distribute_notes): Use alloc_reg_note and add_reg_note.
19265 * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
19266 * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
19267 * reload1.c (eliminate_regs_1): Use alloc_reg_note.
19269 2009-04-16 Vladimir Makarov <vmakarov@redhat.com>
19271 PR rtl-optimization/39762
19272 * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
19273 ira_may_move_out_cost): Add comments about way of their usage.
19274 (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
19276 * ira-conflicts.c (process_regs_for_copy): Use function
19277 ira_get_register_move_cost instead of global
19278 ira_register_move_cost.
19280 * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
19281 color_pass, move_spill_restore, update_curr_costs): Ditto.
19283 * ira-lives.c (process_single_reg_class_operands): Ditto.
19285 * ira-emit.c (emit_move_list): Ditto.
19287 * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
19288 (record_reg_classes): Ditto. Use functions
19289 ira_get_register_move_cost and ira_get_may_move_cost instead of
19290 global vars ira_register_move_cost, ira_may_move_out_cost and
19291 ira_may_move_in_cost.
19292 (record_address_regs): Don't call ira_init_register_move_cost.
19293 Use function ira_get_may_move_cost instead of global
19294 ira_may_move_in_cost.
19295 (process_bb_node_for_hard_reg_moves): Use function
19296 ira_get_register_move_cost instead of global ira_register_move_cost.
19297 (ira_costs): Don't call ira_init_register_move_cost.
19299 2009-04-16 Richard Guenther <rguenther@suse.de>
19301 * tree-cfg.c (verify_gimple_assign_binary):
19302 Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
19303 * ipa-struct-reorg.c (gen_size): Fold the built expressions.
19304 (create_general_new_stmt): Note that this function is broken.
19306 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
19308 * common.opt (fhelp): Add Var(help_flag).
19309 * gcc-plugin.h (plugin_info): Add help.
19310 * plugin.c (plugin_name_args): Add help.
19311 (register_plugin_info): Set plugin->help.
19312 (print_help_one_plugin): New.
19313 (print_plugins_help): New.
19314 * plugin.h (print_plugins_help): New.
19315 * toplev.c (toplev_main): Call print_plugins_help if needed.
19317 2009-04-16 Richard Guenther <rguenther@suse.de>
19319 * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
19320 (gimple_ior_addresses_taken_1): New function.
19321 (gimple_ior_addresses_taken): Likewise.
19322 * gimple.h (struct gimple_statement_with_ops_base): Remove
19323 addresses_taken member.
19324 (gimple_ior_addresses_taken): Declare.
19325 (gimple_addresses_taken, gimple_addresses_taken_ptr,
19326 gimple_set_addresses_taken): Remove.
19327 * ipa-reference.c (mark_address): New function.
19328 (scan_stmt_for_static_refs): Use it for marking addresses taken.
19329 * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
19330 (mark_address_taken): ... this. Just set TREE_ADDRESSABLE.
19331 (gimple_add_to_addresses_taken): Remove.
19332 (get_tmr_operands): Call mark_address_taken.
19333 (get_asm_expr_operands): Likewise.
19334 (get_expr_operands): Likewise.
19335 (build_ssa_operands): Do not clear the addresses_taken bitmap.
19336 (free_stmt_operands): Do not free it.
19337 * tree-ssa.c (delete_tree_ssa): Likewise.
19338 (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
19340 2009-04-16 Richard Guenther <rguenther@suse.de>
19342 * gimple.h (walk_stmt_load_store_addr_ops): Declare.
19343 (walk_stmt_load_store_ops): Likewise.
19344 * gimple.c (get_base_loadstore): New function.
19345 (walk_stmt_load_store_addr_ops): Likewise.
19346 (walk_stmt_load_store_ops): Likewise.
19347 * ipa-pure-const.c (check_op): Simplify.
19348 (check_load, check_store): New functions.
19349 (check_stmt): Use walk_stmt_load_store_ops.
19350 * ipa-reference.c (mark_load): Adjust signature.
19351 (mark_store): Likewise.
19352 (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
19354 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
19356 * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
19357 (plugin_info): New.
19358 * opts.c (common_handle_option): Don't call print_version.
19359 * plugin.c (plugin_name_args): Add version.
19360 (register_plugin_info): New.
19361 (register_callback): Handle PLUGIN_INFO.
19362 (try_init_one_plugin): New.
19363 (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
19365 (finalize_one_plugin): New.
19366 (finalize_plugins): New.
19367 (print_one_plugin): New.
19368 (print_plugins_versions): New.
19369 * plugin.h (print_plugins_versions): New.
19370 (finalize_plugins): New.
19371 * toplev.c (compile_file): Don't call initialize_plugins.
19372 (print_version): Call print_plugins_versions.
19373 (toplev_main): Call initialize_plugins. Print version if needed.
19374 Call finalize_plugins.
19376 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
19378 * common.opt (fversion): New.
19379 * gcc.c (print_version): New.
19380 (process_command): Don't print the version. Just set print_version.
19381 (main): Print version. Call subprocesses if print_version and
19382 verbose_flag are set.
19383 * opts.c (common_handle_option): Handle OPT_fversion.
19385 2009-04-16 Richard Guenther <rguenther@suse.de>
19386 Ira Rosen <irar@il.ibm.com>
19388 PR tree-optimization/39698
19389 * tree-vect-loop.c (get_initial_def_for_reduction): Use the
19390 type of the reduction variable. Only generate the def if
19393 * omp-low.c (expand_omp_for_generic): When converting to a pointer
19394 make sure to first convert to an integer of the same precision.
19395 * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
19396 the type of the evolution correctly in computing the new
19397 induction variable base.
19399 2009-04-16 Richard Guenther <rguenther@suse.de>
19401 PR middle-end/39625
19402 * tree-cfg.c (make_blocks): Split statements with to-be
19403 abnormal SSA names on the lhs.
19405 2009-04-16 Paolo Bonzini <bonzini@gnu.org>
19407 * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
19408 Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
19409 * c-typeck.c (really_start_incremental_init): Likewise.
19410 * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
19411 (TARGET_INITIALIZER): Remove it.
19412 * target.h (struct target): Remove vector_opaque_p.
19413 * tree.c (build_opaque_vector_type): New.
19414 * tree.h (TYPE_VECTOR_OPAQUE): New.
19415 (build_opaque_vector_type): Declare.
19416 * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
19417 * config/rs6000/rs6000.c (build_opaque_vector_type,
19418 rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
19419 (rs6000_init_builtins): Use build_opaque_vector_type for
19420 opaque_V4SI_type_node.
19422 2009-04-15 Catherine Moore <clm@codesourcery.com>
19424 * debug.h (set_name): Declare.
19425 * dwarf2out.c (dwarf2out_set_name): Declare.
19426 (dwarf2_debug_hooks): Add set_name.
19427 (find_AT_string): New.
19428 (add_AT_string): Call find_AT_string.
19429 (dwarf2out_set_name): New.
19430 * cp/decl.c (grokdeclarator): Call set_name.
19431 * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
19432 * debug.c (do_nothing_debug_hooks): Likewise.
19433 * dbxout.c (dbx_debug_hooks): Likewise.
19434 * sdbout.c (sdb_debug_hooks): Likewise.
19436 2009-04-15 Michael Eager <eager@eagercon.com>
19438 * config/rs6000/rs6000.c (rs6000_function_value): Set function return
19439 reg for single-precision FPU.
19440 * config/rs6000/rs6000.md (movsi_internal1): Only for
19441 !TARGET_SINGLE_FPU.
19442 (movsi_internal1_single): New. Add pattern to move SI values to/from
19443 single-precision FP regs.
19445 2009-04-15 Richard Guenther <rguenther@suse.de>
19447 * omp-low.c (lower_rec_input_clauses): Build correct address
19449 (expand_omp_for_generic): Fix multiplication type.
19450 * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
19451 (generate_memset_zero): Fix types.
19452 * tree-profile.c (prepare_instrumented_value): Correctly
19455 2009-04-15 Ian Lance Taylor <iant@google.com>
19457 * c.opt (Wenum-compare): Enable for C and Objc. Initialize to -1.
19458 * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
19459 for -Wall and for -Wc++-compat.
19460 (c_common_post_options): For C++, set warn_enum_compare if not
19462 * c-tree.h (struct c_expr): Add field original_type.
19463 (build_external_ref): Update declaration.
19464 * c-parser.c (c_parser_braced_init): Set original_type.
19465 (c_parser_initelt): Likewise.
19466 (c_parser_expr_no_commas): Likewise.
19467 (c_parser_conditional_expression): Likewise.
19468 (c_parser_cast_expression): Likewise.
19469 (c_parser_unary_expression): Likewise. Pull setting of
19470 original_code to top of function.
19471 (c_parser_sizeof_expression): Set original_type.
19472 (c_parser_alignof_expression): Likewise.
19473 (c_parser_postfix_expression): Likewise. Pull setting of
19474 original_code to top of function.
19475 (c_parser_postfix_expression_after_paren_type): Set original_type.
19476 (c_parser_postfix_expression_after_primary): Likewise.
19477 (c_parser_expression): Likewise.
19478 * c-typeck.c (build_external_ref): Add type parameter. Change all
19480 (c_expr_sizeof_expr): Set original_type field.
19481 (parser_build_unary_op): Likewise.
19482 (parser_build_binary_op): Likewise. Optionally warn about
19483 comparisons of enums of different types.
19484 (digest_init): Set original_type field.
19485 (really_start_incremental_init): Likewise.
19486 (push_init_level, pop_init_level): Likewise.
19487 * doc/invoke.texi (Warning Options): -Wenum-compare now
19490 2009-04-15 Richard Guenther <rguenther@suse.de>
19492 * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
19493 out a necessary conversion.
19494 * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
19495 names we didn't value number.
19496 * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
19498 2009-04-15 Richard Guenther <rguenther@suse.de>
19500 PR tree-optimization/39764
19501 * tree-ssa-ccp.c (get_value): Canonicalize value with
19502 canonicalize_float_value.
19504 2009-04-15 Jan Hubicka <jh@suse.cz>
19506 * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
19507 Wrong version of patch.
19509 2009-04-15 Jan Hubicka <jh@suse.cz>
19511 * builtins.def (va_start, va_end, va_copy): Mark nothrow.
19513 2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
19515 * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
19516 our distinct integral and vector types.
19518 2009-04-15 Rafael Avila de Espindola <espindola@google.com>
19520 * class.c (build_vtbl_ref_1): Remove call to assemble_external.
19521 * init.c (build_vtbl_address): Remove call to assemble_external.
19523 2009-04-14 Daniel Jacobowitz <dan@codesourcery.com>
19525 * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
19526 output for other floating point modes.
19528 2009-04-14 Diego Novillo <dnovillo@google.com>
19530 * diagnostic.c (diagnostic_report_diagnostic): Do not
19531 warn about loaded plugins for DK_ERROR and DK_WARNING.
19532 * c-decl.c (declspecs_add_type): Move call to
19533 invoke_plugin_callbacks ...
19534 * c-parser.c (c_parser_declspecs): ... here.
19535 * plugin.c (dump_active_plugins): Tidy output.
19537 2009-04-14 Diego Novillo <dnovillo@google.com>
19538 Le-Chun Wu <lcwu@google.com>
19540 * configure.ac: Add --enable-plugin support.
19541 Define ENABLE_PLUGIN and PLUGINLIBS when specified.
19542 * Makefile.in (PLUGIN_H): Define.
19543 Export ENABLE_PLUGIN and GMPINC to site.exp.
19544 Add PLUGINLIBS to link command.
19545 Add/modify dependencies for plugin.o and files including plugin.h.
19547 * config.in: Regenerate.
19549 * opts.c (common_handle_option): Handle OPT_fplugin_ and
19552 2009-04-14 Le-Chun Wu <lcwu@google.com>
19554 * tree-pass.h (register_one_dump_file): Add a prototype for
19555 register_one_dump_file.
19556 * toplev.c (compile_file): Call initialize_plugins.
19557 (do_compile): Call invoke_plugin_callbacks.
19558 (toplev_main): Call invoke_plugin_callbacks.
19559 * common.opt: Add -fplugin= and -fplugin-arg-.
19560 * gcc-plugin.h: New public header file for plugins to include.
19561 * plugin.c: New source file.
19562 * plugin.h: New internal header file.
19563 * passes.c (register_one_dump_file): Make it external.
19565 * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
19567 2009-04-14 Diego Novillo <dnovillo@google.com>
19569 * doc/plugins.texi: New.
19570 * doc/gccint.texi: Add reference to Plugins chapter.
19571 * doc/invoke.texi: Document -fplugin and -fplugin-arg
19572 * diagnostic.c (diagnostic_report_diagnostic): Warn about
19573 loaded plugins, if any.
19574 * timevar.def (TV_PLUGIN_INIT): Define.
19575 (TV_PLUGIN_RUN): Define.
19576 * plugin.c: Include timevar.h
19577 (plugins_active_p): New.
19578 (dump_active_plugins): New.
19579 (debug_active_plugins): New.
19581 2009-04-14 Joseph Myers <joseph@codesourcery.com>
19583 * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
19585 * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
19587 2009-04-14 Kazu Hirata <kazu@codesourcery.com>
19589 * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
19590 the same as a minus without a shift.
19592 2009-04-14 Nick Clifton <nickc@redhat.com>
19594 * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
19595 comparisons with small integers will always produce a short
19598 2009-04-14 Rafael Avila de Espindola <espindola@google.com>
19601 2008-12-19 Diego Novillo <dnovillo@google.com>
19603 * cgraph.c (dump_cgraph_node): Show memory address of NODE.
19605 2009-04-14 Richard Guenther <rguenther@suse.de>
19607 * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
19609 (verify_gimple_assign_binary): Likewise. Handle shifts and
19611 (verify_gimple_phi): Print the mismatched argument position.
19612 * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
19614 (vect_update_init_of_dr): Likewise.
19615 * matrix-reorg.c (transform_access_sites): Do what the
19617 * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
19619 2009-04-13 Michael Eager <eager@eagercon.com>
19621 * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
19622 _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
19623 * config/rs6000/xilinx.h: New. Spec for powerpc-xilinx-eabi
19624 * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
19625 remove duplicate config
19627 2009-04-13 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
19629 * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
19630 file_name:line_number type locator of the call site.
19632 2009-04-13 Vladimir Makarov <vmakarov@redhat.com>
19634 * genautomata.c: Put blank after comma.
19635 (automaton_decls): New.
19636 (struct unit_usage): Add comments to member next.
19637 (store_alt_unit_usage): Keep the list ordered.
19638 (unit_present_on_list_p, equal_alternatives_p): New.
19639 (check_regexp_units_distribution): Check units distribution
19640 correctness correctly.
19641 (main): Don't write automata if error is found. Return correct
19644 * config/m68k/cf.md (cfv4_ds): Remove.
19645 (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
19646 cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
19648 * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
19649 power4-load-ext, power4-store, power4-store-update,
19650 power4-fpstore, power4-fpstore-update, power4-two, power4-three,
19651 power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
19652 power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
19653 power4-sqrt, power4-isync): Modify reservation to make correct
19654 unit distribution to automata.
19656 * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
19657 power5-store-update, power5-two, power5-three, power5-lmul,
19658 power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
19660 2009-04-13 Adam Nemet <anemet@caviumnetworks.com>
19662 * except.c (pass_set_nothrow_function_flags): Set name and add
19664 (set_nothrow_function_flags): Mention in the dump file when
19665 changing a function to nothrow.
19667 2009-04-13 Ozkan Sezer <sezeroz@gmail.com>
19670 * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
19671 instead of unsigned long.
19673 2009-04-13 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
19675 * config/arm/arm.c (return_used_this_function): Remove.
19676 (arm_output_function_prologue): Remove use of
19677 return_used_this_function.
19678 (output_return_instruction): Replace use of
19679 return_used_this_function
19680 by cfun->machine->return_used_this_function.
19681 (arm_output_epilogue): Likewise.
19682 (arm_output_function_epilogue): Likewise.
19683 (thumb_unexpanded_epilogue): Likewise.
19684 * config/arm/arm.h (struct machine_function):
19685 New member return_used_this_function.
19687 2009-04-12 Mark Mitchell <mark@codesourcery.com>
19689 * doc/install.texi: Correct description of default directory for
19690 --with-gxx-include-dir.
19692 2009-04-12 Eric Botcazou <ebotcazou@adacore.com>
19694 * fold-const.c (build_range_check): Properly deal with enumeral and
19695 boolean base types.
19697 2009-04-12 Steven Bosscher <steven@gcc.gnu.org>
19699 * doc/invoke.texi (max_gcse_passes): Remove documentation.
19700 * params.def (PARAM_MAX_GCSE_PASSES): Remove.
19701 * params.h (MAX_GCSE_PASSES): Remove.
19702 * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
19703 in sequence. Remove ability to run multiple passes.
19704 (bypass_jumps): Report run as third CPROP pass.
19706 2009-04-12 Adam Nemet <anemet@caviumnetworks.com>
19708 PR middle-end/39651
19709 * except.c (can_throw_external): Look at each insn in a SEQUENCE
19710 when deciding whether the whole SEQUENCE can throw.
19712 2009-04-12 Uros Bizjak <ubizjak@gmail.com>
19715 * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
19716 offseted label references.
19718 2009-04-11 Jan Hubicka <jh@suse.cz>
19720 * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
19722 2009-04-11 Richard Guenther <rguenther@suse.de>
19724 PR middle-end/39732
19725 * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
19726 return variables as TREE_ADDRESSABLE.
19728 2009-04-11 Richard Guenther <rguenther@suse.de>
19730 PR tree-optimization/39713
19731 * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
19732 reference trees have SSA_NAME operands.
19734 2009-04-11 Richard Guenther <rguenther@suse.de>
19737 * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
19738 address expressions.
19740 2009-04-11 Dave Korn <dave.korn.cygwin@gmail.com>
19742 * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE): Update to
19743 match changes in Cygwin 1.7
19744 (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
19745 UINT_FAST16_TYPE, UINT_FAST32_TYPE): Likewise.
19747 2009-04-10 Paolo Bonzini <bonzini@gnu.org>
19749 PR tree-optimization/39701
19750 * doc/invoke.texi (Optimization Options): Document change in
19751 meaning and initialization of -fdelete-null-pointer-checks.
19753 2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
19755 PR middle-end/39701
19756 * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
19758 * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
19761 * doc/invoke.texi: Update -fdelete-null-pointer-checks.
19763 2009-04-10 Chao-ying Fu <fu@mips.com>
19765 * doc/tm.texi (Instruction Output): Document
19766 TARGET_ASM_FINAL_POSTSCAN_INSN.
19767 * target.h (final_postscan_insn): New field in asm_out.
19768 * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19769 (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
19770 * final.c (final_scan_insn): Call
19771 targetm.asm_out.final_postscan_insn after outputting
19772 an asm macro and a normal instruction.
19774 * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
19775 * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
19776 * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
19777 (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
19778 (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
19780 2009-04-10 Paolo Bonzini <bonzini@gnu.org>
19782 PR middle-end/39701
19783 * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
19784 variables as non-NULL even with -fdelete-null-pointer-checks.
19786 2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
19788 * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
19790 2009-04-09 H.J. Lu <hongjiu.lu@intel.com>
19793 * config/i386/i386.c (classify_argument): Handle SCmode with
19794 (bit_offset % 64) != 0.
19796 2009-04-09 Sandra Loosemore <sandra@codesourcery.com>
19798 * doc/invoke.texi (Optimize Options): Add cross-reference to
19799 -Q --help=optimizers examples.
19801 2009-04-10 Ben Elliston <bje@au.ibm.com>
19804 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
19805 regalign for the reg == fpr and TDmode case.
19807 2009-04-09 David Ayers <ayers@fsfe.org>
19810 * objc/objc-act.c (warn_with_method): Remove helper function.
19811 (check_duplicates): Call warning and inform directly.
19812 (really_start_method): Likewise.
19814 2009-04-09 Paolo Bonzini <bonzini@gnu.org>
19816 * expmed.c (expand_divmod): Always use a comparison for a division
19817 by a large unsigned integer.
19819 * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
19820 for things others than variables or functions as nonzero.
19822 2009-04-09 Nick Clifton <nickc@redhat.com>
19824 * unwind-compat.c: Change copyright header to refer to version
19825 3 of the GNU General Public License with version 3.1 of the
19826 GCC Runtime Library Exception and to point readers at the
19827 COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
19828 * config/alpha/crtfastmath.c: Likewise.
19829 * config/alpha/linux-unwind.h: Likewise.
19830 * config/alpha/qrnnd.asm: Likewise.
19831 * config/alpha/vms-crt0-64.c: Likewise.
19832 * config/alpha/vms-crt0.c: Likewise.
19833 * config/alpha/vms-dwarf2.asm: Likewise.
19834 * config/alpha/vms-dwarf2eh.asm: Likewise.
19835 * config/alpha/vms-psxcrt0-64.c: Likewise.
19836 * config/alpha/vms-psxcrt0.c: Likewise.
19837 * config/alpha/vms_tramp.asm: Likewise.
19838 * config/arc/initfini.c: Likewise.
19839 * config/arc/lib1funcs.asm: Likewise.
19840 * config/arm/bpabi-v6m.S: Likewise.
19841 * config/arm/bpabi.S: Likewise.
19842 * config/arm/bpabi.c: Likewise.
19843 * config/arm/crti.asm: Likewise.
19844 * config/arm/crtn.asm: Likewise.
19845 * config/arm/ieee754-df.S: Likewise.
19846 * config/arm/ieee754-sf.S: Likewise.
19847 * config/arm/lib1funcs.asm: Likewise.
19848 * config/arm/libunwind.S: Likewise.
19849 * config/arm/linux-atomic.c: Likewise.
19850 * config/arm/mmintrin.h: Likewise.
19851 * config/arm/pr-support.c: Likewise.
19852 * config/arm/unaligned-funcs.c: Likewise.
19853 * config/arm/unwind-arm.c: Likewise.
19854 * config/arm/unwind-arm.h: Likewise.
19855 * config/avr/libgcc.S: Likewise.
19856 * config/bfin/crti.s: Likewise.
19857 * config/bfin/crtlibid.s: Likewise.
19858 * config/bfin/crtn.s: Likewise.
19859 * config/bfin/lib1funcs.asm: Likewise.
19860 * config/bfin/linux-unwind.h: Likewise.
19861 * config/cris/arit.c: Likewise.
19862 * config/cris/cris_abi_symbol.c: Likewise.
19863 * config/darwin-64.c: Likewise.
19864 * config/darwin-crt2.c: Likewise.
19865 * config/darwin-crt3.c: Likewise.
19866 * config/darwin.h: Likewise.
19867 * config/dbxelf.h: Likewise.
19868 * config/dfp-bit.c: Likewise.
19869 * config/dfp-bit.h: Likewise.
19870 * config/elfos.h: Likewise.
19871 * config/fixed-bit.c: Likewise.
19872 * config/fixed-bit.h: Likewise.
19873 * config/fp-bit.c: Likewise.
19874 * config/fp-bit.h: Likewise.
19875 * config/fr30/crti.asm: Likewise.
19876 * config/fr30/crtn.asm: Likewise.
19877 * config/fr30/lib1funcs.asm: Likewise.
19878 * config/freebsd-spec.h: Likewise.
19879 * config/frv/cmovd.c: Likewise.
19880 * config/frv/cmovh.c: Likewise.
19881 * config/frv/cmovw.c: Likewise.
19882 * config/frv/frvbegin.c: Likewise.
19883 * config/frv/frvend.c: Likewise.
19884 * config/frv/lib1funcs.asm: Likewise.
19885 * config/glibc-stdint.h: Likewise.
19886 * config/h8300/clzhi2.c: Likewise.
19887 * config/h8300/crti.asm: Likewise.
19888 * config/h8300/crtn.asm: Likewise.
19889 * config/h8300/ctzhi2.c: Likewise.
19890 * config/h8300/fixunssfsi.c: Likewise.
19891 * config/h8300/lib1funcs.asm: Likewise.
19892 * config/h8300/parityhi2.c: Likewise.
19893 * config/h8300/popcounthi2.c: Likewise.
19894 * config/i386/ammintrin.h: Likewise.
19895 * config/i386/att.h: Likewise.
19896 * config/i386/avxintrin.h: Likewise.
19897 * config/i386/biarch64.h: Likewise.
19898 * config/i386/bmmintrin.h: Likewise.
19899 * config/i386/cpuid.h: Likewise.
19900 * config/i386/cross-stdarg.h: Likewise.
19901 * config/i386/crtfastmath.c: Likewise.
19902 * config/i386/crtprec.c: Likewise.
19903 * config/i386/cygming-crtbegin.c: Likewise.
19904 * config/i386/cygming-crtend.c: Likewise.
19905 * config/i386/cygwin.asm: Likewise.
19906 * config/i386/emmintrin.h: Likewise.
19907 * config/i386/gmm_malloc.h: Likewise.
19908 * config/i386/gthr-win32.c: Likewise.
19909 * config/i386/i386.h: Likewise.
19910 * config/i386/immintrin.h: Likewise.
19911 * config/i386/linux-unwind.h: Likewise.
19912 * config/i386/linux64.h: Likewise.
19913 * config/i386/mm3dnow.h: Likewise.
19914 * config/i386/mmintrin-common.h: Likewise.
19915 * config/i386/mmintrin.h: Likewise.
19916 * config/i386/nmmintrin.h: Likewise.
19917 * config/i386/pmm_malloc.h: Likewise.
19918 * config/i386/pmmintrin.h: Likewise.
19919 * config/i386/smmintrin.h: Likewise.
19920 * config/i386/sol2-c1.asm: Likewise.
19921 * config/i386/sol2-ci.asm: Likewise.
19922 * config/i386/sol2-cn.asm: Likewise.
19923 * config/i386/sol2-gc1.asm: Likewise.
19924 * config/i386/tmmintrin.h: Likewise.
19925 * config/i386/unix.h: Likewise.
19926 * config/i386/w32-unwind.h: Likewise.
19927 * config/i386/wmmintrin.h: Likewise.
19928 * config/i386/x86-64.h: Likewise.
19929 * config/i386/x86intrin.h: Likewise.
19930 * config/i386/xmmintrin.h: Likewise.
19931 * config/ia64/crtbegin.asm: Likewise.
19932 * config/ia64/crtend.asm: Likewise.
19933 * config/ia64/crtfastmath.c: Likewise.
19934 * config/ia64/crti.asm: Likewise.
19935 * config/ia64/crtn.asm: Likewise.
19936 * config/ia64/fde-glibc.c: Likewise.
19937 * config/ia64/lib1funcs.asm: Likewise.
19938 * config/ia64/linux-unwind.h: Likewise.
19939 * config/ia64/quadlib.c: Likewise.
19940 * config/ia64/unwind-ia64.c: Likewise.
19941 * config/linux.h: Likewise.
19942 * config/m32c/m32c-lib1.S: Likewise.
19943 * config/m32c/m32c-lib2-trapv.c: Likewise.
19944 * config/m32c/m32c-lib2.c: Likewise.
19945 * config/m32r/initfini.c: Likewise.
19946 * config/m68hc11/larith.asm: Likewise.
19947 * config/m68hc11/m68hc11-crt0.S: Likewise.
19948 * config/m68k/cf.md: Likewise.
19949 * config/m68k/crti.s: Likewise.
19950 * config/m68k/crtn.s: Likewise.
19951 * config/m68k/lb1sf68.asm: Likewise.
19952 * config/m68k/linux-unwind.h: Likewise.
19953 * config/mcore/crti.asm: Likewise.
19954 * config/mcore/crtn.asm: Likewise.
19955 * config/mcore/lib1.asm: Likewise.
19956 * config/mips/linux-unwind.h: Likewise.
19957 * config/mips/loongson.h: Likewise.
19958 * config/mips/mips16.S: Likewise.
19959 * config/mmix/crti.asm: Likewise.
19960 * config/mmix/crtn.asm: Likewise.
19961 * config/pa/fptr.c: Likewise.
19962 * config/pa/hpux-unwind.h: Likewise.
19963 * config/pa/lib2funcs.asm: Likewise.
19964 * config/pa/linux-atomic.c: Likewise.
19965 * config/pa/linux-unwind.h: Likewise.
19966 * config/pa/milli64.S: Likewise.
19967 * config/pa/quadlib.c: Likewise.
19968 * config/pa/stublib.c: Likewise.
19969 * config/picochip/libgccExtras/adddi3.asm: Likewise.
19970 * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
19971 * config/picochip/libgccExtras/ashlsi3.c: Likewise.
19972 * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
19973 * config/picochip/libgccExtras/ashrsi3.c: Likewise.
19974 * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
19975 * config/picochip/libgccExtras/divmod15.asm: Likewise.
19976 * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
19977 * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
19978 * config/picochip/libgccExtras/longjmp.asm: Likewise.
19979 * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
19980 * config/picochip/libgccExtras/lshrsi3.c: Likewise.
19981 * config/picochip/libgccExtras/parityhi2.asm: Likewise.
19982 * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
19983 * config/picochip/libgccExtras/setjmp.asm: Likewise.
19984 * config/picochip/libgccExtras/subdi3.asm: Likewise.
19985 * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
19986 * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
19987 * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
19988 * config/rs6000/750cl.h: Likewise.
19989 * config/rs6000/altivec.h: Likewise.
19990 * config/rs6000/biarch64.h: Likewise.
19991 * config/rs6000/crtresfpr.asm: Likewise.
19992 * config/rs6000/crtresgpr.asm: Likewise.
19993 * config/rs6000/crtresxfpr.asm: Likewise.
19994 * config/rs6000/crtresxgpr.asm: Likewise.
19995 * config/rs6000/crtsavfpr.asm: Likewise.
19996 * config/rs6000/crtsavgpr.asm: Likewise.
19997 * config/rs6000/darwin-asm.h: Likewise.
19998 * config/rs6000/darwin-fallback.c: Likewise.
19999 * config/rs6000/darwin-fpsave.asm: Likewise.
20000 * config/rs6000/darwin-ldouble.c: Likewise.
20001 * config/rs6000/darwin-tramp.asm: Likewise.
20002 * config/rs6000/darwin-unwind.h: Likewise.
20003 * config/rs6000/darwin-vecsave.asm: Likewise.
20004 * config/rs6000/darwin-world.asm: Likewise.
20005 * config/rs6000/e500crtres32gpr.asm: Likewise.
20006 * config/rs6000/e500crtres64gpr.asm: Likewise.
20007 * config/rs6000/e500crtres64gprctr.asm: Likewise.
20008 * config/rs6000/e500crtrest32gpr.asm: Likewise.
20009 * config/rs6000/e500crtrest64gpr.asm: Likewise.
20010 * config/rs6000/e500crtresx32gpr.asm: Likewise.
20011 * config/rs6000/e500crtresx64gpr.asm: Likewise.
20012 * config/rs6000/e500crtsav32gpr.asm: Likewise.
20013 * config/rs6000/e500crtsav64gpr.asm: Likewise.
20014 * config/rs6000/e500crtsav64gprctr.asm: Likewise.
20015 * config/rs6000/e500crtsavg32gpr.asm: Likewise.
20016 * config/rs6000/e500crtsavg64gpr.asm: Likewise.
20017 * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
20018 * config/rs6000/eabi-ci.asm: Likewise.
20019 * config/rs6000/eabi-cn.asm: Likewise.
20020 * config/rs6000/eabi.asm: Likewise.
20021 * config/rs6000/linux-unwind.h: Likewise.
20022 * config/rs6000/linux64.h: Likewise.
20023 * config/rs6000/paired.h: Likewise.
20024 * config/rs6000/paired.md: Likewise.
20025 * config/rs6000/ppc64-fp.c: Likewise.
20026 * config/rs6000/ppu_intrinsics.h: Likewise.
20027 * config/rs6000/rs6000.h: Likewise.
20028 * config/rs6000/si2vmx.h: Likewise.
20029 * config/rs6000/sol-ci.asm: Likewise.
20030 * config/rs6000/sol-cn.asm: Likewise.
20031 * config/rs6000/spe.h: Likewise.
20032 * config/rs6000/spu2vmx.h: Likewise.
20033 * config/rs6000/sysv4.h: Likewise.
20034 * config/rs6000/tramp.asm: Likewise.
20035 * config/rs6000/vec_types.h: Likewise.
20036 * config/s390/linux-unwind.h: Likewise.
20037 * config/s390/tpf-unwind.h: Likewise.
20038 * config/score/crti.asm: Likewise.
20039 * config/score/crtn.asm: Likewise.
20040 * config/sh/crt1.asm: Likewise.
20041 * config/sh/crti.asm: Likewise.
20042 * config/sh/crtn.asm: Likewise.
20043 * config/sh/divtab-sh4-300.c: Likewise.
20044 * config/sh/divtab-sh4.c: Likewise.
20045 * config/sh/divtab.c: Likewise.
20046 * config/sh/lib1funcs-4-300.asm: Likewise.
20047 * config/sh/lib1funcs-Os-4-200.asm: Likewise.
20048 * config/sh/lib1funcs.asm: Likewise.
20049 * config/sh/lib1funcs.h: Likewise.
20050 * config/sh/linux-atomic.asm: Likewise.
20051 * config/sh/linux-unwind.h: Likewise.
20052 * config/sh/shmedia.h: Likewise.
20053 * config/sh/sshmedia.h: Likewise.
20054 * config/sh/ushmedia.h: Likewise.
20055 * config/sparc/crtfastmath.c: Likewise.
20056 * config/sparc/linux-unwind.h: Likewise.
20057 * config/sparc/sol2-c1.asm: Likewise.
20058 * config/sparc/sol2-ci.asm: Likewise.
20059 * config/sparc/sol2-cn.asm: Likewise.
20060 * config/spu/divmodti4.c: Likewise.
20061 * config/spu/divv2df3.c: Likewise.
20062 * config/spu/float_disf.c: Likewise.
20063 * config/spu/float_unsdidf.c: Likewise.
20064 * config/spu/float_unsdisf.c: Likewise.
20065 * config/spu/float_unssidf.c: Likewise.
20066 * config/spu/mfc_multi_tag_release.c: Likewise.
20067 * config/spu/mfc_multi_tag_reserve.c: Likewise.
20068 * config/spu/mfc_tag_release.c: Likewise.
20069 * config/spu/mfc_tag_reserve.c: Likewise.
20070 * config/spu/mfc_tag_table.c: Likewise.
20071 * config/spu/multi3.c: Likewise.
20072 * config/spu/spu_internals.h: Likewise.
20073 * config/spu/spu_intrinsics.h: Likewise.
20074 * config/spu/spu_mfcio.h: Likewise.
20075 * config/spu/vec_types.h: Likewise.
20076 * config/spu/vmx2spu.h: Likewise.
20077 * config/stormy16/stormy16-lib2.c: Likewise.
20078 * config/svr4.h: Likewise.
20079 * config/sync.c: Likewise.
20080 * config/v850/lib1funcs.asm: Likewise.
20081 * config/vxlib-tls.c: Likewise.
20082 * config/vxlib.c: Likewise.
20083 * config/vxworks-dummy.h: Likewise.
20084 * config/xtensa/crti.asm: Likewise.
20085 * config/xtensa/crtn.asm: Likewise.
20086 * config/xtensa/ieee754-df.S: Likewise.
20087 * config/xtensa/ieee754-sf.S: Likewise.
20088 * config/xtensa/lib1funcs.asm: Likewise.
20089 * config/xtensa/lib2funcs.S: Likewise.
20090 * config/xtensa/linux-unwind.h: Likewise.
20091 * config/xtensa/unwind-dw2-xtensa.c: Likewise.
20092 * config/xtensa/unwind-dw2-xtensa.h: Likewise.
20093 * coretypes.h: Likewise.
20094 * crtstuff.c: Likewise.
20095 * defaults.h: Likewise.
20096 * dwarf2.h: Likewise.
20097 * emutls.c: Likewise.
20098 * gbl-ctors.h: Likewise.
20099 * gcov-io.h: Likewise.
20100 * ginclude/float.h: Likewise.
20101 * ginclude/iso646.h: Likewise.
20102 * ginclude/stdarg.h: Likewise.
20103 * ginclude/stdbool.h: Likewise.
20104 * ginclude/stddef.h: Likewise.
20105 * ginclude/stdfix.h: Likewise.
20106 * ginclude/stdint-gcc.h: Likewise.
20107 * ginclude/tgmath.h: Likewise.
20108 * gthr-aix.h: Likewise.
20109 * gthr-dce.h: Likewise.
20110 * gthr-gnat.c: Likewise.
20111 * gthr-gnat.h: Likewise.
20112 * gthr-lynx.h: Likewise.
20113 * gthr-mipssde.h: Likewise.
20114 * gthr-nks.h: Likewise.
20115 * gthr-posix.c: Likewise.
20116 * gthr-posix.h: Likewise.
20117 * gthr-posix95.h: Likewise.
20118 * gthr-rtems.h: Likewise.
20119 * gthr-single.h: Likewise.
20120 * gthr-solaris.h: Likewise.
20121 * gthr-tpf.h: Likewise.
20122 * gthr-vxworks.h: Likewise.
20123 * gthr-win32.h: Likewise.
20124 * gthr.h: Likewise.
20125 * libgcc2.c: Likewise.
20126 * libgcc2.h: Likewise.
20127 * libgcov.c: Likewise.
20128 * tsystem.h: Likewise.
20129 * typeclass.h: Likewise.
20130 * unwind-c.c: Likewise.
20131 * unwind-compat.h: Likewise.
20132 * unwind-dw2-fde-compat.c: Likewise.
20133 * unwind-dw2-fde-darwin.c: Likewise.
20134 * unwind-dw2-fde-glibc.c: Likewise.
20135 * unwind-dw2-fde.c: Likewise.
20136 * unwind-dw2-fde.h: Likewise.
20137 * unwind-dw2.c: Likewise.
20138 * unwind-dw2.h: Likewise.
20139 * unwind-generic.h: Likewise.
20140 * unwind-pe.h: Likewise.
20141 * unwind-sjlj.c: Likewise.
20142 * unwind.inc: Likewise.
20143 * config/arm/neon-gen.ml: Change generated copyright header to
20144 refer to version 3 of the GNU General Public License with
20145 version 3.1 of the GCC Runtime Library Exception and to point
20146 readers at the COPYING3 and COPYING3.RUNTIME files and the
20147 FSF's license web page.
20148 * config/arm/arm_neon.h: Regenerate.
20150 2009-04-09 Jakub Jelinek <jakub@redhat.com>
20152 * config/cris/cris.md: Change copyright header to refer to version
20153 3 of the GNU General Public License.
20154 * doc/install.texi2html: Change copyright header to refer to version
20155 3 of the GNU General Public License and to point readers at the
20156 COPYING3 file and the FSF's license web page.
20157 * config/vax/linux.h: Likewise.
20159 2009-04-09 Paolo Bonzini <bonzini@gnu.org>
20161 * config/i386/i386.md (cmpcc): New.
20162 * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
20163 (sync_compare_and_swap_cc*): Delete.
20165 * config/s390/s390.c (s390_compare_emitted): Remove.
20166 (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
20167 s390_compare_emitted used to be handled. Assert that modes match.
20168 (s390_emit_compare_and_swap): Use s390_emit_compare, do not
20169 refer to sync_compare_and_swap_ccsi.
20170 * config/s390/s390.h (s390_compare_emitted): Remove.
20171 * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
20172 instead of s390_compare_emitted.
20173 (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
20174 instead of s390_compare_emitted.
20175 * config/s390/s390.md (cmpcc): New.
20176 (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
20177 CC_REGNUM, do not pretend it's set.
20178 (sync_compare_and_swap_cc*): Delete.
20179 * config/s390/predicates.md (cc_reg_operand): New.
20181 * expr.c (sync_compare_and_swap_cc): Delete.
20182 * optabs.h (sync_compare_and_swap_cc): Delete.
20183 * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
20184 is being used with can_compare_p.
20185 (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
20186 (find_cc_set): New.
20187 (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
20188 look for a MODE_CC set instead. Use emit_store_flag.
20189 (expand_compare_and_swap_loop): Likewise, with some additional
20190 complication to avoid a force_reg when useless. Use
20191 emit_cmp_and_jump_insns.
20192 * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
20193 * doc/md.texi (sync_compare_and_swap_cc): Merge with
20194 sync_compare_and_swap documentation.
20196 2009-04-09 Jan Hubicka <jh@suse.cz>
20198 * except.c (find_prev_try): Break out from ....
20199 (duplicate_eh_regions): ... here; properly update prev_try pointers
20200 when duplication part of tree.
20201 (dump_eh_tree): Improve dumping.
20202 (verify_eh_region): New.
20203 (verify_eh_tree): Use it.
20205 2009-04-06 Richard Guenther <rguenther@suse.de>
20207 * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
20208 &ARRAY addresses by adjusting their types and prepending
20210 * tree-cfg.c (verify_gimple_assign_single): Verify that
20211 addresses are correct.
20213 2009-04-09 Richard Guenther <rguenther@suse.de>
20215 * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
20216 indices into an array reference if possible.
20217 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20218 Fold POINTER_PLUS_EXPR statements with invariant address.
20220 2009-04-09 Alan Modra <amodra@bigpond.net.au>
20223 * config.gcc (powerpc64-*-linux*): Always build biarch.
20225 2009-04-09 Joseph Myers <joseph@codesourcery.com>
20228 * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
20229 it and pedwarn if this results in an INTEGER_CST.
20231 2009-04-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
20233 * doc/install.texi: Update minimum GMP version. Remove obsolete
20234 text in MPFR section.
20236 2009-04-08 Jakub Jelinek <jakub@redhat.com>
20238 * dwarf2out.c (class_scope_p): New static inline.
20239 (class_or_namespace_scope_p): Use it.
20240 (gen_variable_die): Use DW_TAG_member tag for static data member
20241 declarations instead of DW_TAG_variable.
20243 PR middle-end/39573
20244 * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
20247 2009-04-08 Richard Guenther <rguenther@suse.de>
20249 * tree-ssa-sccvn.c (valueize_refs): Do not continue to
20250 valueize random data.
20252 2009-04-08 David Edelsohn <edelsohn@gnu.org>
20254 * config.gcc (aix tm_file): Add aix-stdint.h.
20255 (aix tm clause use_gcc_stdint): Set to wrap.
20256 * config/rs6000/aix-stdint.h: New file.
20258 2009-04-08 Richard Guenther <rguenther@suse.de>
20260 PR middle-end/36291
20261 * tree-dfa.c (add_referenced_var): Do not recurse into
20262 global initializers.
20263 * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
20265 (fold_const_aggregate_ref): Likewise.
20267 2009-04-08 Paolo Bonzini <bonzini@gnu.org>
20269 * recog.c (ordered_comparison_operator): New.
20270 * gensupport.c (std_preds): Add it.
20271 * doc/md.texi (Machine-Independent Predicates): Document it.
20273 2009-04-08 Jan Hubicka <jh@suse.cz>
20275 * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
20276 * function.h (rtl_eh): Remove exception_handler_label_map.
20277 * except.c (ehl_hash, ehl_eq, add_ehl_entry,
20278 remove_exception_handler_label, for_each_eh_label_1): Remove.
20279 (rtl_remove_unreachable_regions): Remove.
20280 (convert_from_eh_region_ranges): Do not remove unreachable regions.
20281 (find_exception_handler_labels): Don't build the hashtable.
20282 (maybe_remove_eh_handler): Remove.
20283 (for_each_eh_label): Rewrite to walk the tree.
20284 (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
20285 * except.h (maybe_remove_eh_handler): Remove.
20286 * passes.c (init_optimization_passes): Schedule second EH cleanup
20288 * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
20289 cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
20291 2009-04-08 Paolo Bonzini <bonzini@gnu.org>
20293 * genoutput.c (validate_optab_operands): New.
20294 (gen_insn, gen_expand): Call it.
20296 * genflags.c (gen_insn): Detect misused iterators.
20297 (main): Pass line_no to gen_insn, exit with status 1 on error.
20299 * genextract.c (line_no): Make global.
20300 (VEC_safe_set_locstr): Change assertion to error message.
20301 (main): Exit with status 1 on error.
20303 2009-04-08 Joseph Myers <joseph@codesourcery.com>
20307 * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
20308 C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
20309 EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
20310 * c-convert.c (convert): Do not call fold on results of conversion
20311 functions when the result is a C_MAYBE_CONST_EXPR.
20312 * c-parser.c (c_parser_postfix_expression): Do not fold condition
20313 of __builtin_choose_expr.
20314 * c-typeck.c (remove_c_maybe_const_expr): New.
20315 (build_unary_op, build_conditional_expr, build_compound_expr,
20316 build_binary_op, c_objc_common_truthvalue_conversion): Call
20317 remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
20320 2009-04-08 Bingfeng Mei <bmei@broadcom.com>
20322 * fold-const.c (const_binop): Combine two VECTOR_CST under operation
20323 CODE to produce a new one. Add a prototype to use fold_convert_const
20325 2009-04-08 Danny Smith <dannysmith@users.sourceforge.net>
20328 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
20329 mix declarations and code.
20331 2009-04-08 Ben Elliston <bje@au.ibm.com>
20333 * gcc.c: Replace `CC' with `GCC' throughout.
20335 2009-04-07 H.J. Lu <hongjiu.lu@intel.com>
20337 * doc/invoke.texi: Document Atom support.
20339 2009-04-07 Jason Merrill <jason@redhat.com>
20342 * c-common.h, c-common.c: Add flag_pretty_templates.
20343 * c-opts.c (c_common_handle_option): Set it.
20344 * c.opt: Add -fno-pretty-templates.
20345 * doc/invoke.texi (C++ Dialect Options): Likewise.
20347 2009-04-07 Uros Bizjak <ubizjak@gmail.com>
20349 * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
20350 (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
20351 (ia64_expand_builtin): Likewise.
20353 2009-04-07 Martin Jambor <mjambor@suse.cz>
20355 * tree-ssa-alias.c (refs_may_alias_p_1): Check for
20356 is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
20357 ADDR_EXPRS are include too.
20359 2009-04-07 Richard Guenther <rguenther@suse.de>
20361 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
20362 decls are only used if passes as parameters or if they are
20363 local statics and the call is not to a builtin.
20364 (call_may_clobber_ref_p_1): Likewise.
20366 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
20368 * expr.c (do_store_flag): Remove last argument. Simplify code
20369 to avoid duplication of tests already done by can_compare_p.
20370 (expand_expr_real_1): Adjust caller.
20372 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
20374 * optabs.c (can_compare_p): Test the predicate of a
20375 cbranch and cstore pattern.
20377 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
20379 * expr.c (convert_move): Use emit_store_flag instead of
20382 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
20384 * config/i386/i386.c (ix86_compare_emitted): Remove.
20385 (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
20386 ix86_compare_op0 like ix86_compare_emitted used to be handled.
20387 * config/i386/i386.h (ix86_compare_emitted): Remove.
20388 * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
20389 instead of ix86_compare_emitted.
20390 * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
20392 2009-04-07 Andrew Stubbs <ams@codesourcery.com>
20394 * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
20395 Add t-sysroot-suffix to tmake_file.
20396 * config/print-sysroot-suffix.sh: New file.
20397 * config/t-sysroot-suffix: New file.
20399 2009-04-07 Ben Elliston <bje@au.ibm.com>
20401 * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
20402 as the latter produces a warning when the target does not support
20405 2009-04-07 Ben Elliston <bje@au.ibm.com>
20407 * dfp.c: Replace type punning assignments with memcpy throughout.
20408 * Makefile.in (dfp.o-warn): Remove.
20410 2009-04-07 Alan Modra <amodra@bigpond.net.au>
20413 * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
20414 Include soft-fp/t-softfp after rs6000/t-linux64.
20416 2009-04-06 Eric Botcazou <ebotcazou@adacore.com>
20418 * stor-layout.c (set_sizetype): Use the full precision of their
20419 machine mode for bitsize types.
20421 2009-04-06 H.J. Lu <hongjiu.lu@intel.com>
20423 * config/i386/i386.md: Revert 2 accidental checkins.
20425 2009-04-06 Joey Ye <joey.ye@intel.com>
20426 Xuepeng Guo <xuepeng.guo@intel.com>
20427 H.J. Lu <hongjiu.lu@intel.com>
20429 Atom pipeline model, tuning and insn selection.
20430 * config.gcc (atom): Add atom config options and target.
20432 * config/i386/atom.md: New.
20434 * config/i386/i386.c (atom_cost): New cost.
20435 (m_ATOM): New macro flag.
20436 (initial_ix86_tune_features): Set m_ATOM.
20437 (x86_accumulate_outgoing_args): Likewise.
20438 (x86_arch_always_fancy_math_387): Likewise.
20439 (processor_target): Add Atom cost.
20440 (cpu_names): Add Atom cpu name.
20441 (override_options): Set Atom ISA.
20442 (ix86_issue_rate): New case PROCESSOR_ATOM.
20443 (ix86_adjust_cost): Likewise.
20445 * config/i386/i386.h (TARGET_ATOM): New target macro.
20446 (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
20447 (TARGET_OPT_AGU): New target option.
20448 (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
20449 (processor_type): Add PROCESSOR_ATOM.
20451 * config/i386/i386.md (cpu): Add new value "atom".
20452 (use_carry, movu): New attr.
20453 (atom.md): Include atom.md.
20454 (adddi3_carry_rex64): Set attr "use_carry".
20455 (addqi3_carry): Likewise.
20456 (addhi3_carry): Likewise.
20457 (addsi3_carry): Likewise.
20458 (*addsi3_carry_zext): Likewise.
20459 (subdi3_carry_rex64): Likewise.
20460 (subqi3_carry): Likewise.
20461 (subhi3_carry): Likewise.
20462 (subsi3_carry): Likewise.
20463 (x86_movdicc_0_m1_rex64): Likewise.
20464 (*x86_movdicc_0_m1_se): Likewise.
20465 (x86_movsicc_0_m1): Likewise.
20466 (*x86_movsicc_0_m1_se): Likewise.
20467 (*adddi_1_rex64): Emit add insn as much as possible.
20468 (*addsi_1): Likewise.
20469 (return_internal): Set atom_unit.
20470 (return_internal_long): Likewise.
20471 (return_pop_internal): Likewise.
20472 (*rcpsf2_sse): Set atom_sse_attr attr.
20473 (*qrt<mode>2_sse): Likewise.
20474 (*prefetch_sse): Likewise.
20476 * config/i386/i386-c.c (ix86_target_macros_internal): New case
20478 (ix86_target_macros_internal): Likewise.
20480 * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
20481 (*prefetch_sse_rex): Likewise.
20482 (sse_rcpv4sf2): Likewise.
20483 (sse_vmrcpv4sf2): Likewise.
20484 (sse_sqrtv4sf2): Likewise.
20485 (<sse>_vmsqrt<mode>2): Likewise.
20486 (sse_ldmxcsr): Likewise.
20487 (sse_stmxcsr): Likewise.
20488 (*sse_sfence): Likewise.
20489 (sse2_clflush): Likewise.
20490 (*sse2_mfence): Likewise.
20491 (*sse2_lfence): Likewise.
20492 (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
20493 (<sse>_movup<ssemodesuffixf2c>): Likewise.
20494 (avx_movdqu<avxmodesuffix>): Likewise.
20495 (avx_lddqu<avxmodesuffix>): Likewise.
20496 (sse2_movntv2di): Change attr "type" to "ssemov".
20497 (sse2_movntsi): Likewise.
20498 (rsqrtv8sf2): Change attr "type" to "sseadd".
20499 (sse3_addsubv2df3): Set attr "atom_unit".
20500 (sse3_h<plusminus_insn>v4sf3): Likewise.
20501 (*sse2_pmaddwd): Likewise.
20502 (*vec_extractv2di_1_rex64): Likewise.
20503 (*vec_extractv2di_1_avx): Likewise.
20504 (sse2_psadbw): Likewise.
20505 (ssse3_phaddwv8hi3): Likewise.
20506 (ssse3_phaddwv4hi3): Likewise.
20507 (ssse3_phadddv4si3): Likewise.
20508 (ssse3_phadddv2si3): Likewise.
20509 (ssse3_phaddswv8hi3): Likewise.
20510 (ssse3_phaddswv4hi3): Likewise.
20511 (ssse3_phsubwv8hi3): Likewise.
20512 (ssse3_phsubwv4hi3): Likewise.
20513 (ssse3_phsubdv4si3): Likewise.
20514 (ssse3_phsubdv2si3): Likewise.
20515 (ssse3_phsubswv8hi3): Likewise.
20516 (ssse3_phsubswv4hi3): Likewise.
20517 (ssse3_pmaddubsw128): Likewise.
20518 (sse3_pmaddubsw: Likewise.
20519 (ssse3_palignrti): Likewise.
20520 (ssse3_palignrdi): Likewise.
20522 2009-04-06 Gerald Pfeifer <gerald@pfeifer.com>
20524 * doc/install.texi (Specific): Fix two cross-references to MinGW.
20526 2009-04-06 Richard Guenther <rguenther@suse.de>
20528 PR tree-optimization/28868
20529 * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
20530 of which PHI results we inserted.
20531 (insert_into_preds_of_block): Record inserted PHIs.
20532 (eliminate): Eliminate redundant PHI nodes.
20533 (init_pre): Init inserted_phi_names.
20535 2009-04-06 Richard Guenther <rguenther@suse.de>
20537 PR tree-optimization/39643
20538 * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
20539 IMAGPART_EXPRs of complex constants.
20540 (execute_fold_all_builtins): If we folded a call queue
20541 TODO_update_address_taken.
20543 2009-04-06 Jan Hubicka <jh@suse.cz>
20545 PR middle-end/39659
20546 * except.c (remove_unreachable_regions): Propagate may_contain_throw
20549 2009-04-06 Andrew Stubbs <ams@codesourcery.com>
20551 * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
20553 (ic_invalidate_array): Likewise.
20555 2009-04-06 Hariharan Sandanagobalane <hariharan@picochip.com>
20557 * calls.c (emit_library_call_value_1): Fix a problem with parameter
20558 alignment for library calls.
20560 2009-04-06 Danny Smith <dannysmith@users.sourceforge.net>
20562 * config.gcc (mingw32 tm_file): Add mingw-stdint.h.
20563 (mingw32 tm clause use_gcc_stdint): Set to wrap.
20564 * config/i386/mingw-stdint.h: New file.
20566 2009-04-05 Richard Guenther <rguenther@suse.de>
20568 PR tree-optimization/39648
20569 * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
20570 our &A vs. &A[0] IL deficiencies.
20572 2009-04-04 Jan Hubicka <jh@suse.cz>
20574 * except.c (sjlj_find_directly_reachable_regions): Be ready for
20575 removed toplevel regions.
20576 (sjlj_mark_call_sites): Likewise.
20578 2009-04-04 Dave Korn <dave.korn.cygwin@gmail.com>
20580 * config.gcc (cygwin tm_file): Add cygwin-stdint.h.
20581 (cygwin tm clause use_gcc_stdint): Set to wrap.
20582 * config/i386/cygwin-stdint.h: New file.
20584 2009-04-04 Richard Guenther <rguenther@suse.de>
20586 * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
20587 * tree-ssa-copy.c (init_copy_prop): Do not propagate through
20588 single-argument PHIs if we are in loop-closed SSA form.
20589 * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
20590 for the pre-condition.
20591 (slpeel_tree_peel_loop_to_edge): Likewise.
20592 (vect_build_loop_niters): Take an optional sequence to append stmts.
20593 (vect_generate_tmps_on_preheader): Likewise.
20594 (vect_do_peeling_for_loop_bound): Take extra guards for the
20596 (vect_do_peeling_for_alignment): Adjust. Unconditionally apply
20597 the cost model check.
20598 (vect_loop_versioning): Take stmt and stmt list to put pre-condition
20599 guards if we are going to peel. Do not apply versioning in that case.
20600 * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
20601 (vect_do_peeling_for_loop_bound): Likewise.
20602 * tree-vect-loop.c (vect_transform_loop): If we are peeling for
20603 loop bound only record extra pre-conditions, do not apply loop
20606 2009-04-04 Richard Guenther <rguenther@suse.de>
20608 * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
20611 2009-04-04 Jan Hubicka <jh@suse.cz>
20613 * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
20614 last_basic_block for size of bb->index indexed array.
20615 * bt-load.c (compute_defs_uses_and_gen, compute_kill,
20616 compute_out, link_btr_uses, build_btr_def_use_webs,
20617 build_btr_def_use_webs, migrate_btr_defs): Likewise.
20619 2009-04-04 Jan Hubicka <jh@suse.cz>
20621 * except.c (remove_eh_handler_and_replace): Break out from ...
20622 (remove_eh_handler): ... here.
20623 (bring_to_root): New function.
20624 (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
20625 handled ones, bring others to root of tree.
20627 2009-04-04 Jan Hubicka <jh@suse.cz>
20629 * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
20630 (all_phis_safe_to_merge): New function.
20631 (update_info): New structure.
20632 (make_eh_edge_and_update_phi, update_eh_edges): New functions.
20633 (cleanup_empty_eh): Update SSA if possible.
20635 2009-04-04 Richard Guenther <rguenther@suse.de>
20637 * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
20638 * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
20639 (append_vuse): Likewise.
20641 2009-04-04 Jakub Jelinek <jakub@redhat.com>
20643 * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
20644 * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
20645 instead of REG_UNSAVED for DW_CFA_undefined.
20646 (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
20647 (uw_update_context): If RA column is REG_UNDEFINED, mark it as
20650 2009-04-04 Richard Earnshaw <rearnsha@arm.com>
20653 * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
20654 * testsuite/gcc.c-torture/execute/pr39501.c: New file.
20655 * testsuite/gcc.c-torture/execute/pr39501.x: New file.
20657 2009-04-04 Richard Guenther <rguenther@suse.de>
20659 PR tree-optimization/8781
20660 PR tree-optimization/37892
20661 * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
20662 * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
20663 (valueize_refs): Call it for *& valueizations.
20664 (shared_reference_ops_from_ref): Rename to ...
20665 (valueize_shared_reference_ops_from_ref): ... this and valueize.
20666 (shared_reference_ops_from_call): Rename to ...
20667 (valueize_shared_reference_ops_from_call): ... this and valueize.
20668 (vn_reference_lookup): Update.
20669 (visit_reference_op_call): Likewise.
20670 * tree-ssa-pre.c (phi_translate_1): Fold *&.
20671 (eliminate): Value-replace the call address in call statements.
20673 2009-04-04 Richard Guenther <rguenther@suse.de>
20675 PR tree-optimization/39636
20676 * tree-ssa-forwprop.c
20677 (forward_propagate_addr_into_variable_array_index): Check for
20678 GIMPLE_ASSIGN before accessing the rhs code.
20680 2009-04-03 Jason Merrill <jason@redhat.com>
20682 * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
20684 2009-04-03 Steve Ellcey <sje@cup.hp.com>
20686 * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
20687 truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
20688 fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
20689 floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
20690 fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
20691 smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
20692 divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
20693 umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
20694 *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
20695 *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
20696 adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
20697 smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
20698 *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
20699 *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
20700 sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
20701 Use fr_reg_or_fp01_operand instead of fr_register_operand
20703 * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
20704 recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
20705 divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
20707 2009-04-03 Vladimir Makarov <vmakarov@redhat.com>
20709 PR rtl-optimization/39607
20710 PR rtl-optimization/39631
20714 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
20715 * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
20716 instead of DF_LR_OUT.
20717 * ira-lives.c (process_bb_node_lives): Ditto.
20718 * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
20719 instead of DF_LR_{OUT,IN}.
20720 * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
20721 * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
20723 2009-04-03 Steven Bosscher <steven@gcc.gnu.org>
20725 * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
20726 (execute_lower_omp): Always run but take the short way out if -fopenmp
20728 (gate_lower_omp): Remove, forcing the pass manager to always run the
20729 pass and always set PROP_gimple_lomp.
20730 (pass_lower_omp): Remove gate function.
20731 * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
20732 PROP_trees. Instead, require it.
20733 * ipa-cp.c (pass_ipa_cp): Likewise.
20734 * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
20735 (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
20736 * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
20737 and PROP_gimple_leh.
20739 2009-04-03 Richard Guenther <rguenther@suse.de>
20741 PR middle-end/13146
20742 PR tree-optimization/23940
20743 PR tree-optimization/33237
20744 PR middle-end/33974
20745 PR middle-end/34093
20746 PR tree-optimization/36201
20747 PR tree-optimization/36230
20748 PR tree-optimization/38049
20749 PR tree-optimization/38207
20750 PR tree-optimization/38230
20751 PR tree-optimization/38301
20752 PR tree-optimization/38585
20753 PR middle-end/38895
20754 PR tree-optimization/38985
20755 PR tree-optimization/39299
20756 * tree-ssa-structalias.h: Remove.
20757 * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
20758 (NULL_DEF_OPERAND_P): Make of type def_operand_p.
20759 (struct vuse_element_d): Remove.
20760 (struct vuse_vec_d): Likewise.
20761 (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
20762 VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
20763 SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
20764 VUSE_ELEMENT_VAR): Likewise.
20765 (struct voptype_d): Likewise.
20766 (NUM_VOP_FREE_BUCKETS): Likewise.
20767 (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
20768 (struct stmt_operands_d): Remove.
20769 (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
20770 VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
20771 VDEF_NUM, VDEF_VECT): Likewise.
20772 (copy_virtual_operands): Remove.
20773 (operand_build_cmp): Likewise.
20774 (create_ssa_artificial_load_stmt): Likewise.
20775 (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
20776 (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
20777 vuse_index and mayuse_index members. Pack and move done and iter_type
20778 members to the front.
20779 (SSA_OP_VMAYUSE): Remove.
20780 (SSA_OP_VIRTUAL_USES): Adjust.
20781 (FOR_EACH_SSA_VDEF_OPERAND): Remove.
20782 (unlink_stmt_vdef): Declare.
20783 (add_to_addressable_set): Remove.
20784 * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
20785 (vrp_visit_stmt): Likewise.
20786 * doc/tree-ssa.texi (Alias analysis): Update.
20787 * doc/invoke.texi (max-aliased-vops): Remove docs.
20788 (avg-aliased-vops): Likewise.
20789 * tree-into-ssa.c (syms_to_rename): Remove.
20790 (need_to_update_vops_p): Likewise.
20791 (need_to_initialize_update_ssa_p): Rename to ...
20792 (update_ssa_initialized_fn): ... this. Track function we are
20794 (symbol_marked_for_renaming): Simplify.
20795 (add_new_name_mapping): Do not set need_to_update_vops_p.
20796 (dump_currdefs): Use SYMS_TO_RENAME.
20797 (rewrite_update_stmt): Always walk all uses/defs.
20798 (dump_update_ssa): Adjust.
20799 (init_update_ssa): Take function argument. Track what we are
20801 (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
20802 (create_new_def_for): Initialize for cfun, assert we are initialized
20804 (mark_sym_for_renaming): Simplify.
20805 (mark_set_for_renaming): Do not initialize update-ssa.
20806 (need_ssa_update_p): Simplify. Take function argument.
20807 (name_mappings_registered_p): Assert we ask for the correct function.
20808 (name_registered_for_update_p): Likewise.
20809 (ssa_names_to_replace): Likewise.
20810 (release_ssa_name_after_update_ssa): Likewise.
20811 (update_ssa): Likewise. Use SYMS_TO_RENAME.
20812 (dump_decl_set): Do not print a newline.
20813 (debug_decl_set): Do it here.
20814 (dump_update_ssa): And here.
20815 * tree-ssa-loop-im.c (move_computations): Adjust.
20816 (movement_possibility): Likewise.
20817 (determine_max_movement): Likewise.
20818 (gather_mem_refs_stmt): Likewise.
20819 * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
20820 or NAME_MEMORY_TAG.
20821 * tree-complex.c (update_all_vops): Remove.
20822 (expand_complex_move): Adjust.
20823 * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
20824 Simplify test for memory referencing statement. Exclude
20825 non-invariant ADDR_EXPRs.
20826 * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
20827 * tree-loop-distribution.c (generate_memset_zero): Adjust.
20828 (rdg_flag_uses): Likewise.
20829 * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
20831 (tree_optimize_tail_calls_1): Also split the
20832 edge from the entry block if we have degenerate PHI nodes in
20833 the first basic block.
20834 * tree.c (init_ttree): Remove memory-tag related code.
20835 (tree_code_size): Likewise.
20836 (tree_node_structure): Likewise.
20837 (build7_stat): Re-write to be build6_stat.
20838 * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
20839 (SSA_VAR_P): Adjust.
20840 (struct tree_memory_tag): Remove.
20841 (struct tree_memory_partition_tag): Likewise.
20842 (union tree_node): Adjust.
20843 (build7): Re-write to be build6.
20844 * tree-pass.h (pass_reset_cc_flags): Remove.
20845 (TODO_update_address_taken): New flag.
20846 (pass_simple_dse): Remove.
20847 * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
20848 * params.h (MAX_ALIASED_VOPS): Remove.
20849 (AVG_ALIASED_VOPS): Likewise.
20850 * omp-low.c (expand_omp_taskreg): Update SSA form.
20851 * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
20852 aliases the lhs in a copy stmt.
20853 * tree-ssa-dse.c (struct address_walk_data): Remove.
20854 (memory_ssa_name_same): Likewise.
20855 (memory_address_same): Likewise.
20856 (get_kill_of_stmt_lhs): Likewise.
20857 (dse_possible_dead_store_p): Simplify, use the oracle. Handle
20858 unused stores. Look through PHI nodes into post-dominated regions.
20859 (dse_optimize_stmt): Simplify. Properly remove stores.
20860 (tree_ssa_dse): Compute dominators.
20861 (execute_simple_dse): Remove.
20862 (pass_simple_dse): Likewise.
20863 * ipa-reference.c (scan_stmt_for_static_refs): Open-code
20864 gimple_loaded_syms and gimple_stored_syms computation.
20865 * toplev.c (dump_memory_report): Dump alias and pta stats.
20866 * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
20867 (vn_reference_eq): Likewise.
20868 (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
20869 copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
20870 valueize_vuses): Remove.
20871 (get_def_ref_stmt_vuses): Simplify. Rename to ...
20872 (get_def_ref_stmt_vuse): ... this.
20873 (vn_reference_lookup_2): New function.
20874 (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
20875 walking equivalent vuses. Simplify.
20876 (vn_reference_lookup): Likewise.
20877 (vn_reference_insert): Likewise.
20878 (vn_reference_insert_pieces): Likewise.
20879 (visit_reference_op_call): Simplify.
20880 (visit_reference_op_load): Likewise.
20881 (visit_reference_op_store): Likewise.
20882 (init_scc_vn): Remove shared_lookup_vuses initialization.
20883 (free_scc_vn): Remove shared_lookup_vuses freeing.
20884 (sort_vuses, sort_vuses_heap): Remove.
20885 (get_ref_from_reference_ops): Export.
20886 * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
20887 vector with single vuse pointer.
20888 (vn_reference_lookup_pieces, vn_reference_lookup,
20889 vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
20890 (shared_vuses_from_stmt): Remove.
20891 (get_ref_from_reference_ops): Declare.
20892 * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
20893 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20894 memory-tag related code.
20895 * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
20896 (likely_value): Add comment, skip static-chain of call statements.
20897 (surely_varying_stmt_p): Adjust.
20898 (gimplify_and_update_call_from_tree): Likewise.
20899 (execute_fold_all_builtins): Do not rebuild alias info.
20900 (gimplify_and_update_call_from_tree): Properly update VOPs.
20901 * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
20902 (copy_ref_info): Remove memory-tag related code.
20903 * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
20904 * ipa-pure-const.c (check_decl): Remove memory-tag related code.
20905 (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
20907 * tree-ssa-dom.c (gimple_p): Remove typedef.
20908 (eliminate_redundant_computations): Adjust.
20909 (record_equivalences_from_stmt): Likewise.
20910 (avail_expr_hash): Likewise.
20911 (avail_expr_eq): Likewise.
20912 * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
20913 (stmt_makes_single_load): Likewise.
20914 (stmt_makes_single_store): Likewise.
20915 * tree-ssa-alias.c: Rewrite completely.
20916 (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
20917 debug_mem_sym_stats, dump_mem_sym_stats_for_var,
20918 debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
20919 delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
20920 dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
20921 Remove public functions.
20922 (pass_reset_cc_flags): Remove.
20923 (pass_build_alias): Move ...
20924 * tree-ssa-structalias.c (pass_build_alias): ... here.
20925 * tree-ssa-alias.c (may_be_aliased): Move ...
20926 * tree-flow-inline.h (may_be_aliased): ... here.
20927 tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
20928 count_uses_and_derefs): Move ...
20929 * gimple.c: ... here.
20930 * gimple.h (count_uses_and_derefs): Declare.
20931 * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
20932 ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
20933 same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
20934 indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
20935 ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
20936 call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
20937 get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
20939 * tree-dfa.c (refs_may_alias_p): Move ...
20940 * tree-ssa-alias.c (refs_may_alias_p): ... here. Extend.
20941 * tree-ssa-alias.h: New file.
20942 * tree-ssa-sink.c (is_hidden_global_store): Adjust.
20943 (statement_sink_location): Likewise.
20944 * opts.c (decode_options): Do not adjust max-aliased-vops or
20945 avg-aliased-vops values.
20946 * timevar.def (TV_TREE_MAY_ALIAS): Remove.
20947 (TV_CALL_CLOBBER): Likewise.
20948 (TV_FLOW_SENSITIVE): Likewise.
20949 (TV_FLOW_INSENSITIVE): Likewise.
20950 (TV_MEMORY_PARTITIONING): Likewise.
20951 (TV_ALIAS_STMT_WALK): New timevar.
20952 * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
20953 * tree-ssa-address.c (create_mem_ref_raw): Use build6.
20954 (get_address_description): Remove memory-tag related code.
20955 * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
20956 * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
20957 * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
20958 and immediate uses in statements. Document.
20959 * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
20960 (dump_symbols): Remove.
20961 (dump_gimple_mem_ops): Do not dump loaded or stored syms.
20962 * alias.c (get_deref_alias_set): New function split out from ...
20963 (get_alias_set): ... here.
20964 * alias.h (get_deref_alias_set): Declare.
20965 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
20966 type parameter. Remove restrict pointer handling. Create a
20967 ref-all pointer in case type-based alias sets do not conflict.
20968 (vect_analyze_data_refs): Remove SMT related code.
20969 * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
20970 (vectorizable_load): Likewise.
20971 * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
20972 (DR_SYMBOL_TAG, DR_VOPS): Remove.
20973 * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
20974 Ignore vops and SMTs.
20975 (dr_analyze_alias): Likewise..
20976 (free_data_ref): Likewise.
20977 (create_data_ref): Likewise.
20978 (analyze_all_data_dependences): Likewise.
20979 (get_references_in_stmt): Adjust.
20980 * tree-flow-inline.h (gimple_aliases_computed_p,
20981 gimple_addressable_vars, gimple_call_clobbered_vars,
20982 gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
20983 factoring_name_p, mark_call_clobbered, clear_call_clobbered,
20984 compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
20985 gimple_mem_ref_stats): Remove.
20986 (gimple_vop): New function.
20987 (op_iter_next_use): Remove vuses and mayuses cases.
20988 (op_iter_next_def): Remove vdefs case.
20989 (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
20990 (clear_and_done_ssa_iter): Do not set removed fields.
20991 (op_iter_init): Likewise. Skip vuse and/or vdef if requested.
20992 Assert we are not iterating over vuses or vdefs if not also
20993 iterating over uses or defs.
20994 (op_iter_init_use): Likewise.
20995 (op_iter_init_def): Likewise.
20996 (op_iter_next_vdef): Remove.
20997 (op_iter_next_mustdef): Likewise.
20998 (op_iter_init_vdef): Likewise.
20999 (compare_ssa_operands_equal): Likewise.
21000 (link_use_stmts_after): Handle vuse operand.
21001 (is_call_used): Use is_call_clobbered.
21002 (is_call_clobbered): Global variables are always call clobbered,
21003 query the call-clobbers bitmap.
21004 (mark_call_clobbered): Ignore global variables.
21005 (clear_call_clobbered): Likewise.
21006 * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
21007 virtual operands sanity check.
21008 * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
21010 (TARGET_MEM_REF): Remove TMR_TAG operand.
21011 * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
21012 Remove call-clobber related code.
21013 (remove_referenced_var): Likewise. Do not clear mpt or symbol_mem_tag.
21014 (dump_variable): Do not dump SMTs, memory stats, may-aliases or
21015 partitions or escape reason.
21016 (get_single_def_stmt, get_single_def_stmt_from_phi,
21017 get_single_def_stmt_with_phi): Remove.
21018 (dump_referenced_vars): Tidy.
21019 (get_ref_base_and_extent): Allow bare decls.
21020 (collect_dfa_stats): Adjust.
21021 * graphite.c (rename_variables_in_stmt): Adjust.
21022 (graphite_copy_stmts_from_block): Likewise.
21023 (translate_clast): Likewise.
21024 * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
21026 (translate_vuse_through_block): Use the oracle.
21027 (phi_translate_1): Adjust.
21028 (value_dies_in_block_x): Use the oracle. Cache the outcome
21030 (valid_in_sets): Check if the VUSE for
21031 a REFERENCE is available.
21032 (eliminate): Do not remove stmts during elimination,
21033 instead queue and remove them afterwards.
21034 (do_pre): Do not rebuild alias info.
21035 (pass_pre): Run TODO_rebuild_alias before PRE.
21036 * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
21037 * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
21038 (mark_all_v_defs_stmt): Remove.
21039 (mark_all_v_defs_seq): Adjust.
21040 (sra_replace): Likewise.
21041 (scalarize_use): Likewise.
21042 (scalarize_copy): Likewise.
21043 (scalarize_init): Likewise.
21044 (scalarize_ldst): Likewise.
21045 (todoflags): Remove.
21046 (tree_sra): Do not rebuild alias info.
21047 (tree_sra_early): Adjust.
21048 (pass_sra): Run TODO_update_address_taken before SRA.
21049 * tree-predcom.c (set_alias_info): Remove.
21050 (prepare_initializers_chain): Do not call it.
21051 (mark_virtual_ops_for_renaming): Adjust.
21052 (mark_virtual_ops_for_renaming_list): Remove.
21053 (initialize_root_vars): Adjust.
21054 (initialize_root_vars_lm): Likewise.
21055 (prepare_initializers_chain): Likewise.
21056 * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
21057 (may_propagate_copy_into_stmt): Likewise.
21058 (merge_alias_info): Do nothing for now.
21059 (propagate_tree_value_into_stmt): Adjust.
21060 (stmt_may_generate_copy): Likewise.
21061 * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
21062 not mark symbols for renaming.
21063 (forward_propagate_addr_expr): Match up push/pop_stmt_changes
21064 with the same statement, make sure to update the new pointed-to one.
21065 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
21066 call statements, do not mark symbols for renaming.
21067 (mark_operand_necessary): Dump something.
21068 (ref_may_be_aliased): New function.
21069 (mark_aliased_reaching_defs_necessary_1): New helper function.
21070 (mark_aliased_reaching_defs_necessary): Likewise.
21071 (mark_all_reaching_defs_necessary_1): Likewise.
21072 (mark_all_reaching_defs_necessary): Likewise.
21073 (propagate_necessity): Do not process virtual PHIs. For
21074 non-aliased loads mark all reaching definitions as necessary.
21075 For aliased loads and stores mark the immediate dominating
21076 aliased clobbers as necessary.
21077 (visited): New global static.
21078 (perform_tree_ssa_dce): Free visited bitmap after propagating
21080 (remove_dead_phis): Perform simple dead virtual PHI removal.
21081 (remove_dead_stmt): Properly unlink virtual operands when
21083 (eliminate_unnecessary_stmts): Schedule PHI removal after
21085 * tree-ssa-ter.c (is_replaceable_p): Adjust.
21086 (process_replaceable): Likewise.
21087 (find_replaceable_in_bb): Likewise.
21088 * tree-ssa.c (verify_ssa_name): Verify all VOPs are
21089 based on the single gimple vop.
21090 (verify_flow_insensitive_alias_info): Remove.
21091 (verify_flow_sensitive_alias_info): Likewise.
21092 (verify_call_clobbering): Likewise.
21093 (verify_memory_partitions): Likewise.
21094 (verify_alias_info): Likewise.
21095 (verify_ssa): Adjust..
21096 (execute_update_addresses_taken): Export. Update SSA
21097 manually. Optimize only when optimizing. Use a local bitmap.
21098 (pass_update_address_taken): Remove TODO_update_ssa, add
21100 (pass_update_address_taken): Just use TODO_update_address_taken.
21101 (init_tree_ssa): Do not initialize addressable_vars.
21102 (verify_ssa): Verify new VUSE / VDEF properties.
21103 Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
21104 Do not call verify_alias_info.
21105 (delete_tree_ssa): Clear the VUSE, VDEF operands.
21106 Do not free the loaded and stored syms bitmaps. Reset the escaped
21107 and callused solutions. Do not free addressable_vars.
21108 Remove memory-tag related code.
21109 (warn_uninitialized_var): Aliases are always available.
21110 * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
21111 * lambda-code.c (can_put_in_inner_loop): Adjust.
21112 (can_put_after_inner_loop): Likewise.
21113 (perfect_nestify): Likewise.
21114 * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
21115 (vect_gen_widened_results_half): Remove CALL_EXPR handling.
21116 (vectorizable_conversion): Do not mark symbols for renaming.
21117 * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
21118 (expand_call_inline): Unlink the calls virtual operands before
21120 (tree_function_versioning): Do not call update_ssa if we are not
21121 updating clones. Simplify.
21122 * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
21123 (propagate_with_phi): Likewise..
21124 * tree-outof-ssa.c (create_temp): Remove memory tag and call
21125 clobber code. Assert we are not aliased or global.
21126 * tree-flow.h: Include tree-ssa-alias.h
21127 (enum escape_type): Remove.
21128 (struct mem_sym_stats_d): Likewise.
21129 (struct mem_ref_stats_d): Likewise.
21130 (struct gimple_df): Add vop member. Remove global_var,
21131 call_clobbered_vars, call_used_vars, addressable_vars,
21132 aliases_compted_p and mem_ref_stats members. Add syms_to_rename,
21133 escaped and callused members.
21134 (struct ptr_info_def): Remove all members, add points-to solution
21136 (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
21137 call_clobbered, escape_mask, mpt and symbol_mem_tag members.
21138 * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
21139 (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
21140 (tree-ssa-alias.o): Likewise.
21141 (toplev.o): Add tree-ssa-alias.h
21142 (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
21143 * gimple.c (gimple_set_bb): Fix off-by-one error.
21144 (is_gimple_reg): Do not handle memory tags.
21145 (gimple_copy): Also copy virtual operands.
21146 Delay updating the statement. Do not reset loaded and stored syms.
21147 (gimple_set_stored_syms): Remove.
21148 (gimple_set_loaded_syms): Likewise.
21149 (gimple_call_copy_skip_args): Copy the virtual operands
21150 and mark the new statement modified.
21151 * tree-ssa-structalias.c (may_alias_p): Remove.
21152 (set_uids_in_ptset): Take the alias set to prune with as
21153 parameter. Fold in the alias test of may_alias_p.
21154 (compute_points_to_sets): Compute whether a ptr is dereferenced
21155 in a local sbitmap.
21156 (process_constraint): Deal with &ANYTHING on the lhs, reject all
21157 other ADDRESSOF constraints on the lhs.
21158 (get_constraint_for_component_ref): Assert that we don't get
21159 ADDRESSOF constraints from the base of the reference.
21160 Properly generate UNKNOWN_OFFSET for DEREF if needed.
21161 (struct variable_info): Remove collapsed_to member.
21162 (get_varinfo_fc): Remove.
21163 (new_var_info): Do not set collapsed_to.
21164 (dump_constraint): Do not follow cycles.
21165 (dump_constraint_graph): Likewise.
21166 (build_pred_graph): Likewise.
21167 (build_succ_graph): Likewise.
21168 (rewrite_constraints): Likewise.
21169 (do_simple_structure_copy): Remove.
21170 (do_rhs_deref_structure_copy): Remove.
21171 (do_lhs_deref_structure_copy): Remove.
21172 (collapse_rest_of_var): Remove.
21173 (do_structure_copy): Re-implement.
21174 (pta_stats): New global variable.
21175 (dump_pta_stats): New function.
21176 (struct constraint_expr): Make offset signed.
21177 (UNKNOWN_OFFSET): Define special value.
21178 (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
21179 (solution_set_expand): New helper function split out from ...
21180 (do_sd_constraint): ... here.
21181 (solution_set_add): Handle UNKNOWN_OFFSET. Handle negative offsets.
21182 (do_ds_constraint): Likewise.
21183 (do_sd_constraint): Likewise. Do not special-case ESCAPED = *ESCAPED
21184 and CALLUSED = *CALLUSED.
21185 (set_union_with_increment): Make inc argument signed.
21186 (type_safe): Remove.
21187 (get_constraint_for_ptr_offset): Handle unknown and negative
21189 (first_vi_for_offset): Handle offsets before start. Bail
21190 out early for offsets beyond the variable extent.
21191 (first_or_preceding_vi_for_offset): New function.
21192 (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
21193 Together with ESCAPED = *ESCAPED this properly computes reachability.
21194 (find_what_var_points_to): New function.
21195 (find_what_p_points_to): Implement in terms of find_what_var_points_to.
21196 (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
21197 pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
21198 pt_solutions_intersect): New functions.
21199 (compute_call_used_vars): Remove.
21200 (compute_may_aliases): New main entry into PTA computation.
21201 * gimple.h (gimple_p): New typedef.
21202 (struct gimple_statement_base): Remove references_memory_p.
21203 (struct gimple_statement_with_memory_ops_base): Remove
21204 vdef_ops, vuse_ops, stores and loads members. Add vdef and vuse
21206 (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
21207 gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
21208 gimple_set_references_memory): Remove.
21209 (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
21210 gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
21212 * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
21213 (verify_expr): Allow RESULT_DECL.
21214 (gimple_duplicate_bb): Do not copy virtual operands.
21215 (gimple_duplicate_sese_region): Adjust.
21216 (gimple_duplicate_sese_tail): Likewise.
21217 (mark_virtual_ops_in_region): Remove.
21218 (move_sese_region_to_fn): Do not call it.
21219 * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
21220 and pass_simple_dse.
21221 (execute_function_todo): Handle TODO_update_address_taken,
21222 call execute_update_addresses_taken for TODO_rebuild_alias.
21223 (execute_todo): Adjust.
21224 (execute_one_pass): Init dump files early.
21225 * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
21227 (create_general_new_stmt): Clear vops.
21228 * tree-ssa-reassoc.c (get_rank): Adjust.
21229 * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
21230 symbols for renaming.
21231 * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
21232 (PARAM_AVG_ALIASED_VOPS): Likewise.
21233 * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
21234 (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
21235 * tree-ssa-operands.c: Simplify for new virtual operand representation.
21236 (operand_build_cmp, copy_virtual_operands,
21237 create_ssa_artificial_load_stmt, add_to_addressable_set,
21238 gimple_add_to_addresses_taken): Remove public functions.
21239 (unlink_stmt_vdef): New function.
21241 2009-04-03 Alan Modra <amodra@bigpond.net.au>
21243 * config.gcc (powerpc-*-linux*): Merge variants.
21245 2009-04-02 Chao-ying Fu <fu@mips.com>
21246 James Grosbach <james.grosbach@microchip.com>
21248 * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
21249 num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
21251 (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
21252 keep_interrupts_masked_p, use_debug_exception_return_p.
21253 (mips_attribute_table): Add interrupt, use_shadow_register_set,
21254 keep_interrupts_masked, use_debug_exception_return.
21255 (mips_interrupt_type_p, mips_use_shadow_register_set_p,
21256 mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
21258 (mips_function_ok_for_sibcall): Return false for interrupt handlers.
21259 (mips_print_operand): Process COP0 registers to print $0 .. $31
21260 correctly for GAS to process.
21261 (mips_interrupt_extra_call_saved_reg_p): New function.
21262 (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
21264 (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
21265 (mips_compute_frame_info): Add supports for interrupt context that
21266 includes doubleword accumulators and COP0 registers.
21267 (mips_for_each_saved_acc): New function.
21268 (mips_for_each_saved_gpr_and_fpr): Change the function name from
21269 mips_for_each_saved_reg.
21270 (mips_save_reg): Save accumulators.
21271 (mips_kernel_reg_p): A new for_each_rtx callback.
21272 (mips_expand_prologue): Support interrupt handlers.
21273 (mips_restore_reg): Restore accumulators.
21274 (mips_expand_epilogue): Support interrupt handlers.
21275 (mips_can_use_return_insn): Return false for interrupt handlers.
21276 (mips_epilogue_uses): New function.
21277 * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
21278 UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
21279 (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
21280 cop0_move): New instructions.
21281 * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
21282 * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
21284 (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
21286 (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
21287 (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
21288 interrupt handlers, we use K0 as the temporary register.
21289 (EPILOGUE_USES): Change to a function call.
21290 * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
21291 handlers, we use K0 as the temporary register.
21293 * doc/extend.texi (Function Attributes): Document interrupt,
21294 use_shadow_register_set, keep_interrupts_masked,
21295 use_debug_exception_return for MIPS attributes.
21297 2009-04-03 Alan Modra <amodra@bigpond.net.au>
21299 * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
21300 Remove a number of t-files from tmake_file.
21301 * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
21302 * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
21303 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
21304 target_prototype, not TARGET_PROTOTYPE.
21305 (LINK_OS_GNU_SPEC): Define.
21306 * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
21307 and darwin-ldoubdle.c.
21309 2009-04-02 Michael Meissner <meissner@linux.vnet.ibm.com>
21312 * gcc.c (save_temps_flag): Add support for -save-temps=obj.
21313 (cpp_options): Ditto.
21314 (default_compilers): Ditto.
21315 (display_help): Ditto.
21316 (process_command): Ditto.
21317 (do_spec_1): Ditto.
21318 (set_input): Use lbasename instead of duplicate code.
21319 (save_temps_prefix): New static for -save-temps=obj.
21320 (save_temps_length): Ditto.
21322 * doc/invoke.texi (-save-temps=obj): Document new variant to
21323 -save-temps switch.
21325 2009-04-02 Jeff Law <law@redhat.com>
21327 * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
21330 2009-04-02 H.J. Lu <hongjiu.lu@intel.com>
21332 * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
21333 * configure: Regenerated.
21335 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
21337 * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
21338 share the argument list.
21340 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
21344 2009-02-12 Diego Novillo <dnovillo@google.com>
21346 * varpool.c (debug_varpool): New.
21347 * cgraph.h (debug_varpool): Declare.
21349 2009-04-02 Jan Hubicka <jh@suse.cz>
21351 * passes.c (init_optimization_passes): Remove two copies of ehcleanup
21354 2009-04-02 H.J. Lu <hongjiu.lu@intel.com>
21356 * config/i386/i386.c (ix86_abi): Move initialization to ...
21357 (override_options): Here.
21359 2009-04-02 Christian Bruel <christian.bruel@st.com>
21361 * config/sh/sh.c (sh_dwarf_register_span): New function.
21362 (TARGET_DWARF_REGISTER_SPAN): Define.
21363 * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
21365 2009-04-02 Ira Rosen <irar@il.ibm.com>
21367 PR tree-optimization/39595
21368 * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
21369 interleaved loads group is not greater than the SLP group size.
21371 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
21373 * builtins.c (is_builtin_name): New.
21374 (called_as_built_in): Use is_builtin_name.
21375 * tree.h (is_builtin_name): New.
21376 * varasm.c (incorporeal_function_p): Use is_builtin_name
21378 2009-04-02 Andrew Stubbs <ams@codesourcery.com>
21380 * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
21382 2009-04-02 Dodji Seketeli <dodji@redhat.com>
21385 * c-decl.c (clone_underlying_type): Move this ...
21386 * c-common.c (set_underlying_type): ... here.
21387 Also, make sure the function properly sets TYPE_STUB_DECL() on
21388 the newly created typedef variant type.
21389 * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
21390 * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
21393 2009-04-02 Richard Guenther <rguenther@suse.de>
21395 PR tree-optimization/37221
21396 * tree-flow.h (degenerate_phi_result): Declare.
21397 * tree-ssa-dom.c (degenerate_phi_result): Export.
21398 * tree-scalar-evolution.c (analyze_initial_condition): If
21399 the initial condition is defined by a degenerate PHI node
21400 use the degenerate value.
21402 2009-04-01 Eric Botcazou <ebotcazou@adacore.com>
21404 PR rtl-optimization/39588
21405 * combine.c (merge_outer_ops): Do not set the constant when this
21407 (simplify_shift_const_1): Do not modify it either in this case.
21409 2009-04-01 Steven Bosscher <steven@gcc.gnu.org>
21411 * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
21412 tuning is deprecated if -mtune value is set to an Itanium1 variant.
21414 2009-04-01 Janis Johnson <janis187@us.ibm.com>
21417 * c-lex.c (interpret_float): Default (no suffix) is double.
21419 2009-04-1 Xinliang David Li <davidxl@google.com>
21421 * config/i386/i386.c (legitimate_constant_p): Recognize
21422 all one vector constant.
21424 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21426 * config/vax/vax.c: Add #includes to silence warnings.
21427 Change #include order to silence two warnings.
21429 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21431 * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
21432 (ASM_SPEC): Pass -k to the assembler for PIC code.
21434 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21436 * config.gcc: Add vax-*-linux* to the switch.
21437 * config/vax/linux.h: New file. (TARGET_VERSION,
21438 TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
21440 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21442 * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
21443 Use predicate macros instead of GET_CODE() == foo.
21444 * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
21445 ashlsi3, rotrsi3, <unnamed>): Likewise.
21447 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21449 * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
21450 jbbccihi, jbbccisi): Remova trailing whitespace.
21451 * config/vax/constraints.md: Likewise.
21452 * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
21453 * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
21454 * config/vax/predicates.md: Likewise.
21455 * config/vax/vax.c (print_operand_address, vax_output_int_move,
21456 vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
21457 * config/vax/vax.h: Likewise.
21458 * config/vax/vax.md (nonlocal_goto): Likewise.
21460 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21462 * config/vax/vax.c (vax_float_literal, vax_output_int_move)
21463 (indirectable_address_p, adjacent_operands_p): Add spaces around
21465 * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
21467 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21469 * config/vax/vax.c (legitimate_constant_address_p,
21470 legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
21471 index_term_p, reg_plus_index_p, legitimate_address_p,
21472 vax_mode_dependent_address_p): Update comments to match functions
21473 modified by the recent int->bool conversion.
21475 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21477 * config/vax/builtins.md: Update copyright message.
21478 * config/vax/constraints.md: Likewise.
21479 * config/vax/netbsd-elf.h: Likewise.
21480 * config/vax/predicates.md: Likewise.
21481 * config/vax/vax-protos.h: Likewise.
21482 * config/vax/vax.c: Likewise.
21483 * config/vax/vax.h: Likewise.
21484 * config/vax/vax.md: Likewise.
21485 * config/vax/vax.opt: Likewise.
21487 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
21489 * config/vax/builtins.md (ffssi2, ffssi2_internal,
21490 sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
21491 * config/vax/constraints.md (B, R): Likewise.
21492 * config/vax/predicates.md (external_memory_operand,
21493 nonimmediate_addsub_di_operand): Likewise.
21494 * config/vax/vax.c (vax_output_int_add): Likewise.
21495 * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
21496 untyped_call): Likewise.
21498 2009-04-01 Matt Thomas <matt@3am-software.com>
21500 * config/vax/predicates.md: New file.
21501 (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
21502 external_const_operand, nonsymbolic_operand, external_memory_operand,
21503 indirect_memory_operand, indexed_memory_operand,
21504 illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
21505 nonimmediate_addsub_di_operand, general_addsub_di_operand): New
21507 * config/vax/constraints.md: New file.
21508 (Z0, U06, U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
21510 * config/vax/builtins.md: New file.
21511 (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
21512 jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
21514 * config/vax/vax.opt (mqmath): Add option.
21515 * config/vax/vax.md (isfx): Extend with DI.
21516 (VAXintQH, VAXintQHSD): Define.
21517 (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
21518 mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
21519 and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
21520 one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
21521 (movdi): Update constraints and use vax_output_int_move().
21522 (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
21523 movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
21524 pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
21525 nonlocal_goto): New.
21526 (mov<mode>): Extend accepted operand types.
21527 (subdi3_old): Rename from subdi3, change update constraints and use
21528 a new implementation.
21529 * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
21530 (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
21531 MOVE_RATIO, CLEAR_RATIO): Define.
21532 (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
21533 CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
21534 (PRINT_OPERAND): Redefine using a function instead of inlined code.
21535 * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
21536 (split_quadword_operands): Make static and really allow variable
21538 (print_operand_address): Update for PIC generation.
21539 (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
21540 indexable_address_p, fixup_mathdi_operand,
21541 vax_expand_addsub_di_operands, adjacent_operands_p): New.
21542 (vax_float_literal, legitimate_constant_p,
21543 indirectable_constant_address_p, index_term_p,
21544 reg_plus_index_p): Return bool instead of int.
21545 (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
21547 (vax_output_int_move, vax_output_int_add): Extend to allow PIC
21549 (vax_output_conditional_branch): Indent.
21550 (legitimate_constant_address_p, indirectable_constant_address_p,
21551 indirectable_address_p, nonindexed_address_p, legitimate_address_p,
21552 vax_mode_dependent_address_p): Return bool instead of int, update for
21554 * config/vax/vax-protos.h (legitimate_constant_address_p,
21555 legitimate_constant_p, legitimate_address_p,
21556 vax_mode_dependent_address_p): Change declaration to bool.
21557 (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
21558 vax_expand_addsub_di_operands, vax_output_int_subtract,
21559 vax_output_movmemsi): Declare.
21560 (split_quadword_operands, vax_float_literal): Delete declaration.
21561 * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
21562 * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
21563 VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
21564 ASM_OUTPUT_DWARF_PCREL): Define.
21565 (ASM_SPEC): Change definition to allow PIC generation.
21567 2009-04-01 Steve Ellcey <sje@cup.hp.com>
21569 * doc/sourcebuild.texi: Update front-end requirements.
21571 2009-04-01 Jakub Jelinek <jakub@redhat.com>
21574 * config/rs6000/rs6000.md (andsi3_internal5_nomc,
21575 anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
21576 (booldi3_internal3): Use boolean_or_operator instead of
21579 2009-04-01 Joseph Myers <joseph@codesourcery.com>
21582 * c-decl.c (grokdeclarator): Pedwarn for file-scope array
21583 declarator whose size is not an integer constant expression but
21584 folds to an integer constant, then treat it as a constant
21587 2009-04-01 Richard Guenther <rguenther@suse.de>
21589 * fold-const.c (fold_plusminus_mult_expr): Do not fold
21590 i * 4 + 2 to (i * 2 + 1) * 2.
21592 2009-04-01 Jakub Jelinek <jakub@redhat.com>
21595 * c-parser.c (c_parser_asm_statement): Skip until close paren and
21596 return if c_parser_asm_string_literal returned NULL.
21598 2009-04-01 Nick Clifton <nickc@redhat.com>
21600 * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
21602 * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
21603 * config/m32c/m32c-lib2.c: Remove unused typedefs. Rename the
21604 other typedefs to avoid conflicts with libgcc2.c. Define labels
21605 to gain 16-bit bit-manipulation functions from libgcc2.c and then
21607 * config/m32c/m32c-lib2-trapv.c: New file. Define labels
21608 to gain 16-bit trapping arithmetic functions from libgcc2.c and
21611 2009-04-01 Rafael Avila de Espindola <espindola@google.com>
21613 * varasm.c (default_function_rodata_section): Declare DOT as
21616 2009-04-01 Kai Tietz <kai.tietz@onevision.com>
21617 Andrey Galkin <agalkin@hypercom.com>
21620 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
21621 Make object_name unique for each process.
21623 2009-04-01 Jakub Jelinek <jakub@redhat.com>
21626 * omp-low.c (remove_exit_barrier): Don't optimize if there are any
21627 addressable variables in the parallel that could go out of scope while
21628 running queued tasks.
21630 2009-04-01 Anatoly Sokolov <aesok@post.ru>
21632 * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
21633 (CASE_VALUES_THRESHOLD): Redefine.
21634 * config/avr/avr.c (avr_override_options): Remove initialization of
21635 avr_case_values_threshold variable.
21636 (avr_case_values_threshold): Remove variable. Add new function.
21637 * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
21638 * config/avr/avr.opt (mno-tablejump): Remove option.
21639 * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
21641 2009-04-01 DJ Delorie <dj@redhat.com>
21643 * varasm.c (default_function_rodata_section): Don't assume
21644 anything about where the first '.' in the section name is.
21646 2009-04-01 Alan Modra <amodra@bigpond.net.au>
21648 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
21649 rs6000_emit_stack_tie.
21651 2009-03-31 Ian Lance Taylor <iant@google.com>
21653 * tree-eh.c (tree_remove_unreachable_handlers): Compare
21654 gimple_code with GIMPLE_RESX, not RESX.
21656 2009-03-31 Joseph Myers <joseph@codesourcery.com>
21658 * c-common.c (c_get_ident): New.
21659 (c_common_nodes_and_builtins): Call it for type names that may be NULL.
21661 2009-04-01 Ben Elliston <bje@au.ibm.com>
21663 * config/rs6000/sysv4.opt (msdata): Improve option description.
21665 2009-03-31 Steve Ellcey <sje@cup.hp.com>
21667 * config/ia64/ia64.md (divsf3_internal_lat): Remove.
21668 (divdf3_internal_lat): Remove.
21669 (divxf3_internal_lat): Remove.
21670 (divxf3_internal_thr): Remove.
21671 (divxf): Use divxf3_internal.
21672 * config/ia64/div.md (divsf3_internal_lat): New.
21673 (divdf3_internal_lat): New.
21674 (divxf3_internal): New.
21676 2009-03-31 Joseph Myers <joseph@codesourcery.com>
21679 * Makefile.in (USE_GCC_STDINT): Define.
21680 (stmp-int-hdrs): Install stdint.h if applicable.
21681 * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
21683 (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
21684 (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
21685 UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21686 INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21687 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21688 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21689 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21690 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21691 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21692 (c_common_nodes_and_builtins): Initialize
21693 underlying_wchar_type_node. Do not initialize
21694 signed_wchar_type_node or unsigned_wchar_type_node. Initialize
21695 nodes for new types.
21696 (c_stddef_cpp_builtins): Define macros for new types.
21697 * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
21699 (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
21700 CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
21701 CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
21702 CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
21703 CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
21704 CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
21705 CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
21706 CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
21707 CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
21708 (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
21709 (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
21710 int16_type_node, int32_type_node, int64_type_node,
21711 uint8_type_node, uint16_type_node, c_uint32_type_node,
21712 c_uint64_type_node, int_least8_type_node, int_least16_type_node,
21713 int_least32_type_node, int_least64_type_node,
21714 uint_least8_type_node, uint_least16_type_node,
21715 uint_least32_type_node, uint_least64_type_node,
21716 int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
21717 int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
21718 uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
21719 uintptr_type_node): Define.
21720 * c-cppbuiltin.c (builtin_define_constants,
21721 builtin_define_type_minmax): New.
21722 (builtin_define_stdint_macros): Define more macros.
21723 (c_cpp_builtins): Define more limit macros.
21724 (type_suffix): New.
21725 (builtin_define_type_max): Define in terms of
21726 builtin_define_type_minmax. Remove is_long parameter. All
21728 * config.gcc (use_gcc_stdint): Define.
21729 (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
21730 Add newlib-stdint.h for generic targets.
21731 * config/glibc-stdint.h, config/newlib-stdint.h,
21732 ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
21733 * config/m32c/m32c.h (UINTPTR_TYPE): Define.
21734 * config/score/score.h (UINTPTR_TYPE): Define.
21735 * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21736 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21737 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21738 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21739 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21740 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21741 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21742 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21743 * config/spu/spu.h (STDINT_LONG32): Define.
21744 * configure.ac (use_gcc_stdint): Substitute.
21745 * configure: Regenerate.
21746 * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
21747 __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
21748 __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
21749 __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
21750 __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
21751 __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
21752 __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
21753 __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
21754 __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
21755 __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
21756 __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
21757 __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
21758 __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
21759 __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
21760 __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
21761 __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
21762 __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
21763 __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
21764 __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
21765 __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
21766 __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
21767 * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
21768 INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
21769 INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21770 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21771 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21772 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21773 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21774 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
21776 2009-03-31 Bernd Schmidt <bernd.schmidt@analog.com>
21778 * loop-iv.c (suitable_set_for_replacement): Renamed from
21779 simplify_using_assignment; changed to return bool and to accept new
21780 args DEST and SRC. Return true iff we find a source/destination pair
21781 that can be used to make a replacement, and fill SRC and DEST if so.
21782 Remove arg ALTERED. Don't deal with altered regs here. All callers
21784 (simplify_using_initial_values): Deal with altered regs here and track
21785 more precisely the effect they have on the validity of our expression.
21787 * loop-iv.c (simplify_using_condition): A condition of the form
21788 (EQ REG CONST) can be used to simply make a substitution.
21789 (simplify_using_initial_values): Keep track of conditions we have seen
21790 and keep using them to simplify new expressions, while applying the
21791 same substitutions to them as to the expression.
21793 * simplify-rtx.c (simplify_relational_operation_1): Simplify
21794 (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
21797 * loop-iv.c (determine_max_iter): New arg OLD_NITER. All callers
21798 changed. Use this when trying to improve the upper bound.
21799 Generate the comparison by using simplify_gen_relational.
21801 * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
21803 * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
21805 (simplify_using_assignment, simplify_using_initial_values): Call
21806 replace_in_expr to make replacements. Call replace_single_def_regs
21807 once on the initial version of the expression.
21809 2009-03-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
21812 * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
21814 2009-03-31 Richard Guenther <rguenther@suse.de>
21816 PR middle-end/31029
21817 * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
21818 equality comparisons. Fold C - X CMP X if C % 2 == 1.
21820 2009-03-31 Richard Guenther <rguenther@suse.de>
21822 * tree.h (div_if_zero_remainder): Declare.
21823 * fold-const.c (div_if_zero_remainder): Export.
21824 * tree-ssa-forwprop.c
21825 (forward_propagate_addr_into_variable_array_index): Handle
21826 constant array index addition outside of the variable index.
21828 2009-03-31 Joseph Myers <joseph@codesourcery.com>
21831 * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
21832 define_splits, floatunssi<mode>2): Require x87 conversions from
21833 DImode to be permitted.
21835 2009-03-31 Joseph Myers <joseph@codesourcery.com>
21837 PR preprocessor/15638
21838 * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
21840 2009-03-31 Richard Guenther <rguenther@suse.de>
21842 PR middle-end/23401
21843 PR middle-end/27810
21844 * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
21845 (struct tree_decl_with_vis): Remove gimple_formal_temp member.
21846 * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
21847 a separate statement.
21848 * gimplify.c (pop_gimplify_context): Remove formal temp handling.
21849 (lookup_tmp_var): Likewise.
21850 (is_gimple_formal_tmp_or_call_rhs): Remove.
21851 (is_gimple_reg_or_call_rhs): Rename to ...
21852 (is_gimple_reg_rhs_or_call): ... this.
21853 (is_gimple_mem_or_call_rhs): Rename to ...
21854 (is_gimple_mem_rhs_or_call): ... this.
21855 (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call. Set
21856 DECL_GIMPLE_REG_P only if is_formal is true.
21857 (gimplify_compound_lval): Use is_gimple_reg. Remove workaround
21858 for non-proper post-modify expression gimplification.
21859 (gimplify_self_mod_expr): For post-modify expressions gimplify
21860 the lvalue to a minimal lvalue.
21861 (rhs_predicate_for): Remove formal temp case.
21862 (gimplify_modify_expr_rhs): Likewise.
21863 (gimplify_addr_expr): Use is_gimple_reg.
21864 (gimplify_expr): Remove formal temp cases.
21865 (gimple_regimplify_operands): Likewise.
21866 * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
21867 and FILTER_EXPR like constants.
21868 * gimple.c (walk_gimple_op): Fix val_only initialization, use
21870 (is_gimple_formal_tmp_rhs): Remove.
21871 (is_gimple_reg_rhs): Remove special casing.
21872 (is_gimple_mem_rhs): Fix.
21873 (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
21874 (is_gimple_formal_tmp_var): Remove.
21875 (is_gimple_formal_tmp_reg): Likewise.
21876 (is_gimple_min_lval): Allow invariant component ref parts.
21877 * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
21878 is_gimple_formal_tmp_reg): Remove declarations.
21879 * tree-cfg.c (verify_expr): Verify that variables with address
21880 taken do not have DECL_GIMPLE_REG_P set.
21881 * tree-mudflap.c (mf_build_check_statement_for): Use
21882 force_gimple_operand instead of gimplify_expr.
21884 2009-03-31 Ayal Zaks <zaks@il.ibm.com>
21886 * modulo-sched.c (sms_schedule_by_order): Pass the actual
21887 schedulable rows to compute_split_row.
21889 2009-03-31 Ben Elliston <bje@au.ibm.com>
21892 * config/rs6000/rs6000.c (rs6000_handle_option): Handle
21895 2009-03-31 Alan Modra <amodra@bigpond.net.au>
21897 * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
21898 * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
21899 * configure: Regenerate.
21900 * config.in: Regenerate.
21901 * config/rs6000/rs6000.opt (mtls-markers): Add.
21902 * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
21903 * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
21904 (tls_ld_aix, tls_ld_sysv): Likewise.
21905 (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
21906 (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
21908 2009-03-31 Alan Modra <amodra@bigpond.net.au>
21910 * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
21912 2009-03-30 Jan Hubicka <jh@suse.cz>
21914 * tree-eh.c (make_eh_edges): Set probability 100% to first edge
21916 (tree_remove_unreachable_handlers): Cleanup EH predecestor
21917 detection and label handling.
21919 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
21921 * ira-int.h (ira_allocno): Rename left_conflicts_num to
21922 left_conflicts_size.
21923 (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
21924 ALLOCNO_LEFT_CONFLICTS_SIZE.
21926 * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
21927 remove_allocno_from_bucket_and_push,
21928 allocno_spill_priority_compare, push_allocnos_to_stack,
21929 setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21930 instead of ALLOCNO_LEFT_CONFLICTS_NUM.
21931 (setup_allocno_left_conflicts_num): Ditto. Rename to
21932 setup_allocno_left_conflicts_size.
21933 (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
21934 instead of ALLOCNO_LEFT_CONFLICTS_NUM and
21935 setup_allocno_left_conflicts_size instead of
21936 setup_allocno_left_conflicts_num.
21938 * ira-build.c (ira_create_allocno): Use
21939 ALLOCNO_LEFT_CONFLICTS_SIZE instead of
21940 ALLOCNO_LEFT_CONFLICTS_NUM.
21942 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
21944 * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
21945 instead of DF_LR_OUT.
21947 * ira-lives.c (process_bb_node_lives): Ditto.
21949 * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
21950 instead of DF_LR_{OUT,IN}.
21952 * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
21954 * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
21956 2009-03-30 Jan Hubicka <jh@suse.cz>
21958 * except.c (label_to_region_map): Fix thinko.
21960 2009-03-30 Steve Ellcey <sje@cup.hp.com>
21962 PR middle-end/38237
21963 * tree.h (tree_find_value): New declaration.
21964 * tree.c (tree_find_value): New function.
21965 * varasm.c (assemble_external): Avoid duplicate entries on lists.
21967 2009-03-30 Jakub Jelinek <jakub@redhat.com>
21970 * c-decl.c (struct c_binding): Add locus field.
21971 (bind): Add locus argument, set locus field from it.
21972 (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
21973 add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
21974 (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
21975 implicitly_declare, undeclared_variable, lookup_label,
21976 declare_label, c_make_fname_decl, c_builtin_function,
21977 c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
21980 2009-03-30 H.J. Lu <hongjiu.lu@intel.com>
21983 * config/i386/i386.c (classify_argument): Check total size of
21986 2009-03-30 Martin Jambor <mjambor@suse.cz>
21988 * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
21989 IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
21990 IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
21993 * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
21994 seen_variable_array_ref while also traversing a union.
21996 * tree-inline.c (optimize_inline_calls): Do not call
21997 cgraph_node_remove_callees.
21998 * cgraphbuild.c (remove_cgraph_callee_edges): New function.
21999 (pass_remove_cgraph_callee_edges): New variable.
22000 * passes.c (init_optimization_passes): Add
22001 pass_remove_cgraph_callee_edges after early inlining and before all
22002 late intraprocedural passes.
22004 * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
22006 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22008 * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
22009 Fix typos in names.
22011 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22013 * combine.c (simplify_comparison): Use have_insn_for.
22014 * dojump.c (do_jump): Likewise.
22016 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22018 * config/sparc/sparc.c (sparc_compare_emitted): Remove.
22019 (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
22020 sparc_compare_op0 like sparc_compare_emitted used to be handled.
22021 (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
22022 instead of sparc_compare_emitted.
22023 * config/sparc/sparc.h (sparc_compare_emitted): Remove.
22024 * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
22025 instead of sparc_compare_emitted.
22027 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22029 * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
22030 enter/exit cfglayout mode.
22031 (pass_partition_block): Require it.
22032 * combine.c (find_single_use, reg_dead_at_p): Use CFG.
22033 (combine_instructions): Track basic blocks instead of labels.
22034 (update_cfg_for_uncondjump): New.
22035 (try_combine): Use it. Update jumps after rescanning.
22036 (pass_combine): Require PROP_cfglayout.
22037 * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
22039 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22041 * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
22042 Provide/destroy PROP_cfglayout respectively.
22043 * gcse.c (pass_jump_bypass, pass_gcse): Require it.
22044 * tree-pass.h (PROP_cfglayout): New.
22046 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
22048 * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
22049 fold_convert_const_fixed_from_fixed,
22050 fold_convert_const_fixed_from_int,
22051 fold_convert_const_fixed_from_real, fold_negate_const): Do not
22052 set TREE_CONSTANT_OVERFLOW.
22053 * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
22054 * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
22056 2009-03-30 Ira Rosen <irar@il.ibm.com>
22058 * tree-vect-loop-manip.c: New file.
22059 * tree-vectorizer.c: Update documentation and included files.
22060 (vect_loop_location): Make extern.
22061 (rename_use_op): Move to tree-vect-loop-manip.c
22062 (rename_variables_in_bb, rename_variables_in_loop,
22063 slpeel_update_phis_for_duplicate_loop,
22064 slpeel_update_phi_nodes_for_guard1,
22065 slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
22066 slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
22067 slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
22068 set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
22069 find_loop_location): Likewise.
22070 (new_stmt_vec_info): Move to tree-vect-stmts.c.
22071 (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
22072 get_vectype_for_scalar_type, vect_is_simple_use,
22073 supportable_widening_operation, supportable_narrowing_operation):
22075 (bb_in_loop_p): Move to tree-vect-loop.c.
22076 (new_loop_vec_info, destroy_loop_vec_info,
22077 reduction_code_for_scalar_code, report_vect_op,
22078 vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
22079 (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
22080 (vect_supportable_dr_alignment): Likewise.
22081 * tree-vectorizer.h (tree-data-ref.h): Include.
22082 (vect_loop_location): Declare.
22083 Reorganize function declarations according to the new file structure.
22084 * tree-vect-loop.c: New file.
22085 * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
22086 tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
22087 * tree-vect-data-refs.c: New file.
22088 * tree-vect-patterns.c (timevar.h): Don't include.
22089 * tree-vect-stmts.c: New file.
22090 * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
22091 tree-vect-slp.c, tree-vect-loop.c.
22092 * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
22093 tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
22094 tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
22095 (tree-vect-analyze.o): Remove.
22096 (tree-vect-transform.o): Likewise.
22097 (tree-vect-data-refs.o): Add rule.
22098 (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
22099 tree-vect-slp.o): Likewise.
22100 (tree-vect-patterns.o): Remove redundant dependencies.
22101 (tree-vectorizer.o): Likewise.
22102 * tree-vect-slp.c: New file.
22104 2009-03-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
22106 * optc-gen.awk: Warn if an option flag has multiple different
22109 2009-03-30 Sebastian Pop <sebastian.pop@amd.com>
22111 * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
22112 -floop-block): Document dependences on PPL, CLooG and Graphite.
22114 2009-03-30 Joseph Myers <joseph@codesourcery.com>
22116 PR rtl-optimization/323
22117 * c-common.c (c_fully_fold, convert_and_check,
22118 c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
22119 (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
22120 * c-common.def (EXCESS_PRECISION_EXPR): New.
22121 * c-cppbuiltin.c (builtin_define_float_constants): Define
22122 constants with enough digits for long double.
22123 * c-lex.c (interpret_float): Interpret constant with excess
22124 precision where appropriate.
22125 * c-opts.c (c_common_post_options): Set
22126 flag_excess_precision_cmdline. Give an error for
22127 -fexcess-precision=standard for C++ for processors where the
22128 option is significant.
22129 * c-parser.c (c_parser_conditional_expression): Handle excess
22130 precision in condition.
22131 * c-typeck.c (convert_arguments): Handle arguments with excess
22133 (build_unary_op): Move excess precision outside operation.
22134 (build_conditional_expr): Likewise.
22135 (build_compound_expr): Likewise.
22136 (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
22137 (build_modify_expr): Handle excess precision in RHS.
22138 (convert_for_assignment): Handle excess precision in converted
22140 (digest_init, output_init_element, process_init_element): Handle
22141 excess precision in initializer.
22142 (c_finish_return): Handle excess precision in return value.
22143 (build_binary_op): Handle excess precision in operands and add
22144 excess precision as needed for operation.
22145 * common.opt (-fexcess-precision=): New option.
22146 * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
22147 * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
22148 For standard excess precision, output explicit conversion to and
22149 truncation from XFmode.
22150 (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
22151 *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
22152 *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
22153 define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
22154 define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
22155 floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
22156 divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
22157 *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
22158 *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
22159 define_splits, sqrt<mode>2): Disable where appropriate for
22160 standard excess precision.
22161 * convert.c (convert_to_real): Do not shorten arithmetic to type
22162 for which excess precision would be used.
22163 * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
22164 * doc/invoke.texi (-fexcess-precision=): Document option.
22165 (-mfpmath=): Correct index entry.
22166 * flags.h (enum excess_precision, flag_excess_precision_cmdline,
22167 flag_excess_precision): New.
22168 * langhooks.c (lhd_post_options): Set
22169 flag_excess_precision_cmdline.
22170 * opts.c (common_handle_option): Handle -fexcess-precision=.
22171 * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
22172 init_excess_precision): New.
22173 (lang_dependent_init_target): Call init_excess_precision.
22174 * tree.c (excess_precision_type): New.
22175 * tree.h (excess_precision_type): Declare.
22177 2009-03-30 Joseph Myers <joseph@codesourcery.com>
22180 * c-typeck.c (build_component_ref): Do not copy qualifiers from
22181 non-lvalue to component.
22183 2009-03-29 Joseph Myers <joseph@codesourcery.com>
22185 PR preprocessor/34695
22186 * Makefile.in (c-opts.o): Depend on c-tree.h.
22187 * c-common.c: Move down include of diagnostic.h.
22188 (done_lexing, c_cpp_error): New.
22189 * c-common.h (done_lexing): Declare.
22190 * c-decl.c (c_write_global_declarations): Don't check cpp_errors
22192 * c-opts.c: Include c-tree.h.
22193 (c_common_init_options): Set preprocessor error callback.
22194 (c_common_handle_option): Do not set preprocessor
22195 inhibit_warnings, warnings_are_errors, warn_system_headers,
22196 pedantic_errors or inhibit_warnings flags.
22197 (c_common_post_options): Do not check cpp_errors (parse_in).
22198 (c_common_finish): Do not output dependencies if there were
22199 errors. Do not check return value of cpp_finish.
22200 * c-ppoutput.c (pp_file_change): Set input_location.
22201 * c-tree.h (c_cpp_error): Declare.
22202 * diagnostic.c (diagnostic_set_info_translated): Also initialize
22204 (diagnostic_build_prefix): Check override_column.
22205 * diagnostic.h (diagnostic_info): Add override_column field.
22206 (diagnostic_override_column): Define.
22208 2009-03-28 Paolo Bonzini <bonzini@gnu.org>
22210 * c-common.c (c_expand_expr, c_staticp): Remove.
22211 * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
22212 * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
22213 COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
22214 * c-gimplify.c (gimplify_compound_literal_expr,
22215 optimize_compound_literals_in_ctor): Remove.
22216 (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
22217 * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
22218 * c-semantics.c (emit_local_var): Remove.
22220 * langhooks-def.h (lhd_expand_expr): Remove.
22221 * langhooks.c (lhd_expand_expr): Remove.
22222 * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
22224 * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
22225 handling from c-semantics.c; don't call into langhook.
22226 (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
22227 * gimplify.c (gimplify_compound_literal_expr,
22228 optimize_compound_literals_in_ctor): Move from c-gimplify.c.
22229 (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
22230 (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
22231 as was done in c-gimplify.c.
22232 * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
22233 * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
22234 Move from c-common.h.
22235 * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
22237 * tree.c (staticp): Do not call langhook.
22238 * langhooks.c (lhd_staticp): Delete.
22239 * langhooks-def.h (lhd_staticp): Delete prototype.
22240 (LANG_HOOKS_STATICP): Delete.
22241 (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
22243 * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
22244 instead of DECL_STMTs.
22246 2009-03-29 Joseph Myers <joseph@codesourcery.com>
22254 * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
22256 (fold_call_expr): Return a NOP_EXPR from folding rather than the
22257 contained expression.
22258 * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
22259 (c_common_truthvalue_conversion): Use c_save_expr. Do not fold
22260 conditional expressions for C.
22261 (decl_constant_value_for_optimization): Move from
22262 decl_constant_value_for_broken_optimization in c-typeck.c. Check
22263 whether optimizing and that the expression is a VAR_DECL not of
22264 array type instead of doing such checks in the caller. Do not
22265 check pedantic. Call gcc_unreachable for C++.
22266 * c-common.def (C_MAYBE_CONST_EXPR): New.
22267 * c-common.h (c_fully_fold, c_save_expr,
22268 decl_constant_value_for_optimization): New prototypes.
22269 (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22270 C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22271 EXPR_INT_CONST_OPERANDS): Define.
22272 * c-convert.c (convert): Strip nops from expression.
22273 * c-decl.c (groktypename): Take extra parameters expr and
22274 expr_const_operands. Update call to grokdeclarator.
22275 (start_decl): Update call to grokdeclarator. Add statement for
22276 expressions used in type of decl.
22277 (grokparm): Update call to grokdeclarator.
22278 (push_parm_decl): Update call to grokdeclarator.
22279 (build_compound_literal): Add parameter non_const and build a
22280 C_MAYBE_COSNT_EXPR if applicable.
22281 (grokdeclarator): Take extra parameters expr and
22282 expr_const_operands. Track expressions used in declaration
22283 specifiers and declarators. Fold array sizes and track whether
22284 they are constant expressions and whether they are integer
22285 constant expressions.
22286 (parser_xref_tag): Set expr and expr_const_operands fields in
22288 (grokfield): Update call to grokdeclarator.
22289 (start_function): Update call to grokdeclarator.
22290 (build_null_declspecs): Set expr and expr_const_operands fields in
22292 (declspecs_add_type): Handle expressions in typeof specifiers.
22293 * c-parser.c (c_parser_declspecs): Set expr and
22294 expr_const_operands fields for declaration specifiers.
22295 (c_parser_enum_specifier): Likewise.
22296 (c_parser_struct_or_union_specifier): Likewise.
22297 (c_parser_typeof_specifier): Likewise. Update call to
22298 groktypename. Fold expression as needed. Return expressions with
22299 type instead of adding statements.
22300 (c_parser_attributes): Update calls to c_parser_expr_list.
22301 (c_parser_statement_after_labels): Fold expression before passing
22302 to objc_build_throw_stmt.
22303 (c_parser_condition): Fold expression.
22304 (c_parser_asm_operands): Fold expression.
22305 (c_parser_conditional_expression): Use c_save_expr. Update call
22306 to build_conditional_expr.
22307 (c_parser_alignof_expression): Update call to groktypename.
22308 (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
22309 original_code. Fold expression argument of va_arg. Create
22310 C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
22311 argument to va_arg. Update calls to groktypename. Fold array
22312 index for offsetof. Verify that first argument to
22313 __builtin_choose_expr has integer type.
22314 (c_parser_postfix_expression_after_paren_type): Update calls to
22315 groktypename and build_compound_literal. Handle expressions with
22316 side effects in type name.
22317 (c_parser_postfix_expression_after_primary): Update call to
22318 c_parser_expr_list. Set original_code for calls to
22319 __builtin_constant_p.
22320 (c_parser_expr_list): Take extra parameter fold_p. Fold
22321 expressions if requested.
22322 (c_parser_objc_type_name): Update call to groktypename.
22323 (c_parser_objc_synchronized_statement): Fold expression.
22324 (c_parser_objc_receiver): Fold expression.
22325 (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
22326 (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
22327 c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
22328 * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
22329 (struct c_typespec): Add elements expr and expr_const_operands.
22330 (struct c_declspecs): Add elements expr and expr_const_operands.
22331 (groktypename, build_conditional_expr, build_compound_literal):
22333 (in_late_binary_op): Declare.
22334 * c-typeck.c (note_integer_operands): New function.
22335 (in_late_binary_op): New variable.
22336 (decl_constant_value_for_broken_optimization): Move to c-common.c
22337 and rename to decl_constant_value_for_optimization.
22338 (default_function_array_conversion): Do not strip nops.
22339 (default_conversion): Do not call
22340 decl_constant_value_for_broken_optimization.
22341 (build_array_ref): Do not fold result.
22342 (c_expr_sizeof_expr): Fold operand. Use C_MAYBE_CONST_EXPR for
22343 result when operand is a VLA.
22344 (c_expr_sizeof_type): Update call to groktypename. Handle
22345 expressions included in type name. Use C_MAYBE_CONST_EXPR for
22346 result when operand names a VLA type.
22347 (build_function_call): Update call to build_compound_literal.
22348 Only fold result for calls to __builtin_* functions. Strip
22349 NOP_EXPR from INTEGER_CST returned from such functions. Fold
22350 the function designator.
22351 (convert_arguments): Fold arguments. Update call to
22352 convert_for_assignment.
22353 (build_unary_op): Handle increment and decrement of
22354 C_MAYBE_CONST_EXPR. Move lvalue checks for increment and
22355 decrement earlier. Fold operand of increment and decrement.
22356 Handle address of C_MAYBE_CONST_EXPR. Only fold expression being
22357 built for integer operand. Wrap returns that are INTEGER_CSTs
22358 without being integer constant expressions or that have integer
22359 constant operands without being INTEGER_CSTs.
22360 (lvalue_p): Handle C_MAYBE_CONST_EXPR.
22361 (build_conditional_expr): Add operand ifexp_bcp. Track whether
22362 result is an integer constant expression or can be used in
22363 unevaluated parts of one and avoid folding and wrap as
22364 appropriate. Fold operands before possibly doing -Wsign-compare
22366 (build_compound_expr): Wrap result for C99 if operands can be used
22367 in integer constant expressions.
22368 (build_c_cast): Update call to digest_init. Do not ignore
22369 overflow from casting floating-point constants to integers. Wrap
22370 results that could be confused with integer constant expressions,
22371 null pointer constants or floating-point constants.
22372 (c_cast_expr): Update call to groktypename. Handle expressions
22373 included in type name.
22374 (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR. Fold
22375 lhs inside possible SAVE_EXPR. Fold RHS before assignment.
22376 Update calls to convert_for_assignment.
22377 (convert_for_assignment): Take new parameter
22378 null_pointer_constant. Do not strip nops or call
22379 decl_constant_value_for_broken_optimization. Set
22380 in_late_binary_op for conversions to boolean.
22381 (store_init_value): Update call to digest_init.
22382 (digest_init): Take new parameter null_pointer_constant. Do not
22383 call decl_constant_value_for_broken_optimization. pedwarn for
22384 initializers not constant expressions. Update calls to
22385 convert_for_assignment.
22386 (constructor_nonconst): New.
22387 (struct constructor_stack): Add nonconst element.
22388 (really_start_incremental_init, push_init_level, pop_init_level):
22389 Handle constructor_nonconst and nonconst element.
22390 (set_init_index): Call constant_expression_warning for array
22392 (output_init_element): Fold value. Set constructor_nonconst as
22393 applicable. pedwarn for initializers not constant expressions.
22394 Update call to digest_init. Call constant_expression_warning
22395 where constant initializers are required.
22396 (process_init_element): Use c_save_expr.
22397 (c_finish_goto_ptr): Fold expression.
22398 (c_finish_return): Fold return value. Update call to
22399 convert_for_assignment.
22400 (c_start_case): Fold switch expression.
22401 (c_process_expr_stmt): Fold expression.
22402 (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
22403 ensure statement expression is not evaluated in constant expression.
22404 (build_binary_op): Track whether results are integer constant
22405 expressions or may occur in such, disable folding and wrap results
22406 as applicable. Fold operands for -Wsign-compare warnings unless
22408 (c_objc_common_truthvalue_conversion): Handle results folded to
22409 integer constants that are not integer constant expressions.
22410 * doc/extend.texi: Document when typeof operands are evaluated,
22411 that condition of __builtin_choose_expr is an integer constant
22412 expression, and more about use of __builtin_constant_p in
22415 2009-03-29 Richard Guenther <rguenther@suse.de>
22417 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
22418 propagate addresses of array references.
22420 2009-03-29 Steven Bosscher <steven@gcc.gnu.org>
22422 * regmove.c (perhaps_ends_bb_p): Remove.
22423 (optimize_reg_copy_1): Don't call perhaps_ends_bb_p. Get basic block
22424 from INSN and check that the main loop stays within that basic block.
22425 (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
22426 (regmove_forward_pass): Split out from regmove_optimize. Use
22427 FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
22428 (regmove_backward_pass): Split out from regmove_optimize. Use
22429 FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
22430 (regmove_optimize): Simplify.
22432 2009-03-29 H.J. Lu <hongjiu.lu@intel.com>
22435 * config/i386/i386.c (classify_argument): Ignore flexible array
22436 member in struct and warn ABI change.
22438 2009-03-29 H.J. Lu <hongjiu.lu@intel.com>
22440 * config/i386/i386-protos.h (ix86_agi_dependent): New.
22442 * config/i386/i386.c (ix86_agi_dependent): Rewrite.
22443 (ix86_adjust_cost): Updated.
22445 2009-03-29 Jan Hubicka <jh@suse.cz>
22447 PR middle-end/28850
22448 * tree-pass.h (pass_cleanup_eh): New function.
22449 (remove_unreachable_regions): Break code handling RTL
22450 to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
22451 that can not be reached by runtime.
22452 (can_be_reached_by_runtime): New function.
22453 (label_to_region_map): New function.
22454 (num_eh_regions): New function.
22455 (rtl_remove_unreachable_regions): New function.
22456 (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
22457 (remove_eh_region): New function.
22458 * except.h: Include sbitmap and vecprim.
22459 (remove_eh_region, remove_unreachable_regions, label_to_region_map,
22460 num_eh_regions): Declare.
22461 * passes.c (init_optimization_passes): Schedule cleanup_eh.
22462 * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
22463 * tree-eh.c (tree_remove_unreachable_handlers): New function.
22464 (tree_empty_eh_handler_p): New function.
22465 (cleanup_empty_eh): New function.
22466 (cleanup_eh): New function.
22467 (pass_cleanup_eh): New function.
22469 2009-03-29 Jan Hubicka <jh@suse.cz>
22471 * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
22472 for removed regions.
22474 2009-03-29 Jan Hubicka <jh@suse.cz>
22476 * except.c (dump_eh_tree): Dump all datastructures.
22478 2009-03-29 Jan Hubicka <jh@suse.cz>
22480 * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
22481 (duplicate_eh_regions_1): Likewise.
22482 (duplicate_eh_regions): Likewise; cleanup code gorwing the region
22483 vector; call EH verification.
22484 (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22485 Be ready for region being removed.
22487 2009-03-29 Jan Hubicka <jh@suse.cz>
22489 * bitmap.c (bitmap_last_set_bit): New function.
22490 * bitmap.h (bitmap_last_set_bit): Declare.
22492 2009-03-29 David Ayers <ayers@fsfe.org>
22495 * c-typeck.c (build_conditional_expr): Emit ObjC warnings
22496 by calling objc_compare_types and surpress warnings about
22497 incompatible C pointers that are compatible ObjC pointers.
22499 2009-03-29 Adam Nemet <anemet@caviumnetworks.com>
22501 * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
22502 call initialize_inline_failed.
22503 (initialize_inline_failed): Move it from here ...
22504 * cgraph.c (initialize_inline_failed): ... to here.
22505 (cgraph_create_edge): Call initialize_inline_failed rather than
22506 setting inline_failed directly.
22508 2009-03-29 Ben Elliston <bje@au.ibm.com>
22511 * sysv4.opt (msdata): Improve comment.
22512 * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
22513 * sysv4.h (SVR4_ASM_SPEC): Likewise.
22515 2009-03-29 Ben Elliston <bje@au.ibm.com>
22518 * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
22519 load and store attributes.
22521 2009-03-29 Ben Elliston <bje@au.ibm.com>
22523 * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
22524 (ix86_init_builtins): Add built-in function __builtin_huge_valq.
22525 (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
22526 * doc/extend.texi (X86 Built-in Functions): Add index entries for
22527 __builtin_infq and __builtin_huge_valq.
22529 2009-03-28 Anatoly Sokolov <aesok@post.ru>
22531 * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
22533 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22534 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
22536 2009-03-28 Xinliang David Li <davidxl@google.com>
22538 * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
22539 (do_dbg_cnt): New function.
22541 2009-03-28 Jan Hubicka <jh@suse.cz>
22543 Merge from pretty-ipa:
22545 2009-03-27 Jan Hubicka <jh@suse.cz>
22547 * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22548 * tree-pass.h (function_called_by_processed_nodes_p): Declare.
22549 * passes.c (function_called_by_processed_nodes_p): New.
22550 * ipa-pure-const.c (check_call): Fix handling of operands.
22551 (analyze_function): Dump debug output for skipped bodies.
22552 (local_pure_const): Use function_called_by_processed_nodes_p.
22553 * dwarf2out.c (reference_to_unused): Use output.
22554 * passes.c (do_per_function_toporder): Likewise.
22556 2008-11-12 Jan Hubicka <jh@suse.cz>
22558 * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
22559 * ipa-pure-const.c (funct_state_d): Add can throw field; make
22560 state_set_in_source enum
22561 (check_decl): Ignore memory tags; do not set fake looping flags;
22563 (check_operand, check_tree, check_rhs_var, check_lhs_var,
22564 get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
22565 (check_call, analyze_function): Rewrite.
22567 (add_new_function): Update call of analyze_function.
22568 (generate_summary): Add call of analyze_function.
22569 (propagate): Propagate can_throw; handle state_set_in_source correctly.
22570 (local_pure_const): New function.
22571 (pass_local_pure_const): New pass.
22572 * ipa-inline.c (inline_transform): Set after_inlining.
22573 * tree-eh.c (stmt_can_throw_external): New.
22574 * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
22575 work with aliasing built.
22576 * tree-flow.h (stmt_can_throw_external): New.
22577 * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
22578 and local pure/const pass in early and late optimization queue.
22580 2009-03-28 Martin Jambor <mjambor@suse.cz>
22582 * fold-const.c (get_pointer_modulus_and_residue): New parameter
22584 (fold_binary): Allow function decl aligment consideration is the
22585 second argument is integer constant one.
22586 * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
22587 (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
22588 with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
22590 2009-03-28 Jan Hubicka <jh@suse.cz>
22592 * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
22593 * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
22594 * function.h (rtl_data): Add nothrow flag.
22595 * except.c (set_nothrow_function_flags): Use crtl->nothrow;
22596 set DECL_NOTHROW for AVAILABLE functions.
22598 2009-03-28 Jakub Jelinek <jakub@redhat.com>
22600 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
22601 following vector keyword has expansion starting with pixel or bool
22602 keyword, expand vector to __vector and pixel or bool to __pixel or
22606 * opts.c (warning_disallowed_functions, warn_disallowed_functions,
22607 warn_if_disallowed_function_p): Removed.
22608 (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
22609 * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
22610 warning_if_disallowed_function_p.
22611 * flags.h (warn_if_disallowed_function_p,
22612 warn_disallowed_functions): Removed.
22613 * common.opt (Wdisallowed-function-list=): Removed.
22614 * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
22616 2009-03-28 Richard Guenther <rguenther@suse.de>
22618 PR tree-optimization/38723
22619 * tree-ssa-pre.c (compute_avail): Add all default definitions to
22622 2009-03-28 Jan Hubicka <jh@suse.cz>
22624 * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
22625 test introduced by my previous patch.
22627 2009-03-28 Richard Guenther <rguenther@suse.de>
22629 * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
22630 the PHIs value undefined.
22632 2009-03-28 Jan Hubicka <jh@suse.cz>
22634 * tree-pass.h (pass_fixup_cfg): New pass.
22635 * ipa-inline.c (inline_transform): Set
22636 always_inline_functions_inlined/after_inlining.
22637 * tree-optimize.c (execute_fixup_cfg): Do not set them here.
22638 (pass_fixup_cfg): New pass.
22639 * passes.c (init_optimization_passes): Add fixup_cfg.
22641 2009-03-28 Richard Guenther <rguenther@suse.de>
22643 PR tree-optimization/38458
22644 * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
22645 argument use the arguments copy-of value.
22647 2009-03-28 Richard Guenther <rguenther@suse.de>
22649 PR tree-optimization/38180
22650 * tree-ssa-ccp.c (get_default_value): Simplify.
22651 (likely_value): Likewise.
22652 (surely_varying_stmt_p): Properly handle VOP case.
22653 (ccp_initialize): Likewise.
22654 (ccp_fold): Handle propagating through *&.
22655 (fold_const_aggregate_ref): Also handle decls.
22657 2009-03-28 Jan Hubicka <jh@suse.cz>
22659 * cgraph.c (dump_cgraph_node): Add replace output flag by process.
22660 * cgraph.h (cgraph_node): Likewise.
22661 * cgraphunit.c (cgraph_process_new_functions): Set process flag.
22662 (cgraph_reset_node): Use process flag.
22663 (cgraph_mark_functions_to_output): Likewise.
22664 (cgraph_expand_function): Likewise.
22665 (cgraph_expand_all_functions): Likewise.
22666 (cgraph_output_in_order): Likewise.
22667 * dwarf2out.c (reference_to_unused): Likewise.
22668 * passes.c do_per_function_toporder): Likewise.
22670 2009-03-28 Jan Hubicka <jh@suse.cz>
22672 Bring from lto-branch:
22674 2008-09-03 Doug Kwan <dougkwan@google.com>
22676 * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
22677 enums instead of reason strings.
22678 * cgraph.c (cgraph_create_edge): Same.
22679 (cgraph_inline_failed_string): New function.
22680 * cgraph.h (cgraph_inline_failed_t): New enum type.
22681 (cgraph_inline_failed_string): New prototype.
22682 (struct cgraph_edge): Change type of INLINED_FAILED from constant
22683 char pointer to cgraph_inline_failed_t.
22684 (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
22685 (cgraph_default_inline_p): Ditto.
22686 * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
22687 to cgraph_inline_failed_t pointer.
22688 * cif-code.def: New file.
22689 * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
22691 (cgraph_check_inline_limits): Change type of REASON to pointer to
22692 cgraph_inline_failed_t. Replace reason strings with enums.
22693 (cgraph_default_inline_p): Ditto.
22694 (cgraph_recursive_inlining_p): Ditto.
22695 (update_caller_keys): Change type of FAILED_REASON to
22696 cgraph_inline_failed_t.
22697 (cgraph_set_inline_failed): Change type of REASON to pointer to
22698 cgraph_inline_failed_t. Call cgraph_inline_failed_string to
22699 convert enums to strings for text output.
22700 (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
22701 to be of type cgraph_inline_failed_t. Replace reason strings with
22702 enums. Call cgraph_inline_failed_string to covert enums
22703 to strings for text output.
22704 (cgraph_decide_inlining): Replace reason strings with enums.
22705 (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
22706 to cgraph_inline_failed_t type. Call cgraph_inline_failed_string
22708 * tree-inline.c (expand_call_inline): Change type of REASON
22709 to cgraph_inline_failed_t. Replace reason strings with enums.
22710 Call cgraph_inline_failed_string for text output.
22711 * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
22714 2009-03-28 Jan Hubicka <jh@suse.cz>
22716 * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
22717 cgraph_clone_node): Remove master clone handling.
22718 (cgraph_is_master_clone, cgraph_master_clone): Remove.
22719 * cgraph.h (master_clone): Remove.
22720 (cgraph_is_master_clone, cgraph_master_clone): Remove.
22721 * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
22722 (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
22724 2009-03-28 Jan Hubicka <jh@suse.cz>
22726 * cgraph.c (cgraph_function_body_availability): Functions declared
22727 inline are always safe to assume that it is not going to be replaced.
22729 2009-03-28 Richard Guenther <rguenther@suse.de>
22731 PR tree-optimization/38513
22732 * tree-ssa-pre.c (eliminate): Remove redundant stores.
22733 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
22734 EXC_PTR_EXPR and FILTER_EXPR.
22735 (get_ref_from_reference_ops): Likewise.
22737 2009-03-28 Richard Guenther <rguenther@suse.de>
22739 PR tree-optimization/38968
22740 * tree-vect-analyze.c (vect_compute_data_ref_alignment):
22741 Use FLOOR_MOD_EXPR to compute misalignment.
22743 2009-03-28 Richard Guenther <rguenther@suse.de>
22745 PR tree-optimization/37795
22746 * tree.h (combine_comparisons): Declare.
22747 * fold-const.c (combine_comparisons): Export.
22748 * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
22750 (ifcombine_iforif): Use combine_comparisons.
22752 2009-03-28 Jan Hubicka <jh@suse.cz>
22754 * tree-eh.c (inlinable_call_p): New function.
22755 (make_eh_edges): Use it.
22756 (verify_eh_edges): Use it.
22757 (stmt_can_throw_external, stmt_can_throw_internal): Use it.
22758 * except.c (reachable_next_level): Add inlinable_function argument
22759 (sjlj_find_directly_reachable_regions): Update.
22760 (add_reachable_handler): Do not set saw_any_handlers.
22761 (reachable_next_level): Handle MUST_NOT_THROW more curefully.
22762 (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
22763 Add new inlinable call parameter.
22764 (can_throw_internal, can_throw_external): Update.
22765 * except.h (can_throw_internal_1, can_throw_external_1,
22766 foreach_reachable_handler): Update declaration.
22768 2009-03-28 Joseph Myers <joseph@codesourcery.com>
22770 * config/arm/t-arm-coff, config/h8300/coff.h,
22771 config/i386/i386-aout.h, config/i386/i386-coff.h,
22772 config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
22773 config/pdp11/2bsd.h, config/rs6000/aix41.h,
22774 config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
22775 fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
22776 scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
22777 sys-types.h: Remove.
22778 * Makefile.in: Remove protoize and fixproto support and references
22780 (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
22781 PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
22783 (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
22784 (MOSTLYCLEANFILES): Remove protoize$(exeext) and
22785 unprotoize$(exeext).
22786 (rest.encap): Don't depend on $(STMP_FIXPROTO)
22787 (.PHONY): Don't depend on proto.
22788 (libgcc-support): Don't depend on $(STMP_FIXPROTO).
22789 (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
22790 protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
22791 deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
22792 build/gen-protos.o, build/scan.o, xsys-protos.h,
22793 build/fix-header$(build_exeext), build/fix-header.o,
22794 build/scan-decls.o, fixhdr.ready, stmp-fixproto,
22795 stmp-install-fixproto): Remove.
22796 (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
22797 SYSCALLS.c or fixproto files.
22798 (install-common): Don't install protoize.
22799 (install-headers-tar, install-headers-cpio, install-headers-cp):
22800 Don't depend on $(STMP_FIXPROTO).
22801 (install-mkheaders): Don't depend on $(STMP_FIXPROTO). Don't
22802 install fixproto files or write out fixproto settings.
22803 (uninstall): Don't uninstall protoize.
22804 * config.gcc (use_fixproto): Remove.
22805 (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
22806 i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
22807 rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
22808 * config/m32r/t-linux (STMP_FIXPROTO): Remove.
22809 * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
22810 * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
22811 * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
22812 * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
22813 * config/t-svr4 (FIXPROTO_DEFINES): Remove.
22814 * config/t-vxworks (STMP_FIXPROTO): Remove.
22815 * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
22816 STMP_FIXPROTO): Remove.
22817 * config.in, configure: Regenerate.
22818 * crtstuff.c (gid_t, uid_t): Don't undefine.
22819 * doc/install.texi: Change m68k-coff to m68k-elf in example.
22820 (arm-*-coff, arm-*-aout: Remove target entries.
22821 (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
22822 Remove mention of AIX 4.1.
22823 (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
22824 * doc/invoke.texi (Running Protoize): Remove.
22825 * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
22826 (Protoize Caveats): Remove.
22827 * tsystem.h: Update comments on headers assumed to exist.
22829 2009-03-27 Vladimir Makarov <vmakarov@redhat.com>
22831 * genautomata.c: Add a new year to the copyright. Add a new
22833 (struct insn_reserv_decl): Add comments for member bypass_list.
22834 (find_bypass): Remove.
22835 (insert_bypass): New.
22836 (process_decls): Use insert_bypass.
22837 (output_internal_insn_latency_func): Output all bypasses with the
22838 same input insn in one switch case.
22840 * rtl.def (define_bypass): Describe bypass choice.
22841 * doc/md.texi (define_bypass): Ditto.
22843 2009-03-27 Richard Guenther <rguenther@suse.de>
22845 * gimplify.c (mark_addressable): Export.
22846 * tree-flow.h (mark_addressable): Declare.
22847 * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
22848 * tree-ssa.c (verify_phi_args): Verify that address taken
22849 variables have TREE_ADDRESSABLE set.
22851 2009-03-27 Richard Guenther <rguenther@suse.de>
22853 * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
22854 (build_fold_addr_expr_with_type): ... this. Remove in_fold handling.
22855 Do not mark decls TREE_ADDRESSABLE.
22856 (build_fold_addr_expr): Adjust.
22857 (fold_addr_expr): Remove.
22858 (fold_unary): Use build_fold_addr_expr.
22859 (fold_comparison): Likewise.
22860 (split_address_to_core_and_offset): Likewise.
22861 * coverage.c (tree_coverage_counter_addr): Mark the array decl
22863 * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
22864 (gimplify_modify_expr_to_memcpy): Mark source and destination
22866 * omp-low.c (create_omp_child_function): Mark the object decl
22868 (lower_rec_input_clauses): Mark the var we take the address of
22870 (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
22872 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
22874 PR middle-end/39315
22875 * cfgexpand.c (expand_one_stack_var_at): Change alignment
22876 limit to MAX_SUPPORTED_STACK_ALIGNMENT.
22878 2009-03-27 Richard Guenther <rguenther@suse.de>
22880 PR tree-optimization/39120
22881 * tree-ssa-structalias.c (handle_rhs_call): Fill out return
22883 (handle_lhs_call): Process return constraints. Add escape
22884 constraints if necessary.
22885 (handle_const_call): Fill out return constraints. Make nested
22886 case more precise. Avoid consttmp if possible.
22887 (handle_pure_call): Fill out return constraints. Avoid
22888 callused if possible.
22889 (find_func_aliases): Simplify call handling.
22891 2009-03-27 Richard Guenther <rguenther@suse.de>
22893 PR tree-optimization/39120
22894 * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
22895 as a representative.
22896 (solve_graph): Do propagate CALLUSED.
22897 (handle_pure_call): Use a scalar constraint from CALLUSED for
22899 (find_what_p_points_to): CALLUSED shall not appear in poins-to
22902 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
22905 * c-common.c (handle_aligned_attribute): Properly check alignment
22906 overflow. Use (1U << i) instead of (1 << i).
22908 * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
22910 * expr.h (get_mem_align_offset): Updated.
22912 * tree.h (tree_decl_common): Change align to "unsigned int" and
22913 move it before pointer_alias_set.
22915 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
22916 Jakub Jelinek <jakub@redhat.com>
22919 * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
22920 gr_register_operand with gr_reg_or_0_operand.
22921 (cmpxchg_rel_di): Likewise.
22922 (sync_lock_test_and_set<mode>): Likewise.
22924 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
22926 * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
22927 (true_regnum): Likewise.
22929 * rtlanal.c (subreg_info): Moved to ...
22930 * rtl.h (subreg_info): Here. New.
22931 (subreg_get_info): New.
22933 * rtlanal.c (subreg_get_info): Make it extern.
22935 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
22938 * config/i386/i386.c (ix86_abi): New.
22939 (override_options): Handle -mabi=.
22940 (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
22941 (ix86_call_abi_override): Likewise.
22942 (init_cumulative_args): Likewise.
22943 (function_arg_advance): Likewise.
22944 (function_arg_64): Likewise.
22945 (function_arg): Likewise.
22946 (ix86_pass_by_reference): Likewise.
22947 (ix86_function_value_regno_p): Likewise.
22948 (ix86_build_builtin_va_list_abi): Likewise.
22949 (setup_incoming_varargs_64): Likewise.
22950 (is_va_list_char_pointer): Likewise.
22951 (ix86_init_machine_status): Likewise.
22952 (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
22953 (ix86_function_type_abi): Return enum calling_abi. Rewrite
22954 for 64bit. Replace DEFAULT_ABI with ix86_abi.
22955 (ix86_function_abi): Make it static and return enum calling_abi.
22956 (ix86_cfun_abi): Return enum calling_abi. Replace DEFAULT_ABI
22958 (ix86_fn_abi_va_list): Updated.
22960 * config/i386/i386.h (ix86_abi): New.
22961 (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
22962 (CONDITIONAL_REGISTER_USAGE): Likewise.
22963 (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
22964 (machine_function): Likewise.
22966 * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
22968 * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
22969 (STACK_BOUNDARY): Likewise.
22970 * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
22972 * config/i386/i386.opt (mabi=): New.
22974 * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
22975 return enum calling_abi.
22976 (ix86_function_type_abi): Likewise.
22977 (ix86_function_abi): Removed.
22979 * doc/invoke.texi: Document -mabi= option for x86.
22981 2009-03-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
22983 * builtins.c (real_dconstp): Delete.
22984 (fold_builtin_logarithm): Remove inaccurate log(e) special case.
22986 2009-03-27 Dodji Seketeli <dodji@redhat.com>
22987 Jakub Jelinek <jakub@redhat.com>
22990 * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
22991 (gen_subprogram_die): When a function is explicit, generate the
22992 DW_AT_explicit attribute.
22993 * langhooks.h (struct lang_hooks_for_decls): Add
22994 function_decl_explicit_p langhook.
22995 * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
22996 (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
22998 2009-03-27 Jakub Jelinek <jakub@redhat.com>
23000 * builtins.c (fold_builtin_memory_op): Optimize memmove
23001 into memcpy if we can prove source and destination don't overlap.
23003 * tree-inline.c: Include gt-tree-inline.h.
23004 (clone_fn_id_num): New variable.
23005 (clone_function_name): New function.
23006 (tree_function_versioning): Use it.
23007 * Makefile.in (GTFILES): Add tree-inline.c.
23009 2009-03-27 Mark Mitchell <mark@codesourcery.com>
23011 * BASE-VER: Change to 4.5.0.
23013 2009-03-27 Xinliang David Li <davidxl@google.com>
23015 PR tree-optimization/39557
23016 * tree-ssa.c (warn_uninitialized_vars): free postdom info.
23018 2009-03-27 Xinliang David Li <davidxl@google.com>
23020 PR tree-optimization/39548
23021 * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
23024 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
23026 * c-common.c (pointer_int_sum): Use %wd on return from
23029 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
23031 * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
23032 on return from tree_low_cst.
23034 2009-03-27 Andrew Pinski <andrew_pinski@playstation.sony.com>
23037 * ginclude/stdarg.h (va_copy): Define also for
23038 __GXX_EXPERIMENTAL_CXX0X__.
23040 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
23043 * builtins.h (c_strlen): Do not warn here.
23044 * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23045 * c-common.c (pointer_int_sum): Take an explicit location.
23046 Warn about offsets out of bounds.
23047 * c-common.h (pointer_int_sum): Adjust declaration.
23049 2009-03-26 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23051 * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
23054 2009-03-26 Jakub Jelinek <jakub@redhat.com>
23057 * opts.c (warn_if_disallowed_function_p): Don't assume
23058 get_callee_fndecl must return non-NULL.
23060 2009-03-26 Vladimir Makarov <vmakarov@redhat.com>
23062 PR rtl-optimization/39522
23063 * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
23064 when reg_reloaded_valid is set.
23066 2009-03-26 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
23068 * config/spu/divv2df3.c: New file.
23069 * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
23070 (DPBIT_FUNCS): Filter out _div_df.
23072 2009-03-26 Bernd Schmidt <bernd.schmidt@analog.com>
23074 * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
23075 a jump insn, count that jump in the distance to the loop start.
23077 2009-03-25 Kaz Kojima <kkojima@gcc.gnu.org>
23080 * config/sh/sh.c (calc_live_regs): Fix condition for global
23081 registers except PIC_OFFSET_TABLE_REGNUM.
23083 2009-03-25 Kai Tietz <kai.tietz@onevision.com>
23086 * doc/invoke.texi (-mconsole): New.
23088 (-mno-cygwin): New.
23090 (-mnop-fun-dllimport): New.
23094 (sub section "i386 and x86-64 Windows Options"): New.
23096 2009-03-25 Ralf Corsépius <ralf.corsepius@rtems.org>
23098 * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
23099 * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
23101 2009-03-25 Richard Guenther <rguenther@suse.de>
23103 PR middle-end/39497
23104 * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
23107 2009-03-25 Andrey Belevantsev <abel@ispras.ru>
23109 * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
23110 neither of haifa/selective schedulers are working.
23112 2009-03-25 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23114 * doc/invoke.texi (Debugging Options): Fix description of
23115 -fno-merge-debug-strings.
23117 2009-03-24 Hans-Peter Nilsson <hp@axis.com>
23119 * config/cris/libgcc.ver: New version-script.
23120 * config/cris/t-linux (SHLIB_MAPFILES): Use it.
23122 * configure.ac <GAS features, nop mnemonic>: Add pattern
23123 crisv32-*-* for "nop".
23124 <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
23125 * configure: Regenerate.
23127 2009-03-24 Ira Rosen <irar@il.ibm.com>
23129 PR tree-optimization/39529
23130 * tree-vect-transform.c (vect_create_data_ref_ptr): Call
23131 mark_sym_for_renaming for the tag copied to the new vector
23134 2009-03-24 Arthur Loiret <aloiret@debian.org>
23136 * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
23137 * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
23138 EXTRA_SPEC_FUNCTIONS.
23139 (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
23140 * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
23141 * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
23142 -march and -mtune options.
23144 2009-03-24 Ralf Corsépius <ralf.corsepius@rtems.org>
23146 * config/m68k/t-rtems: Add m5329 multilib.
23148 2009-03-24 Dodji Seketeli <dodji@redhat.com>
23149 Jakub Jelinek <jakub@redhat.com>
23152 * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
23155 2009-03-23 Jakub Jelinek <jakub@redhat.com>
23158 * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
23159 instead of c_parser_expression_conv, if original_code isn't one of the
23160 4 allowed comparison codes, fail.
23162 2009-03-23 Richard Guenther <rguenther@suse.de>
23164 * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
23165 * tree.h (struct tree_type): Likewise.
23166 * reload.h (struct insn_chain): Likewise.
23167 * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
23168 * function.h (struct function): Likewise.
23169 * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
23171 2009-03-23 Jakub Jelinek <jakub@redhat.com>
23173 PR tree-optimization/39516
23174 * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
23176 2009-03-23 Bingfeng Mei <bmei@broadcom.com>
23178 * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
23179 should be set true if BITS_PER_WORD of target is bigger than 32
23181 2009-03-22 Hans-Peter Nilsson <hp@axis.com>
23183 * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
23184 Translate -B-options to -rpath-link. Correct existing
23185 rpath-link and conditionalize on !nostdlib.
23187 2009-03-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23189 * doc/extend.texi (Function Attributes, Variable Attributes):
23191 * doc/invoke.texi (Debugging Options, Optimize Options)
23192 (i386 and x86-64 Options, MCore Options): Likewise.
23194 2009-03-20 Jakub Jelinek <jakub@redhat.com>
23197 * dwarf2out.c (gen_namespace_die): Add context_die argument and use
23198 it for block local namespace aliases.
23199 (gen_decl_die): Pass context_die to gen_namespace_die.
23201 2009-03-19 Jakub Jelinek <jakub@redhat.com>
23204 * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
23205 minimum or maximum value.
23207 2009-03-19 Alexandre Oliva <aoliva@redhat.com>
23209 * reginfo.c (globalize_reg): Recompute derived reg sets.
23211 2009-03-19 Ozkan Sezer <sezeroz@gmail.com>
23214 * libgcc2.c (mprotect): Do not use signed arguments for
23215 VirtualProtect, use DWORD arguments. Also fix the 'may
23216 be used uninitialized' warning for the np variable.
23218 2009-03-19 Jakub Jelinek <jakub@redhat.com>
23221 * config/i386/i386.c (ix86_function_regparm): Don't optimize local
23222 functions using regparm calling conventions when not optimizing.
23223 (ix86_function_sseregparm): Similarly for sseregparm calling
23226 2009-03-19 Li Feng <nemokingdom@gmail.com>
23228 PR middle-end/39500
23229 * tree-data-ref.c (analyze_subscript_affine_affine): There is no
23230 dependence if the first conflict is after niter iterations.
23232 2009-03-19 Hans-Peter Nilsson <hp@axis.com>
23234 PR middle-end/38609
23235 * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
23236 functions with dynamic stack-pointer adjustments.
23238 2009-03-19 Ben Elliston <bje@au.ibm.com>
23240 * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
23241 option; change to -msdata=data.
23243 2009-03-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23245 * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
23248 2009-03-18 Eric Botcazou <ebotcazou@adacore.com>
23251 * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
23253 2009-03-18 Sandra Loosemore <sandra@codesourcery.com>
23255 * doc/invoke.texi (Code Gen Options): Expand discussion of
23258 2009-03-18 Jakub Jelinek <jakub@redhat.com>
23260 * dse.c (struct group_info): Reorder fields for 64-bit hosts.
23261 * matrix-reorg.c (struct matrix_info): Likewise.
23262 * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
23263 * rtl.h (struct mem_attrs): Likewise.
23264 * df.h (struct df): Likewise.
23265 * tree-data-ref.h (struct data_dependence_relation): Likewise.
23266 * ira-int.h (struct ira_allocno): Likewise.
23267 * df-scan.c (struct df_collection_rec): Likewise.
23268 * ira.c (struct equivalence): Likewise.
23269 * function.c (struct temp_slot): Likewise.
23270 * cfgloop.h (struct loop): Likewise.
23273 * function.c (use_register_for_decl): When not optimizing, disregard
23274 register keyword for variables with types containing methods.
23276 2009-03-18 Sebastian Pop <sebastian.pop@amd.com>
23278 PR middle-end/39447
23279 * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
23280 (is_simple_operand): Call contains_component_ref_p before calling data
23281 reference analysis that would fail on COMPONENT_REFs.
23283 * tree-vrp.c (search_for_addr_array): Fix formatting.
23285 2009-03-18 Richard Guenther <rguenther@suse.de>
23287 * tree-vect-transform.c (vect_loop_versioning): Fold the
23288 generated comparisons.
23289 * tree-vectorizer.c (set_prologue_iterations): Likewise.
23290 (slpeel_tree_peel_loop_to_edge): Likewise.
23292 2009-03-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23294 PR middle-end/37805
23295 * opts.c (print_specific_help): In addition to `undocumented',
23296 accept `separate' and `joined' flags if passed alone. Describe
23297 output by the first matched one of those.
23298 (common_handle_option): Skip over empty strings.
23299 * gcc.c (display_help): Fix help string for `--help='.
23300 * doc/invoke.texi (Option Summary, Overall Options): With
23301 `--help=', classes and qualifiers can both be repeated, but
23302 only the latter can be negated. One should not pass only
23303 negated qualifiers. Fix markup and examples.
23306 2008-10-14 Jakub Jelinek <jakub@redhat.com>
23307 PR middle-end/37805
23308 * opts.c (common_handle_option): Don't ICE on -fhelp=joined
23309 and -fhelp=separate.
23311 2009-03-17 Jing Yu <jingyu@google.com>
23313 PR middle-end/39378
23314 * function.h (struct rtl_data): Move is_thunk from here...
23315 (struct function): ...to here.
23316 * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
23317 * varasm.c (assemble_start_function): Change is_thunk from crtl to
23319 * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
23321 (alpha_does_function_need_gp, alpha_start_function): Likewise.
23322 (alpha_output_function_end_prologue): Likewise.
23323 (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
23324 * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
23325 (rs6000_output_function_epilogue): Likewise.
23326 * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
23328 2009-03-17 Uros Bizjak <ubizjak@gmail.com>
23331 * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
23332 from different units in a single alternative.
23333 (*truncdfsf_i387): Ditto.
23334 (*truncxfsf2_mixed): Ditto.
23335 (*truncxfdf2_mixed): Ditto.
23337 2009-03-17 Jakub Jelinek <jakub@redhat.com>
23339 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
23340 non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
23343 * tree-ssa-live.c (remove_unused_locals): Don't remove local
23344 unused non-artificial variables when not optimizing.
23347 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
23348 DW_TAG_imported_module even if decl is IMPORTED_DECL with
23349 NAMESPACE_DECL in its DECL_INITIAL.
23351 PR middle-end/39443
23352 * optabs.c (set_user_assembler_libfunc): New function.
23353 * expr.h (set_user_assembler_libfunc): New prototype.
23354 * c-common.c: Include libfuncs.h.
23355 (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
23356 for memcmp, memset, memcpy, memmove and abort.
23357 * Makefile.in (c-common.o): Depend on libfuncs.h.
23360 * dwarf2out.c (gen_inlined_enumeration_type_die,
23361 gen_inlined_structure_type_die, gen_inlined_union_type_die,
23362 gen_tagged_type_instantiation_die): Removed.
23363 (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
23366 2009-03-17 Janis Johnson <janis187@us.ibm.com>
23369 * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
23371 (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
23372 (check-parallel-%): Ditto.
23373 (check-consistency): Ditto.
23375 2009-03-17 Kai Tietz <kai.tietz@onevision.com>
23377 * ipa-struct-reorg.c (create_general_new_stmt): Initialize
23378 local variable rhs by NULL_TREE.
23380 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
23383 * doc/extend.texi: Correct register behavior for regparm on Intel 386.
23385 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
23388 * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
23390 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
23393 * config/i386/i386.c (ix86_expand_call): Check extra clobbers
23394 for ms->sysv ABI calls only in 64bit mode.
23396 * config/i386/i386.md (untyped_call): Support 32bit.
23398 2009-03-16 H.J. Lu <hongjiu.lu@intel.com>
23400 * doc/extend.texi: Replace x86_65 with x86_64.
23402 2009-03-16 Jakub Jelinek <jakub@redhat.com>
23404 PR tree-optimization/39455
23405 * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
23406 mismatches for POINTER_TYPE_P (type).
23407 (number_of_iterations_le): Likewise.
23409 2009-03-16 Hariharan Sandanagobalane <hariharan@picochip.com>
23411 * config/picochip/picochip.c: Removed profiling support.
23412 * config/picochip/picochip.md: Removed profiling instruction.
23413 * config/picochip/picochip.h: Removed profiling builtin.
23415 2009-03-16 Joseph Myers <joseph@codesourcery.com>
23417 * doc/install.texi (--with-host-libstdcxx): Document.
23419 2009-03-14 Anatoly Sokolov <aesok@post.ru>
23422 * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
23423 generate a warning if the function name does not begin with
23424 "__vector" and the function has either the 'signal' or 'interrupt'
23425 attribute, from here to ...
23426 (avr_declare_function_name): ...here. New function.
23427 * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
23428 * config/avr/avr-protos.h (avr_declare_function_name): Declare.
23430 2009-03-14 Jakub Jelinek <jakub@redhat.com>
23433 * cse.c (fold_rtx): Don't modify original const_arg1 when
23434 canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
23435 separate variable instead.
23436 * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
23437 from out of range shift counts.
23438 (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
23440 2009-03-13 Catherine Moore <clm@codesourcery.com>
23442 * config/i386/x-mingw32 (host-mingw32.o): Replace
23443 diagnostic.h with $(DIAGNOSTIC_H).
23445 2009-03-12 Jakub Jelinek <jakub@redhat.com>
23448 * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
23450 * config/i386/sync.md (sync_compare_and_swap<mode>,
23451 sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
23452 if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
23454 (sync_double_compare_and_swapdi_pic,
23455 sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
23456 cmpxchg8b_pic_memory_operand instead of just memory_operand.
23458 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
23461 * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
23463 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
23466 * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23467 (avx_addsubv4df3): Likewise.
23468 (*avx_addsubv4sf3): Likewise.
23469 (sse3_addsubv4sf3): Likewise.
23471 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
23474 * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
23476 2009-03-12 Vladimir Makarov <vmakarov@redhat.com>
23479 * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
23480 * ira-conflicts.c (ira_build_conflicts): Prohibit call used
23481 registers for allocnos created from user-defined variables.
23483 2009-03-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
23486 * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
23487 of non-integer mode as well.
23489 2009-03-11 Adam Nemet <anemet@caviumnetworks.com>
23491 * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
23492 for functions for which the parameter types are unknown.
23494 2009-03-11 Jakub Jelinek <jakub@redhat.com>
23497 * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
23498 * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
23499 * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
23500 * config/i386/i386.c (ix86_local_alignment): For
23501 -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
23502 long long variables on the stack to avoid dynamic realignment.
23503 Allow the first argument to be a decl rather than type.
23504 * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
23506 2009-03-11 Nick Clifton <nickc@redhat.com>
23509 * config/mcore/mcore.opt: Remove deprecated m4align and m8align
23511 Add description to mno-lsim option.
23512 * config/mcore/mcore.h: Remove comment about deprecated m4align
23514 (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
23515 * doc/invoke.texi: Add description of mno-lsim and
23516 mstack-increment options.
23518 * config/fr30/fr30.opt: Document the -mno-lsim option.
23519 * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
23520 and -mno-lsim options.
23522 2009-03-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
23524 * fold-const.c (fold_comparison): Only call fold_inf_compare
23525 if the mode supports infinities.
23527 2009-03-11 Jason Merrill <jason@redhat.com>
23530 * tree-nrv.c (tree_nrv): Don't do this optimization if the front
23531 end already did. Notice GIMPLE_CALL modifications of the result.
23532 Don't copy debug information from an ignored decl or a decl from
23535 2009-03-10 Richard Guenther <rguenther@suse.de>
23536 Nathan Froyd <froydnj@codesourcery.com>
23538 PR middle-end/37850
23539 * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
23540 (__divMODE3): Likewise.
23542 2009-03-09 Jakub Jelinek <jakub@redhat.com>
23544 PR tree-optimization/39394
23545 * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
23546 DECL_SIZE_UNIT of variable length FIELD_DECLs.
23548 2009-03-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
23550 * recog.c (verfiy_changes): Disallow renaming of hard regs in
23551 inline asms for register asm ("") declarations.
23553 2009-03-09 Eric Botcazou <ebotcazou@adacore.com>
23555 * fold-const.c (fold_unary): Fix comment.
23557 2009-03-07 Jan Hubicka <jh@suse.cz>
23560 * tree-inline.c (setup_one_parameter): Do replacement of const
23561 argument by constant in SSA form.
23563 2009-03-07 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
23565 PR middle-end/38028
23566 * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
23567 determine alignment passed to assign_stack_local.
23568 (assign_parms_unsplit_complex): Likewise.
23569 * except.c (sjlj_build_landing_pads): Likewise.
23571 2009-03-06 Jakub Jelinek <jakub@redhat.com>
23573 PR middle-end/39360
23574 * tree-flow.h (add_referenced_var): Return bool instead of void.
23575 * tree-dfa.c (add_referenced_var): Return result of
23576 referenced_var_check_and_insert call.
23577 * tree-inline.c (expand_call_inline): Call add_referenced_var instead
23578 of referenced_var_check_and_insert.
23581 * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
23582 (gen_variable_die): Emit DW_AT_location on abstract static variable's
23583 DIE, don't emit it if abstract origin already has it.
23584 * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
23585 BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
23587 2009-03-06 Jan-Benedict Glaw <jbglaw@lug-owl.de>
23589 * genpreds.c (needs_variable): Fix parentheses at variable name
23591 (write_tm_constrs_h): Indent generated code.
23593 2009-03-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
23595 * doc/extend.texi (Function Attributes): Add documentation
23596 for isr attributes.
23598 2009-03-06 Jakub Jelinek <jakub@redhat.com>
23601 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
23602 take locus from its DECL_SOURCE_LOCATION instead of input_location.
23604 2009-03-05 Bernd Schmidt <bernd.schmidt@analog.com>
23606 * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
23609 2009-03-05 Jakub Jelinek <jakub@redhat.com>
23612 * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
23613 with blocks containing IMPORTED_DECLs in BLOCK_VARS.
23615 2009-03-05 Uros Bizjak <ubizjak@gmail.com>
23617 * config/i386/i386.md (R8_REG, R9_REG): New constants.
23618 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
23619 constants instead of magic numbers.
23620 (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
23622 * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
23623 (x86_64_ms_abi_int_parameter_registers): Ditto.
23624 (x86_64_int_return_registers): Ditto.
23625 (ix86_maybe_switch_abi): Ditto.
23626 (ix86_expand_call): Ditto for clobbered_registers array.
23627 (ix86_hard_regno_mode_ok): Ditto.
23628 (x86_extended_QIreg_mentioned_p): Ditto.
23630 2009-03-05 J"orn Rennecke <joern.rennecke@arc.com>
23632 PR tree-optimization/39349
23633 * cse.c (cse_insn): Fix loop to stop at VOIDmode.
23635 * combine.c (gen_lowpart_for_combine): Use omode when generating
23638 2009-03-04 J"orn Rennecke <joern.rennecke@arc.com>
23640 PR rtl-optimization/39235
23641 * loop-iv.c (get_simple_loop_desc): Use XCNEW.
23643 2009-03-04 Zdenek Dvorak <ook@ucw.cz>
23645 * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
23647 2009-03-04 Richard Guenther <rguenther@suse.de>
23649 PR tree-optimization/39362
23650 * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
23651 that occur in abnormal PHIs should be varying.
23653 2009-03-04 Zdenek Dvorak <ook@ucw.cz>
23655 * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
23657 (simple_iv): Take loop as an argument instead of statement.
23658 * tree-scalar-evolution.h (simple_iv): Declaration changed.
23659 * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
23661 * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
23663 * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
23664 * matrix-reorg.c (analyze_transpose): Ditto.
23665 * tree-data-ref.c (dr_analyze_innermost): Ditto.
23666 * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
23667 * tree-predcom.c (ref_at_iteration): Ditto.
23668 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
23670 2009-03-04 Richard Guenther <rguenther@suse.de>
23672 PR tree-optimization/39358
23673 * tree-ssa-structalias.c (do_sd_constraint): Fix check for
23674 escaped_id and callused_id.
23675 (solve_graph): Likewise.
23677 2009-03-04 Richard Guenther <rguenther@suse.de>
23679 PR tree-optimization/39339
23680 * tree-sra.c (try_instantiate_multiple_fields): Make it
23681 no longer ICE on the above.
23683 2009-03-03 Joseph Myers <joseph@codesourcery.com>
23685 * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
23686 that fits within Pmode.
23688 2009-03-03 Steve Ellcey <sje@cup.hp.com>
23690 PR middle-end/10109
23691 * tm.texi (LIBCALL_VALUE): Update description.
23693 2009-03-03 Steve Ellcey <sje@cup.hp.com>
23695 PR middle-end/34443
23696 * doc/extend.texi (section): Update description.
23698 2009-03-03 H.J. Lu <hongjiu.lu@intel.com>
23700 PR middle-end/39345
23701 * tree-inline.c (remapped_type): New.
23702 (can_be_nonlocal): Call remapped_type instead of remap_type.
23704 2009-03-03 Jakub Jelinek <jakub@redhat.com>
23707 * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
23708 TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
23710 2009-03-03 Richard Guenther <rguenther@suse.de>
23712 PR middle-end/39272
23713 * tree.c (tree_nonartificial_location): New function.
23714 * tree.h (tree_nonartificial_location): Declare.
23715 * builtins.c (expand_builtin_memory_chk): Provide location
23716 of the call location for artificial function pieces.
23717 (maybe_emit_chk_warning): Likewise.
23718 (maybe_emit_sprintf_chk_warning): Likewise.
23719 (maybe_emit_free_warning): Likewise.
23720 * expr.c (expand_expr_real_1): Likewise.
23722 2009-03-03 Jakub Jelinek <jakub@redhat.com>
23724 PR tree-optimization/39343
23725 * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
23726 COMPONENT_REF t has ARRAY_TYPE.
23728 2009-03-02 Sebastian Pop <sebastian.pop@amd.com>
23730 PR middle-end/39335
23731 * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
23732 when the type precision of the induction variable should be
23733 larger than the type precision of nit.
23734 (gen_parallel_loop): Update use of canonicalize_loop_ivs.
23735 * graphite.c (graphite_loop_normal_form): Same.
23736 * tree-flow.h (canonicalize_loop_ivs): Update declaration.
23738 2009-03-02 Uros Bizjak <ubizjak@gmail.com>
23740 * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
23741 (*call_1_rex64_ms_sysv): Use named constants instead of magic
23742 numbers to describe clobbered registers.
23743 (*call_value_0_rex64_ms_sysv): Ditto.
23744 * config/i386/mmx.md (mmx_emms): Ditto.
23745 (mmx_femms): Ditto.
23747 2009-03-02 Richard Sandiford <rdsandiford@googlemail.com>
23749 * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
23752 2009-03-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
23754 * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
23755 (spu_section_type_flags): New function.
23757 2009-03-02 Uros Bizjak <ubizjak@gmail.com>
23759 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
23760 reg_class_contents of FLOAT_REGS into a temporary.
23762 2009-03-02 Richard Guenther <rguenther@suse.de>
23763 Ira Rosen <irar@il.ibm.com>
23765 PR tree-optimization/39318
23766 * tree-vect-transform.c (vectorizable_call): Transfer the EH region
23767 information to the vectorized statement.
23769 2009-03-01 Uros Bizjak <ubizjak@gmail.com>
23771 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
23772 variable. Use defined names instead of magic constants for REX SSE
23775 2009-03-01 Richard Guenther <rguenther@suse.de>
23777 PR tree-optimization/39331
23778 * omp-low.c (lower_send_shared_vars): Do not receive new
23779 values for the reference of DECL_BY_REFERENCE parms or results.
23781 2009-03-01 Jan Hubicka <jh@suse.cz>
23784 * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
23785 BLOCK_NONLOCALIZED_VAR): New macros.
23786 (tree_block): Add nonlocalized_vars.
23787 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
23788 gen_decl_die): Add origin argument. Allow generation of die with
23789 origin at hand only.
23790 (gen_member_die, gen_type_die_with_usage, force_decl_die,
23791 declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
23793 (gen_block_die): Fix checking for unused blocks.
23794 (process_scope_var): Break out from .... ; work with origins only.
23795 (decls_for_scope) ... here; process nonlocalized list.
23796 (dwarf2out_ignore_block): Look for nonlocalized vars.
23797 * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
23799 (dump_scope_block): Dump them.
23800 * tree-inline.c (remap_decls): Handle nonlocalized vars.
23801 (remap_block): Likewise.
23802 (can_be_nonlocal): New predicate.
23803 (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
23805 2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23807 * configure: Regenerate.
23809 2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23811 * optc-gen.awk: No need to duplicate option flags twice.
23812 Reuse help texts for duplicate options which do not have any.
23814 * gcc.c (display_help): Document --version.
23816 * gcc.c (main): If print_help_list and verbose_flag, ensure
23817 driver output comes before subprocess output.
23819 * optc-gen.awk: Assign all remaining fields to help string,
23820 space-separated, for multi-line help in *.opt.
23822 * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
23823 -Wno-pedantic-ms-format is for MinGW targets only.
23825 * doc/options.texi (Option file format): Fix bad indentation,
23826 restoring dropped sentence.
23828 2009-02-28 Jan Hubicka <jh@suse.cz>
23830 * tree-inline.c (tree_function_versioning): Output debug info.
23832 2009-02-28 Jan Hubicka <jh@suse.cz>
23835 * tree-inline.c (setup_one_parameter): Do not copy propagate
23836 arguments when not optimizing.
23838 2009-02-28 H.J. Lu <hongjiu.lu@intel.com>
23841 * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
23842 (avx_addsubv4df3): Likewise.
23843 (*avx_addsubv4sf3): Likewise.
23844 (sse3_addsubv4sf3): Likewise.
23845 (*avx_addsubv2df3): Likewise.
23846 (sse3_addsubv2df3): Likewise.
23847 (avx_unpckhps256): Correct item selectors.
23848 (avx_unpcklps256): Likewise.
23849 (avx_unpckhpd256): Likewise.
23850 (avx_unpcklpd256): Likewise.
23852 2009-02-28 Jan Hubicka <jh@suse.cz>
23854 * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
23856 (copy_arguments_for_versioning): If var is declared don't declare it.
23857 (tree_function_versioning): First setup substitutions and then copy
23860 2009-02-27 Jan Hubicka <jh@suse.cz>
23863 * cgraph.h (varpool_output_debug_info): Remove.
23864 * cgraphunit.c (varpool_output_debug_info): Remove.
23865 * dwarf2out.c (deferred_locations_struct): New struct
23866 (deferred_locations): New type.
23867 (deferred_locations_list): New static var.
23868 (deffer_location): New function.
23869 (gen_variable_die): Use it.
23870 (decls_for_scope): Output info on local static vars.
23871 (dwarf2out_finish): Process deferred locations.
23872 * varpool.c (varpool_output_debug_info): Remove.
23874 2009-02-27 Jan Hubicka <jh@suse.cz>
23877 * tree.h (TREE_PROTECTED): Fix comment.
23878 (BLOCK_HANDLER_BLOCK): Remove.
23879 (struct tree_block): Remove handler_block add body_block.
23880 (inlined_function_outer_scope_p): New.
23881 (is_body_block): Remove.
23882 * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
23883 * dwarf2out.c (is_inlined_entry_point): Remove.
23884 (add_high_low_attributes): Use inlined_function_outer_scope_p.
23885 (gen_block_die): Use is_inlined_entry_point check. Remove body block
23887 * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
23888 * gimplify.c (gimplify_expr): Gimplify body blocks.
23889 * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
23890 block with multiple subblocks.
23891 (dump_scope_block): Prettier output; dump more flags and info.
23892 (dump_scope_blocks): New.
23893 (remove_unused_locals): Use dump_scope_blocks.
23894 * tree-flow.h (dump_scope_blocks): Declare.
23895 * tree-cfg.c (execute_build_cfg): Dump scope blocks.
23896 * stmt.c (is_body_block): Remove.
23897 * tree-inline.c (remap_block): Copy BODY_BLOCK info.
23898 * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
23900 2009-02-27 Sebastian Pop <sebastian.pop@amd.com>
23902 PR middle-end/39308
23903 * graphite.c (graphite_loop_normal_form): Do not call
23904 number_of_iterations_exit from a gcc_assert.
23906 2009-02-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
23908 * config/s390/s390.c (s390_swap_cmp): Look for conditional
23909 jumps if COND is NULL.
23910 (find_cond_jump): New function.
23911 (s390_z10_optimize_cmp): Handling for reg-reg compares added.
23912 * config/s390/s390.md: Remove z10_cobra attribute value.
23914 2009-02-26 Uros Bizjak <ubizjak@gmail.com>
23916 * config/alpha/alpha.h (alpha_expand_mov): Return false if
23917 force_const_mem returns NULL_RTX.
23919 2009-02-26 Jan Hubicka <jh@suse.cz>
23922 * cgraph.h (varpool_output_debug_info): Remove.
23923 * cgraphunit.c (varpool_output_debug_info): Remove.
23924 * dwarf2out.c (deferred_locations_struct): New struct
23925 (deferred_locations): New type.
23926 (deferred_locations_list): New static var.
23927 (deffer_location): New function.
23928 (gen_variable_die): Use it.
23929 (decls_for_scope): Output info on local static vars.
23930 (dwarf2out_finish): Process deferred locations.
23931 * varpool.c (varpool_output_debug_info): Remove.
23933 2009-02-25 H.J. Lu <hongjiu.lu@intel.com>
23935 PR rtl-optimization/39241
23936 * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
23937 to subreg_offset_representable_p.
23939 2009-02-25 Paolo Bonzini <bonzini@gnu.org>
23941 * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
23942 execute function prototype. Get f and nregs from max_reg_num
23943 and get_insns. Remove the first backward pass as it's dead,
23944 guard the forward pass by flag_expensive_optimizations.
23945 (rest_of_handle_regmove): Delete.
23946 (pass_regmove): Replace it with regmove_optimize.
23948 2009-02-25 Martin Jambor <mjambor@suse.cz>
23950 PR tree-optimization/39259
23951 * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
23952 calls_alloca function flags.
23953 (copy_bb): Set calls_setjmp and alls_alloca function flags if such
23954 calls are detected.
23956 2009-02-25 Paolo Bonzini <bonzini@gnu.org>
23958 * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
23959 flags_set_1_rtx, flags_set_1_set): Delete.
23960 (regmove_optimize): Do not call mark_flags_life_zones.
23962 2009-02-24 Julian Brown <julian@codesourcery.com>
23965 * config/arm/arm.c (require_pic_register): Only set
23966 cfun->machine->pic_reg once per function.
23968 2009-02-24 Sandra Loosemore <sandra@codesourcery.com>
23970 * doc/invoke.texi (Link Options): Document an easier way to pass
23971 options that take arguments to the GNU linker using -Xlinker and -Wl.
23973 2009-02-24 Steve Ellcey <sje@cup.hp.com>
23976 * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
23978 2009-02-24 Richard Guenther <rguenther@suse.de>
23981 * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
23983 2009-02-24 Richard Guenther <rguenther@suse.de>
23984 Zdenek Dvorak <ook@ucw.cz>
23986 PR tree-optimization/39233
23987 * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
23988 from converting them to a generic type.
23990 2009-02-23 Sebastian Pop <sebastian.pop@amd.com>
23992 PR tree-optimization/39260
23993 * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
23994 contains a condition with a real type.
23995 (build_scop_conditions_1): Conditions are always last_stmt of a bb.
23997 2009-02-23 Jason Merrill <jason@redhat.com>
24000 * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
24001 narrowing_initializer_constant_valid_p.
24002 (narrowing_initializer_constant_valid_p): Don't return
24003 null_pointer_node for adding a pointer to itself.
24005 2009-02-23 Jan Hubicka <jh@suse.cz>
24008 * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
24011 2009-02-23 Jan Hubicka <jh@suse.cz>
24013 PR tree-optimization/37709
24014 * tree.c (block_ultimate_origin): Move here from dwarf2out.
24015 * tree.h (block_ultimate_origin): Declare.
24016 * dwarf2out.c (block_ultimate_origin): Move to tree.c
24017 * tree-ssa-live.c (remove_unused_scope_block_p):
24018 Eliminate blocks containig no instructions nor live variables nor
24020 (dump_scope_block): New function.
24021 (remove_unused_locals): Enable removal of dead blocks by default;
24022 enable dumping at TDF_DETAILS.
24024 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
24026 * config/i386/i386.c (classify_argument): Don't allow COImode
24028 (function_arg_advance_32): Don't allow OImode.
24029 (function_arg_32): Likewise.
24030 (function_value_32): Likewise.
24031 (return_in_memory_32): Likewise.
24032 (function_arg_64): Remove OImode comment.
24034 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
24037 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
24038 ix86_expand_vector_set for V4DImode in 64bit mode only.
24039 (ix86_expand_vector_init_one_var): Likewise.
24041 2009-02-21 Sebastian Pop <sebastian.pop@amd.com>
24043 * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
24045 2009-02-21 Richard Sandiford <rdsandiford@googlemail.com>
24048 * loop-iv.c: Revert last change.
24049 * emit-rtl.c: Likewise.
24051 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
24054 * config/i386/i386.c (type_natural_mode): Remove an extra
24055 space in the warning message.
24056 (function_value_32): Handle 32-byte vector modes.
24057 (return_in_memory_32): Likewise.
24059 2009-02-21 Richard Sandiford <rdsandiford@googlemail.com>
24061 * loop-iv.c (truncate_value): New function.
24062 (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
24064 (lowpart_subreg): Move to...
24065 * emit-rtl.c: ...here.
24067 2009-02-21 Danny Smith <dannysmith@users.sourceforge.net>
24069 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
24070 accidental and undocumented change at revision 140860.
24072 2009-02-21 Joseph Myers <joseph@codesourcery.com>
24074 * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
24075 take gimple_seq * arguments.
24076 (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
24077 types_compatible_p langhook.
24079 2009-02-20 Mark Mitchell <mark@codesourcery.com>
24080 Joseph Myers <joseph@codesourcery.com>
24082 * config/arm/arm.c (arm_builtin_va_list): New function.
24083 (arm_expand_builtin_va_start): Likewise.
24084 (arm_gimplify_va_arg_expr): Likewise.
24085 (TARGET_BUILD_BUILTIN_VA_LIST): Define.
24086 (TARGET_BUILD_BUILTIN_VA_START): Likewise.
24087 (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
24088 (va_list_type): New variable.
24089 (arm_mangle_type): Mangle va_list_type appropriately.
24091 2009-02-20 Jakub Jelinek <jakub@redhat.com>
24093 PR middle-end/39157
24094 * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
24095 * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
24096 * params.def (loop-invariant-max-bbs-in-loop): New parameter.
24097 * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
24098 parameter to 1000 for -O1 by default.
24099 * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
24101 * loop-invariant.c: Include params.h.
24102 (move_loop_invariants): Don't call move_single_loop_invariants on
24105 2009-02-20 Jaka Mocnik <jaka@xlab.si>
24107 * calls.c (emit_library_call_value_1): Use slot_offset instead of
24108 offset when calculating bounds for indexing stack_usage_map. Fixes
24109 a buffer overflow with certain target setups.
24111 2009-02-20 Jakub Jelinek <jakub@redhat.com>
24114 * calls.c (expand_call): Clear try_tail_call if caller and callee
24115 disagree in promotion of function return value.
24117 2009-02-19 Jakub Jelinek <jakub@redhat.com>
24120 * c-common.c (c_determine_visibility): If visibility changed and
24121 DECL_RTL has been already set, call make_decl_rtl to update symbol
24124 2009-02-19 H.J. Lu <hongjiu.lu@intel.com>
24127 * varasm.c (assemble_variable): Don't check DECL_NAME when
24128 globalizing a variable.
24130 2009-02-19 Joseph Myers <joseph@codesourcery.com>
24133 * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
24134 expression before any __builtin_trap call.
24135 * c-typeck.c (build_function_call): Convert and check function
24136 arguments before generating a call to a trap. Evaluate the
24137 function arguments before the trap.
24139 2009-02-19 Uros Bizjak <ubizjak@gmail.com>
24142 * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
24143 (UNSPEC_FXAM_MEM): New unspec.
24144 (fxam<mode>2_i387_with_temp): New insn and split pattern.
24145 (isinf<mode>2): Use MODEF mode iterator. Force operand[1] through
24146 memory using fxam<mode>2_i387_with_temp to remove excess precision.
24148 2009-02-19 Richard Guenther <rguenther@suse.de>
24150 PR tree-optimization/39207
24151 PR tree-optimization/39074
24152 * tree-ssa-structalias.c (storedanything_id, var_storedanything,
24153 storedanything_tree): New.
24154 (do_ds_constraint): Simplify ANYTHING shortcutting. Update
24155 the STOREDANYTHING solution if the lhs solution contains ANYTHING.
24156 (build_succ_graph): Add edges from STOREDANYTHING to all
24158 (init_base_vars): Initialize STOREDANYTHING.
24159 (compute_points_to_sets): Free substitution info after
24160 building the succ graph.
24161 (ipa_pta_execute): Likewise.
24163 * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
24165 (do_ds_constraint): Do not add to special var or non-pointer
24167 (type_could_have_pointers): Split out from ...
24168 (could_have_pointers): ... here. For arrays use the element type.
24169 (create_variable_info_for): Initialize may_have_pointers.
24170 (new_var_info): Likewise.
24171 (handle_lhs_call): Make the HEAP variable unknown-sized.
24172 (intra_create_variable_infos): Use a type with pointers for
24173 PARM_NOALIAS, make it unknown-sized.
24175 2009-02-18 H.J. Lu <hongjiu.lu@intel.com>
24178 * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
24180 2009-02-18 Jason Merrill <jason@redhat.com>
24183 * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
24184 value if DECL_EXTERNAL.
24185 * tree-sra.c (sra_walk_gimple_assign): Likewise.
24186 * target.h (gcc_target::binds_local_p): Clarify "module".
24187 * tree.h (TREE_PUBLIC): Clarify "module".
24189 2009-02-17 Xuepeng Guo <xuepeng.guo@intel.com>
24192 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
24193 initialization for MS_ABI prior to the hunk of !TARGET_MMX.
24195 2009-02-17 H.J. Lu <hongjiu.lu@intel.com>
24198 * c.opt (Wabi): Support C and ObjC.
24201 * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
24203 * config/i386/i386.c (classify_argument): Warn once about the ABI
24204 change when passing union with long double.
24206 * doc/invoke.texi: Update -Wabi for warning psABI changes.
24208 2009-02-18 Joseph Myers <joseph@codesourcery.com>
24211 * c-parser.c (c_parser_compound_statement): Always enter and leave
24214 2009-02-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
24217 * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
24219 2009-02-18 Jakub Jelinek <jakub@redhat.com>
24221 PR tree-optimization/36922
24222 * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
24223 * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
24226 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
24228 * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
24231 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
24233 * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
24235 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
24237 * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
24240 2009-02-17 Ruan Beihong <ruanbeihong@gmail.com>
24241 Richard Sandiford <rdsandiford@googlemail.com>
24243 * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
24244 * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
24245 (loongson_biadd): ...this.
24247 2009-02-17 Richard Guenther <rguenther@suse.de>
24249 PR tree-optimization/39202
24250 * tree-ssa-structalias.c (do_structure_copy): Before collapsing
24251 a var make sure to follow existing collapses.
24253 2009-02-17 Richard Guenther <rguenther@suse.de>
24255 PR middle-end/39214
24256 * langhooks.c (lhd_print_error_function): Check for NULL block.
24258 2009-02-17 Richard Guenther <rguenther@suse.de>
24260 PR tree-optimization/39204
24261 * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
24264 2009-02-17 Uros Bizjak <ubizjak@gmail.com>
24266 * config/soft-fp/double.h: Update from glibc CVS.
24268 2009-02-17 Richard Guenther <rguenther@suse.de>
24270 PR tree-optimization/39207
24271 * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
24272 strict-aliasing warnings for pointers pointing to NULL.
24274 2009-02-16 Joseph Myers <joseph@codesourcery.com>
24277 * c-parser.c (c_parser_braced_init): Call pop_init_level when
24278 skipping until next close brace.
24280 2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
24283 * config/i386/i386.c (ix86_expand_push): Set memory alignment
24284 to function argument boundary.
24286 2009-02-16 Hariharan Sandanagobalane <hariharan@picochip.com>
24288 * config/picochip/picochip.md (lea_add): Allow any nonimmediate
24289 in the lea_add. Reload eventually constraints it properly.
24290 * config/picochip/constraints.md: Remove the target constraint
24291 "b", since it is not needed anymore.
24293 2009-02-16 Jakub Jelinek <jakub@redhat.com>
24295 * gthr-dce.h: Uglify function parameter and local variable names.
24296 * gthr-gnat.h: Likewise.
24297 * gthr-mipssde.h: Likewise.
24298 * gthr-nks.h: Likewise.
24299 * gthr-posix95.h: Likewise.
24300 * gthr-posix.h: Likewise.
24301 * gthr-rtems.h: Likewise.
24302 * gthr-single.h: Likewise.
24303 * gthr-solaris.h: Likewise.
24304 * gthr-tpf.h: Likewise.
24305 * gthr-vxworks.h: Likewise.
24306 * gthr-win32.h: Likewise.
24308 2009-02-15 H.J. Lu <hongjiu.lu@intel.com>
24311 * config/i386/i386.md: Restrict the new peephole2 to move
24312 between MMX/SSE registers.
24314 2009-02-15 Richard Guenther <rguenther@suse.de>
24317 2009-02-13 Richard Guenther <rguenther@suse.de>
24319 * configure.ac: Enable LFS.
24320 * configure: Re-generate.
24321 * config.in: Likewise.
24323 2009-02-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
24325 * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
24326 spu_srqwbyte, spu_srqwbytebc): Define.
24327 * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
24328 spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
24329 * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
24330 "shrqby_<mode>"): New insn-and-split patterns.
24331 * config/spu/spu.c (expand_builtin_args): Determine and return
24332 number of operands using spu_builtin_description data.
24333 (spu_expand_builtin_1): Use it.
24335 2009-02-13 Steve Ellcey <sje@cup.hp.com>
24338 * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
24341 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
24344 * config/i386/i386.c (override_options): Correct warning
24345 messages for -malign-loops, -malign-jumps and -malign-functions.
24347 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
24350 * config/i386/i386.md: Restrict the new peephole2 to move
24351 between the general purpose registers.
24353 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
24356 * config/i386/i386.c (type_natural_mode): Add a new argument.
24357 Return the original mode and warn ABI change if vector size is 32byte.
24358 (function_arg_advance): Updated.
24359 (function_arg): Likewise.
24360 (ix86_function_value): Likewise.
24361 (ix86_return_in_memory): Likewise.
24362 (ix86_sol10_return_in_memory): Likewise.
24363 (ix86_gimplify_va_arg): Likewise.
24364 (function_arg_32): Don't warn ABX ABI change here.
24365 (function_arg_64): Likewise.
24367 2009-02-13 Bernd Schmidt <bernd.schmidt@analog.com>
24369 * loop-iv.c (implies_p): In the final case, test that operands 0
24370 of the two comparisons match.
24372 * config/bfin/bfin.c (find_prev_insn_start): New function.
24373 (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
24374 (find_next_insn_start): Move.
24376 2009-02-13 Richard Guenther <rguenther@suse.de>
24378 * configure.ac: Enable LFS.
24379 * configure: Re-generate.
24380 * config.in: Likewise.
24382 2009-02-13 Joseph Myers <joseph@codesourcery.com>
24385 * c-parser.c (c_parser_parms_list_declarator): Discard pending
24386 sizes on syntax error after some arguments have been parsed.
24388 2009-02-12 Jakub Jelinek <jakub@redhat.com>
24390 * doc/invoke.texi (-fira): Remove.
24392 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
24394 * caller-save.c: Replace regclass.c with reginfo.c in comments.
24395 * recog.c: Likewise.
24398 2009-02-12 Uros Bizjak <ubizjak@gmail.com>
24400 * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
24401 (umul_ppmm): Likewise.
24402 (count_leading_zeros): Likewise.
24403 (count_trailing_zeros): Likewise.
24404 (UMUL_TIME): Likewise.
24406 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
24408 * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
24409 soft-fp/t-softfp to tmake_file.
24411 * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
24412 (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
24413 (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
24414 IA64_BUILTIN_INFQ]: New.
24415 (ia64_init_builtins): Initialize __builtin_infq,
24416 __builtin_fabsq and __builtin_copysignq if not HPUX.
24417 (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
24418 IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
24420 * config/ia64/lib1funcs.asm (__divtf3): Define only if
24422 (__fixtfti): Likewise.
24423 (__fixunstfti): Likewise.
24424 (__floattitf): Likewise.
24426 * config/ia64/libgcc-glibc.ver: New.
24427 * config/ia64/t-fprules-softfp: Likewise.
24428 * config/ia64/sfp-machine.h: Likewise.
24430 * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
24431 (LIBGCC2_TF_CEXT): Likewise.
24432 (TF_SIZE): Likewise.
24433 (TARGET_INIT_LIBFUNCS): Likewise.
24435 * config/ia64/t-glibc (SHLINB_MAPFILES):
24436 Add $(srcdir)/config/ia64/libgcc-glibc.ver.
24438 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
24440 * config/i386/i386.c (construct_container): Rewrite processing
24441 BLKmode with X86_64_SSE_CLASS.
24443 2009-02-12 Paolo Bonzini <bonzini@gnu.org>
24446 * config/i386/i386.md: Replace simplify_replace_rtx with
24447 replace_rtx in the new peephole2.
24449 2009-02-12 Nathan Sidwell <nathan@codesourcery.com>
24451 * doc/invoke.texi (Optimize Options): Stop claiming inlining and
24452 loop unrolling do not happen at -O2.
24454 2009-02-12 Michael Matz <matz@suse.de>
24456 * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
24458 2009-02-12 Jakub Jelinek <jakub@redhat.com>
24460 * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
24463 2009-02-12 Ben Elliston <bje@au.ibm.com>
24465 * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
24466 patterns when updating the back chain. Missed in the 2009-02-10
24469 2009-02-11 Janis Johnson <janis187@us.ibm.com>
24471 * doc/extend.texi (Decimal Floating Types): Update identifier of
24472 draft TR and list of missing support.
24474 2009-02-11 Jakub Jelinek <jakub@redhat.com>
24476 PR middle-end/39154
24477 * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
24478 bit to variable length decl's flags, add it also to its
24479 pointer replacement variable.
24481 2009-02-11 Uros Bizjak <ubizjak@gmail.com>
24482 Jakub Jelinek <jakub@redhat.com>
24485 * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
24486 (memory_blockage): New expander.
24487 (*memory_blockage): New insn pattern.
24488 * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
24489 instead of general blockage at the end of function prologue when
24490 frame pointer is used to access red zone area. Do not emit blockage
24491 when profiling, it is emitted in generic code.
24492 (ix86_expand_epilogue): Emit memory_blockage at the beginning of
24493 function epilogue when frame pointer is used to access red zone area.
24495 2009-02-11 Paolo Bonzini <bonzini@gnu.org>
24498 * config/i386/i386.md: Add two new peephole2 to avoid mov followed
24499 by arithmetic with memory operands.
24500 * config/i386/predicates.md (commutative_operator): New.
24502 2009-02-10 Janis Johnson <janis187@us.ibm.com>
24504 * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
24507 2009-02-10 Eric Botcazou <ebotcazou@adacore.com>
24509 * alias.h (record_alias_subset): Declare.
24510 * alias.c (record_alias_subset): Make global.
24512 2009-02-10 Nick Clifton <nickc@redhat.com>
24514 * tree-parloops.c: Change license to GPLv3.
24515 * ipa-struct-reorg.c: Change license to GPLv3.
24516 * ipa-struct-reorg.h: Change license to GPLv3.
24518 2009-02-10 Steve Ellcey <sje@cup.hp.com>
24521 * c-decl.c (start_struct): Return NULL on error.
24523 2009-02-10 Jakub Jelinek <jakub@redhat.com>
24525 PR middle-end/39124
24526 * cfgloopmanip.c (remove_path): Call remove_bbs after
24527 cancel_loop_tree, not before it.
24530 * function.h (struct function): Add has_local_explicit_reg_vars bit.
24531 * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
24532 VAR_DECLs were seen.
24533 * tree-ssa-live.c (remove_unused_locals): Recompute
24534 cfun->has_local_explicit_reg_vars.
24535 * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
24536 copies or clearings if cfun->has_local_explicit_reg_vars.
24538 2009-02-10 Uros Bizjak <ubizjak@gmail.com>
24541 * config/i386/i386.c (expand_prologue): Emit blockage at the end
24542 of function prologue when frame pointer is used to access
24545 2009-02-10 Richard Guenther <rguenther@suse.de>
24547 PR middle-end/39127
24548 * gimplify.c (gimple_regimplify_operands): Always look if
24549 we need to create a temporary.
24551 2009-02-10 Richard Guenther <rguenther@suse.de>
24553 PR tree-optimization/39132
24554 * tree-loop-distribution.c (todo): New global var.
24555 (generate_memset_zero): Trigger TODO_rebuild_alias.
24556 (tree_loop_distribution): Return todo.
24558 2009-02-10 H.J. Lu <hongjiu.lu@intel.com>
24561 * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
24562 (x86_64_reg_class_name): Removed.
24563 (classify_argument): Return 0 if bytes > 32. Return 0 if the
24564 first one isn't X86_64_SSE_CLASS or any other ones aren't
24565 X86_64_SSEUP_CLASS when size > 16bytes. Don't turn
24566 X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
24567 is X86_64_SSEUP_CLASS. Set AVX modes to 1 X86_64_SSE_CLASS
24568 and 3 X86_64_SSEUP_CLASS.
24569 (construct_container): Remove X86_64_AVX_CLASS. Handle 4
24570 registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
24572 2009-02-10 Ben Elliston <bje@au.ibm.com>
24574 * config/rs6000/rs6000.md (allocate_stack): Always use an update
24575 form instruction to update the stack back chain word, even if the
24576 user has disabled the generation of update instructions.
24577 (movdi_<mode>_update_stack): New.
24578 (movsi_update_stack): Likewise.
24579 * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
24580 always use an update form instruction to update the stack back
24583 2009-02-09 Sebastian Pop <sebastian.pop@amd.com>
24585 PR middle-end/38953
24586 * graphite.c (if_region_set_false_region): After moving a region in
24587 the false branch of a condition, remove the empty dummy basic block.
24588 (gloog): Remove wrong fix for PR38953.
24590 2009-02-09 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
24592 * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
24593 generation due to implicit sign extension.
24595 2009-02-09 Eric Botcazou <ebotcazou@adacore.com>
24597 PR middle-end/38981
24598 * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
24599 at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
24601 2009-02-09 Richard Guenther <rguenther@suse.de>
24603 PR middle-end/35202
24604 * convert.c (convert_to_real): Disable (float)fn((double)x)
24605 to fnf(x) conversion if errno differences may occur and
24606 -fmath-errno is set.
24608 2009-02-07 Anatoly Sokolov <aesok@post.ru>
24610 * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
24611 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24612 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
24614 2009-02-06 Joseph Myers <joseph@codesourcery.com>
24617 * c-common.c (handle_alias_attribute): Disallow attribute for
24618 anything not a FUNCTION_DECL or VAR_DECL.
24620 2009-02-06 Janis Johnson <janis187@us.ibm.com>
24623 * real.c (do_compare): Special-case compare of zero against
24624 decimal float value.
24626 2009-02-06 Joseph Myers <joseph@codesourcery.com>
24629 * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
24630 as indicating flexible array members unless the field itself is
24631 being declarared as the incomplete array.
24633 2009-02-06 Jan Hubicka <jh@suse.cz>
24635 PR tree-optimization/38844
24636 * ipa-inline.c (try_inline): Stop inlining recursion when edge
24637 is already inlined.
24639 2009-02-06 Richard Guenther <rguenther@suse.de>
24641 PR middle-end/38977
24642 * tree-cfg.c (need_fake_edge_p): Force a fake edge for
24643 fork because we may expand it as __gcov_fork.
24645 2009-02-06 Nick Clifton <nickc@redhat.com>
24647 * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
24649 2009-02-06 Paolo Bonzini <bonzini@gnu.org>
24651 PR tree-optimization/35659
24652 * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
24653 vn_phi_eq): Shortcut if hashcode does not match.
24654 (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
24656 * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
24657 and avoid iterative_hash_expr.
24658 (FOR_EACH_VALUE_ID_IN_SET): New.
24659 (value_id_compare): Remove.
24660 (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
24661 sort expressions by value id.
24663 2009-02-05 Kaz Kojima <kkojima@gcc.gnu.org>
24666 * config/sh/predicates.md (general_movsrc_operand): Don't check
24667 the subreg of system registers here.
24669 2009-02-05 Jakub Jelinek <jakub@redhat.com>
24672 * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
24673 on the copied decl.
24675 2009-02-05 Paolo Bonzini <bonzini@gnu.org>
24677 PR rtl-optimization/39110
24678 * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
24679 addresses, not aligned ones.
24681 2009-02-05 Daniel Berlin <dberlin@dberlin.org>
24682 Richard Guenther <rguenther@suse.de>
24684 PR tree-optimization/39100
24685 * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
24686 comment says and add edges.
24688 2009-02-05 Joseph Myers <joseph@codesourcery.com>
24691 * c-common.c (handle_tls_model_attribute): Ignore attribute for
24692 non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
24694 2009-02-04 Tobias Grosser <grosser@fim.uni-passau.de>
24696 * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
24697 sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
24698 register_bb_in_sese, new_sese, free_sese): Moved.
24699 (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
24700 outermost_loop_in_scop, build_scop_iteration_domain,
24701 expand_scalar_variables_ssa_name, get_vdef_before_scop,
24702 limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
24703 Use loop_in_sese_p instead of loop_in_scop_p.
24704 (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
24705 (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
24706 (scopdet_basic_block_info): Fix bug in scop detection.
24707 (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
24708 eq_loop_to_cloog_loop): Remove.
24709 (nb_loops_around_loop_in_scop, nb_loop
24710 ref_nb_loops): Moved here...
24711 * graphite.h (ref_nb_loops): ... from here.
24712 (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
24713 (loop_domain_dim, loop_iteration_vector_dim): Remove.
24714 (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
24715 * testsuite/gcc.dg/graphite/scop-19.c: New
24717 2009-02-04 Paolo Bonzini <bonzini@gnu.org>
24718 Hans-Peter Nilsson <hp@axis.com>
24720 PR rtl-optimization/37889
24721 * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
24722 Move offset handling from PLUS to before the switch. Use new
24723 arguments when considering SYMBOL_REFs too.
24724 (rtx_addr_can_trap_p): Pass dummy offset and size.
24725 (enum may_trap_p_flags): Remove.
24726 (may_trap_p_1): Pass size from MEM_SIZE.
24728 PR rtl-optimization/38921
24729 * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
24730 * rtl.h (may_trap_after_code_motion_p): Delete prototype.
24731 * rtlanal.c (may_trap_after_code_motion_p): Delete.
24732 (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
24734 2009-02-04 H.J. Lu <hongjiu.lu@intel.com>
24736 AVX Programming Reference (January, 2009)
24737 * config/i386/sse.md (*vpclmulqdq): New.
24739 2009-02-04 Jakub Jelinek <jakub@redhat.com>
24741 PR tree-optimization/38977
24742 PR gcov-profile/38292
24743 * calls.c (special_function_p): Disregard __builtin_ prefix.
24745 2009-02-04 Hariharan Sandanagobalane <hariharan@picochip.com>
24747 * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
24748 non-indexable addresses even before reload.
24750 2009-02-03 Joseph Myers <joseph@codesourcery.com>
24753 * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
24754 as having variable size. Do not give an error for unnamed
24755 parameters with [*] declarators. Give a warning for type names
24756 with [*] declarators and mark them as variable size.
24757 * c-parser.c (c_parser_sizeof_expression): Do not give an error
24758 for sizeof applied to [*] type names.
24760 2009-02-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
24763 * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
24765 2009-02-03 Jakub Jelinek <jakub@redhat.com>
24767 * gcc.c (process_command): Update copyright notice dates.
24768 * gcov.c (print_version): Likewise.
24769 * gcov-dump.c (print_version): Likewise.
24770 * mips-tfile.c (main): Likewise.
24771 * mips-tdump.c (main): Likewise.
24773 2009-02-03 Joseph Myers <joseph@codesourcery.com>
24776 * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
24777 for composite type involving a zero-length array type.
24779 2009-02-03 Jakub Jelinek <jakub@redhat.com>
24782 * function.c (match_asm_constraints_1): Skip over
24783 initial optional % in the constraint.
24785 PR inline-asm/39059
24786 * c-parser.c (c_parser_postfix_expression): If fixed point is not
24787 supported, don't accept FIXED_CSTs.
24788 * c-decl.c (finish_declspecs): Error if fixed point is not supported
24789 and _Sat is used without _Fract/_Accum. Set specs->type to
24790 integer_type_node for cts_fract/cts_accum if fixed point is not
24793 2009-02-02 Catherine Moore <clm@codesourcery.com>
24795 * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
24797 2009-02-02 Richard Sandiford <rdsandiford@googlemail.com>
24799 * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
24800 (ABI_HAS_64BIT_SYMBOLS): Use it.
24801 (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
24803 2009-02-02 Paul Brook <paul@codesourcery.com>
24805 * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
24807 2009-02-02 Jakub Jelinek <jakub@redhat.com>
24809 PR inline-asm/39058
24810 * recog.h (asm_operand_ok): Add constraints argument.
24811 * recog.c (asm_operand_ok): Likewise. If it is set, for digits
24812 recurse on matching constraint.
24813 (check_asm_operands): Pass constraints as 3rd argument to
24814 asm_operand_ok. Don't look up matching constraint here.
24815 * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
24818 2009-02-02 Ben Elliston <bje@au.ibm.com>
24820 * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
24821 TARGET_NARROW_VOLATILE_BITFIELD macro names.
24823 2009-01-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
24825 * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
24826 information. Remove some obsolete information. Reorganize.
24828 * config/pa/fptr.c: Revert license to GPL 2.
24829 * config/pa/milli64.S: Likewise.
24831 2009-01-31 Dave Korn <dave.korn.cygwin@gmail.com>
24834 * mkmap-flat.awk (END): Use pe_dll command-line arg to pass
24835 LIBRARY name in, instead of hard-coding it.
24836 * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*): Add an
24837 extra target make frag to tmake_files according to EH model.
24838 (i[34567]86-*-mingw* | x86_64-*-mingw*): Likewise.
24839 * config/i386/t-dw2-eh, config/i386/t-sjlj-eh: Add new target
24840 frags that define makefile variable EH_MODEL appropriately.
24841 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Add comment.
24842 * config/i386/cygwin.h (LIBGCC_EH_EXTN): Define to nothing or
24843 to "-sjlj" according to type of EH configured.
24844 (LIBGCC_SONAME): Concatenate it to shared library base name.
24845 * config/i386/mingw32.h (LIBGCC_EH_EXTN): Define to "_dw2" or
24846 to "_sjlj" according to type of EH configured.
24847 (LIBGCC_SONAME): Concatenate it to shared library base name.
24848 * config/i386/t-cygming (SHLIB_SONAME): Use EH_MODEL.
24849 (SHLIB_LINK): Add missing semicolon to if-else construct.
24850 (SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
24851 string value of "pe_dll" command-line option.
24852 * config/i386/t-cygwin (SHLIB_EH_EXTENSION): New helper.
24853 (SHLIB_SONAME): Use it when overriding t-cygming default.
24854 (SHLIB_IMPLIB): Override t-cygming default.
24855 (SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
24856 string value of "pe_dll" command-line option.
24858 2009-01-31 Dave Korn <dave.korn.cygwin@gmail.com>
24861 * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
24862 (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
24864 2009-01-31 Richard Guenther <rguenther@suse.de>
24866 PR tree-optimization/38937
24867 * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
24868 computing the transitive closure.
24870 2009-01-30 Richard Guenther <rguenther@suse.de>
24872 PR tree-optimization/39041
24873 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24874 Propagate variable indices only if the types match for this stmt.
24876 2009-01-30 Jakub Jelinek <jakub@redhat.com>
24879 * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
24880 inline but never defined.
24882 2009-01-30 Wolfgang Gellerich <gellerich@de.ibm.com>
24884 * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
24885 (*insv_h_di_reg_extimm): New insn.
24886 (*insv_l<mode>_reg_extimm): New insn.
24888 2009-01-30 Hariharan Sandanagobalane <hariharan@picochip.com>
24890 * config/picochip/picochip.c (flag_conserve_stack): set
24891 PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
24892 fconserve-stack. Reduce call-overhead used by inliner.
24894 2009-01-30 Hariharan Sandanagobalane <hariharan@picochip.com>
24897 * common.opt (flag_conserve_stack): Initialised to zero.
24899 2009-01-30 Kai Tietz <kai.tietz@onevision.com>
24902 * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
24903 (ix86_expand_epilogue): Take nsseregs in account to use proper restore
24906 2009-01-29 H.J. Lu <hongjiu.lu@intel.com>
24908 * ira-color.c (allocno_reload_assign): Update comments.
24909 * regmove.c (regmove_optimize): Likewise.
24913 2009-01-29 Robert Millan <rmh@aybabtu.com>
24915 * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
24916 * config/i386/kopensolaris-gnu.h: New file. Undefine
24917 `MD_UNWIND_SUPPORT'.
24918 * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
24920 2009-01-29 Kazu Hirata <kazu@codesourcery.com>
24922 PR tree-optimization/39007
24923 * tree-loop-distribution.c (generate_builtin): Use
24924 recompute_dominator to compute the immediate dominator of the
24925 basic block just after the loop.
24927 2009-01-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
24929 * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
24930 (ASM_OUTPUT_DWARF_PCREL): Define.
24932 2009-01-29 Vladimir Makarov <vmakarov@redhat.com>
24934 * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
24935 * doc/passes.texi: Remove entries about regclass, local-alloc, and
24936 global. Modify entries about regmove and IRA.
24938 * ra-conflict.c: Remove the file.
24940 * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
24942 * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
24943 (pass_regclass_init): Rename to pass_reginfo_init.
24945 * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
24947 * toplev.h (flag_ira): Remove.
24949 * caller-save.c (setup_save_areas): Remove flag_ira.
24951 * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
24953 * global.c: Remove the file.
24955 * opts.c (decode_options): Remove flag_ira.
24957 * hard-reg-set.h (losing_caller_save_reg_set): Remove.
24959 * regmove.c: Modify file description.
24960 (find_use_as_address, try_auto_increment): Define them only if
24961 AUTO_INC_DEC is defined.
24962 (replacement_quality, replace_in_call_usage, fixup_match_1,
24963 stable_and_no_regs_but_for_p): Remove.
24964 (reg_set_in_bb): Make it static.
24965 (regmove_optimize): Remove flag_ira and code which worked for
24968 * local-alloc.c: Remove the file.
24970 * common.opt (fira): Remove.
24972 * ira.c: Include except.h.
24973 (eliminable_regset): Move from global.c.
24974 (mark_elimination): Ditto. Remove flag_ira.
24975 (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
24976 equiv_mem_modified, validate_equiv_mem_from_store,
24977 validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
24978 contains_replace_regs, memref_referenced_p, memref_used_between_p,
24979 no_equiv, recorded_label_ref): Move from local-alloc.c.
24980 (update_equiv_regs): Ditto. Make it static.
24981 (print_insn_chain, print_insn_chains): Move it from global.c.
24982 (pseudo_for_reload_consideration_p): Ditto. Remove flag_ira.
24983 (build_insn_chain): Ditto. Make it static.
24984 (ra_init_live_subregs): Move from ra-conflict.c. Make it static.
24985 Rename to init_live_subregs.
24986 (gate_ira): Remove flag_ira.
24988 * regclass.c: Rename reginfo.c. Change file description.
24989 (FORBIDDEN_INC_DEC_CLASSES): Remove.
24990 (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
24991 (init_reg_sets_1): Remove code for evaluation of
24992 reg_class_superclasses and losing_caller_save_reg_set.
24993 (init_regs): Remove init_reg_autoinc.
24994 (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
24995 ok_for_base_p_nonstrict): Remove.
24996 (regclass_init): Rename to reginfo_init. Don't initialize init_cost.
24997 (pass_regclass_init): Rename to pass_reginfo_init. Modify
24998 corresponding entries.
24999 (dump_regclass, record_operand_costs, scan_one_insn,
25000 init_reg_autoinc, regclass, record_reg_classes, copy_cost,
25001 record_address_regs, auto_inc_dec_reg_p): Remove.
25002 (gt-regclass.h): Rename to gt-reginfo.h.
25004 * rtl.h (dump_global_regs, retry_global_alloc,
25005 build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
25007 * Makefile.in (RA_H): Remove.
25008 (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
25009 Rename regclass.o to reginfo.o.
25010 (regclass.o): Rename to reginfo.o. Rename gt-regclass.h to
25012 (global.o, local-alloc.o, ra-conflict.o): Remove entries.
25013 (GTFILES): Rename regclass.c to reginfo.c.
25015 * passes.c (init_optimization_passes): Remove pass_local_alloc and
25016 pass_global_alloc. Rename pass_regclass_init to pass_reginfo_init.
25018 * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
25019 count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
25021 (finish_spills): Ditto. Remove code for !flag_ira.
25023 2009-01-29 Kenneth Zadeck <zadeck@naturalbridge.com>
25025 PR middle-end/35854
25026 * doc/invoke.texi (rtl debug options): Complete rewrite.
25027 * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
25029 * mode-switching.c (pass_mode_switching): Rename pass from
25030 "mode-sw" to "mode_sw".
25031 * except.c (pass_convert_to_eh_ranges): Rename pass from
25032 "eh-ranges" to "eh_ranges".
25033 * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
25037 2009-01-29 Andrey Belevantsev <abel@ispras.ru>
25038 Alexander Monakov <amonakov@ispras.ru>
25040 PR middle-end/38857
25041 * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
25043 (move_exprs_to_boundary): Change return type and pass through
25044 should_move from move_op. Relax assert. Update usage ...
25045 (schedule_expr_on_boundary): ... here. Use should_move instead of
25047 (move_op_orig_expr_found): Indicate that insn was disconnected from
25049 (code_motion_process_successors): Do not call after_merge_succs
25050 callback if original expression was not found when traversing any of
25052 (code_motion_path_driver): Change return type. Update prototype.
25053 (move_op): Update comment. Add a new parameter (should_move). Update
25054 prototype. Set *should_move based on indication provided by
25055 move_op_orig_expr_found.
25057 2009-01-28 Pat Haugen <pthaugen@us.ibm.com>
25059 * doc/invoke.texi (avoid-indexed-addresses): Document new option.
25060 * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
25061 * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
25062 * config/rs6000/rs6000.c (rs6000_override_options): Default
25063 avoid-indexed-addresses on for Power6, off for everything else.
25064 (avoiding_indexed_address_p): New function.
25065 (rs6000_legitimize_address): Use it.
25066 (rs6000_legitimate_address): Likewise.
25067 * config/rs6000/rs6000.md (movXX_updateX): Likewise
25069 2009-01-28 Kazu Hirata <kazu@codesourcery.com>
25071 PR tree-optimization/38997
25072 * tree-loop-distribution.c (generate_memset_zero): Use
25073 POINTER_PLUS_EXPR for a pointer addition.
25075 2009-01-28 Andreas Krebbel <krebbel1@de.ibm.com>
25077 * config/s390/s390.md (bswap<mode>2): New pattern added.
25079 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
25081 * config/s390/s390.md (*tls_load_31): Added type attribute.
25083 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
25085 * config/s390/s390.md: Fix a few comments.
25087 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
25089 * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
25090 (*tm<mode>_full): Fixed z10prop attribute.
25091 (*tst<mode>_extimm): Fixed z10prop attribute.
25092 (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
25093 (*tstqiCCT_cconly): Fixed z10prop attribute.
25094 (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
25095 (*movsi_larl): Fixed z10prop attribute.
25096 (*movsi_zarch): Fixed z10prop attribute.
25097 (*movsi_eas): Fixed z10prop attribute.
25098 (*movhi): Fixed z10prop attribute.
25099 (*movqi): Fixed z10prop attribute.
25100 (*movstrictqi): Fixed z10prop attribute.
25101 (*mov<mode>): Fixed z10prop attribute.
25102 (*movcc): Fixed z10prop attribute.
25103 (*sethighpartdi_64): Fixed z10prop attribute.
25104 (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
25105 (*negdi2_sign_cc): Fixed z10prop attribute.
25106 (*negdi2_sign): Fixed z10prop attribute.
25107 (*absdi2_sign_cc): Fixed z10prop attribute.
25108 (*absdi2_sign): Fixed z10prop attribute.
25109 (*negabsdi2_sign_cc): Fixed z10prop attribute.
25110 (*negabsdi2_sign): Fixed z10prop attribute.
25111 (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
25112 (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
25113 (doloop_si64): Fixed z10prop attribute.
25114 (doloop_si31): Fixed z10prop attribute.
25115 (doloop_long): Fixed z10prop attribute.
25116 (indirect_jump): Fixed z10prop attribute.
25117 (nop): Fixed z10prop attribute.
25118 (main_base_64): Fixed z10prop attribute.
25119 (reload_base_64): Fixed z10prop attribute.
25121 2009-01-28 Jakub Jelinek <jakub@redhat.com>
25123 PR rtl-optimization/38740
25124 * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
25126 * config/mips/mips.c (mips_reorg): Likewise.
25128 2009-01-28 Richard Guenther <rguenther@suse.de>
25130 PR tree-optimization/38926
25131 * tree-ssa-pre.c (add_to_value): Assert we add only expressions
25132 with the correct value id to a value.
25133 (do_regular_insertion): Use the value number of edoubleprime
25134 for the value number of the expr.
25137 2008-08-21 Richard Guenther <rguenther@suse.de>
25139 * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
25140 a PHI ask VN if it is already available.
25141 * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
25142 * tree-ssa-sccvn.c (vn_phi_lookup): Export.
25144 2009-01-28 Jakub Jelinek <jakub@redhat.com>
25146 PR middle-end/38934
25147 * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
25148 set to varying whenever max has TREE_OVERFLOW set, similarly
25149 for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
25151 2009-01-28 Richard Guenther <rguenther@suse.de>
25153 PR middle-end/38908
25154 * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
25155 uninitialized aggregate uses in call arguments.
25157 2009-01-28 Paolo Bonzini <bonzini@gnu.org>
25159 PR tree-optimization/38984
25160 * tree-ssa-structalias.c (get_constraints_for_1): Do not use
25161 the nothing_id variable if -fno-delete-null-pointer-checks.
25163 2009-01-28 Uros Bizjak <ubizjak@gmail.com>
25166 * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
25167 (set_got_offset_rex64): Ditto.
25169 2009-01-27 H.J. Lu <hongjiu.lu@intel.com>
25172 * doc/extend.texi: Improve local variable with asm reg.
25174 2009-01-27 Adam Nemet <anemet@caviumnetworks.com>
25176 * c.opt (Wpacked-bitfield-compat): Change init value to -1.
25177 * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
25178 was not supplied then set warn_packed_bitfield_compat to the
25179 default value of 1.
25180 * stor-layout.c (place_field): Check warn_packed_bitfield_compat
25183 2009-01-27 Richard Guenther <rguenther@suse.de>
25185 PR tree-optimization/38503
25186 * cfgexpand.c (expand_gimple_basic_block): Ignore
25187 GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
25188 * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
25189 variables that cannot have TBAA applied.
25190 (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
25193 2009-01-27 Uros Bizjak <ubizjak@gmail.com>
25195 PR middle-end/38969
25196 * calls.c (initialize_argument_information): Do not wrap complex
25197 arguments in SAVE_EXPR.
25199 2009-01-26 Andreas Tobler <a.tobler@schweiz.org>
25201 * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
25202 (INSTALL_LIBGCC): Revert typo commit.
25204 2009-01-26 Richard Guenther <rguenther@suse.de>
25206 PR tree-optimization/38745
25207 * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
25208 from special handling.
25210 2009-01-26 Richard Guenther <rguenther@suse.de>
25212 PR tree-optimization/38745
25213 * tree-ssa.c (execute_update_addresses_taken): Do not include
25214 variables that cannot possibly be a register in not_reg_needs.
25215 Do not clear TREE_ADDRESSABLE on vars that may not become
25217 * tree-ssa.c (update_alias_info_1): Include those in the set
25218 of addressable vars.
25220 2009-01-26 Richard Guenther <rguenther@suse.de>
25222 PR middle-end/38851
25223 * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
25224 * tree-ssa-dse.c: Include langhooks.h
25225 (execute_simple_dse): Remove stores with zero size.
25227 2009-01-24 Jakub Jelinek <jakub@redhat.com>
25230 * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
25233 2009-01-24 Julian Brown <julian@codesourcery.com>
25235 * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
25236 config/arm/linux-atomic.c.
25237 * config/arm/linux-atomic.c: New.
25239 2009-01-24 Eric Botcazou <ebotcazou@adacore.com>
25241 * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
25242 * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
25243 * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
25245 2009-01-24 H.J. Lu <hongjiu.lu@intel.com>
25248 * c-opts.c (c_common_handle_option): Update warn_pointer_sign
25251 2009-01-24 Sebastian Pop <sebastian.pop@amd.com>
25253 PR tree-optimization/38953
25254 * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
25255 (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
25256 (gloog): Split the exit of the scop when the scop exit is a loop exit.
25257 (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
25260 2009-01-24 Paul Brook <paul@codesourcery.com>
25262 * config/arm/neon.md (neon_type): Move to arm.md.
25263 (neon_mov<VSTRUCT>): Add neon_type attribute.
25264 * config/arm/arm.md (neon_type): Move to here.
25265 (conds): Add "unconditioal" and use as default for NEON insns.
25267 2009-01-24 Ben Elliston <bje@au.ibm.com>
25269 * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
25270 void *' warning from -Wc++-compat.
25271 * Makefile.in (dominance.o-warn): Remove.
25273 2009-01-23 Paolo Bonzini <bonzini@gnu.org>
25275 PR tree-optimization/38932
25276 * fold-const.c (fold_unary_ignore_overflow): New.
25277 * tree.h (fold_unary_ignore_overflow): Declare.
25278 * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
25279 * tree-ssa-sccvn.c (visit_reference_op_load,
25280 simplify_unary_expression): Likewise.
25282 2009-01-22 Adam Nemet <anemet@caviumnetworks.com>
25284 * c-decl.c (finish_struct): Move code to set DECL_PACKED after
25285 DECL_BIT_FIELD is alreay known. Also inherit packed for bitfields
25286 regardless of their type.
25287 * c-common.c (handle_packed_attribute): Don't ignore packed on
25289 * c.opt (Wpacked-bitfield-compat): New warning option.
25290 * stor-layout.c (place_field): Warn if offset of a field changed.
25291 * doc/extend.texi (packed): Mention the ABI change.
25292 * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
25293 (Warning Options): Add it to the list.
25295 2009-01-22 H.J. Lu <hongjiu.lu@intel.com>
25297 * c-opts.c (c_common_post_options): Fix a typo in comments.
25299 2009-01-22 Steve Ellcey <sje@cup.hp.com>
25301 PR middle-end/38615
25302 * gimplify.c (gimplify_init_constructor): Fix promotion of const
25303 variables to static.
25304 * doc/invoke.texi (-fmerge-all-constants): Update description.
25306 2009-01-22 Uros Bizjak <ubizjak@gmail.com>
25309 * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
25310 (*movdi_1_rex64): Use type "mmx" for alternative 5.
25312 2009-01-22 Richard Earnshaw <rearnsha@arm.com>
25314 * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
25316 (LOCAL_ALIGNMENT): Similarly.
25318 2009-01-22 Mark Shinwell <shinwell@codesourcery.com>
25319 Joseph Myers <joseph@codesourcery.com>
25321 * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
25322 * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
25323 * config/arm/arm-tune.md: Regenerate.
25324 * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
25327 2009-01-22 Mark Shinwell <shinwell@codesourcery.com>
25329 * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
25330 version number to five.
25332 2009-01-22 Dodji Seketeli <dodji@redhat.com>
25335 * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
25336 * c-common.c (set_underlying_type): Likewise.
25337 (is_typedef_decl ): Likewise
25339 (set_underlying_type): Likewise.
25340 (is_typedef_type): Likewise.
25342 2009-01-21 Vladimir Makarov <vmakarov@redhat.com>
25344 PR middle-end/38587
25345 * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
25348 2009-01-21 Dave Korn <dave.korn.cygwin@gmail.com>
25351 * config/i386/cygwin.h (SHARED_LIBGCC_SPEC): New helper macro.
25352 (LIBGCC_SPEC): Don't define.
25353 (REAL_LIBGCC_SPEC): Define instead, using SHARED_LIBGCC_SPEC.
25355 2009-01-21 Uros Bizjak <ubizjak@gmail.com>
25357 PR rtl-optimization/38879
25358 * alias.c (base_alias_check): Unaligned access via AND address can
25359 alias all surrounding object types except those with sizes equal
25360 or wider than the size of unaligned access.
25362 2009-01-21 Dodji Seketeli <dodji@redhat.com>
25365 * c-decl.c (clone_underlying_type): Move this ...
25366 * c-common.c (set_underlying_type): ... here.
25367 Also, make sure the function properly sets TYPE_STUB_DECL() on
25368 the newly created typedef variant type.
25369 (is_typedef_decl ): New entry point.
25370 * tree.h: Added a new member member_types_needing_access_check to
25371 struct tree_decl_non_common.
25372 (set_underlying_type): New entry point.
25373 (is_typedef_type): Likewise.
25375 2009-01-21 Bingfeng Mei <bmei@broadcom.com>
25377 * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
25378 Check whether two instructions have memory references that
25379 belong to conflicting alias sets. walk_mems_1 and walk_mems_2
25380 are helper functions for traversing.
25381 * alias.h (insn_alias_sets_confilict_p): New prototypes.
25382 * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
25383 not to draw dependency edge for instructions with non-conflicting
25386 2009-01-20 Joseph Myers <joseph@codesourcery.com>
25389 * longlong.h: Update copyright years. Use soft-fp license notice.
25390 Sync __clz_tab declaration with glibc.
25392 2009-01-20 Steve Ellcey <sje@cup.hp.com>
25395 * doc/extend.texi (syscall_linkage): New.
25396 (version_id): Modify.
25398 2009-01-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
25399 Richard Guenther <rguenther@suse.de>
25401 PR tree-optimization/38747
25402 PR tree-optimization/38748
25403 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
25404 conversion if the base address is an indirect reference and the
25405 aliasing sets could cause issues.
25407 2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
25409 * common.opt (fgraphite, fgraphite-identity): Add comment for
25410 explaining why these options are not documented.
25412 2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
25414 * graphite.c (stmt_simple_for_scop_p): Also handle cases when
25415 gimple_call_lhs is NULL.
25417 2009-01-20 Paolo Bonzini <bonzini@gnu.org>
25420 * emit-rtl.c (adjust_address_1): Make sure memref is never
25423 2009-01-20 Ben Elliston <bje@au.ibm.com>
25425 * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25426 const qualifier from arg parameter. Remove unnecessary cast to char *.
25427 * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
25428 const qualifier from arg 2.
25430 2009-01-19 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
25432 * config/darwin.h: Add static-libgfortran to LINK_SPEC.
25434 2009-01-19 Vladimir Makarov <vmakarov@redhat.com>
25437 * rtl.h (reinit_regs): New prototype.
25438 * regclass.c: Include ira.h.
25439 (reinit_regs): New.
25440 * Makefile.in (regclass.o): Add ira.h.
25441 * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
25443 2009-01-18 H.J. Lu <hongjiu.lu@intel.com>
25446 * c-common.c (handle_aligned_attribute): Use
25447 ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
25448 default alignment value.
25450 * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
25452 * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
25453 * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
25455 * doc/extend.texi: Update __attribute__ ((aligned)). Document
25456 __BIGGEST_ALIGNMENT__.
25458 * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
25460 2009-01-18 Richard Guenther <rguenther@suse.de>
25462 PR tree-optimization/38819
25463 * tree-flow.h (operation_could_trap_helper_p): Declare.
25464 * tree-eh.c (operation_could_trap_helper_p): Export.
25465 * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
25466 * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
25467 * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
25468 are about to insert a possibly trapping instruction and fail
25471 2009-01-18 Andreas Schwab <schwab@suse.de>
25473 * doc/install.texi (Configuration): Remove obsolete paragraph
25474 about use of --with-gnu-ld with --with-gnu-as.
25476 2009-01-18 Kazu Hirata <kazu@codesourcery.com>
25478 * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
25479 doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
25480 Follow spelling conventions.
25482 2009-01-18 Ben Elliston <bje@au.ibm.com>
25484 * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
25485 C++ warning about implicit conversion from void * to struct
25487 (bitmap_obstack_free): Likewise for bitmap_element *.
25488 * Makefile.in (bitmap.o-warn): Remove.
25490 2009-01-17 Dave Korn <dave.korn.cygwin@gmail.com>
25492 * Makefile.in (BACKENDLIBS): Reorder to match dependencies.
25494 2009-01-17 Sebastian Pop <sebastian.pop@amd.com>
25495 Tobias Grosser <tobi.grosser@amd.com>
25497 * graphite.c (graphite_trans_scop_block): Do not block single
25500 2009-01-16 Alexandre Oliva <aoliva@redhat.com>
25502 * ebitmap.h (ebitmap_iter_init): Initialize all fields.
25503 * ipa-struct-reorg.c (gen_struct_type): Replace known-true
25504 test with assertion.
25506 2009-01-16 Richard Guenther <rguenther@suse.de>
25508 PR tree-optimization/38835
25509 PR middle-end/36227
25510 * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
25511 and INT + PTR -> (INT)(PTR p+ INT) folding.
25512 * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
25514 2009-01-16 Adam Nemet <anemet@caviumnetworks.com>
25517 * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
25518 the subreg from a lowpart subreg if it is also casting the value.
25520 2009-01-16 Sebastian Pop <sebastian.pop@amd.com>
25521 Tobias Grosser <tobi.grosser@amd.com>
25523 * graphite.c (compare_prefix_loops): New.
25524 (build_scop_canonical_schedules): Rewritten.
25525 (graphite_transform_loops): Move build_scop_canonical_schedules
25526 after build_scop_iteration_domain.
25528 2009-01-16 Sebastian Pop <sebastian.pop@amd.com>
25529 Tobias Grosser <tobi.grosser@amd.com>
25531 * graphite.c (add_conditions_to_domain): Add the loops to
25532 the dimension of the iteration domain. Do copy the domain
25533 only when it exists.
25534 (build_scop_conditions_1): Do not call add_conditions_to_domain.
25535 (add_conditions_to_constraints): New.
25536 (can_generate_code_stmt, can_generate_code): Removed.
25537 (gloog): Do not call can_generate_code.
25538 (graphite_transform_loops): Call add_conditions_to_constraints
25539 after building the iteration domain.
25541 2009-01-16 Jakub Jelinek <jakub@redhat.com>
25543 PR tree-optimization/38789
25544 * tree-ssa-threadedge.c
25545 (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
25546 __builtin_constant_p.
25548 2009-01-16 Kenneth Zadeck <zadeck@naturalbridge.com>
25550 * dce.c (delete_unmarked_insns): Reversed the order that insns are
25551 examined before deleting them.
25553 2009-01-16 Richard Earnshaw <rearnsha@arm.com>
25555 * function.c (aggregate_value_p): Correctly extract the function
25556 type from CALL_EXPR_FN lookup.
25558 2009-01-16 Hariharan Sandanagobalane <hariharan@picochip.com>
25560 * config/picochip/picochip.c (picochip_override_options): Revert
25561 CFI asm flag disable commited previously.
25563 2009-01-15 Sebastian Pop <sebastian.pop@amd.com>
25564 Tobias Grosser <tobi.grosser@amd.com>
25565 Jan Sjodin <jan.sjodin@amd.com>
25567 * graphite.c (scan_tree_for_params): On substractions negate
25568 all the coefficients of the term.
25569 (clast_to_gcc_expression_red): New. Handle reduction expressions
25570 of more than two operands.
25571 (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
25572 (get_vdef_before_scop): Handle also the case of default definitions.
25574 2009-01-15 Richard Sandiford <rdsandiford@googlemail.com>
25576 * caller-save.c (add_used_regs_1, add_used_regs): New functions.
25577 (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
25578 Also use them when walking CALL_INSN_FUNCTION_USAGE.
25580 2009-01-15 H.J. Lu <hongjiu.lu@intel.com>
25581 Joey Ye <joey.ye@intel.com>
25583 PR middle-end/37843
25584 * cfgexpand.c (expand_stack_alignment): Don't update stack
25585 boundary nor check incoming stack boundary here.
25586 (gimple_expand_cfg): Update stack boundary and check incoming
25587 stack boundary here.
25589 2009-01-15 Kenneth Zadeck <zadeck@naturalbridge.com>
25591 * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
25593 2009-01-14 Jakub Jelinek <jakub@redhat.com>
25595 PR rtl-optimization/38245
25596 * calls.c (expand_call): Add stack arguments to
25597 CALL_INSN_FUNCTION_USAGE even for pure calls (when
25598 ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
25599 in regs and partially in memory or BLKmode arguments.
25600 (emit_library_call_value_1): Add stack arguments to
25601 CALL_INSN_FUNCTION_USAGE even for pure calls (when
25602 ACCUMULATE_OUTGOING_ARGS).
25603 * dce.c: Include tm_p.h.
25604 (find_call_stack_args): New function.
25605 (deletable_insn_p): Call it for CALL_P insns. Add ARG_STORES
25607 (mark_insn): Call find_call_stack_args for CALL_Ps.
25608 (prescan_insns_for_dce): Walk insns backwards in bb rather than
25609 forwards. Allocate and free arg_stores bitmap if needed, pass it
25610 down to deletable_insn_p, don't mark stores set in arg_stores
25611 bitmap, clear the bitmap at the beginning of each bb.
25612 * Makefile.in (dce.o): Depend on $(TM_P_H).
25614 2009-01-14 Michael Meissner <gnu@the-meissners.org>
25617 * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
25618 to make sure the insn is a conditional test (bug 22599). Reformat a
25621 2009-01-14 Sebastian Pop <sebastian.pop@amd.com>
25623 PR middle-end/38431
25624 * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
25625 (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
25626 (gloog): Do not call cleanup_tree_cfg.
25627 (graphite_transform_loops): Call cleanup_tree_cfg after all
25628 scops have been code generated.
25630 2009-01-14 Basile Starynkevitch <basile@starynkevitch.net>
25631 * doc/gty.texi (Invoking the garbage collector): Added new node
25632 and section documenting ggc_collect.
25634 2009-01-14 Richard Guenther <rguenther@suse.de>
25636 PR tree-optimization/38826
25637 PR middle-end/38477
25638 * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
25639 initialization notes only if we actually emitted a warning.
25640 (intra_create_variable_infos): Add constraints for a result decl
25641 that is passed by hidden reference.
25642 (build_pred_graph): Mark all related variables non-direct on
25645 2009-01-14 Nick Clifton <nickc@redhat.com>
25647 * ira-conflicts.c: Include addresses.h for the definition of
25649 (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
25650 * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
25652 2009-01-13 Vladimir Makarov <vmakarov@redhat.com>
25655 * Makefile.in (ira-lives.o): Add except.h.
25657 * ira-lives.c: Include except.h.
25658 (process_bb_node_lives): Process can_throw_internal.
25660 2009-01-13 Jakub Jelinek <jakub@redhat.com>
25662 PR rtl-optimization/38774
25663 * combine.c (simplify_set): When undoing cc_use change, don't do
25664 PUT_CODE on the newly created comparison, but instead put back the
25667 2009-01-13 Joseph Myers <joseph@codesourcery.com>
25669 * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
25670 values. Remove duplicate arm8 entry.
25672 2009-01-13 Sebastian Pop <sebastian.pop@amd.com>
25674 PR tree-optimization/38786
25675 * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
25676 the SSA_NAME case of expand_scalar_variables_expr.
25677 Set the type of an expression to the type of its assign statement.
25678 (expand_scalar_variables_expr): Also gather the scalar computation
25679 used to index the memory access. Do not pass loop_p.
25680 Fix comment. Stop recursion on tcc_constant or tcc_declaration.
25681 (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
25682 the gimple_stmt_iterator where it inserts new code.
25683 Do not pass loop_p.
25684 (copy_bb_and_scalar_dependences): Do not pass loop_p.
25685 (translate_clast): Update call to copy_bb_and_scalar_dependences.
25687 2009-01-13 Sebastian Pop <sebastian.pop@amd.com>
25689 * graphite.h (debug_value): Removed.
25690 * graphite.c (debug_value): Removed.
25692 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
25694 * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
25695 ldrd/strd with two 32-bit instructions.
25697 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
25699 * config/arm/arm.c (struct processors): Pass for speed down into
25700 cost helper functions.
25701 (const_ok_for_op): Handle COMPARE and inequality nodes.
25702 (arm_rtx_costs_1): Rewrite.
25703 (arm_size_rtx_costs): Update prototype.
25704 (arm_rtx_costs): Pass speed down to helper functions.
25705 (arm_slowmul_rtx_costs): Rework cost calculations.
25706 (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
25707 (arm_9e_rtx_costs): Likewise.
25709 2009-01-13 Uros Bizjak <ubizjak@gmail.com>
25711 * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
25712 relocations of local symbols wider than UNITS_PER_WORD are not valid.
25713 (alpha_legitimize_address): Do not split local symbols wider than
25714 UNITS_PER_WORD into HIGH/LO_SUM parts.
25716 2009-01-13 Danny Smith <dannysmith@users.sourceforge.net>
25719 * gcc.c (process_command): Replace call to execvp with calls
25720 to pex_one and exit.
25722 2009-01-03 Anatoly Sokolov <aesok@post.ru>
25725 * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
25726 * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
25727 variant for devices with 3-byte PC.
25728 (__tablejump_elpm__): New.
25730 2009-01-12 Jakub Jelinek <jakub@redhat.com>
25733 * c-parser.c (c_parser_postfix_expression): Allow `->' in
25734 offsetof member-designator, handle it as `[0].'.
25736 2009-01-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
25738 * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
25739 function when not using named sections on targets with named sections
25740 if branch distance is less than 262132.
25742 2009-01-12 Richard Earnshaw <rearnsha@arm.com>
25744 * combine.c (combine_instructions): Recompute
25745 optimize_this_for_speed_p for each BB in the main combine loop.
25747 2009-01-12 Tomas Bily <tbily@suse.cz>
25750 * tree-loop-distribution.c (prop_phis): New function.
25751 (generate_builtin): Call prop_phis.
25752 * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
25754 2009-01-12 Jakub Jelinek <jakub@redhat.com>
25756 PR tree-optimization/38807
25757 * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
25758 gimple_visited_p unless stmt is GIMPLE_ASSIGN.
25760 2009-01-11 Adam Nemet <anemet@caviumnetworks.com>
25762 * expmed.c (store_bit_field_1): Properly truncate the paradoxical
25763 subreg of op0 to the original op0.
25765 2009-01-11 Laurent GUERBY <laurent@guerby.net>
25767 * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
25769 2009-01-11 Markus Schoepflin <markus.schoepflin@comsoft.de>
25772 * mips-tfile.c (parse_def): Fix parsing of def strings
25773 starting with digits.
25775 2009-01-10 Jakub Jelinek <jakub@redhat.com>
25778 * config/arm/arm.c (arm_is_long_call_p): Don't call
25779 arm_function_in_section_p if decl isn't a FUNCTION_DECL.
25781 2009-01-09 Steven Bosscher <steven@gcc.gnu.org>
25783 * regrename.c (regrename_optimize): Fix dumping.
25784 (find_oldest_value_reg): Preserve REG_POINTER.
25785 (copy_hardreg_forward_1): Likewise.
25787 2009-01-09 Diego Novillo <dnovillo@google.com>
25789 * gimple.h (struct gimple_statement_base) <uid>: Document
25790 the restrictions on its use.
25791 (gimple_uid): Tidy.
25792 (gimple_set_uid): Tidy.
25794 2009-01-09 Jakub Jelinek <jakub@redhat.com>
25796 * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
25797 zero guard even if align_bytes != 0 and count is smaller than
25800 2009-01-09 Vladimir Makarov <vmakarov@redhat.com>
25802 PR rtl-optimization/38495
25803 * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
25804 (add_range_and_copies_from_move_list): Print all added ranges.
25805 Add ranges to memory optimized destination.
25807 2009-01-09 Jakub Jelinek <jakub@redhat.com>
25811 * config/i386/i386.c (override_options): Reject
25812 -mstringop-strategy=rep_8byte with -m32.
25813 (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
25814 to 1. Do count comparison against epilogue_size_needed at compile
25815 time even when count_exp was constant forced into register. For
25816 size_needed don't jump to epilogue, instead just avoid aligning
25817 and invoke the body algorithm. If need_zero_guard, add zero guard
25818 even if count is non-zero, but smaller than size_needed + number of
25819 bytes that could be stored for alignment.
25820 (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
25821 to 1. If need_zero_guard, add zero guard even if count is non-zero,
25822 but smaller than size_needed + number of bytes that could be stored
25823 for alignment. Compare size_needed with epilogue_size_needed instead
25824 of desired_align - align, don't adjust size_needed, pass
25825 epilogue_size_needed to the epilogue expanders.
25828 * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
25830 2009-01-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
25832 * pa.c (last_address): Change to unsigned.
25833 (update_total_code_bytes): Change argument to unsigned. Don't
25834 check if insn addresses are set.
25835 (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
25836 addresses are not set.
25837 (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
25839 2009-01-09 Nick Clifton <nickc@redhat.com>
25841 * config/sh/symbian.c: Replace uses of DECL_INLINE with
25842 DECL_DECLARED_INLINE_P.
25844 2009-01-09 Jakub Jelinek <jakub@redhat.com>
25846 PR middle-end/38347
25847 * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
25848 GET_MODE (op0) in operand_subword_force calls.
25850 PR middle-end/38771
25851 * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
25852 fold_convert arg0 operands to TREE_TYPE (op0) first.
25854 2009-01-08 Vladimir Makarov <vmakarov@redhat.com>
25856 * params.def (ira-max-conflict-table-size): Decrease default value
25859 2009-01-08 Jakub Jelinek <jakub@redhat.com>
25861 PR tree-optimization/37031
25862 * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
25864 (build_access_matrix): Reserve correct size for AM_MATRIX vector,
25865 allocate it using gc instead of heap, use VEC_quick_push instead of
25867 * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
25868 instead of heap, use VEC_quick_push instead of VEC_safe_push.
25869 * tree-data-ref.h (struct access_matrix): Change matrix to gc
25870 allocated vector from heap allocated.
25871 * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
25872 * tree-loop-linear.c (linear_transform_loops): Allocate nest
25873 vector only after perfect_loop_nest_depth call.
25875 2009-01-08 Sebastian Pop <sebastian.pop@amd.com>
25876 Jan Sjodin <jan.sjodin@amd.com>
25878 PR tree-optimization/38559
25879 * graphite.c (debug_value, copy_constraint,
25880 swap_constraint_variables, scale_constraint_variable, ): New.
25881 (get_lower_bound, get_upper_bound): Removed.
25882 (graphite_trans_bb_strip_mine): Clean up this code that works
25883 only for constant number of iterations. Fully copy upper and
25884 lower bound constraints, not only the constant part of them.
25885 * graphite.h (debug_value): Declared.
25887 2009-01-08 Ira Rosen <irar@il.ibm.com>
25889 PR tree-optimization/37194
25890 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
25891 Don't add the cost of cost model guard in prologue to scalar
25892 outside cost in case of known number of iterations.
25894 2009-01-07 Nathan Froyd <froydnj@codesourcery.com>
25895 Alan Modra <amodra@bigpond.net.au>
25897 * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
25898 non-word-aligned REG+CONST addressing.
25900 2009-01-07 Uros Bizjak <ubizjak@gmail.com>
25903 * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
25904 free_after_compilation when outputting a thunk.
25905 (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
25906 Do not call free_after_compilation here.
25908 2009-01-07 Uros Bizjak <ubizjak@gmail.com>
25910 * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
25911 (ix86_valid_target_attribute_inner_p): Ditto.
25913 2009-01-07 Jan Sjodin <jan.sjodin@amd.com>
25915 PR tree-optimization/38492
25916 PR tree-optimization/38498
25917 * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
25918 * tree-chrec.h (scev_is_linear_expression): Declared.
25919 * graphite.c (graphite_cannot_represent_loop_niter): New.
25920 (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
25921 (graphite_loop_normal_form): Use gcc_assert.
25922 (scan_tree_for_params): Use CASE_CONVERT.
25923 (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
25924 (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
25925 Use gcc_assert. Discard scops that contain unhandled cases.
25926 (build_scop_conditions): Return a boolean status for unhandled cases.
25927 (strip_mine_profitable_p): Print the loop number, not its depth.
25928 (is_interchange_valid): Pass the depth of the loop nest, don't
25929 recompute it wrongly.
25930 (graphite_trans_bb_block): Same.
25931 (graphite_trans_bb_block): Print tentative of loop blocking.
25932 (graphite_trans_scop_block): Do not print that the loop has been
25934 (graphite_transform_loops): Do not handle scops that contain condition
25937 2009-01-07 H.J. Lu <hongjiu.lu@intel.com>
25939 AVX Programming Reference (December, 2008)
25940 * config/i386/avxintrin.h (_mm256_stream_si256): New.
25941 (_mm256_stream_pd): Likewise.
25942 (_mm256_stream_ps): Likewise.
25944 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
25945 IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
25946 (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
25947 (bdesc_special_args): Add __builtin_ia32_movntdq256,
25948 __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
25949 (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
25950 (ix86_expand_special_args_builtin): Likewise.
25952 * config/i386/sse.md (AVXMODEDI): New.
25953 (avx_movnt<mode>): Likewise.
25954 (avx_movnt<mode>): Likewise.
25955 (<sse>_movnt<mode>): Remove AVX support.
25956 (sse2_movntv2di): Likewise.
25958 2009-01-07 Richard Guenther <rguenther@suse.de>
25960 PR middle-end/38751
25961 * fold-const.c (extract_muldiv): Remove obsolete comment.
25962 (fold_plusminus_mult_expr): Undo MINUS_EXPR
25963 to PLUS_EXPR canonicalization for the canonicalization.
25965 2009-01-07 Gerald Pfeifer <gerald@pfeifer.com>
25967 * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
25968 hosted cross-compilers generating less efficient code.
25970 2009-01-06 Richard Sandiford <rdsandiford@googlemail.com>
25972 * function.h (rtl_data): Add a dbr_scheduled_p field.
25973 * reorg.c (dbr_schedule): Set it.
25974 (gate_handle_delay_slots): Check it.
25975 * config/mips/mips.c (mips_base_delayed_branch): Delete.
25976 (mips_reorg): Check flag_delayed_branch instead of
25977 mips_base_delayed_branch.
25978 (mips_override_options): Don't set mips_base_delayed_branch
25979 or flag_delayed_branch.
25981 2009-01-06 Richard Sandiford <rdsandiford@googlemail.com>
25983 PR rtl-optimization/38426.
25984 * ira.c (ira): Set current_function_is_leaf earlier.
25986 2009-01-06 Jakub Jelinek <jakub@redhat.com>
25988 PR rtl-optimization/38722
25989 * combine.c (try_combine): Don't modify PATTERN (i3) and notes
25990 too early, only set a flag and modify after last possible
25993 2009-01-06 Janis Johnson <janis187@us.ibm.com>
25996 * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
25997 * real.c (decimal_single_format): Correct values of emin and emax.
25998 (decimal_double_format): Ditto.
25999 (decimal_quad_format): Ditto.
26000 * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
26001 computation of DECnn_MIN and DECnn_MAX for corrected values of
26002 emin and emax. Define __DECnn_SUBNORMAL_MIN__ instead of
26003 __DECnn_MIN__, and adjust its computation for the corrected value
26006 2009-01-06 Jan Hubicka <jh@suse.cz>
26009 * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
26011 2009-01-06 Gerald Pfeifer <gerald@pfeifer.com>
26013 * doc/contrib.texi (Contributors): Slightly adjust the end note.
26014 Add Robert Clark to the list of testers.
26016 2009-01-06 Jan Hubicka <jh@suse.cz>
26017 Kai Tietz <kai.tietz@onevision.com>
26019 * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
26020 * config/i386/i386.c (ix86_expand_call): Add clobbers.
26022 2009-01-06 Jan Hubicka <jh@suse.cz>
26023 Kai Tietz <kai.tietz@onevision.com>
26025 * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
26027 * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
26028 (ix86_nsaved_regs): Count only general purpose regs.
26029 (ix86_nsaved_sseregs): New.
26030 (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
26031 to 16 for w64; compute padding and size of sse reg save area.
26032 (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
26033 general purpose regs.
26034 (ix86_emit_save_sse_regs_using_mov): New.
26035 (ix86_expand_prologue): Save SSE regs if needed.
26036 (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
26037 (ix86_emit_restore_sse_regs_using_mov): New.
26038 (ix86_expand_epilogue): Save SSE regs if needed.
26040 2009-01-06 Jan Hubicka <jh@suse.cz>
26041 Kai Tietz <kai.tietz@onevision.com>
26043 * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
26044 * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
26045 functions when accumulate outgoing args is off.
26047 2009-01-06 H.J. Lu <hongjiu.lu@intel.com>
26050 * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
26051 before using pseudos_have_intersected_live_ranges_p.
26053 * ira-int.h (ira_assert): Always define.
26055 2009-01-06 H.J. Lu <hongjiu.lu@intel.com>
26057 AVX Programming Reference (December, 2008)
26058 * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
26059 (_mm256_permute2_pd): Likewise.
26060 (_mm_permute2_ps): Likewise.
26061 (_mm256_permute2_ps): Likewise.
26062 * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
26063 * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
26065 * config/i386/i386.c (ix86_builtins): Remove
26066 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
26067 IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
26068 (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
26069 V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
26070 and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
26071 (bdesc_args): Remove __builtin_ia32_vpermil2pd,
26072 __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
26073 __builtin_ia32_vpermil2ps256.
26074 (ix86_init_mmx_sse_builtins): Updated.
26075 (ix86_expand_args_builtin): Likewise.
26077 2009-01-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
26079 * pa.c (output_call): Relocate non-jump insns in the delay slot of
26080 long absolute calls when generating PA 2.0 code.
26082 2009-01-05 Vladimir Makarov <vmakarov@redhat.com>
26084 PR rtl-optimization/38583
26085 * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
26087 * params.def (ira-max-conflict-table-size): New.
26089 * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
26091 * ira.h (ira_conflicts_p): New external definition.
26093 * ira-conflicts.c (build_conflict_bit_table): Do not build too big
26094 table. Report this. Return result of building.
26095 (ira_build_conflicts): Use ira_conflicts_p. Check result of
26096 building conflict table.
26098 * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
26099 (ira_color): Use ira_conflicts_p.
26101 * global.c: Include ira.h.
26102 (pseudo_for_reload_consideration_p, build_insn_chain): Use
26105 * Makefile.in (global.o): Add ira.h.
26107 * ira-build.c (mark_all_loops_for_removal,
26108 propagate_some_info_from_allocno): New.
26109 (remove_unnecessary_allocnos): Call
26110 propagate_some_info_from_allocno.
26111 (remove_low_level_allocnos): New.
26112 (remove_unnecessary_regions): Add parameter. Call
26113 mark_all_loops_for_removal and remove_low_level_allocnos. Pass
26114 parameter to remove_unnecessary_regions.
26115 (ira_build): Remove all regions but root if the conflict table was
26116 not built. Update conflict hard regs for allocnos crossing calls.
26118 * ira.c (ira_conflicts_p): New global.
26119 (ira): Define and use ira_conflicts_p.
26121 * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26122 count_spilled_pseudo, find_reg, alter_reg, finish_spills,
26123 emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
26125 2009-01-06 Ben Elliston <bje@au.ibm.com>
26127 * gengtype-lex.l (YY_NO_INPUT): Define.
26129 2009-01-05 Andrew Pinski <andrew_pinski@playstation.sony.com>
26132 * c-common.c (handle_vector_size_attribute): Also reject
26133 BOOLEAN_TYPE types.
26135 2009-01-05 Sebastian Pop <sebastian.pop@amd.com>
26137 PR tree-optimization/38492
26138 * graphite.c (rename_map_elt, debug_rename_elt,
26139 debug_rename_map_1, debug_rename_map, new_rename_map_elt,
26140 rename_map_elt_info, eq_rename_map_elts,
26141 get_new_name_from_old_name, bb_in_sese_p): Moved around.
26142 (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
26143 (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
26144 (sese_build_livein_liveouts): New.
26145 (new_sese, free_sese): New.
26146 (new_scop): Call new_sese.
26147 (free_scop): Call free_sese.
26148 (rename_variables_from_edge, rename_phis_end_scop): Removed.
26149 (register_old_new_names): Renamed register_old_and_new_names.
26150 (register_scop_liveout_renames, add_loop_exit_phis,
26151 insert_loop_close_phis, struct igp,
26152 default_liveout_before_guard, add_guard_exit_phis,
26153 insert_guard_phis, copy_renames): New.
26154 (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
26155 (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
26156 (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
26157 (scop_adjust_phis_for_liveouts): New.
26158 (gloog): Call scop_adjust_phis_for_liveouts.
26160 * graphite.h (struct sese): Documented. Added fields liveout,
26161 num_ver and livein.
26162 (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
26163 (new_sese, free_sese, sese_build_livein_liveouts): Declared.
26164 (struct scop): Added field liveout_renames.
26165 (SCOP_LIVEOUT_RENAMES): New.
26167 2009-01-05 Harsha Jagasia <harsha.jagasia@amd.com>
26169 PR tree-optimization/38510
26170 * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
26171 (translate_clast): Call recompute_all_dominators before
26173 (gloog): Call recompute_all_dominators before graphite_verify.
26175 2009-01-05 Harsha Jagasia <harsha.jagasia@amd.com>
26176 Jan Sjodin <jan.sjodin@amd.com>
26178 PR tree-optimization/38500
26179 * graphite.c (create_sese_edges): Call fix_loop_structure after
26182 2009-01-05 Joel Sherrill <joel.sherrill@oarcorp.com>
26184 * config.gcc: Add m32r*-*-rtems*.
26185 * config/m32r/rtems.h: New file.
26187 2009-01-05 Ben Elliston <bje@au.ibm.com>
26189 * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
26190 (.po.pox): Likewise.
26191 (po/gcc.pot): Likewise.
26193 2009-01-04 David S. Miller <davem@davemloft.net>
26195 * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
26196 (STARTING_FRAME_OFFSET): Always set to zero.
26198 2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
26200 * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
26201 * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
26202 fixed-point types, and vectors of the same.
26204 2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
26206 * config/mips/sync.md (*mb_barrier): Rename to...
26207 (*memory_barrier): ...this.
26209 2009-01-04 Jonathan Wakely <jwakely.gcc@gmail.com>
26211 * doc/extend.texi (Function Attributes): Move @cindex after @item
26212 for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
26213 and put in alphabetical order. Fix 'target' name and put in order.
26214 * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
26217 2009-01-04 Uros Bizjak <ubizjak@gmail.com>
26219 * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
26220 (memory_barrier): Expand as unspec instead of unspec_volatile.
26221 Remove mem:BLK from insn operands. Use Pmode scratch register.
26222 (*memory_barrier): Define as unspec instead of unspec_volatile.
26223 Use (match_dup 0) as input operand.
26225 * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
26226 * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
26227 unspec_volatile. Remove mem:BLK from insn operands. Use Pmode
26228 scratch register. Remove operand 1.
26229 (*stbar): Define as unspec instead of unspec_volatile.
26230 Use (match_dup 0) as input operand, remove (const_int 8).
26231 (*membar): Define as unspec instead of unspec_volatile.
26232 Use (match_dup 0) as input operand, remove input operand 2.
26234 * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
26235 (memory_barrier): Expand as unspec instead of unspec_volatile.
26236 Remove mem:BLK from insn operands. Use Pmode scratch register.
26237 (*memory_barrier): Define as unspec instead of unspec_volatile.
26238 Use (match_dup 0) as input operand.
26240 * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
26241 Remove mem:BLK from insn operands. Use Pmode scratch register.
26242 Set volatile flag on operand 0.
26243 (*memory_barrier): New insn pattern.
26245 * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
26247 (*memory_barrier): Use (match_dup 0) as input operand.
26249 * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
26250 Remove mem:BLK from insn operands. Use Pmode scratch register.
26251 Set volatile flag on operand 0.
26252 (*mb_internal): New insn pattern.
26254 * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
26256 2009-01-04 Steven Bosscher <steven@gcc.gnu.org>
26258 PR middle-end/38586
26259 * function.c (struct temp_slot): Move to the section of the file
26260 that deals with temp slots. Remove field 'address'.
26261 (temp_slot_address_table): New hash table of address -> temp slot.
26262 (struct temp_slot_address_entry): New struct, items for the table.
26263 (temp_slot_address_compute_hash, temp_slot_address_hash,
26264 temp_slot_address_eq, insert_temp_slot_address): Support functions
26266 (find_temp_slot_from_address): Rewrite to use the new hash table.
26267 (remove_unused_temp_slot_addresses): Remove addresses of temp
26268 slots that have been made available.
26269 (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
26270 worker function for remove_unused_temp_slot_addresses.
26271 (assign_stack_temp_for_type): Don't clear the temp slot address list.
26272 Add the temp slot address to the address -> temp slot map.
26273 (update_temp_slot_address): Update via insert_temp_slot_address.
26274 (free_temp_slots): Call remove_unused_temp_slot_addresses.
26275 (pop_temp_slots): Likewise.
26276 (init_temp_slots): Allocate the address -> temp slot map, or empty
26277 the map if it is already allocated.
26278 (prepare_function_start): Initialize temp slot processing.
26280 2009-01-04 Steven Bosscher <steven@gcc.gnu.org>
26282 PR middle-end/38584
26283 * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
26284 Calculate the size of all stack vars assuming no packing of stack
26285 vars will happen, replacing a quadratic algorithm with a linear one.
26287 2009-01-03 Jakub Jelinek <jakub@redhat.com>
26290 * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
26293 2009-01-03 Diego Novillo <dnovillo@google.com>
26295 * doc/contrib.texi: Update contributions.
26297 2009-01-03 Jakub Jelinek <jakub@redhat.com>
26300 * builtins.c (fold_builtin_memory_op): Give up if either operand
26301 is volatile. Set srctype or desttype to non-qualified version
26305 * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
26306 and FUNCTION_DECLs.
26308 2009-01-02 Kenneth Zadeck <zadeck@naturalbridge.com>
26310 PR rtl-optimization/35805
26311 * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
26312 problem if fast dce is able to remove any instructions.
26313 * dce.c (dce_process_block): Fix dump message.
26315 2009-01-02 Mark Mitchell <mark@codesourcery.com>
26318 * tree-ssa-pre.c (compute_antic): Correct loop bounds.
26320 2009-01-02 Jakub Jelinek <jakub@redhat.com>
26322 PR middle-end/38690
26323 * tree-flow.h (op_code_prio, op_prio): New prototypes.
26324 * tree-pretty-print.c (op_code_prio): New function.
26325 (op_prio): No longer static. Use op_code_prio.
26326 * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
26327 Use op_prio and op_code_prio to determine if () should be
26328 printed around operand(s) or not.
26330 * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
26331 dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
26332 dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
26333 dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
26334 pp_character instead of pp_string for single letter printing.
26336 2009-01-02 Richard Sandiford <rdsandiford@googlemail.com>
26338 * doc/extend.texi: Fix '#pragma GCC option' typo.
26340 2009-01-02 Richard Guenther <rguenther@suse.de>
26342 * doc/install.texi (--enable-checking): Mention different
26343 default for stage1.
26344 (--enable-stage1-checking): Document.
26346 2009-01-01 Andrew Pinski <pinskia@gmail.com>
26348 PR middle-end/30142
26349 * tree-cfg.c (verify_expr): Add INDIRECT_REF case. Change MODIFY_EXPR
26350 case to be an error.
26352 2009-01-02 Ben Elliston <bje@au.ibm.com>
26354 * config/fp-bit.h (pack_d): Constify argument.
26355 * config/fp-bit.c (makenan): Constify return type. Remove casts.
26356 (isnan): Constify argument.
26358 (iszero): Likewise.
26359 (pack_d): Likewise.
26360 (_fpadd_parts): Constify return type.
26361 (_fpmul_parts): Likewise.
26362 (_fpdiv_parts): Likewise.
26364 2009-01-01 Jakub Jelinek <jakub@redhat.com>
26367 * c-typeck.c (add_pending_init): Add IMPLICIT argument. Only
26368 warn about overwriting initializer with side-effects or
26369 -Woverride-init if !IMPLICIT.
26370 (output_init_element): Likewise. Pass IMPLICIT down to
26372 (process_init_element): Add IMPLICIT argument. Pass it down
26373 to output_init_element.
26374 (push_init_element, pop_init_level, set_designator): Adjust
26375 process_init_element callers.
26376 (set_nonincremental_init, set_nonincremental_init_from_string):
26377 Adjust add_pending_init callers.
26378 (output_pending_init_elements): Adjust output_init_element callers.
26379 * c-tree.h (process_init_element): Adjust prototype.
26380 * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
26381 process_init_element callers.
26384 Copyright (C) 2009 Free Software Foundation, Inc.
26386 Copying and distribution of this file, with or without modification,
26387 are permitted in any medium without royalty provided the copyright
26388 notice and this notice are preserved.