]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
cfgloopmanip.c (duplicate_subloops): Export.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2009-10-22 Razya Ladelsky <razya@il.ibm.com>
2
3 * cfgloopmanip.c (duplicate_subloops): Export.
4 * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
5 (transform_to_exit_first_loop): Duplicate bbs starting from
6 header up to loop->latch instead of exit->src.
7 Initialize control variable to the correct number of iterations.
8 (gather_scalar_reductions): Do not register double reductions.
9 (parallelize_loops): Dump which loop is tested.
10 Indicate whether the parallelized loop is inner or not.
11 Remove the innermost-loop requirement.
12 * cfgloop.h (duplicate_subloops): Export.
13 * tree-cfg.c (add_phi_args_after_redirect): New function.
14 (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
15 Call duplicate_subloops.
16 Update number of iterations at the exit condition.
17 Don't redirect nexits always to the loop exit.
18 Redirect copied edges from latch to the loop exit.
19 * testsuite/libgomp.graphite/force-parallel-2.c: Adjust scan.
20 * testsuite/gcc.dg/autopar/outer-1.c: New testcase.
21 * testsuite/gcc.dg/autopar/outer-2.c: New testcase.
22 * testsuite/gcc.dg/autopar/outer-3.c: New testcase.
23 * testsuite/gcc.dg/autopar/outer-4.c: New testcase.
24 * testsuite/gcc.dg/autopar/outer-5.c: New testcase.
25 * testsuite/gcc.dg/autopar/outer-6.c: New testcase.
26
27 2009-10-22 Jan Hubicka <jh@suse.cz>
28
29 * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
30 flag_ltrans check.
31 * ipa-inline.c (cgraph_mark_inline_edge,
32 cgraph_decide_inlining_of_small_function,
33 cgraph_decide_inlining, inline_read_summary): Disable indirect inlining
34 for WPA for time being.
35
36 PR tree-optimize/40556
37 * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
38
39 2009-10-22 Richard Guenther <rguenther@suse.de>
40
41 * lto-streamer.h (lto_symtab_clear_resolution): Remove.
42 * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
43
44 2009-10-22 Jan Hubicka <jh@suse.cz>
45
46 PR lto/41730
47 * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
48 global vars.
49 (check_call): Handle only indirect calls.
50 (propagate_bits): Update comment.
51 (write_node_summary_p): Turn bogus check to assert.
52 (ipa_reference_write_summary): Stream calls_read_all properly.
53 (ipa_reference_read_summary): Stream in calls_read_all properly.
54 (read_write_all_from_decl): New function.
55 (propagate): Handle OVERWRITABLE nodes and external calls here.
56 * ipa-pre-const.c (check_call): In IPA mode handle indirect calls
57 only.
58 (analyze_function): Do not check visibility here.
59 (add_new_function): We summary OVERWRITABLE too.
60 (generate_summary): Stream OVERWRITABLE nodes too.
61 (propagate): Handle external calls and OVERWRITABLE nodes here.
62 (local_pure_const): Check visibility here.
63
64 2009-10-22 Jan Hubicka <jh@suse.cz>
65
66 * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
67 (pass_ipa_cp): Register them.
68 (ipcp_init_stage): Analyze all functions for whopr/lto.
69 (ipcp_propagate_stage): Skip external calls.
70 (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
71 * ipa-reference.c (write_node_summary_p): Fix thinko about availability.
72 * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
73 when in ltrans, skip executing of ipa passes since everything should've
74 been done.
75 * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
76 (inline_generate_summary): Likewise.
77 (inline_read_summary): New function.
78 (inline_write_summary): New function.
79 (pass_ipa_inline): Register new hooks.
80 * ipa-prop.c: Inlcude lto-streamer.h
81 (ipa_edge_args_vector): Update declaration.
82 (ipa_count_arguments, ipa_compute_jump_functions,
83 ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
84 (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
85 ipa_read_node_info): New static functions.
86 (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
87 (duplicate_array): Use xmalloc.
88 (duplicate_ggc_array): New.
89 (ipa_edge_duplication_hook): Use it.
90 (ipa_update_after_lto_read): New function.
91 * ipa-prop.h (ipa_prop_write_jump_functions,
92 ipa_prop_read_jump_functions): Declare.
93 (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
94 jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
95 (ipa_edge_args_vector): Move into GGC.
96 (ipa_check_create_edge_args): Update.
97 (ipa_update_after_lto_read): New.
98 * passes.c (ipa_write_summaries_1): When in wpa, do not write summaries.
99 (ipa_read_summaries): When in ltrans, so not read summaries.
100 * lto-streamer.c (lto_get_section_name): Add LTO_section_jump_functions.
101 * lto-streamer.h (LTO_section_jump_functions): New section.
102 (produce_asm): Declare.
103 * lto-cgraph.c (output_cgraph): Output edges in reverse order.
104 * lto-streamer-out.c (produce_asm): Export.
105 * lto-streamer-in.c: Include tree-pass.h
106 (input_function): Free dominance info when done.
107 (lto_read_body): Push ipa_inline in ltrans stage.
108 * gengtype.c (open_base_files): Add ipa-prop.h into includes.
109 * Makefile.in (GTFILES): Add ipa-prop.h
110
111 2009-10-22 Matthias Klose <doko@ubuntu.com>
112
113 * doc/install.texi: Document --enable-browser-plugin.
114
115 2009-10-21 Vladimir Makarov <vmakarov@redhat.com>
116
117 * doc/invoke.texi (fira-loop-pressure): Update default value.
118 * opts.c (decode_options): Remove default value setting for
119 flag_ira_loop_pressure.
120 * config/ia64/ia64.c (ia64_override_options): Set
121 flag_ira_loop_pressure up for -O3.
122 * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
123
124 2009-10-21 Sebastian Pop <sebastian.pop@amd.com>
125
126 PR tree-optimization/41497
127 * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
128 chrec_dont_know if the evolution function returned by follow_ssa_edge
129 is constant in the analyzed loop and is not compatible with the
130 initial value before the loop.
131 * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
132
133 2009-10-21 Joseph Myers <joseph@codesourcery.com>
134
135 * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
136
137 2009-10-21 Jakub Jelinek <jakub@redhat.com>
138
139 PR other/25507
140 * doc/invoke.texi: Document -print-multi-os-directory.
141
142 2009-10-21 Jack Howarth <howarth@bromo.med.uc.edu>
143
144 PR c++/41313
145 * gcc/config/darwin10.h: Use default_emit_unwind_label.
146 * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
147 when darwin_emit_unwind_label is used.
148
149 2009-10-21 Eric Botcazou <ebotcazou@adacore.com>
150
151 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
152 order of checks.
153
154 2009-10-20 Richard Henderson <rth@redhat.com>
155
156 * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
157 before emit_post_landing_pad.
158
159 2009-10-20 Adam Nemet <anemet@caviumnetworks.com>
160
161 * config/mips/mips.c (mips_binary_cost): Add new argument speed.
162 Use when calling rtx_costs.
163 (mips_rtx_costs): Fix formatting. Use argument speed rather than the
164 global optimize_size. Pass speed to mips_binary_cost.
165
166 2009-10-20 Jakub Jelinek <jakub@redhat.com>
167
168 * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
169 of TREE_CONSTANT.
170
171 2009-10-20 Richard Sandiford <rdsandiford@googlemail.com>
172
173 * rtl.h (simplify_replace_fn_rtx): Declare.
174 (wrap_constant, unwrap_constant): Delete.
175 * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
176 (expand_debug_expr): Don't call wrap_constant.
177 * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
178 (auto_adjust_pair): Fold into...
179 (propagate_for_debug_subst): ...here. Only define for AUTO_INC_DEC.
180 Just return a new value.
181 (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
182 otherwise use simplify_replace_rtx.
183 * cselib.c (wrap_constant): Reinstate old definition.
184 (cselib_expand_value_rtx_1): Don't wrap constants.
185 * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
186 simplify_replace_rtx.
187 (bypass_block): Fix formatting in calls to simplify_replace_rtx.
188 * reload1.c (reload): Skip all uses for an insn before adjusting it.
189 Use simplify_replace_rtx.
190 * simplify-rtx.c (simplify_replace_fn_rtx): New function,
191 adapted from...
192 (simplify_replace_rtx): ...here. Turn into a wrapper for
193 simplify_replace_fn_rtx.
194 (simplify_unary_operation): Don't unwrap CONSTs.
195 * var-tracking.c (check_wrap_constant): Delete.
196 (vt_expand_loc_callback): Don't call it.
197 (vt_expand_loc): Likewise.
198
199 2009-10-20 Pascal Obry <obry@adacore.com>
200 Eric Botcazou <ebotcazou@adacore.com>
201
202 * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
203
204 2009-10-20 Michael Matz <matz@suse.de>
205
206 * loop-invariant.c (create_new_invariant): Use different magic number.
207
208 2009-10-20 Richard Earnshaw <rearnsha@arm.com>
209
210 PR target/39247
211 * arm.c (arm_override_options): Forcibly disable hot/cold block
212 partitioning.
213
214 2009-10-20 Alexandre Oliva <aoliva@redhat.com>
215
216 PR debug/41739
217 * haifa-sched.c (try_ready): Skip debug deps updating speculation
218 status.
219
220 2009-10-20 Richard Guenther <rguenther@suse.de>
221
222 * ggc-page.c: Include cfgloop.h.
223 (struct max_alignment): Drop long double, add void *.
224 (extra_order_size_table): Add low non-power-of-two multiples
225 of MAX_ALIGNMENT. Drop small type-based entries, add
226 tree_type, cgraph_node and loop.
227 * alloc-pool.c (struct allocation_object_def): Drop long double
228 aligning element.
229
230 2009-10-20 Jakub Jelinek <jakub@redhat.com>
231
232 PR debug/41340
233 * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
234 referenced just in DEBUG_INSNs.
235
236 2009-10-20 Richard Guenther <rguenther@suse.de>
237
238 PR lto/41761
239 * gimple.c (gimple_register_type): Make sure we register
240 the types main variant first.
241
242 2009-10-20 Richard Guenther <rguenther@suse.de>
243
244 * gimple.c (gimple_types_compatible_p): Simplify. Move
245 cheap checks before hashtable queries. Add checks for
246 TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
247
248 2009-10-20 Eric Botcazou <ebotcazou@adacore.com>
249
250 * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
251 without size or with size that can't be represented as a host integer.
252
253 2009-10-20 Alexandre Oliva <aoliva@redhat.com>
254
255 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
256 the removal of a debug stmt as a significant change.
257
258 2009-10-20 Wolfgang Gellerich <gellerich@de.ibm.com>
259
260 * config/s390/s390.md: Added agen condition to operand
261 forwarding bypasses.
262 Added bypass for early address generation use of int results.
263 Updated comments.
264
265 2009-10-20 Stefan Dösinger <stefan@codeweavers.com>
266
267 * config/i386/i386.c: Remove signal.h #include.
268
269 2009-10-20 Jie Zhang <jie.zhang@analog.com>
270
271 * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
272 * doc/rtl.texi: Document ss_abs.
273
274 2009-10-19 Jakub Jelinek <jakub@redhat.com>
275
276 * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
277 * c-lex.c (c_lex_with_flags): Likewise. Test C_LEX_STRING_NO_JOIN
278 instead of C_LEX_RAW_STRINGS.
279 (lex_string): Handle CPP_UTF8STRING.
280 * c-parser.c (c_parser_postfix_expression): Likewise.
281 * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
282 (C_LEX_STRING_NO_JOIN): ... this.
283
284 2009-10-19 Anatoly Sokolov <aesok@post.ru>
285
286 * config/cris/cris.c (cris_function_value, cris_libcall_value,
287 cris_function_value_regno_p): New functions.
288 (cris_promote_function_mode): Update comment.
289 (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
290 * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
291 (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
292 * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
293
294 2009-10-19 Jakub Jelinek <jakub@redhat.com>
295
296 * unwind-dw2.c (execute_stack_op): Fix operand order for
297 DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
298
299 2009-10-19 Eric Botcazou <ebotcazou@adacore.com>
300
301 * gimple-low.c (struct lower_data): Add cannot_fallthru field.
302 (lower_stmt) <GIMPLE_BIND>: Add comment.
303 <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
304 and return.
305 <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
306 Otherwise lower it and set cannot_fallthru to true.
307 <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
308 <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
309 <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
310 to true for a noreturn call. Do not remove statements.
311 <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
312 Set cannot_fallthru to false on function exit.
313 (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
314 <GIMPLE_ASSIGN>: Remove.
315
316 2009-10-19 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
317
318 * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
319
320 2009-10-19 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
321
322 * config/s390/s390.c (s390_z10_optimize_cmp): Use
323 next/prev_active_insn to skip DEBUG_INSNs as well.
324
325 2009-10-19 Joseph Myers <joseph@codesourcery.com>
326
327 * config/arm/arm.c (output_move_neon): Use DImode in call to
328 adjust_address.
329
330 2009-10-19 Matthias Klose <doko@ubuntu.com>
331
332 PR target/40134
333 * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
334
335 2009-10-19 Jakub Jelinek <jakub@redhat.com>
336
337 * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
338
339 2009-10-17 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
340
341 PR middle-end/41738
342 * optabs.c (expand_binop): Make mode of shift count expression mode
343 of shift count not target.
344 Remove indent nit.
345
346 2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
347
348 * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
349 case. Force using values to replace references within the statement.
350 (convert_local_reference_stmt): Likewise.
351
352 2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
353
354 * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
355 remove a subsequent GOTO or RETURN statement.
356
357 2009-10-17 Andy Hutchinson <hutchinsonandy@aim.com>
358
359 * config/avr.md (*movqi): Add zero as equally preferable constraint
360 as general register.
361 (*movhi): Ditto.
362
363 2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
364
365 * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
366
367 2009-10-17 Richard Guenther <rguenther@suse.de>
368
369 * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
370
371 2009-10-17 Richard Guenther <rguenther@suse.de>
372
373 * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
374 operands in COMPONENT_REFs.
375
376 2009-10-17 Anatoly Sokolov <aesok@post.ru>
377
378 * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
379 if not defined. Change type of second argument to const_rtx.
380 (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
381 macro not defined.
382 * targhooks.h (default_libcall_value): Update prototype.
383 * target.h (struct gcc_target): Change type of second argument of
384 libcall_value to const_rtx.
385 * config/arm/arm.c (arm_libcall_value): Change type of second argument
386 to const_rtx.
387 (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
388 * doc/tm.texi (TARGET_LIBCALL_VALUE): Revise documentation.
389
390 2009-10-17 Jakub Jelinek <jakub@redhat.com>
391
392 PR debug/40521
393 * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
394 * cgraphunit.c (cgraph_optimize): Call it.
395 * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
396 (dwarf2out_assembly_start): ... here. New hook.
397 (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
398 * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
399 hook.
400 * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
401 * sdbout.c (sdb_debug_hooks): Likewise.
402 * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
403 (vmsdbgout_assembly_start): New hook.
404
405 2009-10-17 Alexandre Oliva <aoliva@redhat.com>
406
407 * rtl.h (RTL_LOCATION): Fix typo.
408
409 2009-10-17 Alexandre Oliva <aoliva@redhat.com>
410
411 * print-rtl.c (print_rtx): Print locators in asm_operands
412 and asm_input.
413
414 2009-10-17 Alexandre Oliva <aoliva@redhat.com>
415
416 PR debug/41535
417 * sched-deps.c (depl_on_debug_p): New.
418 (attach_dep_link): Reject debug deps before nondebug deps.
419 (add_to_deps_list): Insert debug deps after nondebug deps.
420 (sd_lists_empty_p): Stop at first nonempty list. Disregard debug
421 deps.
422 (sd_add_dep): Do not reject debug deps.
423 (add_insn_mem_dependence): Don't count debug deps.
424 (remove_from_deps): Likewise.
425 (sched_analyze_2): Set up mem deps on debug insns.
426 (sched_analyze_insn): Record reg uses for deps on debug insns.
427 * haifa-sched.c (schedule_insn): Reset deferred debug insn. Don't
428 try_ready nondebug insn after debug insn.
429 * ddg.c (create_ddg_dep_from_intra_loop_link,
430 create_ddg_dep_no_link): Don't reject debug deps.
431
432 2009-10-16 Richard Guenther <rguenther@suse.de>
433
434 * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
435 (maybe_merge_incomplete_and_complete_type): Likewise.
436 (lto_symtab_merge): Do not call them. Do not warn for
437 complete vs. incomplete compatible types.
438 (lto_symtab_merge_decls_2): Simplify.
439 * gimple.c (gimple_force_type_merge): Remove.
440 (gimple_types_compatible_p): Make it static.
441 * gimple.h (gimple_force_type_merge): Remove.
442 (gimple_types_compatible_p): Likewise.
443
444 2009-10-16 Jakub Jelinek <jakub@redhat.com>
445
446 * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
447 DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
448
449 2009-10-16 Richard Guenther <rguenther@suse.de>
450
451 PR tree-optimization/41728
452 * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
453 if fold_stmt did anything.
454
455 2009-10-16 Richard Guenther <rguenther@suse.de>
456
457 PR lto/41715
458 * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
459 (maybe_fixup_handled_component): New function.
460 (input_gimple_stmt): Fixup mismatched decl replacements.
461
462 2009-10-16 Richard Guenther <rguenther@suse.de>
463
464 PR lto/41713
465 * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
466 the same as VAR_DECL.
467
468 2009-10-16 Richard Guenther <rguenther@suse.de>
469
470 * gimple.c (iterative_hash_gimple_type): For integer types
471 also hash their minimum and maximum values and the string flag.
472 For array types hash their domain and the string flag.
473
474 2009-10-16 Richard Guenther <rguenther@suse.de>
475
476 * gimple.c (gimple_types_compatible_p): Restrict completing
477 types to record or unions. Simplify completion.
478 Do not merge records or unions with different
479 TYPE_STRUCTURAL_EQUALITY_P tag.
480 (iterative_hash_gimple_type): Restrict non-recursing into
481 pointer targets for records and unions.
482
483 2009-10-15 Jakub Jelinek <jakub@redhat.com>
484
485 PR debug/41717
486 * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
487 * dwarf2out.c (mem_loc_descriptor): Don't handle
488 POST_INT/POST_DEC/POST_MODIFY like SUBREG. For SUBREG
489 punt if it is not lowpart subreg or if inner mode isn't
490 MODE_INT.
491
492 2009-10-16 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
493
494 * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
495 investigating previous or next insns.
496
497 2009-10-16 Eric Botcazou <ebotcazou@adacore.com>
498
499 * tree-sra.c (build_ref_for_offset_1): Update comment.
500
501 2009-10-16 Wolfgang Gellerich <gellerich@de.ibm.com>
502
503 * config/s390/s390.md (atype): Added missing values.
504
505 2009-10-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
506
507 PR target/41702
508 * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
509 (casesi64p): Update pattern to reflect above.
510
511 2009-10-15 Steve Ellcey <sje@cup.hp.com>
512
513 PR rtl-optimization/41697
514 * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
515
516 2009-10-15 Michael Meissner <meissner@linux.vnet.ibm.com>
517
518 PR target/23983
519 * config/rs6000/predicates.md: Update copyright year.
520 * config/rs6000/altivec.md: Ditto.
521
522 * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
523 (MD_INCLUDES): Add a2.md.
524
525 * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
526 RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
527 (builtin_classify): New static vector to classify various builtins
528 to get the tree attributes correct.
529 (def_builtin): Set the attributes of builtins based on what the
530 builtin does (i.e. memory operation, floating point, saturation
531 need special attributes, others are pure functions).
532
533 * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
534 the builtins.
535 (enum rs6000_builtins): Include rs6000-builtin.def to define the
536 builtins. Change the end marker to MAX_RS6000_BUILTINS from
537 RS6000_BUILTIN_COUNT.
538 (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
539 MAX_RS6000_BUILTINS.
540
541 * config/rs6000/rs6000-builtin.def: New file that combines the
542 builtin enumeration name and attributes.
543
544 2009-10-15 H.J. Lu <hongjiu.lu@intel.com>
545
546 * config/i386/linux.h (ASM_SPEC): Add --32.
547
548 2009-10-15 Jakub Jelinek <jakub@redhat.com>
549
550 * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
551 and DW_TAG_template_alias.
552 (dwarf_attr_name): Handle DW_AT_main_subprogram,
553 DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
554 DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
555 DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
556 DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
557 and DW_AT_GNU_odr_signature.
558 (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
559 DW_FORM_flag_present and DW_FORM_ref_sig8.
560 (output_signature): Only print name on the first byte.
561 (output_die): Likewise for dw_val_class_data8.
562
563 2009-10-15 Alexander Monakov <amonakov@ispras.ru>
564
565 * doc/invoke.texi: Clarify that most optimizations are not enabled
566 without -O.
567
568 2009-10-15 Richard Guenther <rguenther@suse.de>
569
570 PR lto/41668
571 * gimple.c (compare_type_names_p): Handle anonymous names
572 differently based on new mode argument.
573 (gimple_types_compatible_p): For structs also compare the tags.
574 (iterative_hash_type_name): Rename to ...
575 (iterative_hash_name): ... this. Hash all names.
576 (iterative_hash_gimple_type): Fix hashing the struct tag of
577 pointer targets. Hash field decl names.
578
579 2009-10-15 Richard Guenther <rguenther@suse.de>
580
581 PR lto/41669
582 * gimple.c (gimple_get_alias_set): Avoid recursing on
583 invalid type topology.
584
585 2009-10-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
586
587 * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
588
589 2009-10-15 Richard Guenther <rguenther@suse.de>
590
591 * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
592
593 2009-10-15 Jakub Jelinek <jakub@redhat.com>
594
595 * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
596 add --with-tune{,-32,-64} configured default for -mtune if explicit
597 -mcpu is used.
598
599 2009-10-14 Daniel Gutson <dgutson@codesourcery.com>
600
601 * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
602
603 2009-10-14 DJ Delorie <dj@redhat.com>
604
605 * config/h8300/h8300.c (F): New.
606 (Fpa): New.
607 (h8300_emit_stack_adjustment): Call them.
608 (push): Likewise.
609 (h8300_push_pop): Likewise.
610 (h8300_expand_prologue): Likewise.
611 * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
612 (MUST_USE_SJLJ_EXCEPTIONS): Define.
613 (INCOMING_RETURN_ADDR_RTX): Define.
614 (INCOMING_FRAME_SP_OFFSET): Define.
615 (DWARF_CIE_DATA_ALIGNMENT): Define.
616
617 2009-10-14 Jakub Jelinek <jakub@redhat.com>
618
619 * stor-layout.c (place_field): Don't emit -Wpadded warnings for
620 fields in builtin structs.
621 (finalize_record_size): Likewise.
622
623 2009-10-14 Richard Guenther <rguenther@suse.de>
624
625 * gimple.c (gtc_ob): New global.
626 (struct type_pair_d): Replace pointers with type UIDs.
627 (type_pair_hash): Adjust.
628 (type_pair_eq): Likewise.
629 (lookup_type_pair): Likewise. Allocate from an obstack.
630 (gimple_force_type_merge): Adjust.
631 (gimple_types_compatible_p): Likewise.
632 (free_gimple_type_tables): Free the obstack.
633
634 2009-10-14 Jakub Jelinek <jakub@redhat.com>
635
636 * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
637 stmts setting DEBUG_EXPR_DECLs.
638
639 * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
640 Don't crash if mode1 is VOIDmode.
641
642 2009-09-26 Vladimir Makarov <vmakarov@redhat.com>
643
644 * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
645 * params.h (IRA_LOOP_RESERVED_REGS): New.
646 * tree-pass.h (pass_subregs_of_mode_init,
647 pass_subregs_of_mode_finish): Remove.
648 * passes.c (pass_subregs_of_mode_init,
649 pass_subregs_of_mode_finish): Remove.
650 (pass_reginfo_init): Move before loop optimizations.
651 * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
652 * common.opt (fira-loop-pressure): New.
653 * toplev.h (flag_ira_loop_pressure): New.
654 * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
655 * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
656 Make external and void type functions.
657 (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
658 pass_subregs_of_mode_finish): Remove.
659 * ira-costs.c (init_costs): Call init_subregs_of_mode.
660 * regmove.c: Include ira.h.
661 (regmove_optimize): Call ira_set_pseudo_classes after IRA based
662 register pressure calculation in loops.
663 * loop-invariant.c: Include REGS_H and ira.h.
664 (struct loop_data): New members max_reg_pressure, regs_ref, and
665 regs_live.
666 (struct invariant): New member orig_regno.
667 (curr_loop): New variable.
668 (find_exits): Initialize regs_ref and regs_live.
669 (create_new_invariant): Initialize orig_regno.
670 (get_cover_class_and_nregs): New.
671 (get_inv_cost): Make aregs_needed an array. Use regs_needed as an
672 array. Add code for flag_ira_loop_pressure.
673 (gain_for_invariant): Make new_regs an array. Add code for
674 flag_ira_loop_pressure.
675 (best_gain_for_invariant): Ditto.
676 (set_move_mark): New parameter gain. Use it for debugging output.
677 (find_invariants_to_move): Make regs_needed and new_regs an array.
678 Add code for flag_ira_loop_pressure.
679 (move_invariant_reg): Set up orig_regno.
680 (move_invariants): Set up reg classes for pseudos for
681 flag_ira_loop_pressure.
682 (free_loop_data): Clear regs_ref and regs_live.
683 (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
684 get_regno_cover_class, change_pressure, mark_regno_live,
685 mark_regno_death, mark_reg_store, mark_reg_clobber,
686 mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
687 (move_loop_invariants): Calculate pressure. Initialize curr_loop.
688 * ira.c (ira): Call ira_set_pseudo_classes after IRA based
689 register pressure calculation in loops if new regs were added.
690 Call finish_subregs_of_mode.
691 * opts.c (decode_options): Set up flag_ira_loop_pressure.
692 * Makefile.in (loop-invariant.o): Add ira.h.
693 (regmove.o): Ditto.
694 * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
695 Describe.
696 * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
697
698 2009-10-14 Richard Guenther <rguenther@suse.de>
699
700 * lto-symtab.c (lto_symtab_compatible): Fold in ...
701 (lto_symtab_merge): ... here. Rewrite both to take the
702 prevailing and a to-be-merged entry and to queue diagnostics properly.
703 (lto_symtab_resolve_replaceable_p): New predicate for
704 symbol resolution.
705 (lto_symtab_resolve_can_prevail_p): Likewise.
706 (lto_symtab_resolve_symbols): Rewrite. Fold in code that
707 handles merging commons by choosing the largest decl. Fold
708 in code that gives ODR errors.
709 (lto_symtab_merge_decls_2): Simplify a lot. Emit queued
710 diagnostics here.
711 (lto_symtab_merge_decls_1): Re-structure. Deal with the
712 case of no prevailing decl here. Diagnose mismatches
713 in object types here. Drop all but the prevailing decls.
714 (lto_symtab_prevailing_decl): Return the single prevailing decl.
715 * lto-streamer-in.c (lto_input_tree_ref): Deal with
716 VIEW_CONVERT_EXPRs in decl slots. Unshare the tree in this case.
717
718 2009-10-14 Richard Guenther <rguenther@suse.de>
719
720 PR lto/41521
721 * lto-streamer-in.c (input_bb): Replace debug stmts with
722 nops instead of dropping them.
723
724 2009-10-14 Nick Clifton <nickc@redhat.com>
725
726 * gcc/doc/extended.texi: Replace the dash character with @minus{}
727 in situations where it is being used as a minus symbol.
728 * gcc/doc/tm.texi: Likewise.
729 * gcc/doc/md.texi: Likewise.
730
731 2009-10-14 Jakub Jelinek <jakub@redhat.com>
732
733 PR preprocessor/41543
734 * input.h (BUILTINS_LOCATION): Change to 1 from 2.
735 Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
736 * tree.c: Include intl.h.
737 (expand_location): Handle BUILTINS_LOCATION.
738 * Makefile.in (tree.o): Depend on intl.h.
739
740 PR debug/41695
741 * dwarf2out.c (dwarf2out_var_location): Always clear
742 last_postcall_label when changing last_label.
743
744 2009-10-14 Pascal Obry <obry@adacore.com>
745
746 * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
747 (process_command): Handle -E as done with -c and -S. Do not add
748 the target executable suffix to the output file when -E is used.
749 (main): Adjust error message accordingly.
750
751 2009-10-14 Alexandre Oliva <aoliva@redhat.com>
752
753 PR debug/41343
754 PR debug/41447
755 PR debug/41264
756 PR debug/41338
757 * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
758 decl with rtl.
759 (tree_code_size): Likewise.
760
761 2009-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
762
763 * builtins.c (fold_builtin_1): Support complex "arc" functions.
764 * real.h (HAVE_mpc_arc): Define.
765
766 2009-10-14 Kaz Kojima <kkojima@gcc.gnu.org>
767
768 * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
769 (struct builtin_description): Add fndecl field.
770 (bdesc): Remove const qualifier. Update initializer.
771 (sh_media_init_builtins): Remove const qualifier for d. Record
772 the result of add_builtin_function to the fndecl field.
773 (sh_builtin_decl): New.
774 (sh_media_builtin_decl): New.
775
776 2009-10-14 Hans-Peter Nilsson <hp@axis.com>
777
778 PR target/38948
779 * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
780 requests between special registers.
781
782 2009-10-13 Eric Botcazou <ebotcazou@adacore.com>
783
784 * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
785
786 2009-10-13 Richard Henderson <rth@redhat.com>
787
788 PR tree-optimization/41377
789 * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
790 (cleanup_empty_eh_merge_phis): New change_region parameter;
791 pass it on to redirect_eh_edge_1. Update callers.
792 (cleanup_empty_eh_unsplit): Don't require an existing EH label
793 at the destination block.
794
795 2009-10-13 Basile Starynkevitch <basile@starynkevitch.net>
796
797 * passes.c (register_pass): Replaced gcc_unreachable by
798 fatal_error on failure. Mentions plugins in comments & messages.
799
800 2009-10-13 Jakub Jelinek <jakub@redhat.com>
801
802 PR target/41693
803 * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
804 * sched-vis.c (print_value): Use it.
805 * cselib.c (cselib_hash_rtx): Likewise.
806 * print-rtl.c (print_rtx): Likewise.
807 * cfgexpand.c (expand_debug_rtx): Likewise.
808 * var-tracking.c (vt_expand_loc_callback): Likewise.
809
810 2009-10-13 Richard Guenther <rguenther@suse.de>
811
812 PR lto/41565
813 * opts.c (handle_option): Split out code to handle setting
814 the options flag var ...
815 (set_option): ... here.
816 * opts.h (set_option): Declare.
817 * lto-opts.c (register_user_option_p): Include -fexceptions
818 and all position independent code variants.
819 (handle_common_option): Remove.
820 (lto_reissue_options): Use set_option.
821
822 2009-10-13 Martin Jambor <mjambor@suse.cz>
823
824 PR tree-optimization/41661
825 * ipa-prop.c (compute_complex_pass_through): Allow only operations
826 that are tcc_comparisons or do not change the type in any
827 un-usleless way.
828 * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
829 folding tcc_comparison operations.
830
831 2009-10-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
832
833 * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
834 properly.
835
836 2009-10-12 Alexandre Oliva <aoliva@redhat.com>
837
838 PR debug/41343
839 PR debug/41447
840 PR debug/41264
841 PR debug/41338
842 * tree.def (DEBUG_EXPR_DECL): New.
843 * rtl.def (DEBUG_EXPR): New.
844 * gengtype.c (adjust_field_rtx_def): Handle it.
845 * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
846 (insert_debug_temp_for_var_def): ... this. Drop support for
847 moving. Take iterator for def stmt; insert debug stmt before it.
848 Scan early for use count and kind in debug stmts.
849 (propagate_defs_into_debug_stmts): Rename to...
850 (insert_debug_temps_for_defs): ... this. Likewise.
851 * tree.h (DEBUG_TEMP_UID): New.
852 * tree.c (next_debug_decl_uid): New.
853 (make_node_stat): Count debug decls separately.
854 (copy_node_stat): Likewise.
855 * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
856 * var-tracking.c (dv_is_decl_p): Recognize it.
857 (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
858 (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
859 (vt_expand_loc_callback): Expand DEBUG_EXPRs.
860 (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
861 * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
862 (cselib_hash_rtx): Likewise.
863 (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
864 * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
865 debug bind stmts.
866 * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
867 (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
868 * rtl.c (copy_rtx): Likewise.
869 (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
870 * print-rtl.c (print_rtx): Likewise.
871 * sched-vis.c (print_value): Likewise.
872 (print_insn): Handle DEBUG_EXPR_DECL.
873 * tree-dump.c (dequeue_and_dump): Likewise.
874 * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
875 * gimple-iterator (gsi_replace): Check for same lhs.
876 (gsi_remove): Insert debug temps.
877 * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
878 (move_computations_stmt): Drop explicit propagation into debug stmts.
879 (rewrite_bittest): Likewise. Use gsi_remove for propagation.
880 * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
881 * tree-ssa-sink.c (statement_sink_location): Likewise.
882 * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
883 * tree-ssanames.c (release_ssa_name): Adjust for rename.
884 * tree-flow.h: Likewise.
885 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
886 debug temps without values.
887 (eliminate_unnecessary_stmts): Don't discard just-inserted
888 debug stmts.
889
890 2009-10-12 Hans-Peter Nilsson <hp@axis.com>
891
892 PR target/26515
893 * config/cris/cris.md (andu): Check that operand 1 is one of the
894 general registers. Fix typo in head comment.
895
896 2009-10-12 Stefan Dösinger <stefan@codeweavers.com>
897
898 * config/i386/i386.md (vswapmov): New.
899 * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
900 (ix86_function_ms_hook_prologue): New.
901 (ix86_expand_prologue): Handle ms_hook_prologue attribute.
902 * configure.ac: Test for swap suffix support in as.
903 * configure: Rebuild.
904
905 2009-10-12 Jakub Jelinek <jakub@redhat.com>
906
907 PR target/41680
908 * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
909 paradoxical subregs to prevent partial register stalls if the inner
910 mode is integer mode.
911
912 2009-10-12 Uros Bizjak <ubizjak@gmail.com>
913
914 * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
915
916 2009-10-12 Dodji Seketeli <dodji@redhat.com>
917
918 PR c++/41570
919 * gcc/dwarf2out.c (template_parameter_pack_die,
920 gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
921
922 2009-10-12 Alexandre Oliva <aoliva@redhat.com>
923
924 PR debug/41616
925 * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
926 on updates too.
927 (maybe_register_def): Likewise. Take stmt iterator.
928 (rewrite_update_stmt): Take stmt iterator and pass it on.
929 (rewrite_update_enter_block): Pass stmt iterator.
930
931 2009-10-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
932
933 * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
934 (spu_builtin_decl): New function.
935
936 2009-10-12 Uros Bizjak <ubizjak@gmail.com>
937
938 * config/i386/i386.md (SWIM): New mode iterator.
939 (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
940 using SWIM mode iterator.
941 (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
942 patterns using SWI48 mode iterator.
943 (*x86_mov<mode>cc_0_m1_se): Macroize insn from
944 *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
945 (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
946 (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
947 patterns using SWI248 mode iterator.
948 * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
949 gen_x86_movdicc_0_m1_rex64 for renamed function
950
951 2009-10-11 Jose Ruiz <ruiz@adacore.com>
952 Eric Botcazou <ebotcazou@adacore.com>
953
954 PR target/33743
955 * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
956 * config/sparc/sol2-unwind.h: New file.
957
958 2009-10-11 Olivier Hainque <hainque@adacore.com>
959 Eric Botcazou <ebotcazou@adacore.com>
960
961 PR target/33743
962 * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
963 * config/i386/sol2-unwind.h: New file.
964
965 2009-10-11 H.J. Lu <hongjiu.lu@intel.com>
966
967 PR target/41665
968 * config/i386/i386.md (addsi_1_zext): Get the proper second
969 operand for lea.
970
971 2009-10-11 Richard Sandiford <rdsandiford@googlemail.com>
972
973 * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
974 all OLD_RTXes, not just REGs. Use copy_rtx to create the
975 replacement value.
976
977 2009-10-11 Richard Guenther <rguenther@suse.de>
978
979 * gimple.c (iterative_hash_type_name): Do not handle special
980 anonymous names.
981
982 2009-10-11 Uros Bizjak <ubizjak@gmail.com>
983
984 * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
985 (*setcc_si_1_and): Ditto.
986 (*setcc_si_1_movzbl): Ditto.
987 (*setcc_<mode>_2): Ditto.
988 (*setcc_qi): Rename from *setcc_1.
989 (*setcc_qi_slp): Rename from *setcc_2.
990
991 (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
992 (*zero_extendqisi2_movzbw_and splitter): Ditto.
993
994 * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
995 "if" condition, there is already assert with reload_completed present.
996
997 2009-10-11 Gerald Pfeifer <gerald@pfeifer.com>
998
999 * plugin.c (try_init_one_plugin): Improve constness of variable err.
1000
1001 2009-10-10 Gerald Pfeifer <gerald@pfeifer.com>
1002
1003 * doc/install.texi (Final install): Refer to
1004 http://gcc.gnu.org/bugs/ for bug reporting.
1005
1006 2009-10-10 Peter Bergner <bergner@vnet.ibm.com>
1007
1008 * configure.ac: Add test for dci instruction.
1009 * configure: Regenerate.
1010 * config.in: Likewise.
1011 * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
1012 * doc/invoke.texi: Add cpu_type 476 and 476fp.
1013 (-mmulhw): Add 476 to description.
1014 (-mdlmzb): Likewise.
1015 * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
1016 * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
1017 (processor_target_table): Add 476 and 476fp entries.
1018 (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
1019 (rs6000_issue_rate): Add CPU_PPC476.
1020 * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
1021 (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
1022 (processor_type): Add PROCESSOR_PPC476.
1023 (EXTRA_SPECS): Add asm_cpu_476 string.
1024 * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
1025 (define_attr "cpu"): Add ppc476.
1026 Include 476.md.
1027 Update comments for 476.
1028 (isel_signed, isel_unsigned): Change to use "isel" type attribute.
1029 * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
1030 Update copyright year.
1031 * config/rs6000/476.md: New file.
1032 * config/rs6000/40x.md: Add description for "isel" attribute.
1033 Update copyright year.
1034 * config/rs6000/440.md: Likewise.
1035 * config/rs6000/603.md: Likewise.
1036 * config/rs6000/6xx.md: Likewise.
1037 * config/rs6000/7450.md: Likewise.
1038 * config/rs6000/7xx.md: Likewise.
1039 * config/rs6000/8540.md: Likewise.
1040 * config/rs6000/cell.md: Likewise.
1041 * config/rs6000/e300c2c3.md: Likewise.
1042 * config/rs6000/e500mc.md: Likewise.
1043 * config/rs6000/mpc.md: Likewise.
1044 * config/rs6000/power4.md: Likewise.
1045 * config/rs6000/power5.md: Likewise.
1046 * config/rs6000/power6.md: Likewise.
1047 * config/rs6000/power7.md: Likewise.
1048 * config/rs6000/rios1.md: Likewise.
1049 * config/rs6000/rios2.md: Likewise.
1050 * config/rs6000/rs64.md: Likewise.
1051
1052 2009-10-10 Richard Guenther <rguenther@suse.de>
1053
1054 PR tree-optimization/41654
1055 * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
1056 a cond expr before calling gimple_cond_set_condition_from_tree.
1057 (ifcombine_iforif): Likewise.
1058
1059 2009-10-09 Ian Lance Taylor <iant@google.com>
1060
1061 * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
1062 * configure: Rebuild.
1063
1064 2009-10-09 Neil Vachharajani <nvachhar@google.com>
1065
1066 * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
1067 deprecated.
1068
1069 2009-10-09 Richard Guenther <rguenther@suse.de>
1070
1071 PR lto/41638
1072 * target-def.h (TARGET_BUILTIN_DECL): Define.
1073 (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
1074 * target.h (struct gcc_target): Add builtin_decl target hook.
1075 * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
1076 * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
1077 target builtins.
1078 * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
1079 not gcc_unreachable.
1080 (lto_output_builtin_tree): Sorry if the target does not support
1081 streaming target builtins.
1082 * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
1083 (rs6000_builtin_decl): New function.
1084 * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
1085 (ix86_builtin_decl): New function.
1086
1087 2009-10-09 Jakub Jelinek <jakub@redhat.com>
1088
1089 PR preprocessor/41445
1090 * c-ppoutput.c (do_line_change): New function.
1091 (cb_line_change): Use it.
1092 (scan_translation_unit): Call do_line_change if
1093 avoid_paste or PREV_WHITE and token location is on a different line
1094 than print.src_line.
1095
1096 PR debug/40521
1097 * dwarf2out.c (dwarf2out_init): Test whether
1098 HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
1099 it is defined.
1100
1101 PR rtl-optimization/41646
1102 * calls.c (expand_call): For BLKmode types returned in registers
1103 avoid likely spilled hard regs in copy_blkmode_from_reg generated
1104 insns.
1105
1106 2009-10-09 Richard Guenther <rguenther@suse.de>
1107
1108 PR tree-optimization/41634
1109 * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
1110 we remove the correct elements.
1111 (optimize_stmt): Make sure to update stmt operands before
1112 optimizing redundancies.
1113
1114 2009-10-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1115
1116 * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
1117
1118 2009-10-09 Richard Guenther <rguenther@suse.de>
1119
1120 PR driver/41637
1121 * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
1122 globals.
1123 (lto_wrapper_exit): New function.
1124 (fatal): Use it.
1125 (fatal_perror): Likewise.
1126 (fork_execute): Use global args_name, do not free it.
1127 (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
1128 * lto-streamer.h: Remove duplicate prototypes.
1129
1130 2009-10-09 Richard Guenther <rguenther@suse.de>
1131
1132 * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
1133 before calling stmt_can_throw_external.
1134
1135 2009-10-09 Eric Botcazou <ebotcazou@adacore.com>
1136
1137 PR tree-optimization/40071
1138 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
1139 pointer if the original data reference doesn't conflict with the
1140 created vector data reference. Fix long line.
1141
1142 2009-10-09 Uros Bizjak <ubizjak@gmail.com>
1143
1144 * config/i386/i386.md (any_div): New code iterator.
1145 (u): Handle div and udiv.
1146 (sgnprefix): Ditto.
1147 (<u>divqi3): Macroize insn from {,u}divqi3 using any_div
1148 code iterator.
1149 (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
1150 lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
1151 (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
1152 lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
1153
1154 2009-10-08 Joseph Myers <joseph@codesourcery.com>
1155
1156 * gcc.c (main): Remove trailing "." from diagnostics.
1157
1158 2009-10-08 Cary Coutant <ccoutant@google.com>
1159
1160 Add support for debugging with ICF (Identical Code Folding).
1161 * calls.c (debug.h): New #include.
1162 (emit_call_1): Call virtual_call_token debug hook.
1163 * common.opt (-fenable-icf-debug): New option.
1164 * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
1165 locations in the source).
1166 (poc_label_num): New variable.
1167 (dcall_entry, vcall_entry): New typedefs.
1168 (dcall_table, vcall_table): New variables.
1169 (struct vcall_insn): New type.
1170 (vcall_insn_table): New variable.
1171 (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
1172 (size_of_dcall_table): New function.
1173 (output_dcall_table): New function.
1174 (size_of_vcall_table): New function.
1175 (output_vcall_table): New function.
1176 (dwarf2out_direct_call): New function.
1177 (vcall_insn_table_hash): New function.
1178 (vcall_insn_table_eq): New function.
1179 (dwarf2out_virtual_call_token): New function.
1180 (dwarf2out_virtual_call): New function.
1181 (dwarf2out_init): Allocate new tables and sections.
1182 (prune_unused_types): Mark DIEs referenced from direct call table.
1183 (dwarf2out_finish): Output direct and virtual call tables.
1184 * final.c (final_scan_insn): Call direct_call and virtual_call
1185 debug hooks.
1186 * debug.h (struct gcc_debug_hooks): Add direct_call,
1187 virtual_call_token, virtual_call hooks.
1188 (debug_nothing_uid): New function.
1189 * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
1190 (debug_nothing_uid): New function.
1191 * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
1192 (xcoff_debug_hooks): Likewise.
1193 * sdbout.c (sdb_debug_hooks): Likewise.
1194 * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1195 * doc/invoke.texi (-fenable-icf-debug): New option.
1196
1197 2009-10-08 Alexandre Oliva <aoliva@redhat.com>
1198
1199 PR debug/41353
1200 * regmove.c (regmove_backward_pass): Replace src with dst in the
1201 debug insn, and check for dst before rather than after.
1202
1203 2009-10-08 Janis Johnson <janis187@us.ibm.com>
1204
1205 * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
1206 (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
1207
1208 2009-10-08 Jan Hubicka <jh@suse.cz>
1209
1210 PR middle-end/41626
1211 * cgraphbuild.c (record_reference): When parameter DATA is NULL,
1212 do not mark cgraph nodes as needed.
1213 (record_references_in_initializer): Add new only_vars parameter.
1214 * cgraph.h (record_references_in_initializer): New parameter.
1215 * varasm.c (assemble_variable): Update call.
1216 * varpool.c (varpool_analyze_pending_decls): Always look for
1217 referenced vars.
1218
1219 2009-10-08 Anatoly Sokolov <aesok@post.ru>
1220
1221 * config/avr/avr.c (last_insn_address) Remove variable.
1222 (expand_prologue): Don't initialise last_insn_address variable.
1223 (final_prescan_insn): Don't output insn size.
1224 * config/avr/avr.opt (msize): Remove switch.
1225 * doc/invoke.texi (AVR Options): Remove documentation of -msize
1226 switch.
1227
1228 2009-10-08 Adam Nemet <anemet@caviumnetworks.com>
1229
1230 * combine.c (label_tick_ebb_start): Fix comment.
1231 (combine_instructions): Set label_tick and label_tick_ebb_start before
1232 calling setup_incoming_promotions. Start them from 1. Increment
1233 label_tick instead of deriving it from the BB index. Rather than
1234 comparing ticks use the block from the previous iteration to decide
1235 whether to start a new EBB. Remove empty lines before function.
1236
1237 2009-10-08 Michael Matz <matz@suse.de>
1238
1239 PR middle-end/41573
1240 * builtins.c (fold_builtin_isascii): Use fold_build2.
1241 (fold_builtin_isdigit): Ditto.
1242 * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
1243 * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
1244 remove_useless_stmts_cond, remove_useless_stmts_tf,
1245 remove_useless_stmts_tc, remove_useless_stmts_bind,
1246 remove_useless_stmts_goto, remove_useless_stmts_label,
1247 remove_useless_stmts_1, remove_useless_stmts,
1248 pass_remove_useless_stmts): Remove.
1249 * tree-pass.h (pass_remove_useless_stmts): Don't declare.
1250 * passes.c (init_optimization_passes): Don't add
1251 pass_remove_useless_stmts.
1252 * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
1253 * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
1254 static constants.
1255 * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
1256 for static constants.
1257 * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
1258 * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
1259
1260 2009-10-08 Richard Guenther <rguenther@suse.de>
1261
1262 * gimple.c (free_gimple_type_tables): New function.
1263 * gimple.h (free_gimple_type_tables): Declare.
1264
1265 2009-10-07 Mark Heffernan <meheff@google.com>
1266
1267 * ipa-prop.c (ipa_print_node_params) Only print
1268 names of named arguments.
1269
1270 2009-10-08 Rafael Avila de Espindola <espindola@google.com>
1271
1272 * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
1273 being statically linked.
1274
1275 2009-10-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1276
1277 * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
1278
1279 2009-10-08 Jan Hubicka <jh@suse.cz>
1280
1281 PR bootstrap/41620
1282 * ipa.c (cgraph_externally_visible_p,
1283 function_and_variable_visibility,
1284 whole_program_function_and_variable_visibility): Skip non-finalized
1285 nodes.
1286
1287 2009-10-08 Nick Clifton <nickc@redhat.com>
1288
1289 * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
1290 CONST_DOUBLEs.
1291
1292 2009-10-08 Andreas Tobler <a.tobler@schweiz.org>
1293
1294 PR bootstrap/37739
1295 * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
1296
1297 2009-10-07 Joseph Myers <joseph@codesourcery.com>
1298
1299 PR c/41182
1300 * c-common.c (c_fully_fold_internal): Strip nops from the result
1301 of recursive calls to c_fully_fold_internal.
1302 (c_wrap_maybe_const): New.
1303 (c_save_expr): Use c_wrap_maybe_const.
1304 * c-common.h (c_wrap_maybe_const): Declare.
1305 * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
1306 build_binary_op): Use c_wrap_maybe_const.
1307
1308 2009-10-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1309
1310 * real.c: Fix comment to reflect actual exponent size.
1311
1312 2009-10-08 Ben Elliston <bje@au.ibm.com>
1313
1314 * config/rs6000/a2.md: Add FSF comment header.
1315
1316 2009-10-07 Uros Bizjak <ubizjak@gmail.com>
1317
1318 * config/i386/i386.md (any_extend): New code iterator.
1319 (u, s): New code attributes.
1320 (sgnprefix): Ditto.
1321 (DWIH): Rewrite as code iterator for SI and DI modes.
1322 (DWI): Rewrite as mode attribute.
1323 (dwi): New mode attribute.
1324 (di): Depend on SI mode and DI mode.
1325 (doubleint_general_operand): Remove mode attribute.
1326
1327 (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
1328 DWIH mode iterator.
1329
1330 (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
1331 (*sub<mode>3_doubleword): Ditto.
1332
1333 (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
1334 using SWIM248 mode iterator.
1335 (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
1336 using SWI48 mode iterator.
1337 (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
1338 patterns using DWIH mode iterator and any_extend code iterator.
1339 (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
1340 using any_extend code iterator.
1341 (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
1342 patterns using DWIH mode iterator and any_extend code iterator.
1343 (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
1344 using any_extend code iterator.
1345 (<s>mul<mode>3_highpart): Macroize expander from
1346 {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
1347 and any_extend code iterator.
1348 (*<s>muldi3_highpart_1): Macroize insn from
1349 *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
1350 (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
1351 patterns using any_extend code iterator.
1352 (*<s>mulsi3_highpart_zext): Macroize insn from
1353 *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
1354
1355 2009-10-07 Jakub Jelinek <jakub@redhat.com>
1356
1357 * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
1358 DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
1359 refering to a DIE with DW_AT_const_value.
1360
1361 2009-10-07 Vladimir Makarov <vmakarov@redhat.com>
1362
1363 PR middle-end/22072
1364 * ira-lives.c (check_and_make_def_conflict): Process all operands.
1365
1366 2009-10-06 Jan Hubicka <jh@suse.cz>
1367
1368 * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
1369 correctly.
1370
1371 2009-10-06 Uros Bizjak <ubizjak@gmail.com>
1372
1373 * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
1374 *lea_2_rex64): Move before *add<mode>_1 pattern.
1375
1376 2009-10-07 Jan Hubicka <jh@suse.cz>
1377
1378 * collect2.c (main): Add -fno-whole-program.
1379 * gcc.c (set_collect_gcc_options): Do not remove whole program here.
1380
1381 2009-10-07 Jan Hubicka <jh@suse.cz>
1382
1383 * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
1384 has no address taken.
1385 * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
1386 never needed.
1387 (cgraph_clone_node): Clear externally_visible flag for clones.
1388 * cgraph.h (cgraph_only_called_directly_p,
1389 cgraph_can_remove_if_no_direct_calls_p): New predicates.
1390 * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
1391 * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
1392 (ipcp_initialize_node_lattices, ipcp_estimate_growth,
1393 ipcp_insert_stage): Likwise.
1394 * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
1395 externally_visible flag.
1396 (verify_cgraph_node): Verify that inline clones look right.
1397 (process_function_and_variable_attributes): Do not set
1398 externally_visible flags.
1399 (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
1400 been already run.
1401 * lto-cgraph.c (lto_output_node): Assert that inline clones are not
1402 boundaries.
1403 * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
1404 clear externally_visible when turning into inline clones
1405 (cgraph_mark_inline_edge): Use new predicates.
1406 (cgraph_estimate_growth): Likewise.
1407 (cgraph_decide_inlining): Likewise.
1408 * ipa.c (cgraph_postorder): Likewise.
1409 (cgraph_remove_unreachable_nodes): Likewise; sanity check
1410 that inline clones are not needed.
1411 (cgraph_externally_visible_p): New predicate.
1412 (function_and_variable_visibility): Add whole_program parameter;
1413 always set externally_visible flag; handle COMDAT function
1414 privatization.
1415 (local_function_and_variable_visibility): New function.
1416 (gate_whole_program_function_and_variable_visibility): New function.
1417 (whole_program_function_and_variable_visibility): New function.
1418 (pass_ipa_whole_program_visibility): New function.
1419 * passes.c (init_optimization_passes): Add whole program visibility
1420 pass.
1421 (do_per_function_toporder, function_called_by_processed_nodes_p): Do
1422 not care about needed/reachable flags.
1423 * varpool.c: Include flags.h
1424 (decide_is_variable_needed): When doing LTO assume whole-program mode.
1425 (varpool_finalize_decl): When we are in LTO read-back, all variables
1426 are analyzed.
1427 (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
1428
1429 2009-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1430
1431 * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
1432 add MASK_HARD_DFP.
1433
1434 2009-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1435
1436 * config.gcc: Don't include the makefile fragments intended for
1437 libgcc.
1438 * config/s390/fixdfdi.h: File removed.
1439 * config/s390/libgcc-glibc.ver: File removed.
1440 * config/s390/s390.h: Remove the fixdfdi.h hack.
1441 * config/s390/t-crtstuff: File moved to libgcc dir.
1442 * config/s390/t-linux: Likewise.
1443 * config/s390/t-tpf: libgcc specific parts removed.
1444 * config/s390/t-linux64: Likewise.
1445
1446 2009-10-06 Jerry Quinn <jlquinn@optonline.net>
1447
1448 * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
1449 (lto-compress.o): Likewise.
1450
1451 2009-10-07 Danny Smith <dannysmith@users.sourceforge.net>
1452
1453 PR target/41512
1454 * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
1455 dllexport to class members here.
1456 (i386_pe_determine_dllimport_p): Only check static class data for
1457 definition.
1458 (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
1459 * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
1460 functions for vague linkage.
1461 (i386_pe_type_dllexport_p): Fix formatting.
1462 (maybe_add_dllexport) New function.
1463 (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
1464 to class members.
1465
1466 2009-10-07 Ben Elliston <bje@au.ibm.com>
1467
1468 * config/rs6000/a2.md: Remove duplicated lines.
1469
1470 2009-10-07 Ben Elliston <bje@au.ibm.com>
1471
1472 * config.gcc (powerpc*-*-*): Handle a2.
1473 * config/rs6000/rs6000.md (cpu): Add ppca2. Include "a2.md".
1474 * config/rs6000/a2.md: New file.
1475 * config/rs6000/rs6000.opt (mno-update): New.
1476 (mupdate): Return to using a mask, not a var.
1477 * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
1478 (enum processor_type): Add PROCESSOR_PPCA2.
1479 * config/rs6000/rs6000.c (ppca2_cost): New costs.
1480 (rs6000_override_options): Add "a2" to processor_target_table.
1481 Update rs6000_always_hint logic. Correctly set rs6000_cost for a2.
1482 * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
1483
1484 2009-10-06 Uros Bizjak <ubizjak@gmail.com>
1485
1486 * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
1487 Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
1488 reference to nonexistent gen_truncxfxf2 function.
1489
1490 2009-10-06 Uros Bizjak <ubizjak@gmail.com>
1491
1492 * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
1493 (DWIH, g, di, doubleint_general_operand): New mode attributes.
1494 (general_operand): Handle TI mode.
1495 (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
1496 using SDWIM mode iterator.
1497 (*add<mode>3_doubleword): New insn_and_split pattern. Macroize
1498 pattern from *add{di,ti}3_1 patterns and corresponding splitters
1499 using DWI mode iterator.
1500 (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
1501 patterns using SWI mode iterator.
1502 (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
1503 using SWI48 mode iterator.
1504 (*add<mode>_1): Ditto from add{si,di}_1 patterns.
1505 (*add<mode>_2): Ditto from add{si,di}_2 patterns.
1506 (*add<mode>_3): Ditto from add{si,di}_3 patterns.
1507 (*add<mode>_5): Ditto from add{si,di}_5 patterns.
1508 (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
1509 using SDWIM mode iterator.
1510 (*sub<mode>3_doubleword): New insn_and_split pattern. Macroize
1511 pattern from *sub{di,ti}3_1 patterns and corresponding splitters
1512 using DWI mode iterator.
1513 (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
1514 patterns using SWI mode iterator.
1515 (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
1516 (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
1517 (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
1518 (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
1519 patterns using plusminus code iterator.
1520 (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
1521 sub<mode>3 patterns using plusminus code iterator.
1522 * config/i386/i386.c (override_options): Update the call to
1523 gen_subdi_carry_rex64 for renamed function.
1524 (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
1525 and gen_adddi3_carry_rex64 for renamed functions. Use indirect
1526 calls to instruction expanders.
1527
1528 2009-10-06 Martin Jambor <mjambor@suse.cz>
1529
1530 PR bootstrap/41395
1531 * opts.c (decode_options): Run IPA-SRA at -O2.
1532
1533 2009-10-06 Richard Guenther <rguenther@suse.de>
1534
1535 * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
1536
1537 2009-10-06 Tobias Burnus <burnus@net-b.de>
1538
1539 PR lto/41591
1540 * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
1541 -flto and -fwhole-program flags can be combined.
1542
1543 2009-10-06 Ryan Mansfield <rmansfield@qnx.com>
1544
1545 PR driver/41217
1546 * gcc.c (process_command): Check that -o argument was specified.
1547
1548 2009-10-06 Jerry Quinn <jlquinn@optonline.net>
1549
1550 * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
1551
1552 2009-10-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1553
1554 * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
1555 * doc/invoke.texi (Warning Options): Annotate allowed languages
1556 for -Wunsuffixed-float-constants.
1557
1558 2009-10-05 Jakub Jelinek <jakub@redhat.com>
1559
1560 * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
1561 DW_TAG_{const,volatile}_type if its DW_AT_type already has the
1562 same name and isn't the main variant.
1563
1564 PR debug/41558
1565 * dwarf2out.c (loc_by_reference): Removed.
1566 (dw_loc_list_1): New function.
1567 (dw_loc_list): Remove toplev argument, add want_address argument.
1568 Don't look at decl_by_reference_p at all. Use dw_loc_list_1.
1569 (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
1570 want_address == 2 to dw_loc_list. For successful dw_loc_list
1571 set have_address to 1 only if want_address is not 0.
1572
1573 2009-10-05 Richard Sandiford <rdsandiford@googlemail.com>
1574
1575 * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
1576 * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
1577 a code block followed by two pointers.
1578 (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
1579 * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
1580 (MIPS_MOVE): Likewise.
1581 (MIPS_LUI): Likewise.
1582 (MIPS_JR): Likewise.
1583 (MIPS_BAL): Likewise.
1584 (MIPS_NOP): Likewise.
1585 (mips_asm_trampoline_template): Delete.
1586 (mips_trampoline_code_size): New function.
1587 (mips_trampoline_init): Add shorter sequences for all cases
1588 except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
1589 Calculate the opcodes directly, rather than copying from a template.
1590 Only flush the code part of the trampoline.
1591 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
1592
1593 2009-10-05 Richard Sandiford <rdsandiford@googlemail.com>
1594
1595 * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
1596 GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
1597 (INCOMING_RETURN_ADDR_RTX): Likewise.
1598 (FUNCTION_PROFILER): Likewise. Replace GP_REG_FIRST + 1
1599 with AT_REGNUM.
1600 * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
1601 with RETURN_ADDR_REGNUM.
1602 (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
1603 * config/mips/mips.c (mips16_build_call_stub): Replace
1604 GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
1605 with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
1606 (mips_print_operand_punctuation): Likewise.
1607 (mips_frame_set): Likewise.
1608 (mips16e_output_save_restore): Likewise.
1609 (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
1610 (mips_save_reg_p): Likewise.
1611 (mips_return_addr): Likewise.
1612 (mips_set_return_address): Likewise.
1613 (mips_direct_save_slot_move_p): Likewise.
1614 (mips_output_function_prologue): Likewise.
1615 (mips_restore_reg): Likewise.
1616 (mips_expand_epilogue): Likewise.
1617 (mips_epilogue_uses): Likewise.
1618 * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
1619 (*mov<mode>_ra): Use it instead of a hard-coded 31.
1620 (clear_hazard_<mode>): Likewise.
1621 (call_internal): Likewise.
1622 (call_internal_direct): Likewise.
1623 (call_direct_split): Likewise.
1624 (call_value_internal): Likewise.
1625 (call_value_split): Likewise.
1626 (call_value_internal_direct): Likewise.
1627 (call_value_direct_split): Likewise.
1628 (call_value_multiple_internal): Likewise.
1629 (call_value_multiple_split): Likewise.
1630
1631 2009-10-05 Eric Botcazou <ebotcazou@adacore.com>
1632 Jakub Jelinek <jakub@redhat.com>
1633
1634 PR rtl-optimization/41511
1635 * combine.c (record_value_for_reg): Pass explicit values as argument
1636 to get_last_value_validate.
1637 (get_last_value_validate): Document INSN parameter.
1638 For non-readonly MEMs, assume they might have been modified if INSN
1639 was in another basic block.
1640 (get_last_value): Minor reformatting.
1641
1642 2009-10-05 Andrew Pinski <andrew_pinski@playstation.sony.com>
1643
1644 PR tree-opt/40992
1645 * final.c (asm_str_count): Split out from asm_insn_count.
1646 * rtl.h (asm_str_count): New prototype.
1647 * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
1648 asm_str_count.
1649
1650 2009-10-05 Sriraman Tallam <tmsriram@google.com>
1651
1652 * doc/plugins.texi: Change plugin_pass to register_pass_info.
1653
1654 2009-10-05 Basile Starynkevitch <basile@starynkevitch.net>
1655 Rafael Espindola <espindola@google.com>
1656
1657 * gengtype.c (write_types): Moved call to write_func_for_structure
1658 into seperate loops.
1659
1660 2009-10-05 Richard Guenther <rguenther@suse.de>
1661
1662 PR lto/41281
1663 * lto-cgraph.c (output_cgraph): Output toplevel asms.
1664 (input_cgraph_1): Input toplevel asms.
1665
1666 2009-10-05 Richard Guenther <rguenther@suse.de>
1667
1668 PR lto/40902
1669 * lto-symtab.c (lto_compatible_attributes_p): Remove.
1670 (external_aggregate_decl_p): Likewise.
1671 (lto_symtab_compatible): Re-structure. Remove dead code.
1672 For variables ignore toplevel qualifiers when comparing types.
1673 Issue warnings, not errors for mismatched user-alignment.
1674
1675 2009-10-05 Richard Guenther <rguenther@suse.de>
1676
1677 PR lto/41552
1678 PR lto/41487
1679 * lto-symtab.c (struct lto_symtab_base_def): Remove.
1680 (struct lto_symtab_identifier_def): Likewise.
1681 (struct lto_symtab_decl_def): Likewise.
1682 (struct lto_symtab_entry_def): New.
1683 (lto_symtab_identifier_t): Rename to ...
1684 (lto_symtab_entry_t): ... this.
1685 (lto_symtab_decls): Remove.
1686 (lto_symtab_base_hash): Rename to ...
1687 (lto_symtab_entry_hash): ... this.
1688 (lto_symtab_base_eq): Rename to ...
1689 (lto_symtab_entry_eq): ... this.
1690 (lto_symtab_base_marked_p): Rename to ...
1691 (lto_symtab_entry_marked_p): ... this.
1692 (lto_symtab_identifier_marked_p): Remove.
1693 (lto_symtab_decl_marked_p): Likewise.
1694 (lto_symtab_maybe_init_hash_tables): Rename to ...
1695 (lto_symtab_maybe_init_hash_table): ... this.
1696 (lto_symtab_set_resolution_and_file_data): Remove.
1697 (lto_symtab_register_decl): New function.
1698 (lto_symtab_get_identifier): Remove.
1699 (lto_symtab_get): New function.
1700 (lto_symtab_get_resolution): Adjust.
1701 (lto_symtab_get_identifier_decl): Remove.
1702 (lto_symtab_set_identifier_decl): Likewise.
1703 (lto_symtab_merge_decl): Rename to ...
1704 (lto_symtab_merge): ... this. Rewrite.
1705 (lto_symtab_merge_var): Remove.
1706 (lto_symtab_merge_fn): Likewise.
1707 (lto_symtab_prevailing_decl): Adjust.
1708 (lto_cgraph_replace_node): New function.
1709 (lto_symtab_merge_decls_2): Likewise.
1710 (lto_symtab_merge_decls_1): Likewise.
1711 (lto_symtab_fixup_var_decls): Likewise.
1712 (lto_symtab_resolve_symbols): Likewise.
1713 (lto_symtab_merge_decls): Likewise.
1714 (lto_symtab_prevailing_decl): Adjust.
1715 (lto_symtab_get_symtab_def): Remove.
1716 (lto_symtab_get_file_data): Likewise.
1717 (lto_symtab_clear_resolution): Adjust.
1718 (lto_symtab_clear_resolution): Likewise.
1719 * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
1720 (input_cgraph_1): Likewise.
1721 * lto-streamer-in.c (get_resolution): Do not provide fake
1722 symbol resolutions here.
1723 (deferred_global_decls): Remove.
1724 (lto_register_deferred_decls_in_symtab): Likewise.
1725 (lto_register_var_decl_in_symtab): Change signature, register
1726 variable via lto_symtab_register_decl.
1727 (lto_register_function_decl_in_symtab): Likewise.
1728 (lto_read_tree): Adjust.
1729 * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
1730 (lto_symtab_merge_var): Likewise.
1731 (lto_symtab_merge_fn): Likewise.
1732 (lto_symtab_register_decl): Declare.
1733 (lto_symtab_merge_decls): Likewise.
1734
1735 2009-10-05 Richard Guenther <rguenther@suse.de>
1736
1737 PR tree-optimization/23821
1738 * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
1739 * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
1740 simple IV increments.
1741
1742 2009-10-05 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1743
1744 * config/arm/arm.c (arm_override_options): Really initialize
1745 flag_dwarf2_cfi_asm to 0.
1746
1747 2009-10-05 Doug Kwan <dougkwan@google.com>
1748
1749 PR rtl-optimization/41574
1750 * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
1751 floating point and we are not doing unsafe math optimizations.
1752
1753 2009-10-03 Simon Baldwin <simonb@google.com>
1754 Cary Coutant <ccoutant@google.com>
1755 Rafael Espindola <espindola@google.com>
1756 Richard Guenther <rguenther@suse.de>
1757 Jan Hubicka <jh@suse.cz>
1758 Doug Kwan <dougkwan@google.com>
1759 H.J. Lu <hongjiu.lu@intel.com>
1760 Bill Maddox <maddox@google.com>
1761 Ryan Mansfield <rmansfield@qnx.com>
1762 Diego Novillo <dnovillo@google.com>
1763 Ollie Wild <aaw@google.com>
1764 Kenneth Zadeck <zadeck@naturalbridge.com>
1765
1766 * lto-cgraph.c: New file.
1767 * lto-compress.c: New file.
1768 * lto-compress.h: New file.
1769 * lto-opts.c: New file.
1770 * lto-section-in.c: New file.
1771 * lto-section-out.c: New file.
1772 * lto-streamer-in.c: New file.
1773 * lto-streamer-out.c: New file.
1774 * lto-streamer.c: New file.
1775 * lto-streamer.h: New file.
1776 * lto-symtab.c: New file.
1777 * lto-wpa-fixup.c: New file.
1778 * lto-wrapper.c: New file.
1779
1780 2009-10-03 Simon Baldwin <baldwin@google.com>
1781 Ben Elliston <bje@au.ibm.com>
1782 Rafael Espindola <espindola@google.com>
1783 Nathan Froyd <froydnj@codesourcery.com>
1784 Jan Hubicka <jh@suse.cz>
1785 Doug Kwan <dougkwan@google.com>
1786 Diego Novillo <dnovillo@google.com>
1787 Kenneth Zadeck <zadeck@naturalbridge.com>
1788
1789 * Makefile.in (enable_lto): New.
1790 (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
1791 (LINKER_PLUGIN_API_H): Define.
1792 (LTO_SYMTAB_H): Define.
1793 (LTO_STREAMER_H): Define.
1794 (TREE_VECTORIZER_H): Define.
1795 (INCLUDES): Add LIBELFINC.
1796 (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
1797 lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
1798 lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
1799 (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
1800 (native): Add lto-wrapper$(exeext)
1801 (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
1802 lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
1803 lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
1804 (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
1805 (varasm.o): Add dependency on tree-iterator.h.
1806 (cgraph.o): Add dependency on cif-code.def.
1807 (ipa-reference.o): Add dependency on LTO_STREAMER_H.
1808 (ipa-pure-const.o): Likewise.
1809 (GTFILES): Add lto-symtab.c.
1810 (install-lto-wrapper): New.
1811 * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
1812 and enable_lto. If LIBELFLIBS is set, define HAVE_libelf.
1813 * config.in: Regenerate.
1814
1815 2009-10-03 Rafael Espindola <espindola@google.com>
1816 Diego Novillo <dnovillo@google.com>
1817
1818 * cgraphunit.c (ipa_passes): Prevent lto1 from calling
1819 ipa_write_summaries.
1820 Call execute_ipa_summary_passes for all_regular_ipa_passes and
1821 all_lto_gen_passes.
1822 (cgraph_optimize): Make extern.
1823
1824 2009-10-03 Nathan Froyd <froydnj@codesourcery.com>
1825 Kenneth Zadeck <zadeck@naturalbridge.com>
1826
1827 * toplev.c (in_lto_p): Declare.
1828 * collect2.c (scan_prog_file): Read all the output when reading
1829 information for LTO.
1830 (enum lto_mode_d): Declare.
1831
1832 2009-10-03 Richard Guenther <rguenther@suse.de>
1833 Diego Novillo <dnovillo@google.com>
1834
1835 * gimple.c: Include target.h and alias.h.
1836 (gimple_types): Declare.
1837 (type_hash_cache): Declare.
1838 (gimple_alloc_stat): Make extern.
1839 (gimple_build_eh_must_not_throw): Call
1840 gimple_eh_must_not_throw_set_fndecl.
1841 (struct type_pair_d): Declare.
1842 (type_pair_t): Declare.
1843 (type_pair_hash): New.
1844 (type_pair_eq): New.
1845 (lookup_type_pair): New.
1846 (gimple_force_type_merge): New.
1847 (compare_type_names_p): New.
1848 (compare_field_offset): New.
1849 (gimple_types_compatible_p): New.
1850 (struct sccs): Declare.
1851 (next_dfs_num): Declare.
1852 (iterative_hash_gimple_type): New.
1853 (visit): New.
1854 (iterative_hash_type_name): New.
1855 (iterative_hash_gimple_type): New.
1856 (gimple_type_hash): New.
1857 (gimple_type_eq): New.
1858 (gimple_register_type): New.
1859 (print_gimple_types_stats): New.
1860 (gimple_signed_or_unsigned_type): New.
1861 (gimple_unsigned_type): New.
1862 (gimple_signed_type): New.
1863 (gimple_get_alias_set): New.
1864 (gimple_decl_printable_name): Do not use DMGL_TYPES.
1865 * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
1866 (gimple_force_type_merge): Declare.
1867 (gimple_types_compatible_p): Declare.
1868 (gimple_register_type): Declare.
1869 (print_gimple_types_stats): Declare.
1870 (gimple_unsigned_type): Declare.
1871 (gimple_signed_type): Declare.
1872 (gimple_get_alias_set): Declare.
1873 (gimple_eh_must_not_throw_set_fndecl): New.
1874
1875 2009-10-03 Jan Hubicka <jh@suse.cz>
1876 Kenneth Zadeck <zadeck@naturalbridge.com>
1877
1878 * ipa-pure-const.c: Include lto-streamer.h.
1879 (register_hooks): Factor out of ...
1880 (generate_summary): ... here.
1881 (pure_const_write_summary): New.
1882 (pure_const_read_summary): New.
1883 (pass_ipa_pure_const): Add pure_const_write_summary and
1884 pure_const_read_summary.
1885 * ipa-reference.c: Include lto-streamer.h.
1886 (add_new_function): New.
1887 (remove_node_data): New.
1888 (duplicate_node_data): New.
1889 (ipa_init): Guard against multiple calls.
1890 Move hook setup from analyze_function.
1891 (write_node_summary_p): New.
1892 (ipa_reference_write_summary): New.
1893 (ipa_reference_read_summary): New.
1894 (pass_ipa_reference): Add ipa_reference_write_summary and
1895 ipa_reference_read_summary.
1896 * cgraph.h (cgraph_local_info): Add field lto_file_data.
1897 (struct cgraph_edge): Add fields lto_stmt_uid and
1898 call_stmt_cannot_inline_p.
1899 (cgraph_optimize): Declare.
1900 (cgraph_decide_is_function_needed): Declare.
1901 (reset_inline_failed): Declare.
1902 (enum LTO_cgraph_tags): Declare.
1903 (LTO_cgraph_tag_names): Declare.
1904 (LCC_NOT_FOUND): Define.
1905
1906 2009-10-03 Doug Kwan <dougkwan@google.com>
1907 Rafael Espindola <espindola@google.com>
1908 Jan Hubicka <jh@suse.cz>
1909 Diego Novillo <dnovillo@google.com>
1910 Kenneth Zadeck <zadeck@naturalbridge.com>
1911
1912 * passes.c (all_regular_ipa_passes): New.
1913 (all_ipa_passes): Rename to all_small_ipa_passes.
1914 (init_optimization_passes): Init all_regular_ipa_passes.
1915 * tree-pass.h (all_regular_ipa_passes): New.
1916 (all_ipa_passes): Rename to all_small_ipa_passes.
1917 * passes.c (all_lto_gen_passes): New.
1918 (init_optimization_passes): Initialize all_lto_gen_passes.
1919 (execute_ipa_summary_passes): Make non-static.
1920 (ipa_write_summaries_1): New.
1921 (ipa_write_summaries_2): New.
1922 (ipa_write_summaries): New.
1923 (ipa_write_summaries_of_cgraph_node_set): New.
1924 (ipa_read_summaries_1): New.
1925 (ipa_read_summaries): New.
1926 (execute_ipa_pass_list): Call cgraph_process_new_functions.
1927 (execute_regular_ipa_pass_list): Remove.
1928 (init_optimization_passes): Schedule
1929 pass_rebuild_cgraph_edges and pass_early_inline outside
1930 of pass_all_early_optimizations. Document reason.
1931 (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
1932 pass_ipa_lto_finish_out): New pass.
1933 (pass_ipa_summary_passes): Start and stop timers if the pass has them.
1934 (execute_all_ipa_transforms): New.
1935 (execute_one_pass): Don't call execute_one_ipa_transform_pass.
1936 (dump_properties, debug_properties): New.
1937 * tree-optimize.c (gate_all_early_local_passes): Return
1938 false if we are in lto1.
1939 (tree_rest_of_compilation): Call execute_all_ipa_transforms.
1940 * tree-pass.h (execute_all_ipa_transforms): Declare.
1941 (pass_ipa_function_and_variable_visibility): Declare.
1942 (pass_ipa_early_inline): Declare.
1943 (pass_ipa_lto_gimple_out): Declare.
1944 (pass_ipa_lto_wpa_fixup): Declare.
1945 (pass_ipa_lto_finish_out): Declare.
1946 (all_small_ipa_passes, all_regular_ipa_passes,
1947 all_lto_gen_passes): Declare.
1948 (execute_ipa_summary_passes): Declare.
1949 (execute_all_ipa_transforms): Declare.
1950 (ipa_write_summaries): Declare
1951 (ipa_write_summaries_of_cgraph_node_set): Declare.
1952 (ipa_read_summaries): Declare.
1953
1954 2009-10-03 Doug Kwan <dougkwan@google.com>
1955 Ollie Wild <aaw@google.com>
1956
1957 * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
1958
1959 * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
1960 (lto_mode): New variable.
1961 (maybe_run_lto_and_relink): Handle the -fwpa option.
1962 (main): Handle the -fwpa option.
1963 (maybe_unlink_list): New function.
1964 * gcc.c (link_lto_options): Replace -flto with -fwpa.
1965 * common.opt (flto): New flag.
1966 * toplev.c (flag_generate_lto): Declare.
1967
1968 2009-10-03 Simon Baldwin <simonb@google.com>
1969
1970 * common.opt (flto-compression-level): New flag.
1971
1972 * opts.c: Include lto-opts.h.
1973 (handle_option): Call lto_register_user_option for each
1974 valid option handled.
1975 (decode_options): Clear registered options before the options
1976 handling loop.
1977
1978 2009-10-03 Cary Coutant <ccoutant@google.com>
1979
1980 * collect2.c (is_elf): New function.
1981 (scan_prog_file): Require LTO object to be in ELF format.
1982
1983 2009-10-03 Rafael Espindola <espindola@google.com>
1984
1985 * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
1986 libgcc to the linker.
1987
1988 * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
1989
1990 * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
1991 (collect_execute): Add flags argument. Pass flags to pex_run. Update
1992 all callers.
1993 * collect2.h (collect_execute): Add flags argument.
1994 * tlink.c (tlink_execute): Update call to collect_execute.
1995 * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
1996 (use_linker_plugin): New.
1997 (use_linker_plugin_spec_function): New.
1998 (LINK_COMMAND_SPEC): Pass plugin options to the linker.
1999 (linker_plugin_file_spec): New.
2000 (lto_wrapper_spec): New.
2001 (lto_gcc_spec): New.
2002 (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
2003 (static_spec_functions): Add use-linker-plugin.
2004 (process_command): Handle -use-linker-plugin.
2005 (main): Use lto_wrapper_spec instead of lto_wrapper. Set
2006 linker_plugin_file_spec and lto_gcc_spec.
2007 (use_linker_plugin_spec_function): New.
2008
2009 2009-10-03 Richard Guenther <rguenther@suse.de>
2010
2011 PR lto/41547
2012 PR lto/41548
2013 * tree.h (is_lang_specific): Include LANG_TYPE.
2014 * tree.c (find_decls_types_r): Manually add interesting parts
2015 of TYPE_FIELDS. Walk BINFO_VIRTUALS. Do not walk TYPE_METHODS.
2016
2017 * gimple.c (type_pair_hash): Make symmetric.
2018 (type_pair_eq): Likewise.
2019 (lookup_type_pair): Increase initial hashtable size.
2020 (gimple_force_type_merge): Rely on type-pair symmetry.
2021 (visit): Remove excessive checking code.
2022 (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
2023 (gimple_register_type): Remove getenv calls, shrink initial
2024 hashtable size.
2025
2026 PR middle-end/41502
2027 * cgraphunit.c (ipa_passes): Do not remove bodies of extern
2028 inline functions if not generating lto output.
2029
2030 PR lto/41379
2031 * toplev.c (finalize): In WPA mode remove the asm file.
2032
2033 2009-10-03 Doug Kwan <dougkwan@google.com>
2034
2035 * ipa-inline.c (cgraph_mark_inline): Check
2036 edge->call_stmt_cannot_inline_p instead of calling
2037 gimple_call_cannot_inline_p.
2038 (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
2039 (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
2040 (inline_generate_summary): Do nothing in LTRANS.
2041 * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
2042 exists before calling gimple_call_cannot_inline_p.
2043 (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
2044 (cgraph_clone_edge): Add argument STMT_UID. Modify all callers.
2045 Update new_edge->lto_stmt_uid.
2046 * cgraphbuild.c (reset_inline_failed): New.
2047
2048 * common.opt (fwpa): New flag.
2049 (fltrans): New option.
2050 * gcc.c (gcc_lto_option_t): New type.
2051 (current_lto_option): New variable.
2052 (lto_single_spec_function): Remove and is replaced by ..
2053 (lto_option_spec_function): New function.
2054 (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
2055 passing the -flto flag.
2056 (cc1_options): Separate non-LTO related parts into ..
2057 (cc1_non_lto_options): Non-LTO related options shared by all FEs.
2058 (lto1_options): New spec for lto FE.
2059 (link_lto_options): New spec for handling LTO flags in linker.
2060 (invoke_lto_single): Re-format to fit in 80 column. Replace
2061 lto-single with lto-option.
2062 (static_specs): Add cc1_non_lto_options, lto1_options and
2063 link_lto_options.
2064 (static_spec_function): Replace lto-single with lto-option.
2065 (process_command): Handle -flto, -fwpa and -fltran by setting
2066 current_lto_option and not passing it to subprocess unconditionally.
2067
2068 2009-10-03 Bill Maddox <maddox@google.com>
2069
2070 Add `gcc' driver support for link-time code generation (LTO).
2071
2072 * collect2.c (enum pass): Add new literal PASS_LTOINFO.
2073 (lto_flag, lto_objects, lto_o_file): New variables.
2074 (struct lto_object, struct lto_object_list): New structures.
2075 (collect_exit, handler): Remove LTO temporary output file on exit.
2076 (add_lto_object): New function.
2077 (maybe_run_lto_and_relink): New function. Perform link time code
2078 generation and relinking for object files containing LTO information.
2079 (main): Invoke maybe_run_lto_and_relink().
2080 (dump_argv): New function. For debugging, currently disabled.
2081 (scan_prog_file): Add LTO information pass.
2082 * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
2083 collect2.
2084 * toplev.c (compile_file): Emit assembler directive to create
2085 the `gnu_lto_v1' marker symbol when compiling with `-flto'.
2086
2087 2009-10-03 Diego Novillo <dnovillo@google.com>
2088
2089 * c.opt: Add LTO to warn_abi and warn_psabi.
2090
2091 * tree.c (fld_worklist_push): Rename from PUSH. Convert to static
2092 inline function. Ignore language-specific nodes. Update all users.
2093 (find_decls_types_r): Do not traverse the subtrees of
2094 language-specific nodes. Do not traverse DECL_INITIAL for TYPE_DECLs.
2095 * tree.h (is_lang_specific): New.
2096 * langhooks.h (struct lang_hooks_for_decls): Remove
2097 may_need_assembler_name_p. Update all users.
2098
2099 * c-common.c (set_builtin_user_assembler_name): Move ...
2100 * builtins.c (set_builtin_user_assembler_name): ... here.
2101 (is_builtin_name): Add comment
2102 (is_builtin_fn): New.
2103 * except.c (output_ttype): Only call
2104 lookup_type_for_runtime if TYPE is not a runtime type.
2105
2106 * passes.c (register_pass): Call position_pass on
2107 all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
2108 * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
2109 (TV_IPA_LTO_DECL_IO): Define.
2110 (TV_IPA_LTO_CGRAPH_IO): Define.
2111 (TV_LTO): Define.
2112 (TV_WHOPR_WPA): Define.
2113 (TV_WHOPR_WPA_IO): Define.
2114 (TV_WHOPR_LTRANS): Define.
2115 (TV_WHOPR_WPA_FIXUP): Define.
2116 (TV_WHOPR_WPA_LTRANS_EXEC): Define.
2117 * tree-cfg.c (tree_node_can_be_shared): Make extern.
2118 * tree-flow.h (tree_node_can_be_shared): Declare.
2119 * tree-inline.c (tree_can_inline_p): Check that E has a
2120 statement associated with it.
2121 * tree.c (free_lang_data_in_binf): Factor out of ...
2122 (free_lang_data_in_type): ... here.
2123 Call RECORD_OR_UNION_TYPE_P.
2124 (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
2125 set. Call lang_hooks.decls.may_need_assembler_name_p if set.
2126 (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
2127 (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE. Set
2128 write_symbols to NO_DEBUG. Set debug_hooks to do_nothing_debug_hooks.
2129 (gate_free_lang_data): Return true if flag_generate_lto is set.
2130 (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
2131 * c-common.h (set_builtin_user_assembler_name): Move ...
2132 * tree.h (set_builtin_user_assembler_name): ... here.
2133
2134 * common.opt (flto-report): New flag.
2135 * opts.c (complain_wrong_lang): Do not complain if running lto1.
2136 * collect2.c (scan_prog_file): Send the error output of
2137 'nm' to HOST_BIT_BUCKET.
2138
2139 2009-10-03 Ollie Wild <aaw@google.com>
2140
2141 * langhooks-def.h (lhd_begin_section): New function declaration.
2142 (lhd_write_section): New function declaration.
2143 (lhd_end_section): New function declaration.
2144 (LANG_HOOKS_BEGIN_SECTION): New macro.
2145 (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
2146 (LANG_HOOKS_END_SECTION): New macro.
2147 (LANG_HOOKS_LTO): New macro.
2148 (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
2149 * langhooks.c (output.h): Add include.
2150 (saved_section): New static variable.
2151 (lhd_begin_section): New function.
2152 (lhd_write_section_data): New function.
2153 (lhd_end_section): New function.
2154 * langhooks.h (struct lang_hooks_for_lto): New structure.
2155 (struct lang_hooks): Add member lto.
2156 * Makefile.in (langhooks.o): Add dependency on output.h.
2157
2158 * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
2159
2160 2009-10-03 Richard Guenther <rguenther@suse.de>
2161
2162 * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
2163 Handle LTO.
2164
2165 2009-10-03 Simon Baldwin <simonb@google.com>
2166 Richard Guenther <rguenther@suse.de>
2167 Janis Johnson <janis187@us.ibm.com>
2168 Doug Kwan <dougkwan@google.com>
2169 Diego Novillo <dnovillo@google.com>
2170 Ramana Radhakrishnan <ramana.r@gmail.com>
2171 Ollie Wild <aaw@google.com>
2172
2173 * doc/install.texi: Add documentation for libelf and --enable-lto.
2174 * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
2175 -flto-report, -flto-compression-level and -use-linker-plugin.
2176 * doc/sourcebuild.texi: Document use of zlib. Document lto-plugin.
2177 Add section for LTO Testing.
2178
2179 2009-10-02 Cary Coutant <ccoutant@google.com>
2180
2181 Add support for comdat type sections for DWARF v4.
2182 Merge from dwarf4 branch.
2183
2184 * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
2185 (dw_die_ref): Define vector type.
2186 (enum dw_val_class): Add dw_val_class_data8.
2187 (struct dw_val_struct): Add v.val_data8.
2188 (comdat_type_node_ref): New type.
2189 (struct die_struct): Move die_symbol into a union; add new field
2190 die_type_node. Change all uses.
2191 (comdat_type_node): New type.
2192 (skeleton_chain_node): New type.
2193 (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
2194 (comdat_type_list): New variable.
2195 (dwarf_tag_name): Add DW_TAG_type_unit.
2196 (dwarf_attr_name): Add DW_AT_signature.
2197 (add_AT_data8): New function.
2198 (replace_child): New function.
2199 (move_all_children): New function.
2200 (print_signature): New function.
2201 (print_die): Print signature information; add dw_val_class_data8.
2202 (attr_checksum): Support dw_val_class_data8.
2203 (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
2204 (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
2205 (checksum_sleb128, checksum_uleb128): New functions.
2206 (checksum_die_context): New function.
2207 (loc_checksum_ordered): New function.
2208 (attr_checksum_ordered): New function.
2209 (struct checksum_attributes): New structure.
2210 (collect_checksum_attributes): New function.
2211 (die_checksum_ordered): New function.
2212 (generate_type_signature): New function.
2213 (same_dw_val_p): Add dw_val_class_data8.
2214 (is_symbol_die): Use new is_declaration_die function.
2215 (is_declaration_die): New function.
2216 (should_move_die_to_comdat): New function.
2217 (clone_die): New function.
2218 (clone_tree): New function.
2219 (clone_as_declaration): New function.
2220 (copy_declaration_context): New function.
2221 (generate_skeleton_ancestor_tree): New function.
2222 (generate_skeleton_bottom_up): New function.
2223 (generate_skeleton): New function.
2224 (remove_child_or_replace_with_skeleton): New function.
2225 (break_out_comdat_types): New function.
2226 (struct decl_table_entry): New type.
2227 (htab_decl_hash): New function.
2228 (htab_decl_eq): New function.
2229 (htab_decl_del): New function.
2230 (copy_ancestor_tree): New function.
2231 (copy_decls_walk): New function.
2232 (copy_decls_for_unworthy_types): New function.
2233 (build_abbrev_table): Don't assert on missing die_symbol when doing
2234 comdat type sections.
2235 (size_of_die): Use DW_FORM_sig8 for external references. Add
2236 dw_val_class_data8.
2237 (unmark_dies): Don't assert for unmarked dies when doing comdat
2238 type sections.
2239 (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
2240 (output_signature): New function.
2241 (output_die): Likewise.
2242 (output_compilation_unit_header): Mark output as DWARF version 3
2243 even if generating DWARF 4.
2244 (output_comdat_type_unit): New function.
2245 (output_line_info): Mark output as DWARF version 3 even if generating
2246 DWARF 4.
2247 (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
2248 DWARF-4.
2249 (dwarf2out_end_source_file): Likewise.
2250 (prune_unused_types_walk_attribs): Don't follow references into
2251 comdat type sections.
2252 (prune_unused_types_mark): When generating type units, do not mark
2253 children of non-defining declarations of types; do mark children of
2254 type entries.
2255 (prune_unused_types): Process comdat type sections.
2256 (htab_ct_hash): New function.
2257 (htab_ct_eq): New function.
2258 (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
2259 Add a pointer to the line table from type unit entries so
2260 DW_AT_decl_file has meaning.
2261 * varasm.c (default_elf_asm_named_section): Use identifier name as
2262 comdat key instead of lang hook.
2263
2264 2009-10-02 Neil Vachharajani <nvachhar@google.com>
2265
2266 * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
2267
2268 2009-10-02 Uros Bizjak <ubizjak@gmail.com>
2269
2270 * config/i386/i386.md (SWIM248): New mode iterator.
2271 (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
2272 divmodhi4 patterns using SWIM248 macro.
2273 (*divmod<mode>4): Macroize insn_and_split pattern from
2274 *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
2275 and their corresponding splitters usign SWIM248 macro. Split SImode
2276 insn to generate cltd and DImode insn to generate cqto instead of
2277 move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
2278 (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
2279 (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
2280 *divmodsi_noext patterns using SWIM248 macro.
2281 (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
2282 udivmodhi4 patterns using SWIM248 macro.
2283 (*udivmod<mode>4): Macroize insn_and_split pattern from
2284 *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
2285 corresponding splitters using SWIM248 macro.
2286 (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
2287 *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
2288
2289 2009-10-02 Eric Botcazou <ebotcazou@adacore.com>
2290
2291 * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
2292 of zero-sized element is zero-sized regardless of its extent.
2293
2294 2009-10-02 Jakub Jelinek <jakub@redhat.com>
2295
2296 PR debug/40521
2297 * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
2298 * configure: Regenerated.
2299 * config.in: Regenerated.
2300 * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
2301 !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
2302 (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
2303 not emitting .eh_frame, emit .cfi_sections .debug_frame
2304 directive.
2305
2306 PR debug/41404
2307 PR debug/41353
2308 * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
2309 CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
2310 with '\0'.
2311 (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
2312 vars use DECL_RTL with resetting it back to NULL afterwards.
2313 * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
2314 rtx_equal_p instead of asserting it is a SYMBOL_REF.
2315 (value_format): For dw_val_class_addr only use DW_FORM_addr if
2316 the attribute type allows it, otherwise use DW_FORM_dataN.
2317 (mem_loc_descriptor): Handle CONST_STRING.
2318 (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
2319 Handle MEM with CONST_STRING address using add_AT_string.
2320 (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
2321 CONST_STRING for const arrays initialized with a string literal.
2322 (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
2323 (dwarf2out_finish): Call resolve_addr.
2324
2325 2009-10-02 Andreas Schwab <schwab@linux-m68k.org>
2326 Maxim Kuvyrkov <maxim@codesourcery.com>
2327
2328 * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
2329
2330 2009-10-02 Nick Clifton <nickc@redhat.com>
2331
2332 * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
2333 (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
2334
2335 2009-10-01 Jan Hubicka <jh@suse.cz>
2336
2337 * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
2338 (cgraph_create_virtual_clone): Just pass redirect_callers
2339 around.
2340 * cgraph.h (cgraph_clone_node): Update prototype.
2341 * ipa-pure-const.c (self_recursive_p): New function.
2342 (propagate): Use it.
2343 * ipa-inline.c (cgraph_clone_inlined_nodes,
2344 cgraph_decide_recursive_inlining): Update.
2345
2346 2009-10-01 David Daney <ddaney@caviumnetworks.com>
2347
2348 * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
2349 instructions for TARGET_OCTEON.
2350
2351 2009-10-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2352
2353 * config/arm/arm.c (arm_override_options): Turn off
2354 flag_dwarf2_cfi_asm for AAPCS variants.
2355
2356 2009-10-01 Martin Jambor <mjambor@suse.cz>
2357
2358 PR middle-end/12392
2359 * tree-sra.c (convert_callers): Do not call
2360 compute_inline_parameters on one caller more than once.
2361
2362 2009-10-01 Nick Clifton <nickc@redhat.com>
2363
2364 * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
2365 an empty string if not already defined.
2366
2367 2009-10-01 Martin Jambor <mjambor@suse.cz>
2368
2369 PR bootstrap/41395
2370 * tree-sra.c (is_va_list_type): New function.
2371 (find_var_candidates): Call is_va_list_type.
2372 (find_param_candidates): Check that the type or the type pointed
2373 to are not va_list types.
2374
2375 2009-10-01 Martin Jambor <mjambor@suse.cz>
2376
2377 PR c++/41503
2378 * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
2379 DECL_ARTIFICIAL (param_decl) is true.
2380
2381 2009-09-30 Gabriel Dos Reis <gdr@cs.tamu.edu>
2382
2383 * tree.h (tree_decl_common::lang_flag_8): New.
2384 * c-common.c (c_common_reswords): Include "constexpr" as C++0x
2385 keyword.
2386 * c-common.h (RID_CONSTEXPR): New.
2387
2388 2009-09-30 Uros Bizjak <ubizjak@gmail.com>
2389
2390 * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
2391 Use ref-all pointers.
2392 (alpha_gimplify_va_arg): Ditto.
2393
2394 2009-09-30 Jakub Jelinek <jakub@redhat.com>
2395
2396 PR target/41279
2397 * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
2398 before insn counting loop now that BB_END (bb) is counted. Ensure
2399 the return value isn't zero.
2400
2401 2009-09-30 Nick Clifton <nickc@redhat.com>
2402
2403 * config.gcc (sh-symbianelf): Replace definition of extra_objs
2404 with separate definitions of c_target_objs and cxx_target_objs.
2405 * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
2406 and symbian-base.o.
2407 * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
2408 sh_symbian_import_export_class.
2409 * config/sh/sh-protos.h: Fix names of exported symbian functions.
2410 * config/sh/symbian.c: Delete, moving code into...
2411 * config/sh/symbian-base.c: ... here
2412 * config/sh/symbian-c.c: ... and here
2413 * config/sh/symbian-cxx.c: ... and here.
2414
2415 2009-09-30 Uros Bizjak <ubizjak@gmail.com>
2416
2417 PR target/22093
2418 * config/alpha/alpha.md (unaligned_storehi_be): Force operand
2419 of plus RTX into register.
2420
2421 2009-09-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2422
2423 * doc/install.texi: Linguistic and markup fixes.
2424 (Configuration) <--disable-cpp>: Remove description.
2425 <--enable-maintainer-mode>: Autotools files are affected, too.
2426 <--with-sysroot>: Improve description.
2427 (Building): Bump required GNU make version.
2428
2429 2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com>
2430
2431 * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
2432 (x86_64-*-*): Ditto.
2433
2434 * config/i386/fma4intrin.h: New file, provide common x86 compiler
2435 intrinisics for FMA4.
2436 * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
2437 * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
2438 Add FMA4 check and fma4intrin.h.
2439 * config/i386/i386-c.c(ix86_target_macros_internal): Check
2440 ISA_FLAG for FMA4.
2441 * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
2442 * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
2443 constant for FMA4 support.
2444 (UNSPEC_FMA4_FMADDSUB): Ditto.
2445 (UNSPEC_FMA4_FMSUBADD): Ditto.
2446 * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
2447 * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
2448 (ix86_expand_fma4_multiple_memory): Ditto.
2449 * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
2450 (OPTION_MASK_ISA_FMA4_UNSET): New.
2451 (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
2452 (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
2453 (ix86_handle_option): Handle -mfma4.
2454 (isa_opts): Handle -mfma4.
2455 (enum pta_flags): Add PTA_FMA4.
2456 (override_options): Add FMA4 support.
2457 (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
2458 (IX86_BUILTIN_VFMADDSD): Ditto.
2459 (IX86_BUILTIN_VFMADDPS): Ditto.
2460 (IX86_BUILTIN_VFMADDPD): Ditto.
2461 (IX86_BUILTIN_VFMSUBSS): Ditto.
2462 (IX86_BUILTIN_VFMSUBSD): Ditto.
2463 (IX86_BUILTIN_VFMSUBPS): Ditto.
2464 (IX86_BUILTIN_VFMSUBPD): Ditto.
2465 (IX86_BUILTIN_VFMADDSUBPS): Ditto.
2466 (IX86_BUILTIN_VFMADDSUBPD): Ditto.
2467 (IX86_BUILTIN_VFMSUBADDPS): Ditto.
2468 (IX86_BUILTIN_VFMSUBADDPD): Ditto.
2469 (IX86_BUILTIN_VFNMADDSS): Ditto.
2470 (IX86_BUILTIN_VFNMADDSD): Ditto.
2471 (IX86_BUILTIN_VFNMADDPS): Ditto.
2472 (IX86_BUILTIN_VFNMADDPD): Ditto.
2473 (IX86_BUILTIN_VFNMSUBSS): Ditto.
2474 (IX86_BUILTIN_VFNMSUBSD): Ditto.
2475 (IX86_BUILTIN_VFNMSUBPS): Ditto.
2476 (IX86_BUILTIN_VFNMSUBPD): Ditto.
2477 (IX86_BUILTIN_VFMADDPS256): Ditto.
2478 (IX86_BUILTIN_VFMADDPD256): Ditto.
2479 (IX86_BUILTIN_VFMSUBPS256): Ditto.
2480 (IX86_BUILTIN_VFMSUBPD256): Ditto.
2481 (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
2482 (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
2483 (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
2484 (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
2485 (IX86_BUILTIN_VFNMADDPS256): Ditto.
2486 (IX86_BUILTIN_VFNMADDPD256): Ditto.
2487 (IX86_BUILTIN_VFNMSUBPS256): Ditto.
2488 (IX86_BUILTIN_VFNMSUBPD256): Ditto.
2489 (enum multi_arg_type): New enum for describing the various FMA4
2490 intrinsic argument types.
2491 (bdesc_multi_arg): New table for FMA4 intrinsics.
2492 (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
2493 (ix86_expand_multi_arg_builtin): New function for creating FMA4
2494 intrinsics.
2495 (ix86_expand_builtin): Add FMA4 intrinsic support.
2496 (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
2497 operand instructions.
2498 (ix86_expand_fma4_multiple_memory): New function to split the
2499 second memory reference from FMA4 instructions.
2500 * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
2501 (ssemodesuffixf2s): Ditto.
2502 (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
2503 instructions.
2504 (fma4_fmsub<mode>4): Ditto.
2505 (fma4_fnmadd<mode>4): Ditto.
2506 (fma4_fnmsub<mode>4): Ditto.
2507 (fma4_vmfmadd<mode>4): Ditto.
2508 (fma4_vmfmsub<mode>4): Ditto.
2509 (fma4_vmfnmadd<mode>4): Ditto.
2510 (fma4_vmfnmsub<mode>4): Ditto.
2511 (fma4_fmadd<mode>4256): Ditto.
2512 (fma4_fmsub<mode>4256): Ditto.
2513 (fma4_fnmadd<mode>4256): Ditto.
2514 (fma4_fnmsub<mode>4256): Ditto.
2515 (fma4_fmaddsubv8sf4): Ditto.
2516 (fma4_fmaddsubv4sf4): Ditto.
2517 (fma4_fmaddsubv4df4): Ditto.
2518 (fma4_fmaddsubv2df4): Ditto.
2519 (fma4_fmsubaddv8sf4): Ditto.
2520 (fma4_fmsubaddv4sf4): Ditto.
2521 (fma4_fmsubaddv4df4): Ditto.
2522 (fma4_fmsubaddv2df4): Ditto.
2523 (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
2524 instructions for intrinsics.
2525 (fma4i_fmsub<mode>4): Ditto.
2526 (fma4i_fnmadd<mode>4): Ditto.
2527 (fma4i_fnmsub<mode>4): Ditto.
2528 (fma4i_vmfmadd<mode>4): Ditto.
2529 (fma4i_vmfmsub<mode>4): Ditto.
2530 (fma4i_vmfnmadd<mode>4): Ditto.
2531 (fma4i_vmfnmsub<mode>4): Ditto.
2532 (fma4i_fmadd<mode>4256): Ditto.
2533 (fma4i_fmsub<mode>4256): Ditto.
2534 (fma4i_fnmadd<mode>4256): Ditto.
2535 (fma4i_fnmsub<mode>4256): Ditto.
2536 (fma4i_fmaddsubv8sf4): Ditto.
2537 (fma4i_fmaddsubv4sf4): Ditto.
2538 (fma4i_fmaddsubv4df4): Ditto.
2539 (fma4i_fmaddsubv2df4): Ditto.
2540 (fma4i_fmsubaddv8sf4): Ditto.
2541 (fma4i_fmsubaddv4sf4): Ditto.
2542 (fma4i_fmsubaddv4df4): Ditto.
2543 (fma4i_fmsubaddv2df4): Ditto.
2544
2545 * doc/invoke.texi (-mfma4): Add documentation.
2546 * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
2547
2548 2009-09-29 Richard Henderson <rth@redhat.com>
2549
2550 * tree-eh.c (unsplit_eh): Do not unsplit if there's already
2551 an edge to the new destination block.
2552
2553 2009-09-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2554
2555 PR target/41393
2556 * pa.c (hppa_profile_hook): Use
2557 make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
2558
2559 2009-09-29 Steve Ellcey <sje@cup.hp.com>
2560 Alexander Monakov <amonakov@ispras.ru>
2561
2562 PR target/41365
2563 * config/ia64/predicates.md (not_postinc_destination_operand): New.
2564 (not_postinc_memory_operand): New.
2565 (not_postinc_move_operand): New.
2566 * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
2567 (*cmovsi_internal): Ditto.
2568
2569 2009-09-29 Pat Haugen <pthaugen@us.ibm.com>
2570
2571 * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
2572 restrict issue_rate in first pass when scheduling for register
2573 pressure.
2574
2575 2009-09-29 Basile Starynkevitch <basile@starynkevitch.net>
2576 Rafael Avila de Espindola <espindola@google.com>
2577
2578 * gengtype.c (plugin_output): New.
2579 (get_output_file_with_visibility): Return plugin_output for plugins.
2580 (main): Parse and use the -P option.
2581 * gty.texi: Update the command line format.
2582
2583 2009-09-29 Jakub Jelinek <jakub@redhat.com>
2584
2585 PR debug/41438
2586 * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
2587 functions.
2588 (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
2589 out if !const_ok_for_output.
2590
2591 PR debug/41474
2592 * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
2593 case VAR_LOCATION>: Remove gcc_unreachable ().
2594
2595 2009-09-29 Harsha Jagasia <harsha.jagasia@amd.com>
2596
2597 * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
2598 (x86_64-*-*): Ditto.
2599 * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
2600 back to smmintrin.h.
2601 * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
2602 * config/i386/x86intrin.h: Remove SSE5.
2603 * config/i386/mmintrin-common.h: Delete file.
2604 * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
2605
2606 2009-09-29 Richard Guenther <rguenther@suse.de>
2607
2608 * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
2609 resulting from stack temporaries on STRICT_ALIGNMENT targets.
2610
2611 2009-09-29 Nick Clifton <nickc@redhat.com>
2612
2613 * function.c (current_function_name): If there is no current
2614 function just return "<none>".
2615
2616 2009-09-28 Sriraman Tallam <tmsriram@google.com>
2617
2618 * tree-pass.h (register_pass_info): New structure.
2619 (pass_positioning_ops): Move enum from gcc-plugin.h.
2620 (register_pass): New function.
2621 * gcc-plugin.h (plugin_pass): Delete structure.
2622 (pass_positioning_ops): Delete enum.
2623 * plugin.c (regsiter_pass): Delete function.
2624 (position_pass): Delete function.
2625 (added_pass_nodes): Delete variable.
2626 (prev_added_pass_nodes): Delete variable.
2627 (pass_list_node): Delete structure.
2628 * passes.c (make_pass_instance): New function.
2629 (next_pass_1): Change to call make_pass_instance.
2630 (pass_list_node): Move structure from gcc-plugin.h.
2631 (added_pass_nodes): Move variable from plugin.c.
2632 (prev_added_pass_nodes): Move variable from plugin.c.
2633 (position_pass): New function.
2634 (register_pass): New function.
2635
2636 2009-09-28 Easwaran Raman <eraman@google.com>
2637
2638 * ifcvt.c (noce_try_abs): Recognize pattern and call
2639 expand_one_cmpl_abs_nojump.
2640 * optabs.c (expand_one_cmpl_abs_nojump): New function.
2641 * optabs.h (expand_one_cmpl_abs_nojump): Declare.
2642
2643 2009-09-28 Ian Lance Taylor <iant@google.com>
2644
2645 PR middle-end/40500
2646 * c-opts.c (c_common_handle_option): Don't set
2647 warn_jump_misses_init for -Wall.
2648 * doc/invoke.texi (Warning Options): Update documentation.
2649
2650 2009-09-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2651
2652 * Makefile.in ($(out_object_file)): Depend on
2653 gt-$(basename $(notdir $(out_file))).h.
2654
2655 2009-09-28 Richard Henderson <rth@redhat.com>
2656
2657 * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
2658 * except.c (gen_eh_region): Set it.
2659 (duplicate_eh_regions_1): Copy it.
2660 * tree-eh.c (lower_resx): Use it to determine which function
2661 to call to resume.
2662
2663 * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
2664 * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
2665 * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
2666 * tree.c (build_common_builtin_nodes): Remove parameter. Build
2667 BUILT_IN_CXA_END_CLEANUP if necessary.
2668
2669 * c-common.c (c_define_builtins): Update call to
2670 build_common_builtin_nodes.
2671
2672 2009-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
2673
2674 * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
2675
2676 2009-09-28 Michael Matz <matz@suse.de>
2677
2678 * builtins.c (interclass_mathfn_icode): New helper.
2679 (expand_builtin_interclass_mathfn): Use it here, and split folding
2680 into ...
2681 (fold_builtin_interclass_mathfn): ... this new folder.
2682 (build_call_nofold_loc): New static helper.
2683 (build_call_nofold): New wrapper macro for above.
2684 (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
2685 (expand_builtin_pow): Ditto.
2686 (expand_builtin_memset_args): Ditto.
2687 (expand_builtin_printf): Ditto.
2688 (expand_builtin_fprintf): Ditto.
2689 (expand_builtin_sprintf): Ditto.
2690 (expand_builtin_memory_chk): Ditto.
2691 (expand_builtin_mempcpy_args): Ditto and don't call folders.
2692 (expand_builtin_stpcpy): Ditto.
2693 (expand_builtin_strcmp): Ditto.
2694 (expand_builtin_strncmp): Ditto.
2695 (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
2696 (expand_builtin_strcpy_args): Don't call folders.
2697 (expand_builtin_memcmp): Ditto.
2698 (expand_builtin_strncpy): Ditto, and use target.
2699 (expand_builtin_memcpy): Ditto.
2700 (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
2701 expand_builtin_strpbrk, expand_builtin_memmove,
2702 expand_builtin_memmove_args, expand_builtin_bcopy,
2703 expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
2704 expand_builtin_strspn, expand_builtin_strcspn,
2705 expand_builtin_fputs): Remove these.
2706 (expand_builtin): Don't call the above, change calls to other
2707 expanders that changed prototype.
2708 (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
2709 (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
2710 fold_builtin_interclass_mathfn.
2711 (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
2712 (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
2713
2714 * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
2715 * passes.c (init_optimization_passes): Move pass_fold_builtins
2716 after last phiopt pass.
2717 * tree-inline.c (fold_marked_statements): When folding builtins
2718 iterate over all instruction potentially generated.
2719 * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
2720 earlier.
2721 (fold_gimple_call): Use it to always fold calls (into potentially
2722 multiple instructions).
2723 * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
2724 calls into zero at this time.
2725 * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
2726 statements generated by builtin folding.
2727
2728 2009-09-28 Nick Clifton <nickc@redhat.com>
2729
2730 * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
2731
2732 2009-09-28 Duncan Sands <baldrick@free.fr>
2733
2734 * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
2735 * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
2736 (register_callback): Dispatch it.
2737 (invoke_plugin_callbacks): Incorporate in sanity check.
2738 * ggc.h (ggc_register_cache_tab): Add declaration.
2739 * ggc-common.c (ggc_register_root_tab): Simplify.
2740 (const_ggc_cache_tab_t): New typedef.
2741 (extra_cache_vec): New vector of dynamically added cache tables.
2742 (ggc_register_cache_tab): New function.
2743 (ggc_scan_cache_tab): New function.
2744 (ggc_mark_roots): Simplify dynamic roots. Handle dynamic caches.
2745 * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
2746
2747 2009-09-27 Richard Henderson <rth@redhat.com>
2748
2749 * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
2750 which we remove __builtin_stack_restore.
2751
2752 2009-09-27 Bernd Schmidt <bernd.schmidt@analog.com>
2753
2754 * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
2755 to test for GRD_INVARIANT.
2756 (simple_rhs_p): Anything that's function_invariant_p is fine.
2757
2758 2009-09-27 Rafael Avila de Espindola <espindola@google.com>
2759
2760 * gengtype.c (main): Use plunge_files instead of plugin_output.
2761
2762 2009-09-27 Basile Starynkevitch <basile@starynkevitch.net>
2763 Rafael Avila de Espindola <espindola@google.com>
2764
2765 * gengtype.c (write_root, write_roots): Add a emit_pch argument.
2766 Don't print pch related info if it is false.
2767 (main): Don't print pch info in plugin mode.
2768
2769 2009-09-27 Eric Botcazou <ebotcazou@adacore.com>
2770
2771 * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
2772 with dw_val_class_const_double.
2773 (struct dw_val_struct): Replace val_long_long with val_double and
2774 adjust for above change.
2775 (output_loc_operands): Likewise.
2776 (add_AT_long_long): Rename into...
2777 (add_AT_double): ...this.
2778 (print_die): Replace dw_val_class_long_long with
2779 dw_val_class_const_double and adjust.
2780 (attr_checksum): Likewise.
2781 (same_dw_val_p): Likewise.
2782 (size_of_die): Likewise.
2783 (value_format): Likewise.
2784 (output_die): Likewise.
2785 (loc_descriptor) <CONST_DOUBLE>: Likewise.
2786 (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
2787 instead of add_AT_long_long.
2788 (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
2789 value with the precision of its type.
2790
2791 2009-09-27 Andreas Schwab <schwab@linux-m68k.org>
2792
2793 PR c/41476
2794 * c-typeck.c (build_conditional_expr): Use the readonly and
2795 volatile flags of the operand types, not of the operands itself.
2796
2797 2009-09-27 Peter O'Gorman <pogma@thewrittenword.com>
2798
2799 * collect2.c (main): Look for -brtl before adding libraries.
2800
2801 2009-09-27 Jonathan Gray <jsg@openbsd.org>
2802
2803 * config.gcc: Update OpenBSD targets.
2804 * config/openbsd-stdint.h: New file.
2805 * config/openbsd-libpthread.h: New file.
2806 * config/openbsd.h: Update and break out LIB_SPEC definition.
2807 * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
2808 * config/i386/openbsdelf.h: Correct types.
2809 * config/m68k/openbsd.h: Likewise.
2810 * config/mips/openbsd.h: Likewise.
2811 * config/vax/openbsd.h: Likewise.
2812
2813 2009-09-27 Eric Botcazou <ebotcazou@adacore.com>
2814
2815 * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
2816 (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
2817 * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
2818 of the length and zero.
2819
2820 2009-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2821
2822 * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
2823 (FLAGS_H): Add options.h $(REAL_H).
2824 (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
2825 (TREE_VECTORIZER_H): New.
2826 (EBITMAP_H): Renamed from EBIMAP_H.
2827 (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
2828 (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
2829 (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
2830 (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
2831 (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
2832 (graphite-clast-to-gimple.o, graphite-dependences.o)
2833 (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
2834 (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
2835 (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
2836 (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
2837 (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
2838 (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
2839 (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
2840 (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
2841 (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
2842 updated and fixed as per above changes and per
2843 check_makefile_deps.sh output.
2844
2845 PR bootstrap/40928
2846 * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
2847 * configure: Regenerate.
2848
2849 2009-09-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2850
2851 * doc/install.texi: Update minimum MPC version to 0.7.
2852
2853 2009-09-26 Gerald Pfeifer <gerald@pfeifer.com>
2854
2855 * doc/install.texi (Binaries): Remove reference to the binary
2856 distribution CD-ROM from the FSF.
2857
2858 2009-09-26 Michael Matz <matz@suse.de>
2859
2860 PR lto/40758
2861 PR middle-end/41470
2862 * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
2863 that are mentioned in the body.
2864
2865 2009-09-26 Michael Matz <matz@suse.de>
2866
2867 PR tree-optimization/41454
2868 * tree-ssa-dom (stmts_to_rescan): Remove variable.
2869 (tree_ssa_dominator_optimize): Don't allocate and free it.
2870 (dom_opt_leave_block): Don't iterate over it.
2871 (eliminate_redundant_computations): Don't return a value.
2872 (cprop_operand, cprop_into_stmt): Ditto.
2873 (optimize_stmt): Don't defer updating stmts.
2874
2875 2009-09-25 Dodji Seketeli <dodji@redhat.com>
2876
2877 * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
2878 generic_parameter_die, template_parameter_pack_die,
2879 gen_formal_parameter_die, gen_subprogram_die): Adjust after
2880 renaming DW_TAG_formal_parameter_pack and
2881 DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
2882 and DW_TAG_GNU_template_parameter_pack.
2883
2884 2009-09-25 Anatoly Sokolov <aesok@post.ru>
2885
2886 * config/v850/v850.h (FUNCTION_VALUE): Remove.
2887 * config/v850/v850.c (v850_function_value): New function.
2888 (TARGET_FUNCTION_VALUE): Define.
2889
2890 2009-09-25 Jakub Jelinek <jakub@redhat.com>
2891
2892 * tree-vect-stmts.c (vectorizable_call): Call
2893 mark_symbols_for_renaming after vect_finish_stmt_generation.
2894
2895 * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
2896 to loc_descriptor_from_tree.
2897 (add_location_or_const_value_attribute): Pass 0 instead of 2
2898 for decl_by_reference_p decls.
2899
2900 2009-09-25 Richard Guenther <rguenther@suse.de>
2901
2902 PR middle-end/41463
2903 * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
2904 arrays again.
2905
2906 2009-09-25 Ben Elliston <bje@au.ibm.com>
2907
2908 * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
2909 after `power7'.
2910
2911 2009-09-25 Alan Modra <amodra@bigpond.net.au>
2912
2913 * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
2914 form of instruction.
2915
2916 2009-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2917
2918 PR middle-end/41435
2919 * fold-const.c (const_binop): Handle complex int division.
2920 * tree-complex.c (expand_complex_div_straight,
2921 expand_complex_div_wide): Update comments.
2922
2923 2009-09-24 DJ Delorie <dj@redhat.com>
2924
2925 PR target/41456
2926 * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
2927 (reg_class): Likewise.
2928 (REG_CLASS_NAMES): Likewise.
2929 * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
2930 (m32c_override_options): Disable -fivopts for M32C.
2931
2932 2009-09-24 Michael Meissner <meissner@linux.vnet.ibm.com>
2933
2934 * config/rs6000/predicates.md (indexed_or_indirect_operand):
2935 Delete VSX load/store with update support.
2936 * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
2937 * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
2938 (vsx_movti): Ditto.
2939 (VSX_U): Delete.
2940 (VSbit): Ditto.
2941 (VStype_load_update): Ditto.
2942 (VStype_store_update): Ditto.
2943 (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2944 (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
2945
2946 * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
2947 load/store with update builtins.
2948
2949 2009-09-24 Kai Tietz <kai.tietz@onevision.com>
2950
2951 * libgcc2.c (L_trampoline): Prototype for getpagesize
2952 and mprotect in WINNT case.
2953
2954 2009-09-24 Anatoly Sokolov <aesok@post.ru>
2955
2956 * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
2957 * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
2958 * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
2959 'outgoing' argument.
2960 (TARGET_FUNCTION_VALUE): Define.
2961
2962 2009-09-24 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2963
2964 * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
2965
2966 2009-09-24 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2967
2968 PR bootstrap/41405
2969 * common.opt: Initialize dwarf_strict to -1.
2970 * toplev.c (process_options): Catch unset dwarf_strict
2971 and set to 0 for all targets not overriding.
2972 * config/darwin.c (darwin_override_options): Catch unset
2973 dwarf_strict and override to 1.
2974
2975 2009-09-24 Jeff Law <law@redhat.com>
2976
2977 * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
2978
2979 2009-09-24 Richard Guenther <rguenther@suse.de>
2980
2981 PR tree-optimization/36143
2982 PR tree-optimization/38747
2983 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
2984 create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
2985
2986 2009-09-24 Jakub Jelinek <jakub@redhat.com>
2987
2988 PR bootstrap/41457
2989 * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
2990 return false instead of gcc_unreachable (). For CONST return the
2991 value returned by recursive call instead of always returning true.
2992 (tree_add_const_value_attribute): Return the value returned by
2993 add_const_value_attribute instead of always returning true if rtl
2994 is non-NULL.
2995
2996 2009-09-23 Justin Seyster <jrseys@gmail.com>
2997
2998 * Makefile.in (PLUGIN_HEADERS): Include real.h.
2999
3000 2009-09-24 Jakub Jelinek <jakub@redhat.com>
3001
3002 * cgraphunit.c (cgraph_lower_function): Revert last change.
3003 * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
3004 instead of DECL_NO_STATIC_CHAIN.
3005 * tree-cfg.c (verify_gimple_call): Likewise.
3006 * tree-nested.c (get_chain_decl, get_chain_field,
3007 convert_tramp_reference_op, convert_gimple_call): Likewise.
3008 (convert_all_function_calls): Likewise. Always set or clear
3009 DECL_STATIC_CHAIN initially, for !n->outer clear it.
3010 (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
3011 * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
3012 if nested.
3013 * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
3014 DECL_NO_STATIC_CHAIN.
3015 * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
3016 instead of DECL_NO_STATIC_CHAIN.
3017 (ix86_function_regparm, find_drap_reg): Likewise. Don't test
3018 decl_function_context.
3019 * varasm.c (initializer_constant_valid_p): Likewise.
3020 * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
3021 (DECL_STATIC_CHAIN): ... this.
3022 * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
3023 instead of DECL_NO_STATIC_CHAIN.
3024
3025 2009-09-23 Basile Starynkevitch <basile@starynkevitch.net>
3026 Rafael Avila de Espindola <espindola@google.com>
3027
3028 * gengtype.c (nb_plugin_files): Make it unsigned to match
3029 num_gt_files. Adjust other variables to avoid warnings.
3030 (main): Allocate an all zero lang_bitmap before each plugin file name
3031 to match regular file names.
3032
3033 2009-09-23 Richard Henderson <rth@redhat.com>
3034
3035 * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
3036 (TARGET_STATIC_CHAIN): Mention that this hook must be used for
3037 static chain passed in memory.
3038 * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
3039 * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
3040 STATIC_CHAIN_INCOMING. Issue a sorry if there's no
3041 STATIC_CHAIN_REGNUM defined.
3042
3043 * config/picochip/picochip-protos.h: s/class/klass/.
3044 * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
3045 (picochip_static_chain): New.
3046 * config/picochip/picochip.h (STATIC_CHAIN): Remove.
3047 (STATIC_CHAIN_INCOMING): Remove.
3048
3049 * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
3050 (xtensa_static_chain): New.
3051 * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
3052 (STATIC_CHAIN_INCOMING): Remove.
3053
3054 2009-09-23 Anatoly Sokolov <aesok@post.ru>
3055
3056 * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
3057 * config/pa/pa-protos.h (function_value): Remove.
3058 * config/pa/pa.c (pa_function_value): Rename from function_value.
3059 Make static, add 'outgoing' argument.
3060 (TARGET_FUNCTION_VALUE): Define.
3061
3062 2009-09-23 Anatoly Sokolov <aesok@post.ru>
3063
3064 * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
3065 instead of cfun->machine->is_leaf.
3066 * config/avr/avr.h (machine_function): Remove is_leaf field.
3067
3068 2009-09-23 Jakub Jelinek <jakub@redhat.com>
3069
3070 PR debug/41439
3071 * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
3072 DW_OP_piece after DW_OP_stack_value, adjust size calculations
3073 for it, when DW_OP_stack_value and DW_OP_implicit_value has
3074 the same size, prefer DW_OP_stack_value.
3075 (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
3076 loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
3077
3078 2009-09-23 Alexandre Oliva <aoliva@redhat.com>
3079
3080 PR debug/41353
3081 * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
3082
3083 2009-09-23 Alexandre Oliva <aoliva@redhat.com>
3084
3085 PR debug/41248
3086 * cfgexpand.c (convert_debug_memory_address): New.
3087 (expand_debug_expr): Convert base address and offset to the same
3088 mode. Use it to convert addresses to other modes. Accept
3089 ptr_mode addresses.
3090
3091 2009-09-23 Richard Guenther <rguenther@suse.de>
3092
3093 * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
3094 produced for bigendian targets with promoted subregs.
3095
3096 2009-09-23 Richard Guenther <rguenther@suse.de>
3097
3098 * value-prof.c (gimple_ic): Purge old EH edges only after building
3099 the new ones.
3100
3101 2009-09-23 Nick Clifton <nickc@redhat.com>
3102
3103 * config/arc/arc.c (arc_trampoline_init): Fix typo.
3104
3105 2009-09-23 Jakub Jelinek <jakub@redhat.com>
3106
3107 PR bootstrap/41405
3108 * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
3109
3110 PR bootstrap/41436
3111 * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
3112 on non-nested functions.
3113
3114 2009-09-23 Jakub Jelinek <jakub@redhat.com>
3115 Jan Hubicka <jh@suse.cz>
3116
3117 * dwarf2out.c (loc_list_plus_const): Only define if
3118 DWARF2_DEBUGGING_INFO.
3119 (address_of_int_loc_descriptor): Likewise.
3120
3121 PR debug/41411
3122 * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
3123
3124 2009-09-23 Uros Bizjak <ubizjak@gmail.com>
3125
3126 PR c/39779
3127 * c-typeck.c (build_binary_op) <short_shift>: Check that integer
3128 constant is more than zero.
3129
3130 2009-09-23 Alan Modra <amodra@bigpond.net.au>
3131
3132 PR target/40473
3133 * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
3134 call final to emit non-scheduled prologue, instead insert at entry.
3135
3136 2009-09-22 Loren J. Rittle <ljrittle@acm.org>
3137 Joseph S. Myers <joseph@codesourcery.com>
3138
3139 * doc/install.texi (*-*-freebsd*): Add proper format codes.
3140
3141 2009-09-22 Basile Starynkevitch <basile@starynkevitch.net>
3142 Rafael Avila de Espindola <espindola@google.com>
3143
3144 * gengtype.c (is_file_equal): New function.
3145 (close_output_files): Use is_file_equal. Free of->buf.
3146
3147 2009-09-22 Basile Starynkevitch <basile@starynkevitch.net>
3148 Rafael Avila de Espindola <espindola@google.com>
3149
3150 * gengtype.c (write_types, write_local): Add the output_header
3151 argument. Update all callers.
3152
3153 2009-09-22 Dodji Seketeli <dodji@redhat.com>
3154
3155 * dwarf2out.c (template_parameter_pack_die,
3156 gen_formal_parameter_pack_die ): New functions.
3157 (make_ith_pack_parameter_name): Remove this function.
3158 (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
3159 DW_TAG_formal_parameter_pack.
3160 (gen_generic_params_dies): Represent each template parameter pack
3161 by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
3162 represented by usual DW_TAG_template_*_parameter DIEs that are
3163 children of the DW_TAG_template_parameter_pack element DIE.
3164 (generic_parameter_die): This doesn't deal with parameter pack
3165 names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
3166 of parameter pack DIEs.
3167 (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
3168 in certain cases, e.g. for pack elements.
3169 (gen_formal_types_die, gen_decl_die): Adjust usage of
3170 gen_formal_parameter_die.
3171 (gen_subprogram_die): Represent each function parameter pack by a
3172 DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
3173 represented by usual DW_TAG_formal_parameter DIEs that are children
3174 of the DW_TAG_formal_parameter_pack DIE. Remove references to
3175 ____builtin_va_alist decls as no part of the compiler uses those
3176 anymore.
3177 * langhooks.h (struct lang_hooks_for_decls): Add
3178 function_parm_expanded_from_pack_p, get_generic_function_decl
3179 and function_parameter_pack_p hooks. Fix comment for
3180 get_innermost_generic_parms hook.
3181 * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
3182 LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
3183 macros and use them to initialize lang_hook.
3184
3185 2009-09-22 Richard Henderson <rth@redhat.com>
3186
3187 * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
3188 (TRAMPOLINE_ADJUST_ADDRESS): Poison.
3189 * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
3190 on TRAMPOLINE_TEMPLATE.
3191 (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
3192 TRAMPOLINE_ADJUST_ADDRESS.
3193 * targhooks.c (default_asm_trampoline_template): Remove.
3194 (default_trampoline_adjust_address): Remove.
3195 (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
3196 * targhooks.h: Update decls.
3197
3198 2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
3199
3200 * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
3201 * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
3202 * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
3203
3204 2009-09-22 Alexandre Oliva <aoliva@redhat.com>
3205
3206 PR debug/41295
3207 * reload1.c (reload): Reset debug insns with pseudos without
3208 equivalences.
3209
3210 2009-09-22 Janis Johnson <janis187@us.ibm.com>
3211
3212 * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
3213 unconditional true for decimal float modes.
3214 * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
3215 * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
3216
3217 2009-09-22 Loren J. Rittle <ljrittle@acm.org>
3218
3219 * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
3220 Enable a new case for __FreeBSD__ >= 7.
3221 * crtstuff.c: Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
3222 * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
3223 * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
3224 and USE_LD_AS_NEEDED.
3225
3226 * doc/install.texi (*-*-freebsd*): Update target information.
3227
3228 2009-09-22 Richard Guenther <rguenther@suse.de>
3229
3230 PR middle-end/41395
3231 * tree-dfa.c (get_ref_base_and_extent): Handle trailing
3232 arrays really properly.
3233
3234 2009-09-22 Richard Henderson <rth@redhat.com>
3235
3236 PR target/41246
3237 * target.h (struct gcc_target): Add asm_out.trampoline_template,
3238 calls.static_chain, calls.trampoline_init,
3239 calls.trampoline_adjust_address.
3240 * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3241 (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3242 (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3243 * builtins.c (expand_builtin_setjmp_receiver): Use
3244 targetm.calls.static_chain; only clobber registers.
3245 (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
3246 set up memory attributes properly for the trampoline block.
3247 (expand_builtin_adjust_trampoline): Use
3248 targetm.calls.trampoline_adjust_address.
3249 * calls.c (prepare_call_address): Add fndecl argument. Use
3250 targetm.calls.static_chain.
3251 * df-scan.c (df_need_static_chain_reg): Remove.
3252 (df_get_entry_block_def_set): Use targetm.calls.static_chain;
3253 consolodate static chain handling.
3254 * doc/tm.texi: Document new hooks.
3255 * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
3256 (init_emit_regs): Don't initialize them.
3257 * expr.h (prepare_call_address): Update decl.
3258 * final.c (profile_function): Use targetm.calls.static_chain.
3259 * function.c (expand_function_start): Likewise.
3260 * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
3261 * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
3262 only clobber registers.
3263 * targhooks.c (default_static_chain): New.
3264 (default_asm_trampoline_template, default_trampoline_init): New.
3265 (default_trampoline_adjust_address): New.
3266 * targhooks.h: Declare them.
3267 * varasm.c (assemble_trampoline_template): Use
3268 targetm.asm_out.trampoline_template. Make the memory block const
3269 and set its size.
3270
3271 * config/alpha/alpha.c (alpha_trampoline_init): Rename from
3272 alpha_initialize_trampoline. Make static. Merge VMS parameter
3273 differences into the TARGET_ABI_OPEN_VMS code block.
3274 (TARGET_TRAMPOLINE_INIT): New.
3275 * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
3276 (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
3277 * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
3278 (INITIALIZE_TRAMPOLINE): Remove.
3279
3280 * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
3281 (TRAMPOLINE_TEMPLATE): Merge with ...
3282 (INITIALIZE_TRAMPOLINE): ... this and move ...
3283 * config/arc/arc.c (arc_trampoline_init): ... here.
3284 (TARGET_TRAMPOLINE_INIT): New.
3285
3286 * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3287 (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3288 (arm_asm_trampoline_template): New.
3289 (arm_trampoline_init, arm_trampoline_adjust_address): New.
3290 * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
3291 THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
3292 code to arm_asm_trampoline_template.
3293 (TRAMPOLINE_ADJUST_ADDRESS): Move code to
3294 arm_trampoline_adjust_address.
3295 (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
3296 adjust for target hook parameters.
3297
3298 * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
3299 Remove.
3300
3301 * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
3302 * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
3303 (bfin_trampoline_init): Rename from initialize_trampoline;
3304 make static; update for target hook parameters.
3305 (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3306 * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
3307 bfin_asm_trampoline_template.
3308 (INITIALIZE_TRAMPOLINE): Remove.
3309
3310 * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3311 TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
3312 cris_trampoline_init): New.
3313 * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
3314 cris_asm_trampoline_template.
3315 (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
3316 adjust for target hook parameters.
3317
3318 * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
3319
3320 * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3321 TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
3322 fr30_trampoline_init): New.
3323 * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
3324 fr30_asm_trampoline_template.
3325 (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
3326 adjust for target hook parameters.
3327
3328 * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
3329 (frv_trampoline_init): Rename from frv_initialize_trampoline;
3330 make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
3331 * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
3332 * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
3333
3334 * config/h8300/h8300.c (h8300_trampoline_init): New.
3335 (TARGET_TRAMPOLINE_INIT): New.
3336 * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
3337 to h8300_trampoline_init and adjust for hook parameters.
3338
3339 * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
3340 * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
3341 (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
3342 make static; adjust for hook parameters.
3343 * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
3344
3345 * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3346 (TARGET_TRAMPOLINE_INIT): New.
3347 (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
3348 * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
3349 iq2000_asm_trampoline_template.
3350 (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
3351 (TRAMPOLINE_CODE_SIZE): New.
3352 (TRAMPOLINE_SIZE): Use it.
3353 (TRAMPOLINE_ALIGNMENT): Follow Pmode.
3354
3355 * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
3356 * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
3357 (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
3358 adjust for hook parameters.
3359 * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
3360
3361 * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
3362 (m32r_trampoline_init): New.
3363 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
3364 m32r_trampoline_init.
3365
3366 * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
3367 (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
3368 make static; update for hook parameters.
3369 * config/m68hc11/m68hc11-protos.h: Update.
3370 * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
3371
3372 * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3373 (TARGET_TRAMPOLINE_INIT): New.
3374 (mcore_function_value): Fix typo.
3375 (mcore_asm_trampoline_template, mcore_trampoline_init): New.
3376 * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
3377 to mcore_asm_trampoline_template.
3378 (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
3379
3380 * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
3381 * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
3382 (mep_trampoline_init): Rename from mep_init_trampoline; make static;
3383 update for hook parameters.
3384 * config/mep/mep-protos.h (mep_init_trampoline): Remove.
3385
3386 * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3387 mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3388 mips_trampoline_init): New.
3389 * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
3390 mips_asm_trampoline_template.
3391 (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
3392 update for hook parameters.
3393
3394 * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3395 (TARGET_TRAMPOLINE_INIT): New.
3396 (mmix_trampoline_size): Remove.
3397 (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
3398 make static. Remove out-of-date tetra vs octa comment.
3399 (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
3400 make static; update for hook parameters.
3401 * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
3402 (INITIALIZE_TRAMPOLINE): Remove.
3403 (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
3404 (TRAMPOLINE_ALIGNMENT): New.
3405 * gcc/config/mmix/mmix-protos.h: Update.
3406
3407 * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3408 mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3409 mn10300_trampoline_init): New.
3410 * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
3411 mn10300_asm_trampoline_template.
3412 (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
3413
3414 * config/moxie/moxie.c (moxie_static_chain,
3415 moxie_asm_trampoline_template, moxie_trampoline_init,
3416 TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
3417 TARGET_TRAMPOLINE_INIT): New.
3418 * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
3419 moxie_trampoline_init.
3420 (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
3421 (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
3422
3423 * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
3424 pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
3425 pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
3426 pa_trampoline_adjust_address): New.
3427 * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
3428 pa_asm_trampoline_template.
3429 (TRAMPOLINE_ALIGNMENT): New.
3430 (TRAMPOLINE_CODE_SIZE): Move to pa.c.
3431 (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
3432 adjust for hook parameters.
3433 (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
3434
3435 * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
3436 (TARGET_TRAMPOLINE_INIT): New.
3437 * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
3438 (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
3439
3440 * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
3441
3442 * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
3443 * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
3444 (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
3445 make static; adjust parameters for the hook.
3446 * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
3447
3448 * config/s390/s390.c (s390_asm_trampoline_template): Rename from
3449 s390_trampoline_template; make static.
3450 (s390_trampoline_init): Rename from s390_initialize_trampoline;
3451 make static; adjust for target hook.
3452 (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
3453 * config/s390/s390-protos.h: Remove trampoline decls.
3454 * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
3455 (TRAMPOLINE_TEMPLATE): Remove.
3456 (TRAMPOLINE_ALIGNMENT): New.
3457
3458 * config/score/score-protos.h (score_initialize_trampoline): Remove.
3459 * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3460 (TARGET_TRAMPOLINE_INIT): New.
3461 (score_asm_trampoline_template): New.
3462 (score_trampoline_init): Rename from score_initialize_trampoline;
3463 make static; adjust for hook parameters.
3464 * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
3465 score[37]_asm_trampoline_template.
3466 (INITIALIZE_TRAMPOLINE): Remove.
3467 * config/score/score3.c (score3_asm_trampoline_template): New.
3468 (score3_trampoline_init): Rename from score3_initialize_trampoline;
3469 adjust for target hook.
3470 * config/score/score7.c (score7_asm_trampoline_template): New.
3471 (score7_trampoline_init): Rename from score7_initialize_trampoline;
3472 adjust for target hook.
3473 * config/score/score3.h, config/score/score7.h: Update.
3474
3475 * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
3476 * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
3477 (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
3478 (sh_trampoline_init): Rename from sh_initialize_trampoline;
3479 make static; adjust for target hook parameters.
3480 (sh_trampoline_adjust_address): New.
3481 * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
3482 (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
3483
3484 * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
3485 (sparc32_initialize_trampoline): Rename from
3486 sparc_initialize_trampoline; make static; replace tramp parameter
3487 with m_tramp and update memory accesses.
3488 (sparc64_initialize_trampoline): Similarly.
3489 (sparc_trampoline_init): New.
3490 * config/sparc/sparc-protos.h: Remove trampoline decls.
3491 * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
3492 * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
3493
3494 * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
3495 (array_to_constant): Make ARR parameter const.
3496 (spu_trampoline_init): Rename from spu_initialize_trampoline;
3497 make static; update for hook parameters.
3498 * config/spu/spu-protos.h: Update decls.
3499 * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
3500
3501 * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
3502 from xstormy16_initialize_trampoline; make static; update for
3503 hook parameters.
3504 (TARGET_TRAMPOLINE_INIT): New.
3505 * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
3506
3507 * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3508 (TARGET_TRAMPOLINE_INIT): New.
3509 (v850_can_eliminate): Make static.
3510 (v850_asm_trampoline_template, v850_trampoline_init): New.
3511 * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
3512 v850_asm_trampoline_template.
3513 (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
3514 and adjust for target hook parameters.
3515
3516 * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3517 (TARGET_TRAMPOLINE_INIT): New.
3518 (vax_asm_trampoline_template, vax_trampoline_init): New.
3519 * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
3520 vax_asm_trampoline_template.
3521 (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
3522
3523 * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
3524 (TARGET_TRAMPOLINE_INIT): New.
3525 (xtensa_asm_trampoline_template): Rename from
3526 xtensa_trampoline_template; make static.
3527 (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
3528 make static; update for hook parameters.
3529 * config/xtensa/xtensa-protos.h: Remove trampoline decls.
3530 * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
3531 (INITIALIZE_TRAMPOLINE): Remove.
3532
3533 * config/i386/i386.c (ix86_function_regparm): Do not issue an
3534 error for nested functions with regparm=3.
3535 (ix86_compute_frame_layout): Adjust frame pointer offset for
3536 ix86_static_chain_on_stack.
3537 (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
3538 (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
3539 don't reset to UNITS_PER_WORD.
3540 (ix86_emit_leave): Adjust ix86_cfa_state.
3541 (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
3542 (ix86_static_chain): New.
3543 (ix86_trampoline_init): Rename from x86_initialize_trampoline;
3544 make static; update for target hook parameters; use ix86_static_chain.
3545 (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
3546 * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
3547 (INITIALIZE_TRAMPOLINE): Remove.
3548 (TRAMPOLINE_SIZE): Use 24 for 64-bit.
3549 (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
3550 to the end. Add static_chain_on_stack.
3551 (ix86_static_chain_on_stack): New.
3552
3553 * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
3554 (m68k_output_mi_thunk): Don't use static_chain_rtx.
3555 (m68k_trampoline_init): New.
3556 * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
3557 m68k_trampoline_init and adjust for hook parameters.
3558 * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
3559 (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
3560
3561 2009-09-22 Jakub Jelinek <jakub@redhat.com>
3562
3563 * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
3564 for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
3565
3566 * reload1.c (reload): Call wrap_constant when substituting
3567 reg for equiv inside of DEBUG_INSNs.
3568
3569 PR bootstrap/41405
3570 * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
3571 add_call_src_coords_attributes, add_high_low_attributes,
3572 gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
3573 gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
3574 dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
3575 when -gdwarf-2 -gstrict-dwarf.
3576 (loc_list_from_tree): Likewise. Avoid using DWARF4 additions when
3577 -gdwarf-[23] -gstrict-dwarf.
3578 (address_of_int_loc_descriptor, loc_descriptor,
3579 loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
3580 DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
3581 * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
3582
3583 2009-09-22 Richard Guenther <rguenther@suse.de>
3584
3585 PR tree-optimization/41428
3586 * tree-ssa-ccp.c (ccp_fold_stmt): New function.
3587 (ccp_finalize): Pass it to substitute_and_fold.
3588
3589 2009-09-22 Richard Guenther <rguenther@suse.de>
3590
3591 * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
3592 (substitute_and_fold): Adjust prototype.
3593 * tree-vrp.c (vrp_evaluate_conditional): Make static.
3594 (simplify_stmt_using_ranges): Likewise.
3595 (fold_predicate_in): Move here from tree-ssa-propagate.c.
3596 (vrp_fold_stmt): New function.
3597 (vrp_finalize): Pass it to substitute_and_fold.
3598 * tree-flow.h (vrp_evaluate_conditional): Remove.
3599 (simplify_stmt_using_ranges): Likewise.
3600 * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
3601 * tree-ssa-copy.c (fini_copy_prop): Likewise.
3602 * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
3603 member.
3604 (fold_predicate_in): Move to tree-vrp.c.
3605 (substitute_and_fold): Use the callback instead of calling into
3606 tree-vrp.c functions directly.
3607
3608 2009-09-22 Jakub Jelinek <jakub@redhat.com>
3609
3610 * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
3611 comparison warning on rs6000.
3612
3613 PR middle-end/41429
3614 * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
3615 GIMPLE_EH_MUST_NOT_THROW cleanup.
3616 (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
3617
3618 2009-09-22 Jack Howarth <howarth@bromo.med.uc.edu>
3619
3620 PR middle-end/41260
3621 * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
3622 * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
3623 LIB_SPEC for darwin10 and later since it always uses the unwinder in
3624 libSystem which is derived from the gcc 4.2.1 unwinder.
3625
3626 2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
3627
3628 PR middle-end/41357
3629 * varasm.c (default_encode_section_info): Copy TLS model into
3630 sym_ref flags regardless of backend support for TLS, for all
3631 model types except TLS_MODEL_EMULATED.
3632
3633 2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
3634
3635 PR bootstrap/41404
3636 * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
3637 we can handle it correctly.
3638
3639 2009-09-21 Gerald Pfeifer <gerald@pfeifer.com>
3640
3641 * doc/install.texi (os2): Remove section.
3642
3643 2009-09-21 Gerald Pfeifer <gerald@pfeifer.com>
3644
3645 * doc/standards.texi (Objective-C): Adjust two URLs.
3646
3647 2009-09-21 Giuseppe Scrivano <gscrivano@gnu.org>
3648
3649 * tree-tailcall.c (process_assignment): Don't check if a
3650 multiplication or an addition are already present.
3651 (find_tail_calls): Combine multiple additions and multiplications.
3652 (adjust_accumulator_values): Emit accumulators.
3653
3654 2009-09-21 Kai Tietz <kai.tietz@onevision.com>
3655
3656 * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
3657 xmm register restore.
3658
3659 2009-09-21 Jan Hubicka <jh@suse.cz>
3660
3661 * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
3662 (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
3663 restore at the end.
3664
3665 2009-09-21 Eric Botcazou <ebotcazou@adacore.com>
3666
3667 * stor-layout.c (layout_type): Remove obsolete code.
3668
3669 2009-09-20 H.J. Lu <hongjiu.lu@intel.com>
3670
3671 PR middle-end/41395
3672 * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
3673
3674 2009-09-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3675
3676 PR middle-end/30789
3677 * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
3678 (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
3679 (fold_builtin_2, do_mpc_arg1): Update accordingly.
3680 * fold-const.c (const_binop): Likewise.
3681 * real.h (do_mpc_arg2): Update prototype.
3682
3683 2009-09-20 Jan Hubicka <jh@suse.cz>
3684
3685 * dwarf2out.c (add_const_value_attribute): Return true if successful.
3686 (add_location_or_const_value_attribute): Rewrite using
3687 loc_list_from_tree.
3688 (tree_add_const_value_attribute): Return true if successful.
3689 (tree_add_const_value_attribute_for_decl): Likewise.
3690
3691 * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
3692 (loc_descriptor): ... here;
3693 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3694 (cst_pool_loc_descr): Break out from ...; do not reffer constant
3695 pool items that was not marked for output.
3696 (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
3697 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3698 (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
3699 handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
3700 IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
3701 CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
3702 DW_OP_stack_value to get address of items that are not available
3703 as addresses.
3704 (dw_loc_list): Handle single element lists correctly.
3705
3706 2009-09-20 Kai Tietz <kai.tietz@onevision.com>
3707 Pascal Obry <obry@adacore.com>
3708
3709 * unwind-dw2-fde.c (classify_object_over_fdes):
3710 Cast the constant 1 to _Unwind_Ptr.
3711 (add_fdes): Likewise.
3712 (linear_search_fdes): Likewise.
3713
3714 2009-09-20 Eric Botcazou <ebotcazou@adacore.com>
3715
3716 * stor-layout.c (set_sizetype): Avoid useless type copy.
3717
3718 2009-09-20 Richard Sandiford <rdsandiford@googlemail.com>
3719
3720 * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
3721 feature check.
3722 (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
3723 * configure, config.in: Regenerate.
3724 * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
3725 DW_EH_PE_absptr.
3726 * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
3727 (ASM_PREFERRED_EH_DATA_FORMAT): Define. Use MIPS_EH_INDIRECT
3728 for global data if the output could be used in a shared library.
3729 * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
3730 to 0 if TARGET_WRITABLE_EH_FRAME.
3731
3732 2009-09-20 Paolo Bonzini <bonzini@gnu.org>
3733
3734 PR rtl-optimization/39886
3735 * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
3736 just when insn is equal to BB_END (bb).
3737
3738 2009-09-19 Adam Nemet <anemet@caviumnetworks.com>
3739
3740 * config/mips/mips.opt (mrelax-pic-calls): New option.
3741 * config/mips/mips.c (mips_strip_unspec_address): Move it up in
3742 the file.
3743 (mips_unspec_call): Change "unspec_call" expander into this.
3744 (mips_strip_unspec_call): New function.
3745 (mips_got_load): Call mips_unspec_call instead of
3746 gen_unspec_call<mode>.
3747 (mips16_build_call_stub): Fix comment for fp_code. Adjust call to
3748 MIPS_CALL.
3749 (mips_cfg_in_reorg): New function.
3750 (mips16_lay_out_constants): Use it to decide whether to call
3751 CFG-aware insn splitting.
3752 (r10k_insert_cache_barriers): Move CFG set-up code from here to
3753 mips_reorg. Move DF set-up code from here ...
3754 (mips_df_reorg): ... to here. Call r10k_insert_cache_barriers
3755 from here.
3756 (mips_reorg): Call mips_df_reorg instead of
3757 r10k_insert_cache_barriers. Move CFG set-up code here from
3758 r10k_insert_cache_barriers.
3759 (mips_call_expr_from_insn): New function.
3760 (mips_pic_call_symbol_from_set): Likewise.
3761 (mips_find_pic_call_symbol): Likewise.
3762 (mips_annotate_pic_call_expr): Likewise.
3763 (mips_get_pic_call_symbol): Likewise.
3764 (mips_annotate_pic_calls): Likewise.
3765 (mips_override_options): Disable -mrelax-pic-calls unless PIC
3766 calls are used.
3767 (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
3768 * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
3769 * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
3770 directive.
3771 * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
3772 (unspec_call<mode>): Remove it.
3773 (sibcall_internal, sibcall_value_internal,
3774 sibcall_value_multiple_internal, call_internal, call_split,
3775 call_value_internal, call_value_split,
3776 call_value_multiple_internal, call_value_multiple_split): Pass
3777 SIZE_OPNO to MIPS_CALL.
3778 (call_internal_direct, call_direct_split,
3779 call_value_internal_direct, call_value_direct_split): Pass -1 as
3780 SIZE_OPNO to MIPS_CALL.
3781 * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
3782 * configure: Regenerate.
3783 * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
3784 and -mno-relax-pic-calls.
3785 (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
3786
3787 2009-09-19 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3788
3789 PR bootstrap/35619
3790 * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
3791 in the directory this rule is called from, rather than the
3792 toplevel 'gcc' directory, to fix in-tree build.
3793
3794 2009-09-19 Chris Demetriou <cgd@google.com>
3795
3796 PR preprocessor/28435:
3797 * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
3798 to cpplib that the preprocessor output is needed.
3799
3800 2009-09-19 Jakub Jelinek <jakub@redhat.com>
3801
3802 * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
3803 *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
3804 *return_and_restore_fpregs_<mode>,
3805 *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
3806
3807 PR bootstrap/41397
3808 * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
3809 instead of assuming it has always a REG inside of it.
3810
3811 2009-09-18 Gerald Pfeifer <gerald@pfeifer.com>
3812
3813 * config/freebsd.h: Update comment on types.
3814 (WINT_TYPE): Define.
3815
3816 2009-09-18 Jason Merrill <jason@redhat.com>
3817
3818 * c.opt: Add -fno-deduce-init-list.
3819
3820 2009-09-18 Neil Vachharajani <nvachhar@google.com>
3821
3822 * value-prof.c (interesting_stringop_to_profile_p): Added output
3823 argument to indicate which parameter is the size parameter.
3824 * value-prof.c (gimple_stringop_fixed_value): Use
3825 INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
3826 * value-prof.c (gimple_stringops_transform): Update call sites to
3827 INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
3828
3829 2009-09-18 Uros Bizjak <ubizjak@gmail.com>
3830
3831 PR target/38288
3832 From David Binderman <dcb314@hotmail.com>:
3833 * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
3834 local variable f. Remove stale comments.
3835 (ix86_compute_frame_layout): Remove useless local variable total_size.
3836 Remove #if 0'd code.
3837 (legitimate_address_p): Remove useless local variables
3838 reason_rtx and reason.
3839 (ix86_split_copysign_const): Remove useless local variable op1.
3840 (scale_counter): Remove useless local variable piece_size_mask.
3841
3842 2009-09-18 Jakub Jelinek <jakub@redhat.com>
3843
3844 * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
3845 output decl.
3846
3847 2009-09-17 Michael Haubenwallner <michael.haubenwallner@salomon.at>
3848
3849 PR target/40913
3850 * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
3851
3852 2009-09-17 Jakub Jelinek <jakub@redhat.com>
3853
3854 * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
3855 TYPE_STUB_DECL.
3856
3857 2009-09-17 Alexandre Oliva <aoliva@redhat.com>
3858
3859 * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
3860 DW_OP_implicit_value even without dwarf_version 4.
3861
3862 2009-09-17 Jan Hubicka <jh@suse.cz>
3863
3864 * dwarf2out.c: Include tree-pass.h and gimple.h.
3865 (loc_list_plus_const): New function.
3866 (loc_descriptor_from_tree_1): Rename to ...
3867 (loc_descriptor_from_tree): ... remove original.
3868 (loc_list_from_tree): New function.
3869 (add_AT_location_description): Accept location list.
3870 (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
3871 (concatn_mem_loc_descriptor): Remove.
3872 (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
3873 returning NULL.
3874 (secname_for_decl): Move up.
3875 (hidden_reference_p): New function; break out from ...
3876 (loc_by_refernece): ... here; move up.
3877 (dw_loc_list): New function.
3878 (single_element_loc_list): New function.
3879 (single_element_loc_list_p): New function.
3880 (add_loc_descr_to_each): New function.
3881 (add_loc_list): New function.
3882 (loc_descr_from_tree): Make wraper of loc_list_from_tree.
3883 (loc_list_from_tree): Reroganized from loc_descr_from_tree;
3884 add diagnostics why expansion failed.
3885 (add_location_or_const_value_attribute): Support location lists.
3886 (add_bound_info): Likewise.
3887 (descr_info_loc): Update call of loc_descriptor_from_tree.
3888 (gen_variable_die): Work on location lists.
3889 * final.c (pass_final): Add dump file.
3890 * Makefile.in (dwarf2out.o): Add new dependencies.
3891
3892 2009-09-17 Janis Johnson <janis187@us.ibm.com>
3893
3894 PR c/41049
3895 * real.c decimal_from_integer, decimal_integer_string): New.
3896 (real_from_integer): Use them as special case for decimal float.
3897 * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
3898 (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
3899 Do not append zero after the decimal point in string to convert.
3900
3901 2009-09-17 Alexander Monakov <amonakov@ispras.ru>
3902
3903 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
3904 for ARRAY_REFs. Use array_ref_{low,up}_bound to determine bounds.
3905
3906 2009-09-17 Martin Jambor <mjambor@suse.cz>
3907
3908 * common.opt (fipa-sra): New switch.
3909 * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
3910 * timevar.def (TV_IPA_SRA): New timevar.
3911 * params.def (ipa-sra-ptr-growth-factor): New parameter.
3912 * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
3913 * tree-sra.c: Include cgraph.c.
3914 (enum sra_mode): Added SRA_MODE_EARLY_IPA.
3915 (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
3916 and grp_not_necessarilly_dereferenced.
3917 (func_param_count): New variable.
3918 (encountered_apply_args): New variable.
3919 (bb_dereferences): New variable.
3920 (final_bbs): New variable.
3921 (no_accesses_representant): New variable.
3922 (no_accesses_p): New function.
3923 (dump_access): Dump the new fields.
3924 (sra_initialize): Set encountered_apply_args to false.
3925 (get_ssa_base_param): New function.
3926 (mark_parm_dereference): New function.
3927 (create_access): Caring for INIDRECT_REFs and different handling of
3928 varialble length accesses in early IPA SRA. Store the stmt - a new
3929 parameter - to the new access.
3930 (build_access_from_expr_1): New parameter stmt, passed to
3931 create_access. Handle INDIRECT_REFs.
3932 (build_access_from_expr): Pass the current statement to
3933 build_access_from_expr_1.
3934 (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
3935 passes.
3936 (build_accesses_from_assign): Pass the current statement to
3937 build_access_from_expr_1. Do not create assign links in IPA-SRA.
3938 (scan_function): Call handle_ssa_defs on phi nodes. Set bits in
3939 final_bbs when necessary. Check for calls to __builtin_apply_args.
3940 Fixup EH info if anythng was changed.
3941 (is_unused_scalar_param): New function.
3942 (ptr_parm_has_direct_uses): New function.
3943 (find_param_candidates): New function.
3944 (mark_maybe_modified): New function.
3945 (analyze_modified_params): New function.
3946 (propagate_dereference_distances): New function.
3947 (dump_dereferences_table): New function.
3948 (analyze_caller_dereference_legality): New function.
3949 (unmodified_by_ref_scalar_representative): New function.
3950 (splice_param_accesses): New function.
3951 (decide_one_param_reduction): New function.
3952 (enum ipa_splicing_result): New type.
3953 (splice_all_param_accesses): New function.
3954 (get_param_index): New function.
3955 (turn_representatives_into_adjustments): New function.
3956 (analyze_all_param_acesses): New function.
3957 (get_replaced_param_substitute): New function.
3958 (get_adjustment_for_base): New function.
3959 (replace_removed_params_ssa_names): New function.
3960 (sra_ipa_reset_debug_stmts): New function.
3961 (sra_ipa_modify_expr): New function.
3962 (sra_ipa_modify_assign): New function.
3963 (convert_callers): New function.
3964 (modify_function): New function.
3965 (ipa_sra_preliminary_function_checks): New function.
3966 (ipa_early_sra): New function.
3967 (ipa_early_sra_gate): New function.
3968 (pass_early_ipa_sra): New variable.
3969 * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
3970
3971 2009-09-17 Michael Matz <matz@suse.de>
3972
3973 PR middle-end/41347
3974 * tree.c (build_type_attribute_qual_variant): Export.
3975 * tree.h (build_type_attribute_qual_variant): Declare.
3976 * tree-inline.c (remap_type_1): Use it to build variants with
3977 the original qualifiers and attributes.
3978
3979 2009-09-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3980
3981 * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
3982 without a fallthrough edge.
3983
3984 2009-09-16 DJ Delorie <dj@redhat.com>
3985
3986 * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
3987 chip and ignore the "fast_interrupt" attribute if so.
3988
3989 2009-09-16 Richard Henderson <rth@redhat.com>
3990
3991 PR middle-end/41360
3992 * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
3993 barrier fix.
3994
3995 2009-09-16 Richard Henderson <rth@redhat.com>
3996
3997 PR target/41246
3998 * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
3999 is set only if DECL_NO_STATIC_CHAIN is unset.
4000 * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
4001 (FOR_EACH_NEST_INFO): New.
4002 (walk_all_functions): Use it.
4003 (finalize_nesting_tree): Likewise.
4004 (unnest_nesting_tree): Likewise.
4005 (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
4006 (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
4007 (convert_gimple_call): Early out if gimple_call_chain already set.
4008 (convert_all_function_calls): Iterate until no new functions
4009 require a static chain.
4010 (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
4011 when building a trampoline. Use dump_function_to_file instead
4012 of dump_function.
4013 (lower_nested_functions): Open dump_file. Validate that decls
4014 that have DECL_NO_STATIC_CHAIN from the front end don't have that
4015 bit reset by this pass.
4016
4017 2009-09-16 Michael Matz <matz@suse.de>
4018
4019 PR fortran/41212
4020 * tree.h (struct tree_decl_common): Add decl_restricted_flag,
4021 shorten decl_common_unused.
4022 (DECL_RESTRICTED_P): New accessor.
4023 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
4024 to disambiguate marked decls and restrict pointers.
4025
4026 2009-09-16 Richard Henderson <rth@redhat.com>
4027
4028 PR middle-end/41360
4029 * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
4030
4031 2009-09-16 Jakub Jelinek <jakub@redhat.com>
4032
4033 * integrate.c (set_block_abstract_flags): Call
4034 set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
4035
4036 2009-09-16 Richard Guenther <rguenther@suse.de>
4037
4038 PR middle-end/34011
4039 * tree-flow-inline.h (may_be_aliased): Compute readonly variables
4040 as non-aliased.
4041
4042 2009-09-16 DJ Delorie <dj@redhat.com>
4043 Kaz Kojima <kkojima@gcc.gnu.org>
4044
4045 * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
4046 (sh_expand_prologue): Update calls to output_stack_adjust.
4047 (sh_expand_epilogue): Likewise.
4048
4049 2009-09-15 Adam Nemet <anemet@caviumnetworks.com>
4050
4051 PR bootstrap/41349
4052 * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
4053 trying to limit the extent of searches in the insn stream.
4054
4055 2009-09-15 Nathan Froyd <froydnj@codesourcery.com>
4056 Jakub Jelinek <jakub@redhat.com>
4057
4058 PR target/41175
4059 PR target/40677
4060 * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
4061 problem.
4062 (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
4063 SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
4064 (rs6000_savres_strategy): Always save FP registers inline if the
4065 target doesn't support hardware double-precision. Set the above
4066 bits in return value when needed.
4067 (rs6000_savres_routine_sym): Fix computation for cache selector.
4068 Mark the generated symbol as a function. Rename exitp argument to
4069 lr. Move code for determining the name of the symbol...
4070 (rs6000_savres_routine_name): ...here. New function. Add cases for
4071 getting the names right on AIX and 64-bit Linux.
4072 (savres_routine_name): New variable.
4073 (rs6000_make_savres_rtx): Rename exitp argument to lr. Don't assert
4074 lr isn't set when savep. Use r12 resp. r1 instead of r11 depending
4075 on what the target routine uses as a base register. If savep && lr
4076 describe saving of r0 into memory slot.
4077 (rs6000_emit_prologue): Correct use of call_used_regs. Fix out of
4078 line calls for AIX ABI.
4079 (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
4080 determine FP save/restore functions.
4081 (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
4082 frame_reg_rtx != sp_reg_rtx. Use gen_add3_insn instead of
4083 gen_addsi3.
4084 (rs6000_emit_epilogue): Adjust computation of restore_lr.
4085 Duplicate restoration of LR and execute the appropriate one
4086 depending on whether GPRs are being restored inline. Set r11 from
4087 offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
4088 r11, adjust sp_offset. Use gen_add3_insn instead of gen_addsi3.
4089 Fix out of line calls for AIX ABI.
4090 * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
4091 New insn.
4092 * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
4093 register 11.
4094 (*restore_gpregs_spe): Likewise.
4095 (*return_and_restore_gpregs_spe): Likewise.
4096 * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
4097 Define to empty string unconditionally.
4098 * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
4099 Define to empty string unconditionally.
4100 (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
4101 !TARGET_64BIT.
4102
4103 2009-09-15 Jan Hubicka <jh@suse.cz>
4104
4105 * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
4106 * params.def (inline-insns-auto): Likewise.
4107
4108 2009-09-15 Martin Jambor <mjambor@suse.cz>
4109
4110 * ipa-inline.c (estimate_function_body_sizes): Dump info about
4111 individual statements only at TDF_DETAILS dump level. Format
4112 source for 80 characters per line.
4113
4114 2009-09-15 Christian Bruel <christian.bruel@st.com>
4115
4116 * regrename.c (do_replace): Update REG_DEAD notes.
4117
4118 2009-09-15 Revital Eres <eres@il.ibm.com>
4119
4120 * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
4121 * targhooks.c (default_builtin_support_vector_misalignment):
4122 New builtin function.
4123 * targhooks.h (default_builtin_support_vector_misalignment):
4124 Declare.
4125 * target.h (builtin_support_vector_misalignment):
4126 New field in struct gcc_target.
4127 * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
4128 new builtin function.
4129 * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
4130 Define.
4131 * config/rs6000/rs6000.c
4132 (rs6000_builtin_support_vector_misalignment): New function.
4133 (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
4134
4135 2009-09-15 Jie Zhang <jie.zhang@analog.com>
4136
4137 * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
4138 instead of INSN_P.
4139 (bfin_optimize_loop): Likewise.
4140 (bfin_gen_bundles): Likewise.
4141 (workaround_speculation): Likewise.
4142 (find_load): Return NULL_RTX for debug_insn.
4143
4144 2009-09-15 Uros Bizjak <ubizjak@gmail.com>
4145
4146 * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
4147 (sminsf3): Ditto.
4148
4149 2009-09-14 DJ Delorie <dj@redhat.com>
4150
4151 * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
4152 * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
4153 VLIW mode.
4154
4155 2009-09-14 Richard Henderson <rth@redhat.com>
4156 Jakub Jelinek <jakub@redhat.com>
4157
4158 * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
4159 * cfgbuild.c (make_edges): Handle asm goto.
4160 * cfglayout.c (fixup_reorder_chain): Likewise.
4161 * cfgrtl.c (patch_jump_insn): Likewise.
4162 * gimple-pretty-print.c (dump_gimple_asm): Likewise.
4163 * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
4164 (gimple_build_asm_vec): Add and use labels parameter.
4165 (gimple_build_asm): Remove.
4166 (walk_gimple_asm): Walk labels too.
4167 * gimple.def (GIMPLE_ASM): Update docs.
4168 * gimple.h: Update decls.
4169 (struct gimple_statement_asm): Change nc to use unsigned char;
4170 add nl member.
4171 (gimple_asm_nlabels): New.
4172 (gimple_asm_label_op, gimple_asm_set_label_op): New.
4173 * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
4174 into gimple_build_asm_vec.
4175 * jump.c (mark_jump_label_asm): New.
4176 (mark_jump_label): Use it.
4177 (redirect_jump_1): Handle asm goto.
4178 (invert_jump_1): Soft fail if X is null.
4179 * recog.c (extract_asm_operands): New.
4180 (asm_noperands): Use it; handle asm labels.
4181 (decode_asm_operands): Use extract_asm_operands.
4182 (asm_operand_ok): Properly handle empty string.
4183 * reg-stack.c (get_asm_operands_in_out): Rename from
4184 get_asm_operand_n_inputs; use extract_asm_operands; return both
4185 inputs and outputs by reference; update all callers.
4186 * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
4187 * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
4188 (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
4189 (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
4190 (extract_asm_operands): Declare.
4191 * stmt.c (expand_asm_operands): Add and use labels parameter.
4192 (check_unique_operand_names): Likewise.
4193 (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
4194 (expand_asm_stmt): Handle asm labels.
4195 * tree-cfg.c (make_gimple_asm_edges): New.
4196 (make_edges): Use it.
4197 (cleanup_dead_labels): Handle asm labels.
4198 (is_ctrl_altering_stmt): Likewise.
4199 (gimple_redirect_edge_and_branch): Likewise.
4200 * tree.def (ASM_EXPR): Add 5th operand.
4201 * tree.h (ASM_LABELS): New.
4202 (resolve_asm_operand_names): Update decl.
4203
4204 * c-parser.c (c_parser_asm_statement): Parse asm goto.
4205 (c_parser_asm_goto_operands): New.
4206 * c-tree.h (build_asm_expr): Update decl.
4207 * c-typeck.c (build_asm_expr): Add and use labels parameter.
4208 * doc/extend.texi: Document asm goto.
4209
4210 2009-09-14 Richard Henderson <rth@redhat.com>
4211
4212 * except.h: Update declarations.
4213 (struct pointer_map_t): Forward declare.
4214 (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
4215 (struct eh_landing_pad_d, eh_landing_pad): New.
4216 (struct eh_catch_d, eh_catch): New.
4217 (struct eh_region_d): Remove next_region_sharing_label, aka,
4218 label, tree_label, landing_pad, post_landing_pad, resume,
4219 may_contain_throw. Rename region_number to index. Remove
4220 u.eh_catch, u.eh_throw. Rename u.eh_try.eh_catch to first_catch.
4221 Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
4222 (VEC(eh_landing_pad,gc)): New.
4223 (struct eh_status): Remove last_region_number. Add lp_array,
4224 throw_stmt_table, ttype_data, ehspec_data.
4225 (ehr_next, FOR_ALL_EH_REGION_AT): New.
4226 (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
4227 * except.c (lang_protect_cleanup_actions): Return tree.
4228 (struct ehl_map_entry): Remove.
4229 (init_eh_for_function): Push zero entries for region and lp_array.
4230 (gen_eh_region): Add to region_array immediately.
4231 (gen_eh_region_catch): Operate on eh_catch objects.
4232 (gen_eh_landing_pad): New.
4233 (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
4234 (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
4235 (get_eh_region_from_number, get_eh_region_from_number_fn): New.
4236 (get_eh_landing_pad_from_number_fn): New.
4237 (get_eh_landing_pad_from_number): New.
4238 (get_eh_region_from_lp_number_fn): New.
4239 (get_eh_region_from_lp_number): New.
4240 (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
4241 (get_exception_pointer, get_exception_filter): Remove.
4242 (collect_eh_region_array, can_be_reached_by_runtime): Remove.
4243 (current_function_has_exception_handlers): Simplify.
4244 (bring_to_root, eh_region_replaceable_by_p): Remove.
4245 (replace_region, hash_type_list, hash_eh_region): Remove.
4246 (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
4247 (label_to_region_map, num_eh_regions): Remove.
4248 (get_next_region_sharing_label, must_not_throw_labels): Remove.
4249 (find_exception_handler_labels): Remove.
4250 (duplicate_eh_regions_0, find_prev_try): Remove.
4251 (struct duplicate_eh_regions_data): New.
4252 (duplicate_eh_regions_1): Rewrite.
4253 (duplicate_eh_regions): Return a pointer map instead of an
4254 integer offset.
4255 (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
4256 (redirect_eh_edge_to_label): Remove.
4257 (eh_region_outermost): Rewrite using eh_region pointers
4258 instead of integers.
4259 (add_ttypes_entry): Update for ttype_data move to eh_status.
4260 (add_ehspec_entry): Rewrite with VEC instead of varray.
4261 (assign_filter_values): Likewise. Export.
4262 (build_post_landing_pads, connect_post_landing_pads): Remove.
4263 (dw2_build_landing_pads): Rewrite to use lp_array.
4264 (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
4265 (sjlj_assign_call_site_values): Rewrite to use lp_array.
4266 (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
4267 (sjlj_mark_call_sites): Update for landing pad numbers.
4268 (finish_eh_generation): Rewrite.
4269 (gate_handle_eh): Do nothing for no eh tree.
4270 (pass_rtl_eh): Move up near finish_eh_generation.
4271 (remove_eh_landing_pad): New.
4272 (remove_eh_handler): Export.
4273 (remove_eh_region, remove_eh_handler_and_replace): Remove.
4274 (for_each_eh_label): Rewrite to use lp_array.
4275 (make_reg_eh_region_note): New.
4276 (make_reg_eh_region_note_nothrow_nononlocal): New.
4277 (insn_could_throw_p): New.
4278 (copy_reg_eh_region_note_forward): New.
4279 (copy_reg_eh_region_note_backward): New.
4280 (check_handled, add_reachable_handler): Remove.
4281 (reachable_next_level, foreach_reachable_handler): Remove.
4282 (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
4283 (get_eh_region_and_lp_from_rtx): New.
4284 (get_eh_region_from_rtx): New.
4285 (can_throw_internal_1, can_throw_external_1): Remove.
4286 (can_throw_internal): Use get_eh_region_from_rtx.
4287 (can_throw_external): Use get_eh_region_and_lp_from_rtx.
4288 (insn_nothrow_p, can_nonlocal_goto): New.
4289 (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
4290 (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
4291 (add_action_record): Use VEC not varray.
4292 (collect_one_action_chain): Update for eh_region changes.
4293 (convert_to_eh_region_ranges): Make static. Use VEC not varray.
4294 Use get_eh_region_and_lp_from_rtx.
4295 (gate_convert_to_eh_region_ranges): New.
4296 (pass_convert_to_eh_region_ranges): Use it.
4297 (push_uleb128, push_sleb128): Use VEC not varray.
4298 (output_one_function_exception_table): Likewise.
4299 (dump_eh_tree): Update for eh_region changes.
4300 (verify_eh_tree): Likewise.
4301 (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
4302 * tree-eh.c: Include target.h.
4303 (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
4304 Don't disallow GIMPLE_RESX; adjust argument check.
4305 (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
4306 (record_stmt_eh_region): Update for landing pad numbers;
4307 generate a landing pad if necessary.
4308 (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
4309 (remove_stmt_from_eh_lp_fn): Similarly.
4310 (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
4311 Update for lp numbers; don't special case missing throw_stmt_table.
4312 (lookup_expr_eh_lp): Similarly.
4313 (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
4314 (eh_seq, eh_region_may_contain_throw): New.
4315 (struct leh_state): Add ehp_region.
4316 (struct leh_tf_state): Remove eh_label.
4317 (emit_post_landing_pad): New.
4318 (emit_resx, emit_eh_dispatch): New.
4319 (note_eh_region_may_contain_throw): New.
4320 (frob_into_branch_around): Take eh_region not eh label;
4321 emit eh code into eh_seq.
4322 (honor_protect_cleanup_actions): Early exit for no actions. Don't
4323 handle EXC_PTR_EXPR, FILTER_EXPR. Use gimple_build_eh_must_not_throw,
4324 lower_eh_must_not_throw. Emit code to eh_seq.
4325 (lower_try_finally_nofallthru): Emit eh code to eh_seq.
4326 (lower_try_finally_onedest): Likewise.
4327 (lower_try_finally_copy): Likewise.
4328 (lower_try_finally_switch): Likewise.
4329 (lower_try_finally): Initialize ehp_region.
4330 (lower_catch): Update for eh_catch objects.
4331 (lower_eh_filter): Don't handle must_not_throw.
4332 (lower_eh_must_not_throw): New.
4333 (lower_cleanup): Don't set eh_label.
4334 (lower_eh_constructs_2): Resolve eh builtins.
4335 Handle GIMPLE_EH_MUST_NOT_THROW.
4336 (lower_eh_constructs): Initialize eh_region_may_contain_throw.
4337 Add eh_seq to the end of the function body.
4338 (make_eh_dispatch_edges): New.
4339 (make_eh_edge): Remove.
4340 (make_eh_edges): Simplify for landing pads.
4341 (redirect_eh_edge_1): New.
4342 (redirect_eh_edge): Use it.
4343 (redirect_eh_dispatch_edge): New.
4344 (stmt_could_throw_p): Use a switch. Allow RESX.
4345 (stmt_can_throw_external): Use lookup_stmt_eh_lp.
4346 (stmt_can_throw_internal): Likewise.
4347 (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
4348 (maybe_clean_or_replace_eh_stmt): Update for landing pads.
4349 (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
4350 (gate_refactor_eh): New.
4351 (pass_refactor_eh): Use it.
4352 (lower_resx, execute_lower_resx, pass_lower_resx): New.
4353 (lower_eh_dispatch, execute_lower_eh_dispatch): New.
4354 (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
4355 (remove_unreachable_handlers): Rename from
4356 tree_remove_unreachable_handlers; rewrite for landing pads;
4357 call remove_eh_handler directly.
4358 (remove_unreachable_handlers_no_lp): New.
4359 (unsplit_eh, unsplit_all_eh): New.
4360 (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
4361 (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
4362 (cleanup_empty_eh_unsplit): New.
4363 (cleanup_empty_eh): Rewrite.
4364 (cleanup_all_empty_eh): New.
4365 (execute_cleanup_eh): Rename from cleanup_eh. Remove unreachable
4366 handlers first. Use unsplit_all_eh, cleanup_all_empty_eh.
4367 (gate_cleanup_eh): New.
4368 (pass_cleanup_eh): Use it.
4369 (verify_eh_edges): Move later in file. Expect one EH edge.
4370 (verify_eh_dispatch_edge): New.
4371
4372 * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
4373 (gtype-desc.o): Add TARGET_H.
4374 (tree.o): Use EXCEPT_H, not except.h.
4375 (cfgbuild.o): Add EXPR_H.
4376 (GTFILES): Add vecprim.h.
4377 * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
4378 BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
4379 * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
4380 BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
4381 * calls.c (emit_call_1): Use make_reg_eh_region_note.
4382 * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
4383 calls to can_throw_internal.
4384 (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
4385 (make_edges): Don't handle RESX; use can_nonlocal_goto.
4386 * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
4387 (expand_gimple_stmt): Use make_reg_eh_region_note.
4388 (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
4389 (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
4390 or find_exception_handler_labels.
4391 * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX. Assert
4392 there is exacly one EH edge. Use can_nonlocal_goto and
4393 can_throw_internal.
4394 * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
4395 (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
4396 * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
4397 * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
4398 * dce.c (deletable_insn_p_1): Don't test may_trap_p.
4399 (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
4400 * dse.c (scan_insn): Use insn_could_throw_p.
4401 * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
4402 * expr.c (expand_expr_real): Use make_reg_eh_region_note.
4403 (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
4404 * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
4405 EXC_PTR_EXPR or FILTER_EXPR.
4406 (tree_expr_nonzero_warnv_p): Likewise.
4407 * function.h: Include vecprim.h, not varray.h
4408 (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
4409 move ttype_data and ehspec_data members to struct eh_status; change
4410 action_record_data member to a VEC.
4411 * gcse.c (hash_scan_set): Use can_throw_internal.
4412 * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
4413 * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
4414 * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
4415 (block_may_fallthru): Don't handle RESX_EXPR.
4416 * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
4417 (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
4418 (dump_gimple_stmt): Dump landing pad information with TDF_EH;
4419 handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
4420 * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
4421 GIMPLE_EH_DISPATCH, GIMPLE_RESX.
4422 (gimple_size): Likewise.
4423 (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
4424 (gimple_build_resx): Use gimple_build_with_ops.
4425 (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
4426 (is_gimple_val): Likewise.
4427 (is_gimple_stmt): Remove RESX_EXPR.
4428 * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
4429 (GIMPLE_RESX): Reorder with other EH constructs.
4430 * gimple.h (struct gimple_statement_eh_mnt): New.
4431 (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
4432 (gimple_eh_filter_must_not_throw): Remove.
4433 (gimple_eh_filter_set_must_not_throw): Remove.
4434 (gimple_eh_must_not_throw_fndecl): New.
4435 (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
4436 (is_gimple_resx): New.
4437 * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
4438 Don't copy EH_FILTER_MUST_NOT_THROW.
4439 * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
4440 * ipa-inline.c (estimate_function_body_sizes): Don't try to
4441 handle must_not_throw_labels specially.
4442 * ipa-pure-const.c (check_call): Update debug statement for LP.
4443 * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
4444 * ipa-utils.c (get_base_var): Likewise.
4445 * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
4446 * lower-subreg.c (move_eh_region_note): Remove.
4447 (resolve_simple_move): Use copy_reg_eh_region_note_forward.
4448 * omp-low.c (new_omp_context): Update for eh_lp_nr.
4449 (create_task_copyfn): Likewise.
4450 (maybe_catch_exception): Use gimple_build_eh_filter.
4451 * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
4452 REG_EH_REGION. Use make_reg_eh_region_note_nothrow_nononlocal.
4453 * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
4454 and pass_lower_resx.
4455 * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
4456 * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
4457 can_throw_internal, can_nonlocal_goto.
4458 * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
4459 copy_reg_eh_region_note_forward.
4460 (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
4461 (emit_output_reload_insns): Likewise.
4462 (copy_eh_notes): Remove.
4463 * rtl.def (RESX): Remove.
4464 * rtl.h: Update declarations.
4465 * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
4466 * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
4467 (update_eh_label): Remove.
4468 (cleanup_dead_labels_eh): New.
4469 (cleanup_deal_labels): Use it instead of update_eh_label.
4470 (gimple_merge_blocks): Update landing pad data structure when
4471 removing a landing pad label.
4472 (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
4473 test; handle GIMPLE_EH_MUST_NOT_THROW.
4474 (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
4475 (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
4476 (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
4477 (verify_stmt): Likewise. Verify landing pads.
4478 (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
4479 (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
4480 (struct move_stmt_d): Add eh_map.
4481 (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
4482 (move_stmt_r): Remap eh region numbers in builtin calls,
4483 resx and eh_dispatch.
4484 (move_block_to_fn): Remove eh_offset parameter. Use
4485 maybe_duplicate_eh_stmt_fn.
4486 (find_outermost_region_in_block): Operate on eh_region pointers
4487 instead of region numbers.
4488 (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
4489 duplicate_eh_regions.
4490 * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
4491 test earlier. Disallow EH landing pads.
4492 * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
4493 * tree-flow.h: Update declarations.
4494 (struct tree_ann_common_d): Replace rn with lp_nr.
4495 * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
4496 (remap_eh_region_nr, remap_eh_region_tree_nr): New.
4497 (remap_gimple_stmt): Remap eh region numbers in builtin calls,
4498 resx and eh_dispatch.
4499 (copy_bb): Use maybe_duplicate_eh_stmt_fn.
4500 (copy_edges_for_bb): Use make_eh_dispatch_edges.
4501 (copy_cfg_body): Expect eh_map instead of eh_region_offset
4502 from duplicate_eh_regions.
4503 (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
4504 update RESX; handle EH_DISPATCH.
4505 (expand_call_inline): Set eh_lp_nr, not eh_region.
4506 (maybe_inline_call_in_expr): Likewise.
4507 * tree-inline.h (struct copy_body_data): Replace eh_region with
4508 eh_lp_nr, eh_region_offset with eh_map.
4509 * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
4510 * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
4511 * tree-pretty-print.c (dump_generic_node): Don't handle
4512 EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
4513 * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
4514 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
4515 EXC_PTR_EXPR, FILTER_EXPR.
4516 * tree-ssa-operands.c (get_expr_operands): Likewise.
4517 * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
4518 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
4519 (ao_ref_init_from_vn_reference): Likewise.
4520 * tree-ssa-sink.c (statement_sink_location): Likewise.
4521 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
4522 (mark_virtual_phi_result_for_renaming): Export. Tidy.
4523 * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
4524 EXC_PTR_EXPR, FILTER_EXPR.
4525 (is_exception_related): Remove.
4526 (compute_avail): Don't call it.
4527 * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
4528 * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
4529 (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
4530 (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
4531 Build EH builtins.
4532 (build_resx): Remove.
4533 * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
4534 * tree.h: Update declarations.
4535 (EH_FILTER_MUST_NOT_THROW): Remove.
4536 (struct tree_label_decl): Add eh_landing_pad_nr.
4537 (EH_LANDING_PAD_NR): New.
4538 * value-prof.c (gimple_ic): Tidy variable names. Update for
4539 landing pad numbers.
4540 (gimple_stringop_fixed_value): Tidy variable names. Assert
4541 that neither call stmt can throw.
4542 * vecprim.h (uchar): New.
4543 (VEC(uchar,heap), VEC(uchar,gc)): New.
4544
4545 * c-common.c (c_define_builtins): Update call to
4546 build_common_builtin_nodes.
4547 * c-parser.c (c_parse_file): Don't call
4548 default_init_unwind_resume_libfunc.
4549
4550 2009-09-14 Richard Sandiford <rdsandiford@googlemail.com>
4551
4552 * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
4553 (mips_cprestore_address_p): Likewise.
4554 (mips_save_gp_to_cprestore_slot): Likewise.
4555 (mips_restore_gp): Rename to...
4556 (mips_restore_gp_from_cprestore_slot): ...this.
4557 (mips_must_initialize_gp_p): Declare.
4558 (mips_emit_save_slot_move): Likewise.
4559 (mips_output_load_label): Return nothing.
4560 (mips_eh_uses): Declare.
4561 * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
4562 (TARGET_CPRESTORE_DIRECTIVE): New macro.
4563 (TARGET_ABSOLUTE_JUMPS): Likewise.
4564 (EH_USES): Likewise.
4565 (FIRST_PSEUDO_REGISTER): Update comment.
4566 (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
4567 (MIPS_CALL): ...here.
4568 (REGISTER_NAMES): Add $cprestore.
4569 * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
4570 Add load_label_length, has_inflexible_gp_insn_p,
4571 has_flexible_gp_insn_p, must_initialize_gp_p and
4572 must_restore_gp_when_clobbered_p.
4573 (mips_expand_call): Don't generate split instructions here.
4574 (mips_split_call): Update the call to mips_restore_gp after
4575 the above name change.
4576 (mips16_cfun_returns_in_fpr_p): Move earlier in file.
4577 (mips_find_gp_ref): New function.
4578 (mips_insn_has_inflexible_gp_ref_p): Likewise.
4579 (mips_cfun_has_inflexible_gp_ref_p): Likewise.
4580 (mips_insn_has_flexible_gp_ref_p): Likewise.
4581 (mips_cfun_has_flexible_gp_ref_p): Likewise.
4582 (mips_function_has_gp_insn): Delete.
4583 (mips_global_pointer): Drop the df_regs_ever_live_p check.
4584 Use the new functions above. Only return INVALID_REGNUM
4585 for TARGET_ABSOLUTE_JUMPS.
4586 (mips_must_initialize_gp_p): New function.
4587 (mips_get_cprestore_base_and_offset): New function, extracted from...
4588 (mips_cprestore_slot): ...here. Take a bool parameter.
4589 (mips_cfun_has_cprestore_slot_p): New function.
4590 (mips_cprestore_address_p): Likewise.
4591 (mips_save_gp_to_cprestore_slot): Likewise.
4592 (mips_restore_gp): Rename to...
4593 (mips_restore_gp_from_cprestore_slot): ...this. Assert
4594 epilogue_completed. Update the call to mips_cprestore_slot.
4595 Test cfun->machine->must_restore_gp_when_clobbered_p.
4596 (mips_direct_save_slot_move_p): New function.
4597 (mips_emit_save_slot_move): Likewise.
4598 (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
4599 of cfun->machine->global_pointer.
4600 (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
4601 (mips_save_reg): Use mips_emit_save_slot_move.
4602 (mips_expand_prologue): Set must_initialize_gp_p.
4603 Use mips_cfun_has_cprestore_slot_p. Use gen_potential_cprestore
4604 for all cprestore saves. Emit a use_cprestore instruction after
4605 setting up the cprestore slot.
4606 (mips_restore_reg): Use mips_emit_save_slot_move.
4607 (mips_process_load_label): New function.
4608 (mips_load_label_length): Likewise.
4609 (mips_output_load_label): Don't return asm: output it here instead.
4610 Use mips_process_load_label.
4611 (mips_adjust_insn_length): Adjust the length of branch instructions
4612 that have length MAX_PIC_BRANCH_LENGTH.
4613 (mips_output_conditional_branch): Update the call to
4614 mips_output_load_label. Assume the branch target is OPERANDS[0]
4615 rather than OPERANDS[1]. Use MIPS_ABSOLUTE_JUMP for absolute jumps.
4616 (mips_output_order_conditional_branch): Swap the meaning of
4617 OPERANDS[0] and OPERANDS[1].
4618 (mips_variable_issue): Don't count ghost instructions.
4619 (mips_expand_ghost_gp_insns): New function.
4620 (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
4621 (mips_output_mi_thunk): Set must_initialize_gp_p.
4622 (mips_eh_uses): New function.
4623 * config/mips/predicates.md (cprestore_save_slot_operand)
4624 (cprestore_load_slot_operand): New predicates.
4625 * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
4626 (UNSPEC_MOVE_GP): Likewise.
4627 (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
4628 (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
4629 (CPRESTORE_SLOT_REGNUM): New register.
4630 (MAX_PIC_BRANCH_LENGTH): New constant.
4631 (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
4632 (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
4633 branches. Fix commentary.
4634 (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
4635 Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
4636 Change type to "ghost".
4637 (loadgp_absolute_<mode>): Likewise.
4638 (loadgp_rtp_<mode>): Likewise.
4639 (copygp_mips16): Likewise.
4640 (loadgp_blockage): Remove redundant mode attribute.
4641 (potential_cprestore): New instruction.
4642 (cprestore): Turn into an unspec set.
4643 (use_cprestore): New instruction.
4644 (*branch_fp): Swap operands 0 and 1. Remove redundant mode attribute.
4645 (*branch_fp_inverted): Likewise.
4646 (*branch_order<mode>): Likewise.
4647 (*branch_order<mode>_inverted): Likewise.
4648 (*branch_equality<mode>): Likewise.
4649 (*branch_equality<mode>_inverted): Likewise.
4650 (*branch_bit<bbv><mode>): Likewise.
4651 (*branch_bit<bbv><mode>_inverted): Likewise.
4652 (*branch_equality<mode>_mips16): Remove redundant mode.
4653 (jump): Turn into a define_expand.
4654 (*jump_absolute): New instruction.
4655 (*jump_pic): Likewise.
4656 (*jump_mips16): Rename previously-unnamed pattern. Remove
4657 redundant mode attribute.
4658 (restore_gp): Split on epilogue_completed rather than
4659 reload_completed. Change type to "ghost".
4660 (move_gp<mode>): New instruction.
4661 * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
4662 Remove redundant mode attribute.
4663 * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
4664 (bc1any4f, bc1any2t, bc1any2f): Likewise.
4665 (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
4666
4667 2009-09-14 Michael Meissner <meissner@linux.vnet.ibm.com>
4668
4669 PR target/41210
4670 * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
4671 are returned in the same register (vs34 or v2) that Altivec vector
4672 types are returned in.
4673 (rs6000_libcall_value): Ditto.
4674
4675 PR target/41331
4676 * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
4677 instead of explicit addsi3/adddi3 calls.
4678 (rs6000_split_multireg_move): Ditto.
4679 (rs6000_emit_allocate_stack): Ditto.
4680 (rs6000_emit_prologue): Ditto.
4681 (rs6000_output_mi_thunk): Ditto.
4682
4683 * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
4684 size is 64 bits if we can use 64-bit registers.
4685
4686 2009-09-14 Bernd Schmidt <bernd.schmidt@analog.com>
4687
4688 * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
4689 symbols.
4690
4691 From Jie Zhang <jie.zhang@analog.com>:
4692 * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
4693 save FP and RETS with saveall attribute.
4694 (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
4695 with saveall attribute.
4696
4697 * config/bfin/bfin.c (bfin_expand_builtin,
4698 case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
4699 operands.
4700
4701 From Jie Zhang <jie.zhang@analog.com>:
4702 * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
4703 before use in two places.
4704 * config/bfin/bfin.md (AREG): Define mode iterator.
4705 (reload_in, reload_out): Use mode iterator AREG.
4706
4707 2009-09-14 Richard Guenther <rguenther@suse.de>
4708
4709 PR middle-end/41350
4710 * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
4711 EH personality path.
4712
4713 2009-09-13 Richard Guenther <rguenther@suse.de>
4714 Rafael Avila de Espindola <espindola@google.com>
4715
4716 * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
4717 (LANG_HOOKS_EH_PERSONALITY): Likewise.
4718 (LANG_HOOKS_INITIALIZER): Adjust.
4719 (lhd_pass_through_t): Declare.
4720 * langhooks.h (struct lang_hooks): Add eh_runtime_type and
4721 eh_personality.
4722 * langhooks.c (lhd_pass_through_t): New function.
4723 * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
4724 dwarf2out_begin_prologue): Use personality from current_function_decl.
4725 * expr.h (get_personality_function): Declare.
4726 * expr.c (get_personality_function): New function.
4727 (build_personality_function): Likewise.
4728 * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
4729 (eh_personality_libfunc): Remove.
4730 * optabs.c (build_libfunc_function): New function split out from ...
4731 (init_one_libfunc): ... here.
4732 * tree.h (DECL_FUNCTION_PERSONALITY): New.
4733 (tree_function_decl): Add personality.
4734 (lhd_gcc_personality): Declare.
4735 (build_personality_function): Likewise.
4736 * tree.c (gcc_eh_personality_decl): New.
4737 (lhd_gcc_personality): New function.
4738 * except.h (lang_eh_runtime_type): Remove.
4739 (enum eh_personality_kind): New.
4740 (build_personality_function): Declare.
4741 (function_needs_eh_personality): Declare.
4742 * except.c (lang_eh_runtime_type): Remove.
4743 (function_needs_eh_personality): New function.
4744 (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
4745 (sjlj_emit_function_enter, output_function_exception_table):
4746 Use personality from current_function_decl.
4747 * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
4748 * tree-inline.c (tree_can_inline_p): Do not inline across different
4749 EH personalities.
4750 (expand_call_inline): Likewise. Adjust the callers EH personality.
4751 (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
4752 * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
4753 * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
4754 (c-parser.o): Likewise
4755 * c-tree.h (c_eh_initialized_p): Remove.
4756 (c_maybe_initialize_eh): Likewise.
4757 * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
4758 (finish_decl): Don't call c_maybe_initialize_eh.
4759 (c_eh_initialized_p): Remove.
4760 (c_maybe_initialize_eh): Likewise.
4761 * c-parser.c (c_parser_omp_construct): Likewise.
4762 (c_parse_file): Initialize exception handling.
4763
4764 2009-09-13 Kai Tietz <kai.tietz@onevision.com>
4765
4766 * config.gcc (tm_file): Remove i386/biarch32.h
4767 for i?86-w64-mingw* case.
4768 (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
4769 support.
4770 * config.host: Set for x64 mingw the option
4771 use_long_long_for_widest_fast_int to yes.
4772
4773 2009-09-13 Eric Botcazou <ebotcazou@adacore.com>
4774
4775 * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
4776 * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
4777 (dbxout_begin_function): Likewise.
4778 * final.c (dwarf2_debug_info_emitted_p): New predicate.
4779 (final_start_function): Do not emit debug info if DECL_IGNORED_P is
4780 set on the function.
4781 (final_end_function): Likewise.
4782 (final_scan_insn): Likewise.
4783 (rest_of_handle_final): Likewise.
4784 * varasm.c (assemble_start_function): Likewise.
4785 * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
4786
4787 2009-09-12 Jason Merrill <jason@redhat.com>
4788
4789 * dbgcnt.c (dbg_cnt_process_single_pair): constify.
4790 * opts.c (common_handle_option): constify.
4791
4792 2009-09-12 Gerald Pfeifer <gerald@pfeifer.com>
4793
4794 * doc/install.texi (avr): Remove obsolete reference site.
4795
4796 2009-09-12 Gerald Pfeifer <gerald@pfeifer.com>
4797
4798 * doc/install.texi (Binaries): Adjust AIX link.
4799
4800 2009-09-12 Akim Demaille <demaille@gostai.com>
4801
4802 * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
4803 Use an imperative sentence.
4804
4805 2009-09-11 Richard Henderson <rth@redhat.com>
4806
4807 * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
4808 structure-name and has-tree-operands arguments; update all entries.
4809 * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
4810 update all entries.
4811 * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
4812 (gsstruct_code_size): New.
4813 (gss_for_code_): New.
4814 (gss_for_code): Remove.
4815 (gimple_size): Rewrite using gsstruct_code_size.
4816 (gimple_statement_structure): Move to gimple.h.
4817 * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
4818 (gss_for_code, gimple_statement_structure): New.
4819 (gimple_ops): Use new arrays; tidy.
4820
4821 2009-09-11 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
4822
4823 * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
4824 operand to be a PLUS expression.
4825 * config/pa/pa.c (pa_secondary_reload): Likewise.
4826
4827 2009-09-11 Jakub Jelinek <jakub@redhat.com>
4828
4829 * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
4830
4831 * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
4832 XEXP (in_rtx, 8).
4833
4834 2009-09-11 Bernd Schmidt <bernd.schmidt@analog.com>
4835
4836 From Jie Zhang <jie.zhang@analog.com>:
4837 * doc/extend.texi (node Function Attributes): Document l2
4838 function attribute.
4839 (node Blackfin Variable Attributes): Document l2 variable attributes.
4840
4841 2009-09-11 Loren J. Rittle <ljrittle@acm.org>
4842
4843 * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
4844 to match the system compiler's configuration at inflection point.
4845 Add comment to remark a remaining difference with system compiler.
4846
4847 * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
4848 * configure: Regenerate.
4849
4850 2009-09-11 Bernd Schmidt <bernd.schmidt@analog.com>
4851
4852 From Jie Zhang <jie.zhang@analog.com>:
4853 * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
4854 (bfin_handle_l2_attribute): New.
4855 (bfin_attribute_table): Add l2 attribute.
4856
4857 2009-09-11 Michael Matz <matz@suse.de>
4858
4859 PR middle-end/41275
4860 * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
4861 on the local_decls list.
4862
4863 2009-09-11 Alexandre Oliva <aoliva@redhat.com>
4864
4865 PR debug/41276
4866 PR debug/41307
4867 * cselib.c (cselib_expand_value_rtx_cb): Document callback
4868 interface.
4869 (cselib_expand_value_rtx_1): Use callback for SUBREGs. Adjust
4870 for VALUEs, to implement the documented interface.
4871 * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
4872 Adjust for VALUEs and anything else, to implement the
4873 documented interface.
4874
4875 2009-09-10 Nathan Froyd <froydnj@codesourcery.com>
4876
4877 * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
4878 with actual SPE/paired vector modes before using 64-bit alignment.
4879 Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
4880
4881 2009-09-10 DJ Delorie <dj@redhat.com>
4882
4883 * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
4884 emitted.
4885
4886 * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
4887 * config/mep/mep.c (mep_legitimate_constant_p): New.
4888 * config/mep/mep-protos.h: Prototype it.
4889
4890 2009-09-10 Richard Henderson <rth@redhat.com>
4891
4892 * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
4893
4894 2009-09-10 Jason Merrill <jason@redhat.com>
4895
4896 * tree.c (chain_index): New fn.
4897 * tree.h: Declare it.
4898
4899 2009-09-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4900
4901 * config/sol2-c.c (cmn_err_length_specs): Initialize
4902 scalar_identity_flag.
4903
4904 2009-09-10 Richard Henderson <rth@redhat.com>
4905
4906 * tree.h (struct tree_decl_common): Move align member earlier;
4907 move label_decl_uid member ...
4908 (struct tree_label_decl): ... here.
4909 (LABEL_DECL_UID): Update to match.
4910
4911 * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
4912 not TDF_DETAILS.
4913
4914 * tree-cfg.c (gimple_redirect_edge_and_branch): Do
4915 gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
4916
4917 * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
4918 dest_prev if the edge is complex.
4919
4920 * tree-cfg.c (is_ctrl_stmt): Use a switch.
4921
4922 * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
4923 loop latch tests earlier.
4924
4925 * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
4926 before GIMPLE_RETURN, not after its predecessor; insert
4927 before GIMPLE_RESX.
4928
4929 * gimple-iterator.c (gimple_find_edge_insert_loc): Use
4930 gimple_seq_empty_p to test for no PHI nodes.
4931 * tree-cfg.c (split_critical_edges): Likewise.
4932
4933 * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
4934
4935 2009-09-10 Hariharan Sandanagobalane <hariharan@picochip.com>
4936
4937 * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
4938 introduced by the VTA branch merge.
4939
4940 2009-09-10 Uros Bizjak <ubizjak@gmail.com>
4941
4942 * ira-conflicts.c: Use fputs or putc instead of fprintf
4943 where appropriate.
4944 * cfg.c: Ditto.
4945 * toplev.c: Ditto.
4946 * tree-switch-conversion.c: Ditto.
4947
4948 2009-09-10 Hariharan Sandanagobalane <hariharan@picochip.com>
4949
4950 * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
4951 introduced by the VTA branch merge.
4952
4953 2009-09-10 Uros Bizjak <ubizjak@gmail.com>
4954
4955 Revert:
4956 2009-09-09 Uros Bizjak <ubizjak@gmail.com>
4957
4958 PR rtl-optimization/39779
4959 * expr.c (convert_modes): Return when mode == oldmode after
4960 CONST_INTs are processed.
4961
4962 2009-09-10 Nick Clifton <nickc@redhat.com>
4963
4964 * config/mep/mep.c (mep_encode_section_info): Copy weakness
4965 attribute and referring decl when creating renamed symbol.
4966
4967 2009-09-10 Richard Guenther <rguenther@suse.de>
4968
4969 PR middle-end/41257
4970 * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
4971 reachable nodes.
4972 (cgraph_finalize_compilation_unit): Compute reachability
4973 before emitting thunks. Properly process aliases before
4974 possibly removing unreachable nodes.
4975
4976 2009-09-10 Richard Guenther <rguenther@suse.de>
4977
4978 PR middle-end/41254
4979 * tree.c (struct free_lang_data_d): Add worklist member.
4980 (find_decls_types_r): Push onto the worklist instead of recursing.
4981 Handle TREE_BINFOs properly.
4982 (find_decls_types): New function wrapped around find_decls_types_r
4983 to process the worklist.
4984 (find_decls_types_in_eh_region): Use it.
4985 (find_decls_types_in_node): Likewise.
4986 (find_decls_types_in_var): Likewise.
4987 (free_lang_data_in_cgraph): Likewise. Free the worklist.
4988 * tree.h (RECORD_OR_UNION_TYPE_P): New.
4989 (AGGREGATE_TYPE_P): Adjust.
4990
4991 2009-09-09 Jason Merrill <jason@redhat.com>
4992
4993 * configure.ac: Check glibc version even if we have an in-tree
4994 assembler.
4995
4996 2009-09-09 Anthony Green <green@moxielogic.com>
4997
4998 * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
4999 the constant 0 when appropriate.
5000 * config/moxie/constraints.md: Add constraint O.
5001
5002 * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
5003 to pass up to 6 32-bit argument values in registers.
5004 (moxie_function_arg): Ditto.
5005 (moxie_arg_partial_bytes): Ditto.
5006 * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
5007 (REG_PARM_STACK_SPACE): Ditto.
5008 (FUNCTION_ARG_REGNO_P): Ditto.
5009
5010 * config/moxie/moxie.c (moxie_expand_prologue): Use dec
5011 instruction to allocate stack space.
5012
5013 2009-09-09 Segher Boessenkool <segher@kernel.crashing.org>
5014
5015 * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
5016 unnecessarily stringent constraints. Fix address
5017 calculation in the splitters.
5018
5019 2009-09-09 Uros Bizjak <ubizjak@gmail.com>
5020
5021 PR rtl-optimization/39779
5022 * expr.c (convert_modes): Return when mode == oldmode after
5023 CONST_INTs are processed.
5024
5025 2009-09-09 Kai Tietz <kai.tietz@onevision.com>
5026
5027 PR/41315
5028 * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
5029 (ix86_expand_prologue): Take frame.padding0 into logic of
5030 to_allocate checks.
5031 (ix86_expand_epilogue): Likewise.
5032
5033 2009-09-09 Jakub Jelinek <jakub@redhat.com>
5034
5035 * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
5036 New variables.
5037 (SHLIB_LINK, SHLIB_INSTALL): Use them.
5038 * config/t-slibgcc-libgcc: New file.
5039 * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
5040
5041 2009-09-09 Martin Jambor <mjambor@suse.cz>
5042
5043 PR tree-optimization/41089
5044 * tree-sra.c (find_var_candidates): Do not consider va_lists in
5045 early SRA.
5046
5047 2009-09-09 Richard Henderson <rth@redhat.com>
5048
5049 * gimple.h (CASE_GIMPLE_OMP): New.
5050 (is_gimple_omp): Use it.
5051 * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
5052 (verify_gimple_debug): Likewise.
5053
5054 2009-09-09 Richard Guenther <rguenther@suse.de>
5055
5056 PR tree-optimization/41101
5057 * tree-ssa-pre.c (maximal_set): Remove.
5058 (compute_antic_aux): Treat the maximal set as implicitly all ones.
5059 Defer all blocks we didn't visit at least one successor.
5060 (add_to_exp_gen): Do not add to the maximal set.
5061 (make_values_for_phi): Likewise.
5062 (compute_avail): Likewise.
5063 (init_pre): Do not allocate the maximal set.
5064 (execute_pre): Do not dump it.
5065
5066 2009-09-09 Martin Jambor <mjambor@suse.cz>
5067
5068 * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
5069 an SSA_NAME rather than a is_gimple_variable.
5070
5071 2009-09-09 Richard Guenther <rguenther@suse.de>
5072
5073 PR middle-end/41317
5074 * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
5075 code dealing with plain pointer bases.
5076 (maybe_fold_offset_to_reference): Likewise.
5077 (maybe_fold_stmt_addition): Adjust.
5078
5079 2009-09-09 Richard Guenther <rguenther@suse.de>
5080
5081 * tree.c (free_lang_data_in_type): Do not free the type variant
5082 chains.
5083 (free_lang_data): Merge char_type_node with its properly signed
5084 variant.
5085 (pass_ipa_free): Collect after freeing language specific data.
5086
5087 2009-09-09 Michael Matz <matz@suse.de>
5088
5089 PR middle-end/41268
5090 * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
5091 SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
5092 * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
5093 to reflect reality.
5094
5095 2009-09-08 DJ Delorie <dj@redhat.com>
5096
5097 * config/mep/mep.c (conversions[]): Add "ml" pattern.
5098
5099 2009-09-04 Jason Merrill <jason@redhat.com>
5100
5101 * tree.c (tree_find_value): Remove.
5102 * tree.h: Remove prototype.
5103 * varasm.c (assemble_external): Use value_member instead.
5104
5105 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5106
5107 * toplev.c (process_options): Choose default debugging type when
5108 gtoggle enables debug info and type is unset.
5109
5110 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5111
5112 PR debug/41276
5113 PR debug/41307
5114 * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
5115 invalid subreg.
5116
5117 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5118
5119 * configure: Rebuilt with modified libtool.m4.
5120
5121 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5122
5123 PR debug/41229
5124 PR debug/41291
5125 PR debug/41300
5126 * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
5127
5128 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5129
5130 * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
5131 (remove_statement): Likewise.
5132 (rewrite_use_nonlinear_expr): Adjust.
5133 (remove_unused_ivs): Collect SSA NAMEs to remove and call...
5134 * tree-ssa.c (release_defs_bitset): ... this. New.
5135 * tree-flow.h (release_defs_bitset): Declare.
5136
5137 2009-09-08 Alexandre Oliva <aoliva@redhat.com>
5138
5139 PR debug/41232
5140 * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
5141 in the middle block.
5142
5143 2009-09-08 Kai Tietz <kai.tietz@onevision.com>
5144
5145 * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
5146 via intptr_t to long type.
5147 (insert_operand_rank): Cast long type via intptr_t to
5148 pointer type.
5149 * genattrtab.c (RTL_HASH): Use intptr_t to cast from
5150 pointer to scalar.
5151 * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
5152 from pointer to unsigned via uintptr_t.
5153
5154 * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
5155 uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
5156 and HAVE_INTPTR_T.
5157 * configure: Regenerated.
5158 * config.in: Regenerated
5159 * system.h (stdint.h): Add include.
5160 (inttypes.h): Likewise.
5161 * Makefile.in (aclocal): Add config/stdint.m4.
5162 * aclocal.m4: Regenerated.
5163
5164 2009-09-08 Bernd Schmidt <bernd.schmidt@analog.com>
5165
5166 * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
5167 variables.
5168 (note_np_check_stores): New function.
5169 (harmless_null_pointer_p): New function.
5170 (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH. Callers
5171 changed. Take into account whether we're in the shadow of a condjump
5172 that tested NP_REG for NULL.
5173 Lose all code that tested for SEQUENCEs.
5174 (workaround_speculation): Avoid inserting NOPs for loads that are
5175 either always executed or a NULL pointer.
5176
5177 2009-09-08 Jan Hubicka <jh@suse.cz>
5178
5179 * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
5180 * params.def (early-inlining-insns): Likewise.
5181
5182 2009-09-08 Jakub Jelinek <jakub@redhat.com>
5183
5184 PR rtl-optimization/41239
5185 * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
5186 * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
5187 lists.
5188 * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
5189 across calls, as the calls might not always return normally.
5190 (call_may_noreturn_p): New function.
5191 (deps_analyze_insn): Update last_function_call_may_noreturn list.
5192 (init_deps): Initialize it.
5193 (remove_from_deps): Also remove calls from
5194 last_function_call_may_noreturn list.
5195
5196 2009-09-07 Richard Henderson <rth@redhat.com>
5197
5198 * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
5199 more VR->OPERANDS than LHS operands. Free LHS before returning.
5200
5201 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
5202
5203 * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
5204 (attr "addrtype"): New member "spreg".
5205 Use it if mem_spfp_address_operand is true for the address.
5206 (attr "type"): New entry "stall".
5207 (cpu_unit "load"): New.
5208 (insn_reservations "load32", "loadp", "loadi"): Add reservation of
5209 "load".
5210 (insn_reservation "loadsp"): New.
5211 (insn_reservation "load_stall1"): New.
5212 (insn_reservation "load_stall3"): New.
5213 (stall): New insn.
5214 * config/bfin/predicates.md (const1_operand, const3_operand): New.
5215 (mem_p_address_operand): Exclude stack and frame pointer based
5216 addresses.
5217 (mem_spfp_address_operand): New; match them here.
5218 * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
5219 (bfin_reorg): Call it if scheduling insns.
5220 (bfin_gen_bundles): Remove dummy insns created by
5221 add_sched_insns_for_speculation.
5222
5223 From Jie Zhang <jie.zhang@analog.com>:
5224 * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
5225 bfin_si_revision, bfin_workarounds): Move these ...
5226 * config/bfin/bfin.h: ... here.
5227
5228 From Mike Frysinger <michael.frysinger@analog.com>
5229 * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
5230 BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
5231 * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
5232 bf547m, bf548m, and bf549m.
5233 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
5234 for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
5235 __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
5236 BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
5237 * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
5238 bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
5239 * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
5240 * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
5241 * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
5242 bf542m, bf544m, bf547m, bf548m, and bf549m.
5243
5244 From Jie Zhang <jie.zhang@analog.com>:
5245 * config/bfin/predicates.md (p_register_operand): New predicate.
5246 (dp_register_operand): New predicate.
5247 * config/bfin/bfin-protos.h (WA_05000074): Define.
5248 (ENABLE_WA_05000074): Define.
5249 * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
5250 (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
5251 * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
5252 (define_attr addrtype): Allow load/store register to be P register.
5253 (define_attr storereg): New.
5254 (define_cpu_unit anomaly_05000074): New.
5255 (define_insn_reservation dsp32shiftimm): New.
5256 (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
5257 (define_insn_reservation loadp): Cannot use slot2.
5258 (define_insn_reservation loadsp): Cannot use slot2.
5259 (define_insn_reservation storep): Cannot use slot2. Does not
5260 apply when working around 05000074.
5261 (define_insn_reservation storep_anomaly_05000074): New.
5262 (define_insn_reservation storei): Does not apply when working
5263 around 05000074.
5264 (define_insn_reservation storei_anomaly_05000074): New.
5265 (define_attr length): Add dsp32shiftimm case.
5266 (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
5267 ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
5268 movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
5269 ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
5270 Set type as dsp32shiftimm for dsp32shiftimm alternatives.
5271
5272 2009-09-07 Martin Jambor <mjambor@suse.cz>
5273
5274 PR middle-end/41282
5275 * tree-sra.c (create_artificial_child_access): Return NULL if
5276 build_ref_for_offset fails.
5277 (propagate_subacesses_accross_link): Allow build_ref_for_offset
5278 and create_artificial_child_access to fail.
5279
5280 2009-09-06 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
5281
5282 PR c++/41214
5283 * unwind-dw2.c (uw_init_context_1): Mark noinline.
5284 * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
5285 * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
5286
5287 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
5288
5289 * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
5290 block, ensure it has an exit edge. Emit a barrier after a jump.
5291
5292 2009-09-07 Nick Clifton <nickc@redhat.com>
5293
5294 * gcc.c (this_is_linker_script): New variable. Like
5295 this_is_library_file but for the %T constructor.
5296 (end_going_arg): If this_is_linker_script is set then locate the
5297 script and insert a --script switch before it
5298 (do_spec_2): Initialise this_is_linker_script.
5299 (do_spec_1): Likewise. Handle %T construct.
5300 (eval_spec_function): Preserve this_is_linker_script.
5301 * doc/invoke.texi: Document %T construct in spec files.
5302 * config/m32c/m32c.h (LIB_SPEC): Use it.
5303
5304 2009-09-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
5305
5306 * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
5307 * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
5308 when volatile flag is set.
5309 * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
5310
5311 2009-09-06 Eric Botcazou <ebotcazou@adacore.com>
5312
5313 PR bootstrap/41241
5314 * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
5315 (combine_stack_adjustments_for_block): Allow insns between stack
5316 adjustments and stores with corresponding pre-(dec|inc)rement or
5317 pre-modify operation.
5318
5319 2009-09-06 Jakub Jelinek <jakub@redhat.com>
5320
5321 PR bootstrap/41241
5322 * combine-stack-adj.c (struct csa_memlist): Rename to...
5323 (struct csa_reflist): ... this. Rename mem field to ref.
5324 (free_csa_memlist): Rename to...
5325 (free_csa_reflist): ... this.
5326 (record_one_stack_memref): Rename to...
5327 (record_one_stack_ref): ... this. Handle also REG_P.
5328 (try_apply_stack_adjustment): Handle also REG_P.
5329 (struct record_stack_memrefs_data): Rename to...
5330 (struct record_stack_refs_data): ... this. Rename memlist field to
5331 reflist.
5332 (record_stack_memrefs): Rename to...
5333 (record_stack_refs): ... this. For DEBUG_INSNs keep traversing
5334 subexpressions instead of failing when a MEM contains SP references.
5335 For SP itself in DEBUG_INSNs queue it also onto reflist chain.
5336 (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
5337
5338 2009-09-06 Richard Guenther <rguenther@suse.de>
5339
5340 PR middle-end/41144
5341 * tree.c (build_array_type): Do not record types marked
5342 with structural equality in the canonical type hashtable.
5343
5344 2009-09-06 Richard Guenther <rguenther@suse.de>
5345
5346 PR middle-end/41261
5347 * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
5348
5349 2009-09-05 Richard Guenther <rguenther@suse.de>
5350
5351 PR middle-end/41181
5352 * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
5353
5354 2009-09-05 Richard Guenther <rguenther@suse.de>
5355
5356 PR debug/41273
5357 * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
5358
5359 2009-09-05 Richard Guenther <rguenther@suse.de>
5360
5361 PR middle-end/41271
5362 * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
5363 before comparing function argument types.
5364
5365 2009-09-05 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5366
5367 PR target/41024
5368 * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
5369 the assembler.
5370
5371 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
5372
5373 Revert:
5374 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
5375
5376 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
5377 locators before emit_insn is called.
5378
5379 2009-09-04 Vladimir Makarov <vmakarov@redhat.com>
5380
5381 PR bootstrap/41241
5382 * ira.c (update_equiv_reg): Revert my previous patch for the PR.
5383 * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
5384 (reginfo_init): Don't call allocate_reg_info.
5385
5386 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
5387
5388 PR target/41262
5389 * config/alpha/alpha.c (alpha_does_function_need_gp): Use
5390 NONDEBUG_INSN_P instead of INSN_P.
5391
5392 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
5393
5394 PR debug/41225
5395 * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
5396
5397 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
5398
5399 PR target/41252
5400 * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
5401 pattern of the split.
5402
5403 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
5404
5405 * toplev.c (process_options): Move setter of flag_var_tracking
5406 before other tests that depend on it. Move down setter of
5407 flag_rename_registers. Don't enable var-tracking-assignments
5408 by default if selective scheduling is enabled. Warn if both
5409 are enabled.
5410
5411 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
5412
5413 * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
5414 comment. Use switch statement to catch overlaps between rtx
5415 and tree codes. Accept FUNCTION_DECLs in addition to those in...
5416 (IS_DECL_CODE): ... here. Remove.
5417 (check_value_is_not_decl): Remove.
5418 (dv_from_decl, dv_from_value): Check after conversion.
5419
5420 2009-09-04 Richard Guenther <rguenther@suse.de>
5421
5422 PR middle-end/41257
5423 * (cgraph_finalize_compilation_unit): Move finalizing aliases
5424 after emitting tunks. Move emitting thunks and ctors from ...
5425 (cgraph_optimize): ... here. Remove redundant
5426 cgraph_analyze_functions.
5427 * varasm.c (find_decl_and_mark_needed): Remove no longer
5428 necessary check.
5429 (finish_aliases_1): Adjust check for thunk aliases.
5430
5431 2009-09-04 Daniel Gutson <dgutson@codesourcery.com>
5432
5433 * config/arm/arm.md (ctzsi2): Added braces
5434 to avoid warning that broke booststrap.
5435
5436 2009-09-04 Martin Jambor <mjambor@suse.cz>
5437
5438 PR tree-optimization/41112
5439 * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
5440 handle variable-bounded arrays.
5441 (expr_with_var_bounded_array_refs_p): New function.
5442 (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
5443
5444 2009-09-04 Wolfgang Gellerich <gellerich@de.ibm.com>
5445
5446 * config/s390/2097.md: Removed two incorrect bypasses.
5447 (z10_fsimpdf): Fixed latency.
5448 (z10_fhex): New insn_reservation.
5449 (z10_floaddf): Fixed latency.
5450 (z10_floadsf): Fixed latency.
5451 (z10_ftrunctf): Fixed latency.
5452 (z10_ftruncdf): Fixed latency.
5453 * config/s390/s390.c (z10_cost): Fixed values.
5454 (s390_adjust_priority): Added z10 path.
5455 * config/s390/s390.md (type): Added fhex.
5456 (*mov<mode>_64dfp): Updated type attribute.
5457 (*mov<mode>_64): Updated type attribute.
5458 (*mov<mode>_31): Updated type attribute.
5459 (*mov<mode>"): Likewise.
5460 * config/s390/2084.md (x_fsimpdf): Updated condition.
5461
5462 2009-09-04 Andreas Krebbel <krebbel1@de.ibm.com>
5463
5464 * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
5465 RTXs in the predicate for operand 1.
5466
5467 2009-09-03 Daniel Gutson <dgutson@codesourcery.com>
5468
5469 * config/arm/arm.md (UNSPEC_RBIT): New constant.
5470 (rbitsi2): New insn.
5471 (ctzsi2): New expand.
5472 * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
5473
5474 2009-09-03 Martin Jambor <mjambor@suse.cz>
5475
5476 * tree-sra.c (duplicate_expr_for_different_base): Removed.
5477 (create_artificial_child_access): Use build_ref_for_offset instead
5478 of duplicate_expr_for_different_base.
5479 (propagate_subacesses_accross_link): Likewise.
5480
5481 2009-09-03 Richard Sandiford <rdsandiford@googlemail.com>
5482
5483 * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
5484 of INSN_P.
5485 (mips16e_collect_argument_saves): Skip debug instructions.
5486 (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
5487 (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
5488 (r10k_insert_cache_barriers): Likewise.
5489 (mips_reorg_process_insns): Likewise.
5490
5491 2009-09-03 Vladimir Makarov <vmakarov@redhat.com>
5492
5493 PR bootstrap/41241
5494 * ira.c (update_equiv_reg): Remove check on class likely spill.
5495
5496 2009-09-03 Jakub Jelinek <jakub@redhat.com>
5497
5498 PR debug/41236
5499 * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
5500 SIGN_EXTEND or ZERO_EXTEND. Don't assume there is a REG inside of
5501 it or SUBREG.
5502
5503 PR debug/41238
5504 * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
5505 the stack slot if it is passed by invisible reference.
5506 * var-tracking.c (vt_add_function_parameters): Handle arguments passed
5507 by invisible reference.
5508
5509 2009-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
5510
5511 * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5512 * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
5513 * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
5514 0.
5515 * config/bfin/sync.md: New file.
5516 * config/bfin/bfin.md: Include it.
5517 (UNSPEC_ATOMIC): New.
5518 (UNSPEC_ONES): Provide a unique number.
5519
5520 From Jie Zhang <jie.zhang@analog.com>:
5521 * config/bfin/bfin.c (ret_regs): New.
5522 (must_save_fp_p): Don't return true because of frame_pointer_needed.
5523 (must_save_rets_p): New.
5524 (n_regs_saved_by_prologue): Use must_save_rets_p instead of
5525 current_function_is_leaf.
5526 (do_link): Likewise.
5527 (do_unlink): Likewise.
5528 (expand_interrupt_handler_prologue): Use ret_regs array.
5529 (expand_interrupt_handler_epilogue): Use ret_regs array and
5530 pass return register to gen_return_internal.
5531 (bfin_expand_epilogue): Pass return register to
5532 gen_return_internal.
5533 (bfin_expand_call): Explicitly clobber RETS.
5534 * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
5535 * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
5536 call_insn_fdpic, call_value_insn_fdpic, call_symbol,
5537 call_value_symbol, call_insn, call_value_insn): Explicitly clobber
5538 RETS.
5539 (return_internal): Take a reg rtx rather than the register number.
5540
5541 2009-09-03 H.J. Lu <hongjiu.lu@intel.com>
5542
5543 * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
5544 when comparing against estimated_loop_iterations_int return.
5545
5546 2009-09-03 Richard Guenther <rguenther@suse.de>
5547
5548 * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
5549 eh_personality_libfunc.
5550
5551 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
5552
5553 * tree-parloops.c (separate_decls_in_region): Add space.
5554
5555 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
5556
5557 * tree-parloops.c (separate_decls_in_region): Change the condition
5558 checking if there are reductions in the loop.
5559
5560 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
5561
5562 PR tree-optimization/38275
5563 * tree-parloops.c (parallelize_loops): Replace profitability condition
5564 for expected number of iterations.
5565
5566 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
5567
5568 * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
5569 (bootstrap-debug): Explain conditions in which it becomes default.
5570 (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
5571 make it add to it.
5572
5573 2009-09-03 Namhyung Kim <namhyung@gmail.com>
5574
5575 * doc/invoke.texi (Optimize Options): Move
5576 -finline-small-functions to the -O2 list.
5577
5578 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
5579
5580 * toplev.c (process_options): Enable var-tracking-assignments
5581 by default if var-tracking is enabled.
5582
5583 2009-09-02 David Daney <ddaney@caviumnetworks.com>
5584
5585 * cfgbuild.c (find_bb_boundaries): Split blocks containing a
5586 barrier.
5587 * emit-rtl.c (prev_nonnote_insn_bb): New function.
5588 * rtl.h (prev_nonnote_insn_bb): Declare it.
5589
5590 2009-09-03 Diego Novillo <dnovillo@google.com>
5591
5592 * cgraph.c (cgraph_node_for_decl): New.
5593 * cgraph.h (cgraph_node_for_decl): Declare.
5594 * tree.c (host_integerp): Return 0 if T is NULL.
5595
5596 2009-09-03 Diego Novillo <dnovillo@google.com>
5597
5598 * tree.h (struct alias_pair): Move from varasm.c.
5599 (alias_pairs): Likewise.
5600 (TYPE_MAXVAL): Define.
5601 (TYPE_MINVAL): Define.
5602 (iterative_hash_host_wide_int): Declare.
5603 (remove_unreachable_alias_pairs): Declare.
5604 * tree-pass.h (pass_ipa_free_lang_data): Declare.
5605 * diagnostic.c (default_diagnostic_starter): Make extern.
5606 (default_diagnostic_finalizer): Make extern.
5607 * diagnostic.h (default_diagnostic_starter): Declare.
5608 (default_diagnostic_finalizer): Declare.
5609 (default_tree_printer): Declare.
5610 * toplev.c (default_tree_printer): Make extern.
5611
5612 2009-09-03 Richard Guenther <rguenther@suse.de>
5613 Diego Novillo <dnovillo@google.com>
5614
5615 * cgraph.c (cgraph_add_new_function): Remove gimplification.
5616 * cgraphunit.c (cgraph_expand_function): Do not emit
5617 associated thunks from here.
5618 (cgraph_emit_thunks): New.
5619 (cgraph_optimize): Call it.
5620 Return if any IPA pass finds an error.
5621 * varasm.c (finish_aliases_1): Ignore errorneous aliases used
5622 by thunks.
5623
5624 2009-09-03 Simon Baldwin <simonb@google.com>
5625 Rafael Espindola <espindola@google.com>
5626 Richard Guenther <rguenther@suse.de>
5627 Doug Kwan <dougkwan@google.com>
5628 Diego Novillo <dnovillo@google.com>
5629
5630 * tree.c: Include tree-pass.h, langhooks-def.h,
5631 diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
5632 (free_lang_data_in_type): New.
5633 (need_assembler_name_p): New.
5634 (free_lang_data_in_block): New.
5635 (free_lang_data_in_decl): New.
5636 (struct free_lang_data_d): New.
5637 (add_tree_to_fld_list): New.
5638 (find_decls_types_r): New.
5639 (get_eh_types_for_runtime): New.
5640 (find_decls_types_in_eh_region): New.
5641 (find_decls_types_in_node): New.
5642 (find_decls_types_in_var): New.
5643 (free_lang_data_in_cgraph): New.
5644 (free_lang_data): New.
5645 (gate_free_lang_data): New.
5646 (pass_ipa_free_lang_data): New.
5647
5648 2009-09-03 Diego Novillo <dnovillo@google.com>
5649
5650 * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
5651 * langhooks.h (struct lang_hooks): Add field free_lang_data.
5652 (lang_hooks): Remove const qualifier.
5653 * ipa.c (cgraph_remove_unreachable_nodes): Call
5654 remove_unreachable_alias_pairs.
5655 * except.c (add_type_for_runtime): Check if TYPE has
5656 already been converted.
5657 (lookup_type_for_runtime): Likewise.
5658 (check_handled): Handle converted types.
5659 * varasm.c (remove_unreachable_alias_pairs): New.
5660 * gimple.c: Include demangle.h.
5661 (gimple_decl_printable_name): New.
5662 (gimple_fold_obj_type_ref): New.
5663 * gimple.h (gimple_decl_printable_name): Declare.
5664 (gimple_fold_obj_type_ref): Declare.
5665 * passes.c (init_optimization_passes): Add pass
5666 pass_ipa_free_lang_data.
5667 * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
5668 (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
5669
5670 2009-09-03 Diego Novillo <dnovillo@google.com>
5671
5672 * c-lang.c (lang_hooks): Remove const qualifier.
5673
5674 2009-09-02 Loren James Rittle <ljrittle@acm.org>
5675
5676 * doc/install.texi (*-*-freebsd*): Update target information.
5677
5678 2009-09-02 Anatoly Sokolov <aesok@post.ru>
5679
5680 * hard-reg-set.h (call_fixed_regs): Remove.
5681 * reginfo.c (call_fixed_regs): Remove.
5682 (init_reg_sets_1): Remove initialization of call_fixed_regs.
5683 (globalize_reg): Don't use call_fixed_regs.
5684 * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
5685 call_fixed_regs.
5686
5687 2009-09-01 Michael Matz <matz@suse.de>
5688
5689 * expr.h (emit_storent_insn, expand_expr_real_1,
5690 expand_expr_real_2): Declare.
5691 * expr.c (emit_storent_insn, expand_expr_real_1,
5692 expand_expr_real_2): Export.
5693 (store_expr): Setting and evaluating dont_return_target is useless.
5694 (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
5695 LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
5696 * except.c (expand_resx_expr): Rename to ...
5697 (expand_resx_stmt): ... this. Rewrite to take gimple statement.
5698 * except.h (expand_resx_stmt): Declare.
5699 * stmt.c: Add include gimple.h
5700 (expand_asm_expr): Rename to ...
5701 (expand_asm_stmt): ... this. Rewrite to take gimple statement.
5702 (expand_case): Rewrite to take gimple statement.
5703 * tree.h (expand_asm_stmt): Declare.
5704 (expand_case): Change prototype.
5705 * Makefile.in (stmt.o): Depend on gimple.h.
5706 * builtins.c (expand_builtin_synchronize): Build gimple asm
5707 statement, not an ASM_EXPR.
5708 * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
5709 gimple_to_tree, release_stmt_tree): Remove.
5710 (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
5711 ggc_free, but hold comparison code and operands separately.
5712 Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
5713 (expand_call_stmt, expand_gimple_stmt_1,
5714 expand_gimple_stmt): New helpers.
5715 (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
5716 release_stmt_tree. Call expand_gimple_stmt instead.
5717 (expand_gimple_basic_block): Ditto.
5718
5719 * calls.c (emit_call_1): Don't look at EH regions here, make
5720 fntree parameter useless.
5721 (expand_call): New local rettype for TREE_TYPE(exp), use it
5722 throughout. Remove local p, use addr instead.
5723 Don't look at EH regions here.
5724
5725 2009-09-02 Vladimir Makarov <vmakarov@redhat.com>
5726
5727 * doc/invoke.texi (-fsched-pressure): Document it.
5728 (-fsched-reg-pressure-heuristic): Remove it.
5729
5730 * reload.c (ira.h): Include.
5731 (find_reloads): Add choosing reload on number of small spilled
5732 classes.
5733
5734 * haifa-sched.c (ira.h): Include.
5735 (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
5736 saved_reg_pressure, curr_reg_live, saved_reg_live,
5737 region_ref_regs): New variables.
5738 (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
5739 initiate_reg_pressure_info, setup_ref_regs,
5740 initiate_bb_reg_pressure_info, save_reg_pressure,
5741 restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
5742 functions.
5743 (setup_insn_reg_pressure_info): New function.
5744 (rank_for_schedule): Add pressure checking and insn issue time.
5745 Remove comparison of insn reg weights.
5746 (ready_sort): Set insn reg pressure info.
5747 (update_register_pressure, setup_insn_max_reg_pressure,
5748 update_reg_and_insn_max_reg_pressure,
5749 sched_setup_bb_reg_pressure_info): New functions.
5750 (schedule_insn): Add code for printing and updating reg pressure info.
5751 (find_set_reg_weight, find_insn_reg_weight): Remove.
5752 (ok_for_early_queue_removal): Do nothing if pressure_only_p.
5753 (debug_ready_list): Print reg pressure info.
5754 (schedule_block): Ditto. Check insn issue time.
5755 (sched_init): Set up sched_pressure_p. Allocate and set up some
5756 reg pressure related info.
5757 (sched_finish): Free some reg pressure related info.
5758 (fix_tick_ready): Make insn always ready if pressure_p.
5759 (init_h_i_d): Don't call find_insn_reg_weight.
5760 (haifa_finish_h_i_d): Free insn reg pressure info.
5761
5762 * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5763 ira_memory_move_cost, ira_class_hard_regs,
5764 ira_class_hard_regs_num, ira_no_alloc_regs,
5765 ira_available_class_regs, ira_reg_class_cover_size,
5766 ira_reg_class_cover, ira_class_translate): Move to ira.h.
5767
5768 * ira-lives.c (single_reg_class): Check mode to find how many
5769 registers are necessary for operand.
5770 (ira_implicitly_set_insn_hard_regs): New.
5771
5772 * common.opt (fsched-pressure): New options.
5773 (fsched-reg-pressure-heuristic): Remove.
5774
5775 * ira.c (setup_eliminable_regset): Rename to
5776 ira_setup_eliminable_regset. Make it external.
5777 (expand_reg_info): Pass cover class to setup_reg_classes.
5778 (ira): Call resize_reg_info instead of allocate_reg_info.
5779
5780 * sched-deps.c: Include ira.h.
5781 (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
5782 (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
5783 reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
5784 mark_insn_hard_regno_birth, mark_insn_reg_birth,
5785 mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
5786 mark_insn_reg_store, mark_insn_reg_clobber,
5787 setup_insn_reg_pressure_info): New.
5788 (sched_analyze_1): Update implicit_reg_pending_uses.
5789 (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
5790 Use them to create dependencies. Set insn reg uses and pressure
5791 info. Process reg_pending_uses in one place.
5792 (free_deps): Free implicit sets.
5793 (remove_from_deps): Remove implicit sets if necessary. Check
5794 implicit sets when clearing reg_last_in_use.
5795 (init_deps_global): Clear implicit_reg_pending_clobbers and
5796 implicit_reg_pending_uses.
5797
5798 * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
5799 ira_memory_move_cost, ira_class_hard_regs,
5800 ira_class_hard_regs_num, ira_no_alloc_regs,
5801 ira_available_class_regs, ira_reg_class_cover_size,
5802 ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
5803 (ira_setup_eliminable_regset, ira_set_pseudo_classes,
5804 ira_implicitly_set_insn_hard_regs): New prototypes.
5805
5806 * ira-costs.c (pseudo_classes_defined_p, allocno_p,
5807 cost_elements_num): New variables.
5808 (allocno_costs, total_costs): Rename to costs and
5809 total_allocno_costs.
5810 (COSTS_OF_ALLOCNO): Rename to COSTS.
5811 (allocno_pref): Rename to pref.
5812 (allocno_pref_buffer): Rename to pref_buffer.
5813 (common_classes): Rename to regno_cover_class.
5814 (COST_INDEX): New.
5815 (record_reg_classes): Set allocno attributes only if allocno_p.
5816 (record_address_regs): Ditto. Use COST_INDEX instead of ALLOCNO_NUM.
5817 (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
5818 and COSTS_OF_ALLOCNO.
5819 (print_costs): Rename to print_allocno_costs.
5820 (print_pseudo_costs): New.
5821 (process_bb_node_for_costs): Split into 2 functions with new
5822 function process_bb_for_costs. Pass BB to process_bb_for_costs.
5823 (find_allocno_class_costs): Rename to find_costs_and_classes. Add
5824 new parameter dump_file. Use cost_elements_num instead of
5825 ira_allocnos_num. Make one iteration if preferred classes were
5826 already calculated for scheduler. Make 2 versions of code
5827 depending on allocno_p.
5828 (setup_allocno_cover_class_and_costs): Check allocno_p. Use
5829 regno_cover_class and COSTS instead of common_classes and
5830 COSTS_OF_ALLOCNO.
5831 (init_costs, finish_costs): New.
5832 (ira_costs): Set up allocno_p and cost_elements_num. Call
5833 init_costs and finish_costs.
5834 (ira_set_pseudo_classes): New.
5835
5836 * rtl.h (allocate_reg_info): Remove.
5837 (resize_reg_info): Change return type.
5838 (reg_cover_class): New.
5839 (setup_reg_classes): Add new parameter.
5840
5841 * sched-int.h (struct deps_reg): New member implicit_sets.
5842 (sched_pressure_p, sched_regno_cover_class): New external definitions.
5843 (INCREASE_BITS): New macro.
5844 (struct reg_pressure_data, struct reg_use_data): New.
5845 (struct _haifa_insn_data): Remove reg_weight. Add members
5846 reg_pressure, reg_use_list, reg_set_list, and
5847 reg_pressure_excess_cost_change.
5848 (struct deps): New member implicit_sets.
5849 (pressure_p): New variable.
5850 (COVER_CLASS_BITS, INCREASE_BITS): New macros.
5851 (struct reg_pressure_data, struct reg_use_data): New.
5852 (INSN_REG_WEIGHT): Remove.
5853 (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
5854 INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
5855 (sched_init_region_reg_pressure_info,
5856 sched_setup_bb_reg_pressure_info): New prototypes.
5857
5858 * reginfo.c (struct reg_pref): New member coverclass.
5859 (reg_cover_class): New function.
5860 (reginfo_init, pass_reginfo_init): Move after free_reg_info.
5861 (reg_info_size): New variable.
5862 (allocate_reg_info): Make static. Setup reg_info_size.
5863 (resize_reg_info): Use reg_info_size. Return flag of resizing.
5864 (setup_reg_classes): Add a new parameter. Setup cover class too.
5865
5866 * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
5867 the dependencies.
5868
5869 * sched-rgn.c (deps_join): Set up implicit_sets.
5870 (schedule_region): Set up region and basic blocks pressure
5871 relative info.
5872
5873 * passes.c (init_optimization_passes): Move
5874 pass_subregs_of_mode_init before pass_sched.
5875
5876 2009-09-02 Martin Jambor <mjambor@suse.cz>
5877
5878 * tree-sra.c (struct access): New field grp_hint.
5879 (dump_access): Dump grp_hint.
5880 (sort_and_splice_var_accesses): Set grp_hint if a group is read
5881 multiple times.
5882 (analyze_access_subtree): Only scalarize accesses with grp_hint set or
5883 those which have been specifically read and somehow written to.
5884 (propagate_subacesses_accross_link): Set grp_hint of right child and
5885 also possibly of the left child.
5886
5887 2009-09-02 Jakub Jelinek <jakub@redhat.com>
5888
5889 * tree-object-size.c (addr_object_size): Always use object_size_type
5890 0 or 2 when determining the pointer pointed object size.
5891
5892 2009-09-02 Richard Guenther <rguenther@suse.de>
5893
5894 Revert
5895 2009-08-31 Richard Guenther <rguenther@suse.de>
5896
5897 * builtins.c (fold_builtin_memory_op): Use the alias oracle
5898 to query if the memory regions for memmove overlap.
5899 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
5900 asserts on pointers, instead deal with odd trees.
5901 (ptr_derefs_may_alias_p): Likewise.
5902 (refs_may_alias_p_1): Constructor bases also never alias.
5903
5904 2009-08-01 Christian Bruel <christian.bruel@st.com>
5905
5906 Revert:
5907 2009-07-31 Christian Bruel <christian.bruel@st.com>
5908 * gcc/config.gcc (sh*-*-elf): test with_libgloss.
5909
5910 2009-09-01 Alexandre Oliva <aoliva@redhat.com>
5911
5912 * doc/invoke.texi (-fvar-tracking-assignments): New.
5913 (-fvar-tracking-assignments-toggle): New.
5914 (-fdump-final-insns=file): Mark filename as optional.
5915 (--param min-nondebug-insn-uid): New.
5916 (-gdwarf-@{version}): Mention version 4.
5917 * opts.c (common_handle_option): Accept it.
5918 * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
5919 * regrename.c (regrename_optimize): Drop last. Don't count debug
5920 insns as uses. Don't reject change because of debug insn.
5921 (do_replace): Reject DEBUG_INSN as chain starter. Take base_regno
5922 from the chain starter, and check for inexact matches in DEBUG_INSNS.
5923 (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
5924 (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
5925 * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
5926 * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
5927 * doc/gimple.texi (is_gimple_debug): New.
5928 (gimple_debug_bind_p): New.
5929 (is_gimple_call, gimple_assign_cast_p): End sentence with period.
5930 * doc/install.texi (bootstrap-debug): More details.
5931 (bootstrap-debug-big, bootstrap-debug-lean): Document.
5932 (bootstrap-debug-lib): More details.
5933 (bootstrap-debug-ckovw): Update.
5934 (bootstrap-time): New.
5935 * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
5936 (insert_phi_nodes_for): Insert debug stmts.
5937 (rewrite_stmt): Take iterator. Insert debug stmts.
5938 (rewrite_enter_block): Adjust.
5939 (maybe_replace_use_in_debug_stmt): New.
5940 (rewrite_update_stmt): Use it.
5941 (mark_use_interesting): Return early for debug stmts.
5942 * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
5943 stmts before replacing stmt.
5944 (move_computations_stmt): Likewise.
5945 * ira-conflicts.c (add_copies): Skip debug insns.
5946 * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
5947 (regstat_bb_compute_ri): Skip debug insns.
5948 * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
5949 * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
5950 check_loop_closed_ssa_stmt): Skip debug stmts.
5951 * tree-tailcall.c (find_tail_calls): Likewise.
5952 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
5953 * tree.h (MAY_HAVE_DEBUG_STMTS): New.
5954 (build_var_debug_value_stat): Declare.
5955 (build_var_debug_value): Define.
5956 (target_for_debug_bind): Declare.
5957 * reload.c (find_equiv_reg): Skip debug insns.
5958 * rtlanal.c (reg_used_between_p): Skip debug insns.
5959 (side_effects_p): Likewise.
5960 (canonicalize_condition): Likewise.
5961 * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
5962 insns never depend on debug insns.
5963 (create_ddg_dep_no_link): Likewise.
5964 (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
5965 Don't add inter-loop dependencies for debug insns.
5966 (build_intra_loop_deps): Likewise.
5967 (create_ddg): Count debug insns.
5968 * ddg.h (struct ddg::num_debug): New.
5969 (num_backargs): Pair up with previous int field.
5970 * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
5971 -fcompare-debug-second.
5972 * final.c (get_attr_length_1): Skip debug insns.
5973 (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
5974 * gcc.c (invoke_as): Call compare-debug-dump-opt.
5975 (driver_self_specs): Map -fdump-final-insns to
5976 -fdump-final-insns=..
5977 (get_local_tick): New.
5978 (compare_debug_dump_opt_spec_function): Test for . argument and
5979 compute output name. Compute temp output spec without flag name.
5980 Compute -frandom-seed.
5981 (OPT): Undef after use.
5982 * cfgloopanal.c (num_loop_insns): Skip debug insns.
5983 (average_num_loop_insns): Likewise.
5984 * params.h (MIN_NONDEBUG_INSN_UID): New.
5985 * gimple.def (GIMPLE_DEBUG): New.
5986 * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
5987 * auto-inc-dec.c (merge_in_block): Skip debug insns.
5988 (merge_in_block): Fix whitespace.
5989 * toplev.c (flag_var_tracking): Update comment.
5990 (flag_var_tracking_assignments): New.
5991 (flag_var_tracking_assignments_toggle): New.
5992 (process_options): Don't open final insns dump file if we're not
5993 going to write to it. Compute defaults for var_tracking.
5994 * df-scan.c (df_insn_rescan_debug_internal): New.
5995 (df_uses_record): Handle debug insns.
5996 * haifa-sched.c (ready): Initialize n_debug.
5997 (contributes_to_priority): Skip debug insns.
5998 (dep_list_size): New.
5999 (priority): Use it.
6000 (rank_for_schedule): Likewise. Schedule debug insns as soon as
6001 they're ready. Disregard previous debug insns to make decisions.
6002 (queue_insn): Never queue debug insns.
6003 (ready_add, ready_remove_first, ready_remove): Count debug insns.
6004 (schedule_insn): Don't reject debug insns because of issue rate.
6005 (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
6006 (queue_to_ready): Skip and discount debug insns.
6007 (choose_ready): Let debug insns through.
6008 (schedule_block): Check boundary debug insns. Discount debug
6009 insns, schedule them early. Adjust whitespace.
6010 (set_priorities): Check for boundary debug insns.
6011 (add_jump_dependencies): Use dep_list_size.
6012 (prev_non_location_insn): New.
6013 (check_cfg): Use it.
6014 * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
6015 stmts.
6016 (remove_unused_ivs): Reset debug stmts.
6017 * modulo-sched.c (const_iteration_count): Skip debug insns.
6018 (res_MII): Discount debug insns.
6019 (loop_single_full_bb_p): Skip debug insns.
6020 (sms_schedule): Likewise.
6021 (sms_schedule_by_order): Likewise.
6022 (ps_has_conflicts): Likewise.
6023 * caller-save.c (refmarker_fn): New.
6024 (save_call_clobbered_regs): Replace regs with saved mem in
6025 debug insns.
6026 (mark_referenced_regs): Take pointer, mark and arg. Adjust.
6027 Call refmarker_fn mark for hardregnos.
6028 (mark_reg_as_referenced): New.
6029 (replace_reg_with_saved_mem): New.
6030 * ipa-pure-const.c (check_stmt): Skip debug stmts.
6031 * cse.c (cse_insn): Canonicalize debug insns. Skip them when
6032 searching back.
6033 (cse_extended_basic_block): Skip debug insns.
6034 (count_reg_usage): Likewise.
6035 (is_dead_reg): New, split out of...
6036 (set_live_p): ... here.
6037 (insn_live_p): Use it for debug insns.
6038 * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
6039 (execute_optimize_stdarg): Likewise.
6040 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
6041 * tree-ssa-propagate.c (substitute_and_fold): Don't regard
6042 changes in debug stmts as changes.
6043 * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
6044 (moveup_expr): Don't move across debug insns. Don't move
6045 debug insn if it would create a bookkeeping block.
6046 (moveup_expr_cached): Don't use cache for debug insns that
6047 are heads of blocks.
6048 (compute_av_set_inside_bb): Skip debug insns.
6049 (sel_rank_for_schedule): Schedule debug insns first. Remove
6050 dead code.
6051 (block_valid_for_bookkeeping_p); Support lax searches.
6052 (create_block_for_bookkeeping): Adjust block numbers when
6053 encountering debug-only blocks.
6054 (find_place_for_bookkeeping): Deal with debug-only blocks.
6055 (generate_bookkeeping_insn): Accept no place to insert.
6056 (remove_temp_moveop_nops): New argument full_tidying.
6057 (prepare_place_to_insert): Deal with debug insns.
6058 (advance_state_on_fence): Debug insns don't start cycles.
6059 (update_boundaries): Take fence as argument. Deal with
6060 debug insns.
6061 (schedule_expr_on_boundary): No full_tidying on debug insns.
6062 (fill_insns): Deal with debug insns.
6063 (track_scheduled_insns_and_blocks): Don't count debug insns.
6064 (need_nop_to_preserve_insn_bb): New, split out of...
6065 (remove_insn_from_stream): ... this.
6066 (fur_orig_expr_not_found): Skip debug insns.
6067 * rtl.def (VALUE): Move up.
6068 (DEBUG_INSN): New.
6069 * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
6070 (nearest_common_dominator_of_uses): Take debug_stmts argument.
6071 Set it if debug stmts are found.
6072 (statement_sink_location): Skip debug stmts. Propagate
6073 moving defs into debug stmts.
6074 * ifcvt.c (first_active_insn): Skip debug insns.
6075 (last_active_insns): Likewise.
6076 (cond_exec_process_insns): Likewise.
6077 (noce_process_if_block): Likewise.
6078 (check_cond_move_block): Likewise.
6079 (cond_move_convert_if_block): Likewise.
6080 (block_jumps_and_fallthru_p): Likewise.
6081 (dead_or_predicable): Likewise.
6082 * dwarf2out.c (debug_str_hash_forced): New.
6083 (find_AT_string): Add comment.
6084 (gen_label_for_indirect_string): New.
6085 (get_debug_string_label): New.
6086 (AT_string_form): Use it.
6087 (mem_loc_descriptor): Handle non-TLS symbols. Handle MINUS , DIV,
6088 MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING. Accept but
6089 discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
6090 several operations that cannot be represented with DWARF opcodes.
6091 (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND. Require
6092 dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
6093 (dwarf2out_var_location): Take during-call mark into account.
6094 (output_indirect_string): Update comment. Output if there are
6095 label and references.
6096 (prune_indirect_string): New.
6097 (prune_unused_types): Call it if debug_str_hash_forced.
6098 More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
6099 (dw_long_long_const): Remove.
6100 (struct dw_val_struct): Change val_long_long type to rtx.
6101 (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
6102 val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
6103 (output_die): Likewise. Use HOST_BITS_PER_WIDE_INT size of each
6104 component instead of HOST_BITS_PER_LONG.
6105 (output_loc_operands): Likewise. For const8* assert
6106 HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
6107 (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
6108 rather than HOST_BITS_PER_LONG is >= 64.
6109 (add_AT_long_long): Remove val_hi and val_lo arguments, add
6110 val_const_double.
6111 (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
6112 HOST_BITS_PER_LONG for dw_val_class_long_long.
6113 (add_const_value_attribute): Adjust add_AT_long_long caller. Don't
6114 handle TLS SYMBOL_REFs. If CONST wraps a constant, tail recurse.
6115 (dwarf_stack_op_name): Handle DW_OP_implicit_value and
6116 DW_OP_stack_value.
6117 (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
6118 Handle DW_OP_implicit_value.
6119 (extract_int): Move prototype earlier.
6120 (mem_loc_descriptor): For SUBREG punt if inner
6121 mode size is wider than DWARF2_ADDR_SIZE. Handle SIGN_EXTEND
6122 and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}. Handle
6123 EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
6124 UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
6125 (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
6126 instead of Pmode size.
6127 (loc_descriptor): Add MODE argument. Handle CONST_INT, CONST_DOUBLE,
6128 CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
6129 attempt to handle other expressions. Don't handle TLS SYMBOL_REFs.
6130 (concat_loc_descriptor, concatn_loc_descriptor,
6131 loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
6132 (add_location_or_const_value_attribute): Likewise. For single
6133 location loc_lists attempt to use add_const_value_attribute
6134 for constant decls. Add DW_AT_const_value even if
6135 NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
6136 in its expression.
6137 * cfgbuild.c (inside_basic_block_p): Handle debug insns.
6138 (control_flow_insn_p): Likewise.
6139 * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
6140 (separate_decls_in_region_debug_bind): New.
6141 (separate_decls_in_region): Process debug bind stmts afterwards.
6142 * recog.c (verify_changes): Handle debug insns.
6143 (extract_insn): Likewise.
6144 (peephole2_optimize): Skip debug insns.
6145 * dse.c (scan_insn): Skip debug insns.
6146 * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
6147 Pass it on.
6148 (setup_id_for_insn): Handle debug insns.
6149 (maybe_tidy_empty_bb): Adjust whitespace.
6150 (tidy_control_flow): Skip debug insns.
6151 (sel_remove_insn): Adjust for debug insns.
6152 (sel_estimate_number_of_insns): Skip debug insns.
6153 (create_insn_rtx_from_pattern): Handle debug insns.
6154 (create_copy_of_insn_rtx): Likewise.
6155 * sel-sched-.h (sel_bb_end): Declare.
6156 (sel_bb_empty_or_nop_p): New.
6157 (get_all_loop_exits): Use it.
6158 (_eligible_successor_edge_p): Likewise.
6159 (return_nop_to_pool): Adjust.
6160 * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
6161 * ira-lives.c (process_bb_node_lives): Skip debug insns.
6162 * gimple-pretty-print.c (dump_gimple_debug): New.
6163 (dump_gimple_stmt): Use it.
6164 (dump_bb_header): Skip gimple debug stmts.
6165 * regmove.c (optimize_reg_copy_1): Discount debug insns.
6166 (fixup_match_2): Likewise.
6167 (regmove_backward_pass): Likewise. Simplify combined
6168 replacement. Handle debug insns.
6169 * function.c (instantiate_virtual_regs): Handle debug insns.
6170 * function.h (struct emit_status): Add x_cur_debug_insn_uid.
6171 * print-rtl.h: Include cselib.h.
6172 (print_rtx): Print VALUEs. Split out and recurse for VAR_LOCATIONs.
6173 * df.h (df_inns_rescan_debug_internal): Declare.
6174 * gcse.c (alloc_hash_table): Estimate n_insns.
6175 (cprop_insn): Don't regard debug insns as changes.
6176 (bypass_conditional_jumps): Skip debug insns.
6177 (one_pre_gcse_pass): Adjust.
6178 (one_code_hoisting_pass): Likewise.
6179 (compute_ld_motion_mems): Skip debug insns.
6180 (one_cprop_pass): Adjust.
6181 * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
6182 (if_convertible_stmt_p): Handle debug stmts.
6183 * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
6184 * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
6185 * ira-build.c (create_bb_allocnos): Skip debug insns.
6186 * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
6187 (has_single_use): Likewise.
6188 (single_imm_use): Likewise.
6189 (num_imm_uses): Likewise.
6190 * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
6191 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
6192 (create_outofssa_var_map): Likewise.
6193 * lower-subreg.c (adjust_decomposed_uses): New.
6194 (resolve_debug): New.
6195 (decompose_multiword_subregs): Use it.
6196 * tree-dfa.c (find_referenced_vars): Skip debug stmts.
6197 * emit-rtl.c: Include params.h.
6198 (cur_debug_insn_uid): Define.
6199 (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
6200 (copy_rtx_if_shared_1): Handle debug insns.
6201 (reset_used_flags): Likewise.
6202 (set_used_flags): LIkewise.
6203 (get_max_insn_count): New.
6204 (next_nondebug_insn): New.
6205 (prev_nondebug_insn): New.
6206 (make_debug_insn_raw): New.
6207 (emit_insn_before_noloc): Handle debug insns.
6208 (emit_jump_insn_before_noloc): Likewise.
6209 (emit_call_insn_before_noloc): Likewise.
6210 (emit_debug_insn_before_noloc): New.
6211 (emit_insn_after_noloc): Handle debug insns.
6212 (emit_jump_insn_after_noloc): Likewise.
6213 (emit_call_insn_after_noloc): Likewise.
6214 (emit_debug_insn_after_noloc): Likewise.
6215 (emit_insn_after): Take loc from earlier non-debug insn.
6216 (emit_jump_insn_after): Likewise.
6217 (emit_call_insn_after): Likewise.
6218 (emit_debug_insn_after_setloc): New.
6219 (emit_debug_insn_after): New.
6220 (emit_insn_before): Take loc from later non-debug insn.
6221 (emit_jump_insn_before): Likewise.
6222 (emit_call_insn_before): Likewise.
6223 (emit_debug_insn_before_setloc): New.
6224 (emit_debug_insn_before): New.
6225 (emit_insn): Handle debug insns.
6226 (emit_debug_insn): New.
6227 (emit_jump_insn): Handle debug insns.
6228 (emit_call_insn): Likewise.
6229 (emit): Likewise.
6230 (init_emit): Take min-nondebug-insn-uid into account.
6231 Initialize cur_debug_insn_uid.
6232 (emit_copy_of_insn_after): Handle debug insns.
6233 * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
6234 location of single rhs in place.
6235 (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
6236 (floor_sdiv_adjust): New.
6237 (cell_sdiv_adjust): New.
6238 (cell_udiv_adjust): New.
6239 (round_sdiv_adjust): New.
6240 (round_udiv_adjust): New.
6241 (wrap_constant): Moved from cselib.
6242 (unwrap_constant): New.
6243 (expand_debug_expr): New.
6244 (expand_debug_locations): New.
6245 (expand_gimple_basic_block): Drop hiding redeclaration. Expand
6246 debug bind stmts.
6247 (gimple_expand_cfg): Expand debug locations.
6248 * cselib.c: Include tree-pass.h.
6249 (struct expand_value_data): New.
6250 (cselib_record_sets_hook): New.
6251 (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
6252 (cselib_clear_table): Move, and implemnet in terms of...
6253 (cselib_reset_table_with_next_value): ... this.
6254 (cselib_get_next_unknown_value): New.
6255 (discard_useless_locs): Don't discard preserved values.
6256 (cselib_preserve_value): New.
6257 (cselib_preserved_value_p): New.
6258 (cselib_preserve_definitely): New.
6259 (cselib_clear_preserve): New.
6260 (cselib_preserve_only_values): New.
6261 (new_cselib_val): Take rtx argument. Dump it in details.
6262 (cselib_lookup_mem): Adjust.
6263 (expand_loc): Take regs_active in struct. Adjust. Silence
6264 dumps unless details are requested.
6265 (cselib_expand_value_rtx_cb): New.
6266 (cselib_expand_value_rtx): Rename and reimplment in terms of...
6267 (cselib_expand_value_rtx_1): ... this. Adjust. Silence dumps
6268 without details. Copy more subregs. Try to resolve values
6269 using a callback. Wrap constants.
6270 (cselib_subst_to_values): Adjust.
6271 (cselib_log_lookup): New.
6272 (cselib_lookup): Call it.
6273 (cselib_invalidate_regno): Don't count preserved values as useless.
6274 (cselib_invalidate_mem): Likewise.
6275 (cselib_record_set): Likewise.
6276 (struct set): Renamed to cselib_set, moved to cselib.h.
6277 (cselib_record_sets): Adjust. Call hook.
6278 (cselib_process_insn): Reset table when it would be cleared.
6279 (dump_cselib_val): New.
6280 (dump_cselib_table): New.
6281 * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
6282 (remove_forwarder_block): Support moving debug stmts.
6283 * cselib.h (cselib_record_sets_hook): Declare.
6284 (cselib_expand_callback): New type.
6285 (cselib_expand_value_rtx_cb): Declare.
6286 (cselib_reset_table_with_next_value): Declare.
6287 (cselib_get_next_unknown_value): Declare.
6288 (cselib_preserve_value): Declare.
6289 (cselib_preserved_value_p): Declare.
6290 (cselib_preserve_only_values): Declare.
6291 (dump_cselib_table): Declare.
6292 * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
6293 (try_crossjump_to_edge): Likewise.
6294 (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
6295 dominated blocks when debug stmts are present.
6296 * simplify-rtx.c (delegitimize_mem_from_attrs): New.
6297 * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
6298 (set_var_live_on_entry): Likewise.
6299 * loop-invariant.c (find_invariants_bb): Skip debug insns.
6300 * cfglayout.c (curr_location, last_location): Make static.
6301 (set_curr_insn_source_location): Don't avoid bouncing.
6302 (get_curr_insn_source_location): New.
6303 (get_curr_insn_block): New.
6304 (duplicate_insn_chain): Handle debug insns.
6305 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
6306 into debug stmts.
6307 * common.opt (fcompare-debug): Move to sort order.
6308 (fdump-unnumbered-links): Likewise.
6309 (fvar-tracking-assignments): New.
6310 (fvar-tracking-assignments-toggle): New.
6311 * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
6312 because of debug stmts.
6313 (mark_stmt_if_obviously_necessary): Mark debug stmts.
6314 (eliminate_unnecessary_stmts): Walk dominated blocks before
6315 dominators.
6316 * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
6317 * ira.c (memref_used_between_p): Skip debug insns.
6318 (update_equiv_regs): Likewise.
6319 * sched-deps.c (sd_lists_size): Accept empty list.
6320 (sd_init_insn): Mark debug insns.
6321 (sd_finish_insn): Unmark them.
6322 (sd_add_dep): Reject non-debug deps on debug insns.
6323 (fixup_sched_groups): Give debug insns group treatment.
6324 Skip debug insns.
6325 (sched_analyze_reg): Don't mark debug insns for sched before call.
6326 (sched_analyze_2): Handle debug insns.
6327 (sched_analyze_insn): Compute next non-debug insn. Handle debug
6328 insns.
6329 (deps_analyze_insn): Handle debug insns.
6330 (deps_start_bb): Skip debug insns.
6331 (init_deps): Initialize last_debug_insn.
6332 * tree-ssa.c (target_for_debug_bind): New.
6333 (find_released_ssa_name): New.
6334 (propagate_var_def_into_debug_stmts): New.
6335 (propagate_defs_into_debug_stmts): New.
6336 (verify_ssa): Skip debug bind stmts without values.
6337 (warn_uninialized_vars): Skip debug stmts.
6338 * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
6339 * rtl.c (rtx_equal_p_cb): Handle VALUEs.
6340 (rtx_equal_p): Likewise.
6341 * ira-costs.c (scan_one_insn): Skip debug insns.
6342 (process_bb_node_for_hard_reg_moves): Likewise.
6343 * rtl.h (DEBUG_INSN_P): New.
6344 (NONDEBUG_INSN_P): New.
6345 (MAY_HAVE_DEBUG_INSNS): New.
6346 (INSN_P): Accept debug insns.
6347 (RTX_FRAME_RELATED_P): Likewise.
6348 (INSN_DELETED_P): Likewise
6349 (PAT_VAR_LOCATION_DECL): New.
6350 (PAT_VAR_LOCATION_LOC): New.
6351 (PAT_VAR_OCATION_STATUS): New.
6352 (NOTE_VAR_LOCATION_DECL): Reimplement.
6353 (NOTE_VAR_LOCATION_LOC): Likewise.
6354 (NOTE_VAR_LOCATION_STATUS): Likewise.
6355 (INSN_VAR_LOCATION): New.
6356 (INSN_VAR_LOCATION_DECL): New.
6357 (INSN_VAR_LOCATION_LOC): New.
6358 (INSN_VAR_LOCATION_STATUS): New.
6359 (gen_rtx_UNKNOWN_VAR_LOC): New.
6360 (VAR_LOC_UNKNOWN_P): New.
6361 (NOTE_DURING_CALL_P): New.
6362 (SCHED_GROUP_P): Accept debug insns.
6363 (emit_debug_insn_before): Declare.
6364 (emit_debug_insn_before_noloc): Declare.
6365 (emit_debug_insn_beore_setloc): Declare.
6366 (emit_debug_insn_after): Declare.
6367 (emit_debug_insn_after_noloc): Declare.
6368 (emit_debug_insn_after_setloc): Declare.
6369 (emit_debug_insn): Declare.
6370 (make_debug_insn_raw): Declare.
6371 (prev_nondebug_insn): Declare.
6372 (next_nondebug_insn): Declare.
6373 (delegitimize_mem_from_attrs): Declare.
6374 (get_max_insn_count): Declare.
6375 (wrap_constant): Declare.
6376 (unwrap_constant): Declare.
6377 (get_curr_insn_source_location): Declare.
6378 (get_curr_insn_block): Declare.
6379 * tree-inline.c (insert_debug_decl_map): New.
6380 (processing_debug_stmt): New.
6381 (remap_decl): Don't create new mappings in debug stmts.
6382 (remap_gimple_op_r): Don't add references in debug stmts.
6383 (copy_tree_body_r): Likewise.
6384 (remap_gimple_stmt): Handle debug bind stmts.
6385 (copy_bb): Skip debug stmts.
6386 (copy_edges_for_bb): Likewise.
6387 (copy_debug_stmt): New.
6388 (copy_debug_stmts): New.
6389 (copy_body): Copy debug stmts at the end.
6390 (insert_init_debug_bind): New.
6391 (insert_init_stmt): Take id. Skip and emit debug stmts.
6392 (setup_one_parameter): Remap variable earlier, register debug mapping.
6393 (estimate_num_insns): Skip debug stmts.
6394 (expand_call_inline): Preserve debug_map.
6395 (optimize_inline_calls): Check for no debug_stmts left-overs.
6396 (unsave_expr_now): Preserve debug_map.
6397 (copy_gimple_seq_and_replace_locals): Likewise.
6398 (tree_function_versioning): Check for no debug_stmts left-overs.
6399 Init and destroy debug_map as needed. Split edges unconditionally.
6400 (build_duplicate_type): Init and destroy debug_map as needed.
6401 * tree-inline.h: Include gimple.h instead of pointer-set.h.
6402 (struct copy_body_data): Add debug_stmts and debug_map.
6403 * sched-int.h (struct ready_list): Add n_debug.
6404 (struct deps): Add last_debug_insn.
6405 (DEBUG_INSN_SCHED_P): New.
6406 (BOUNDARY_DEBUG_INSN_P): New.
6407 (SCHEDULE_DEBUG_INSN_P): New.
6408 (sd_iterator_cond): Accept empty list.
6409 * combine.c (create_log_links): Skip debug insns.
6410 (combine_instructions): Likewise.
6411 (cleanup_auto_inc_dec): New. From Jakub Jelinek: Make sure the
6412 return value is always unshared.
6413 (struct rtx_subst_pair): New.
6414 (auto_adjust_pair): New.
6415 (propagate_for_debug_subst): New.
6416 (propagate_for_debug): New.
6417 (try_combine): Skip debug insns. Propagate removed defs into
6418 debug insns.
6419 (next_nonnote_nondebug_insn): New.
6420 (distribute_notes): Use it. Skip debug insns.
6421 (distribute_links): Skip debug insns.
6422 * tree-outof-ssa.c (set_location_for_edge): Likewise.
6423 * resource.c (mark_target_live_regs): Likewise.
6424 * var-tracking.c: Include cselib.h and target.h.
6425 (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
6426 MO_VAL_SET.
6427 (micro_operation_type_name): New.
6428 (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
6429 (struct micro_operation_def): Update comments.
6430 (decl_or_value): New type. Use instead of decls.
6431 (struct emit_note_data_def): Add vars.
6432 (struct attrs_def): Use decl_or_value.
6433 (struct variable_tracking_info_def): Add permp, flooded.
6434 (struct location_chain_def): Update comment.
6435 (struct variable_part_def): Use decl_or_value.
6436 (struct variable_def): Make var_part a variable length array.
6437 (valvar_pool): New.
6438 (scratch_regs): New.
6439 (cselib_hook_called): New.
6440 (dv_is_decl_p): New.
6441 (dv_is_value_p): New.
6442 (dv_as_decl): New.
6443 (dv_as_value): New.
6444 (dv_as_opaque): New.
6445 (dv_onepart_p): New.
6446 (dv_pool): New.
6447 (IS_DECL_CODE): New.
6448 (check_value_is_not_decl): New.
6449 (dv_from_decl): New.
6450 (dv_from_value): New.
6451 (dv_htab_hash): New.
6452 (variable_htab_hash): Use it.
6453 (variable_htab_eq): Support values.
6454 (variable_htab_free): Free from the right pool.
6455 (attrs_list_member, attrs_list_insert): Use decl_or_value.
6456 (attrs_list_union): Adjust.
6457 (attrs_list_mpdv_union): New.
6458 (tie_break_pointers): New.
6459 (canon_value_cmp): New.
6460 (unshare_variable): Return possibly-modified slot.
6461 (vars_copy_1): Adjust.
6462 (var_reg_decl_set): Adjust. Split out of...
6463 (var_reg_set): ... this.
6464 (get_init_value): Adjust.
6465 (var_reg_delete_and_set): Adjust.
6466 (var_reg_delete): Adjust.
6467 (var_regno_delete): Adjust.
6468 (var_mem_decl_set): Split out of...
6469 (var_mem_set): ... this.
6470 (var_mem_delete_and_set): Adjust.
6471 (var_mem_delete): Adjust.
6472 (val_store): New.
6473 (val_reset): New.
6474 (val_resolve): New.
6475 (variable_union): Adjust. Speed up merge of 1-part vars.
6476 (variable_canonicalize): Use unshared slot.
6477 (VALUED_RECURSED_INTO): New.
6478 (find_loc_in_1pdv): New.
6479 (struct dfset_merge): New.
6480 (insert_into_intersection): New.
6481 (intersect_loc_chains): New.
6482 (loc_cmp): New.
6483 (canonicalize_loc_order_check): New.
6484 (canonicalize_values_mark): New.
6485 (canonicalize_values_star): New.
6486 (variable_merge_over_cur): New.
6487 (variable_merge_over_src): New.
6488 (dataflow_set_merge): New.
6489 (dataflow_set_equiv_regs): New.
6490 (remove_duplicate_values): New.
6491 (struct dfset_post_merge): New.
6492 (variable_post_merge_new_vals): New.
6493 (variable_post_merge_perm_vals): New.
6494 (dataflow_post_merge_adjust): New.
6495 (find_mem_expr_in_1pdv): New.
6496 (dataflow_set_preserve_mem_locs): New.
6497 (dataflow_set_remove_mem_locs): New.
6498 (dataflow_set_clear_at_call): New.
6499 (onepart_variable_different_p): New.
6500 (variable_different_p): Use it.
6501 (dataflow_set_different_1): Adjust. Make detailed dump more verbose.
6502 (track_expr_p): Add need_rtl parameter. Don't generate rtl
6503 if not needed.
6504 (track_loc_p): Pass it true.
6505 (struct count_use_info): New.
6506 (find_use_val): New.
6507 (replace_expr_with_values): New.
6508 (log_op_type): New.
6509 (use_type): New, partially split out of...
6510 (count_uses): ... this. Count new micro-ops.
6511 (count_uses_1): Adjust.
6512 (count_stores): Adjust.
6513 (count_with_sets): New.
6514 (VAL_NEEDS_RESOLUTION): New.
6515 (VAL_HOLDS_TRACK_EXPR): New.
6516 (VAL_EXPR_IS_COPIED): New.
6517 (VAL_EXPR_IS_CLOBBERED): New.
6518 (add_uses): Adjust. Generate new micro-ops.
6519 (add_uses_1): Adjust.
6520 (add_stores): Generate new micro-ops.
6521 (add_with_sets): New.
6522 (find_src_status): Adjust.
6523 (find_src_set_src): Adjust.
6524 (compute_bb_dataflow): Use dataflow_set_clear_at_call.
6525 Handle new micro-ops. Canonicalize value equivalances.
6526 (vt_find_locations): Compute total size of hash tables for
6527 dumping. Perform merge for var-tracking-assignments. Don't
6528 disregard single-block loops.
6529 (dump_attrs_list): Handle decl_or_value.
6530 (dump_variable): Take variable. Deal with decl_or_value.
6531 (dump_variable_slot): New.
6532 (dump_vars): Use it.
6533 (dump_dataflow_sets): Adjust.
6534 (set_slot_part): New, extended to support one-part variables
6535 after splitting out of...
6536 (set_variable_part): ... this.
6537 (clobber_slot_part): New, split out of...
6538 (clobber_variable_part): ... this.
6539 (delete_slot_part): New, split out of...
6540 (delete_variable_part): .... this.
6541 (check_wrap_constant): New.
6542 (vt_expand_loc_callback): New.
6543 (vt_expand_loc): New.
6544 (emit_note_insn_var_location): Adjust. Handle values. Handle
6545 EMIT_NOTE_AFTER_CALL_INSN.
6546 (emit_notes_for_differences_1): Adjust. Handle values.
6547 (emit_notes_for_differences_2): Likewise.
6548 (emit_notes_for_differences): Adjust.
6549 (emit_notes_in_bb): Take pointer to set. Emit AFTER_CALL_INSN notes.
6550 Adjust. Handle new micro-ops.
6551 (vt_add_function_parameters): Adjust. Create and bind values.
6552 (vt_initialize): Adjust. Initialize scratch_regs and
6553 valvar_pool, flooded and perm.. Initialize and use cselib. Log
6554 operations. Move some code to count_with_sets and add_with_sets.
6555 (delete_debug_insns): New.
6556 (vt_debug_insns_local): New.
6557 (vt_finalize): Release permp, valvar_pool, scratch_regs. Finish
6558 cselib.
6559 (var_tracking_main): If var-tracking-assignments is enabled
6560 but var-tracking isn't, delete debug insns and leave. Likewise
6561 if we exceed limits or fail the stack adjustments tests, and
6562 after all var-tracking processing.
6563 More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
6564 (dataflow_set): Add traversed_vars.
6565 (value_chain, const_value_chain): New typedefs.
6566 (value_chain_pool, value_chains): New variables.
6567 (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
6568 add_value_chains, add_cselib_value_chains, remove_value_chain,
6569 remove_value_chains, remove_cselib_value_chains): New functions.
6570 (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
6571 shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
6572 static inlines.
6573 (shared_hash_find_slot_unshare, shared_hash_find_slot,
6574 shared_hash_find_slot_noinsert, shared_hash_find): Update.
6575 (dst_can_be_shared): New variable.
6576 (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
6577 Clear dst_can_be_shared. If set->traversed_vars is non-NULL and
6578 different from set->vars, look up slot again instead of using the
6579 passed in slot.
6580 (dataflow_set_init): Initialize traversed_vars.
6581 (variable_union): Use shared_hash_*. Use initially NO_INSERT
6582 lookup if set->vars is shared. Don't keep slot cleared before
6583 calling unshare_variable. Unshare set->vars if needed. Adjust
6584 unshare_variable callers. Clear dst_can_be_shared if needed.
6585 Even ->refcount == 1 vars must be unshared if set->vars is shared
6586 and var needs to be modified.
6587 (dataflow_set_union): Set traversed_vars during canonicalization.
6588 (VALUE_CHANGED, DECL_CHANGED): Define.
6589 (set_dv_changed, dv_changed_p): New static inlines.
6590 (track_expr_p): Clear DECL_CHANGED.
6591 (dump_dataflow_sets): Set it.
6592 (variable_was_changed): Call set_dv_changed.
6593 (emit_note_insn_var_location): Likewise.
6594 (changed_variables_stack): New variable.
6595 (check_changed_vars_1, check_changed_vars_2): New functions.
6596 (emit_notes_for_changes): Do nothing if changed_variables is
6597 empty. Traverse changed_variables with check_changed_vars_1,
6598 call check_changed_vars_2 on each changed_variables_stack entry.
6599 (emit_notes_in_bb): Add SET argument. Just clear it at the
6600 beginning, use it instead of local &set, don't destroy it at the end.
6601 (vt_emit_notes): Call dataflow_set_clear early on all
6602 VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
6603 computed set, dataflow_set_clear also VTI(bb)->in when we are
6604 done with the basic block. Initialize changed_variables_stack,
6605 free it afterwards. If ENABLE_CHECKING verify that after noting
6606 differences to an empty set value_chains hash table is empty.
6607 (vt_initialize): Initialize value_chains and value_chain_pool.
6608 (vt_finalize): Delete value_chains htab, free value_chain_pool.
6609 (variable_tracking_main): Call dump_dataflow_sets before calling
6610 vt_emit_notes, not after it.
6611 * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
6612 (propagate_var_def_into_debug_stmts): Declare.
6613 * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
6614 (df_set_note): Reject debug insns.
6615 (df_whole_mw_reg_dead_p): Take added_notes_p argument. Don't
6616 add notes to debug insns.
6617 (df_note_bb_compute): Adjust. Likewise.
6618 (df_simulate_uses): Skip debug insns.
6619 (df_simulate_initialize_backwards): Likewise.
6620 * reg-stack.c (subst_stack_regs_in_debug_insn): New.
6621 (subst_stack_regs_pat): Reject debug insns.
6622 (convert_regs_1): Handle debug insns.
6623 * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
6624 (print-rtl.o): Depend on cselib.h.
6625 (cselib.o): Depend on TREE_PASS_H.
6626 (var-tracking.o): Depend on cselib.h and TARGET_H.
6627 * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
6628 (init_ready_list): Skip boundary debug insns.
6629 (add_branch_dependences): Skip debug insns.
6630 (free_block_dependencies): Check for blocks with only debug insns.
6631 (compute_priorities): Likewise.
6632 * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
6633 (gimple_build_with_ops_stat): Take subcode as unsigned. Adjust
6634 all callers.
6635 (gimple_build_debug_bind_stat): New.
6636 (empty_body_p): Skip debug stmts.
6637 (gimple_has_side_effects): Likewise.
6638 (gimple_rhs_has_side_effects): Likewise.
6639 * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
6640 (gimple_build_debug_bind_stat): Declare.
6641 (gimple_build_debug_bind): Define.
6642 (is_gimple_debug): New.
6643 (gimple_debug_bind_p): New.
6644 (gimple_debug_bind_get_var): New.
6645 (gimple_debug_bind_get_value): New.
6646 (gimple_debug_bind_get_value_ptr): New.
6647 (gimple_debug_bind_set_var): New.
6648 (gimple_debug_bind_set_value): New.
6649 (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
6650 (gimple_debug_bind_reset_value): New.
6651 (gimple_debug_bind_has_value_p): New.
6652 (gsi_next_nondebug): New.
6653 (gsi_prev_nondebug): New.
6654 (gsi_start_nondebug_bb): New.
6655 (gsi_last_nondebug_bb): New.
6656 * sched-vis.c (print_pattern): Handle VAR_LOCATION.
6657 (print_insn): Handle DEBUG_INSN.
6658 * tree-cfg.c (remove_bb): Walk stmts backwards. Let loc
6659 of first insn prevail.
6660 (first_stmt): Skip debug stmts.
6661 (first_non_label_stmt): Likewise.
6662 (last_stmt): Likewise.
6663 (has_zero_uses_1): New.
6664 (single_imm_use_1): New.
6665 (verify_gimple_debug): New.
6666 (verify_types_in_gimple_stmt): Handle debug stmts.
6667 (verify_stmt): Likewise.
6668 (debug_loop_num): Skip debug stmts.
6669 (remove_edge_and_dominated_blocks): Remove dominators last.
6670 * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
6671 (linearize_expr): Likewise.
6672 * config/i386/i386.c (ix86_delegitimize_address): Call
6673 default implementation.
6674 * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
6675 (group_barrier_needed): Skip debug insns.
6676 (emit_insn_group_barriers): Likewise.
6677 (emit_all_insn_group_barriers): Likewise.
6678 (ia64_variable_issue): Handle debug insns.
6679 (ia64_dfa_new_cycle): Likewise.
6680 (final_emit_insn_group_barriers): Skip debug insns.
6681 (ia64_dwarf2out_def_steady_cfa): Take frame argument. Don't
6682 def cfa without frame.
6683 (process_set): Likewise.
6684 (process_for_unwind_directive): Pass frame on.
6685 * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
6686 (rs6000_delegitimize_address): New.
6687 (rs6000_debug_adjust_cost): Handle debug insns.
6688 (is_microcoded_insn): Likewise.
6689 (is_cracked_insn): Likewise.
6690 (is_nonpipeline_insn): Likewise.
6691 (insn_must_be_first_in_group): Likewise.
6692 (insn_must_be_last_in_group): Likewise.
6693 (force_new_group): Likewise.
6694 * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
6695 contains only debug insns.
6696 (rtl_merge_blocks): Skip debug insns.
6697 (purge_dead_edges): Likewise.
6698 (rtl_block_ends_with_call_p): Skip debug insns.
6699 * dce.c (deletable_insn_p): Handle VAR_LOCATION.
6700 (mark_reg_dependencies): Skip debug insns.
6701 * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
6702 * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
6703 * tree-ssa-threadedge.c
6704 (record_temporary_equivalences_from_stmts): Skip debug stmts.
6705 * regcprop.c (replace_oldest_value_addr): Skip debug insns.
6706 (replace_oldest_value_mem): Use ALL_REGS for debug insns.
6707 (copyprop_hardreg_forward_1): Handle debug insns.
6708 * reload1.c (reload): Skip debug insns. Replace unassigned
6709 pseudos in debug insns with their equivalences.
6710 (eliminate_regs_in_insn): Skip debug insns.
6711 (emit_input_reload_insns): Skip debug insns at first, adjust
6712 them later.
6713 * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
6714 (get_indirect_ref_operands): Pass opf_no_vops on.
6715 (get_expr_operands): Likewise. Skip debug stmts.
6716 (parse_ssa_operands): Scan debug insns with opf_no_vops.
6717
6718 2009-09-01 Richard Henderson <rth@redhat.com>
6719
6720 * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
6721 stmt_ends_pp_p statements at least once.
6722 * tree-vrp.c (vrp_initialize): Likewise.
6723 (vrp_visit_stmt): Be prepared for non-interesting stmts.
6724
6725 2009-09-01 Dodji Seketeli <dodji@redhat.com>
6726
6727 PR bootstrap/41205
6728 Fix AIX bootstrap after PR debug/30161
6729 * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
6730 that is a GNU extension.
6731 (tmpl_value_parm_die_table): Move the definition of this global
6732 outside #ifdef DWARF2_DEBUGGING_INFO region.
6733
6734 2009-09-01 Richard Guenther <rguenther@suse.de>
6735
6736 * tree.c (tree_expr_size): New function.
6737 * tree.h (tree_expr_size): Declare.
6738 * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
6739 * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
6740 * langhooks.c (lhd_expr_size): Remove.
6741 * langhooks.h (struct lang_hooks): Remove expr_size.
6742 * explow.c (expr_size): Use tree_expr_size.
6743 (int_expr_size): Likewise.
6744 * langhooks-def.h (lhd_expr_size): Remove.
6745 (LANG_HOOKS_EXPR_SIZE): Likewise.
6746 (LANG_HOOKS_INITIALIZER): Adjust.
6747
6748 2009-09-01 Richard Guenther <rguenther@suse.de>
6749
6750 * tree-flow.h (mark_addressable): Move declaration ...
6751 * tree.h (mark_addressable): ... here.
6752 * stmt.c (expand_asm_operands): Use mark_addressable, not
6753 lang_hooks.mark_addressable.
6754 * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
6755 LANG_HOOKS_MARK_ADDRESSABLE.
6756 * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
6757 * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
6758
6759 2009-08-31 Chris Demetriou <cgd@google.com>
6760
6761 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
6762 vectorize if not TARGET_SSE2.
6763
6764 2009-08-31 DJ Delorie <dj@redhat.com>
6765
6766 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
6767 registers if no coprocessor is enabled.
6768
6769 2009-08-31 Dodji Seketeli <dodji@redhat.com>
6770
6771 PR debug/30161
6772 * cgraph.h (cgraph_get_node): Declare ...
6773 * cgraph.c (cgraph_get_node): ... new function.
6774 * dwarf2out.c (gen_generic_params_dies,
6775 generic_parameter_die, tree_add_const_value_attribute_for_decl,
6776 make_ith_pack_parameter_name,
6777 append_entry_to_tmpl_value_parm_die_table,
6778 gen_remaining_tmpl_value_param_die_attribute): New functions.
6779 (gen_subprogram_die): Generate debug info for template parameters
6780 if debug info level is higher than DINFO_LEVEL_TERSE.
6781 Use tree_add_const_value_attribute_for_decl instead of
6782 tree_add_const_value_attribute.
6783 (gen_const_die): Use tree_add_const_value_attribute_for_decl
6784 instead of tree_add_const_value_attribute.
6785 (gen_struct_or_union_type_die): Generate debug
6786 info for template parameters if debug info level is higher than
6787 DINFO_LEVEL_TERSE.
6788 (tree_add_const_value_attribute): Handle integral and pointer
6789 constants. Update comment.
6790 (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
6791 (dwarf_attr_name): Support DW_AT_GNU_template_name.
6792 (reference_to_unused): Fix thinko. Remove redundant predicates from
6793 tests.
6794 (tree_add_const_value_attribute): Make this work for constant
6795 expressions only.
6796 tree_add_const_value_attribute_for_decl is to be used for variable
6797 DECLs now.
6798 (add_location_or_const_value_attribute): Use
6799 tree_add_const_value_attribute_for_decl now.
6800 (dwarf2out_finish): Emit the DW_AT_const_value attribute of
6801 DW_TAG_template_value_param DIEs after function DIEs have been
6802 emitted.
6803 * langhooks.h (lang_hooks_for_types): Add
6804 get_argument_pack_elems.
6805 (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
6806 (lang_hooks): Added get_innermost_generic_parms,
6807 get_innermost_generic_args.
6808 * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
6809 LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
6810 LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
6811 LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
6812
6813 2009-08-31 DJ Delorie <dj@redhat.com>
6814
6815 * config/mep/mep.c (machine_function): Add frame_locked flag. Set
6816 it once we start generating the prologue or epilogue.
6817 (mep_call_saves_register): If the frame is locked, re-use
6818 cached values.
6819 (mep_assign_save_slots): New, broken out from mep_expand_prologue.
6820 (mep_expand_prologue): Call it.
6821 (mep_expand_epilogue): Likewise.
6822 (mep_start_function): Use the same logic as mep_expand_prologue.
6823 (mep_pass_by_reference): Make logic more readable.
6824 (mep_return_in_memory): Zero-sized objects are passed in memory.
6825 (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
6826
6827 2009-08-31 Richard Guenther <rguenther@suse.de>
6828
6829 * builtins.c (fold_builtin_memory_op): Use the alias oracle
6830 to query if the memory regions for memmove overlap.
6831 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
6832 asserts on pointers, instead deal with odd trees.
6833 (ptr_derefs_may_alias_p): Likewise.
6834 (refs_may_alias_p_1): Constructor bases also never alias.
6835
6836 2009-08-31 Gerald Pfeifer <gerald@pfeifer.com>
6837
6838 * doc/install.texi (Final install): Adjust reference on where to
6839 order printed manuals.
6840
6841 2009-08-30 Olivier Hainque <hainque@adacore.com>
6842
6843 * dwarf2out.c (switch_to_frame_table_section): Move
6844 definition prior to first use.
6845
6846 2009-08-30 Richard Guenther <rguenther@suse.de>
6847
6848 PR tree-optimization/41186
6849 * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
6850 (ao_ref_init_from_ptr_and_size): New function.
6851 (ref_maybe_used_by_call_p_1): Be more precise tracking
6852 used ranges for builtin functions.
6853 (ref_maybe_used_by_call_p): Adjust.
6854 (call_may_clobber_ref_p_1): Be more precise tracking clobbered
6855 ranges for builtin functions.
6856 * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
6857
6858 2009-08-30 Alan Modra <amodra@bigpond.net.au>
6859
6860 PR target/41081
6861 * fwprop.c (get_reg_use_in): Delete.
6862 (free_load_extend): New function.
6863 (forward_propagate_subreg): Use it.
6864
6865 2009-08-29 Kaz Kojima <kkojima@gcc.gnu.org>
6866
6867 * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
6868
6869 2009-08-29 Kai Tietz<kai.tietz@onevision.com>
6870
6871 PR/41184
6872 * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
6873 padding.
6874
6875 2009-08-29 Douglas B Rupp <rupp@gnat.com>
6876
6877 * crtstuff.c (__do_global_dtors_aux): Use atexit if no
6878 fini or fini_array section.
6879
6880 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6881
6882 * graphite-dependences.c (graphite_legal_transform_bb): Call
6883 pbb_remove_duplicate_pdrs.
6884 * graphite-poly.c (can_collapse_pdr): Removed.
6885 (pdr_find_duplicate): Removed.
6886 (can_collapse_pdrs): New.
6887 (pbb_remove_duplicate_pdrs): New.
6888 (new_poly_dr): Do not look for duplicates.
6889 * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
6890 (PBB_PDR_DUPLICATES_REMOVED): New.
6891 (pbb_remove_duplicate_pdrs): Declared.
6892
6893 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6894
6895 * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
6896 the strides by multiplying by PDR_NB_REFS.
6897 * graphite-poly.c (can_collapse_pdr): New.
6898 (pdr_find_duplicate): New.
6899 (new_poly_dr): Call pdr_find_duplicate. Collapse duplicate PDRs.
6900 Initialize PDR_NB_REFS.
6901 * graphite-poly.h (struct poly_dr): Add field nb_refs.
6902 (PDR_NB_REFS): New.
6903 (new_poly_dr): Number of subscripts is a graphite_dim_t.
6904
6905 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6906
6907 PR middle-end/40965
6908 * graphite-poly.c (apply_poly_transforms): Remove legality test before
6909 any transform.
6910
6911 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6912
6913 * graphite-dependences.c (pddr_original_scattering): Return NULL
6914 for read-read dependence relations.
6915 * graphite-poly.h (enum poly_dr_type): Fix comment.
6916 (pdr_read_p): New.
6917 (pdr_write_p): New.
6918 (pdr_may_write_p): New.
6919
6920 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6921
6922 * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
6923 (struct poly_dr): Same.
6924 (new_poly_dr): Same.
6925 * graphite-poly.c (new_poly_dr): Same.
6926 * graphite-dependences.c (dot_deps): Disable call to system.
6927
6928 2009-08-28 Cary Coutant <ccoutant@google.com>
6929
6930 PR debug/41063
6931 * dwarf2out.c (gen_type_die_with_usage): Use proper context for
6932 struct/union/enum types local to a function.
6933
6934 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
6935 Sebastian Pop <sebastian.pop@amd.com>
6936
6937 * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
6938 pbb_strip_mine_time_depth. Changed the implementation so that
6939 transformation is expressed as a transformation on
6940 time (scatttering) dimensions. Also, ensures that the 2d+1
6941 scheduling format is preserved.
6942 (pbb_strip_mine_profitable_p): Profitability is based on the
6943 iteration number of a given time (scattering) dimension,
6944 and not on a original loop depth dimension.
6945 (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
6946 (pbb_do_strip_mine): Call psct_dynamic_dim.
6947 * graphite-poly.c (pbb_number_of_iterations_at_time): New.
6948 * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
6949 (pbb_nb_dynamic_scattering_transform): New.
6950 (psct_dynamic_dim): New.
6951
6952 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
6953
6954 * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6955 * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
6956 * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
6957 * graphite-interchange.c (build_linearized_memory_access): Same.
6958 (memory_stride_in_loop): Same.
6959
6960 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6961
6962 * graphite-dependences.c (pddr_original_scattering): New.
6963 (graphite_legal_transform_dr): Call pddr_original_scattering.
6964 (dot_deps_1): New.
6965 (dot_deps): New.
6966 * graphite-dependences.h (dot_deps): Declared.
6967 * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
6968 (print_pdr): Print PDR_ID.
6969 * graphite-poly.h (struct poly_dr): Add field id.
6970 (PDR_ID): New.
6971 (pbb_index): New.
6972 * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
6973
6974 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6975
6976 * graphite-dependences.c (graphite_carried_dependence_level_k): Do
6977 not delete the original dependence relation.
6978
6979 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
6980
6981 * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
6982 (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
6983 (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
6984 (free_poly_ddr): New.
6985 (pddr_is_empty): New.
6986 (dependence_polyhedron_1): Now returns a poly_ddr_p.
6987 (dependence_polyhedron): Same. Remove useless gcc_assert.
6988 Remove fprintfs.
6989 (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
6990 (graphite_carried_dependence_level_k): Call pddr_is_empty.
6991 * graphite-dependences.h (enum poly_dependence_kind): New.
6992 (poly_dr_pair): Renamed poly_ddr. Added a field kind.
6993 (PDRP_SOURCE): Renamed PDDR_SOURCE.
6994 (PDRP_SINK): Renamed PDDR_SINK.
6995 (PDRP_DDP): Renamed PDDR_DDP.
6996 (PDDR_KIND): New.
6997 (free_poly_ddr): Declared.
6998 * graphite-poly.c (new_scop): Use the new hash function names.
6999 * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
7000 into original_pddrs.
7001 (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
7002
7003 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
7004
7005 * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
7006 bounds with LT_EXPR to make niter analysis more precise on code
7007 generated by Graphite.
7008
7009 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
7010
7011 * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
7012 (graphite_legal_transform_bb): Same.
7013 (poly_drs_may_alias_p): Same.
7014
7015 2009-08-28 Richard Guenther <rguenther@suse.de>
7016
7017 * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
7018
7019 2009-08-28 Jan Beulich <jbeulich@novell.com>
7020
7021 * config/i386/netware.c: Include langhooks.h.
7022 (i386_nlm_encode_section_info): Simplify.
7023 (netware_override_options): Delete.
7024 * config/i386/netware.h (netware_override_options): Delete
7025 declaration.
7026 (OVERRIDE_OPTIONS): Delete definition.
7027 (SUBTARGET_OVERRIDE_OPTIONS): Define.
7028 (ASM_COMMENT_START): Define.
7029 * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
7030
7031 2009-08-28 Jan Beulich <jbeulich@novell.com>
7032
7033 * configure.ac: For in-tree ld, do a plain version check to
7034 determine whether comdat groups are supported.
7035 * configure: Regenerate.
7036
7037 2009-08-28 Olivier Hainque <hainque@adacore.com>
7038
7039 * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
7040 always defined. Reflect definition or absence of such for
7041 COLLECT_EXPORT_LIST. Readability helper.
7042 (scanfilter): New enum, to help control what symbols
7043 are to be considered or ignored by scan_prog_file.
7044 (enum pass): Rename as "scanpass", moved together with scanfilter
7045 prior to scan_prog_file's prototype.
7046 (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
7047 Group prototype with the scanpass/scanfilter definitions, factorize
7048 head comments for the several implementations at the prototype.
7049 (main): Reorganize the first pass link control to let AIX
7050 drag only the needed frame tables in executables. Prevent
7051 frame tables collection during the scan aimed at static ctors.
7052 Pre-link and scan for frame tables later to compensate.
7053 * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
7054 A C statement to issue assembly directives that create a reference
7055 to the given DWARF table identifier label from the current function
7056 section.
7057 * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
7058 to differentiate first time section entry. Only emit a .data
7059 tables start identifier label the first time around.
7060 (switch_to_frame_table_section): New function. Helper for
7061 output_call_frame_info to switch possibly BACK into the eh_frame
7062 or the debug_frame section depending on FOR_EH.
7063 (output_call_frame_info): Use helper to first enter the proper
7064 frame section.
7065 (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
7066 emit a link to the frame table start label from each function
7067 section.
7068 * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
7069 New function. Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
7070 * config/rs6000/rs6000-protos.h: Declare it.
7071 * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
7072
7073 2009-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
7074
7075 * config/sh/sh.c (split_branches): Check the result of
7076 next_active_insn.
7077
7078 2009-08-27 Steve Ellcey <sje@cup.hp.com>
7079
7080 * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
7081 using -pthread -fopenmp
7082
7083 2009-08-27 Gerald Pfeifer <gerald@pfeifer.com>
7084
7085 * doc/service.texi (service directory): Update URL.
7086
7087 2009-08-27 Uros Bizjak <ubizjak@gmail.com>
7088
7089 PR rtl-optimization/40861
7090 * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
7091 extract word from a multi-word subreg for negative byte positions.
7092
7093 2009-08-27 Tristan Gingold <gingold@adacore.com>
7094 Douglas B Rupp <rupp@gnat.com>
7095
7096 * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
7097 (SECTION_VMS_OVERLAY): Define.
7098 (ia64_vms_common_object_attribute): Added. Handle the "common_object"
7099 attribute.
7100 (ia64_vms_elf_asm_named_section): Added. Generate .section pseudo-op
7101 for common_object.
7102 (ia64_vms_output_aligned_decl_common): Added. Generate pseudo-op for
7103 common_object declarations.
7104 (ia64_section_type_flags): Set section flag for common_object.
7105 * config/ia64/ia64-protos.h
7106 (ia64_vms_output_aligned_decl_common): Declare.
7107 (ia64_vms_elf_asm_named_section): Declare.
7108
7109 2009-08-27 Michael Matz <matz@suse.de>
7110
7111 * expr.c (expand_expr_real_2): New function taking exploded
7112 unary or binary expression, split out from ...
7113 (expand_expr_real_1): ... here. Move over all unary/binary
7114 switch parts to above function, in particular these codes:
7115 PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
7116 MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
7117 ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
7118 FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
7119 FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
7120 BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
7121 BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
7122 LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
7123 NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
7124 UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
7125 WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
7126 VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
7127 VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
7128 VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
7129 VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
7130 VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
7131 VEC_PACK_FIX_TRUNC_EXPR.
7132 (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
7133 full expression.
7134
7135 2009-08-27 Richard Guenther <rguenther@suse.de>
7136
7137 * gengtype.c (main): Handle uint64_t.
7138 * ipa-utils.c (get_base_var): Indent properly.
7139 * tree-ssa-live.c (debug_scope_block): New function.
7140 * tree-flow.h (debug_scope_block): Declare.
7141 * tree-ssa-copy.c (replace_exp_1): Add vertical space.
7142 * basic-block.h (enum profile_status): Rename to
7143 enum profile_status_d.
7144 (x_profile_status): Adjust type.
7145
7146 2009-08-27 Dodji Seketeli <dodji@redhat.com>
7147
7148 PR debug/41170
7149 * dwarf2out.c (get_context_die): Declare this static function.
7150 (gen_type_die_with_usage): Make sure a DIE is a generated for
7151 the context of a typedef.
7152
7153 2009-08-26 Anatoly Sokolov <aesok@post.ru>
7154
7155 * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
7156 switch.
7157
7158 2009-08-26 Richard Sandiford <rdsandiford@googlemail.com>
7159
7160 * config/mips/mips-protos.h (mips_output_sync): Declare.
7161 (mips_sync_loop_insns): Likewise.
7162 (mips_output_sync_loop): Replace first two parameters with an rtx.
7163 * config/mips/mips.c (mips_multi_member): New structure.
7164 (mips_multi_members): New variable.
7165 (mips_multi_start): New function.
7166 (mips_multi_add): Likewise.
7167 (mips_multi_add_insn): Likewise.
7168 (mips_multi_add_label): Likewise.
7169 (mips_multi_last_index): Likewise.
7170 (mips_multi_copy_insn): Likewise.
7171 (mips_multi_set_operand): Likewise.
7172 (mips_multi_write): Likewise.
7173 (mips_print_operand_punctuation): Remove '%|' and '%-'.
7174 (mips_init_print_operand_punct): Update accordingly.
7175 (mips_start_ll_sc_sync_block): New function.
7176 (mips_end_ll_sc_sync_block): Likewise.
7177 (mips_output_sync): Likewise.
7178 (mips_sync_insn1_template): Likewise.
7179 (mips_sync_insn2_template): Likewise.
7180 (mips_get_sync_operand): Likewise.
7181 (mips_process_sync_loop): Likewise.
7182 (mips_output_sync_loop): Use mips_process_sync_loop.
7183 (mips_sync_loop_insns): New function.
7184 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
7185 (MIPS_COMPARE_AND_SWAP_12): Likewise.
7186 (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
7187 (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
7188 (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
7189 (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
7190 (MIPS_SYNC_OLD_OP_12): Likewise.
7191 (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
7192 (MIPS_SYNC_NEW_OP_12): Likewise.
7193 (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
7194 (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
7195 (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
7196 (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
7197 (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
7198 (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
7199 * config/mips/mips.md (sync_mem): New attribute.
7200 (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
7201 (sync_exclusive_mask, sync_required_oldval): Likewise.
7202 (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
7203 (sync_release_barrier): Likewise.
7204 (length): Handle sync loops.
7205 (sync): Use mips_output_sync.
7206 * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
7207 (sync_compare_and_swap<mode>): Set the new sync_* attributes
7208 and use mips_output_sync_loop.
7209 (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
7210 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
7211 (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
7212 (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
7213 (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
7214 (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
7215 (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
7216 (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
7217 (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
7218
7219 2009-08-26 Richard Guenther <rguenther@suse.de>
7220
7221 PR middle-end/41163
7222 * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
7223 the types to not match.
7224 * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
7225 verification.
7226 * tree-ssa.c (useless_type_conversion_p): Conversions to
7227 pointers to unprototyped functions are useless.
7228
7229 2009-08-26 Richard Guenther <rguenther@suse.de>
7230
7231 * tree-ssa-structalias.c (create_variable_info_for): Remove strange
7232 whole-program condition, prepare to be called for non-globals.
7233 (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
7234 params build a representative with known type and track its fields.
7235
7236 2009-08-26 Uros Bizjak <ubizjak@gmail.com>
7237
7238 * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
7239 clearing by a taken branch.
7240 (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
7241 effectively after bbro pass.
7242 (sync_nand<mode>): Ditto.
7243 (sync_old_<fetchop_name><mode>): Ditto.
7244 (sync_old_nand<mode>): Ditto.
7245 (sync_new_<fetchop_name><mode>): Dito.
7246 (sync_new_nand<mode>): Ditto.
7247 (sync_compare_and_swap<mode>_1): Ditto.
7248 (*sync_compare_and_swap<mode>): Ditto.
7249 (sync_lock_test_and_set<mode>_1): Ditto.
7250 ("sync_lock_test_and_set<mode>): Ditto.
7251
7252 2009-08-25 Douglas B Rupp <rupp@gnat.com>
7253
7254 * hwint.h (HOST_LONG_FORMAT): New macro
7255 * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
7256 Use HOST_PTR_PRINTF.
7257 * system.h (HOST_PTR_PRINTF): Resurrect old macro
7258 * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
7259 (HOST_PTR_PRINTF): Document.
7260
7261 2009-08-25 Jan Hubicka <jh@suse.cz>
7262
7263 * config/i386/bmmintrin.h: Replace by #error.
7264
7265 Revert:
7266 Michael Meissner <michael.meissner@amd.com>
7267 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
7268 Tony Linthicum <tony.linthicum@amd.com>
7269
7270 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
7271 (TARGET_ROUND): New macro for the round/ptest instructions which
7272 are shared between SSE4.1 and SSE5.
7273 (OPTION_MASK_ISA_ROUND): Ditto.
7274 (OPTION_ISA_ROUND): Ditto.
7275 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
7276 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
7277
7278 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
7279 (-mfused-madd): New switch to give users control over whether the
7280 compiler optimizes to use the multiply/add SSE5 instructions.
7281
7282 * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
7283 (ix86_handle_option): Turn off 3dnow if -msse5.
7284 (override_options): Add SSE5 support.
7285 (print_operand): %Y prints comparison codes for SSE5 com/pcom
7286 instructions.
7287 (ix86_expand_sse_movcc): Add SSE5 support.
7288 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
7289 vector type to the next largest size.
7290 (ix86_expand_sse5_pack): New function to use pperm to pack a
7291 vector type to the next smallest size.
7292 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
7293 (IX86_BUILTIN_FMADDSD): Ditto.
7294 (IX86_BUILTIN_FMADDPS): Ditto.
7295 (IX86_BUILTIN_FMADDPD): Ditto.
7296 (IX86_BUILTIN_FMSUBSS): Ditto.
7297 (IX86_BUILTIN_FMSUBSD): Ditto.
7298 (IX86_BUILTIN_FMSUBPS): Ditto.
7299 (IX86_BUILTIN_FMSUBPD): Ditto.
7300 (IX86_BUILTIN_FNMADDSS): Ditto.
7301 (IX86_BUILTIN_FNMADDSD): Ditto.
7302 (IX86_BUILTIN_FNMADDPS): Ditto.
7303 (IX86_BUILTIN_FNMADDPD): Ditto.
7304 (IX86_BUILTIN_FNMSUBSS): Ditto.
7305 (IX86_BUILTIN_FNMSUBSD): Ditto.
7306 (IX86_BUILTIN_FNMSUBPS): Ditto.
7307 (IX86_BUILTIN_FNMSUBPD): Ditto.
7308 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
7309 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
7310 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
7311 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
7312 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
7313 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
7314 (IX86_BUILTIN_PPERM): Ditto.
7315 (IX86_BUILTIN_PERMPS): Ditto.
7316 (IX86_BUILTIN_PERMPD): Ditto.
7317 (IX86_BUILTIN_PMACSSWW): Ditto.
7318 (IX86_BUILTIN_PMACSWW): Ditto.
7319 (IX86_BUILTIN_PMACSSWD): Ditto.
7320 (IX86_BUILTIN_PMACSWD): Ditto.
7321 (IX86_BUILTIN_PMACSSDD): Ditto.
7322 (IX86_BUILTIN_PMACSDD): Ditto.
7323 (IX86_BUILTIN_PMACSSDQL): Ditto.
7324 (IX86_BUILTIN_PMACSSDQH): Ditto.
7325 (IX86_BUILTIN_PMACSDQL): Ditto.
7326 (IX86_BUILTIN_PMACSDQH): Ditto.
7327 (IX86_BUILTIN_PMADCSSWD): Ditto.
7328 (IX86_BUILTIN_PMADCSWD): Ditto.
7329 (IX86_BUILTIN_PHADDBW): Ditto.
7330 (IX86_BUILTIN_PHADDBD): Ditto.
7331 (IX86_BUILTIN_PHADDBQ): Ditto.
7332 (IX86_BUILTIN_PHADDWD): Ditto.
7333 (IX86_BUILTIN_PHADDWQ): Ditto.
7334 (IX86_BUILTIN_PHADDDQ): Ditto.
7335 (IX86_BUILTIN_PHADDUBW): Ditto.
7336 (IX86_BUILTIN_PHADDUBD): Ditto.
7337 (IX86_BUILTIN_PHADDUBQ): Ditto.
7338 (IX86_BUILTIN_PHADDUWD): Ditto.
7339 (IX86_BUILTIN_PHADDUWQ): Ditto.
7340 (IX86_BUILTIN_PHADDUDQ): Ditto.
7341 (IX86_BUILTIN_PHSUBBW): Ditto.
7342 (IX86_BUILTIN_PHSUBWD): Ditto.
7343 (IX86_BUILTIN_PHSUBDQ): Ditto.
7344 (IX86_BUILTIN_PROTB): Ditto.
7345 (IX86_BUILTIN_PROTW): Ditto.
7346 (IX86_BUILTIN_PROTD): Ditto.
7347 (IX86_BUILTIN_PROTQ): Ditto.
7348 (IX86_BUILTIN_PROTB_IMM): Ditto.
7349 (IX86_BUILTIN_PROTW_IMM): Ditto.
7350 (IX86_BUILTIN_PROTD_IMM): Ditto.
7351 (IX86_BUILTIN_PROTQ_IMM): Ditto.
7352 (IX86_BUILTIN_PSHLB): Ditto.
7353 (IX86_BUILTIN_PSHLW): Ditto.
7354 (IX86_BUILTIN_PSHLD): Ditto.
7355 (IX86_BUILTIN_PSHLQ): Ditto.
7356 (IX86_BUILTIN_PSHAB): Ditto.
7357 (IX86_BUILTIN_PSHAW): Ditto.
7358 (IX86_BUILTIN_PSHAD): Ditto.
7359 (IX86_BUILTIN_PSHAQ): Ditto.
7360 (IX86_BUILTIN_FRCZSS): Ditto.
7361 (IX86_BUILTIN_FRCZSD): Ditto.
7362 (IX86_BUILTIN_FRCZPS): Ditto.
7363 (IX86_BUILTIN_FRCZPD): Ditto.
7364 (IX86_BUILTIN_CVTPH2PS): Ditto.
7365 (IX86_BUILTIN_CVTPS2PH): Ditto.
7366 (IX86_BUILTIN_COMEQSS): Ditto.
7367 (IX86_BUILTIN_COMNESS): Ditto.
7368 (IX86_BUILTIN_COMLTSS): Ditto.
7369 (IX86_BUILTIN_COMLESS): Ditto.
7370 (IX86_BUILTIN_COMGTSS): Ditto.
7371 (IX86_BUILTIN_COMGESS): Ditto.
7372 (IX86_BUILTIN_COMUEQSS): Ditto.
7373 (IX86_BUILTIN_COMUNESS): Ditto.
7374 (IX86_BUILTIN_COMULTSS): Ditto.
7375 (IX86_BUILTIN_COMULESS): Ditto.
7376 (IX86_BUILTIN_COMUGTSS): Ditto.
7377 (IX86_BUILTIN_COMUGESS): Ditto.
7378 (IX86_BUILTIN_COMORDSS): Ditto.
7379 (IX86_BUILTIN_COMUNORDSS): Ditto.
7380 (IX86_BUILTIN_COMFALSESS): Ditto.
7381 (IX86_BUILTIN_COMTRUESS): Ditto.
7382 (IX86_BUILTIN_COMEQSD): Ditto.
7383 (IX86_BUILTIN_COMNESD): Ditto.
7384 (IX86_BUILTIN_COMLTSD): Ditto.
7385 (IX86_BUILTIN_COMLESD): Ditto.
7386 (IX86_BUILTIN_COMGTSD): Ditto.
7387 (IX86_BUILTIN_COMGESD): Ditto.
7388 (IX86_BUILTIN_COMUEQSD): Ditto.
7389 (IX86_BUILTIN_COMUNESD): Ditto.
7390 (IX86_BUILTIN_COMULTSD): Ditto.
7391 (IX86_BUILTIN_COMULESD): Ditto.
7392 (IX86_BUILTIN_COMUGTSD): Ditto.
7393 (IX86_BUILTIN_COMUGESD): Ditto.
7394 (IX86_BUILTIN_COMORDSD): Ditto.
7395 (IX86_BUILTIN_COMUNORDSD): Ditto.
7396 (IX86_BUILTIN_COMFALSESD): Ditto.
7397 (IX86_BUILTIN_COMTRUESD): Ditto.
7398 (IX86_BUILTIN_COMEQPS): Ditto.
7399 (IX86_BUILTIN_COMNEPS): Ditto.
7400 (IX86_BUILTIN_COMLTPS): Ditto.
7401 (IX86_BUILTIN_COMLEPS): Ditto.
7402 (IX86_BUILTIN_COMGTPS): Ditto.
7403 (IX86_BUILTIN_COMGEPS): Ditto.
7404 (IX86_BUILTIN_COMUEQPS): Ditto.
7405 (IX86_BUILTIN_COMUNEPS): Ditto.
7406 (IX86_BUILTIN_COMULTPS): Ditto.
7407 (IX86_BUILTIN_COMULEPS): Ditto.
7408 (IX86_BUILTIN_COMUGTPS): Ditto.
7409 (IX86_BUILTIN_COMUGEPS): Ditto.
7410 (IX86_BUILTIN_COMORDPS): Ditto.
7411 (IX86_BUILTIN_COMUNORDPS): Ditto.
7412 (IX86_BUILTIN_COMFALSEPS): Ditto.
7413 (IX86_BUILTIN_COMTRUEPS): Ditto.
7414 (IX86_BUILTIN_COMEQPD): Ditto.
7415 (IX86_BUILTIN_COMNEPD): Ditto.
7416 (IX86_BUILTIN_COMLTPD): Ditto.
7417 (IX86_BUILTIN_COMLEPD): Ditto.
7418 (IX86_BUILTIN_COMGTPD): Ditto.
7419 (IX86_BUILTIN_COMGEPD): Ditto.
7420 (IX86_BUILTIN_COMUEQPD): Ditto.
7421 (IX86_BUILTIN_COMUNEPD): Ditto.
7422 (IX86_BUILTIN_COMULTPD): Ditto.
7423 (IX86_BUILTIN_COMULEPD): Ditto.
7424 (IX86_BUILTIN_COMUGTPD): Ditto.
7425 (IX86_BUILTIN_COMUGEPD): Ditto.
7426 (IX86_BUILTIN_COMORDPD): Ditto.
7427 (IX86_BUILTIN_COMUNORDPD): Ditto.
7428 (IX86_BUILTIN_COMFALSEPD): Ditto.
7429 (IX86_BUILTIN_COMTRUEPD): Ditto.
7430 (IX86_BUILTIN_PCOMEQUB): Ditto.
7431 (IX86_BUILTIN_PCOMNEUB): Ditto.
7432 (IX86_BUILTIN_PCOMLTUB): Ditto.
7433 (IX86_BUILTIN_PCOMLEUB): Ditto.
7434 (IX86_BUILTIN_PCOMGTUB): Ditto.
7435 (IX86_BUILTIN_PCOMGEUB): Ditto.
7436 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
7437 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
7438 (IX86_BUILTIN_PCOMEQUW): Ditto.
7439 (IX86_BUILTIN_PCOMNEUW): Ditto.
7440 (IX86_BUILTIN_PCOMLTUW): Ditto.
7441 (IX86_BUILTIN_PCOMLEUW): Ditto.
7442 (IX86_BUILTIN_PCOMGTUW): Ditto.
7443 (IX86_BUILTIN_PCOMGEUW): Ditto.
7444 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
7445 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
7446 (IX86_BUILTIN_PCOMEQUD): Ditto.
7447 (IX86_BUILTIN_PCOMNEUD): Ditto.
7448 (IX86_BUILTIN_PCOMLTUD): Ditto.
7449 (IX86_BUILTIN_PCOMLEUD): Ditto.
7450 (IX86_BUILTIN_PCOMGTUD): Ditto.
7451 (IX86_BUILTIN_PCOMGEUD): Ditto.
7452 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
7453 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
7454 (IX86_BUILTIN_PCOMEQUQ): Ditto.
7455 (IX86_BUILTIN_PCOMNEUQ): Ditto.
7456 (IX86_BUILTIN_PCOMLTUQ): Ditto.
7457 (IX86_BUILTIN_PCOMLEUQ): Ditto.
7458 (IX86_BUILTIN_PCOMGTUQ): Ditto.
7459 (IX86_BUILTIN_PCOMGEUQ): Ditto.
7460 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
7461 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
7462 (IX86_BUILTIN_PCOMEQB): Ditto.
7463 (IX86_BUILTIN_PCOMNEB): Ditto.
7464 (IX86_BUILTIN_PCOMLTB): Ditto.
7465 (IX86_BUILTIN_PCOMLEB): Ditto.
7466 (IX86_BUILTIN_PCOMGTB): Ditto.
7467 (IX86_BUILTIN_PCOMGEB): Ditto.
7468 (IX86_BUILTIN_PCOMFALSEB): Ditto.
7469 (IX86_BUILTIN_PCOMTRUEB): Ditto.
7470 (IX86_BUILTIN_PCOMEQW): Ditto.
7471 (IX86_BUILTIN_PCOMNEW): Ditto.
7472 (IX86_BUILTIN_PCOMLTW): Ditto.
7473 (IX86_BUILTIN_PCOMLEW): Ditto.
7474 (IX86_BUILTIN_PCOMGTW): Ditto.
7475 (IX86_BUILTIN_PCOMGEW): Ditto.
7476 (IX86_BUILTIN_PCOMFALSEW): Ditto.
7477 (IX86_BUILTIN_PCOMTRUEW): Ditto.
7478 (IX86_BUILTIN_PCOMEQD): Ditto.
7479 (IX86_BUILTIN_PCOMNED): Ditto.
7480 (IX86_BUILTIN_PCOMLTD): Ditto.
7481 (IX86_BUILTIN_PCOMLED): Ditto.
7482 (IX86_BUILTIN_PCOMGTD): Ditto.
7483 (IX86_BUILTIN_PCOMGED): Ditto.
7484 (IX86_BUILTIN_PCOMFALSED): Ditto.
7485 (IX86_BUILTIN_PCOMTRUED): Ditto.
7486 (IX86_BUILTIN_PCOMEQQ): Ditto.
7487 (IX86_BUILTIN_PCOMNEQ): Ditto.
7488 (IX86_BUILTIN_PCOMLTQ): Ditto.
7489 (IX86_BUILTIN_PCOMLEQ): Ditto.
7490 (IX86_BUILTIN_PCOMGTQ): Ditto.
7491 (IX86_BUILTIN_PCOMGEQ): Ditto.
7492 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
7493 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
7494 (enum multi_arg_type): New enum for describing the various SSE5
7495 intrinsic argument types.
7496 (bdesc_multi_arg): New table for SSE5 intrinsics.
7497 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
7498 (ix86_expand_multi_arg_builtin): New function for creating SSE5
7499 intrinsics.
7500 (ix86_expand_builtin): Add SSE5 intrinsic support.
7501 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
7502 operand instructions.
7503 (ix86_expand_sse5_multiple_memory): New function to split the
7504 second memory reference from SSE5 instructions.
7505 (type_has_variadic_args_p): Delete in favor of stdarg_p.
7506 (ix86_return_pops_args): Use stdarg_p to determine if the function
7507 has variable arguments.
7508 (ix86_setup_incoming_varargs): Ditto.
7509 (x86_this_parameter): Ditto.
7510
7511 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
7512 declaration.
7513 (ix86_expand_sse5_pack): Ditto.
7514 (ix86_sse5_valid_op_p): Ditto.
7515 (ix86_expand_sse5_multiple_memory): Ditto.
7516
7517 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
7518 constant for SSE5 support.
7519 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
7520 (UNSPEC_SSE5_TRUEFALSE): Ditto.
7521 (UNSPEC_SSE5_PERMUTE): Ditto.
7522 (UNSPEC_SSE5_ASHIFT): Ditto.
7523 (UNSPEC_SSE5_LSHIFT): Ditto.
7524 (UNSPEC_FRCZ): Ditto.
7525 (UNSPEC_CVTPH2PS): Ditto.
7526 (UNSPEC_CVTPS2PH): Ditto.
7527 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
7528 (PCOM_TRUE): Ditto.
7529 (COM_FALSE_S): Ditto.
7530 (COM_FALSE_P): Ditto.
7531 (COM_TRUE_S): Ditto.
7532 (COM_TRUE_P): Ditto.
7533 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
7534 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
7535 types.
7536 (memory attribute): Ditto.
7537 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7538 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
7539 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
7540 (floor<mode>2): Ditto.
7541 (ceil<mode>2): Ditto.
7542 (btrunc<mode>2): Ditto.
7543 (nearbyintdf2): Ditto.
7544 (nearbyintsf2): Ditto.
7545 (sse_setccsf): Disable if SSE5.
7546 (sse_setccdf): Ditto.
7547 (sse5_setcc<mode>): New support for SSE5 conditional move.
7548 (sse5_pcmov_<mode>): Ditto.
7549
7550 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
7551 (SSEMODEF4): Ditto.
7552 (SSEMODEF2P): Ditto.
7553 (ssemodesuffixf4): New mode attribute for SSE5.
7554 (ssemodesuffixf2s): Ditto.
7555 (ssemodesuffixf2c): Ditto.
7556 (sserotatemax): Ditto.
7557 (ssescalarmode): Ditto.
7558 (sse_maskcmpv4sf3): Disable if SSE5.
7559 (sse_maskcmpv2df3): Ditto.
7560 (sse_vmmaskcmpv4sf3): Ditto.
7561 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
7562 (sse5_vmfmadd<mode>4): Ditto.
7563 (sse5_fmsub<mode>4): Ditto.
7564 (sse5_vmfmsub<mode>4): Ditto.
7565 (sse5_fnmadd<mode>4): Ditto.
7566 (sse5_vmfnmadd<mode>4): Ditto.
7567 (sse5_fnmsub<mode>4): Ditto.
7568 (sse5_vmfnmsub<mode>4): Ditto.
7569 (sse5i_fmadd<mode>4): Ditto.
7570 (sse5i_fmsub<mode>4): Ditto.
7571 (sse5i_fnmadd<mode>4): Ditto.
7572 (sse5i_fnmsub<mode>4): Ditto.
7573 (sse5i_vmfmadd<mode>4): Ditto.
7574 (sse5i_vmfmsub<mode>4): Ditto.
7575 (sse5i_vmfnmadd<mode>4): Ditto.
7576 (sse5i_vmfnmsub<mode>4): Ditto.
7577 (mulv16qi3): Add SSE5 support.
7578 (mulv4si3): Ditto.
7579 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
7580 (sse2_mulv4si3): Disable if SSE5.
7581 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
7582 (sse4_1_roundps): Ditto.
7583 (sse4_1_roundsd): Ditto.
7584 (sse4_1_roundss): Ditto.
7585 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
7586 be generated.
7587 (sse_maskcmpsf3): Ditto.
7588 (sse_vmmaskcmpv4sf3): Ditto.
7589 (sse2_maskcmpv2df3): Ditto.
7590 (sse2_maskcmpdf3): Ditto.
7591 (sse2_vmmaskcmpv2df3): Ditto.
7592 (sse2_eq<mode>3): Ditto.
7593 (sse2_gt<mode>3): Ditto.
7594 (sse5_pcmov_<mode>): Add SSE5 support.
7595 (vec_unpacku_hi_v16qi): Ditto.
7596 (vec_unpacks_hi_v16qi): Ditto.
7597 (vec_unpacku_lo_v16qi): Ditto.
7598 (vec_unpacks_lo_v16qi): Ditto.
7599 (vec_unpacku_hi_v8hi): Ditto.
7600 (vec_unpacks_hi_v8hi): Ditto.
7601 (vec_unpacku_lo_v8hi): Ditto.
7602 (vec_unpacks_lo_v8hi): Ditto.
7603 (vec_unpacku_hi_v4si): Ditto.
7604 (vec_unpacks_hi_v4si): Ditto.
7605 (vec_unpacku_lo_v4si): Ditto.
7606 (vec_unpacks_lo_v4si): Ditto.
7607 (sse5_pmacsww): New SSE5 intrinsic insn.
7608 (sse5_pmacssww): Ditto.
7609 (sse5_pmacsdd): Ditto.
7610 (sse5_pmacssdd): Ditto.
7611 (sse5_pmacssdql): Ditto.
7612 (sse5_pmacssdqh): Ditto.
7613 (sse5_pmacsdqh): Ditto.
7614 (sse5_pmacsswd): Ditto.
7615 (sse5_pmacswd): Ditto.
7616 (sse5_pmadcsswd): Ditto.
7617 (sse5_pmadcswd): Ditto.
7618 (sse5_pcmov_<move>): Conditional move support on SSE5.
7619 (sse5_phaddbw): New SSE5 intrinsic insn.
7620 (sse5_phaddbd): Ditto.
7621 (sse5_phaddbq): Ditto.
7622 (sse5_phaddwd): Ditto.
7623 (sse5_phaddwq): Ditto.
7624 (sse5_phadddq): Ditto.
7625 (sse5_phaddubw): Ditto.
7626 (sse5_phaddubd): Ditto.
7627 (sse5_phaddubq): Ditto.
7628 (sse5_phadduwd): Ditto.
7629 (sse5_phadduwq): Ditto.
7630 (sse5_phaddudq): Ditto.
7631 (sse5_phsubbw): Ditto.
7632 (sse5_phsubwd): Ditto.
7633 (sse5_phsubdq): Ditto.
7634 (sse5_pperm): Ditto.
7635 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
7636 (sse5_pperm_zero_v16qi_v8hi): Ditto.
7637 (sse5_pperm_sign_v8hi_v4si): Ditto.
7638 (sse5_pperm_zero_v8hi_v4si): Ditto.
7639 (sse5_pperm_sign_v4si_v2di): Ditto.
7640 (sse5_pperm_sign_v4si_v2di): Ditto.
7641 (sse5_pperm_pack_v2di_v4si): Ditto.
7642 (sse5_pperm_pack_v4si_v8hi): Ditto.
7643 (sse5_pperm_pack_v8hi_v16qi): Ditto.
7644 (sse5_perm<mode>): New SSE5 intrinsic insn.
7645 (rotl<mode>3): Ditto.
7646 (sse5_rotl<mode>3): Ditto.
7647 (sse5_ashl<mode>3): Ditto.
7648 (sse5_lshl<mode>3): Ditto.
7649 (sse5_frcz<mode>2): Ditto.
7650 (sse5s_frcz<mode>2): Ditto.
7651 (sse5_cvtph2ps): Ditto.
7652 (sse5_cvtps2ph): Ditto.
7653 (sse5_vmmaskcmp<mode>3): Ditto.
7654 (sse5_com_tf<mode>3): Ditto.
7655 (sse5_maskcmp<mode>3): Ditto.
7656 (sse5_maskcmp_uns<mode>3): Ditto.
7657 (sse5_maskcmp_uns2<mode>3): Ditto.
7658 (sse5_pcom_tf<mode>3): Ditto.
7659
7660 * config/i386/predicates.md (sse5_comparison_float_operator):
7661 New predicate to match the comparison operators supported by
7662 the SSE5 com instruction.
7663 (ix86_comparison_int_operator): New predicate to match just the
7664 signed int comparisons.
7665 (ix86_comparison_uns_operator): New predicate to match just the
7666 unsigned int comparisons.
7667
7668 * doc/invoke.texi (-msse5): Add documentation.
7669 (-mfused-madd): Ditto.
7670
7671 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
7672
7673 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
7674 mmintrin-common.h.
7675 (x86_64-*-*): Ditto.
7676
7677 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
7678
7679 * config/i386/bmmintrin.h: New file, provide common x86 compiler
7680 intrinisics for SSE5.
7681
7682 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
7683 mmintrin-common.h.
7684
7685 * config/i386/mmintrin-common.h: New file, to contain common
7686 instructions between SSE4.1 and SSE5.
7687
7688 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
7689 FOREACH_FUNCTION_ARGS to iterate over the argument list.
7690 (gen_regparm_prefix): Ditto.
7691
7692 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
7693 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
7694 prototype_p to determine if a function is prototyped.
7695
7696 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
7697
7698 * c-common.c (c_common_reswords) add the alignof keyword,
7699 with same RID as __alignof and __alignof__
7700
7701 2009-08-25 Anatoly Sokolov <aesok@post.ru>
7702
7703 * hooks.h (hook_bool_const_int_const_int_true): Declare.
7704 * hooks.c (hook_bool_const_int_const_int_true): New function.
7705 * target.h (struct gcc_target): Add can_eliminate field.
7706 * target-def.h (TARGET_CAN_ELIMINATE): Define.
7707 (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
7708 * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
7709 * reload1.c (update_eliminables, init_elim_table): (Ditto.).
7710 (elim_table): Revise comment.
7711 * system.h (CAN_ELIMINATE): Poison.
7712 * defaults.h (CAN_ELIMINATE): Remove.
7713 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
7714
7715 * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
7716 * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
7717 Define macro.
7718 (alpha_vms_can_eliminate): Declare as static, change return type to
7719 bool.
7720 * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
7721
7722 * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
7723 * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
7724 (arm_can_eliminate): New function.
7725
7726 * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
7727 * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
7728 (avr_can_eliminate): Declare as static.
7729 * config/avr/avr-protos.h (avr_can_eliminate): Remove.
7730
7731 * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
7732 * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
7733 (bfin_can_eliminate): New function.
7734
7735 * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
7736 * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
7737 (crx_can_eliminate): New function.
7738
7739 * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
7740 * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
7741 (fr30_can_eliminate): New function.
7742
7743 * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
7744 * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
7745 (frv_can_eliminate): New function.
7746
7747 * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
7748 * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
7749 (h8300_can_eliminate): New function.
7750
7751 * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
7752 * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
7753 (i386_can_eliminate): Declare as static, change return type to bool.
7754 * config/i386/i386-protos.h (i386_can_eliminate): Remove.
7755
7756 * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
7757 * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
7758 (ia64_can_eliminate): New function.
7759
7760 * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
7761 * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
7762 (iq2000_can_eliminate): New function.
7763
7764 * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
7765 * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
7766 (m32r_can_eliminate): New function.
7767
7768 * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
7769 * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
7770 (m68hc11_can_eliminate): New function.
7771
7772 * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
7773 * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
7774 (m68k_can_eliminate): New function.
7775
7776 * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
7777 * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
7778 (mep_can_eliminate): New function.
7779
7780 * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
7781 * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
7782 (mips_can_eliminate): New function.
7783
7784 * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
7785 * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
7786 (rs6000_can_eliminate): New function.
7787
7788 * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
7789 * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
7790 (s390_can_eliminate): Declare as static.
7791 * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
7792
7793 * config/score/score.h (CAN_ELIMINATE): Remove macro.
7794 * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
7795 (score_can_eliminate): New function.
7796
7797 * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
7798 * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
7799 (sparc_can_eliminate): Declare as static.
7800 * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
7801
7802 * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
7803 * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
7804 (xstormy16_can_eliminate): New function.
7805
7806 * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
7807 * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
7808 (v850_can_eliminate): New function.
7809
7810 2009-08-25 Uros Bizjak <ubizjak@gmail.com>
7811
7812 * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
7813 (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
7814 (*movdfcc_ext[1234]): Disable for IEEE mode.
7815
7816 2009-08-25 Eric Botcazou <ebotcazou@adacore.com>
7817
7818 * gimplify.c (prepare_gimple_addressable): New static function.
7819 (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
7820 it addressable.
7821 (gimplify_addr_expr): Invoke it similarly on the operand instead of
7822 manually fiddling with it.
7823
7824 2009-08-25 Michael Matz <matz@suse.de>
7825
7826 * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
7827 * dojump.c (do_jump_by_parts_greater): Take two operands instead of
7828 full expression.
7829 (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
7830 (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
7831 (do_jump): Split out code for simple binary comparisons into ...
7832 (do_jump_1): ... this, taking the individual operands and code.
7833 Change callers to helper function above accordingly.
7834 * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
7835 comparisons.
7836
7837 2009-08-25 Michael Matz <matz@suse.de>
7838
7839 * expr.h (struct separate_ops, sepops): New type for passing
7840 around an exploded simple expression.
7841 * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
7842 Use this structure instead of expression tree.
7843 (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
7844 expression, only its type.
7845 (expand_vec_cond_expr): Take type and individual operands instead
7846 of full expression.
7847 * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
7848 expand_vec_shift_expr): Change prototype accordingly.
7849 * tree-vect-stmts.c (vectorizable_condition): Change call of
7850 expand_vec_cond_expr_p to pass only type.
7851 * expr.c (do_store_flags): Change prototype and implementation
7852 to take an exploded expression.
7853 (expand_expr_real_1): New local ops initialized with details
7854 of the full expression. Use it instead of full
7855 expression in calls to do_store_flags, expand_vec_cond_expr,
7856 expand_widen_pattern_expr and expand_vec_shift_expr.
7857
7858 2009-08-25 Michael Matz <matz@suse.de>
7859
7860 * expr.c (expand_expr_real_1): New local treeop0, treeop1,
7861 treeop2 initialized with first three operands of the full expression.
7862 Substitute all TREE_OPERAND (exp, [012]) calls with them.
7863
7864 2009-08-25 Kai Tietz <kai.tietz@onevision.com>
7865
7866 * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
7867 (__gthread_objc_condition_allocate): Mark arguments as unused.
7868 (__gthread_objc_condition_deallocate): Likewise.
7869 (__gthread_objc_condition_wait): Likewise.
7870 (__gthread_objc_condition_broadcast): Likewise.
7871 (__gthread_objc_condition_signal): Likewise.
7872 (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
7873 (__gthread_objc_thread_id): Likewise.
7874
7875 2009-08-25 Janus Weil <janus@gcc.gnu.org>
7876
7877 PR middle-end/41149
7878 * tree-pretty-print.c (print_call_name): Print the correct call name
7879 for procedure pointer components.
7880
7881 2009-08-24 Steve Ellcey <sje@cup.hp.com>
7882
7883 * config/ia64/ia64.c (ia64_promote_function_mode): Call
7884 default_promote_function_mode when not VMS.
7885
7886 2009-08-24 Olivier Hainque <hainque@adacore.com>
7887
7888 * convert.c (convert_to_integer): Don't assume an input pointer is
7889 POINTER_SIZE wide. Fetch from the type instead.
7890
7891 2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7892
7893 * configure.ac (AC_PREREQ): Bump to 2.64.
7894
7895 2009-08-24 Rafael Avila de Espindola <espindola@google.com>
7896
7897 * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
7898 (process_command): Don't search standard_exec_prefix_1 and
7899 standard_exec_prefix_2.
7900
7901 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7902
7903 * config/arm/arm.c (output_return_instruction): Handle for
7904 unified syntax.
7905
7906 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7907
7908 * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
7909
7910 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7911
7912 * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
7913 (*arm_movdf_vfp): Likewise.
7914
7915 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7916
7917 * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
7918 (vashr<mode>3): Rename from ashr<mode>3.
7919 (vlshr<mode>3): Rename from lshr<mode>3.
7920
7921 2009-08-24 Kai Tietz <kai.tietz@onevision.com>
7922
7923 PR/40786
7924 * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
7925 (check_format_info_main): Use scalar_identify_flag.
7926 (check_format_types): Check for scalar size identity if
7927 scalar_identify_flag is set.
7928 (printf_length_specs): Extend by new field.
7929 (asm_fprintf_length_specs): Likewise.
7930 (gcc_diag_length_specs): Likewise.
7931 (scanf_length_specs): Likewise.
7932 (strfmon_length_specs): Likewise.
7933 (gcc_gfc_length_specs): Likewise.
7934 * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
7935 (ms_printf_flag_specs): Likewise.
7936 * c-format.h (format_length_info): Add new member scalar_identity_flag.
7937
7938 2009-08-23 Uros Bizjak <ubizjak@gmail.com>
7939
7940 PR target/40718
7941 * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
7942 (*call_value_pop_1): Ditto.
7943 (*sibcall_pop_1): New insn pattern.
7944 (*sibcall_value_pop_1): Ditto.
7945
7946 2009-08-23 Alan Modra <amodra@bigpond.net.au>
7947
7948 PR target/41081
7949 * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
7950 ashrsi3_64): New.
7951
7952 2009-08-23 Alan Modra <amodra@bigpond.net.au>
7953
7954 PR target/41081
7955 * fwprop.c (try_fwprop_subst): Allow multiple sets.
7956 (get_reg_use_in): New function.
7957 (forward_propagate_subreg): Propagate through subreg of zero_extend
7958 or sign_extend.
7959
7960 2009-08-22 Kaz Kojima <kkojima@gcc.gnu.org>
7961
7962 * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
7963 * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
7964
7965 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
7966
7967 * configure.ac: Remove --with-datarootdir, --with-docdir,
7968 --with-htmldir switches. No need to call AC_SUBST for
7969 datarootdir, docdir, htmldir any more.
7970 * configure: Regenerate.
7971 * doc/install.texi (Configuration): Document --datarootdir,
7972 --docdir, --htmldir, --pdfdir; update documentation for
7973 --infodir, --mandir.
7974 (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
7975 M4 to 1.4.6.
7976
7977 * aclocal.m4: Regenerate.
7978 * config.in: Regenerate.
7979 * configure: Regenerate.
7980
7981 2009-08-21 Douglas B Rupp <rupp@gnat.com>
7982 Olivier Hainque <hainque@adacore.com>
7983
7984 * config/ia64/ia64.c: Include libfuncs.h.
7985 (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
7986 (ia64_expand_call): Use reg 25 on VMS.
7987 (ia64_initialize_trampoline): Fix for VMS ABI.
7988 (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
7989 (ia64_function_arg): Initialize reg 25 on VMS.
7990 Fix OpenVMS ABI issues for varargs.
7991 For OpenVMS, emit the Argument Information register set in the
7992 incoming/sibcall case as well.
7993 (ia64_arg_type): New function.
7994 (ia64_function_arg_advance): Keep track of cum->words.
7995 Fix OpenVMS ABI issues for varargs.
7996 (ia64_function_value): On VMS, promote mode of non-aggregate types.
7997 (ia64_override_options): Set flag_no_common on VMS.
7998 (ia64_init_builtins): Disable FWRITE builtin.
7999 (ia64_asm_output_external): Call DO_CRTL_NAMES.
8000 (ia64_vms_init_libfuncs): Add decc$ routines.
8001 (ia64_vms_valid_pointer_mode): New function.
8002 (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
8003 (ia64_promote_function_mode): New function
8004 * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
8005 (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
8006 (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8007 (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
8008 (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
8009 (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
8010 Suppress trailing '#' if VALUE is numeric.
8011 * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
8012 ia64_promote_function_mode.
8013 (TARGET_VALID_POINTER_MODE): Define.
8014
8015 2009-08-21 Michael Meissner <meissner@linux.vnet.ibm.com>
8016
8017 PR target/40671
8018 * config/rs6000/rs6000.c (rs6000_override_options): Use
8019 TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
8020
8021 PR target/41145
8022 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
8023 reporting of vector + decimal/boolean/complex error.
8024
8025 2009-08-21 Jakub Jelinek <jakub@redhat.com>
8026
8027 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
8028 __vector double TYPE_DECL.
8029
8030 2009-08-21 Richard Earnshaw <rearnsha@arm.com>
8031
8032 * arm.h (MACHMODE): New define. Include insn-modes.h if available.
8033 (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
8034 * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
8035 to pointer to enum machine_mode. Update all callers as needed.
8036
8037 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
8038
8039 * config/alpha/alpha.md (exception_receiver): Emit alternative
8040 GP load sequence if flag_reorder_blocks_and_partition is set.
8041 (*exception_receiver_2): Also enable when
8042 flag_reorder_blocks_and_partition is set.
8043
8044 2009-08-20 Matt Rice <ratmice@gmail.com>
8045 Diego Novillo <dnovillo@google.com>
8046
8047 * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
8048 tree-ssa-sccvn.h.
8049
8050 2009-08-20 Richard Guenther <rguenther@suse.de>
8051
8052 * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
8053 * c-tree.h (c_dup_lang_specific_decl): Remove.
8054 (struct lang_decl, struct lang_type): Move definitions ...
8055 * c-lang.h: ... here. New file.
8056 * c-decl.c: Include c-lang.h.
8057 (c_dup_lang_specific_decl): Remove.
8058 * c-typeck.c: Include c-lang.h.
8059 * Makefile.in (c-decl.o): Add c-lang.h dependency.
8060 (c-typeck.o): Likewise.
8061 * c-config-lang.in (gtfiles): Add c-lang.h.
8062 * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
8063 like c-tree.h.
8064
8065 2009-08-20 Uros Bizjak <ubizjak@gmail.com>
8066
8067 * config/alpha/alpha.c (alpha_end_function): Do not clear
8068 crtl->emit structure and free insn locators if cfun->is_thunk is true,
8069 this is now handled in generic code.
8070
8071 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
8072
8073 * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
8074 (s390_z10_fix_long_loop_prediction): New function.
8075 (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
8076 (s390_reorg): Walk over the INSNs and invoke
8077 s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
8078
8079 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
8080
8081 * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
8082 "*brx_64bit", "*brx_31bit"): New patterns.
8083 * config/s390/s390.c ('E'): New output modifier.
8084
8085 2009-08-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
8086 Richard Earnshaw <richard.earnshaw@arm.com>
8087
8088 * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
8089 * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
8090
8091 2009-08-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
8092
8093 * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
8094 patterns.
8095 * pa.c (emit_move_sequence): Check if address of operand1 is valid
8096 for mode mode of operand0 when doing secondary reload for SAR.
8097
8098 2009-08-19 Jakub Jelinek <jakub@redhat.com>
8099
8100 PR middle-end/41123
8101 * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
8102 of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
8103
8104 2009-08-19 Jason Merrill <jason@redhat.com>
8105
8106 * doc/invoke.texi (C++ Dialect Options): Note change of minimum
8107 supported template depth in C++0x.
8108
8109 2009-08-19 Jakub Jelinek <jakub@redhat.com>
8110
8111 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
8112 free_after_compilation.
8113 * config/score/score7.c (score7_output_mi_thunk): Likewise.
8114 * config/score/score3.c (score3_output_mi_thunk): Likewise.
8115 * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
8116 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
8117 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
8118 * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
8119 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
8120
8121 2009-08-19 Ian Lance Taylor <iant@google.com>
8122
8123 * doc/md.texi (Insn Canonicalizations): Correct canonicalization
8124 of (plus (mult (neg B) C) A).
8125
8126 2009-08-18 Michael Matz <matz@suse.de>
8127
8128 * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
8129 instead of comparing TYPE_MAIN_VARIANT for equality.
8130 * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
8131 vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
8132 * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
8133 * gimplify.c (goa_lhs_expr_p): Ditto and use
8134 STRIP_USELESS_TYPE_CONVERSION.
8135
8136 2009-08-18 Michael Matz <matz@suse.de>
8137
8138 * tree-ssa-structalias.c (create_variable_info_for): Also mark
8139 first field in a struct.
8140 (intra_create_variable_infos): Don't deal with flag_argument_noalias.
8141
8142 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
8143
8144 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8145 locators before emit_insn is called. Remove assert that
8146 cfun->is_thunk.
8147 (alpha_end_function): Clear crtl->emit structure and free insn
8148 locators if cfun->is_thunk is true.
8149
8150 2009-08-18 Jason Merrill <jason@redhat.com>
8151
8152 * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
8153 type if available.
8154 * configure.ac: Test for it.
8155 * configure, config.in: Regenerate.
8156 * doc/install.texi: Document --enable-gnu-unique-object.
8157
8158 2009-08-18 Richard Guenther <rguenther@suse.de>
8159
8160 PR middle-end/41094
8161 * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
8162 pow(x,y*z) only if x is nonnegative.
8163
8164 2009-08-18 Jakub Jelinek <jakub@redhat.com>
8165
8166 * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
8167 on jumps.
8168
8169 PR target/40971
8170 * config/rs6000/rs6000.c (rs6000_legitimize_address): For
8171 [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
8172
8173 2009-08-17 DJ Delorie <dj@redhat.com>
8174
8175 * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
8176 * config/m32c/prologue.md (epilogue_freit): New.
8177 (fset_b): New.
8178 * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
8179 (bank_switch_p): Likewise.
8180 (fast_interrupt_p): Likewise.
8181 (interrupt_p): Likewise.
8182 (m32c_conditional_register_usage): Round memregs size up.
8183 (need_to_save): We only need to save $a0 when we use ENTER.
8184 (interrupt_p): Check for fast_interrupt too.
8185 (bank_switch_p): New.
8186 (fast_interrupt_p): New.
8187 (m32c_attribute_table): Add bank_switch and fast_interrupt.
8188 (m32c_emit_prolog): Support bank switching and fast interrupts.
8189 * doc/extend.texi (Function Attributes): Add bank_switch and
8190 fast_interrupt.
8191
8192 2009-08-17 Douglas B Rupp <rupp@gnat.com>
8193
8194 * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
8195 * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
8196
8197 2009-08-16 Douglas B Rupp <rupp@gnat.com>
8198
8199 * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
8200 (menu): Add IA-64/VMS Options.
8201 (IA-64/VMS Options): Likewise.
8202
8203 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
8204
8205 PR target/38599
8206 * config/mips/mips.md (*lwxs): Use :P for pointer values.
8207
8208 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
8209
8210 * config/mips/mips-protos.h (mips_push_asm_switch): New function.
8211 (mips_pop_asm_switch): Likewise.
8212 * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
8213 with...
8214 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8215 (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
8216 (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
8217 (mips_print_operand_punctuation): Use them. Check mips_noreorder
8218 instead of set_noreorder.
8219 (mips_output_function_prologue): Use the new functions.
8220 (mips_output_function_epilogue): Likewise.
8221 (mips_need_noat_wrapper_p): New function, split out from...
8222 (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
8223 Use mips_push_asm_switch and mips_pop_asm_switch.
8224 * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
8225 and mips_pop_asm_switch.
8226 (ASM_OUTPUT_REG_POP): Likewise.
8227 (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
8228 Use mips_pop_asm_switch.
8229 (mips_asm_switch): New structure.
8230 (set_noreorder, set_nomacro): Replace with...
8231 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
8232 * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
8233 instead of set_nomacro.
8234 (fix_truncsfsi2_macro): Likewise.
8235 (cprestore): Likewise.
8236 (hazard): Use mips_noreorder instead of set_noreorder.
8237 * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8238
8239 2009-08-16 Uros Bizjak <ubizjak@gmail.com>
8240
8241 * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
8242 from prev_active_insn.
8243
8244 2009-08-16 Anatoly Sokolov <aesok@post.ru>
8245
8246 * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
8247 * config/avr/avr.c (avr_override_options): Initialize
8248 avr_current_arch variable.
8249 (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
8250 __AVR_HAVE_16BIT_SP__ according to the device type.
8251 (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
8252 TARGET_TINY_STACK.
8253 (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
8254 Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
8255
8256 2009-08-16 Dodji Seketeli <dodji@redhat.com>
8257
8258 PR debug/37801
8259 * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
8260 generating inlined subroutine die only. We shouldn't be
8261 called for anything else.
8262 (gen_block_die): Don't generate inline subroutine debug info for
8263 abstract blocks.
8264
8265 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
8266
8267 * graphite-poly.c (print_pbb): Print PBB index.
8268
8269 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
8270
8271 PR middle-end/40981
8272 * graphite-interchange.c (ppl_max_for_le): Moved...
8273 * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
8274 * graphite-ppl.c (ppl_max_for_le): ... here. Correct the use of
8275 ppl_Pointset_Powerset_C_Polyhedron_maximize.
8276 * graphite-ppl.h (ppl_max_for_le): Declared.
8277
8278 2009-08-14 Olatunji Ruwase <tjruwase@google.com>
8279
8280 * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
8281 supported on all platforms.
8282 * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
8283 * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
8284 * c-pragma.c: Likewise.
8285 * target-def.h (TARGET_INITIALIZER): Remove
8286 TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8287 * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
8288
8289 2009-08-14 Douglas B Rupp <rupp@gnat.com>
8290
8291 * config/ia64/fde-vms.c: New file.
8292 * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
8293 * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
8294 (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
8295 (uw_frame_state_for): Only register a personality routine if it is
8296 known to be compatible with our expectations.
8297 (_Unwind_FindEnclosingFunction, uw_frame_state_for):
8298 Declare unw_table_entry stack variable and
8299 mod all calls to _Unwind_FindTableEntry to add arg.
8300 * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
8301 (_Unwind_FindTableEntry): Add arg to prototype.
8302
8303 2009-08-14 Eric Botcazou <ebotcazou@adacore.com>
8304
8305 * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
8306 field 'signal_pfs_loc'.
8307 (uw_frame_state_for): Remove duplicate code dealing with leaf
8308 procedures without unwind info.
8309 If in the frame after unwinding through a signal handler, restore
8310 the AR.PFS register instead of the CFM if AR.PFS has not been saved.
8311 * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
8312 'pfs_loc' to the AR.PFS location in the signal context; instead
8313 set 'signal_pfs_loc'.
8314 Manually generate the unwind info for the AR.PFS register.
8315 (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
8316 ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
8317 (ia64_handle_unwabi): Test 'fs->unwabi' against them.
8318 Do not set 'pfs_loc' to the AR.PFS location in the signal context;
8319 instead set 'signal_pfs_loc'.
8320 Remove code preventing the AR.PFS register from being restored
8321 from the signal context.
8322
8323 2009-08-14 Douglas B Rupp <rupp@gnat.com>
8324 Tristan Gingold <gingold@adacore.com>
8325
8326 * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
8327 * config/ia64/t-vms: New file.
8328 * config/ia64/vms64.h: New file.
8329 * config/ia64/vms.h: New file.
8330 * config/ia64/vms-crtinit.asm: New file.
8331 * config/ia64/vms_symvec_libgcc_s.opt: New file.
8332 * config/ia64/vms-unwind.h: New file.
8333
8334 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
8335
8336 * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
8337 TFmode compares.
8338
8339 2009-08-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8340
8341 PR middle-end/30789
8342 * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
8343 Move declaration...
8344 * real.h (do_mpc_arg2): ... here.
8345 * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
8346 and RDIV_EXPR.
8347
8348 2009-08-14 Rafael Avila de Espindola <espindola@google.com>
8349
8350 * final.c (add_debug_prefix_map): Don't use GC memory for
8351 old_prefix and new_prefix.
8352
8353 2009-08-14 Richard Guenther <rguenther@suse.de>
8354
8355 * ipa-prop.c (compute_complex_pass_through): If we cannot
8356 compute a non-varying offset for IPA_JF_ANCESTOR punt.
8357
8358 2009-08-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
8359
8360 * c-lex.c (c_lex_with_flags): Increase size of local variable
8361 to avoid memory clobber.
8362
8363 2009-08-14 Paolo Bonzini <bonzini@gnu.org>
8364
8365 PR target/40934
8366 * config/i386/i386.c (ix86_fp_comparison_strategy):
8367 Only enable/disable sahf at function granularity.
8368
8369 2009-08-14 Hans-Peter Nilsson <hp@axis.com>
8370
8371 PR rtl-optimization/41064
8372 * reload1.c (reload_as_needed): Don't call extract_insn
8373 for known invalid replacements after calling
8374 validate_replace_rtx_group and verify_changes.
8375
8376 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
8377
8378 PR target/41019
8379 * config/i386/sse.md (SSEMODE124C8): New mode iterator.
8380 (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
8381 ix86_expand_fp_vcond.
8382 (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
8383 Assert that operation is supported by ix86_expand_int_vcond.
8384 (vcondu<SSEMODE124C8:mode>): Ditto.
8385
8386 2009-08-13 DJ Delorie <dj@redhat.com>
8387
8388 * config/i386/djgpp-stdint.h: New.
8389 * config.gcc (djgpp): Use it.
8390
8391 2009-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
8392
8393 * config/sh/sh.c (sh_override_options): When flag_exceptions or
8394 flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
8395
8396 2009-08-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
8397
8398 * tree-ssa-loop-prefetch.c
8399 (prune_ref_by_group_reuse): Enhance probabilistic analysis
8400 for long-stride pruning.
8401 (compute_miss_rate): New function to compute the probability
8402 that two memory references access different cache lines.
8403
8404 2009-08-13 Dave Korn <dave.korn.cygwin@gmail.com>
8405
8406 * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
8407
8408 2009-08-13 Richard Guenther <rguenther@suse.de>
8409
8410 PR middle-end/41047
8411 * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
8412 use the constant pointer type.
8413 * gimplify.c (canonicalize_addr_expr): Canonicalize independent
8414 of CV qualifiers on the target pointer type.
8415 * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
8416 conversion check before restrict check.
8417
8418 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
8419
8420 PR target/41029
8421 * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
8422
8423 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
8424
8425 * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
8426
8427 2009-08-12 Richard Guenther <rguenther@suse.de>
8428
8429 PR tree-optimization/41011
8430 * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
8431 and reference constructing.
8432
8433 2009-08-12 Xinliang David Li <davidxl@google.com>
8434
8435 PR tree-optimization/41012
8436 * tree-flow.h : New external interface.
8437 * gimple-low.c (check_call_arg): Change to public function.
8438 Remove argument mismatch check in lowering.
8439 * tree-inline.h (tree_can_inline_p): Interface change.
8440 * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
8441 into this function.
8442 * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
8443 Call change to tree_can_inline_p function.
8444 (cgraph_decide_inlining_incrementally): Ditto.
8445
8446 2009-08-12 Richard Sandiford <rdsandiford@googlemail.com>
8447
8448 PR tree-optimization/41031
8449 * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
8450 on the partition variable rather than promote_mode on the source
8451 type. Assert that the partition variable's type has the same
8452 mode as the source value's.
8453
8454 2009-08-12 Paolo Bonzini <bonzini@gnu.org>
8455
8456 * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
8457 for for_return == 2.
8458 * function.c (assign_parm_setup_reg): Use for_return == 2, improve
8459 comments.
8460 * calls.c (expand_call): Fix typo.
8461 * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
8462 and PARM_DECL.
8463 * stmt.c (expand_value_return): Use promote_function_mode to copy out
8464 of pseudo.
8465 * targhooks.c (default_promote_function_mode): Handle for_return == 2.
8466 * config/cris/cris.c (cris_promote_function_mode): Likewise.
8467 * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
8468 * config/pa/pa.c (pa_promote_function_mode): Likewise.
8469
8470 2009-08-12 Andrew Haley <aph@redhat.com>
8471
8472 * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
8473
8474 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8475
8476 PR bootstrap/40103
8477 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
8478
8479 2009-08-12 Richard Guenther <rguenther@suse.de>
8480
8481 * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
8482 * gimplify.c (gimplify_modify_expr): Do not use
8483 lang_hooks.types_compatible_p.
8484 * tree-ssa.c (useless_type_conversion_p): For aggregates
8485 just return false if the canonical types differ.
8486
8487 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8488
8489 PR middle-end/40980
8490 * sese.c (convert_for_phi_arg): New.
8491 (add_guard_exit_phis): Use convert_for_phi_arg.
8492
8493 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8494
8495 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
8496 unknown subscript upper bounds.
8497
8498 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8499 Pranav Garg <pranav.garg2107@gmail.com>
8500
8501 * graphite-interchange.c (gather_access_strides): Removed.
8502 (ppl_max_for_le): New.
8503 (build_linearized_memory_access): New.
8504 (memory_stride_in_loop): New.
8505 (pbb_interchange_profitable_p): Reimplemented.
8506 * graphite-ppl.h (ppl_new_id_map): New.
8507 (ppl_interchange): New.
8508
8509 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8510
8511 * graphite-interchange.c (compute_subscript): Removed.
8512 (compute_array_size_cstr): Removed.
8513 (compute_array_size_poly): Removed.
8514 (compute_array_size): Removed.
8515 (gather_access_strides_poly): Removed.
8516 (gather_access_strides): Empty.
8517
8518 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8519
8520 * graphite-dependences.c (dependence_polyhedron_1): Replace
8521 pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
8522 (graphite_legal_transform_dr): Same.
8523 (graphite_carried_dependence_level_k): Same.
8524 * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
8525 Initialize PDR_NB_SUBSCRIPTS.
8526 (print_pdr_access_layout): Replace pdr_nb_subscripts with
8527 PDR_NB_SUBSCRIPTS.
8528 * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
8529 (PDR_NB_SUBSCRIPTS): New.
8530 (pdr_nb_subscripts): Removed.
8531 (pdr_dim): Simplified.
8532 * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
8533 with PDR_NB_SUBSCRIPTS.
8534
8535 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8536
8537 * graphite-interchange.c (compute_array_size): Remove use of
8538 PDR_DATA_CONTAINER.
8539 * graphite-poly.c (new_poly_dr): Remove argument data_container.
8540 Do not initialize PDR_DATA_CONTAINER.
8541 (print_pdr): Do not print PDR_DATA_CONTAINER.
8542 * graphite-poly.h (struct poly_dr): Remove data_container field.
8543 (PDR_DATA_CONTAINER): Removed.
8544 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
8545 PDR_DATA_CONTAINER.
8546 (build_poly_dr): Same.
8547
8548 2009-08-12 Konrad Trifunovic <konrad.trifunovic@gmail.com>
8549 Sebastian Pop <sebastian.pop@amd.com>
8550
8551 * graphite-dependences.c (graphite_legal_transform_dr): Work on a
8552 copy of the dependence polyhedron. Free the temporary objects.
8553 (graphite_carried_dependence_level_k): Free unused objects before
8554 returning.
8555
8556 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8557
8558 * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
8559 Early return without analyzing the data dependences if no
8560 transform has been done. Call restore_scattering if the transform
8561 is not legal.
8562 (graphite-interchange.c): Same.
8563 * graphite-poly.c (print_scattering_function): Test for
8564 PBB_TRANSFORMED.
8565 (graphite_read_transforms): Initialize PBB_TRANSFORMED.
8566 (apply_poly_transforms): Do not gcc_assert that
8567 the transform is legal.
8568 (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
8569 Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
8570 PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
8571 (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
8572 * graphite-poly.h (struct poly_scattering): New.
8573 (struct poly_bb): Add original, transformed, and saved fields.
8574 Remove transformed_scattering, original_scattering,
8575 nb_local_variables and nb_scattering_transform fields.
8576 (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
8577 (poly_scattering_new): New.
8578 (poly_scattering_free): New.
8579 (poly_scattering_copy): New.
8580 (store_scattering_pbb): New.
8581 (store_scattering): New.
8582 (restore_scattering_pbb): New.
8583 (restore_scattering): New.
8584 * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
8585 Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
8586
8587 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8588
8589 * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
8590 (print_scop): Same.
8591
8592 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8593
8594 * Makefile.in (graphite.o): Depends on PREDICT_H.
8595 * graphite.c: Include predict.h.
8596 (graphite_finalize): Call tree_estimate_probability.
8597 * predict.c (predict_loops): Do not call scev_initialize and
8598 scev_finalize.
8599 (tree_estimate_probability_bb): New.
8600 (tree_estimate_probability): Do not initialize loops: move that
8601 code to the driver. Call tree_estimate_probability_bb.
8602 (tree_estimate_probability_driver): New.
8603 (pass_profile): Use tree_estimate_probability_driver.
8604 * predict.h (tree_estimate_probability): Declared.
8605
8606 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
8607
8608 * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
8609 * graphite-dependences.c (graphite_legal_transform): Add time to
8610 TV_GRAPHITE_DATA_DEPS.
8611 (dependency_between_pbbs_p): Same.
8612 * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
8613
8614 2009-08-12 Andrey Belevantsev <abel@ispras.ru>
8615
8616 PR rtl-optimization/41033
8617 * alias.c (nonoverlapping_component_refs_p): Punt when strict
8618 aliasing is disabled.
8619
8620 2009-08-11 Adam Nemet <anemet@caviumnetworks.com>
8621
8622 * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
8623 si_mask_operand, and_load_operand, low_bitmask_operand,
8624 and_reg_operand, and_operand): New predicates.
8625 * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
8626 * config/mips/mips.c (and_operands_ok): New function.
8627 * config/mips/mips-protos.h (and_operands_ok): Declare it.
8628 * config/mips/mips.md (move_type): Add ext_ins and logical.
8629 (type): Handle them.
8630 (and<mode>3): Use and_reg_operand as the second operand's predicate.
8631 (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
8632 shift_shift. Remove commutative constraint modifier.
8633 (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
8634 shift_shift.
8635 (*clear_upper32_dext): Remove define_insn_and_split.
8636 (*clear_upper32): Turn this define_insn_and_split ...
8637 (splitter for ANDing register with 0xffff_ffff): .. into this.
8638
8639 2009-08-11 Adam Nemet <anemet@caviumnetworks.com>
8640
8641 * combine.c (try_widen_shift_mode): Factor out code to check if an
8642 integer constant is a low-order bitmask from here ...
8643 * rtlanal.c (low_bitmask_len): ... to here.
8644 * rtl.h (low_bitmask_len): Declare.
8645
8646 2009-08-11 Uros Bizjak <ubizjak@gmail.com>
8647
8648 PR target/8603
8649 * config/alpha/alpha.md (addsi3): Remove expander.
8650 (addsi3): Rename from *addsi3_internal insn pattern.
8651 (subsi3): Remove expander.
8652 (subsi3): Rename from *subsi3_internal insn pattern.
8653
8654 2009-08-11 Douglas B Rupp <rupp@gnat.com>
8655
8656 * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
8657 FWRITE_UNLOCKED.
8658
8659 2009-08-11 Vasiliy Fofanov <fofanov@adacore.com>
8660 Eric Botcazou <botcazou@adacore.com>
8661 Douglas B Rupp <rupp@gnat.com>
8662
8663 * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
8664 that records that fit in 64 bits are returned by immediate value,
8665 as required by OpenVMS Calling Standard.
8666 (function_value): Adjust for above modification.
8667 (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
8668 virtual_incoming_args_rtx as base object, not next_arg.
8669 * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
8670
8671 2009-08-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
8672
8673 * reload.c (find_reloads_subreg_address): Check the original
8674 req_equiv_mem address to detect the case where an address is
8675 not valid in the outer mode.
8676
8677 2009-08-11 Richard Guenther <rguenther@suse.de>
8678
8679 PR bootstrap/40788
8680 * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
8681
8682 2009-08-10 Douglas B Rupp <rupp@gnat.com>
8683
8684 * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
8685 (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
8686
8687 2009-08-10 Olivier Hainque <hainqueu@adacore.com>
8688 Douglas B Rupp <rupp@gnat.com>
8689
8690 * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
8691 PT_STACK when frame_pointer_needed on OpenVMS.
8692 (alpha_pv_save_size, alpha_using_fp): Remove.
8693 (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
8694 with proper processing for PT_NULL.
8695 (alpha_vms_initial_elimination_offset): New function. Support for
8696 INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
8697 (alpha_sa_size): Force procedure type to PT_STACK when
8698 frame_pointer_needed on OpenVMS.
8699 * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
8700 (alpha_using_fp): Likewise.
8701 (alpha_vms_can_eliminate): Add prototype.
8702 (alpha_vms_initial_elimination_offset): Likewise.
8703 * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
8704 Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
8705
8706 2009-08-10 Eric Botcazou <botcazou@adacore.com>
8707 Douglas B Rupp <rupp@gnat.com>
8708
8709 * config/alpha/alpha.c (common_object_handler): New function.
8710 (vms_attribute_table): Declare a single attribute "common_object".
8711 (vms_output_aligned_decl_common): New global function.
8712 (SECTION_VMS_OVERLAY): Delete.
8713 (SECTION_VMS_GLOBAL): Likewise.
8714 (SECTION_VMS_INITIALIZE): Likewise.
8715 (vms_asm_named_section): Remove support for above flags.
8716 (vms_section_type_flags): Delete.
8717 (TARGET_SECTION_TYPE_FLAGS): Likewise.
8718 * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
8719 * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
8720 (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
8721
8722 2009-08-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
8723
8724 PR target/41015
8725 * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
8726 (sub_ddmmss): Likewise.
8727
8728 2009-08-10 Andreas Tobler <a.tobler@schweiz.org>
8729
8730 PR bootstrap/41018
8731 * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
8732 year.
8733
8734 2009-08-10 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
8735
8736 PR target/37053
8737 * reload1.c (reload_as_needed): Use cancel_changes to completely
8738 undo a failed replacement attempt.
8739
8740 2009-08-10 Richard Guenther <rguenther@suse.de>
8741
8742 PR middle-end/41006
8743 * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
8744 (useless_type_conversion_p): ... here. Require pointer targets
8745 to be compatible.
8746
8747 2009-08-10 Dodji Seketeli <dodji@redhat.com>
8748
8749 PR c++/40866
8750 * tree-inline.c (copy_statement_list): The resulting copy shouldn't
8751 loose the original type of the statement list.
8752
8753 2009-08-09 Douglas B Rupp <rupp@gnat.com>
8754
8755 * config/alpha/alpha.c: Include libfuncs.h
8756 (avms_asm_output_extern): New function.
8757 (alpha_init_libfuncs): Init some decc libfuncs.
8758 * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
8759 * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
8760 (DO_CRTL_NAMES): Define.
8761 (LIB_SPEC): Remove.
8762 * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
8763 (LONG_TYPE_SIZE): Define.
8764 (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
8765 (SUBTARGET_SWITCHES): Define malloc64 switch.
8766 (TARGET_DEFAULT): Default MASK_MALLOC64 set.
8767 (MASK_RETURN_ADDR): Define.
8768 doc/invoke.texi (mmalloc64): Document switch.
8769
8770 2009-08-09 Olivier Hainque <hainque@adacore.com>
8771 Douglas B Rupp <rupp@gnat.com>
8772
8773 * config/alpha/alpha.c (struct machine_function): New flag for VMS,
8774 uses_condition_handler.
8775 (alpha_expand_builtin_establish_vms_condition_handler): New expander.
8776 (alpha_expand_builtin_revert_vms_condition_handler): New expander.
8777 (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
8778 and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
8779 (code_for_builtin): New insn codes for the new alpha_builtins.
8780 (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
8781 (alpha_sa_size): Account for uses_condition_handler.
8782 (alpha_expand_prologue): Likewise.
8783 (alpha_start_function): Likewise.
8784 (alpha_expand_epilogue): Likewise.
8785 * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
8786 establish/revert expanders.
8787 * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
8788 * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
8789 New expander, resorting to the alpha.c associated function.
8790 (builtin_revert_vms_condition_handler): Likewise.
8791 * config/alpha/vms-gcc_shell_handler.c: New file. Implements
8792 __gcc_shell_handler, the static VMS condition handler used as
8793 an indirection wrapper to the current dynamically established
8794 handler.
8795 * config/alpha/vms-unwind.h: Complete rewrite.
8796 * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
8797 * config/alpha/vms.h (MD_UNWIND_SUPPORT):
8798
8799 2009-08-09 Eric Botcazou <botcazou@adacore.com>
8800 Douglas B Rupp <rupp@gnat.com>
8801
8802 * config/alpha/alpha.c (alpha_links): Add 'target' field.
8803 (alpha_need_linkage): Handle aliases. Return function symbol.
8804 (alpha_use_linkage): Rename 'linkage' argument to 'func'.
8805 Use ultimate alias target for the linkage name.
8806 * config/alpha/alpha.md (movmemdi): Use the symbol returned
8807 by alpha_need_linkage for the function symbol.
8808 (setmemdi): Likewise.
8809
8810 2009-08-09 Douglas B Rupp <rupp@gnat.com>
8811
8812 * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
8813 * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
8814 (ASM_WEAKEN_LABEL): Define.
8815 (CRT_CALL_STATIC_FUNCTION): Define.
8816 (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
8817 (ENDFILE_SPEC): Define.
8818 (INIT_SECTION_ASM_OP): Define.
8819 * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
8820 * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
8821 crtend.o crtendS.o.
8822 (MULTILIB_OSDIRNAMES): Define.
8823 (shlib_version): Define.
8824 (SHLIB_EXT): Define.
8825 (SHLIB_OBJS): Define.
8826 (SHLIB_NAME): Define.
8827 (SHLIB_MULTILIB): Define.
8828 (SHLIB_INSTALL): Define.
8829 (SHLIB_SYMVEC): Define.
8830 (SHLIB_SYMVECX2): Define.
8831 (SHLIB_LINK): Define.
8832
8833 2009-08-09 Douglas B Rupp <rupp@gnat.com>
8834
8835 * config/alpha/alpha.c (alpha_initialize_trampoline):
8836 Initialize VMS trampoline IAW ABI for bounded procedure calls.
8837 (alpha_start_function): Emit transfer address on nested functions
8838 for VMS trampoline call.
8839 * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
8840 since no longer used.
8841 * config/alpha/vms-tramp.asm: Remove.
8842 * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
8843 since now only data initialized at runtime.
8844
8845 2009-08-09 Douglas B Rupp <rupp@gnat.com>
8846
8847 * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
8848 (LINK_GCC_C_SEQUENCE_SPEC): Define.
8849 (MD_EXEC_PREFIX): Remove, no longer used.
8850 (MD_STARTFILE_PREFIX): Likewise.
8851 (INCLUDE_DEFAULTS): Likewise.
8852 * config/alpha/t-vms:
8853 (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
8854
8855 2009-08-09 Richard Guenther <rguenther@suse.de>
8856
8857 PR tree-optimization/41016
8858 * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
8859 (operand_precision): Remove.
8860 (integral_operand_p): Likewise.
8861 (recognize_single_bit_test): Adjust.
8862
8863 2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
8864
8865 * c-common.c (c_fully_fold_internal): Issue a warning if a binary
8866 operation overflows. Likewise non-cast unary arithmetic.
8867 If one arm of a conditional expression is always taken,
8868 inhibit evaluation warnings for the other arm. Likewise inhibit
8869 evaluation warnings for the second && or || operand if the first
8870 operand is enough to determine the result.
8871 * c-typeck.c (build_conditional_expr): Apply the same inhibition
8872 rules here.
8873 (build_binary_op): Prevent duplicate evaluation warnings.
8874
8875 2009-08-09 Richard Sandiford <rdsandiford@googlemail.com>
8876
8877 * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
8878 and destination have different modes, Use promote_mode to
8879 determine the signedness of the conversion. Assert that the
8880 promoted source mode matches the destination mode. Don't pass
8881 the destination and destination mode to expand_expr if the source
8882 mode is different. Simplify conversion logic.
8883
8884 2009-08-09 Ira Rosen <irar@il.ibm.com>
8885
8886 PR tree-optimization/41008
8887 * tree-vect-loop.c (vect_is_simple_reduction): Get operands
8888 from condition only in case it's a comparison. Adjust checks.
8889
8890 2009-08-09 Bernd Schmidt <bernd.schmidt@analog.com>
8891
8892 * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
8893 * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
8894 * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
8895 (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
8896 (dump_cand): Handle them.
8897 (struct iv_cand): New members COST_STEP and AINC_USE.
8898 (stmt_after_increment): Likewise.
8899 (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos. All
8900 callers changed. Use gimple_uid comparison instead of scanning.
8901 (add_candidate_1): When looking for identical candidates, take
8902 AINC_USE into account. Set it for new candidates.
8903 (force_expr_to_var_cost): Cast target_spill_cost to int.
8904 (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
8905 All callers changed. Check for availability of autoinc addressing
8906 modes, both in general for a given mode, and in the specific use case.
8907 (get_computation_cost_at): New argument CAN_AUTOINC. All callers
8908 changed.
8909 (get_computation_cost): Likewise.
8910 (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
8911 add_autoinc_candidates): New static functions.
8912 (add_candidate): Call add_autoinc_candidates for candidates based on
8913 a USE_ADDRESS use.
8914 (find_iv_candidates): Call set_autoinc_for_original_candidates.
8915 (determine_use_iv_cost_address): If we have an autoinc candidate at
8916 the matching use, verify autoinc is possible and subtract the cost
8917 of the candidate's step from the cost.
8918 (determine_iv_cost): Record the cost of the increment in the COST_STEP
8919 member of the candidate.
8920 (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
8921 determine_use_iv_costs. Call renumber_gimple_stmt_uids_in_blocks.
8922
8923 2009-08-09 Douglas B Rupp <rupp@gnat.com>
8924
8925 * config.build (ia64-hp-*vms*): New target.
8926 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8927 with ia64-hp-*vms*.
8928 * config.gcc (ia64-hp-*vms*): New target.
8929 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8930 with ia64-hp-*vms*.
8931 * config.host (ia64-hp-*vms*): New target.
8932 (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
8933 with ia64-hp-*vms*.
8934
8935 2009-08-08 Richard Guenther <rguenther@suse.de>
8936
8937 PR tree-optimization/40991
8938 * tree-ssa-pre.c (eliminate): Delay purging EH edges.
8939
8940 2009-08-08 Richard Sandiford <rdsandiford@googlemail.com>
8941
8942 * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
8943 mode check. Do truncations in an integer mode.
8944 (force_to_mode): Handle subregs for all mode types. Only do
8945 arithmetic simplifications on integer modes.
8946
8947 2009-08-07 Richard Guenther <rguenther@suse.de>
8948
8949 PR tree-optimization/40999
8950 * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
8951 (maybe_fold_reference): Lookup constant initializers.
8952 (fold_gimple_assign): Likewise.
8953
8954 2009-08-07 Richard Guenther <rguenther@suse.de>
8955
8956 * tree-ssa.c (useless_type_conversion_p_1): Only for types
8957 that require structural equality defer to the langhook.
8958
8959 2009-08-07 Martin Jambor <mjambor@suse.cz>
8960
8961 * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
8962 comments.
8963 (struct ipa_pass_through_data): New type.
8964 (struct ipa_ancestor_jf_data): New type.
8965 (union jump_func_value): Removed field formal_id, added fields
8966 pass_through and ancestor.
8967 (struct ipa_param_call_note): Changed type of formal_id to int from
8968 unsigned.
8969 * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
8970 operations jump functions and ancestor jump functions.
8971 (compute_complex_pass_through): New function.
8972 (compute_scalar_jump_functions): Call compute_complex_pass_through,
8973 reflect changes in the jump function strucutre.
8974 (update_jump_functions_after_inlining): Ignore complex pass-through
8975 and ancestor jump functions.
8976 * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
8977 polynomial pass-through with operation jump functions.
8978
8979 2009-08-07 Jakub Jelinek <jakub@redhat.com>
8980
8981 * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
8982 fde->dw_fde_begin as begin label instead of hot/cold label.
8983 Use LLSDAC label instead of LLSDA for second section lsda.
8984 (dwarf2out_do_cfi_startproc): Add SECOND argument. Use LLSDAC
8985 label instead of LLSDA if it is true.
8986 (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
8987 callers.
8988 * except.c (add_call_site, dw2_size_of_call_site_table): Add
8989 SECTION argument. Use it as index into crtl->eh.call_site_record
8990 array.
8991 (dw2_output_call_site_table): Likewise. Add CS_FORMAT argument,
8992 use it to determine how to print table entries instead of using
8993 #ifdef HAVE_AS_LEB128. For SECTION > 0 use hot resp. cold
8994 label instead of normal begin label as base.
8995 (sjlj_assign_call_site_values): Adjust add_call_site caller.
8996 (convert_to_eh_region_ranges): When doing hot/cold partitioning,
8997 ensure no EH range spans between sections and that landing pads
8998 are always in the corresponding section.
8999 (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
9000 for crtl->eh.call_site_record being an array rather than scalar.
9001 (output_one_function_exception_table): New function, copied
9002 from output_function_exception_table. Adjust
9003 dw2_size_of_call_site_table, dw2_output_call_site_table
9004 callers. For SECOND section use *C suffixed labels.
9005 (output_function_exception_table): Call
9006 output_one_function_exception_table and, when doing hot/cold
9007 partitioning, also another time for the second section.
9008 * opts.c: Include except.h.
9009 (decode_options): Allow -freorder-blocks-and-partition with
9010 exceptions, unless SJLJ or TARGET_UNWIND_INFO.
9011 * Makefile.in (opts.o): Depend on $(EXCEPT_H).
9012 * function.h (struct rtl_eh): Change call_site_record from
9013 scalar into array of 2 elements.
9014
9015 2009-08-07 Martin Jambor <mjambor@suse.cz>
9016
9017 * ipa-prop.c (count_formal_params_1): New function.
9018 (ipa_get_vector_of_formal_parms): New function.
9019 (get_vector_of_formal_parm_types): New function.
9020 (ipa_modify_formal_parameters): New function.
9021 (ipa_modify_call_arguments): New function.
9022 (index_in_adjustments_multiple_times_p): New function.
9023 (ipa_combine_adjustments): New function.
9024 (ipa_dump_param_adjustments): New function.
9025 * ipa-prop.h (struct ipa_parm_adjustment): New type.
9026 (ipa_get_vector_of_formal_parms): Declare.
9027 (ipa_modify_formal_parameters): Declare.
9028 (ipa_modify_call_arguments): Declare.
9029 (ipa_combine_adjustments): Declare.
9030 (ipa_dump_param_adjustments): Declare.
9031 (build_ref_for_offset): Declare.
9032 * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
9033 * tree-sra.c: Include ipa-prop.c.
9034 (build_ref_for_offset): Make public.
9035
9036 2009-08-06 Neil Vachharajani <nvachhar@gmail.com>
9037
9038 * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
9039
9040 2009-08-06 Thomas Schwinge <tschwinge@gnu.org>
9041
9042 * gcc/doc/extend.texi (__builtin_extract_return_address)
9043 (__builtin_frob_return_address): Document.
9044
9045 2009-08-06 Paul Brook <paul@codesourcery.com>
9046
9047 * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
9048 (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
9049 implementation on ARMv6-M.
9050
9051 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
9052
9053 * doc/extend.texi (pcs): Document new attribute for ARM.
9054
9055 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
9056
9057 * arm.c (pcs_attribute_args): Comment out unsupported attribute
9058 variants.
9059
9060 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
9061
9062 * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
9063 warning ().
9064
9065 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
9066
9067 * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
9068
9069 2009-08-06 Richard Earnshaw <rearnsha@arm.com>
9070
9071 Merge ARM/hard_vfp_branch to trunk.
9072
9073 2009-08-04 Richard Earnshaw <rearnsha@arm.com>
9074
9075 * arm.c (libcall_eq): New function.
9076 (libcall_hash): New function.
9077 (add_libcall): New function.
9078 (arm_libcall_uses_aapcs_base): New function.
9079 (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
9080 libcalls using the base PCS.
9081 (arm_init_cumulative_args): Likewise.
9082
9083 2009-07-20 Joseph Myers <joseph@codesourcery.com>
9084
9085 * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
9086 Use base ABI for conversion libfuncs between HFmode and SFmode.
9087
9088 2009-05-12 Joseph Myers <joseph@codesourcery.com>
9089
9090 * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
9091 V4SImode as representatives of all 64-bit and 128-bit vector
9092 types. Allow vector types without vector modes.
9093 (aapcs_vfp_is_call_or_return_candidate): Handle vector types
9094 without vector modes like BLKmode.
9095 (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
9096 BLKmode. Avoid unsupported vector modes or TImode moves for
9097 non-TARGET_NEON.
9098 (aapcs_vfp_allocate_return_reg): Likewise.
9099 (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
9100 V8QImode if TARGET_NEON || TARGET_IWMMXT.
9101
9102 2009-05-12 Joseph Myers <joseph@codesourcery.com>
9103
9104 * config/arm/arm.c (arm_handle_pcs_attribute): New.
9105 (arm_get_pcs_model): Pass attribute arguments to
9106 arm_pcs_from_attribute.
9107 (arm_init_cumulative_args): Use base AAPCS for conversions from
9108 floating-point types to DImode.
9109 (arm_attribute_table): Add pcs attribute.
9110 (arm_handle_pcs_attribute): New.
9111 * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
9112 conversions from floating-point types to DImode, also declare them
9113 to use base AAPCS and declare functions they call to use base
9114 AAPCS and their RTABI names.
9115
9116 2009-05-12 Joseph Myers <joseph@codesourcery.com>
9117
9118 * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
9119 -mfloat-abi=hard not being supported for VFP.
9120
9121 2009-05-11 Kazu Hirata <kazu@codesourcery.com>
9122
9123 * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
9124 SYMBOL_REF to hard_libcall_value.
9125
9126 2009-03-05 Joseph Myers <joseph@codesourcery.com>
9127 Richard Earnshaw <rearnsha@arm.com>
9128
9129 * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
9130 has been put on the stack, all remaining co-processory arguments for
9131 that co-processor also go on the stack.
9132
9133 2009-03-05 Joseph Myers <joseph@codesourcery.com>
9134
9135 * config/arm/arm.c (arm_return_in_memory): Handle returning
9136 vectors of suitable size in registers also for AAPCS case.
9137
9138 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
9139
9140 * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
9141
9142 2008-12-09 Richard Earnshaw <rearnsha@arm.com>
9143
9144 ARM Hard-VFP calling convention
9145 * target-def.h (TARGET_LIBCALL_VALUE): New hook.
9146 * target.h (gcc_target): Add libcall_value to table of call hooks.
9147 * targhooks.h (default_libcall_value): Default implementation.
9148 * targhooks.c (default_libcall_value): Likewise.
9149 * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
9150 * optabs.c (expand_unop): Use it.
9151 * expr.h (hard_libcall_value): Pass the function RTX through.
9152 * calls.c (emit_library_call_value_1): Update call to
9153 hard_libcall_value.
9154 * explow.c (hard_libcall_value): Use new target hook.
9155 * testsuite/lib/target-supports.exp
9156 (check_effective_target_arm_hard_vfp_ok): New hook.
9157 (check_effective_target_arm_neon_ok): Improve test for neon
9158 availability.
9159 * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
9160 * config/arm/arm.c: Include cgraph.h
9161 (TARGET_FUNCTION_VALUE): Override default hook.
9162 (arm_pcs_default): New variable.
9163 (arm_override_options): Don't fault hard calling convention with VFP.
9164 Add support for AAPCS variants.
9165 (arm_function_value): Make static. Handle AAPCS variants.
9166 (arm_libcall_value): New function.
9167 (arm_apply_result_size): Handle VFP registers in results.
9168 (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
9169 conventions.
9170 (pcs_attribute_args): New variable.
9171 (arm_pcs_from_attribute): New function.
9172 (arm_get_pcs_model): New function.
9173 (aapcs_vfp_cum_init): New function.
9174 (aapcs_vfp_sub_candidate): New function.
9175 (aapcs_vfp_is_return_candidate): New function.
9176 (aapcs_vfp_is_call_candidate): New function.
9177 (aapcs_vfp_allocate): New function.
9178 (aapcs_vfp_allocate_return_reg): New function.
9179 (aapcs_vfp_advance): New function.
9180 (aapcs_cp_arg_layout): New variable.
9181 (aapcs_select_call_coproc): New function.
9182 (aapcs_select_return_coproc): New function.
9183 (aapcs_allocate_return_reg): New function.
9184 (aapcs_libcall_value): New function.
9185 (aapcs_layout_arg): New function.
9186 (arm_init_cumulative_args): Initialize AAPCS args data.
9187 (arm_function_arg): Handle AAPCS variants using new interface.
9188 (arm_arg_parital_bytes): Likewise.
9189 (arm_function_arg_advance): New function.
9190 (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
9191 calling conventions.
9192 (arm_setup_incoming_varargs): Handle new AAPCS args data.
9193 * arm.h (NUM_VFP_ARG_REGS): Define.
9194 (LIBCALL_VALUE): Update.
9195 (FUNCTION_VALUE): Delete.
9196 (FUNCTION_VALUE_REGNO_P): Add VFP regs.
9197 (arm_pcs): New enum.
9198 (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
9199 (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
9200 (FUNCTION_ARG_REGNO_P): Add VFP regs.
9201 * arm-protos.h (arm_function_arg_advance): Add.
9202 (aapcs_libcall_value): Add.
9203 (arm_function_value): Delete.
9204
9205 2009-08-06 Uros Bizjak <ubizjak@gmail.com>
9206 H.J. Lu <hongjiu.lu@intel.com>
9207
9208 PR target/40957
9209 * config/i386/i386.c (standard_sse_mode_p): Remove.
9210 (standard_sse_constant_p): Return 2 for integer mode
9211 vector_all_ones_operand when SSE2 is enabled.
9212 (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
9213 (ix86_expand_vector_move): Do not check for negative values from
9214 standard_sse_constant_p.
9215
9216 2009-08-06 Richard Guenther <rguenther@suse.de>
9217
9218 * tree-ssa.c (useless_type_conversion_p_1): Make function and
9219 array type comparisons frontend independent.
9220 * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
9221 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
9222 out array reference lower bound and element size operands.
9223 (ao_ref_init_from_vn_reference): Properly compute the offset
9224 for ARRAY_RANGE_REF.
9225 (vn_reference_fold_indirect): Fill out array reference lower
9226 bound and element size operands.
9227 * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
9228 a non gimple valued reference operand which can happen for
9229 array reference lower bound or element size.
9230 (create_component_ref_by_pieces_1): Properly generate the
9231 element size operand for array references.
9232
9233 2009-08-06 Richard Guenther <rguenther@suse.de>
9234
9235 PR tree-optimization/40964
9236 * tree.c (iterative_hash_host_wide_int): Export.
9237 * tree.h (iterative_hash_host_wide_int): Declare.
9238 * tree-ssa-structalias.c (heapvar_map): New struct.
9239 (heapvar_map_eq): New function.
9240 (heapvar_map_hash): Likewise.
9241 (heapvar_lookup): Adjust.
9242 (heapvar_insert): Likewise.
9243 (make_constraint_from_heapvar): Allow multiple heap variables
9244 per decl at different offsets.
9245 (init_alias_heapvars): Adjust.
9246
9247 2009-08-04 David Daney <ddaney@caviumnetworks.com>
9248
9249 * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
9250 * mips_output_sync_loop (mips_output_sync_loop): Only emit
9251 trailing sync if TARGET_SYNC_AFTER_SC.
9252
9253 2009-08-05 David Daney <ddaney@caviumnetworks.com>
9254
9255 * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
9256 compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
9257 sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
9258 sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
9259 sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
9260 sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
9261 sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
9262 sync_new_nand<mode>, sync_lock_test_and_set<mode>,
9263 test_and_set_12): Rewrite calls to mips_output_sync_loop.
9264 * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
9265 the prototype declaration match the definition.
9266 * gcc/config/mips/mips.c (mips_output_sync_loop): Emit sync
9267 instructions explicitly. Add barrier_before and operands
9268 parameters.
9269 * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
9270 MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
9271 MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
9272 MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
9273 MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
9274 MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
9275
9276 2009-08-05 Andrew Pinski <pinskia@gmail.com>
9277
9278 * tree-ssa-alias.c: Fix intervals to use [) syntax.
9279
9280 2009-08-05 Uros Bizjak <ubizjak@gmail.com>
9281 Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
9282
9283 PR target/40906
9284 * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
9285 source operand.
9286
9287 2009-08-05 Jakub Jelinek <jakub@redhat.com>
9288
9289 PR rtl-optimization/40924
9290 * dse.c (canon_address): Before calling cselib_expand_value_rtx
9291 make sure canon_rtx (mem_address) isn't simpler than
9292 canon_rtx (expanded_mem_address).
9293
9294 2009-08-05 Li Feng <nemokingdom@gmail.com>
9295
9296 * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
9297 for each poly_bb_p.
9298 (build_scop_drs): Build alias set for each SCoP.
9299
9300 2009-08-04 Sandra Loosemore <sandra@codesourcery.com>
9301
9302 * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
9303 * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
9304 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
9305 (MIPS_ARCH_FLOAT_SPEC): Likewise.
9306 (BASE_DRIVER_SELF_SPECS): Likewise.
9307
9308 2009-08-04 Andrew Pinski <pinskia@gmail.com>
9309
9310 * tree-ssa-alias.c: Fix some comment typos.
9311
9312 2009-08-04 Kaz Kojima <kkojima@gcc.gnu.org>
9313
9314 * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
9315 ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
9316
9317 2009-08-03 Janis Johnson <janis187@us.ibm.com>
9318
9319 PR c/39902
9320 * simplify-rtx.c (simplify_binary_operation_1): Disable
9321 simplifications for decimal float operations.
9322
9323 2009-08-03 Jakub Jelinek <jakub@redhat.com>
9324
9325 PR middle-end/40943
9326 * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
9327 operand of INDIRECT_REF.
9328
9329 2009-08-03 Uros Bizjak <ubizjak@gmail.com>
9330
9331 * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
9332 constants referencing TLS symbols.
9333
9334 2009-08-03 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
9335
9336 * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
9337 __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
9338
9339 2009-08-03 Richard Guenther <rguenther@suse.de>
9340
9341 * tree.c (make_vector_type): Build a main variant first,
9342 get the canonical one and then build the variant.
9343 * tree-ssa.c (useless_type_conversion_p_1): Handle
9344 fixed-point types.
9345 (useless_type_conversion_p): Conversions to pointers to
9346 incomplete record types are useless.
9347
9348 2009-08-03 Richard Guenther <rguenther@suse.de>
9349
9350 * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
9351 file will be created.
9352 * omp-low.c (pass_diagnose_omp_blocks): Likewise.
9353 * toplev.c (compile_file): Adjust comment.
9354
9355 2009-08-03 Kaz Kojima <kkojima@gcc.gnu.org>
9356
9357 * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
9358 * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
9359 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9360 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9361 (sh_promote_function_mode): Fix typo.
9362
9363 2009-08-03 Andreas Krebbel <krebbel1@de.ibm.com>
9364
9365 * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
9366
9367 2009-08-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
9368
9369 * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
9370 declaration arguments.
9371
9372 2009-08-02 Uros Bizjak <ubizjak@gmail.com>
9373
9374 * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
9375 of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
9376 (ix86_split_ashl): Ditto.
9377 (ix86_expand_vector_init_one_nonzero): Ditto.
9378 (ix86_expand_vector_set): Ditto.
9379 (ix86_expand_reduc_v4sf): Ditto.
9380
9381 2009-08-02 Paolo Bonzini <bonzini@gnu.org>
9382
9383 * explow.c (promote_function_mode): Remove assert.
9384 * config/sh/sh.c (sh_promote_function_mode): Declare.
9385
9386 2009-08-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
9387
9388 * config/pa/pa.c (pa_promote_function_mode): Declare.
9389 Change to static. Fix promote_mode call.
9390
9391 * gthr-dce.h (CONST_CAST2): Define if not defined.
9392 (__gthread_setspecific): Use CONST_CAST2 to fix warning.
9393
9394 * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
9395
9396 2009-08-01 Paolo Bonzini <bonzini@gnu.org>
9397
9398 * expr.c (store_constructor): Use promote_decl_mode. Remove
9399 now write-only variable unsignedp.
9400 (expand_expr_real_1): Use promote_decl_mode.
9401 * expr.h (promote_function_mode, promote_decl_mode): New.
9402 (promote_mode): Remove last argument.
9403 * function.c (assign_temp): Drop last argument of promote_mode.
9404 (assign_parm_find_data_types): Use promote_function_mode.
9405 (assign_parm_setup_reg): Likewise.
9406 (expand_function_end): Use promote_function_mode.
9407 * calls.c (initialize_argument_information): Use promote_function_mode.
9408 (precompute_arguments): Use promote_mode instead of checking if
9409 only PROMOTE_FUNCTION_MODE is defined.
9410 (expand_call): When making sibcall decisions, use promote_function_mode.
9411 Below, remove an if for targetm.calls.promote_function_return and
9412 and use promote_function_mode.
9413 (emit_library_call_value_1): Use promote_function_mode, fix bug
9414 where promote_mode was passed FOR_CALL == 0 for a return value in an
9415 assertion.
9416 * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9417 * explow.c (promote_function_mode, promote_decl_mode): New.
9418 (promote_mode): Keep only the FOR_CALL == 0 case.
9419 * combine.c (setup_incoming_promotion): Remove test of
9420 promote_function_args. Use promote_function_mode.
9421 * stmt.c (expand_value_return): Use promote_decl_mode.
9422 (expand_decl): Use promote_decl_mode.
9423
9424 * expr.c (store_constructor): Use promote_decl_mode. Remove
9425 now write-only variable unsignedp.
9426 (expand_expr_real_1): Use promote_decl_mode.
9427 * expr.h (promote_function_mode, promote_decl_mode): New.
9428 (promote_mode): Remove last argument.
9429 * function.c (assign_temp): Drop last argument of promote_mode.
9430 (assign_parm_find_data_types): Use promote_function_mode.
9431 (assign_parm_setup_reg): Likewise.
9432 (expand_function_end): Use promote_function_mode.
9433 * calls.c (initialize_argument_information): Use promote_function_mode.
9434 (precompute_arguments): Use promote_mode instead of checking if
9435 only PROMOTE_FUNCTION_MODE is defined.
9436 (expand_call): When making sibcall decisions, use promote_function_mode.
9437 Below, remove an if for targetm.calls.promote_function_return and
9438 and use promote_function_mode.
9439 (emit_library_call_value_1): Use promote_function_mode, fix bug
9440 where promote_mode was passed FOR_CALL == 0 for a return value in an
9441 assertion.
9442 * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
9443 * explow.c (promote_function_mode, promote_decl_mode): New.
9444 (promote_mode): Keep only the FOR_CALL == 0 case.
9445 * combine.c (setup_incoming_promotion): Remove test of
9446 promote_function_args. Use promote_function_mode.
9447 * stmt.c (expand_value_return): Use promote_decl_mode.
9448 (expand_decl): Use promote_decl_mode.
9449
9450 * explow.c (promote_function_mode): Just call the target hook.
9451 * targhooks.c (default_promote_function_mode,
9452 default_promote_function_mode_always_promote): New.
9453 * targhooks.h (default_promote_function_mode,
9454 default_promote_function_mode_always_promote): Declare.
9455 * target.h (promote_function_args, promote_function_return): Remove.
9456 (promote_function_mode): New.
9457 * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
9458 TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9459 (TARGET_PROMOTE_FUNCTION_MODE): New.
9460 (TARGET_CALLS): Adjust.
9461 * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
9462 TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
9463
9464 * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
9465 * config/s390/s390.c (s390_promote_function_mode): ... here,
9466 with pointer handling.
9467 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9468 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9469
9470 * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
9471 * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
9472 with pointer handling.
9473 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9474 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9475
9476 * config/sh/sh-protos.h (sh_promote_function_mode): New.
9477 * config/sh/sh.c (sh_promote_function_mode): New.
9478 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9479 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9480
9481 * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
9482 * config/cris/cris.c (cris_promote_function_mode): ... here.
9483 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9484 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9485
9486 * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
9487 * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
9488 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9489 (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
9490
9491 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
9492 * config/arm/arm.c (arm_promote_function_mode): ... here, without
9493 complex type handling.
9494 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9495 (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9496
9497 * config/pa/pa.c (pa_promote_function_mode): New.
9498 (TARGET_PROMOTE_FUNCTION_MODE): Define.
9499 (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9500
9501 * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
9502 TARGET_PROMOTE_FUNCTION_RETURN): Remove.
9503 (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
9504 * config/xtensa/xtensa.c: Likewise.
9505 * config/stormy16/stormy16.c: Likewise.
9506 * config/iq2000/iq2000.c: Likewise.
9507 * config/rs6000/rs6000.c: Likewise.
9508 * config/picochip/picochip.c: Likewise.
9509 * config/arc/arc.c: Likewise.
9510 * config/mcore/mcore.c: Likewise.
9511 * config/score/score.c: Likewise.
9512 * config/mips/mips.c: Likewise.
9513 * config/bfin/bfin.c: Likewise.
9514 * config/ia64/ia64.c: Likewise (disabled though).
9515
9516 * config/frv/frv.h: Remove pointless remark.
9517
9518 * doc/tm.texi (PROMOTE_FUNCTION_MODE,
9519 TARGET_PROMOTE_FUNCTION_ARGS,
9520 TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
9521 (TARGET_PROMOTE_FUNCTION_MODE): ... this.
9522
9523 2009-08-01 Sebastian Pop <sebastian.pop@amd.com>
9524
9525 * doc/invoke.texi (-fgraphite-force-parallel): Renamed
9526 -floop-parallelize-all.
9527 * toplev.c (process_options): Rename flag_graphite_force_parallel to
9528 flag_loop_parallelize_all.
9529 * tree-ssa-loop.c (gate_graphite_transforms): Same.
9530 * graphite.c (graphite_transform_loops): Same.
9531 * common.opt: Same.
9532 * graphite-poly.c (apply_poly_transforms): Same.
9533
9534 2009-07-31 Richard Earnshaw <rearnsha@arm.com>
9535
9536 PR tree-optimization/40914
9537 * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
9538 if set, then check the delta field of the PMF record.
9539 (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
9540 (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
9541 call is stored in the delta.
9542
9543 2009-07-31 Adam Nemet <anemet@caviumnetworks.com>
9544
9545 * config/mips/mips.md (*clear_upper32_dext): New pattern.
9546
9547 2009-07-31 Uros Bizjak <ubizjak@gmail.com>
9548
9549 * config/i386/bsd.h (ASM_BYTE): New define.
9550 * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
9551 * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
9552 .byte. Use fputs or putc instead of fprintf where appropriate.
9553 * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte. Use
9554 fputs or putc instead of fprintf where appropriate.
9555 * config/i386/i386elf.h: Ditto.
9556 * config/i386/sysv4.h: Ditto.
9557
9558 * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
9559 * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
9560 (*tls_global_dynamic_64): Ditto.
9561
9562 2009-07-31 Christian Bruel <christian.bruel@st.com>
9563
9564 * gcc/config.gcc (sh*-*-elf): test with_libgloss.
9565
9566 2009-07-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
9567
9568 * config/arm/arm.c (arm_arm_address_cost): Fix typo.
9569 Remove dead code for MINUS.
9570
9571 2009-07-31 Anthony Green <green@moxielogic.com>
9572
9573 * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
9574 $r12 in prologue.
9575 (moxie_expand_epilogue): Ditto for epilogue.
9576 (moxie_setup_incoming_varargs): ABI change. Use 5 registers for
9577 incoming arguments.
9578 (moxie_function_arg): Ditto.
9579 (moxie_pass_by_reference): Ditto.
9580 (moxie_arg_partial_bytes): Ditto.
9581 * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
9582 (FUNCTION_ARG_ADVANCE) Ditto.
9583 (REG_PARM_STACK_SPACE) Ditto.
9584 (FUNCTION_ARG_REGNO_P) Dito.
9585
9586 * config.gcc: Add moxie linux config support.
9587 * gcc/config/moxie/uclinux.h: New file.
9588
9589 2009-07-31 DJ Delorie <dj@redhat.com>
9590
9591 * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
9592 (UNSPECV_SP_SWITCH_E): New.
9593 (sp_switch_1): Change to an unspec.
9594 (sp_switch_2): Change to an unspec. Don't use post-inc when we
9595 replace $r15.
9596 * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
9597 reference the new stack's address
9598
9599 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9600
9601 * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
9602 graphite-clast-to-gimple.o, graphite-dependences.o,
9603 graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9604 graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
9605 (graphite-blocking.o,
9606 graphite-clast-to-gimple.o, graphite-dependences.o,
9607 graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
9608 graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
9609 * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
9610 * cfgloop.h (struct loop): Add can_be_parallel field.
9611 * common.opt (fgraphite-identity): Moved up.
9612 (fgraphite-force-parallel): New flag.
9613 * graphite.c: Rewrite.
9614 * graphite.h: Rewrite.
9615 * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
9616 after Graphite.
9617 * toplev.c (graphite_out_file): New file descriptor.
9618 (graphite_in_file): New.
9619 (process_options): flag_graphite_force_parallel cannot be used without
9620 Graphite.
9621 * tree-ssa-loop.c: Include toplev.h.
9622 (gate_graphite_transforms): Enable flag_graphite for
9623 flag_graphite_force_parallel.
9624
9625 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9626
9627 * ChangeLog.graphite: New.
9628 * graphite-blocking.c: New.
9629 * graphite-clast-to-gimple.c: New.
9630 * graphite-clast-to-gimple.h: New.
9631 * graphite-dependences.c: New.
9632 * graphite-dependences.h: New.
9633 * graphite-interchange.c: New.
9634 * graphite-poly.c: New.
9635 * graphite-poly.h: New.
9636 * graphite-ppl.c: New.
9637 * graphite-ppl.h: New.
9638 * graphite-scop-detection.c: New.
9639 * graphite-scop-detection.h: New.
9640 * graphite-sese-to-poly.c: New.
9641 * graphite-sese-to-poly.h: New.
9642 * sese.c: New.
9643 * sese.h: New.
9644
9645 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9646
9647 * tree-chrec.c (evolution_function_right_is_integer_cst): New.
9648 * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
9649
9650 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9651
9652 * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
9653 (scev_is_linear_expression): Return false if the evolution is not
9654 affine multivariate.
9655
9656 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9657
9658 * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
9659 * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
9660
9661 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9662
9663 * tree-data-ref.c (debug_data_references): New.
9664 (debug_data_reference): New.
9665 * tree-data-ref.h (debug_data_references): Declared.
9666 (debug_data_reference): Declared.
9667
9668 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9669
9670 * tree-data-ref.c (stmt_simple_memref_p: Removed.
9671 * tree-data-ref.h (scop_p): Removed.
9672 (struct data_reference): Remove field scop.
9673 (DR_SCOP): Removed.
9674 (stmt_simple_memref_p): Removed.
9675
9676 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9677
9678 * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
9679 * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
9680 basic block empty.
9681
9682 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9683
9684 * doc/invoke.texi (-fgraphite-force-parallel): Documented.
9685
9686 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9687
9688 * doc/invoke.texi (-fgraphite-identity): Documented.
9689
9690 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9691
9692 * tree-scalar-evolution.c: Fix comment.
9693 (instantiate_scev_1): Return unknow from scev instantiation if the
9694 result is not above instantiate_below.
9695
9696 2009-07-30 Sebastian Pop <sebastian.pop@amd.com>
9697
9698 * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
9699 static anymore. Instantiate the symbols that may have been introduced
9700 by chrec_apply.
9701 * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
9702 Declared.
9703
9704 2009-07-30 DJ Delorie <dj@redhat.com>
9705
9706 * config/mep/mep.c (mep_asm_init_sections): Add section flags and
9707 .vliw directive to VLIW sections.
9708
9709 2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
9710
9711 * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
9712 New variables.
9713 ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
9714 (AUTOHEADER): New variable.
9715 ($(srcdir)/cstamp-h.in): Use it.
9716
9717 2009-07-30 Michael Meissner <meissner@linux.vnet.ibm.com>
9718 Pat Haugen <pthaugen@us.ibm.com>
9719 Revital Eres <ERES@il.ibm.com>
9720
9721 * config/rs6000/vector.md (VEC_F): Add VSX support.
9722 (VEC_A): Ditto.
9723 (VEC_N): Ditto.
9724 (mov<mode>): Ditto.
9725 (vector_load_<mode>): Ditto.
9726 (vector_store_<mode>): Ditto.
9727 (vector GPR move split): Ditto.
9728 (vec_reload_and_plus_<mptrsize>): Ditto.
9729 (vec_reload_and_reg_<mptrsize>): Ditto.
9730 (add<mode>3): Ditto.
9731 (sub<mode>3): Ditto.
9732 (mul<mode>3): Ditto.
9733 (neg<mode>2): Ditto.
9734 (abs<mode>2): Ditto.
9735 (smin<mode>3): Ditto.
9736 (smax<mode>3): Ditto.
9737 (vector_eq<mode>): Ditto.
9738 (vector_gt<mode>): Ditto.
9739 (vector_ge<mode>): Ditto.
9740 (vector_gtu<mode>): Ditto.
9741 (vector_select_<mode>_uns): Ditto.
9742 (vector_eq_<mode>_p): Ditto.
9743 (vector_gt_<mode>_p): Ditto.
9744 (vector_ge_<mode>_p): Ditto.
9745 (vector_gtu_<mode>_p): Ditto.
9746 (cr6_test_for_zero): Ditto.
9747 (cr6_test_for_zero_reverse): Ditto.
9748 (cr6_test_for_lt): Ditto.
9749 (cr6_test_for_lt_reverse): Ditto.
9750 (xor<mode>3): Ditto.
9751 (ior<mode>3): Ditto.
9752 (and<mode>3): Ditto.
9753 (one_cmpl<mode>2): Ditto.
9754 (nor<mode>2): Ditto.
9755 (andc<mode>2): Ditto.
9756 (float<VEC_int<mode>2): Ditto.
9757 (unsigned_float<VEC_int><mode>2): Ditto.
9758 (fix_trunc<mode><VEC_int>2): Ditto.
9759 (fixuns_trunc<mode><VEC_int>2): Ditto.
9760 (vec_init<mode>):
9761 (vec_set<mode>): Ditto.
9762 (vec_extract<mode>): Ditto.
9763 (vec_interleave_highv4sf): Ditto.
9764 (vec_interleave_lowv4sf): Ditto.
9765 (vec_realign_load_<mode>): Ditto.
9766 (vec_shl_<mode>): Ditto.
9767 (vec_shr_<mode>): Ditto.
9768 (div<mode>3): New patterns for VSX.
9769 (vec_interleave_highv2df): Ditto.
9770 (vec_interleave_lowv2df): Ditto.
9771 (vec_pack_trunc_v2df): Ditto.
9772 (vec_pack_sfix_trunc_v2df): Ditto.
9773 (vec_pack_ufix_trunc_v2df): Ditto.
9774 (vec_unpacks_hi_v4sf): Ditto.
9775 (vec_unpacks_lo_v4sf): Ditto.
9776 (vec_unpacks_float_hi_v4si): Ditto.
9777 (vec_unpacks_float_lo_v4si): Ditto.
9778 (vec_unpacku_float_hi_v4si): Ditto.
9779 (vec_unpacku_float_lo_v4si): Ditto.
9780 (movmisalign<mode>): Ditto.
9781 (vector_ceil<mode>2): New patterns for vectorizing math library.
9782 (vector_floor<mode>2): Ditto.
9783 (vector_btrunc<mode>2): Ditto.
9784 (vector_copysign<mode>3): Ditto.
9785
9786 * config/rs6000/predicates.md (easy_vector_constant_msb): New
9787 predicate for setting the high bit in each word, used for copysign.
9788
9789 * config/rs6000/ppc-asm.h (f19): Whitespace.
9790 (f32-f63): Define if VSX.
9791 (v0-v31): Define if Altivec.
9792 (vs0-vs63): Define if VSX.
9793
9794 * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
9795
9796 * config/rs6000/power7.md: New file, provide tuning parameters for
9797 -mcpu=power7.
9798
9799 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
9800 (rs6000_cpu_cpp_builtins): Ditto.
9801 (altivec_overloaded_builtins): Ditto.
9802 (altivec_resolve_overloaded_builtin): Ditto.
9803
9804 * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
9805 debug switch to disable vectorizing simple math builtin
9806 functions.
9807
9808 * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
9809 Vectorize simple math builtin functions.
9810 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
9811 hook to vectorize math builtins.
9812 (rs6000_override_options): Enable -mvsx on -mcpu=power7.
9813 (rs6000_builtin_conversion): Add VSX/power7 support.
9814 (rs6000_builtin_vec_perm): Ditto.
9815 (vsplits_constant): Add support for loading up a vector constant
9816 with just the high bit set in each part.
9817 (rs6000_expand_vector_init): Add VSX/power7 support.
9818 (rs6000_expand_vector_set): Ditto.
9819 (rs6000_expand_vector_extract): Ditto.
9820 (rs6000_emit_move): Ditto.
9821 (bdesc_3arg): Ditto.
9822 (bdesc_2arg): Ditto.
9823 (bdesc_1arg): Ditto.
9824 (rs6000_expand_ternop_builtin): Ditto.
9825 (altivec_expand_builtin): Ditto.
9826 (rs6000_expand_unop_builtin): Ditto.
9827 (rs6000_init_builtins): Ditto.
9828 (altivec_init_builtins): Ditto.
9829 (builtin_function_type): Ditto.
9830 (rs6000_common_init_builtins): Ditto.
9831 (rs6000_handle_altivec_attribute); Ditto.
9832 (rs6000_mangle_type): Ditto.
9833 (rs6000_vector_mode_supported_p): Ditto.
9834 (rs6000_mode_dependent_address): Altivec addresses with AND -16
9835 are mode dependent.
9836
9837 * config/rs6000/vsx.md: New file for VSX support.
9838
9839 * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
9840 identifing values with just the most significant bit set.
9841 (enum rs6000_builtins): Add builtins for VSX. Add simple math
9842 vectorized builtins.
9843
9844 * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
9845 (UNSPEC_VRFIM): Delete.
9846 (splitter for loading up vector with most significant bit): New
9847 splitter for vectorizing copysign.
9848 (altivec_vrfiz): Rename from altivec_fturncv4sf2. Add support for
9849 vectorizing simple math functions.
9850 (altivec_vrfip): Add support for vectorizing simple math functions.
9851 (altivec_vrfim): Ditto.
9852 (altivec_copysign_v4sf3): New insn for Altivec copysign support.
9853
9854 * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
9855 (power7.md, vsx.md): Include for power7 support.
9856 (copysigndf3): Use VSX instructions if -mvsx.
9857 (negdf2_fpr): Ditto.
9858 (absdf2_fpr): Ditto.
9859 (nabsdf2_fpr): Ditto.
9860 (adddf3_fpr): Ditto.
9861 (subdf3_fpr): Ditto.
9862 (muldf3_fpr): Ditto.
9863 (divdf3_fpr): Ditto.
9864 (fix_truncdfdi2_fpr): Ditto.
9865 (cmpdf_internal1): Ditto.
9866 (fred, fred_fpr): Convert into expander/insn to add VSX support.
9867 (btruncdf2, btruncdf2_fpr): Ditto.
9868 (ceildf2, ceildf2_fpr): Ditto.
9869 (floordf2, floordf2_fpr): Ditto.
9870 (floatdidf2, floatdidf2_fpr): Ditto.
9871 (fmadddf4_fpr): Name insn. Use VSX instructions if -mvsx.
9872 (fmsubdf4_fpr): Ditto.
9873 (fnmadddf4_fpr_1): Ditto.
9874 (fnmadddf4_fpr_2): Ditto.
9875 (fnmsubdf4_fpr_1): Ditto.
9876 (fnmsubdf4_fpr_2): Ditto.
9877 (fixuns_truncdfdi2): Add expander for VSX support.
9878 (fix_truncdfdi2): Ditto.
9879 (fix_truncdfsi2): Ditto.
9880 (ftruncdf2): Ditto.
9881 (btruncsf2): Whitespace.
9882 (movdf_hardfloat32): Add support for VSX registers.
9883 (movdf_softfloat32): Ditto.
9884 (movdf_hardfloat64): Ditto.
9885 (movdf_hardfloat64_mfpgpr): Ditto.
9886 (movdf_softfloat64): Ditto.
9887 (movti splitters): Add check for vector registers supporting
9888 TImode in the future.
9889 (bpermd): Add power7 bpermd instruction.
9890
9891 * config/rs6000/altivec.h (vec_div): Define if VSX.
9892 (vec_mul): Ditto.
9893 (vec_msub): Ditto.
9894 (vec_nmadd): Ditto.
9895 (vec_nearbyint): Ditto.
9896 (vec_rint): Ditto.
9897 (vec_sqrt): Ditto.
9898 (all predicates): Use the generic builtin function, and not the V4SF
9899 specific function so that the predicates will work with VSX's V2DF.
9900 (vec_all_*): Ditto.
9901 (vec_any_*): Ditto.
9902
9903 * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
9904 Document new VSX functions and types.
9905
9906 * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
9907 switches.
9908
9909 * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
9910 "wa", and "j" constraints. Modify "v" to talk about Altivec
9911 instead of just vector.
9912
9913 2009-07-30 Andrew MacLeod <amacleod@redhat.com>
9914
9915 PR debug/26475
9916 * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
9917 location for phi arguments.
9918 (rewrite_update_phi_arguments): Find locations for reaching defs.
9919 * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9920 Add location to add_phi_arg calls.
9921 * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
9922 * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
9923 split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
9924 * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
9925 create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
9926 * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
9927 * tree-phinodes.c (make_phi_node): Initialize location.
9928 (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
9929 (add_phi_arg): Add location parameter.
9930 (remove_phi_arg_num): Move location when moving phi argument.
9931 * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
9932 location.
9933 * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
9934 slpeel_update_phi_nodes_for_guard1,
9935 slpeel_update_phi_nodes_for_guard2,
9936 slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
9937 vect_loop_versioning): Set locations.
9938 * tree-parloops.c (create_phi_for_local_result,
9939 transform_to_exit_first_loop, create_parallel_loop): Add locations.
9940 * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
9941 * tree-vect-loop.c (get_initial_def_for_induction,
9942 vect_create_epilog_for_reduction, vect_finalize_reduction): Add
9943 locations.
9944 * tree-flow-inline.h (gimple_phi_arg_location): New. Return locus.
9945 (gimple_phi_arg_location_from_edge): New. Return locus from an edge.
9946 (gimple_phi_arg_set_location): New. Set locus.
9947 (gimple_phi_arg_has_location): New. Check for locus.
9948 (redirect_edge_var_map_location): New. Return locus from var_map.
9949 * tree-vect-data-refs.c (vect_setup_realignment): Set location.
9950 * tree-ssa-phiopt.c (conditional_replacement): Set locus when
9951 combining PHI arguments.
9952 (cond_store_replacement): Set location.
9953 * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
9954 * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
9955 scop_add_exit_phis_edge): Add locations.
9956 * tree-cfgcleanup.c (remove_forwarder_block,
9957 remove_forwarder_block_with_phi): Add locations.
9958 * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
9959 * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
9960 locations.
9961 * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
9962 * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
9963 flush_pending_stmts): Add source location.
9964 * lambda-code.c (perfect_nestify): Maintain location stack with argument
9965 stack to preserve locations.
9966 * tree-vect-stmts.c (vectorizable_load): Add location.
9967 * tree-inline.c (copy_phis_for_bb): Copy locus.
9968 (setup_one_parameter): Add call locus to inlined parameter stmts.
9969 (initialize_inlined_parameters): Pass in call location as parameter
9970 assignment locus.
9971 (tree_function_versioning): Pass location to setup_one_parameter.
9972 * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
9973 * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
9974 copy and edge lists.
9975 (insert_partition_copy_on_edge, insert_value_copy_on_edge,
9976 insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
9977 locus parameter and override the stmt default if provided.
9978 (new_elim_graph, clear_elim_graph, delete_elim_graph,
9979 elim_graph_add_edge, elim_graph_remove_succ_edge,
9980 FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
9981 elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
9982 eliminate_phi): Add locus info in elimination graph for each edge and
9983 value copy.
9984 (insert_backedge_copies): Copy locus if present.
9985 * tree-flow.h (struct _edge_var_map): Add locus field.
9986 * tree-switch_conversions.c (fix_phi_nodes): Add locations.
9987 * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
9988 add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
9989 locations.
9990 * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
9991
9992 2009-07-30 Martin Jambor <mjambor@suse.cz>
9993
9994 PR tree-optimization/40570
9995 * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
9996 use inlining loops.
9997
9998 2009-07-30 Razya Ladelsky <razya@il.ibm.com>
9999
10000 * ssa-loop-manip.c: Include langhooks.h.
10001 (rewrite_phi_with_iv): New.
10002 (rewrite_all_phi_nodes_with_iv): New.
10003 (canonicalize_loop_ivs): Move here from tree-parloops.c.
10004 Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
10005 * tree-parloops.c (loop_parallel_p): Move out all conditions
10006 except dependency check.
10007 (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
10008 (gen_parallel_loop): Call canonicalize_loop_ivs without
10009 reduction_list argument.
10010 (build_new_reduction): New.
10011 (gather_scalar_reductions): New.
10012 (try_get_loop_niter): New.
10013 (try_create_reduction_list): New.
10014 (parallleize_loops): Change the parallel conditions check.
10015 * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
10016 * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
10017
10018 2009-07-30 Dave Korn <dave.korn.cygwin@gmail.com>
10019
10020 * opt-functions.awk (opt_args): Allow argument to be enclosed in
10021 curly braces.
10022 * doc/options.texi (Option properties): Mention new quoting syntax.
10023
10024 2009-07-29 Douglas B Rupp <rupp@gnat.com>
10025
10026 * config/alpha/alpha.c (alpha_start_function):
10027 Handle VMS_DEBUG_MAIN_POINTER
10028 * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
10029 * doc/invoke.texi: Document -mdebug-main switch.
10030
10031 2009-07-29 Richard Henderson <rth@redhat.com>
10032
10033 * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
10034 (cgraph_create_edge_including_clones): Likewise.
10035 * tree-inline.c (copy_bb): Operate on the correct edges
10036 when updating the callgraph.
10037
10038 2009-07-29 Douglas B Rupp <rupp@gnat.com>
10039
10040 * config/alpha/vms-cc.c: Deleted.
10041 * config/alpha/vms-ld.c: Deleted.
10042 * config/alpha/t-vms64: Moved to config/vms
10043 * config/alpha/vms-crt0-64.c: Moved to config/vms
10044 * config/alpha/vms-crt0.c: Moved to config/vms
10045 * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
10046 * config/alpha/vms-psxcrt0.c: Moved to config/vms
10047 * config/alpha/xm-vms.h: Moved to config/vms
10048 * config/alpha/x-vms: Moved to config/vms
10049 * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
10050 config/vms/t-vms.
10051 * config/vms/t-vms: Moved here from config/alpha. Alpha specific
10052 parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
10053 (version): Set.
10054 * config/vms/t-vms64: Moved here from config/alpha
10055 * config/vms/vms-crt0-64.c: Moved here from config/alpha.
10056 (argc,argv,envp): Enforce 32bit malloc'ing.
10057 * config/vms/vms-psxcrt0-64.c: Likewise.
10058 * config/vms/vms-crt0.c: Moved here from config/alpha.
10059 * config/vms/vms-psxcrt0.c: Likewise.
10060 * config/vms/vms-crtl-64.h: New file.
10061 * config/vms/vms-crtl.h: New file.
10062 * config/vms/vms.opt: New file.
10063 * config/vms/xm-vms64.h: New file.
10064 * config/vms/xm-vms.h: Moved here from config/alpha.
10065 (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
10066 Set.
10067 * config/vms/x-vms: Moved here from config/alpha.
10068 (version, VMS_EXTRA_PARTS): Moved to t-vms.
10069 (vms-ld.o, vms-cc.o): Removed.
10070 (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
10071
10072 2009-07-29 Douglas B Rupp <rupp@gnat.com>
10073
10074 * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
10075 correct stack (obvious VMS fix).
10076
10077 2009-07-29 Douglas B Rupp <rupp@gnat.com>
10078
10079 * dwarf2out.c (output_file_names): Output VMS style file name, size,
10080 date, version info if VMS_DEBUGGING_INFO defined.
10081 * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
10082 size, date calculating code moved here.
10083
10084 2009-07-29 Paul Brook <paul@codesourcery.com>
10085
10086 * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
10087 do_push/do_pop.
10088
10089 2009-07-29 Uros Bizjak <ubizjak@gmail.com>
10090
10091 PR target/40577
10092 * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
10093 to DImode when generating insq_le insn.
10094
10095 2009-07-28 Douglas B Rupp <rupp@gnat.com>
10096
10097 * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
10098 New macro set for VMS_DEBUGGGING_INFO.
10099 (AT_string_form): Use it.
10100
10101 2009-07-28 DJ Delorie <dj@redhat.com>
10102
10103 * config/mep/mep.c (vtext_section): New.
10104 (vftext_section): New.
10105 (ftext_section): New.
10106 (mep_select_section): Add support for functions.
10107 (mep_unique_section): Likewise.
10108 (mep_asm_init_sections): Likewise.
10109 (mep_encode_section_info): Remove it from here.
10110
10111 * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
10112
10113 2009-07-28 Paolo Bonzini <bonzinI@gnu.org>
10114
10115 * tree.h (TREE_DEPRECATED): Document it is used for types too.
10116 (TYPE_VECTOR_OPAQUE): Use default_def_flag
10117
10118 2009-07-28 Douglas B Rupp <rupp@gnat.com>
10119
10120 * dwarf2out.c (output_file_names): Test new macro
10121 DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
10122 (add_comp_dir_attribute): Likewise.
10123
10124 2009-07-28 Kai Tietz <kai.tietz@onevision.com>
10125
10126 * config/i386/mingw-w64.h (LINK_SPEC): Add
10127 separating space between commands.
10128
10129 2009-07-28 Jan Hubicka <jh@suse.cz>
10130
10131 PR tree-optimization/40759
10132 * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
10133 for renaming.
10134
10135 2009-07-27 DJ Delorie <dj@redhat.com>
10136
10137 * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
10138 types are dword-aligned.
10139 (mep_expand_va_start): Likewise.
10140
10141 2009-07-27 Olivier Hainque <hainque@adacore.com>
10142 Douglas B Rupp <rupp@gnat.com>
10143
10144 * convert.c (convert_to_pointer): Don't assume the target
10145 pointer type is POINTER_SIZE long. Fetch its precision instead.
10146
10147 2009-07-27 Douglas B Rupp <rupp@gnat.com>
10148
10149 * system.h (fopen): Undefine if macro.
10150
10151 2009-07-27 Jakub Jelinek <jakub@redhat.com>
10152
10153 * dwarf2out.c (output_cfi_p): Removed.
10154 (output_cfis): New function.
10155 (output_fde): New function, split from output_call_frame_info.
10156 (output_call_frame_info): Use it.
10157 (dwarf2out_switch_text_section): Use output_cfis.
10158
10159 2009-07-24 Kai Tietz <kai.tietz@onevision.com>
10160
10161 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
10162 TARGET_BI_ARCH is specified without enabling SJLJ.
10163 * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
10164 if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
10165
10166 2009-07-26 Mikael Pettersson <mikpe@it.uu.se>
10167
10168 * arm.md (negdi2): Use DImode if forcing a value into a register.
10169
10170 2009-07-26 Ira Rosen <irar@il.ibm.com>
10171
10172 PR tree-optimization/40801
10173 * tree-vect-stmts.c (vectorizable_call): Get previous copy
10174 of vector operand from the previous copy of vector statement.
10175 Pass the correct definition type value to
10176 vect_get_vec_def_for_stmt_copy().
10177
10178 2009-07-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10179
10180 * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
10181 const char ** conversion.
10182
10183 2009-07-25 David Daney <ddaney@caviumnetworks.com>
10184
10185 * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
10186 fancy_abort() if !ENABLE_ASSERT_CHECKING.
10187 (gcc_unreachable): Invoke __builtin_unreachable() if
10188 !ENABLE_ASSERT_CHECKING.
10189
10190 2009-07-25 David Daney <ddaney@caviumnetworks.com>
10191
10192 PR rtl-optimization/40445
10193 * emit-rtl.c (next_nonnote_insn_bb): New function.
10194 * rtl.h (next_nonnote_insn_bb): Declare new function.
10195 * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
10196 with no successors that is the successor of the ENTRY_BLOCK.
10197 Continue from the top after removing an empty fallthrough block.
10198 * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
10199 of next_nonnote_insn.
10200
10201 2009-07-25 David Daney <ddaney@caviumnetworks.com>
10202
10203 * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
10204
10205 2009-07-25 Martin Jambor <mjambor@suse.cz>
10206
10207 * c-common.c (c_common_attribute_table): New element for noclone.
10208 (handle_noclone_attribute): New function. Forward-declare.
10209 * tree-inline.c (tree_versionable_function_p): Check for noclone
10210 attribute.
10211 * doc/extend.texi (Labels as Values): Document need for noclone.
10212 (Function Attributes): Document noclone attribute.
10213
10214 2009-07-25 Jakub Jelinek <jakub@redhat.com>
10215
10216 PR rtl-optimization/34999
10217 * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
10218 and dw_fde_switched_cold_to_hot fields.
10219 (output_cfi_p): New function.
10220 (output_call_frame_info): If fde->dw_fde_switched_sections,
10221 output 2 FDEs instead of one with corrupted header.
10222 (dwarf2out_do_cfi_startproc): New function.
10223 (dwarf2out_begin_prologue): Use it. Initialize fde->dw_fde_switch_cfi
10224 and fde->dw_fde_switched_cold_to_hot.
10225 (dwarf2out_switch_text_section): Compute
10226 fde->dw_fde_switched_cold_to_hot. Switch to new text section here.
10227 If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
10228 dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
10229 Otherwise, compute fde->dw_fde_switch_cfi.
10230
10231 2009-07-24 Cary Coutant <ccoutant@google.com>
10232
10233 * tree-cfg.c (assign_discriminator): Add explicit parentheses.
10234
10235 2009-07-24 Cary Coutant <ccoutant@google.com>
10236
10237 * cfghooks.c (split_block): Copy discriminator to new block.
10238 * tree-cfg.c (assign_discriminator): Check location of last
10239 instruction in block as well as first.
10240
10241 2009-07-24 Uros Bizjak <ubizjak@gmail.com>
10242
10243 * config/i386/linux.c: Use fputs or putc instead of fprintf
10244 where appropriate.
10245 * config/i386/gas.h: Ditto.
10246 * config/i386/x86-64.h: Ditto.
10247 * config/i386/att.h: Ditto.
10248
10249 2009-07-24 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
10250
10251 * expmed.c (emit_store_flag): Use a recursive call to optimize the
10252 xor case.
10253
10254 2009-07-24 Martin Jambor <mjambor@suse.cz>
10255
10256 * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
10257 (ipa_push_func_to_list_1): Declare.
10258 (ipa_push_func_to_list): New function.
10259
10260 * ipa-prop.c (ipa_push_func_to_list_1): New function.
10261 (ipa_init_func_list): Call ipa_push_func_to_list_1.
10262 (ipa_push_func_to_list): Removed.
10263 (ipa_pop_func_from_list): Clear node_enqueued flag.
10264
10265 2009-07-24 Andreas Krebbel <krebbel1@de.ibm.com>
10266
10267 * config/s390/s390.c (override_options): Default
10268 max-unrolled-insns to 100 for z10 tuning.
10269
10270 2009-07-24 Tobias Grosser <grosser@fim.uni-passau.de>
10271
10272 * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
10273 tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
10274 tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
10275 tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
10276 tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
10277 tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
10278 lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
10279
10280 2009-07-24 Kai Tietz <kai.tietz@onevision.com>
10281
10282 * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
10283 use default set in mingw32.h header.
10284 * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
10285 64-bit /mingw/include path.
10286 (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
10287 path.
10288
10289 2009-07-23 Neil Vachharajani <nvachhar@google.com>
10290
10291 PR rtl-optimization/40209
10292 * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
10293
10294 2009-07-23 Uros Bizjak <ubizjak@gmail.com>
10295
10296 * config/i386/i386.c: Use ASM_LONG instead of .long. Concatenate
10297 ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
10298 with the rest of string where appropriate. Use fputs or putc
10299 instead of fprintf where appropriate.
10300
10301 2009-07-22 Michael Meissner <meissner@linux.vnet.ibm.com>
10302 Pat Haugen <pthaugen@us.ibm.com>
10303 Revital Eres <ERES@il.ibm.com>
10304
10305 * config/rs6000/vector.md: New file. Move most of the vector
10306 expander support here from altivec.md to allow for the VSX vector
10307 unit in the future. Add support for secondary_reload patterns.
10308 Rewrite the patterns for vector comparison, and vector comparison
10309 predicate instructions so that the RTL expresses the desired
10310 behavior, instead of using unspec.
10311
10312 * config/rs6000/constraints.md ("f" constraint): Use
10313 rs6000_constraints to hold the precalculated register class.
10314 ("d" constraint): Ditto.
10315 ("wd" constraint): New constraint for VSX.
10316 ("wf" constraint): Ditto.
10317 ("ws" constraint): Ditto.
10318 ("wa" constraint): Ditto.
10319 ("wZ" constraint): Ditto.
10320 ("j" constraint): Ditto.
10321
10322 * config/rs6000/predicates.md (vsx_register_operand): New
10323 predicate for VSX.
10324 (vfloat_operand): New predicate for vector.md.
10325 (vint_operand): Ditto.
10326 (vlogical_operand): Ditto.
10327 (easy_fp_constant): If VSX, 0.0 is an easy constant.
10328 (easy_vector_constant): Add VSX support.
10329 (altivec_indexed_or_indirect_operand): New predicate for
10330 recognizing Altivec style memory references with AND -16.
10331
10332 * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
10333 for vector secondary reload support.
10334 (rs6000_vector_reg_class): Delete, replacing it with
10335 rs6000_constraints.
10336 (rs6000_vsx_reg_class): Ditto.
10337 (rs6000_constraints): New array to hold the register classes of
10338 each of the register constraints that can vary at runtime.
10339 (builtin_mode_to_type): New static array for builtin function type
10340 creation.
10341 (builtin_hash_table): New static hash table for builtin function
10342 type creation.
10343 (TARGET_SECONDARY_RELOAD): Define target hook.
10344 (TARGET_IRA_COVER_CLASSES): Ditto.
10345 (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
10346 registers are 128 bits if VSX memory reference instructions are used.
10347 (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
10348 unit is being used.
10349 (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
10350 (rs6000_debug_reg_global): Move -mdebug=reg statements here.
10351 Print several of the scheduling related parameters.
10352 (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
10353 rs6000_constraints instead of rs6000_vector_reg_class. Move
10354 -mdebug=reg code to rs6000_debug_reg_global. Add support for
10355 -mvsx-align-128 debug switch. Drop testing float_p if VSX or
10356 Altivec. Add VSX support. Setup for secondary reload support on
10357 Altivec/VSX registers.
10358 (rs6000_override_options): Make power7 set the scheduling groups
10359 like the power5. Add support for new debug switches to override
10360 the scheduling defaults. Temporarily disable -mcpu=power7 from
10361 setting -mvsx. Add support for debug switches -malways-hint,
10362 -msched-groups, and -malign-branch-targets.
10363 (rs6000_buitlin_conversion): Add support for returning unsigned
10364 vector conversion functions to fix regressions due to stricter
10365 type checking.
10366 (rs6000_builtin_mul_widen_even): Ditto.
10367 (rs6000_builtin_mul_widen_odd): Ditto.
10368 (rs6000_builtin_vec_perm): Ditto.
10369 (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
10370 (rs6000_expand_vector_init): Initial VSX support for using xxlxor
10371 to zero a register.
10372 (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
10373 generated upstream.
10374 (bdesc_3arg): Add builtins for unsigned types. Add builtins for
10375 VSX types for bit operations. Changes to accomidate vector.md.
10376 (bdesc_2arg): Ditto.
10377 (bdesc_1arg): Ditto.
10378 (struct builtin_description_predicates): Rewrite predicate
10379 handling so that RTL describes the operation, instead of passing
10380 the instruction to be used as a string argument.
10381 (bdesc_altivec_preds): Ditto.
10382 (altivec_expand_predicate_builtin): Ditto.
10383 (altivec_expand_builtin): Ditto.
10384 (rs6000_expand_ternop_builtin): Use a switch instead of an if
10385 statement for vsldoi support.
10386 (altivec_expand_ld_builtin): Change to use new names from vector.md.
10387 (altivec_expand_st_builtin): Ditto.
10388 (paired_expand_builtin): Whitespace changes.
10389 (rs6000_init_builtins): Add V2DF/V2DI types. Initialize the
10390 builtin_mode_to_type table for secondary reload. Call
10391 builtin_function_type to build random builtin functions.
10392 (altivec_init_builtins): Change to use builtin_function_type to
10393 create builtin function types dynamically as we need them.
10394 (builtin_hash_function): New support for hashing the tree types
10395 for builtin function as we need it, rather than trying to build
10396 all of the trees that we need. Add initial preliminary VSX support.
10397 (builtin_function_type): Ditto.
10398 (builtin_function_eq): Ditto.
10399 (builtin_hash_struct): Ditto.
10400 (rs6000_init_builtins): Ditto.
10401 (rs6000_common_init_builtins): Ditto.
10402 (altivec_init_builtins): Ditto.
10403 (rs6000_common_init_builtins): Ditto.
10404 (enum reload_reg_type): New enum for simplifing reg classes.
10405 (rs6000_reload_register_type): Simplify register classes into GPR,
10406 Vector, and other registers. Altivec and VSX addresses in reload.
10407 (rs6000_secondary_reload_inner): Ditto.
10408 (rs6000_ira_cover_classes): New target hook, that returns the
10409 appropriate cover classes, based on -mvsx being used or not.
10410 (rs6000_secondary_reload_class): Add VSX support.
10411 (get_vec_cmp_insn): Delete, rewrite vector conditionals.
10412 (get_vsel_insn): Ditto.
10413 (rs6000_emit_vector_compare): Rewrite vector conditional support
10414 so that where we can, we use RTL operators, instead of blindly use
10415 UNSPEC.
10416 (rs6000_emit_vector_select): Ditto.
10417 (rs6000_emit_vector_cond_expr): Ditto.
10418 (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
10419 (create_TOC_reference): Add -mdebug=addr support.
10420 (emit_frame_save): VSX loads/stores need register indexed addressing.
10421
10422 * config/rs6000/rs6000.md: Include vector.md.
10423
10424 * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
10425
10426 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10427 support for V2DI, V2DF in logical, permute, select operations.
10428
10429 * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
10430 switch for vsx/power7.
10431 (-mvsx-scalar-memory): Ditto.
10432 (-mvsx-align-128): Ditto.
10433 (-mallow-movmisalign): Ditto.
10434 (-mallow-df-permute): Ditto.
10435 (-msched-groups): Ditto.
10436 (-malways-hint): Ditto.
10437 (-malign-branch-targets): Ditto.
10438
10439 * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
10440 hook instead.
10441 (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
10442 (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
10443 (rs6000_vector_reg_class): Delete.
10444 (rs6000_vsx_reg_class): Ditto.
10445 (enum rs6000_reg_class_enum): New enum for the constraints that
10446 vary based on target switches.
10447 (rs6000_constraints): New array to hold the register class for all
10448 of the register constraints that vary based on the switches used.
10449 (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
10450 (enum rs6000_builtins): Add unsigned varients for the builtin
10451 declarations returned by target hooks for expanding multiplies,
10452 select, and permute operations. Add VSX builtins.
10453 (enum rs6000_builtin_type_index): Add entries for VSX.
10454 (V2DI_type_node): Ditto.
10455 (V2DF_type_node): Ditto.
10456 (unsigned_V2DI_type_node): Ditto.
10457 (bool_long_type_node): Ditto.
10458 (intDI_type_internal_node): Ditto.
10459 (uintDI_type_internal_node): Ditto.
10460 (double_type_internal_node): Ditto.
10461
10462 * config/rs6000/altivec.md (whole file): Move all expanders to
10463 vector.md from altivec.md. Rename insn matching functions to be
10464 altivec_foo.
10465 (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
10466 (altivec_vcmp*): Ditto.
10467 (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
10468 (VM): New iterator for moves that includes the VSX types.
10469 (altivec_vperm_<mode>): Add VSX types. Add unsigned types.
10470 (altivec_vperm_<mode>_uns): New, for unsigned types.
10471 (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
10472 (altivec_eq<mode>): Ditto.
10473 (altivec_gt<mode>): Ditto.
10474 (altivec_gtu<mode>): Ditto.
10475 (altivec_eqv4sf): Ditto.
10476 (altivec_gev4sf): Ditto.
10477 (altivec_gtv4sf): Ditto.
10478 (altivec_vcmpbfp_p): Ditto.
10479
10480 2009-07-23 Richard Earnshaw <rearnsha@arm.com>
10481
10482 * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
10483 unsigned HWI.
10484
10485 2009-07-23 Uros Bizjak <ubizjak@gmail.com>
10486
10487 PR target/40832
10488 * config/i386/i386.c (output_387_ffreep): Rewrite to use
10489 ASM_SHORT instead of .word.
10490 * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
10491 instead of .word in asm template.
10492
10493 2009-07-22 Vladimir Makarov <vmakarov@redhat.com>
10494
10495 PR target/37488
10496 * ira-lives.c (bb_has_abnormal_call_pred): New function.
10497 (process_bb_node_lives): Use it.
10498
10499 * ira.c (setup_cover_and_important_classes): Don't setup
10500 ira_important_class_nums. Add cover classes to the end of
10501 important classes.
10502 (cover_class_order, comp_reg_classes_func, reorder_important_classes):
10503 New.
10504 (find_reg_class_closure): Use reorder_important_classes.
10505
10506 * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
10507
10508 * config/i386/i386.c (i386_ira_cover_classes): New function.
10509 (TARGET_IRA_COVER_CLASSES): Redefine.
10510
10511 * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
10512 importance of order of cover classes in the array.
10513
10514 2009-07-22 Diego Novillo <dnovillo@google.com>
10515
10516 * tree-pass.h (TDF_EH): Define.
10517 * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
10518 contains TDF_EH, print the EH region number holding GS.
10519 * tree-dump.c (dump_options): Add "eh".
10520 * doc/invoke.texi: Document it.
10521
10522 2009-07-22 Doug Kwan <dougkwan@google.com>
10523
10524 * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
10525
10526 2009-07-22 Michael Matz <matz@suse.de>
10527
10528 PR tree-optimization/35229
10529 PR tree-optimization/39300
10530
10531 * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
10532 (inhibit_phi_insertion): New function.
10533 (insert_into_preds_of_block): Call it for REFERENCEs.
10534 (init_pre): Initialize and finalize scalar evolutions.
10535 * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
10536
10537 2009-07-22 Uros Bizjak <ubizjak@gmail.com>
10538
10539 * config/i386/predicates.md (zero_extended_scalar_load_operand):
10540 Use CONST_VECTOR_NUNITS to determine number of elements.
10541
10542 2009-07-22 Andreas Krebbel <krebbel1@de.ibm.com>
10543
10544 * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
10545 (U, W): Constraints are now deprecated and will be removed if we
10546 run out of letters.
10547 * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
10548 the file.
10549 ("prefetch"): Add the stcmh instruction for prefetching.
10550 * config/s390/s390.c (s390_symref_operand_p): Function moved. No
10551 changes.
10552 (s390_short_displacement): Return always true if compiling for
10553 machines not providing the long displacement facility.
10554 (s390_mem_constraint): Support the new constraint letter Z.
10555 (s390_check_qrst_address): New function.
10556
10557 2009-07-21 DJ Delorie <dj@redhat.com>
10558
10559 * config/mep/mep.c (mep_legitimize_arg): Leave control registers
10560 alone too.
10561
10562 2009-07-21 Jason Merrill <jason@redhat.com>
10563
10564 * c-common.c (max_tinst_depth): Increase default to 1024.
10565
10566 2009-07-21 Uros Bizjak <ubizjak@gmail.com>
10567
10568 * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
10569 (vec_unpacku_float_lo_v4si): Ditto.
10570
10571 2009-07-21 Uros Bizjak <ubizjak@gmail.com>
10572
10573 PR target/40811
10574 * config/i386/sse.md (sse2_cvtudq2ps): New expander.
10575 (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
10576 (builtin_description): Add __builtin_ia32_cvtudq2ps.
10577 (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
10578
10579 2009-07-21 Jakub Jelinek <jakub@redhat.com>
10580
10581 PR tree-optimization/40813
10582 * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
10583 it.
10584
10585 2009-07-21 Kaz Kojima <kkojima@gcc.gnu.org>
10586
10587 * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
10588 with a NOP_EXPR if needed.
10589
10590 2009-07-21 Paul Brook <paul@codesourcery.com>
10591
10592 * tree-vectorizer.c (increase_alignment): Handle nested arrays.
10593 Terminate debug dump with newline.
10594
10595 2009-07-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
10596
10597 * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
10598 Cast "1" to unsigned HOST_WIDE_INT.
10599 (compute_zdepdi_operands): Limit maximum length to 64 bits. Limit
10600 deposit length to the maximum length - lsb. Extend length if
10601 HOST_BITS_PER_WIDE_INT is 32.
10602
10603 2009-07-20 Olatunji Ruwase <tjruwase@google.com>
10604
10605 * cgraph.h (constant_pool_htab): New function.
10606 (constant_descriptor_tree): Move from varasm.c.
10607 * varasm.c (constant_pool_htab): New function.
10608 (constant_descriptor_tree): Move to cgraph.h.
10609
10610 2009-07-20 Olatunji Ruwase <tjruwase@google.com>
10611
10612 * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
10613
10614 2009-07-20 Shujing Zhao <pearly.zhao@oracle.com>
10615
10616 * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
10617 $(VARRAY_H).
10618
10619 2009-07-20 Xinliang David Li <davidxl@google.com>
10620
10621 * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
10622
10623 2009-07-20 Adam Nemet <anemet@caviumnetworks.com>
10624
10625 * config/mips/mips.md (move_type): Add arith.
10626 (type): Handle arith.
10627 (zero_extendsidi2): Rename this into ...
10628 (*zero_extendsidi2): ... this. Don't match if ISA_HAS_EXT_INS.
10629 (zero_extendsidi2): New expander.
10630 (*zero_extendsidi2_dext): New pattern.
10631
10632 2009-07-20 Nick Clifton <nickc@redhat.com>
10633
10634 * config.gcc (mips64-*-*): Add definition of tm_defines in order
10635 to set MIPS_ABI_DEFAULT.
10636 * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
10637
10638 2009-07-20 Jakub Jelinek <jakub@redhat.com>
10639
10640 * tree-object-size.c (addr_object_size): Handle unions with
10641 array in it as last field of structs in __bos (, 1) as __bos (, 0).
10642
10643 PR tree-optimization/40792
10644 * tree.c (build_function_type_skip_args): Remove bogus assert.
10645
10646 2009-07-20 Jan Hubicka <jh@suse.cz>
10647 Martin Jambor <mjambor@suse.cz>
10648
10649 * cgraph.h (combined_args_to_skip): New field.
10650 * cgraph.c (cgraph_create_virtual_clone): Properly handle
10651 combined_args_to_skip and args_to_skip.
10652 * tree-inline.c (update_clone_info): New function.
10653 (tree_function_versioning): Call update_clone_info.
10654 * cgraphunit.c (cgraph_materialize_clone): Dump materialized
10655 functions.
10656 (cgraph_materialize_all_clones): More extensive dumping, working
10657 with combined_args_to_skip rather than args_to_skip.
10658
10659 2009-07-20 Ira Rosen <irar@il.ibm.com>
10660
10661 * tree-vectorizer.h (vectorizable_condition): Add parameters.
10662 * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
10663 (get_initial_def_for_reduction): Likewise.
10664 (vectorizable_reduction): Skip the check of first operand in case
10665 of COND_EXPR. Add check that it is outer loop vectorization if
10666 nested cycle was detected. Call vectorizable_condition() for
10667 COND_EXPR. If reduction epilogue cannot be created do not fail for
10668 nested cycles (if it is not double reduction). Assert that there
10669 is only one type in the loop in case of COND_EXPR. Call
10670 vectorizable_condition() to vectorize COND_EXPR.
10671 * tree-vect-stmts.c (vectorizable_condition): Update comment.
10672 Add parameters. Allow nested cycles if called from
10673 vectorizable_reduction(). Use reduction vector variable if provided.
10674 (vect_analyze_stmt): Call vectorizable_reduction() before
10675 vectorizable_condition().
10676 (vect_transform_stmt): Update call to vectorizable_condition().
10677
10678 2009-07-20 Christian Bruel <christian.bruel@st.com>
10679
10680 * config/sh/sh.opt (-mfmovd): Resurrect and document.
10681 * doc/invoke.texi (-mfmovd): Likewise.
10682 * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
10683
10684 2009-07-20 Jan Hubicka <jh@suse.cz>
10685
10686 * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
10687 when handling SSA name.
10688
10689 2009-07-19 Jan Hubicka <jh@suse.cz>
10690
10691 PR tree-optimization/40676
10692 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
10693 virtual PHIs in empty BBs.
10694
10695 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
10696
10697 * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
10698 re-expanded the compound use gen_lowpart instead to convert to the
10699 desired mode.
10700
10701 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
10702
10703 * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
10704 OUTER_CONST arguments.
10705 <LSHIFTRT>: Use them to allow widening if the bits shifted in from
10706 the new wider mode will be masked off.
10707 (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
10708
10709 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
10710
10711 * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
10712 high-order bits are zero.
10713
10714 2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
10715
10716 * combine.c (simplify_shift_const_1): Split code to determine
10717 shift_mode into ...
10718 (try_widen_shift_mode): ... here. Allow widening for ASHIFTRT if the
10719 new bits shifted in are identical to the old sign bit.
10720
10721 2009-07-18 Richard Guenther <rguenther@suse.de>
10722
10723 PR c/40787
10724 * gimplify.c (gimplify_call_expr): Reject code using results from
10725 functions returning void.
10726
10727 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
10728
10729 * doc/md.texi: Document the new PowerPC "es" constraint.
10730 Document that "m" can include automodified addresses on this target,
10731 and explain how %U must be used. Extend the "Q" and "Z" documentation
10732 to suggest "es" as well as "m".
10733 * config/rs6000/constraints.md (es): New memory constraint.
10734 (Q, Z): Update strings to match new documentation.
10735
10736 2009-07-18 Richard Sandiford <r.sandiford@uk.ibm.com>
10737
10738 * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
10739 offset from virtual_stack_vars_rtx and arg_pointer_rtx.
10740 * config/rs6000/predicates.md (volatile_mem_operand): Use
10741 offsettable_nonstrict_memref_p.
10742 * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
10743 (*floatunssidf2_internal): Likewise.
10744 (*fix_truncdfsi2_internal): Likewise.
10745 (*fix_trunctfsi2_internal): Likewise.
10746
10747 2009-07-17 Anatoly Sokolov <aesok@post.ru>
10748
10749 * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
10750 atmega32u2 devices.
10751 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10752
10753 2009-07-17 Richard Guenther <rguenther@suse.de>
10754
10755 PR c/40401
10756 * tree-pass.h (pass_diagnose_omp_blocks): Declare.
10757 (pass_warn_unused_result): Likewise.
10758 (TODO_set_props): Remove.
10759 * omp-low.c (diagnose_omp_structured_block_errors): Change to
10760 run as a pass.
10761 (pass_diagnose_omp_blocks): Define.
10762 * c-decl.c (pop_file_scope): Do not finalize the CU here.
10763 (c_gimple_diagnostics_recursively): Remove.
10764 (finish_function): Do not call it.
10765 (c_write_global_declarations): Continue after errors.
10766 Finalize the CU here.
10767 * c-gimplify.c (c_genericize): Do not gimplify here.
10768 * c-common.c (c_warn_unused_result): Move ...
10769 * tree-cfg.c (do_warn_unused_result): ... here.
10770 (run_warn_unused_result): New function.
10771 (gate_warn_unused_result): New function.
10772 (pass_warn_unused_result): New pass.
10773 * c-common.h (c_warn_unused_result): Remove.
10774 * flags.h (flag_warn_unused_result): Declare.
10775 * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
10776 * opts.c (flag_warn_unused_result): Initialize to false.
10777 * toplev.c (compile_file): Add comment.
10778 * omp-low.c (create_omp_child_function): Do not register
10779 the function with the frontend.
10780 (diagnose_omp_structured_block_errors): Prepare to be
10781 called as optimization pass.
10782 (gate_diagnose_omp_blocks): New function.
10783 (pass_diagnose_omp_blocks): New pass.
10784 * cgraph.h (cgraph_optimize): Remove.
10785 (cgraph_analyze_function): Likewise.
10786 * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
10787 * cgraphunit.c (cgraph_lower_function): Lower nested functions
10788 before their parents here.
10789 (cgraph_finalize_function): Not here.
10790 (cgraph_analyze_function): Gimplify functions here.
10791 (cgraph_finalize_compilation_unit): Continue after errors.
10792 Optimize the callgraph from here.
10793 (cgraph_optimize): Make static.
10794 * langhooks.c (write_global_declarations): Finalize the CU.
10795 * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
10796 (gimplify_function_tree): Assert we gimplify only once.
10797 Set PROP_gimple_any property.
10798 * tree-nested.c (gimplify_all_functions): New function.
10799 (lower_nested_functions): Gimplify all nested functions.
10800 * gimple.h (diagnose_omp_structured_block_errors): Remove.
10801 * passes.c (init_optimization_passes): Add pass_warn_unused_result
10802 and pass_diagnose_omp_blocks after gimplification. Do not
10803 set TODO_set_props on all_lowering_passes.
10804 (execute_one_pass): Do not handle TODO_set_props.
10805 * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
10806 (gimplify.o): Add tree-pass.h dependency.
10807 * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
10808 (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
10809 (unsave_r): Likewise.
10810 * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
10811 temporary variable.
10812
10813 2009-07-17 Sandra Loosemore <sandra@codesourcery.com>
10814
10815 * doc/service.texi (Service): Restore previously removed link,
10816 which isn't broken after all.
10817
10818 2009-07-17 Richard Guenther <rguenther@suse.de>
10819
10820 PR tree-optimization/40321
10821 * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
10822 PHI nodes to the maximal set.
10823 (make_values_for_phi): Add PHI arguments to the maximal set.
10824 (execute_pre): Dump PHI_GEN and the maximal set.
10825
10826 2009-07-17 Jakub Jelinek <jakub@redhat.com>
10827
10828 PR c++/40780
10829 * gimplify.c (gimplify_conversion): Don't change non-conversions into
10830 VIEW_CONVERT_EXPR.
10831
10832 2009-07-16 Sandra Loosemore <sandra@codesourcery.com>
10833
10834 * doc/extend.texi (Nested Functions): Replace broken link with
10835 textual reference.
10836 * doc/service.texi (Service): Remove broken link.
10837
10838 2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
10839
10840 PR bootstrap/40781
10841 * builtins.c (expand_builtin_memcmp): Use loc instead of
10842 EXPR_LOCATION (exp).
10843 (expand_builtin_strncmp): Likewise.
10844
10845 2009-07-17 Aldy Hernandez <aldyh@redhat.com>
10846 Manuel López-Ibáñez <manu@gcc.gnu.org>
10847
10848 PR 40435
10849 * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
10850 builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
10851 tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
10852 c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
10853 calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
10854 tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
10855 tree-inline.c, c-common.c, c-common.h, gimple.c,
10856 tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
10857 convert.c: Add location argument to fold_{unary,binary,ternary},
10858 fold_build[123], build_call_expr, build_size_arg,
10859 build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
10860 fold_build1_initializer, fold_build2_initializer,
10861 fold_build3_initializer, fold_build_call_array,
10862 fold_build_call_array_initializer, fold_single_bit_test,
10863 omit_one_operand, omit_two_operands, invert_truthvalue,
10864 fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
10865 combine_comparisons, fold_builtin_*, fold_call_expr,
10866 build_range_check, maybe_fold_offset_to_address, round_up,
10867 round_down.
10868
10869 2009-07-16 Jason Merrill <jason@redhat.com>
10870
10871 PR libstdc++/37907
10872 * c-common.c (c_common_reswords): Add __is_standard_layout
10873 and __is_trivial.
10874 * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
10875 * doc/implement-cxx.texi: New.
10876 * doc/gcc.texi: Include it.
10877
10878 2009-07-16 DJ Delorie <dj@redhat.com>
10879
10880 * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
10881 compares that may be indirectly affected by previous instructions.
10882
10883 2009-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
10884
10885 * builtins.c (do_mpc_arg2): New.
10886 (fold_builtin_2): Fold builtin cpow.
10887 * real.h (HAVE_mpc_pow): New.
10888
10889 2009-07-16 Bingfeng Mei <bmei@broadcom.com>
10890
10891 * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
10892 comparison to skip unprofitable schedule
10893
10894 2009-07-16 Simon Baldwin <simonb@google.com>
10895
10896 * gcc.c (option_map): New flag -no-canonical-prefixes.
10897 * (display_help): Print help text for new flag.
10898 * (process_command): Move options translation and language specifics
10899 and handle new flag early. Use it to set a function pointer to a
10900 prefix builder. Replace make_relative_prefix calls with calls to
10901 the function pointed to. Ignore new flag in regular options handling.
10902 * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
10903
10904 2009-07-15 DJ Delorie <dj@redhat.com>
10905
10906 * config/mep/mep.md (sibcall_internal): Change register to avoid
10907 argument registers.
10908 (sibcall_value_internal): Likewise.
10909
10910 2009-07-15 Eric Botcazou <ebotcazou@adacore.com>
10911
10912 PR rtl-optimization/40710
10913 * resource.c (mark_target_live_regs): Reset DF problem to LR.
10914
10915 2009-07-15 Adam Nemet <anemet@caviumnetworks.com>
10916
10917 * config/mips/mips.md (*extenddi_truncate<mode>,
10918 *extendsi_truncate<mode>): Change type attribute to move_type
10919 with shift_shift. Split out code handling exts from here ...
10920 (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
10921 pattern.
10922 (*extendhi_truncateqi): Change type attribute to move_type with
10923 shift_shift. Split out code handling exts from here ...
10924 (*extendhi_truncateqi_exts): ... to this new pattern.
10925
10926 2009-07-15 Uros Bizjak <ubizjak@gmail.com>
10927
10928 * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
10929 instead of "and" with inverted sign bit mask value. Use
10930 "nonimmediate_operand" for operand 1 and operand 2 predicate.
10931 Allocate registers only for operand 4 and operand 5.
10932
10933 2009-07-15 Jakub Jelinek <jakub@redhat.com>
10934
10935 PR middle-end/40747
10936 * fold-const.c (fold_cond_expr_with_comparison): When folding
10937 < and <= to MIN, make sure the MIN uses the same type as the
10938 comparison's operands.
10939
10940 2009-07-15 Richard Earnshaw <rearnsha@arm.com>
10941
10942 * arm.md (ior_xor): New code iterator.
10943 (split for ior/xor with shift and zero-extend): New split pattern.
10944 * arm/predicates.md (subreg_lowpart_operator): New special predicate.
10945
10946 2009-07-15 Richard Guenther <rguenther@suse.de>
10947
10948 * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
10949 offset member.
10950
10951 2009-07-15 Richard Guenther <rguenther@suse.de>
10952
10953 PR middle-end/40753
10954 * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
10955
10956 2009-07-15 Maxim Kuvyrkov <maxim@codesourcery.com>
10957
10958 * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
10959 handle 2.6.30 kernel.
10960
10961 2009-07-15 DJ Delorie <dj@redhat.com>
10962
10963 * config/mep/mep.md (sibcall_internal): Change register to allow
10964 for 24-bit addresses.
10965 (sibcall_value_internal): Likewise.
10966
10967 2009-07-14 Ghassan Shobaki <ghassan.shobaki@amd.com>
10968
10969 * doc/invoke.texi: Added descriptions of the scheduling heuristics
10970 that are enabled/disabled by the flags introduced by a previous patch.
10971
10972 2009-07-14 DJ Delorie <dj@redhat.com>
10973
10974 * config/mep/mep.md (sibcall_internal): Include non-toggling
10975 non-jmp case.
10976 (sibcall_value_internal): Likewise.
10977
10978 2009-07-14 Taras Glek <tglek@mozilla.com>
10979 Rafael Espindola <espindola@google.com>
10980
10981 * doc/sourcebuild.texi: Document install-plugin target.
10982 * configure.ac: Added install-plugin target to language makefiles.
10983 * configure: Regenerate.
10984 * Makefile.in (install-plugin): Install more headers,
10985 depend on lang.install-plugin.
10986
10987 2009-07-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
10988
10989 * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
10990 translation.
10991
10992 2009-07-14 DJ Delorie <dj@redhat.com>
10993
10994 * config/mep/mep.c (mep_vliw_jmp_match): New function.
10995 * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
10996 * config/mep/mep.md (sibcall_internal): Change test from
10997 mep_vliw_mode_match to mep_vliw_jmp_match.
10998 (sibcall_value_internal): Likewise.
10999
11000 2009-07-14 Uros Bizjak <ubizjak@gmail.com>
11001
11002 * config/i386/sse.md (copysign<mode>3): New expander.
11003 * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
11004 * config/i386/i386.c (ix86_build_signbit_mask): Make public.
11005 Use ix86_build_const_vector.
11006 (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
11007 IX86_BUILTIN_CPYSGNPD.
11008 (builtin_description): Add __builtin_ia32_copysignps and
11009 __builtin_ia32_copysignpd.
11010 (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
11011 and BUILT_IN_COPYSIGNF.
11012
11013 2009-07-13 Jason Merrill <jason@redhat.com>
11014
11015 * builtins.c (can_trust_pointer_alignment): New fn.
11016 (get_pointer_alignment): Factor it out from here.
11017 * tree.h: Declare it.
11018
11019 2009-07-14 David Edelsohn <edelsohn@gnu.org>
11020
11021 * config/rs6000/predicates.md (offsettable_mem_operand): Test
11022 RTX_AUTOINC class.
11023
11024 2009-07-14 Dodji Seketeli <dodji@redhat.com>
11025
11026 PR debug/40705
11027 PR c++/403057
11028 * dwarf2.out.c (gen_type_die_with_usage): Added comment.
11029
11030 2009-07-14 Richard Guenther <rguenther@suse.de>
11031 Andrey Belevantsev <abel@ispras.ru>
11032
11033 PR middle-end/40745
11034 * cfgexpand.c (partition_stack_vars): Do not bother to update
11035 alias information when not optimizing.
11036
11037 2009-07-14 Richard Guenther <rguenther@suse.de>
11038 Andrey Belevantsev <abel@ispras.ru>
11039
11040 * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
11041 (pt_solution_set): Likewise.
11042 * tree-ssa-alias.c (refs_may_alias_p_1): Export.
11043 * tree-ssa-structalias.c (pt_solution_set): New function.
11044 * final.c (rest_of_clean_state): Free SSA data structures.
11045 * print-rtl.c (print_decl_name): Remove.
11046 (print_mem_expr): Implement in terms of print_generic_expr.
11047 * alias.c (ao_ref_from_mem): New function.
11048 (rtx_refs_may_alias_p): Likewise.
11049 (true_dependence): Query alias-export info.
11050 (canon_true_dependence): Likewise.
11051 (write_dependence_p): Likewise.
11052 * tree-dfa.c (get_ref_base_and_extent): For void types leave
11053 size unknown.
11054 * emit-rtl.c (component_ref_for_mem_expr): Remove.
11055 (mem_expr_equal_p): Use operand_equal_p.
11056 (set_mem_attributes_minus_bitpos): Do not use
11057 component_ref_for_mem_expr.
11058 * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
11059 (update_alias_info_with_stack_vars): Likewise.
11060 (partition_stack_vars): Call update_alias_info_with_stack_vars.
11061 * tree-ssa.c (delete_tree_ssa): Do not release SSA names
11062 explicitly nor clear stmt operands.
11063 Free the decl-to-pointer map.
11064 * tree-optimize.c (execute_free_datastructures): Do not free
11065 SSA data structures here.
11066 * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
11067 * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
11068 (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
11069 dependencies.
11070 (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
11071
11072 2009-07-13 DJ Delorie <dj@redhat.com>
11073
11074 * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
11075 unrolling at the right iteration count.
11076
11077 * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
11078 calculations.
11079
11080 2009-07-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
11081
11082 * haifa-sched.c (rank_for_schedule): Introduced flags to
11083 enable/disable individual scheduling heuristics.
11084 * common.opt: Introduced flags to enable/disable individual
11085 heuristics in the scheduler.
11086 * doc/invoke.texi: Introduced flags to enable/disable individual
11087 heuristics in the scheduler.
11088
11089 2009-07-13 Kai Tietz <kai.tietz@onevision.com>
11090
11091 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
11092 config/i386/mingw-tls.c.
11093 * config/i386/mingw-tls.c: Removed.
11094
11095 2009-07-13 Ira Rosen <irar@il.ibm.com>
11096
11097 * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
11098 checks access only relevant statements.
11099 (vectorizable_reduction): Likewise.
11100
11101 2009-07-12 Kai Tietz <kai.tietz@onevision.com>
11102
11103 * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
11104 just for 32-bit case.
11105
11106 2009-07-12 Jan Hubicka <jh@suse.cz>
11107
11108 PR tree-optimization/40585
11109 * except.c (expand_resx_expr): When there already is resume
11110 instruction, produce linked list.
11111 (build_post_landing_pads): Assert that resume is empty.
11112 (connect_post_landing_pads): Handle resume lists.
11113 (dump_eh_tree): Dump resume list.
11114
11115 2009-07-12 Ira Rosen <irar@il.ibm.com>
11116
11117 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
11118 with additional argument.
11119 * tree-vectorizer.h (enum vect_def_type): Add
11120 vect_double_reduction_def.
11121 (vect_is_simple_reduction): Add argument.
11122 * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
11123 indentation.
11124 (vect_analyze_scalar_cycles_1): Detect double reduction. Call
11125 vect_is_simple_reduction with additional argument.
11126 (vect_analyze_loop_operations): Handle exit phi nodes in case of
11127 double reduction.
11128 (reduction_code_for_scalar_code): Handle additional codes by
11129 returning ERROR_MARK for them. Fix comment and indentation.
11130 (vect_is_simple_reduction): Fix comment, add argument to specify
11131 double reduction. Detect double reduction.
11132 (get_initial_def_for_induction): Fix indentation.
11133 (get_initial_def_for_reduction): Fix comment and indentation.
11134 Handle double reduction. Create initial definitions that do not
11135 require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
11136 (vect_create_epilog_for_reduction): Fix comment, add argument to
11137 handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
11138 epilogue result extraction. Create double reduction phi node and
11139 replace relevant uses.
11140 (vectorizable_reduction): Call vect_is_simple_reduction with
11141 additional argument. Fix indentation. Update epilogue code treatment
11142 according to the changes in reduction_code_for_scalar_code. Check
11143 for double reduction. Call vect_create_epilog_for_reduction with
11144 additional argument.
11145 * tree-vect-stmts.c (process_use): Handle double reduction, update
11146 documentation.
11147 (vect_mark_stmts_to_be_vectorized): Handle double reduction.
11148 (vect_get_vec_def_for_operand): Likewise.
11149
11150 2009-07-12 Danny Smith <dansmister@gmail.com>
11151
11152 * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
11153 dllexport if !TREE_PUBLIC.
11154 (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
11155
11156 2009-07-11 Anatoly Sokolov <aesok@post.ru>
11157
11158 * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
11159 (avr_extra_arch_macro) Remove declatation.
11160 * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
11161 (avr_extra_arch_macro) Declare as static.
11162 * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
11163
11164 2009-07-11 Jan Hubicka <jh@suse.cz>
11165
11166 PR middle-end/48388
11167 * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
11168
11169 2009-07-11 Jakub Jelinek <jakub@redhat.com>
11170
11171 PR debug/40713
11172 * dwarf2out.c (dw_fde_struct): Add in_std_section and
11173 cold_in_std_section bits.
11174 (dwarf2out_begin_prologue): Initialize them.
11175 (dwarf2out_finish): Don't emit FDE range into .debug_ranges
11176 if already covered by text_section or cold_text_section range.
11177
11178 PR rtl-optimization/40667
11179 * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
11180 * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
11181 * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
11182 * config/i386/i386.c (ix86_minimum_alignment): New function.
11183 * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
11184 * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
11185 * emit-rtl.c (gen_reg_rtx): Likewise.
11186 * function.c (assign_parms): Likewise. If nominal_type needs
11187 bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
11188 rather than passed_type's alignment.
11189
11190 PR target/40668
11191 * function.c (assign_parm_setup_stack): Adjust
11192 MEM_OFFSET (data->stack_parm) if promoted_mode is different
11193 from nominal_mode on big endian.
11194
11195 2009-07-11 Paolo Bonzini <bonzini@gnu.org>
11196
11197 * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
11198
11199 2009-07-10 DJ Delorie <dj@redhat.com>
11200
11201 * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
11202
11203 2009-07-10 Mark Mitchell <mark@codesourcery.com>
11204
11205 * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
11206 attribute.
11207 (thumb2_cbnz): Likewise.
11208
11209 2009-07-10 David Daney <ddaney@caviumnetworks.com>
11210
11211 PR target/39079
11212 * config.gcc (supported_defaults): Add synci.
11213 (with_synci): Add validation.
11214 (all_defaults): Add synci.
11215 * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
11216 ISA_HAS_SYNCI.
11217 (synci): Same.
11218 * config/mips/mips.opt (msynci): New option.
11219 * config/mips/mips.c (mips_override_options): Warn on use of
11220 -msynci for targets that do now support it.
11221 * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
11222 msynci.
11223 * gcc/doc/invoke.texi (-msynci): Document the new option.
11224 * doc/install.texi (--with-synci): Document the new option.
11225
11226 2009-07-10 Richard Guenther <rguenther@suse.de>
11227
11228 PR tree-optimization/40496
11229 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
11230 the PHI result with a compatible type.
11231
11232 2009-07-10 Manuel López-Ibáñez <manu@gcc.gnu.org>
11233
11234 PR 25509
11235 PR 40614
11236 * c.opt (Wunused-result): New.
11237 * doc/invoke.texi: Document it.
11238 * c-common.c (c_warn_unused_result): Use it.
11239
11240 2009-07-09 DJ Delorie <dj@redhat.com>
11241
11242 * targhooks.c (default_target_can_inline_p): Rename from
11243 default_target_option_can_inline_p.
11244 * targhooks.h (default_target_can_inline_p): Likewise.
11245 * target-def.h (TARGET_CAN_INLINE_P): Rename from
11246 TARGET_OPTION_CAN_INLINE_P.
11247 * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
11248 * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
11249 (mep_target_can_inline_p): Rename from
11250 mep_target_option_can_inline_p.
11251
11252 PR target/40626
11253 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
11254 registers used to pass vectors.
11255
11256 * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
11257
11258 2009-07-09 Tom Tromey <tromey@redhat.com>
11259
11260 * unwind-dw2-fde-darwin.c: Include dwarf2.h.
11261 * config/mmix/mmix.c: Include dwarf2.h.
11262 * config/rs6000/darwin-fallback.c: Include dwarf2.h.
11263 * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
11264 * config/sh/sh.c: Include dwarf2.h.
11265 * config/i386/i386.c: Include dwarf2.h.
11266 * Makefile.in (DWARF2_H): Remove 'elf'.
11267 * except.c: Include dwarf2.h.
11268 * unwind-dw2.c: Include dwarf2.h.
11269 * dwarf2out.c: Include dwarf2.h.
11270 * unwind-dw2-fde-glibc.c: Include dwarf2.h.
11271 * unwind-dw2-fde.c: Include dwarf2.h.
11272 * dwarf2asm.c: Include dwarf2.h.
11273
11274 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
11275
11276 * haifa-sched.c (insn_finishes_cycle_p): New static function.
11277 (max_issue): Use it.
11278 * sched-int.h (struct sched_info: insn_finishes_block_p): New
11279 scheduler hook.
11280 * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
11281 (region_sched_info): Update.
11282 * sched-ebb.c (ebb_sched_info): Update.
11283 * modulo-sched.c (sms_sched_info): Update.
11284 * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
11285
11286 2009-07-09 Maxim Kuvyrkov <maxim@codesourcery.com>
11287
11288 * varasm.c (build_constant_desc): Don't share RTL in pool entries.
11289
11290 2009-07-09 Basile Starynkevitch <basile@starynkevitch.net>
11291
11292 * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
11293
11294 2009-07-09 Jakub Jelinek <jakub@redhat.com>
11295
11296 PR middle-end/40692
11297 * fold-const.c (fold_cond_expr_with_comparison): Don't replace
11298 arg1 with arg01 if arg1 is already INTEGER_CST.
11299
11300 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
11301
11302 * simplify-rtx.c (simplify_binary_operation_1) <AND>:
11303 Transform (and (truncate)) into (truncate (and)).
11304
11305 2009-07-08 Adam Nemet <anemet@caviumnetworks.com>
11306
11307 * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
11308 creating LHS paradoxical subregs. Fix surrounding returns to
11309 use NULL_RTX rather than 0.
11310
11311 2009-07-08 DJ Delorie <dj@redhat.com>
11312
11313 * config/mep/mep.c (mep_option_can_inline_p): New.
11314 (TARGET_OPTION_CAN_INLINE_P): Define.
11315
11316 2009-07-08 Mark Wielaard <mjw@redhat.com>
11317
11318 PR debug/40659
11319 * dwarf2out.c (add_data_member_location_attribute): When we have
11320 only a constant offset don't emit a new location description using
11321 DW_OP_plus_uconst, but just add the constant with add_AT_int, when
11322 dwarf_version > 2.
11323
11324 2009-07-08 Richard Henderson <rth@redhat.com>
11325
11326 PR target/38900
11327 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
11328 (enum reg_class): Add CLOBBERED_REGS.
11329 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
11330 * config/i386/i386.c (ix86_conditional_register_usage): Moved
11331 from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
11332 (ix86_function_ok_for_sibcall): Tidy. Disallow MS->SYSV sibcalls.
11333 (ix86_expand_call): Use sibcall_insn_operand when needed. Don't
11334 force 64-bit sibcalls into R11.
11335 * config/i386/constraints.md (U): New constraint.
11336 * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
11337 (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
11338 (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
11339
11340 2009-07-08 Shujing Zhao <pearly.zhao@oracle.com>
11341
11342 * basic-block.h (dump_regset, debug_regset): Remove duplicate
11343 prototypes.
11344 * c-objc-common.h (c_initialize_diagnostics): Ditto.
11345 * ebitmap.h (dump_ebitmap): Ditto.
11346 * optabs.h (optab_libfunc): Ditto.
11347 * tree.h (tree_expr_nonzero_warnv_p): Ditto.
11348 * tree-flow.h (vect_can_force_dr_alignment_p,
11349 get_vectype_for_scalar_type): Ditto.
11350 (vectorize_loops): Move prototype to ...
11351 * tree-vectorizer.h: ... here. Also, adjust comment.
11352 (vect_set_verbosity_level): Remove duplicate prototype.
11353 * tree-ssa-loop.c: Include tree-vectorizer.h.
11354 * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
11355
11356 2009-07-08 Nick Clifton <nickc@redhat.com>
11357
11358 * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
11359 forward slash.
11360
11361 2009-07-08 DJ Delorie <dj@redhat.com>
11362
11363 * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
11364 cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
11365 cpmovtocc_P0S_P1): Mark volatile. Note which registers are
11366 written to.
11367 * config/mep/intrinsics.md: Regenerated.
11368 * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
11369 registers when asm() or calls are detected.
11370
11371 2009-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
11372
11373 PR c++/31246
11374 * gimplify.c (gimplify_expr): Propagate no_warning flag when
11375 gimplifying.
11376 * gimple (gimple_build_call_from_tree): Likewise.
11377 * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
11378 no_warning flag before warning.
11379
11380 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
11381
11382 * tree.c (set_expr_locus): Remove.
11383 * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
11384 * c-typeck.c (c_finish_stmt_expr): Replace EXPR_LOCUS by
11385 EXPR_LOCATION.
11386 * gimplify.c (internal_get_tmp_var): Likewise.
11387 (gimplify_call_expr): Likewise.
11388 (gimplify_one_sizepos): Likewise.
11389
11390 2009-07-07 Eric Botcazou <ebotcazou@adacore.com>
11391
11392 PR debug/40666
11393 * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
11394 to variables for debugging purposes.
11395
11396 2009-06-23 Mark Loeser <mark@halcy0n.com>
11397
11398 PR build/40010
11399 * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
11400
11401 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
11402
11403 * pretty-print.c (pp_base_format): Remove %J.
11404 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11405 gcc_cxxdiag_char_table): Likewise.
11406 (init_dynamic_diag_info): Likewise.
11407
11408 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
11409
11410 * pretty-print.c (pp_base_format): Remove %H.
11411 * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
11412 gcc_cxxdiag_char_table): Likewise.
11413 (init_dynamic_diag_info): Likewise.
11414 * config/mep/mep.c (mep_select_section): Likewise.
11415
11416 2009-07-07 Duncan Sands <baldrick@free.fr>
11417
11418 * final.c (pass_clean_state): Give the pass a name.
11419 * passes.c (pass_rest_of_compilation): Likewise.
11420 * tree-optimize.c (pass_all_optimizations): Likewise.
11421
11422 2009-07-07 H.J. Lu <hongjiu.lu@intel.com>
11423
11424 * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
11425 an extra 'decl' for error_at.
11426
11427 2009-07-07 Jakub Jelinek <jakub@redhat.com>
11428
11429 PR middle-end/40669
11430 * tree-tailcall.c (adjust_return_value_with_ops,
11431 create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
11432 if it has complex or vector type.
11433
11434 2009-07-07 Olivier Hainque <hainque@adacore.com>
11435
11436 * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
11437 pthread symbols.
11438
11439 2009-07-07 Basile Starynkevitch <basile@starynkevitch.net>
11440
11441 * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
11442
11443 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
11444
11445 * cgraphunit.c: Replace %J by an explicit location. Update all calls.
11446 * c-decl.c: Likewise.
11447 * function.c: Likewise.
11448 * varasm.c: Likewise.
11449 * tree-ssa.c: Likewise.
11450 * c-common.c: Likewise.
11451 * tree-cfg.c: Likewise.
11452 * config/spu/spu.c: Likewise.
11453 * config/ia64/ia64.c: Likewise.
11454 * config/v850/v850.c: Likewise.
11455
11456 2009-07-06 DJ Delorie <dj@redhat.com>
11457
11458 * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
11459 * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
11460 unspecified accesses to control registers.
11461 * config/mep/intrinsics.md: Regenerate.
11462 * config/mep/intrinsics.h: Regenerate.
11463 * config/mep/mep-intrin.h: Regenerate.
11464
11465 2009-07-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
11466
11467 * c-lex.c: Replace %H by an explicit location. Update all calls.
11468 * c-common.c: Likewise.
11469 * c-decl.c: Likewise.
11470 * c-typeck.c: Likewise.
11471 * fold-const.c: Likewise.
11472 * gimplify.c: Likewise.
11473 * stmt.c: Likewise.
11474 * tree-cfg.c: Likewise.
11475 * tree-ssa-loop-niter.c: Likewise.
11476 * tree-vrp.c: Likewise.
11477 * value-prof.c: Likewise.
11478
11479 2009-07-06 Diego Novillo <dnovillo@google.com>
11480
11481 * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
11482 if it has one. Handle cases where VAR does not have an
11483 annotation or cfun is NULL.
11484
11485 2009-07-06 Diego Novillo <dnovillo@google.com>
11486
11487 * tree.c: Include debug.h.
11488 (initialize_tree_contains_struct): New.
11489 (init_ttree): Call it.
11490 (tree_node_structure_for_code): Factor out of ...
11491 (tree_node_structure): ... here.
11492 * treestruct.def (TS_PHI_NODE): Remove.
11493 (TS_GIMPLE_STATEMENT): Remove.
11494
11495 2009-07-06 Diego Novillo <dnovillo@google.com>
11496
11497 * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
11498 (debug_tree_chain): Handle cycles.
11499
11500 2009-07-06 Nick Clifton <nickc@redhat.com>
11501 DJ Delorie <dj@redhat.com>
11502
11503 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11504 __FMOVD_ENABLED__ is defined.
11505 * config/sh/sh.h
11506 (TARGET_FMOVD): Provide a default definition.
11507 (MASK_FMOVD): Likewise.
11508 (TARGET_CPU_CPP_BUILTINS): Define
11509 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11510 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11511 two fmov instructions depending upon whether TARGET_FMOVD is enabled.
11512 (split for DF load from memory into register): Also handle
11513 MEMs which consist of REG+DISP addressing.
11514 (split for DF store from register to memory): Likewise.
11515 (movsf_ie): Always use single fp_mode.
11516 * config/sh/sh.c (sh_override_options): Do not automatically
11517 enable TARGET_MOVD for the SH2A when supporting doubles - leave
11518 that to the -mfmovd command line switch.
11519 (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
11520 (fldi_ok): Always allow.
11521 * config/sh/sh.opt (mfmovd): Remove this switch.
11522 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11523
11524 2009-07-06 J"orn Rennecke <joern.rennecke@arc.com>
11525 Kaz Kojima <kkojima@gcc.gnu.org>
11526
11527 PR rtl-optimization/30807
11528 * postreload.c (reload_combine): For every new use of REG_SUM,
11529 record the use of BASE.
11530
11531 2009-07-06 Jan Hubicka <jh@suse.cz>
11532
11533 * params.def: Revert my accidental commit at 2009-06-30.
11534
11535 2009-07-04 Ian Lance Taylor <iant@google.com>
11536
11537 PR target/40636
11538 * config/i386/msformat-c.c (mingw_format_attributes): Declare as
11539 EXPORTED_CONST.
11540 (mingw_format_attribute_overrides): Likewise.
11541
11542 2009-07-04 Jakub Jelinek <jakub@redhat.com>
11543
11544 PR debug/40596
11545 * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
11546 don't check cfa.reg. Instead of cfa.indirect use
11547 fde && fde->drap_reg != INVALID_REGNUM test.
11548
11549 2009-07-04 Eric Botcazou <ebotcazou@adacore.com>
11550
11551 * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
11552
11553 2009-07-03 Vladimir Makarov <vmakarov@redhat.com>
11554
11555 PR target/40587
11556 * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
11557
11558 2009-07-03 Richard Guenther <rguenther@suse.de>
11559
11560 PR tree-optimization/40640
11561 * tree-switch-conversion.c (build_arrays): Perform arithmetic
11562 in original type.
11563
11564 2009-07-03 Jan Hubicka <jh@suse.cz>
11565
11566 * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
11567 for size, reduce amount of inlining.
11568
11569 2009-07-03 Richard Guenther <rguenther@suse.de>
11570
11571 PR middle-end/34163
11572 * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
11573 if t +- x is known to not overflow and the conversion widens the
11574 operation.
11575 * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
11576
11577 2009-07-03 Jan Hubicka <jh@suse.cz>
11578
11579 * ipa-pure-const.c (analyze): Update loop optimizer init.
11580 * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
11581 try_remove_empty_loop, remove_empty_loops): Remove.
11582 * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
11583 * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
11584 to mark regular loops as neccesary.
11585 (degenerate_phi_p): New function.
11586 (propagate_necessity, remove_dead_phis): Use it.
11587 (forward_edge_to_pdom): Likewise.
11588 (eliminate_unnecessary_stmts): Take care to remove uses of results of
11589 virtual PHI nodes that became unreachable.
11590 (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
11591 * tree-flow.h (remove_empty_loops): Remove.
11592 * passes.c (init_optimization_passes): Remove.
11593
11594 2009-07-03 Uros Bizjak <ubizjak@gmail.com>
11595
11596 * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
11597 can_create_pseudo_p.
11598 (*fix_trunc<mode>_i387_1): Ditto.
11599 (*floathi<mode>2_1): Ditto.
11600 (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
11601 (*fistdi2_1): Ditto.
11602 (*fist<mode>2_1): Ditto.
11603 (frndintxf2_floor): Ditto.
11604 (*fist<mode>2_floor_1): Ditto.
11605 (frndintxf2_ceil): Ditto.
11606 (*fist<mode>2_ceil_1): Ditto.
11607 (frndintxf2_trunc): Ditto.
11608 (frndintxf2_mask_pm): Ditto.
11609 (fxam<mode>2_i387_with_temp): Ditto.
11610 * config/i386/sse.md (mulv16qi3): Ditto.
11611 (*sse2_mulv4si3): Ditto.
11612 (mulv2di3): Ditto.
11613 (sse4_2_pcmpestr): Ditto.
11614 (sse4_2_pcmpistr): Ditto.
11615
11616 2009-07-03 Jan Hubicka <jh@suse.cz>
11617
11618 * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
11619 (mark_stmt_necessary): Set it.
11620 (mark_operand_necessary): Set it.
11621 (mark_control_dependent_edges_necessary): Set it.
11622 (mark_virtual_phi_result_for_renaming): New function.
11623 (get_live_post_dom): New function.
11624 (forward_edge_to_pdom): New function.
11625 (remove_dead_stmt): Fix handling of control dependences.
11626 (tree_dce_init): Init new bitmap.
11627 (tree_dce_done): Free it.
11628
11629 2009-07-02 Richard Guenther <rguenther@suse.de>
11630
11631 PR bootstrap/40617
11632 * tree-ssa-structalias.c (new_var_info): Initialize
11633 is_restrict_var.
11634
11635 2009-07-02 Jan Hubicka <jh@suse.cz>
11636
11637 * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
11638 local.
11639
11640 2009-07-02 Paolo Bonzini <bonzini@gnu.org>
11641
11642 * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
11643 instead of recomputing it. Adjust calls.
11644 (emit_store_flag): Adjust recursive calls.
11645
11646 2009-07-02 Richard Guenther <rguenther@suse.de>
11647
11648 * tree-ssa-live.c (remove_unused_locals): Do not remove
11649 heap variables.
11650 * tree-ssa-structalias.c (handle_lhs_call): Delay setting
11651 of DECL_EXTERNAL for HEAP variables.
11652 (compute_points_to_sets): Set DECL_EXTERNAL for escaped
11653 HEAP variables. Do not adjust RESTRICT vars.
11654 (find_what_var_points_to): Nobody cares if something
11655 points to READONLY.
11656
11657 2009-07-02 Ben Elliston <bje@au.ibm.com>
11658
11659 * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
11660 pc_low and pc_high declarations to the top of the function.
11661
11662 2009-07-01 DJ Delorie <dj@redhat.com>
11663
11664 * config/mep/mep.c (mep_handle_option): Leave IVC2 control
11665 registers as fixed.
11666 (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
11667 * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
11668 unspecified accesses to control registers.
11669 * config/mep/intrinsics.md: Regenerate.
11670 * config/mep/intrinsics.h: Regenerate.
11671 * config/mep/mep-intrin.h: Regenerate.
11672
11673 2009-07-01 Anthony Green <green@moxielogic.com>
11674
11675 * config/moxie/moxie.c (moxie_expand_prologue): Use dec
11676 instruction when possible.
11677 (moxie_expand_prologue): Ditto. Also, save an instruction and
11678 some complexity by popping off of $r12 instead of $sp.
11679 * config/moxie/moxie.md (movsi_pop): Don't assume $sp. Take two
11680 operands.
11681
11682 2009-07-01 Richard Henderson <rth@redhat.com>
11683
11684 PR bootstrap/40347
11685 * function.c (reposition_prologue_and_epilogue_notes): If epilogue
11686 contained no insns, reposition note before last insn.
11687
11688 2009-07-01 Richard Henderson <rth@redhat.com>
11689
11690 PR debug/40431
11691 * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
11692 DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
11693
11694 2009-07-01 Michael Meissner <meissner@linux.vnet.ibm.com>
11695
11696 PR bootstrap/40558
11697 * config/rs6000/rs6000.c (print_operand): Undo change that breaks
11698 darwin9 for printing reg addresses with %y.
11699
11700 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
11701
11702 * combine.c (force_to_mode): Handle TRUNCATE. Factor out
11703 truncation from operands in binary operations.
11704
11705 2009-07-01 Adam Nemet <anemet@caviumnetworks.com>
11706
11707 Revert:
11708 2009-01-11 Adam Nemet <anemet@caviumnetworks.com>
11709 * expmed.c (store_bit_field_1): Properly truncate the paradoxical
11710 subreg of op0 to the original op0.
11711
11712 * expmed.c (store_bit_field_1): Use a temporary as the destination
11713 instead of a paradoxical subreg when we need to truncate the result.
11714
11715 2009-07-01 DJ Delorie <dj@redhat.com>
11716
11717 * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
11718 names to VLIW variants.
11719 (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
11720 * config/mep/intrinsics.md: Regenerate.
11721 * config/mep/intrinsics.h: Regenerate.
11722 * config/mep/mep-intrin.h: Regenerate.
11723
11724 2009-07-01 Jakub Jelinek <jakub@redhat.com>
11725
11726 PR debug/40462
11727 * jump.c (returnjump_p): Revert last patch.
11728 * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
11729
11730 2009-07-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
11731
11732 PR target/40575
11733 * pa.md (casesi32p): Use jump table label to determine the offset
11734 of the jump table.
11735 (casesi64p): Likewise.
11736
11737 * pa.c (forward_branch_p): Return bool type. Use instruction
11738 addresses when available. Assert that INSN has a jump label.
11739 (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
11740 have a jump label.
11741
11742 2009-07-01 Richard Guenther <rguenther@suse.de>
11743
11744 PR tree-optimization/19831
11745 * tree-ssa-dce.c (propagate_necessity): Calls to functions
11746 that only act as barriers do not make any previous stores necessary.
11747 * tree-ssa-structalias.c (handle_lhs_call): Delay making
11748 HEAP variables global, do not add a constraint from nonlocal.
11749 (find_func_aliases): Handle escapes through return statements.
11750 (compute_points_to_sets): Make escaped HEAP variables global.
11751
11752 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
11753
11754 PR bootstrap/40597
11755 * expmed.c (emit_store_flag): Perform a conversion if necessary,
11756 after reducing a DImode cstore to SImode.
11757
11758 2009-07-01 Paolo Bonzini <bonzini@gnu.org>
11759
11760 * expr.c (expand_expr_real_1): Reinstate fallthrough to
11761 TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
11762
11763 2009-07-01 Maciej W. Rozycki <macro@linux-mips.org>
11764
11765 * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro. Set to 1.
11766 * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro. Redefine the
11767 to 0.
11768 * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
11769 and umod_optab if TARGET_BSD_DIVMOD.
11770 * config/vax/lib1funcs.asm: New file.
11771 * config/vax/t-linux: New file.
11772 * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
11773
11774 2009-06-30 Jakub Jelinek <jakub@redhat.com>
11775
11776 PR c++/40566
11777 * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
11778 to type arguments that have void type.
11779
11780 PR debug/40573
11781 * dwarf2out.c (gen_formal_parameter_die): Call
11782 equate_decl_number_to_die if node is different from origin.
11783
11784 2009-06-30 Anthony Green <green@moxielogic.com>
11785
11786 Clean up moxie port for --enable-build-with-cxx.
11787 * config/moxie/moxie.c (moxie_function_value): First two
11788 parameters are const_tree, not tree.
11789 * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
11790 (REG_CLASS_NAMES): Ditto.
11791 (REGNO_REG_CLASS): Ditto.
11792 * config/moxie/moxie-protos.h (moxie_override_options): Declare.
11793 (moxie_function_value): Fix constyness of arguments.
11794
11795 2009-06-30 Eric Botcazou <ebotcazou@adacore.com>
11796
11797 * cgraphunit.c (cgraph_finalize_compilation_unit): Call
11798 finalize_size_functions before further processing.
11799 * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
11800 (variable_size): Call self_referential_size on size expressions
11801 that contain a PLACEHOLDER_EXPR.
11802 (size_functions): New static variable.
11803 (copy_self_referential_tree_r): New static function.
11804 (self_referential_size): Likewise.
11805 (finalize_size_functions): New global function.
11806 * tree.c: Include tree-inline.h.
11807 (push_without_duplicates): New static function.
11808 (find_placeholder_in_expr): New global function.
11809 (substitute_in_expr) <tcc_declaration>: Return the replacement object
11810 on equality.
11811 <tcc_expression>: Likewise.
11812 <tcc_vl_exp>: If the replacement object is a constant, try to inline
11813 the call in the expression.
11814 * tree.h (finalize_size_functions): Declare.
11815 (find_placeholder_in_expr): Likewise.
11816 (FIND_PLACEHOLDER_IN_EXPR): New macro.
11817 (substitute_placeholder_in_expr): Update comment.
11818 * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
11819 is true.
11820 (copy_tree_body_r): Likewise.
11821 (copy_tree_body): New static function.
11822 (maybe_inline_call_in_expr): New global function.
11823 * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
11824 (maybe_inline_call_in_expr): Declare.
11825 * Makefile.in (tree.o): Depend on TREE_INLINE_H.
11826 (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
11827 GIMPLE_H.
11828
11829 2009-06-30 Richard Guenther <rguenther@suse.de>
11830
11831 * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
11832 continue walking.
11833 (propagate_necessity): Do not mark reaching defs of stores
11834 as necessary.
11835
11836 2009-06-30 Jan Hubicka <jh@suse.cz>
11837
11838 * cfgloopanal.c (check_irred): Move into ...
11839 (mark_irreducible_loops): ... here; return true if ireducible
11840 loops was found.
11841 * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
11842 (analyze_function): Try to prove loop finiteness.
11843 * cfgloop.h (mark_irreducible_loops): Update prototype.
11844 * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
11845
11846 2009-06-30 Basile Starynkevitch <basile@starynkevitch.net>
11847
11848 * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
11849
11850 2009-06-30 Ira Rosen <irar@il.ibm.com>
11851
11852 PR tree-optimization/40542
11853 * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
11854 types.
11855
11856 2009-06-30 Martin Jambor <mjambor@suse.cz>
11857
11858 PR tree-optimization/40582
11859 * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
11860 than useless_type_conversion_p.
11861 (generate_subtree_copies): Increment sra_stats.subtree_copies at a
11862 proper place.
11863
11864 2009-06-30 Martin Jambor <mjambor@suse.cz>
11865
11866 PR middle-end/40554
11867 * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
11868
11869 2009-06-30 Richard Guenther <rguenther@suse.de>
11870
11871 * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
11872 use ao_ref references.
11873 (walk_aliased_vdefs): Likewise.
11874 * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
11875 * tree-ssa-dce.c (struct ref_data): Remove.
11876 (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
11877 (mark_aliased_reaching_defs_necessary): Adjust.
11878 (mark_all_reaching_defs_necessary_1): Likewise.
11879
11880 2009-06-30 Paolo Bonzini <bonzini@gnu.org>
11881
11882 PR boostrap/40597
11883 * expmed.c (emit_cstore): New name of emit_store_flag_1.
11884 (emit_store_flag_1): Extract from emit_store_flag, adjust
11885 calls to (what now is) emit_cstore.
11886 (emit_store_flag): Call emit_store_flag_1 and also use it
11887 for what used to be recursive calls.
11888
11889 2009-06-30 Wei Guozhi <carrot@google.com>
11890
11891 PR/40416
11892 * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
11893 if the target bb post dominates from bb.
11894 * config/i386/i386.c (memory_address_length): Check existence of base
11895 register before using it.
11896
11897 2009-06-30 Nick Clifton <nickc@redhat.com>
11898 DJ Delorie <dj@redhat.com>
11899
11900 * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
11901 __FMOVD_ENABLED__ is defined.
11902 * config/sh/sh.h
11903 (TARGET_FMOVD): Provide a default definition.
11904 (MASK_FMOVD): Likewise.
11905 (TARGET_CPU_CPP_BUILTINS): Define
11906 __FMOVD_ENABLED__ if TARGET_FMOVD is true.
11907 * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
11908 two fmov instructions depending upon whether TARGET_FMOVD is
11909 enabled.
11910 (split for DF load from memory into register): Also handle
11911 MEMs which consist of REG+DISP addressing.
11912 (split for DF store from register to memory): Likewise.
11913 * config/sh/sh.opt (mfmovd): Remove this switch.
11914 * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
11915 * config/sh/sh.c (sh_override_options): Do not automatically
11916 enable TARGET_MOVD for the SH2A when supporting doubles - leave
11917 that to the -mfmovd command line switch.
11918
11919 * config/sh/sh.c (broken_move): Do not restrict fldi test to only
11920 the SH4 and SH4A.
11921 (fldi_ok): Always allow.
11922 * config/sh/sh.md (movsf_ie): Always use single fp_mode.
11923
11924 2009-06-29 DJ Delorie <dj@redhat.com>
11925
11926 * doc/install.texi (mep-x-elf): Correct chip's full name.
11927
11928 2009-06-29 H.J. Lu <hongjiu.lu@intel.com>
11929
11930 * doc/extend.texi: Fix typo.
11931
11932 2009-06-29 Tom Tromey <tromey@redhat.com>
11933
11934 * dwarf2.h: Remove.
11935 * Makefile.in (DWARF2_H): New variable.
11936 (except.o): Use it.
11937 (dwarf2out.o): Likewise.
11938 (dwarf2asm.o): Likewise.
11939 * config/i386/t-i386: Use DWARF2_H.
11940 * except.c: Include elf/dwarf2.h.
11941 * unwind-dw2.c: Include elf/dwarf2.h.
11942 * dwarf2out.c: Include elf/dwarf2.h.
11943 (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
11944 <dtprel>: New field.
11945 (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
11946 (size_of_loc_descr): Likewise.
11947 (output_loc_operands_raw): Likewise.
11948 (output_loc_operands): Handle new dtprel field.
11949 (loc_checksum): Update.
11950 (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
11951 * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
11952 * unwind-dw2-fde.c: Include elf/dwarf2.h.
11953 * dwarf2asm.c: Include elf/dwarf2.h.
11954 * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
11955 * config/mmix/mmix.c: Include elf/dwarf2.h.
11956 * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
11957 * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
11958 * config/sh/sh.c: Include elf/dwarf2.h.
11959 * config/i386/i386.c: Include elf/dwarf2.h.
11960
11961 2009-06-29 DJ Delorie <dj@redhat.com>
11962
11963 * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
11964
11965 * doc/extend.texi: Add MeP attributes and pragmas.
11966 * doc/invoke.text: Add MeP Options.
11967 * doc/contrib.texi: Add MeP contribution.
11968 * doc/md.texi: Add MeP constraints.
11969 * doc/install.texi: Add MeP target.
11970
11971 2009-06-30 Anatoly Sokolov <aesok@post.ru>
11972
11973 * target.h (struct gcc_target): Add frame_pointer_required field.
11974 * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
11975 (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
11976 * ira.c (setup_eliminable_regset): Use frame_pointer_required target
11977 hook.
11978 * reload1.c (update_eliminables): (Ditto.).
11979 * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
11980 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
11981 (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
11982
11983 * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
11984
11985 * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
11986 * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11987 (arm_frame_pointer_required): New function.
11988
11989 * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
11990 * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
11991 (avr_frame_pointer_required_p): Declare as static.
11992 * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
11993
11994 * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
11995 * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
11996 (bfin_frame_pointer_required): Make as static, change return type
11997 to bool.
11998 * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
11999
12000 * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
12001 * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12002 (cris_frame_pointer_required): New function.
12003
12004 * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
12005
12006 * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
12007 * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12008 (fr30_frame_pointer_required): New function.
12009
12010 * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
12011 * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
12012 (frv_frame_pointer_required): Make as static, change return type
12013 to bool.
12014 * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
12015
12016 * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
12017 * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12018 (ix86_frame_pointer_required): Make as static, change return type to
12019 bool.
12020 * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
12021
12022 * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
12023 * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12024
12025 * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
12026
12027 * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
12028
12029 * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
12030
12031 * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
12032 * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12033 (mips_frame_pointer_required): Make as static.
12034 * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
12035
12036 * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
12037 * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12038 (mmix_frame_pointer_required): Mew function.
12039
12040 * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
12041 * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12042
12043 * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
12044
12045 * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
12046
12047 * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
12048
12049 * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
12050 (CAN_ELIMINATE): Redefine.
12051 * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
12052 (sparc_frame_pointer_required): New function.
12053 (sparc_can_eliminate): New function.
12054 * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
12055
12056 * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
12057 * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
12058
12059 * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
12060 * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
12061 (xtensa_frame_pointer_required): Make as static, change return type
12062 to bool.
12063 * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
12064 Remove.
12065
12066 2009-06-29 Olatunji Ruwase <tjruwase@google.com>
12067
12068 * doc/plugins.texi: Document PLUGIN_START_UNIT.
12069 * toplev.c (compile_file): Call PLUGIN_START_UNIT.
12070 * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
12071 * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
12072 (register_callback): Handle PLUGIN_START_UNIT.
12073 (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
12074
12075 2009-06-29 Eric Botcazou <ebotcazou@adacore.com>
12076
12077 * tree.c (process_call_operands): Propagate TREE_READONLY from the
12078 operands.
12079 (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
12080 (build3_stat): Propagate TREE_READONLY for COND_EXPR.
12081
12082 2009-06-29 Daniel Jacobowitz <dan@codesourcery.com>
12083
12084 * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
12085 move cost.
12086
12087 2009-06-29 Uros Bizjak <ubizjak@gmail.com>
12088
12089 * doc/extend.texi (Additional Floating Types): __float128 is also
12090 supported on i386 targets.
12091
12092 2009-06-29 Richard Guenther <rguenther@suse.de>
12093
12094 PR middle-end/14187
12095 * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
12096 flag.
12097 (pt_solutions_same_restrict_base): Declare.
12098 * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
12099 flag.
12100 (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
12101 (make_constraint_from, make_copy_constraint): Move earlier.
12102 (make_constraint_from_heapvar): New function.
12103 (make_constraint_from_restrict): Likewise.
12104 (handle_lhs_call): Use it.
12105 (find_func_aliases): Use it to track conversions to restrict
12106 qualified pointers.
12107 (struct fieldoff): Add only_restrict_pointers flag.
12108 (push_fields_onto_fieldstack): Initialize it.
12109 (create_variable_info_for): Track global restrict qualified pointers.
12110 (intra_create_variable_infos): Use make_constraint_from_heapvar.
12111 Track restrict qualified pointer arguments.
12112 (set_uids_in_ptset): Use varinfo is_global_var flag.
12113 (find_what_var_points_to): Set the vars_contains_restrict flag.
12114 Always create the points-to solution for sets including restrict tags.
12115 (pt_solutions_same_restrict_base): New function.
12116 * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
12117 qualified pointers use pt_solutions_same_restrict_base as
12118 additional source for disambiguation.
12119
12120 2009-06-29 Richard Guenther <rguenther@suse.de>
12121
12122 PR middle-end/38212
12123 * alias.c (find_base_decl): Remove.
12124 (get_deref_alias_set_1): Remove restrict handling.
12125 * c-common.c (c_apply_type_quals_to_decl): Do not set
12126 DECL_POINTER_ALIAS_SET.
12127 * gimplify.c (find_single_pointer_decl_1): Remove.
12128 (find_single_pointer_decl): Likewise.
12129 (internal_get_tmp_var): Remove restrict handling.
12130 (gimple_regimplify_operands): Likewise.
12131 * omp-low.c (expand_omp_atomic_pipeline): Do not set
12132 DECL_POINTER_ALIAS_SET. Use ref-all pointers.
12133 * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
12134 * tree.c (restrict_base_for_decl): Remove.
12135 (init_ttree): Do not allocate it.
12136 (make_node_stat): Do not set DECL_POINTER_ALIAS_SET. Set
12137 LABEL_DECL_UID for label decls.
12138 (copy_node_stat): Do not copy restrict information.
12139 (decl_restrict_base_lookup): Remove.
12140 (decl_restrict_base_insert): Likewise.
12141 (print_restrict_base_statistics): Likewise.
12142 (dump_tree_statistics): Do not call print_restrict_base_statistics.
12143 * tree.h (DECL_POINTER_ALIAS_SET): Remove.
12144 (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
12145 (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
12146 (LABEL_DECL_UID): Adjust.
12147 (DECL_BASED_ON_RESTRICT_P): Remove.
12148 (DECL_GET_RESTRICT_BASE): Likewise.
12149 (SET_DECL_RESTRICT_BASE): Likewise.
12150 (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
12151
12152 * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
12153 instead of DECL_POINTER_ALIAS_SET.
12154 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
12155 * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
12156 * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
12157
12158 2009-06-29 Richard Guenther <rguenther@suse.de>
12159
12160 PR tree-optimization/40579
12161 * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
12162 the IL to simplify has constants that overflowed.
12163
12164 2009-06-28 Uros Bizjak <ubizjak@gmail.com>
12165
12166 PR tree-optimization/40550
12167 * tree-vect-generic.c (expand_vector_operations_1): Compute in
12168 vector_compute_type only when the size of vector_compute_type is
12169 less than the size of type.
12170
12171 2009-06-28 Eric Botcazou <ebotcazou@adacore.com>
12172
12173 * fold-const.c (contains_label_1): Fix comments.
12174 (contains_label_p): Do not walk trees multiple time.
12175
12176 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
12177
12178 * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
12179 * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
12180 cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
12181 ix86_fp_comparison_operator.
12182 (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
12183 *fp_jcc_2_sse, *fp_jcc_2_387): Delete
12184 (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
12185 *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
12186 !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
12187 to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
12188 (related splits): Change predicate to ix86_fp_comparison_operator.
12189 * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
12190 instead of ix86_fp_comparison_codes.
12191 (ix86_trivial_fp_comparison_operator,
12192 ix86_fp_comparison_operator): New.
12193 * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
12194 (ix86_expand_compare): Eliminate last two parameters.
12195 (ix86_fp_jump_nontrivial_p): Kill.
12196 * config/i386/i386.c (put_condition_code): Eliminate call to
12197 ix86_fp_comparison_codes and subsequent assertion.
12198 (ix86_fp_comparison_codes): Eliminate.
12199 (ix86_fp_swap_condition): New.
12200 (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
12201 ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
12202 into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
12203 (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
12204 and ix86_fp_swap_condition.
12205 (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
12206 Use ix86_fp_comparison_strategy.
12207 (ix86_expand_compare): Likewise. Eliminate last two arguments.
12208 (ix86_fp_jump_nontrivial_p): Eliminate.
12209 (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple. Adjust
12210 call to ix86_expand_compare.
12211 (ix86_split_fp_branch, ix86_expand_setcc,
12212 ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
12213 ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
12214
12215 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
12216
12217 * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
12218 related to jump_clobbers.
12219 * config/arm/arm.md (conds): Remove jump_clob case.
12220 (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
12221 splits): Change comparison_operator to arm_comparison_operator.
12222 (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
12223 Eliminate.
12224
12225 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
12226
12227 * dojump.c (do_compare_rtx_and_jump): Try swapping the
12228 condition for floating point modes.
12229 * expmed.c (emit_store_flag_1): Move here a bigger part
12230 of emit_store_flag.
12231 (emit_store_flag): Try swapping the condition for floating point
12232 modes.
12233 * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
12234
12235 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
12236
12237 * expr.c (expand_expr_real_1): Just use do_store_flag.
12238 (do_store_flag): Drop support for TRUTH_NOT_EXPR. Use
12239 emit_store_flag_force.
12240 * expmed.c (emit_store_flag_force): Copy here trick
12241 previously in expand_expr_real_1. Try reversing the comparison.
12242 (emit_store_flag_1): Work if target is NULL.
12243 (emit_store_flag): Work if target is NULL, using the result mode
12244 from the comparison. Use split_comparison, restructure final part
12245 to simplify conditionals.
12246
12247 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
12248
12249 * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
12250 * dojump.c (do_jump): Change handling of floating-point
12251 ops to use just do_compare_and_jump.
12252 (split_comparison): New.
12253 (do_compare_rtx_and_jump): Add here logic coming previously
12254 in do_jump, using split_comparison.
12255
12256 2009-06-27 H.J. Lu <hongjiu.lu@intel.com>
12257
12258 PR target/40489
12259 * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
12260
12261 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12262
12263 * tree-ssa-alias.c: Fix unintentional commit.
12264
12265 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12266
12267 * passes.c (execute_one_pass): Fix unintentional commit.
12268
12269 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12270
12271 * df-problems.c (df_set_seen, df_unset_seen): Delete.
12272 (df_rd_local_compute, df_md_local_compute): Inline them.
12273
12274 (df_md_scratch): New.
12275 (df_md_alloc, df_md_free): Allocate/free it.
12276 (df_md_local_compute): Only include live registers in init.
12277 (df_md_transfer_function): Prune the in-set computed by
12278 the confluence function, and the gen-set too.
12279
12280 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12281
12282 PR rtl-optimization/26854
12283 * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
12284 * df-problems.c (df_rd_add_problem): Fix comment.
12285 (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
12286 df_md_simulate_artificial_defs_at_top,
12287 df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
12288 df_md_bb_local_compute, df_md_local_compute, df_md_reset,
12289 df_md_transfer_function, df_md_init, df_md_confluence_0,
12290 df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
12291 problem_MD, df_md_add_problem): New.
12292 * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
12293 df_md_get_bb_info): New.
12294 (DF_LAST_PROBLEM_PLUS1): Adjust.
12295
12296 * Makefile.in (fwprop.o): Include domwalk.h.
12297 * fwprop.c: Include domwalk.h.
12298 (reg_defs, reg_defs_stack): New.
12299 (bitmap_only_bit_between): Remove.
12300 (process_defs): New.
12301 (process_uses): Use reg_defs and local_md instead of
12302 bitmap_only_bit_between and local_rd.
12303 (single_def_use_enter_block): New, from build_single_def_use_links.
12304 (single_def_use_leave_block): New.
12305 (build_single_def_use_links): Remove code moved to
12306 single_def_use_enter_block, invoke domwalk.
12307 (use_killed_between): Adjust comment.
12308
12309 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12310
12311 * bitmap.h (bitmap_ior_and_into): New.
12312 * bitmap.c (bitmap_ior_and_into): New.
12313
12314 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
12315
12316 * domwalk.h (struct dom_walk_data): Remove all callbacks except
12317 before_dom_children_before_stmts and after_dom_children_after_stmts.
12318 Rename the two remaining callbacks to just before_dom_children and
12319 after_dom_children. Remove other GIMPLE statement walking bits.
12320 * domwalk.c (walk_dominator_tree): Remove now unsupported features.
12321 * graphite.c: Do not include domwalk.h.
12322 * tree-into-ssa.c (interesting_blocks): New global.
12323 (struct mark_def_sites_global_data): Remove it and names_to_rename.
12324 (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
12325 rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
12326 now that they're not domwalk callbacks.
12327 (rewrite_initialize_block): Rename to...
12328 (rewrite_enter_block): ... this, place after called functions. Test
12329 interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
12330 (rewrite_finalize_block): Rename to...
12331 (rewrite_leave_block): ... this, place after called functions.
12332 (rewrite_update_init_block): Rename to...
12333 (rewrite_update_enter_block): ... this, place after called functions.
12334 Test interesting_blocks, call rewrite_update_stmt and
12335 rewrite_update_phi_arguments.
12336 (rewrite_update_fini_block): Rename to...
12337 (rewrite_leave_block): ... this, place after called functions.
12338 (rewrite_blocks): Remove last argument, simplify initialization of
12339 walk_data.
12340 (mark_def_sites_initialize_block): Rename to...
12341 (mark_def_sites_block): ... this, call mark_def_sites.
12342 (mark_def_sites_blocks): Remove argument, simplify initialization of
12343 walk_data.
12344 (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
12345 (update_ssa): Likewise.
12346 * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
12347 callback.
12348 (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
12349 (dom_opt_initialize_block): Rename to...
12350 (dom_opt_enter_block): ... this, place after called functions. Walk
12351 statements here, inline propagate_to_outgoing_edges.
12352 (dom_opt_finalize_block): Rename to...
12353 (dom_opt_leave_block): ... this, place after called functions.
12354 * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
12355 domwalk callback.
12356 (dse_enter_block, dse_record_phi): New.
12357 (dse_record_phis): Delete.
12358 (dse_finalize_block): Rename to...
12359 (dse_leave_block): ... this.
12360 (tree_ssa_dse): Simplify initialization of walk_data.
12361 * tree-ssa-loop-im.c (determine_invariantness, move_computations):
12362 Adjust initialization of walk_data.
12363 * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
12364 * tree-ssa-loop-phiopt.c (get_non_trapping):
12365 Adjust initialization of walk_data.
12366 * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
12367 * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
12368 it's not a domwalk callback.
12369 (uncprop_initialize_block): Rename to...
12370 (dse_enter_block): ... this, call uncprop_into_successor_phis.
12371 (dse_finalize_block): Rename to...
12372 (dse_leave_block): ... this.
12373 (tree_ssa_uncprop): Simplify initialization of walk_data.
12374 * Makefile.in: Adjust dependencies.
12375
12376 2009-06-27 Richard Earnshaw <rearnsha@arm.com>
12377
12378 * arm.md (casesi): Fix test for Thumb1.
12379 (thumb1_casesi_internal_pic): Likewise.
12380 (thumb1_casesi_dispatch): Likewise.
12381
12382 2009-06-26 Daniel Gutson <dgutson@codesourcery.com>
12383
12384 * config/arm/arm-cores.def: Added core cortex-m0.
12385 * config/arm/arm-tune.md: Regenerated.
12386 * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
12387
12388 2009-06-26 DJ Delorie <dj@redhat.com>
12389
12390 * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
12391
12392 * config/mep/mep.c (mep_bundle_insns): Account for the fact that
12393 the scheduler doesn't tag jump insns.
12394
12395 2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
12396
12397 * c-decl.c (merge_decls): Re-indent.
12398
12399 2009-06-26 Janis Johnson <janis187@us.ibm.com>
12400
12401 PR c/39902
12402 * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
12403 Special-case decimal float constants.
12404
12405 2009-06-26 Richard Henderson <rth@redhat.com>
12406
12407 * function.h (struct function): Add cannot_be_copied_reason,
12408 and cannot_be_copied_set.
12409 * tree-inline.c (has_label_address_in_static_1): Rename from
12410 inline_forbidden_p_2; don't set inline_forbidden_reason here.
12411 (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
12412 don't set inline_forbidden_reason.
12413 (copy_forbidden): New function, split out of inline_forbidden_p.
12414 (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
12415 (inline_forbidden_p): Use copy_forbidden.
12416 (tree_versionable_function_p): Likewise.
12417 (inlinable_function_p): Merge into tree_inlinable_function_p.
12418 (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
12419 * ipa-cp.c (ipcp_versionable_function_p): New function.
12420 (ipcp_cloning_candidate_p): Use it.
12421 (ipcp_node_modifiable_p): Likewise.
12422
12423 2009-06-26 Olatunji Ruwase <tjruwase@google.com>
12424
12425 * builtins.c (expand_builtin_alloca): Handle builtin alloca
12426 that is marked not to be inlined. Remove flag_mudflap use.
12427 * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
12428 (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
12429
12430 2009-06-26 Steve Ellcey <sje@cup.hp.com>
12431
12432 PR bootstrap/40338
12433 * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
12434 * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
12435
12436 2009-06-26 Kai Tietz <kai.tietz@onevision.com>
12437
12438 * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
12439 shared libgcc.
12440 (__mingwthr_remove_key_dtor): Likewise.
12441
12442 2009-06-26 Richard Guenther <rguenther@suse.de>
12443
12444 * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
12445
12446 2009-06-26 Steven Bosscher <steven@gcc.gnu.org>
12447
12448 PR middle-end/40525
12449 * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
12450 try the non-cond_exec path also.
12451
12452 2009-06-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
12453
12454 PR target/40468
12455 * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
12456 (output_cbranch): Use new functions.
12457 (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
12458 Likewise.
12459
12460 2009-06-25 Michael Meissner <meissner@linux.vnet.ibm.com>
12461 Pat Haugen <pthaugen@us.ibm.com>
12462 Revital Eres <ERES@il.ibm.com>
12463
12464 * config/rs6000/rs6000.c (print_operand): Correct lossage message
12465 for %c error. Add %x support to print VSX registers as a unified
12466 register set, instead of separate float and altivec registers.
12467 Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
12468 %y case, and add support for VSX pre-modify addresses.
12469 (output_toc): Add assert for CONST containing an integer constant
12470 in the PLUS case.
12471 (rs6000_adjust_cost): Add POWER7 support.
12472 (insn_must_be_first_in_group): Ditto.
12473 (insn_must_be_last_in_group): Ditto.
12474 (rs6000_emit_popcount): Ditto.
12475 (rs6000_vector_mode_supported_p): Ditto.
12476
12477 * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
12478 Change some of the functions called by macros to being called
12479 through a pointer, so debug functions can be inserted if
12480 -mdebug=addr or -mdebug=cost.
12481 (rs6000_preferred_reload_class_ptr): Ditto.
12482 (rs6000_secondary_reload_class_ptr): Ditto.
12483 (rs6000_secondary_memory_needed_ptr): Ditto.
12484 (rs6000_cannot_change_mode_class_ptr): Ditto.
12485 (rs6000_secondary_reload_inner): Ditto.
12486 (rs6000_legitimize_reload_address): Ditto.
12487 (rs6000_legitimize_reload_address_ptr): Ditto.
12488 (rs6000_mode_dependent_address): Ditto.
12489 (rs6000_mode_dependent_address_ptr): Ditto.
12490
12491 * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
12492 function to return true if the mode allows reg + integer
12493 addresses.
12494 (virtual_stack_registers_memory_p): New function to return true if
12495 the address refers to a virtual stack register.
12496 (rs6000_legitimate_offset_address_p): Move code to say whether a
12497 mode supports reg+int addressing to reg_offset_addressing_ok_p and
12498 call it.
12499 (rs6000_legitimate_address_p): Add checks for modes that only can
12500 do reg+reg addressing. Start adding VSX support.
12501 (rs6000_legitimize_reload_address): Ditto.
12502 (rs6000_legitimize_address): Ditto.
12503 (rs6000_debug_legitimate_address_p): New debug functions for
12504 -mdebug=addr and -mdebug=cost.
12505 (rs6000_debug_rtx_costs): Ditto.
12506 (rs6000_debug_address_costs): Ditto.
12507 (rs6000_debug_adjust_cost): Ditto.
12508 (rs6000_debug_legitimize_address): Ditto.
12509 (rs6000_legitimize_reload_address_ptr): Point to call normal
12510 function or debug function. Make functions called via pointer
12511 static.
12512 (rs6000_mode_dependent_address_ptr): Ditto.
12513 (rs6000_secondary_reload_class_ptr): Ditto.
12514 (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
12515 (rs6000_emit_move): Add -mdebug=addr support. Change an abort
12516 into a friendlier error.
12517 (rs6000_init_builtins): Add initial VSX support.
12518 (rs6000_adjust_cost): Fix some spacing issues.
12519
12520 * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
12521 (REG_CLASS_NAMES): Ditto.
12522 (REG_CLASS_CONTENTS): Ditto.
12523 (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
12524 pointer, to add -mdebug=addr support.
12525 (CANNOT_CHANGE_MODE_CLASS): Ditto.
12526 (SECONDARY_RELOAD_CLASS): Call through a pointer to add
12527 -mdebug=addr support.
12528 (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
12529 (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
12530 (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
12531
12532 * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
12533 16-bit values.
12534 (bswapsi*): Set attribute types for load/store. Add combiner
12535 patterns to eliminate zero extend on 64-bit.
12536 (bswapdi*): Add support for swapping 64-bit values. Use ldbrx and
12537 stdbrx if the hardware supports those instructions.
12538
12539 2009-06-25 Ian Lance Taylor <iant@google.com>
12540
12541 * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
12542 (Link Options): Document -static-libstdc++.
12543
12544 2009-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
12545
12546 PR target/38731
12547 * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
12548 DATA_ALIGNMENT instead.
12549
12550 2009-06-25 Richard Guenther <rguenther@suse.de>
12551
12552 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
12553 indirect references against the callused/escaped solutions.
12554 (call_may_clobber_ref_p_1): Likewise.
12555
12556 2009-06-25 Martin Jambor <mjambor@suse.cz>
12557
12558 PR tree-optimization/40493
12559 * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
12560 (enum unscalarized_data_handling): New type.
12561 (handle_unscalarized_data_in_subtree): Return what has been done.
12562 (load_assign_lhs_subreplacements): Handle left flushes differently.
12563 (sra_modify_assign): Use unscalarized_data_handling, simplified
12564 condition determining whether to remove the statement.
12565
12566 2009-06-25 Basile Starynkevitch <basile@starynkevitch.net>
12567
12568 * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
12569 excerpt - @ should be doubled for texinfo.
12570
12571 2009-06-24 Ian Lance Taylor <iant@google.com>
12572
12573 * config/arc/arc.c: Include "df.h".
12574 (arc_attribute_table): Make static. Move higher in file.
12575 (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
12576 (output_shift): Initialize n later to avoid warning.
12577 * config/arm/arm.c (arm_attribute_table): Make static. Move
12578 higher in file.
12579 * config/avr/avr.c (avr_attribute_table): Make static. Move
12580 higher in file.
12581 (reg_class_tab): Change array type from int to enum reg_class.
12582 (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
12583 LABEL_REF.
12584 (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
12585 (lshrhi3_out): Likewise.
12586 (class_likely_spilled_p): Change return type to bool.
12587 (avr_rtx_costs): Use local code variable with enum type.
12588 * config/avr/avr.md (movmemhi): Use add_reg_note.
12589 (andhi3, andsi3): Don't use AS2 with "and".
12590 (iorhi3, iorsi3): Don't use AS2 with "or".
12591 * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
12592 * config/crx/crx.c: Include "df.h".
12593 (crx_attribute_table): Make static.
12594 * config/m32r/m32r.c: Include "df.h".
12595 (m32r_attribute_table): Make static. Move higher in file.
12596 (pop): Use add_reg_note.
12597 (block_move_call): Change 0 to LCT_NORMAL in function call.
12598 * config/m32r/m32r.md (movsi_insn): Remove unused local value.
12599 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
12600 * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
12601 declare, not just when TREE_CODE is defined.
12602 * config/m68hc11/m68hc11.c: Include "expr.h".
12603 (m68hc11_attribute_table): Make static. Move higher in file.
12604 (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
12605 function call.
12606 (m68hc11_register_indirect_p): Likewise.
12607 (m68hc11_function_arg_padding): Change return type to enum
12608 direction.
12609 (emit_move_after_reload): Use add_reg_note.
12610 (m68hc11_emit_logical): Change code parameter to enum rtx_code.
12611 (m68hc11_split_logical): Likewise.
12612 (m68hc11_rtx_costs): Add local code_and outer_code variables with
12613 enum type.
12614 * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
12615 to VOIDmode in function call.
12616 * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
12617 tree is defined.
12618 (m68hc11_split_logical): Update declaration.
12619 (m68hc11_function_arg_padding): Update declaration.
12620 * config/mcore/mcore.c (regno_reg_class): Change form array of int
12621 to array of enum reg_class.
12622 (mcore_attribute_table): Make static. Move higher in file.
12623 (mcore_rtx_costs): Add cast to enum type.
12624 * config/mcore/mcore.h (regno_reg_class): Update declaration.
12625 (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
12626 * config/sh/sh.c (sh_attribute_table): Make static. Move higher
12627 in file.
12628 * config/sh/predicates.md (trapping_target_operand): Rename and to
12629 and_expr.
12630 * config/sparc/sparc.c (sparc_attribute_table): Make static. Move
12631 higher in file.
12632 * config/spu/spu.c (spu_attribute_table): Make static. Move
12633 higher in file.
12634 * config/v850/v850.c (v850_attribute_table): Make static. Move
12635 higher in file.
12636 (v850_rtx_costs): Use local code with enum type.
12637 (expand_epilogue): Add cast.
12638 * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
12639
12640 2009-06-23 Takashi YOSHII <yoshii.takashi@renesas.com>
12641
12642 PR target/40515
12643 * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
12644 -m2a-single-only and -m2a-nofpu.
12645 * config/sh/sh.opt: Document m2a generates FPU code.
12646
12647 2009-06-24 Anatoly Sokolov <aesok@post.ru>
12648
12649 * defaults.h (CAN_ELIMINATE): Provide default.
12650 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12651 * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
12652 * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
12653 * config/spu/spu.h (CAN_ELIMINATE): Delete.
12654 * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
12655 * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
12656 * config/cris/cris.h (CAN_ELIMINATE): Delete.
12657 * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
12658 * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
12659 * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
12660
12661 2009-06-24 DJ Delorie <dj@redhat.com>
12662
12663 * mep-ext-cop.cpu: Fix copyright notice.
12664 * mep-default: Fix copyright notice.
12665 * mep-core: Fix copyright notice.
12666 * mep: Fix copyright notice.
12667 * mep-ivc2: Fix copyright notice.
12668 * mep-c5: Fix copyright notice.
12669
12670 2009-06-24 Denis Chertykov <chertykov@gmail.com>
12671
12672 * doc/contrib.texi (Contributors):
12673
12674 2009-06-24 Andreas Krebbel <krebbel1@de.ibm.com>
12675
12676 PR middle-end/40501
12677 * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
12678 src and dst operands if necessary.
12679
12680 2009-06-23 DJ Delorie <dj@redhat.com>
12681
12682 Add MeP port.
12683 * config.gcc: Add mep support.
12684 * recog.c: Resurrect validate_replace_rtx_subexp().
12685 * recog.h: Likewise.
12686 * config/mep/: Add new port:
12687 * config/mep/constraints.md: New file.
12688 * config/mep/default.h: New file.
12689 * config/mep/intrinsics.h: New file.
12690 * config/mep/intrinsics.md: New file.
12691 * config/mep/ivc2-template.h: New file.
12692 * config/mep/mep-c5.cpu: New file.
12693 * config/mep/mep-core.cpu: New file.
12694 * config/mep/mep-default.cpu: New file.
12695 * config/mep/mep-ext-cop.cpu: New file.
12696 * config/mep/mep-intrin.h: New file.
12697 * config/mep/mep-ivc2.cpu: New file.
12698 * config/mep/mep-lib1.asm: New file.
12699 * config/mep/mep-lib2.c: New file.
12700 * config/mep/mep-pragma.c: New file.
12701 * config/mep/mep-protos.h: New file.
12702 * config/mep/mep-tramp.c: New file.
12703 * config/mep/mep.c: New file.
12704 * config/mep/mep.cpu: New file.
12705 * config/mep/mep.h: New file.
12706 * config/mep/mep.md: New file.
12707 * config/mep/mep.opt: New file.
12708 * config/mep/predicates.md: New file.
12709 * config/mep/t-mep: New file.
12710
12711 2009-06-23 Ian Lance Taylor <iant@google.com>
12712
12713 * configure.ac: Invoke AC_PROG_CXX. Separate C specific warnings
12714 from loose_warn into c_loose_warn and from strict_warn into
12715 c_strict_warn. Set and substitute warn_cxxflags. Check for
12716 --enable-build-with-cxx. Set and substitute
12717 ENABLE_BUILD_WITH_CXX. Set and substitute HOST_LIBS.
12718 * Makefile.in (CXXFLAGS): New variable.
12719 (C_LOOSE_WARN, C_STRICT_WARN): New variables.
12720 (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN). Add $(C_STRICT_WARN) if
12721 the default is the same as $(STRICT_WARN).
12722 (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
12723 (CXX): New variable.
12724 (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
12725 (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
12726 (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
12727 (HOST_LIBS): New variable.
12728 (GCC_CFLAGS): Add $(C_LOOSE_WARN).
12729 (ALL_CXXFLAGS): New variable.
12730 (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
12731 * doc/install.texi (Configuration): Document
12732 --enable-build-with-cxx, --with-stage1-ldflags,
12733 --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
12734 * configure: Rebuild.
12735
12736 2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
12737
12738 * config/arm/arm.c (arm_override_options): Fix braces and formatting
12739 from previous commit.
12740
12741 2009-06-23 Ian Lance Taylor <iant@google.com>
12742
12743 * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
12744
12745 2009-06-23 Ian Lance Taylor <iant@google.com>
12746
12747 * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
12748 with ATTRIBUTE_UNUSED.
12749
12750 2009-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
12751 Pat Haugen <pthaugen@us.ibm.com>
12752 Revital Eres <eres@il.ibm.com>
12753
12754 * config.in (HAVE_AS_POPCNTD): Add default definition.
12755 (HAVE_AS_LWSYNC): Ditto.
12756
12757 * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
12758 release number.
12759 (gcc_cv_as_powerpc_cmpb): Ditto.
12760 (gcc_cv_as_powerpc_dfp): Ditto.
12761 (gcc_cv_as_powerpc_vsx): Ditto.
12762 (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
12763 supporting the popcntd/lwsync instructions.
12764 (gcc_cv_as_powerpc_lwsync): Ditto.
12765 * configure: Regenerate.
12766
12767 * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
12768 -mcpu=native and -mcpu=power7.
12769 * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
12770
12771 * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
12772 a variable instead of a mask to reduce the number of mask bits.
12773 * config/rs6000/sysv4.opt (-mbit-align): Ditto.
12774 (-mbit-word): Ditto.
12775 (-mregnames): Ditto.
12776 * config/rs6000/rs6000.opt (-mupdate): Ditto.
12777 (-mfused-madd): Ditto.
12778
12779 * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
12780 2.06 instructions.
12781 (-mvsx): New switch for VSX instructions.
12782 (-misel): Move from a variable to a mask to allow it to be set by
12783 -mcpu=.
12784
12785 * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
12786 function declaration to an array declaration.
12787 (rs6000_hard_regno_nregs): New external array declaration.
12788
12789 * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
12790 files included by rs6000.md.
12791
12792 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
12793 SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
12794
12795 * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
12796 a target mask.
12797 (rs6000_debug_reg): New -mdebug= variables.
12798 (rs6000_debug_addr): Ditto.
12799 (rs6000_debug_cost): Ditto.
12800 (rs6000_pmode): New variable to hold Pmode.
12801 (rs6000_pointer_size): New variable to hold POINTER_SIZE.
12802 (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
12803 calculated at compiler start.
12804 (rs6000_hard_regno_nregs): Change function to an array which holds
12805 HARD_REGNO_NREGS calculated at compiler start.
12806 (rs6000_explicit_options): Delete isel field.
12807 (rs6000_vector_unit): New array to hold which vector unit
12808 supports arithmetic options for a given type.
12809 (rs6000_vector_mem): New array to hold which vector unit supports
12810 memory reference operations for a given type.
12811 (rs6000_vector_align): New array to given the alignment of each
12812 vector type.
12813 (power7_cost): New basic costs for power7.
12814 (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
12815 (rs6000_hard_regno_nregs_internal): New function, moved from
12816 HARD_REGNO_NREGS, to calculate the number of registers each hard
12817 register takes for each type.
12818 (rs6000_debug_reg_print): New function for -mdebug=reg support.
12819 (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
12820 (+rs6000_init_hard_regno_mode_ok): New function, move calculation
12821 of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
12822 unit information here so it is calculated once at compiler startup
12823 time.
12824 (rs6000_override_options): Make -misel a target mask. Add more
12825 power7 target masks. Setup Pmode and POINTER_SIZE. Add initial
12826 VSX support. Add support for -mdebug=reg, -mdebug=addr, and
12827 -mdebug=cost.
12828 (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
12829 (rs6000_handle_option): Move -misel from variable to target mask.
12830 (rs6000_builtin_mask_for_load): Add VSX support.
12831 (rs6000_conditional_register_usage): Ditto.
12832 (USE_ALTIVEC_FOR_ARG_P): Ditto.
12833 (function_arg_boundary): Ditto.
12834 (rs6000_expand_builtin): Ditto.
12835 (def_builtin): Make abort message a little friendlier.
12836 (rs6000_emit_int_cmove): Add support for 64-bit isel.
12837
12838 * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
12839 assembler support the popcntd instruction instead of a vsx
12840 instruction to enable power7 support.
12841 (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
12842 (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
12843 option to the assembler if -mcpu=native.
12844 (ASM_CPU_NATIVE_SPEC): Ditto.
12845 (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
12846 ISA 2.06 features.
12847 (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
12848 the lwsync instruction.
12849 (enum processor_type): Add PROCESSOR_POWER7.
12850 (rs6000_debug_reg): New -mdebug= options.
12851 (rs6000_debug_addr): Ditto.
12852 (rs6000_debug_cost): Ditto.
12853 (rs6000_isel): Delete.
12854 (enum rs6000_vector): New enum to say what vector unit we have.
12855 (VECTOR_UNIT_*): New macros to say which vector unit has
12856 arithmetic operations for a given type.
12857 (VECTOR_MEM_*): New macros to say which vector unit has memory
12858 operations for a given type.
12859 (TARGET_LDBRX): Whether the machine supports the ldbrx
12860 instruction.
12861 (TARGET_ISEL): Delete, -misel moved to be a mask.
12862 (TARGET_ISEL64): New macro for 64-bit isel support.
12863 (UNITS_PER_VSX_WORD): New macro.
12864 (POINTER_SIZE): Move to be an external variable, rather than
12865 calculating whether we are generating 32 ot 64-bit code.
12866 (Pmode): Ditto.
12867 (STACK_BOUNDARY): Add VSX support.
12868 (LOCAL_ALIGNMENT): Ditto.
12869 (SLOW_UNALIGNED_ACCESS): Ditto.
12870 (VSX_REGNO_P): New macro for VSX support.
12871 (VFLOAT_REGNO_P): Ditto.
12872 (VINT_REGNO_P): Ditto.
12873 (VLOGICAL_REGNO_P): Ditto.
12874 (VSX_VECTOR_MODE): Ditto.
12875 (VSX_SCALAR_MODE): Ditto.
12876 (VSX_MODE): Ditto.
12877 (VSX_MOVE_MODE): Ditto.
12878 (VSX_REG_CLASS_P): Ditto.
12879 (HARD_REGNO_NREGS): Instead of calling a function, use an array
12880 lookup.
12881 (UNITS_PER_SIMD_WORD): Add VSX support.
12882 (MODES_TIEABLE_P): Ditto.
12883 (STARTING_FRAME_OFFSET): Ditto.
12884 (STACK_DYNAMIC_OFFSET): Ditto.
12885 (EPILOGUE_USES): Ditto.
12886 (REGNO_REG_CLASS): Move to array lookup.
12887 (CLASS_MAX_NREGS): Ditto.
12888 (rs6000_vector_reg_class): Add declaration.
12889 (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
12890 overlap with the floating point and Altivec registers.
12891
12892 * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
12893
12894 * config/rs6000/driver-rs6000.c (asm_names): New static array to
12895 give the appropriate asm switches if -mcpu=native.
12896 (host_detect_local_cpu): Add support for "asm".
12897 (host_detect_local_cpu): Follow GNU code guidelines for name.
12898
12899 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
12900 -mbit-word to a variable instead of being a target mask.
12901
12902 * config/rs6000/sync.md (lwsync): If the assembler supports it,
12903 emit the lwsync instruction instead of emitting the instruction as
12904 an integer constant.
12905
12906 * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
12907 fixuns_trundfsi2, move expander into rs6000.md.
12908
12909 * config/rs6000/rs6000.md (cpu): Add power7.
12910 (sel, *ptrsize): New mode attributes for 32/64-bit isel.
12911 (logical predicate patterns): Change the single instruction
12912 primitives that set CR0 to be fast_compare instead of compare.
12913 (norsi*): Ditto.
12914 (popcntwsi2): Add support for ISA 2.06 popcount instructions.
12915 (popcntddi2): Ditto.
12916 (popcount<mode>): Ditto.
12917 (floating multiply/add insns): Name the floating point
12918 multiply/add insns.
12919 (isel_signed_<mode>): Add support for -misel on 64-bit systems.
12920 (isel_unsigned_<mode>): Ditto.
12921 (fixuns_trundfsi2): Move expander here from spe.md.
12922 (smindi3): Define if we have -misel on 64-bit systems.
12923 (smaxdi3): Ditto.
12924 (umindi3): Ditto.
12925 (umaxdi3): Ditto.
12926
12927 2009-06-23 Anatoly Sokolov <aesok@post.ru>
12928
12929 * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
12930 extra_objs.
12931 * config/avr/avr.c (avr_current_device): New variable.
12932 (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
12933 (avr_arch, mcu_type_s): Move to avr.h.
12934 * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
12935 default_data_section_start fields.
12936 (avr_arch): Moved from avr.c.
12937 (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
12938 library_name fields.
12939 (avr_current_device, avr_mcu_types, avr_arch_types,
12940 avr_device_to_arch, avr_device_to_data_start,
12941 avr_device_to_startfiles, avr_device_to_devicelib): Declare.
12942 (EXTRA_SPEC_FUNCTIONS): Define.
12943 (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
12944 options mapping. Use device_to_arch and device_to_data_start insted.
12945 (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
12946 (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
12947 * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
12948 * config/avr/driver-avr.c: New file.
12949 * config/avr/avr-devices.c: New file.
12950
12951 2009-06-23 Jakub Jelinek <jakub@redhat.com>
12952
12953 * var-tracking.c (unshare_variable): Force initialized to
12954 be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
12955 (set_variable_part): Likewise.
12956 (struct variable_union_info): Remove pos_src field.
12957 (vui_vec, vui_allocated): New variables.
12958 (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
12959 unconditionally. Avoid XCVECNEW/free for every sorting, for dst_l
12960 == 1 use a simpler sorting algorithm. Compute pos field right
12961 away, don't fill in pos_src. For dst_l == 2 avoid qsort.
12962 Avoid quadratic comparison if !flag_var_tracking_uninit.
12963 (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
12964 unshare_variable unconditionally.
12965 (dataflow_set_different_2): Removed.
12966 (dataflow_set_different): Don't traverse second hash table.
12967 (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
12968 unconditionally to var_reg_set or var_mem_set.
12969 (emit_notes_in_bb): Likewise.
12970 (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
12971 unshare_variable.
12972 (emit_note_insn_var_location): Don't set initialized to
12973 VAR_INIT_STATUS_INITIALIZED early.
12974 (vt_finalize): Free vui_vec if needed, clear vui_vec and
12975 vui_allocated.
12976 * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
12977
12978 * tree-object-size.c (addr_object_size): Instead of checking
12979 for non-NULL TREE_CHAIN of the FIELD_DECL check that there
12980 are no FIELD_DECLs following it.
12981
12982 2009-06-23 Andreas Krebbel <krebbel1@de.ibm.com>
12983
12984 * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
12985 order to match bswaps with signed source operands.
12986
12987 2009-06-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
12988
12989 * sdbout.c (sdbout_one_type): Fix braces in switch.
12990
12991 2009-06-23 Richard Guenther <rguenther@suse.de>
12992
12993 * tree-ssa-structalias.c (struct variable_info): Add is_global_var
12994 member.
12995 (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
12996 readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
12997 var_callused, callused_tree, var_storedanything, storedanything_tree,
12998 var_integer, integer_tree): Remove global variables.
12999 (new_var_info): Do not pass new id, append the new var to the
13000 global variable vector.
13001 (do_ds_constraint): Use is_global_var member of the variable-info.
13002 (new_scalar_tmp_constraint_exp): Adjust.
13003 (create_function_info_for): Likewise.
13004 (create_variable_info_for): Likewise.
13005 (find_what_var_points_to): Remove dead code.
13006 (init_base_vars): Simplify.
13007 (compute_points_to_sets): Adjust.
13008
13009 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
13010
13011 * combine.c (try_combine): Dump information about the insns we're
13012 combining.
13013
13014 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
13015
13016 * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
13017 check when calling force_to_mode on TRUNCATE's operand.
13018
13019 2009-06-22 Ian Lance Taylor <iant@google.com>
13020
13021 * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
13022
13023 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
13024
13025 * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
13026
13027 2009-06-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13028
13029 * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
13030 override library linkage flags such as -static-libgcc or
13031 -shared-libgcc.
13032
13033 2009-06-22 Maxim Kuvyrkov <maxim@codesourcery.com>
13034
13035 * config/m68k/m68k-devices.def: Add line for MCF5221x.
13036
13037 2009-06-22 Ian Lance Taylor <iant@google.com>
13038
13039 * config/linux.opt: Put mglibc ahead of muclibc.
13040
13041 * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
13042 for duplicate decls.
13043
13044 2009-06-22 Matthias Klose <doko@ubuntu.com>
13045
13046 * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
13047
13048 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
13049
13050 PR objc/28050
13051 * c-parser.c (c_parser_objc_message_args): Return error_mark_node
13052 instead of NULL if a parser error occurs.
13053
13054 2009-06-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
13055
13056 * dwarf2out.c (dwarf2_debug_hooks): Initialize
13057 non-DWARF2_DEBUGGING_INFO version.
13058
13059 2009-06-22 Kai Tietz <kai.tietz@onevision.com>
13060
13061 * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
13062 i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
13063
13064 * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
13065 (LIBGCC2_TF_CEXT): Define.
13066 (TF_SIZE): Define.
13067
13068 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13069
13070 PR target/40463
13071 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
13072
13073 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13074
13075 * config/arm/arm.c (arm_override_options): Disable
13076 -mcaller-super-interworking and -mcallee-super-interworking.
13077 * doc/invoke.texi (ARM Options): Document this.
13078
13079 2009-06-22 Nathan Sidwell <nathan@codesourcery.com>
13080
13081 * config/arm/arm.c (arm_print_operand): Deal with HIGH.
13082 * config/arm/constraints.md (j): New constraint for movw operands.
13083 (N): Remove thumb2 meaning.
13084 * config/arm/arm.md (*arm_movw): Delete.
13085 (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
13086 * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
13087 * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
13088
13089 2009-06-22 Martin Jambor <mjambor@suse.cz>
13090
13091 PR tree-optimization/40492
13092 * tree-sra.c (sra_modify_assign): Pass zero offsets to
13093 build_ref_for_offset.
13094
13095 2009-06-22 Shujing Zhao <pearly.zhao@oracle.com>
13096
13097 * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
13098 JUMP_TABLE_DATA_P predicates where applicable.
13099 * auto-inc-dec.c: Ditto.
13100 * builtins.c: Ditto.
13101 * caller-save.c: Ditto.
13102 * calls.c: Ditto.
13103 * cfgcleanup.c: Ditto.
13104 * cfglayout.c: Ditto.
13105 * cfgrtl.c: Ditto.
13106 * combine.c: Ditto.
13107 * combine-stack-adj.c: Ditto.
13108 * cse.c: Ditto.
13109 * cselib.c: Ditto.
13110 * dbxout.c: Ditto.
13111 * df-scan.c: Ditto.
13112 * dse.c: Ditto.
13113 * dwarf2asm.c: Ditto.
13114 * dwarf2out.c: Ditto.
13115 * emit-rtl.c: Ditto.
13116 * except.c: Ditto.
13117 * explow.c: Ditto.
13118 * expmed.c: Ditto.
13119 * expr.c: Ditto.
13120 * final.c: Ditto.
13121 * function.c: Ditto.
13122 * fwprop.c: Ditto.
13123 * gcse.c: Ditto.
13124 * genpreds.c: Ditto.
13125 * genrecog.c: Ditto.
13126 * ifcvt.c: Ditto.
13127 * ira-costs.c: Ditto.
13128 * ira-lives.c: Ditto.
13129 * jump.c: Ditto.
13130 * loop-iv.c: Ditto.
13131 * lower-subreg.c: Ditto.
13132 * modulo-sched.c: Ditto.
13133 * optabs.c: Ditto.
13134 * postreload.c: Ditto.
13135 * print-rtl.c: Ditto.
13136 * recog.c: Ditto.
13137 * reginfo.c: Ditto.
13138 * regmove.c: Ditto.
13139 * reload1.c: Ditto.
13140 * reload.c: Ditto.
13141 * reorg.c: Ditto.
13142 * rtlanal.c: Ditto.
13143 * rtl.c: Ditto.
13144 * sched-vis.c: Ditto.
13145 * sdbout.c: Ditto.
13146 * sel-sched-ir.c: Ditto.
13147 * simplify-rtx.c: Ditto.
13148 * targhooks.c: Ditto.
13149 * var-tracking.c: Ditto.
13150 * vmsdbgout.c: Ditto.
13151
13152 2009-06-22 Matthias Klose <doko@ubuntu.com>
13153
13154 * Makefile.in (install-plugin): Always use DESTDIR.
13155
13156 2009-06-22 Olivier Hainque <hainque@adacore.com>
13157
13158 * config/pa/pa.c (output_call): Don't optimize post call jumps
13159 into return address adjustments if the call may throw.
13160
13161 2009-06-21 Richard Earnshaw <rearnsha@arm.com>
13162
13163 * arm.c (thumb1_output_casesi): New function.
13164 * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
13165 optimizing for size or PIC.
13166 (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
13167 * arm.md (UNSPEC_THUMB1_CASESI): New constant.
13168 (casesi): Handle Thumb-1 when optimizing for size or PIC.
13169 (thumb1_casesi_internal_pic): New expand rule.
13170 (thumb1_casesi_dispatch): New pattern.
13171 * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
13172 thumb-1 mode.
13173 * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
13174 in the text seciton when PIC or optimizing for size.
13175 * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
13176 * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
13177 preservation properties of code.
13178 (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
13179 (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
13180 (__gnu_thumb1_case_si): New function.
13181 * t-arm (LIB1ASMSRC): Define here.
13182 (LIB1ASMFUNCS): Add some common functions.
13183 * t-arm-elf (LIB1ASMSRC): Delete.
13184 (LIB1ASMFUNCS): Append to existing set.
13185 * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13186 * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13187 * t-symbian (LIB1ASMFUNCS): Likewise.
13188 * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13189 * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
13190
13191 2009-06-21 Richard Guenther <rguenther@suse.de>
13192
13193 PR tree-optimization/38729
13194 * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
13195 to loops with a single exit if -fno-expensive-optimizations.
13196
13197 2009-06-21 Jakub Jelinek <jakub@redhat.com>
13198
13199 * var-tracking.c (struct shared_hash_def, shared_hash): New types.
13200 (dataflow_set): Change vars type from htab_t to shared_hash.
13201 (shared_hash_pool, empty_shared_hash): New variables.
13202 (vars_clear): Removed.
13203 (shared_hash_shared, shared_hash_htab, shared_hash_copy,
13204 shared_hash_find_slot_unshare, shared_hash_find_slot,
13205 shared_hash_find_slot_noinsert, shared_hash_find): New
13206 static inlines.
13207 (shared_hash_unshare, shared_hash_destroy): New functions.
13208 (unshare_variable): Unshare set->vars if shared, use
13209 shared_hash_htab.
13210 (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
13211 (get_init_value, find_src_set_src, dump_dataflow_set,
13212 clobber_variable_part, emit_notes_for_differences): Use
13213 shared_hash_htab.
13214 (dataflow_set_init): Remove second argument, set vars to
13215 empty_shared_hash instead of creating a new htab.
13216 (dataflow_set_clear): Call shared_hash_destroy and set vars
13217 to empty_shared_hash instead of calling vars_clear.
13218 (dataflow_set_copy): Don't call vars_copy, instead just share
13219 the src htab with dst.
13220 (variable_union): Use shared_hash_*, use initially NO_INSERT
13221 lookup if set->vars is shared. Don't keep slot cleared before
13222 calling unshare_variable. Unshare set->vars if needed.
13223 Even ->refcount == 1 vars must be unshared if set->vars is shared
13224 and var needs to be modified.
13225 (variable_canonicalize): New function.
13226 (dataflow_set_union): If dst->vars is empty, just share src->vars
13227 with dst->vars and traverse with variable_canonicalize to canonicalize
13228 and unshare what is needed.
13229 (dataflow_set_different): If old_set and new_set use the same shared
13230 htab, they aren't different. If number of htab elements is different,
13231 htabs are different. Use shared_hash_*.
13232 (dataflow_set_destroy): Call shared_hash_destroy instead of
13233 htab_delete.
13234 (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
13235 second argument to dataflow_set_init.
13236 (vt_initialize): Likewise. Initialize shared_hash_pool and
13237 empty_shared_hash, move bb in/out initialization afterwards.
13238 Use variable_htab_free instead of NULL as changed_variables del hook.
13239 (variable_was_changed): Change type of second argument to pointer to
13240 dataflow_set. When inserting var into changed_variables, bump
13241 refcount. Unshare set->vars if set is shared htab and slot needs to
13242 be cleared.
13243 (set_variable_part): Use shared_hash_*, use initially NO_INSERT
13244 lookup if set->vars is shared. Unshare set->vars if needed.
13245 Even ->refcount == 1 vars must be unshared if set->vars is shared
13246 and var needs to be modified. Adjust variable_was_changed caller.
13247 (delete_variable_part): Use shared_hash_*. Even ->refcount == 1
13248 vars must be unshared if set->vars is shared and var needs to be
13249 modified. Adjust variable_was_changed caller.
13250 (emit_note_insn_var_location): Don't pool_free var.
13251 (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
13252 instead of 1.
13253 (vt_finalize): Call htab_delete on empty_shared_hash->htab and
13254 free_alloc_pool on shared_hash_pool.
13255
13256 2009-06-20 Anthony Green <green@moxielogic.com>
13257
13258 * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
13259 * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
13260
13261 2009-06-20 Richard Guenther <rguenther@suse.de>
13262
13263 * tree-ssa-structalias.c (find_func_aliases): For memset use
13264 a constraint from NULL if we memset to zero.
13265 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
13266 we explicitly handle that do not read from memory.
13267 (call_may_clobber_ref_p_1): Properly handle builtins that may
13268 set errno.
13269
13270 2009-06-20 Richard Guenther <rguenther@suse.de>
13271
13272 PR tree-optimization/40495
13273 * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
13274 (new_scalar_tmp_constraint_exp): New function.
13275 (process_constraint): Do not create temporary decls.
13276 (process_all_all_constraints): Likewise.
13277 (handle_const_call): Likewise.
13278 (create_function_info_for): Do not set decl.
13279
13280 2009-06-19 Ian Lance Taylor <iant@google.com>
13281
13282 * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
13283 (rs6000_attribute_table): Make static; move before use.
13284
13285 2009-06-19 Eric Botcazou <ebotcazou@adacore.com>
13286
13287 * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
13288 <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
13289 Propagate the TREE_READONLY flag without overwriting it.
13290 (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
13291 Propagate the TREE_READONLY flag onto the result.
13292 (process_call_operands): Move around. Use correct constant value.
13293
13294 2009-06-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13295
13296 PR target/40482
13297 * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
13298 * config/arm/arm.md: Likewise.
13299
13300 2009-06-19 Ian Lance Taylor <iant@google.com>
13301
13302 * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
13303 to GIMPLE_ERROR_MARK.
13304
13305 * c-typeck.c (build_conditional_expr): Add op1_original_type and
13306 op2_original_type parameters. Warn about using different enum types.
13307 * c-parser.c (c_parser_conditional_expression): Pass original
13308 types to build_conditional_expr.
13309 * c-tree.h (build_conditional_expr): Update declaration.
13310
13311 2009-06-19 Ian Lance Taylor <iant@google.com>
13312
13313 * config/i386/i386.c (ix86_function_specific_save): Test that
13314 fields match values, rather than testing the values are in a
13315 certain range.
13316
13317 2009-06-19 Richard Guenther <rguenther@suse.de>
13318
13319 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
13320 ADDR_EXPR pointers.
13321 (ptr_derefs_may_alias_p): Likewise.
13322 (ptr_deref_may_alias_ref_p_1): New function.
13323 (ptr_deref_may_alias_ref_p): Likewise.
13324 (ref_maybe_used_by_call_p_1): Handle builtins that are not
13325 covered by looking at the ESCAPED solution.
13326 (call_may_clobber_ref_p_1): Likewise.
13327 * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
13328 Handle NULL_TREE offset. Do not produce redundant constraints.
13329 (process_all_all_constraints): New helper function.
13330 (do_structure_copy): Use it.
13331 (handle_lhs_call): Likewise.
13332 (find_func_aliases): Handle some builtins with pointer arguments
13333 and/or return values explicitly.
13334
13335 2009-06-19 Ian Lance Taylor <iant@google.com>
13336
13337 * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
13338
13339 2009-06-19 Ian Lance Taylor <iant@google.com>
13340
13341 * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
13342
13343 2009-06-19 Ian Lance Taylor <iant@google.com>
13344
13345 * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
13346 * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
13347 version.
13348
13349 * c-decl.c (finish_decl): If -Wc++-compat, warn about
13350 uninitialized const.
13351
13352 2009-06-19 Ian Lance Taylor <iant@google.com>
13353
13354 * dse.c (struct store_info): Rename bitmap field to bmap. Change
13355 all uses.
13356
13357 * c-decl.c (in_struct, struct_types): Remove.
13358 (struct c_binding): Add in_struct field.
13359 (c_binding_ptr): Define type, along with VEC.
13360 (struct c_struct_parse_info): Define.
13361 (struct_parse_info): New static variable.
13362 (bind): Initialize in_struct field.
13363 (start_struct): Remove enclosing_in_struct and
13364 enclosing_struct_types parameters. Add
13365 enclosing_struct_parse_info parameter. Change all callers. Set
13366 struct_parse_info rather than in_struct and struct_types.
13367 (grokfield): If -Wc++-compat and there is a symbol binding for the
13368 field name, set the in_struct flag and push it on the
13369 struct_parse_info->fields vector.
13370 (warn_cxx_compat_finish_struct): New static function.
13371 (finish_struct): Remove enclosing_in_struct and
13372 enclosing_struct_types parameters. Add
13373 enclosing_struct_parse_info parameter. Change all callers. Don't
13374 set C_TYPE_DEFINED_IN_STRUCT here. Call
13375 warn_cxx_compat_finish_struct. Free struct_parse_info and set to
13376 parameter. Only push on struct_types if warn_cxx_compat.
13377 (finish_enum): Only push on struct_types if warn_cxx_compat.
13378 (declspecs_add_type): Add loc parameter. Change all callers.
13379 Change all error calls to error_at. Pass loc, not input_location,
13380 to pedwarn calls. Warn if -Wc++-compat and a typedef name is
13381 defined in a struct. If -Wc++-compat and parsing a struct, record
13382 that a typedef name was used.
13383 * c-parser.c (c_parser_declspecs): Get location to pass to
13384 declspecs_add_type.
13385 (c_parser_struct_or_union_specifier): Update calls to start_struct
13386 and finish_struct.
13387 * c-tree.h (struct c_struct_parse_info): Declare.
13388 (finish_struct, start_struct): Update declarations.
13389 (declspecs_add_type): Update declaration.
13390
13391 2009-06-19 Ian Lance Taylor <iant@google.com>
13392
13393 * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
13394 variable with an anonymous type.
13395
13396 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
13397
13398 * see.c: Remove for real.
13399
13400 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
13401
13402 * optabs.h (enum optab_index): Add new OTI_significand.
13403 (significand_optab): Define corresponding macro.
13404 * optabs.c (init_optabs): Initialize significand_optab.
13405 * genopinit.c (optabs): Implement significand_optab using
13406 significand?f2 patterns.
13407 * builtins.c (expand_builtin_mathfn): Handle
13408 BUILT_IN_SIGNIFICAND{,F,L}.
13409 (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
13410 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
13411
13412 * config/i386/i386.md (significandxf2, significand<mode>2): New
13413 expanders to implement significandf, significand and significandl
13414 built-ins as inline x87 intrinsics.
13415
13416 2009-06-18 Anatoly Sokolov <aesok@post.ru>
13417
13418 * config/avr/avr.c (avr_override_options): Remove setting value of
13419 PARAM_INLINE_CALL_COST.
13420
13421 2009-06-18 Richard Henderson <rth@redhat.com>
13422
13423 PR 40488
13424 * tree-pass.h (TDF_ASMNAME): New.
13425 * tree-dump.c (dump_options): Add asmname.
13426 * doc/invoke.texi: Document it.
13427
13428 * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
13429 (dump_decl_name): ...here.
13430 (dump_function_name): New flags arg; mind TDF_ASMNAME.
13431 (dump_generic_node): Update dump_function_name calls.
13432 (print_call_name): New flags arg; update all dump calls.
13433 * diagnostic.h (print_call_name): Update.
13434 * gimple-pretty-print.c (dump_gimple_call): Update.
13435
13436 2009-06-18 H.J. Lu <hongjiu.lu@intel.com>
13437
13438 PR target/40470
13439 * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
13440
13441 2009-06-18 Diego Novillo <dnovillo@google.com>
13442
13443 * doc/plugins.texi: Document plugin_is_GPL_compatible.
13444 * plugin.c (str_license): Declare.
13445 (try_init_one_plugin): Assert that the symbol
13446 'plugin_is_GPL_compatible' exists.
13447
13448 2009-06-18 Sergei Dyshel <sergeid@il.ibm.com>
13449
13450 * see.c: Remove.
13451 * Makefile.in (OBJS-common): Remove see.o.
13452 (see.o): Remove.
13453 * common.opt (fsee): Mark as preserved for backward compatibility.
13454 * opts.c (common_handle_option): Add OPT_fsee to the backward
13455 compatibility section.
13456 * passes.c (init_optimization_passes, pass_see): Remove pass.
13457 * timevar.def (TV_SEE): Remove.
13458 * tree-pass.h (pass_see): Remove declaration.
13459 * doc/invoke.texi (-fsee): Remove documentation.
13460
13461 2009-06-18 Martin Jambor <mjambor@suse.cz>
13462
13463 * tree-sra.c: Include statistics.h
13464 (sra_stats): New variable.
13465 (sra_initialize): Clear sra_stats.
13466 (create_access_replacement): Increment sra_stats.replacements.
13467 (get_access_replacement): Do not return twice.
13468 (analyze_all_variable_accesses): Increment statistics counter by the
13469 number of scalarized aggregates.
13470 (generate_subtree_copies): Increment sra_stats.subtree_copies.
13471 (sra_modify_expr): Increment sra_stats.exprs.
13472 (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
13473 (sra_modify_assign): Increment sra_stats.exprs,
13474 sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
13475 (perform_intra_sra): Update statistics counters.
13476 * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
13477
13478 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
13479
13480 * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
13481 (arm_scalar_mode_supported_p): New function.
13482
13483 2009-06-18 Paul Brook <paul@codesourcery.com>
13484 Sandra Loosemore <sandra@codesourcery.com>
13485
13486 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
13487 (__extendhfsf2, __truncsfhf2): Define.
13488 * config/arm/fp16.c: New file.
13489 * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
13490 * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
13491
13492 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
13493
13494 * doc/extend.texi (Half-Precision): New section.
13495 * doc/invoke.texi (Option Summary): List -mfp16-format.
13496 (ARM Options): List neon-fp16 as -mfpu value. Document -mfp16-format.
13497 * config/arm/arm.opt (mfp16-format=): New.
13498 * config/arm/arm.c: Include intl.h.
13499 (TARGET_INVALID_PARAMETER_TYPE): Redefine.
13500 (TARGET_INVALID_RETURN_TYPE): Redefine.
13501 (TARGET_PROMOTED_TYPE): Redefine.
13502 (TARGET_CONVERT_TO_TYPE): Redefine.
13503 (arm_fp16_format): Define.
13504 (all_fpus): Add entry for neon-fp16.
13505 (fp_model_for_fpu): Likewise.
13506 (struct fp16_format): Declare.
13507 (all_fp16_formats): Define.
13508 (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
13509 functions.
13510 (arm_override_options): Set arm_fp16_format. Call sorry for fp16
13511 and no ldrh.
13512 (arm_legitimate_index_p): Treat HFmode like HImode.
13513 (thumb1_legitimate_address_p): Make it recognize HFmode constants.
13514 (coproc_secondary_reload_class): Special-case HFmode.
13515 (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
13516 (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
13517 (arm_init_fp16_builtins): New.
13518 (arm_init_builtins): Call it.
13519 (arm_invalid_parameter_type): New.
13520 (arm_invalid_return_type): New.
13521 (arm_promoted_type): New.
13522 (arm_convert_to_type).
13523 (arm_file_start): Deal with neon-fp16 as fpu_name. Emit tag for fp16
13524 format.
13525 (arm_emit_fp16_const): New function.
13526 (arm_mangle_type): Mangle __fp16 as "Dh".
13527 * config/arm/arm.h (TARGET_VFPD32): Make it know about
13528 FPUTYPE_NEON_FP16.
13529 (TARGET_NEON_FP16): New.
13530 (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
13531 (enum fputype): Add FPUTYPE_NEON_FP16.
13532 (enum arm_fp16_format_type): Declare.
13533 (arm_fp16_format): Declare.
13534 (LARGEST_EXPONENT_IS_NORMAL): Define.
13535 * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
13536 * config/arm/arm-modes.def (HFmode): Define.
13537 * config/arm/vfp.md (*movhf_vfp): New.
13538 (extendhfsf2): New.
13539 (truncsfhf2): New.
13540 * config/arm/arm.md (fpu): Add neon_fp16.
13541 (floatsihf2, floatdihf2): New.
13542 (fix_trunchfsi2, fix_trunchfdi2): New.
13543 (truncdfhf2): New.
13544 (extendhfdf2): New.
13545 (movhf): New.
13546 (*arm32_movhf): New.
13547 (*thumb1_movhf): New.
13548 (consttable_2): Add check for HFmode constants.
13549 (consttable_4): Handle HFmode constants.
13550
13551 2009-06-18 Uros Bizjak <ubizjak@gmail.com>
13552
13553 * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
13554
13555 2009-06-17 Olivier Hainque <hainque@adacore.com>
13556
13557 * collect2.c (main): Use CONST_CAST2 to perform char ** to
13558 const char ** conversion in AIX specific section.
13559
13560 2009-06-17 H.J. Lu <hongjiu.lu@intel.com>
13561
13562 * config/i386/i386.c (ix86_special_builtin_type): Remove
13563 UINT64_FTYPE_PINT. Add UINT64_FTYPE_PUNSIGNED.
13564 (bdesc_special_args): Updated.
13565 (ix86_init_mmx_sse_builtins): Likewise.
13566 (ix86_expand_special_args_builtin): Likewise.
13567
13568 2009-06-17 Richard Henderson <rth@redhat.com>
13569
13570 * tree-pretty-print.c (maybe_dump_asm_name): New.
13571 (dump_decl_name): Use it.
13572 (PRINT_FUNCTION_NAME): Merge into...
13573 (dump_function_name): ... here. Use maybe_dump_asm_name.
13574
13575 2009-06-17 Cary Coutant <ccoutant@google.com>
13576
13577 * dbxout.c (dbxout_source_line): Add is_stmt parameter.
13578 Change caller.
13579 * debug.c (struct gcc_debug_hooks): Change placeholder for
13580 source_line hook.
13581 (debug_nothing_int_charstar_int): Replaced by...
13582 (debug_nothing_int_charstar_int_bool): ...this.
13583 * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
13584 source_line prototype.
13585 (debug_nothing_int_charstar_int): Replaced by...
13586 (debug_nothing_int_charstar_int_bool): ...this.
13587 * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
13588 * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
13589 Output is_stmt operand when necessary.
13590 * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
13591 (notice_source_line): Add is_stmt parameter.
13592 * sdbout.c (sdbout_source_line): Add is_stmt parameter.
13593 * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
13594 Change callers.
13595 * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
13596 * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
13597
13598 2009-06-17 Ian Lance Taylor <iant@google.com>
13599
13600 * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
13601 Change all uses.
13602 (struct store_by_pieces_d): Rename from store_by_pieces. Change
13603 call uses.
13604
13605 2009-06-17 Adam Nemet <anemet@caviumnetworks.com>
13606
13607 * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
13608 STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
13609 tree_strip_sign_nop_conversions and
13610 tree_ssa_strip_useless_type_conversions rather than stripping
13611 the operations here.
13612 (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
13613 Declare them.
13614 * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
13615 * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
13616 * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
13617 tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
13618 functions.
13619
13620 2009-06-17 Michael Eager <eager@eagercon.com>
13621
13622 * config/rs6000/constraints.md (register_constraint "d"): New.
13623 * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
13624 truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
13625 *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
13626 *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
13627 trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
13628 divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
13629 fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
13630 * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
13631 __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
13632 __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
13633 __fctiwz): Same.
13634 * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
13635 *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
13636 *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
13637 *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
13638 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
13639 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
13640 stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
13641 *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
13642 *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
13643 trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
13644 *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
13645 *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
13646 *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
13647 * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
13648
13649 2009-06-16 Ian Lance Taylor <iant@google.com>
13650
13651 * profile.c (total_num_never_executed): Don't define.
13652 (compute_branch_probabilities): Don't count or print
13653 num_never_executed.
13654 (init_branch_prob): Don't set total_num_never_executed.
13655 (end_branch_prob): Don't print total_num_never_executed.
13656
13657 2009-06-17 David Daney <ddaney@caviumnetworks.com>
13658
13659 * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
13660
13661 2009-06-17 David Edelsohn <edelsohn@gnu.org>
13662
13663 * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
13664 (nabstd2_fpr): Same.
13665
13666 2009-06-17 Steve Ellcey <sje@cup.hp.com>
13667
13668 * expr.c (expand_assignment): Change complex type check.
13669
13670 2009-06-17 Basile Starynkevitch <basile@starynkevitch.net>
13671
13672 * doc/plugins.texi (Building GCC plugins): Added new section.
13673
13674 2009-06-17 Ian Lance Taylor <iant@google.com>
13675
13676 * c-pch.c (get_ident): Don't set size of templ array.
13677 (pch_init): Don't set size of partial_pch array.
13678
13679 * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
13680 string constant to intialize an array whose size is the length of
13681 the string.
13682
13683 2009-06-17 Richard Guenther <rguenther@suse.de>
13684
13685 PR tree-optimization/40389
13686 * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
13687 to addressable types.
13688 * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
13689
13690 2009-06-17 Richard Guenther <rguenther@suse.de>
13691
13692 PR middle-end/40460
13693 * tree-chrec.h (build_polynomial_chrec): If we cannot determine
13694 if there is no evolution of left in the loop bail out.
13695 * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
13696 chrec_fold_multiply.
13697
13698 2009-06-16 J"orn Rennecke <joern.rennecke@arc.com>
13699 Janis Johnson <janis187@us.ibm.com>
13700
13701 PR target/39254
13702 * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
13703 for the symbol ref of a constant that is the source of a move
13704 - nor for any other not-obvious-label-ref constants.
13705
13706 2009-06-16 Olatunji Ruwase <tjruwase@google.com>
13707
13708 * plugin.c (position_pass): Skip newly inserted pass during list
13709 traversal to avoid repeated insertion.
13710
13711 2009-06-16 Ian Lance Taylor <iant@google.com>
13712
13713 * vec.h (VEC_stack_alloc): Define different version if
13714 GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
13715 (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
13716 (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
13717 (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
13718
13719 2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
13720
13721 * config.gcc (extra_headers): Add ia32intrin.h for x86.
13722
13723 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
13724 IX86_BUILTIN_BSRDI. IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
13725 IX86_BUILTIN_RDTSCP. IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
13726 IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
13727 (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
13728 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13729 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13730 (bdesc_special_args): Add __builtin_ia32_rdtsc and
13731 __builtin_ia32_rdtscp.
13732 (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
13733 __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
13734 and __builtin_ia32_rorhi.
13735 (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
13736 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
13737 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
13738 (ix86_expand_args_builtin): Likewise.
13739 (ix86_expand_special_args_builtin): Likewise.
13740
13741 * config/i386/i386.md (UNSPECV_RDTSCP): New.
13742 (UNSPECV_RDTSC): Likewise.
13743 (UNSPECV_RDPMC): Likewise.
13744 (*bsr): Renamed to ...
13745 (bsr): This
13746 (*bsr_rex64): Renamed to ...
13747 (bsr_rex64): This.
13748 (rdpmc): New.
13749 (*rdpmc): Likewise.
13750 (*rdpmc_rex64): Likewise.
13751 (rdtsc): Likewise.
13752 (*rdtsc): Likewise.
13753 (*rdtsc_rex64): Likewise.
13754 (rdtscp): Likewise.
13755 (*rdtscp): Likewise.
13756 (*rdtscp_rex64): Likewise.
13757
13758 * config/i386/ia32intrin.h: New.
13759
13760 * config/i386/x86intrin.h: Include <ia32intrin.h>.
13761
13762 2009-06-16 Ian Lance Taylor <iant@google.com>
13763
13764 * ira-build.c (copy_info_to_removed_store_destinations):
13765 Initialize parent_a.
13766
13767 2009-06-16 Ian Lance Taylor <iant@google.com>
13768
13769 * c-decl.c (grokdeclarator): Change size_varies to bool.
13770
13771 2009-06-16 Ian Lance Taylor <iant@google.com>
13772
13773 * sel-sched.c: Make forward declarations of move_op_hooks and
13774 fur_hooks explicitly extern.
13775
13776 2009-06-16 Ian Lance Taylor <iant@google.com>
13777
13778 * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
13779 * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
13780
13781 2009-06-16 Ian Lance Taylor <iant@google.com>
13782
13783 * resource.c (mark_referenced_resources): Change
13784 include_delayed_effects parameter to bool. Change all callers.
13785 (mark_end_of_function_resources): Likewise.
13786 * reorg.c (insn_references_resource_p): Likewise.
13787 (insn_sets_resource_p): Likewise.
13788 * resource.h (mark_referenced_resources): Update declaration.
13789 (mark_end_of_function_resources): Update declaration.
13790
13791 2009-06-16 David Edelsohn <edelsohn@gnu.org>
13792
13793 * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
13794
13795 2009-06-16 David Edelsohn <edelsohn@gnu.org>
13796
13797 * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
13798 GCC can bootstrap on AIX with GNU Binutils 2.20.
13799
13800 2009-06-16 Ian Lance Taylor <iant@google.com>
13801
13802 * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
13803
13804 2009-06-16 Ian Lance Taylor <iant@google.com>
13805
13806 * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
13807 inline, not extern inline.
13808 (exact_log2): Likewise.
13809 * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
13810 test CLZ_HWI.
13811 (exact_log2): Likewise, but don't test CTZ_HWI.
13812
13813 2009-06-16 Ian Lance Taylor <iant@google.com>
13814
13815 * bitmap.c (bitmap_clear): Don't declare as inline.
13816 * gimple.c (gimplify_assign): Likewise.
13817 * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
13818 * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
13819 (sched_scan_info): Remove duplicate definition.
13820
13821 2009-06-16 Ian Lance Taylor <iant@google.com>
13822
13823 * c-common.c (skip_evaluation): Don't define.
13824 (c_inhibit_evaluation_warnings): Define global variable.
13825 (overflow_warning): Check c_inhibit_evaluation_warnings rather
13826 than skip_evaluation.
13827 (convert_and_check, warn_for_div_by_zero): Likewise.
13828 * c-common.h (skip_evaluation): Don't declare.
13829 (c_inhibit_evaluation_warnings): Declare.
13830 * c-parser.c (c_parser_typeof_specifier): Set
13831 c_inhibit_evaluation_warnings rather than skip_evaluation.
13832 (c_parser_conditional_expression): Likewise.
13833 (c_parser_binary_expression): Likewise.
13834 (c_parser_sizeof_expression): Likewise.
13835 (c_parser_alignof_expression): Likewise.
13836 * c-typeck.c (build_indirect_ref): Check
13837 c_inhibit_evaluation_warnings rather than skip_evaluation.
13838 (build_conditional_expr, build_binary_op): Likewise.
13839
13840 2009-06-16 Richard Guenther <rguenther@suse.de>
13841
13842 * tree-ssa-alias.c (is_escape_site): Remove.
13843 * tree-ssa-alias.h (enum escape_type): Remove.
13844 (is_escape_site): Likewise.
13845 * tree-ssa-structalias.c (find_func_aliases): Handle escapes
13846 via casts and asms without deferring to is_escape_site.
13847
13848 2009-06-16 Jakub Jelinek <jakub@redhat.com>
13849
13850 PR middle-end/40446
13851 * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
13852 use gen_lowpart if op0 has complex mode.
13853
13854 2009-06-16 Richard Guenther <rguenther@suse.de>
13855
13856 * tree-ssa-structalias.c (do_ds_constraint): Stores in global
13857 variables add them to ESCAPED.
13858 (find_func_aliases): Do not make all indirectly stored values escaped.
13859
13860 2009-06-16 Rafael Avila de Espindola <espindola@google.com>
13861
13862 * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
13863 make_decl_one_only.
13864
13865 2009-06-16 Martin Jambor <mjambor@suse.cz>
13866
13867 PR tree-optimization/40432
13868 * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
13869 check whether we need to force gimple register operand.
13870
13871 2009-06-16 Martin Jambor <mjambor@suse.cz>
13872
13873 PR tree-optimization/40413
13874 * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
13875 build_ref_for_offset.
13876 (propagate_subacesses_accross_link): Fix a typo in a comment.
13877
13878 2009-06-16 Ira Rosen <irar@il.ibm.com>
13879
13880 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
13881 with additional parameter.
13882 * tree-vectorizer.h (enum vect_def_type): Add new value
13883 vect_nested_cycle.
13884 (enum vect_relevant): Add comments.
13885 (vect_is_simple_reduction): Add new argument.
13886 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
13887 Detect nested cycles.
13888 (vect_is_simple_reduction): Update documentation, add an argument to
13889 distinguish inner-loop reduction from nested cycle, detect nested
13890 cycles, fix printings and indentation, don't swap operands in case
13891 of nested cycle.
13892 (get_initial_def_for_reduction): Handle subtraction.
13893 (vect_create_epilog_for_reduction): Add new argument to specify
13894 reduction variable.
13895 (vect_finalize_reduction): Handle subtraction, fix comments.
13896 (vectorizable_reduction): Handle nested cycles. In case of nested
13897 cycle keep track of the reduction variable position. Call
13898 vect_is_simple_reduction with additional parameter. Use original
13899 statement code in reduction epilogue for nested cycle. Call
13900 vect_create_epilog_for_reduction with additional parameter.
13901 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
13902 inner-loop vectorization.
13903 (vect_recog_widen_sum_pattern): Likewise.
13904 * tree-vect-stmts.c (process_use): Distinguish between nested cycles
13905 and reductions.
13906 (vect_mark_stmts_to_be_vectorized): Likewise.
13907 (vect_get_vec_def_for_operand): Handle nested cycles.
13908
13909 2009-06-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
13910
13911 * doc/invoke.texi (Debugging Options): Fix option index entries
13912 for -fdump-statistics, -frandom-seed add entries for
13913 -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
13914 (FRV Options): Fix entries for -mTLS, -mtls.
13915 (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
13916 (i386 and x86-64 Options): Fix entry for -mno-red-zone.
13917 (M68hc1x Options): Fix @itemx for -mnominmax.
13918 (MCore Options): Fix entry for -mno-lsim.
13919 (MMIX Options): Fix entry for -mabi=mmixware.
13920 (PDP-11 Options): Fix entry for -mbcopy-builtin.
13921
13922 2009-06-16 Basile Starynkevitch <basile@starynkevitch.net>
13923
13924 * doc/plugins.texi (Interacting with the GCC Garbage Collector):
13925 Mention the plugin mode of gengtype.
13926 * doc/gty.texi (Source Files Containing Type Information): Likewise.
13927 * gengtype.c: Updated copyright.
13928 (plugin_files, nb_plugin_files) Added new static variables.
13929 (measure_input_list) Care about plugin_files.
13930 (write_rtx_next): Added early return in plugin mode.
13931 (create_file): Updated copyright year in generated file. Added
13932 asserts.
13933 (oprintf): Added early return if NULL outf.
13934 (get_output_file_with_visibility): Care of plugin_files.
13935 (get_output_file_name): May return null.
13936 (write_local): Added early return.
13937 (put_mangled_filename): Ditto.
13938 (finish_root_table): Added check for base_files.
13939 (write_roots): Care about null when plugins.
13940 (main): Added plugin mode.
13941
13942 2009-06-15 Ian Lance Taylor <iant@google.com>
13943
13944 * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
13945 * gcov.c (read_count_file): Add braces around variables declared
13946 before label.
13947
13948 * c.opt (Wjump-misses-init): New warning.
13949 * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
13950 -Wall and -Wc++-compat if not already set.
13951 (c_common_post_options): Clear warn_jump_misses_init if it was not
13952 set.
13953 * c-decl.c (struct c_binding): Change type field to a union with
13954 new label field. Make it the first field in the struct. Update
13955 references to type to use u.type instead.
13956 (struct c_spot_bindings): Define.
13957 (struct c_goto_bindings): Define.
13958 (c_goto_bindings_p): Define, along with VECs.
13959 (struct c_label_vars): Define.
13960 (struct c_scope): Add has_label_bindings field.
13961 (bind_label, set_spot_bindings): New static functions.
13962 (decl_jump_unsafe, update_spot_bindings): New static functions.
13963 (update_label_decls): New static function.
13964 (pop_scope): Call update_label_decls. Don't call c_end_vm_scope.
13965 Update binding u.label field to shadowed field.
13966 (c_binding_start_stmt_expr): New function.
13967 (c_binding_end_stmt_expr): New function.
13968 (pushdecl): Don't call c_begin_vm_scope.
13969 (make_label): Add defining and p_label_vars parameters. Change
13970 all callers.
13971 (lookup_label): Correct test for whether a label has not yet been
13972 defined. Call bind_label rather than bind.
13973 (warn_about_goto): New static function.
13974 (lookup_label_for_goto): New function.
13975 (declare_label): Call bind_label rather than bind.
13976 (check_earlier_gotos): New static function.
13977 (define_label): Don't give errors about jumping into statement
13978 expressions or scopes of variably modified types. Call
13979 set_spot_bindings and check_earlier_gotos. Call bind_label
13980 instead of bind. Don't set label_context_stack_se or
13981 label_context_stack_vm.
13982 (c_get_switch_bindings): New function.
13983 (c_release_switch_bindings): New function.
13984 (c_check_switch_jump_warnings): New function.
13985 (start_function): Don't set label_context_stack_se or
13986 label_context_stack_vm.
13987 (finish_function): Likewise.
13988 * c-typeck.c (label_context_stack_se): Don't define.
13989 (label_context_stack_vm): Don't define.
13990 (c_finish_goto_label): Call lookup_label_for_goto rather than
13991 lookup_label. Don't give errors about jumping into a statement
13992 expression or the scope of a variably modified type. Don't set
13993 label_context_stack_se or label_context_stack_vm.
13994 (struct c_switch): Remove blocked_stmt_expr and blocked_vm
13995 fields. Add bindings field.
13996 (c_start_case): Don't set deleted fields. Set bindings field.
13997 (do_case): Rework order of tests. Don't check blocked_stmt_expr
13998 or blocked_vm. Call c_check_switch_jump_warnings.
13999 (c_finish_case): Don't test blocked_stmt_expr field. Call
14000 c_release_switch_bindings.
14001 (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
14002 c_switch_stack. Don't walk label_context_stack_se labels. Don't
14003 set label_context_stack_se. Call c_bindings_start_stmt_expr.
14004 (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
14005 c_switch_stack. Don't walk label_context_stack_se labels. Don't
14006 set label_context_stack_se. Call c_bindings_end_stmt_expr.
14007 (c_begin_vm_scope, c_end_vm_scope): Don't define.
14008 * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
14009 (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
14010 (C_DECL_UNJUMPABLE_VM): Don't define.
14011 (C_DECL_UNDEFINABLE_VM): Don't define.
14012 (struct c_label_list): Don't define.
14013 (struct c_label_context_se): Don't define.
14014 (struct c_label_context_vm): Don't define.
14015 (struct c_spot_bindings): Declare.
14016 (c_bindings_start_stmt_expr): Declare.
14017 (c_bindings_end_stmt_expr): Declare.
14018 (lookup_label_for_goto): Declare.
14019 (c_get_switch_bindings, c_release_switch_bindings): Declare.
14020 (c_check_switch_jump_warnings): Declare.
14021 (label_context_stack_se, label_context_stack_vm): Don't declare.
14022 (c_finish_goto_label): Update declaration.
14023 (c_begin_vm_scope, c_end_vm_scope): Don't declare.
14024 * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
14025 (Warning Options): Document -Wjump-misses-init.
14026
14027 2009-06-15 Jakub Jelinek <jakub@redhat.com>
14028
14029 * tree-object-size.c (addr_object_size): Fix a pasto in the last
14030 change.
14031
14032 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
14033
14034 * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
14035
14036 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
14037
14038 * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
14039
14040 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
14041
14042 * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
14043
14044 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
14045
14046 * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
14047 Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
14048 * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
14049 * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
14050 * dwarf2asm.c (dw2_force_const_mem): Update call to
14051 make_decl_one_only.
14052 * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
14053 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
14054 * langhooks.c (lhd_comdat_group): Remove.
14055 * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
14056 * tree.h (DECL_COMDAT_GROUP): New.
14057 (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
14058 (tree_decl_with_vis): Add comdat_group. Remove one_only.
14059 (make_decl_one_only): Change signature.
14060 * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
14061 make_decl_one_only.
14062 (make_decl_one_only): Change signature.
14063 (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
14064
14065 2009-06-15 Richard Guenther <rguenther@suse.de>
14066
14067 PR middle-end/40439
14068 * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
14069
14070 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
14071
14072 * tree-ssa-math-opts.c: Remove extra divide.
14073
14074 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
14075
14076 * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
14077
14078 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
14079
14080 * passes.c: Add bswap pass.
14081 * tree-pass.h: Add pass_optimize_bswap declaration.
14082 * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
14083 Include rtl.h, expr.h and optabs.h for optab_handler check.
14084 (struct symbolic_number, pass_optimize_bswap): New definition.
14085 (do_shift_rotate, verify_symbolic_number_p): New functions.
14086 (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
14087 (gate_optimize_bswap): New function.
14088 * tree.c (widest_int_cst_value): New function.
14089 * tree.h (widest_int_cst_value): Prototype added.
14090
14091 2009-06-14 Steven Bosscher <steven@gcc.gnu.org>
14092
14093 * cfgcleanup.c (old_insns_match_p): Remove code to substitute
14094 REG_EQUAL/REG_EQUIV notes.
14095
14096 2009-06-14 Richard Guenther <rguenther@suse.de>
14097
14098 PR middle-end/40389
14099 * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
14100 has its address taken if NRV was applied and it is addressable.
14101 * tree-ssa-structalias.c (get_constraint_for_address_of): New
14102 function split out from ...
14103 (get_constraint_for_1): ... here.
14104 (handle_rhs_call): Use it to mark the return slot escaped if
14105 it is addressable and NRV was applied.
14106
14107 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
14108
14109 * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
14110 Change first argument type to location_t.
14111 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
14112 Do not set input_location.
14113 Use loc instead of input_location throughout.
14114
14115 2009-06-13 Richard Guenther <rguenther@suse.de>
14116
14117 PR tree-optimization/40421
14118 * tree-predcom.c (should_unroll_loop_p): Remove.
14119 (tree_predictive_commoning_loop): Use can_unroll_loop_p.
14120
14121 2009-06-13 Michael Meissner <meissner@linux.vnet.ibm.com>
14122
14123 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14124 Add location argument.
14125
14126 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
14127
14128 * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
14129 build_decl.
14130 * config/s390/s390.c (s390_build_builtin_va_list): Same.
14131 (s390_gimplify_va_arg): Pass location to create_artificial_label.
14132 * config/spu/spu-protos.h: Add location to
14133 spu_resolve_overloaded_builtin.
14134 * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
14135 spu_build_builtin_va_list.
14136 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
14137 argument. Pass location to build_function_call_vec.
14138 * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
14139 build_decl.
14140 (emit_fpu_switch): Same.
14141 (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
14142 * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
14143 to build_decl and create_artificial_label.
14144 (xtensa_gimplify_va_arg_expr): Same.
14145 * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
14146 (xstormy16_gimplify_va_arg_expr): Same.
14147 * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
14148 * config/arm/arm.c (arm_build_builtin_va_list): Same.
14149 * config/mips/mips.c (mips_build_builtin_va_list): Same.
14150 (mips16_build_function_stub): Same.
14151 (mips16_build_call_stub): Same.
14152
14153 2009-06-13 Richard Earnshaw <rearnsha@arm.com>
14154
14155 PR target/40327
14156 * arm/constraints.md (Pa, Pb): New constraints.
14157 * arm/arm.md (thumb1_addsi3): Support more complex additions. Add a
14158 split pattern to deal with them.
14159
14160 2009-06-13 Joerg Sonnenberger <joerg@britannica.bec.de>
14161
14162 * doc/invoke.texi: Add missing option -Wp,OPTION in list,
14163 fix index entry for -Xpreprocessor.
14164
14165 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
14166
14167 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14168 Add location argument to build_decl call.
14169 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
14170 (rs6000_init_builtins): Same.
14171 (spe_init_builtins): Same.
14172 (rs6000_gimplify_va_arg): Add location argument to
14173 create_artificial_label call.
14174
14175 2009-06-12 Steven Bosscher <steven@gcc.gnu.org>
14176
14177 * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
14178 * combine-stack-adj.c (pass_stack_adjustments): Use it.
14179 * Makefile.in: Fix GGC dependency for gcse.o.
14180
14181 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
14182
14183 * tree-pretty-print.c (dump_generic_node): Dump column numbers.
14184 * gimple-pretty-print.c (dump_gimple_stmt): Same.
14185 * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
14186 created.
14187 * c-parser.c (c_parser_binary_expression): Use current column while
14188 building binary operations.
14189 * common.opt (fshow-column): Enable by default.
14190 * tree-vrp.c (check_array_ref): Use warning_at.
14191 (check_array_bounds): Use location from call back if expr has no
14192 location.
14193 * tree.h: Add location argument to maybe_fold_*.
14194 * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
14195 (maybe_fold_offset_to_array_ref): Add location argument and use it.
14196 (maybe_fold_offset_to_component_ref): Same.
14197 (maybe_fold_offset_to_reference): Same.
14198 (maybe_fold_offset_to_address): Same.
14199 (maybe_fold_stmt_indirect): Same.
14200 (maybe_fold_stmt_addition): Same.
14201 (fold_stmt_r): Pass location to maybe_fold_*.
14202 (fold_gimple_assign): Same.
14203 * c-tree.h: Add location argument to finish_decl,
14204 default_function_array_conversion, store_init_value.
14205 * c-decl.c (define_label): Use error_at.
14206 (c_make_fname_decl): Pass location to finish_decl.
14207 (finish_decl): New location argument.
14208 (build_compound_literal): Pass location to store_init_value.
14209 (grokdeclarator): Pass location to finish_decl.
14210 (grokfield): Same.
14211 * c-typeck.c (array_to_pointer_conversion): New location argument.
14212 (function_to_pointer_conversion): Same.
14213 (default_function_array_conversion): Same.
14214 (parser_build_unary_op): Pass location to overflow_warning.
14215 (parser_build_binary_op): Same. Use warning_at.
14216 (build_unary_op): Pass location to array_to_pointer_conversion.
14217 (build_c_cast): Pass location to digest_init.
14218 (build_modify_expr): New location argument.
14219 (convert_for_assignment): Same.
14220 (store_init_value): Same.
14221 (digest_init): Same.
14222 (output_init_element): Pass location to digest_init and
14223 array_to_pointer_conversion.
14224 (c_finish_return): Pass location to convert_for_assignment.
14225 * gimplify.c (gimplify_conversion): Pass location to
14226 maybe_fold_offset_to_address.
14227 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
14228 to maybe_fold_stmt_addition.
14229 * c-omp.c (c_finish_omp_atomic): Pass new location to
14230 build_modify_expr.
14231 (c_finish_omp_for): Same.
14232 * c-common.c (overflow_warning): New argument.
14233 * c-common.h: New argument to build_modify_expr, overflow_warning.
14234 * c-parser.c (c_parser_declaration_or_fndef): Pass location to
14235 finish_decl.
14236 (c_parser_initializer): Pass location to
14237 default_function_array_conversion.
14238 (c_parser_initelt): Same.
14239 (c_parser_initval): Same.
14240 (c_parser_asm_operands): Same.
14241 (c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
14242 (c_parser_conditional_expression): Same.
14243 (c_parser_binary_expression): Add location info to stack. Use it.
14244 (c_parser_unary_expression): Pass location to
14245 default_function_array_conversion, parser_build_unary_op,
14246 build_indirect_ref, c_parser_postfix_expression_after_primary.
14247 (c_parser_postfix_expression_after_primary): New location argument.
14248 Use it.
14249 (c_parser_expression_conv): Pass location to
14250 default_function_array_conversion.
14251 (c_parser_expr_list): Same.
14252 (c_parser_omp_atomic): Same.
14253 (c_parser_omp_for_loop): Same.
14254 * c-tree.h (struct c_declarator): Add comment to id_loc.
14255 (build_array_declarator): New argument.
14256 * c-decl.c (build_array_declarator): Add location argument.
14257 (grokdeclarator): Set id_loc for cdk_array.
14258 * c-parser.c (c_parser_direct_declarator_inner): Pass location to
14259 build_array_declarator.
14260 * tree.c (build_omp_clause): Add location argument.
14261 * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
14262 (OMP_CLAUSE_LOCATION): New macro.
14263 (struct tree_omp_clause): Add location field.
14264 (build_omp_clause): Add argument.
14265 * testsuite/gcc.dg/gomp/for-1.c: Fix column.
14266 * cp/pt.c (tsubst_omp_for_iterator): Pass location to
14267 build_omp_clause.
14268 * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
14269 (cp_parser_omp_clause_collapse): Same.
14270 (cp_parser_omp_clause_default): Same.
14271 (cp_parser_omp_clause_if): Same.
14272 (cp_parser_omp_clause_nowait): Same.
14273 (cp_parser_omp_clause_num_threads): Same.
14274 (cp_parser_omp_clause_ordered): Same.
14275 (cp_parser_omp_clause_schedule): Same.
14276 (cp_parser_omp_clause_untied): Same.
14277 (cp_parser_omp_for_loop): Same.
14278 (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14279 * c-tree.h (c_start_case): Add location argument.
14280 (c_process_expr_stmt): Same.
14281 (c_finish_goto_*): Same.
14282 * tree-parloops.c (initialize_reductions): Pass location to
14283 build_omp_clause.
14284 (create_parallel_loop): Same.
14285 * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
14286 (gfc_trans_omp_reduction_list): Same.
14287 (gfc_trans_omp_clauses): Same.
14288 (gfc_trans_omp_do): Same.
14289 * c-typeck.c (c_finish_goto_label): Same.
14290 (c_finish_goto_ptr): New location argument.
14291 (c_start_case): Same.
14292 (emit_side_effect_warnings): Same.
14293 (c_process_expr_stmt): Same.
14294 (c_finish_stmt_expr): Same.
14295 (c_finish_omp_clauses): Use error_at instead of error.
14296 * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
14297 build_omp_clause.
14298 * c-omp.c (c_split_parallel_clauses): New location argument.
14299 * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
14300 to build_omp_clause.
14301 (convert_local_reference_stmt): Same.
14302 (convert_gimple_call): Same.
14303 * c-common.h (c_split_parallel_clauses): New argument.
14304 * c-parser.c (c_parser_statement_after_labels): Pass location to
14305 c_finish_goto_label.
14306 (c_parser_switch_statement): Pass location to c_start_case.
14307 (c_parser_for_statement): Pass location to c_finish_expr_stmt,
14308 and c_process_expr_stmt.
14309 (c_parser_omp_variable_list): Add location argument.
14310 (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
14311 (c_parser_omp_clause_default): Same.
14312 (c_parser_omp_clause_if): Same.
14313 (c_parser_omp_clause_num_threads): Same.
14314 (-c_parser_omp_clause_ordered): Same.
14315 (c_parser_omp_clause_reduction): Pass location to
14316 c_parser_omp_variable_list.
14317 (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
14318 (c_parser_omp_clause_untied): Same.
14319 (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
14320 (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
14321
14322 * c-tree.h (check_for_loop_decls, undeclared_variable,
14323 build_component_ref, build_array_ref, build_external_ref,
14324 c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
14325 build_conditional_expr, build_compound_expr, c_cast_expr,
14326 build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
14327 c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
14328 argument.
14329 * c-semantics.c (build_stmt): Same.
14330 (build_case_label): Same.
14331 * c-decl.c (c_finish_incomplete_decl): Pass location on down.
14332 (undeclared_variable): New argument.
14333 (make_label): Same.
14334 (lookup_label): Pass location on down.
14335 (define_label): Same.
14336 (finish_decl): Same.
14337 (build_compound_literal): Same.
14338 (finish_struct): Same.
14339 (finish_function): Do not set location here.
14340 (check_for_loop_decls): New argument.
14341 * tree.c (save_expr): Set location.
14342 (build_empty_stmt): New argument.
14343 * tree.h (build_empty_stmt): New argument to build_empty_stmt.
14344 (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
14345 * builtins.c (gimplify_va_arg_expr): Use locations.
14346 (expand_builtin_sync_operation): Same.
14347 * c-typeck.c (build_component_ref): New argument.
14348 (build_array_ref): Same.
14349 (build_external_ref): Same.
14350 (c_expr_sizeof_expr): Same.
14351 (c_expr_sizeof_type): Same.
14352 (parser_build_unary_op): Same.
14353 (build_conditional_expr): Same.
14354 (build_compound_expr): Pass location on down.
14355 (build_compound_expr): New argument.
14356 (build_c_cast): Same.
14357 (c_cast_expr): Same.
14358 (build_asm_expr): Same.
14359 (c_finish_return): Same.
14360 (c_process_expr_stmt): Pass location on down.
14361 (c_finish_stmt_expr): New argument.
14362 (push_clenaup): Same.
14363 (c_finish_omp_parallel): Same.
14364 (c_finish_omp_task): Same.
14365 * gimplify.c (gimplify_call_expr): Pass location on down.
14366 * c-omp.c (c_finish_omp_master): New argument.
14367 (c_finish_omp_critical): Same.
14368 (c_finish_omp_ordered): Same.
14369 (c_finish_omp_barrier): Same.
14370 (-c_finish_omp_taskwait): Same.
14371 (c_finish_omp_atomic): Same.
14372 (c_finish_omp_flush): Same.
14373 * tree-inline.c (copy_tree_body_r): Pass location on down.
14374 (inline_forbidden_p): Remove use of input_location.
14375 * c-gimplify.c (c_build_bind_expr): New argument.
14376 * c-common.c (c_common_truthvalue_conversion): Pass location on down.
14377 (c_sizeof_or_alignof_type): New argument.
14378 (c_alignof_expr): Same.
14379 (build_va_arg): Same.
14380 (c_add_case_label): Same.
14381 * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
14382 c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
14383 c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
14384 c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
14385 c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
14386 c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
14387 New argument.
14388 * stub-objc.c (objc_build_selector_expr): Same.
14389 (objc_build_throw_stmt): Same.
14390 * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
14391 (c_parser_initelt): Same.
14392 (c_parser_compound_statement): Same.
14393 (c_parser_compound_statement_nostart): Same.
14394 (c_parser_label): Same.
14395 (c_parser_statement_after_labels): Same.
14396 (c_parser_if_body): Same.
14397 (c_parser_else_body): Same.
14398 (c_parser_if_statement): Same.
14399 (c_parser_switch_statement): Same.
14400 (c_parser_while_statement): Same.
14401 (c_parser_do_statement): Same.
14402 (c_parser_for_statement): Same.
14403 (c_parser_asm_statement): Same.
14404 (c_parser_conditional_expression): Same.
14405 (c_parser_binary_expression): Same.
14406 (c_parser_cast_expression): Same.
14407 (c_parser_unary_expression): Same.
14408 (c_parser_sizeof_expression): Same.
14409 (c_parser_alignof_expression): Same.
14410 (c_parser_postfix_expression): Same.
14411 (c_parser_expression): Same.
14412 (c_parser_objc_receiver): Same.
14413 (c_parser_omp_variable_list): Same.
14414 (c_parser_omp_structured_block): Same.
14415 (c_parser_omp_atomic): New argument.
14416 (c_parser_omp_barrier): Same.
14417 (c_parser_omp_critical): Same.
14418 (c_parser_omp_flush): Pass location on down.
14419 (c_parser_omp_for_loop): New argument.
14420 (c_parser_omp_for): Same.
14421 (c_parser_omp_master): Same.
14422 (c_parser_omp_ordered): Same.
14423 (c_parser_omp_sections_scope): Same.
14424 (c_parser_omp_sections): Same.
14425 (c_parser_omp_parallel): Same.
14426 (c_parser_omp_single): Same.
14427 (c_parser_omp_task): Same.
14428 (c_parser_omp_taskwait): Pass location on down.
14429 (c_parser_omp_construct): Same.
14430 (c_parser_omp_threadprivate): Same.
14431 * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
14432 builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
14433 tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
14434 c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
14435 c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
14436 emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
14437 rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
14438 tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
14439 config/i386/i386.c, stmt.c:
14440 Add location argument to the following function definitions and/or
14441 function calls: build_decl, objcp_start_struct, objcp_finish_struct,
14442 start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
14443 cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
14444 build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
14445 do_case, c_finish_bc_stmt, build_compound_literal,
14446 build_function_call.
14447 * c-decl.c (build_compound_literal): Add location argument.
14448 Make all diagnostic calls use location.
14449 (start_struct): Same.
14450 (finish_struct): Same.
14451 (start_enum): Same.
14452 (build_enumerator): Same.
14453 (start_function): Same.
14454 (grokdeclarator): Make all diagnostic calls use location.
14455 (store_parm_decls_oldstyle): Same.
14456 * c-typeck.c (build_function_call): Add location argument.
14457 Make all diagnostic calls use location.
14458 (do_case): Same.
14459 (c_finish_bc_stmt): Same.
14460 * tree-nested.c (get_trampoline_type): Add argument.
14461 Pass location to build_decl.
14462 (lookup_tramp_for_decl): Pass location to get_trampoline_type.
14463 * rtl.h (RTL_LOCATION): New.
14464 * c-common.c (c_add_case_label): Add location argument.
14465 Make all diagnostic calls use location.
14466 * c-common.h: Add location argument to make_fname_decl, do_case,
14467 c_add_case_label, build_function_call, resolve_overloaded_builtin.
14468 * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
14469 Set it appropriately for every case. Pass enum_loc to start_enum
14470 call. Pass value_loc first to build_enumerator. Pass enum_loc to
14471 parser_xref_tag.
14472 (c_parser_struct_or_union_specifier): Save location. Use it for
14473 start_struct, finish_struct, and parser_xref_tag.
14474
14475 2009-06-12 Ian Lance Taylor <iant@google.com>
14476
14477 * fold-const.c (fold_unary): Rename local variable and to and_expr.
14478
14479 * c-opts.c (c_common_handle_option): For -Wc++-compat set
14480 cpp_opts->warn_cxx_operator_names.
14481
14482 2009-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
14483
14484 PR tree-opt/38865
14485 * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
14486 is returns NULL and OP is a VCE, look through the VCE.
14487
14488 2009-06-12 Ian Lance Taylor <iant@google.com>
14489
14490 PR bootstrap/40430
14491 * collect2.c (main): Use CONST_CAST2 in code inside #if
14492 LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
14493
14494 2009-06-12 Joey Ye <joey.ye@intel.com>
14495
14496 PR middle-end/39146
14497 * cfgexpand.c (get_decl_align_unit): Update
14498 max_used_stack_slot_alignment with align instead of
14499 stack_alignment_needed.
14500
14501 * function.c (assign_stack_local_1): Update
14502 max_used_stack_slot_alignment with alignment_in_bits instead
14503 of stack_alignment_needed.
14504 (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
14505 here.
14506
14507 2009-06-12 Jakub Jelinek <jakub@redhat.com>
14508
14509 * dwarf2out.c (last_var_location_insn): New variable.
14510 (dwarf2out_end_epilogue): Clear last_var_location_insn.
14511 (dwarf2out_var_location): Don't record anything after last real
14512 insn. Only change labels if there were any real instructions
14513 in between last note and this one, or if changed sections.
14514
14515 2009-06-11 Richard Henderson <rth@redhat.com>
14516
14517 * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
14518 note when storing the frame pointer in a register.
14519 (FRP): Don't redefine to nothing for epilogue.
14520 (alpha_expand_epilogue): Mark register and sp restores.
14521 (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
14522
14523 * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
14524 when gen_lowpart is needed.
14525
14526 2009-06-11 Richard Henderson <rth@redhat.com>
14527
14528 * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
14529
14530 * dwarf2out.c (need_data_align_sf_opcode): New.
14531 (div_data_align): Move earlier.
14532 (def_cfa_1, reg_save): Use it.
14533
14534 2009-06-11 H.J. Lu <hongjiu.lu@intel.com>
14535
14536 * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
14537 (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
14538 (ix86_handle_option): Handle OPT_mcrc32.
14539 (ix86_target_string): Add -mcrc32.
14540 (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
14541
14542 * config/i386/i386.h (TARGET_CRC32): New.
14543
14544 * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
14545 (sse4_2_crc32di): Likewise.
14546
14547 * config/i386/i386.opt (mcrc32): New.
14548
14549 * doc/invoke.texi: Document -mcrc32.
14550
14551 2009-06-11 Richard Henderson <rth@redhat.com>
14552
14553 * common.opt (gdwarf-): Accept a version number.
14554 * doc/invoke.texi (gdwarf-): Update docs.
14555 * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
14556 * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
14557 version level, and record it.
14558
14559 * dwarf2.h (DW_CIE_VERSION): Remove.
14560 * dwarf2out.c (DWARF_VERSION): Remove.
14561 (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
14562 (output_call_frame_info): Use CIE version 3 for dwarf3,
14563 or if the return register column is out of range for version 1.
14564 (dwarf_stack_op_name): Add all dwarf3 values.
14565 (DEBUG_PUBTYPES_SECTION): New.
14566 (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
14567 encoding change for dwarf3.
14568 (output_die) [dw_val_class_die_ref]: Likewise.
14569 (output_compilation_unit_header): Emit correct version for dwarf3.
14570 (output_line_info): Likewise.
14571 (output_pubnames): Update for DWARF_VERSION removal.
14572 (output_aranges): Likewise.
14573 (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
14574 (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
14575 (dwarf2out_finish): Likewise.
14576
14577 2009-06-11 David Daney <ddaney@caviumnetworks.com>
14578
14579 * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
14580 in r148403.
14581
14582 2009-06-11 David Daney <ddaney@caviumnetworks.com>
14583
14584 PR c/39252
14585 * doc/extend.texi ( __builtin_unreachable): Document new builtin.
14586 * builtins.c (expand_builtin_unreachable): New function.
14587 (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
14588 * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
14589 * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
14590 successors.
14591 * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
14592 searching for missing barriers.
14593
14594 2009-06-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
14595
14596 * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
14597 when -fprofile-generate* was passed.
14598 * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
14599
14600 2009-06-11 Anthony Green <green@moxielogic.com>
14601
14602 * config/moxie/moxie.md: Define length attribute for all instructions.
14603 (rCC): Define.
14604 (*b<cond:code>): Support limited branch ranges for new PC-relative
14605 branch instructions.
14606 * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
14607
14608 2009-06-11 Jakub Jelinek <jakub@redhat.com>
14609
14610 * config/i386/i386.c (min_insn_size): Use get_attr_length
14611 for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
14612 For __asm return 0.
14613
14614 * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
14615 instead of emit_insn_before.
14616
14617 2009-06-10 Ian Lance Taylor <iant@google.com>
14618
14619 PR bootstrap/40408
14620 * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
14621 GIMPLE_SWITCH.
14622
14623 2009-06-10 Revital Eres <eres@il.ibm.com>
14624
14625 * passes.c (init_optimization_passes): Reschedule
14626 predictive-commoning pass before complete unroll pass.
14627
14628 2009-06-10 Martin Jambor <mjambor@suse.cz>
14629
14630 * cgraph.c (cgraph_node_can_be_local_p): New function.
14631 (cgraph_make_node_local): New function.
14632 * cgraph.h (cgraph_node_can_be_local_p): Declare.
14633 (cgraph_make_node_local): Declare.
14634
14635 2009-06-10 Nathan Froyd <froydnj@codesourcery.com>
14636
14637 * tree.h (tree_base): Add packed_flag and user_align fields.
14638 Decrease size of spare field.
14639 (TYPE_USER_ALIGN): Use user_align from tree_base.
14640 (DECL_USER_ALIGN): Likewise.
14641 (TYPE_PACKED): Use packed_flag from tree_base.
14642 (DECL_PACKED): Likewise.
14643 (tree_type): Delete packed_flag and user_align fields. Widen
14644 precision field. Widen mode field and shuffle fields to align
14645 mode on an 8-bit boundary.
14646 (tree_decl_common): Delete decl_flag_1 and user_align fields.
14647 Renumber decl_flag_* fields. Fix comments. Widen
14648 decl_common_unused field.
14649 (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
14650 (DECL_EXTERNAL): Likewise.
14651 (DECL_BIT_FIELD): Likewise.
14652 (DECL_NONADDRESSABLE_P): Likewise.
14653 (TYPE_DECL_SUPRESS_DEBUG): Likewise.
14654 * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
14655
14656 2009-06-10 Ian Lance Taylor <iant@google.com>
14657
14658 * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
14659 (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
14660 (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
14661 (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
14662 (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
14663 DEF_VEC_ALLOC_FUNC_P.
14664 (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
14665 (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
14666 DEF_VEC_ALLOC_FUNC_O.
14667 (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
14668 (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
14669 DEF_VEC_ALLOC_FUNC_I.
14670 (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
14671 (vec_stack_p_reserve_exact_1): Declare.
14672 (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
14673 (vec_stack_free): Declare.
14674 (VEC_stack_alloc): Define.
14675 (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
14676 (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
14677 (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
14678 * vec.c (void_p): New type. Call DEF_VEC_P and DEF_VEC_ALLOC_P
14679 for void_p.
14680 (stack_vecs): New static variable.
14681 (vec_stack_p_reserve_exact_1): New function.
14682 (vec_stack_o_reserve_1): New static function.
14683 (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
14684 (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
14685 (vec_stack_free): New function.
14686 * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
14687 (VEC_df_ref_stack_alloc): Define.
14688 (df_mw_hardreg_ptr): New type. Use DEF_VEC_P and
14689 DEF_VEC_ALLOC_P_STACK.
14690 (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
14691 (struct df_collection_rec): Change _vec fields to VEC. Remove
14692 _use fields.
14693 (df_free_collection_rec): Adjust for new fields.
14694 (df_insn_rescan): Use new df_collection_rec fields.
14695 (df_notes_rescan, df_canonize_collection_rec): Likewise.
14696 (df_ref_create_structure, df_ref_record): Likewise.
14697 (df_get_conditional_uses, df_get_call_refs): Likewise.
14698 (df_insn_refs_collect, df_bb_refs_collect): Likewise.
14699 (df_bb_refs_record, df_record_entry_block_defs): Likewise.
14700 (df_record_exit_block_uses, df_bb_verify): Likewise.
14701 (df_swap_refs): Change ref_vec parameter to VEC. Change all callers.
14702 (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
14703 Remove count parameter. Change return type to void. Change all
14704 callers.
14705 (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
14706 Remove count parameter. Change return type to void. Change all
14707 callers.
14708 (df_install_refs): Change old_vec parameter to VEC. Remove count
14709 parameter. Change all callers.
14710 (df_install_mws): Change old_vec parameter to VEC. Remove count
14711 parameter. Change all callers.
14712 (df_refs_verify): Change new_rec parameter to VEC. Change call
14713 callers.
14714 (df_mws_verify): Likewise.
14715
14716 2009-06-10 Alexandre Oliva <aoliva@redhat.com>
14717
14718 * gcc.c (compare_files): Cast munmap argumento to caddr_t.
14719
14720 2009-06-10 H.J. Lu <hongjiu.lu@intel.com>
14721
14722 * doc/extend.texi: Add description for __builtin_ia32_crc32di.
14723
14724 2009-06-10 Anthony Green <green@moxielogic.com>
14725
14726 * config/moxie/crti.asm: New file.
14727 * config/moxie/crtn.asm: New file.
14728 * config/moxie/moxie.c: New file.
14729 * config/moxie/moxie.h: New file.
14730 * config/moxie/sfp-machine.h: New file.
14731 * config/moxie/moxie-protos.h: New file.
14732 * config/moxie/t-moxie: Created.
14733 * config/moxie/t-moxie-softfp: Created.
14734 * config/moxie/moxie.md: Created.
14735 * config/moxie/constraints.md: Created.
14736 * config.gcc: Add moxie support.
14737 * doc/md.texi (Machine Constraints): Add moxie constraints.
14738 * doc/contrib.texi (Contributors): Mention moxie port.
14739 * doc/install.texi (Specific): Mention the moxie port.
14740
14741 2009-06-09 Ian Lance Taylor <iant@google.com>
14742
14743 * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
14744 compiling with C++.
14745 * optabs.c (optab_table): Only use designated initializers if
14746 HAVE_DESIGNATED_INITIALIZERS is defined.
14747 (convert_optab_table): Likewise.
14748 (init_optabs): Always call init_insn_codes if
14749 HAVE_DESIGNATED_INITIALIZERS is not defined.
14750
14751 2009-06-09 Ian Lance Taylor <iant@google.com>
14752
14753 * targhooks.c (default_builtin_vectorized_function): Change fn
14754 parameter to unsigned int.
14755 (default_builtin_vectorized_conversion): Change code parameter to
14756 unsigned int.
14757 (default_builtin_reciprocal): Change fn parameter to unsigned int.
14758 * targhooks.h: Update declarations.
14759 * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
14760 parameter to unsigned int.
14761
14762 * c-typeck.c (comptypes_check_enum_int): New static function.
14763 (comptypes_internal): Add enum_and_int_p parameter. Change all
14764 callers.
14765 (comp_target_types): Add location parameter. Change all callers.
14766 (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
14767 Change all callers.
14768 (function_types_compatible_p, type_lists_compatible_p): Likewise.
14769 (build_conditional_expr): Add colon_loc parameter. Change all
14770 callers.
14771 (convert_for_assignment): Add location parameter. Change all callers.
14772 * c-parser.c (c_parser_conditional_expression): Pass location of
14773 colon to build_conditional_expr.
14774 * c-tree.h (build_conditional_expr): Update declaration.
14775
14776 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
14777
14778 * graphite.c: Revert previous patch.
14779
14780 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
14781
14782 PR bootstrap/40103
14783 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
14784
14785 2009-06-09 Ghassan Shobaki <ghassan.shobaki@amd.com>
14786
14787 * tree-ssa-loop-prefetch.c
14788 (loop_prefetch_arrays): Fixed a portability problem in printf format
14789 string.
14790
14791 2009-06-09 Martin Jambor <mjambor@suse.cz>
14792
14793 PR tree-optimization/40351
14794 * tree-sra.c (propagate_subacesses_accross_link): Check that a
14795 refrence to a potential artifical subaccess can be constructed.
14796
14797 2009-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
14798
14799 * config/sh/sh-protos.h (sh_optimization_options): Declare.
14800 (sh_override_options): Likewise.
14801 * config/sh/sh.c: Include params.h.
14802 (sh_optimization_options): New.
14803 (sh_override_options): Likewise.
14804 * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
14805 (OVERRIDE_OPTIONS): Use sh_override_options.
14806
14807 2009-06-08 Jakub Jelinek <jakub@redhat.com>
14808
14809 * dwarf2out.c (emit_cfa_remember): New variable.
14810 (add_fde_cfi): If emit_cfa_remember, recurse to add
14811 DW_CFA_remember_state first.
14812 (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
14813 instead just set emit_cfa_remember.
14814
14815 2009-06-08 Jan Hubicka <jh@suse.cz>
14816
14817 PR debug/40126
14818 * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
14819
14820 2009-06-08 Jan Hubicka <jh@suse.cz>
14821
14822 PR middle-end/39834
14823 * cgraphunit.c (save_inline_function_body): Do not copy transform
14824 hooks for saved inline bodies.
14825 * ipa-passes.c (do_per_function): Do not add the hoks multiple times
14826 for given function.
14827
14828 2009-06-08 Adam Nemet <anemet@caviumnetworks.com>
14829
14830 * jump.c (returnjump_p): Handle delayed branches. Add missing
14831 function comment.
14832
14833 2009-06-08 Jan Hubicka <jh@suse.cz>
14834
14835 PR middle-end/40102
14836 * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
14837 original node might've been modified.
14838 * tree-inline.c (copy_bb): Do not assume that all clones are the same.
14839
14840 2009-06-08 Jakub Jelinek <jakub@redhat.com>
14841
14842 * tree-object-size.c (addr_object_size): Add OSI argument.
14843 Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
14844 (compute_builtin_object_size, expr_object_size): Adjust callers.
14845 (plus_stmt_object_size): Call addr_object_size instead of
14846 compute_builtin_object_size.
14847
14848 2009-06-08 Ghassan Shobaki <ghassan.shobaki@amd.com>
14849 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
14850
14851 * tree-ssa-loop-prefetch.c
14852 (gather_memory_references): Introduced a counter for the number of
14853 memory references.
14854 (anything_to_prefetch_p): Introduced a counter for the number of
14855 prefetches.
14856 (is_loop_prefetching_profitable): New function with a cost model
14857 for prefetching.
14858 (loop_prefetch_arrays): Use the new cost model to determine if
14859 prefetching is profitable.
14860 * params.def (MIN_INSN_TO_PREFETCH_RATIO,
14861 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14862 * params.h (MIN_INSN_TO_PREFETCH_RATIO,
14863 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14864 * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
14865 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
14866
14867 2009-06-08 Michael Matz <matz@suse.de>
14868
14869 PR debug/40012
14870 * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
14871 partitions use the same.
14872 (expand_one_var): Deal with DECL_RTL sometimes begin set also
14873 for basevars of SSA_NAMEs.
14874 (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
14875 to not expand them twice.
14876 (gimple_expand_cfg): Clear DECL_RTL for those decls that have
14877 multiple places.
14878
14879 2009-06-08 Alexandre Oliva <aoliva@redhat.com>
14880
14881 * common.opt (fcompare-debug=, fcompare-debug-second): New.
14882 (fdump-final-insns=, gtoggle): New.
14883 * doc/invoke.texi: Document them.
14884 * final.c (rest_of_clean_state): Dump final insn stream.
14885 * gcc.c (invoke_as): Hook in -fcompare-debug.
14886 (static_spec_functions): Add compare-debug-dump-opt,
14887 compare-debug-self-opt and compare-debug-auxbase-opt.
14888 (compare_debug, compare_debug_second, compare_debug_opt): New.
14889 (switches_debug_check, n_switches_debug_check): New.
14890 (debug_auxbase_opt, debug_check_temp_file): New.
14891 (process_command): Handle -fno-compare-debug, -fcompare-debug and
14892 -fcompare-debug=*.
14893 (do_self_spec): Handle arguments after switches.
14894 (do_spec_1): Add .gk extension to temp file basenames for compare.
14895 (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
14896 (cc1_options): Use it instead of normal auxbase computation for
14897 the second compare-debug compilation.
14898 (compare_files): New.
14899 (main): Set up and implement compare debug mode.
14900 (compare_debug_dump_opt_spec_function): New.
14901 (compare_debug_self_opt_spec_function): New.
14902 (compare_debug_auxbase_opt_spec_function): New.
14903 * toplev.c (process_options): Handle flag_gtoggle,
14904 flag_dump_final_insns.
14905 * coverage.c (coverage_begin_output): Don't overwrite .gcno file
14906 during -fcompare-debug-second compilation.
14907
14908 2009-06-07 Ian Lance Taylor <iant@google.com>
14909
14910 * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
14911 * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
14912
14913 * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
14914 with no default node. Change warning with %H to warning_at.
14915 Don't clear warn_switch around case checking.
14916 * doc/invoke.texi (Warning Options): Clarify distinction between
14917 -Wswitch and -Wswitch-enum.
14918
14919 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14920
14921 * tree-pass.h (TODO_update_ssa_any): Document internal use only.
14922
14923 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14924
14925 * gbl-ctors.h: Add header guard.
14926
14927 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14928
14929 * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
14930 sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
14931 vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
14932 vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
14933 prototypes for removed functions.
14934 (expressions_equal_p): Move to ...
14935 * tree-ssa-sccvn.h: ... here and ...
14936 * matrix-reorg.c: ... adjust includes.
14937
14938 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14939
14940 * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
14941
14942 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14943
14944 * c-decl.c (finish_decl): Use bool for variable was_incomplete.
14945 (finish_function): Remove erroneous whitespace.
14946
14947 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14948
14949 * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
14950 (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
14951
14952 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14953
14954 * errors.c (internal_error): Commentary typo fix.
14955 * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
14956 * tree-ssa-pre.c: Ditto.
14957
14958 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
14959
14960 * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
14961 them is supposed to hold actual statements.
14962
14963 2009-06-06 Ian Lance Taylor <iant@google.com>
14964
14965 * doc/extend.texi (Attribute Syntax): Document that C++ labels on
14966 empty statements can now have attributes.
14967
14968 2009-06-05 Shujing Zhao <pearly.zhao@oracle.com>
14969
14970 * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
14971 * config/mips/mips.md: Ditto.
14972
14973 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
14974
14975 * config/rs6000/eabi.asm (__eabi_convert): Don't define if
14976 _RELOCATABLE.
14977 (__eabi_uconvert): Likewise.
14978
14979 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
14980
14981 * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
14982 CFI_* definitions with IN_GCC.
14983
14984 2009-06-05 David Edelsohn <edelsohn@gnu.org>
14985
14986 * xcoffout.h (xcoffout_source_line): Update prototype.
14987
14988 2009-06-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14989
14990 * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
14991 mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
14992
14993 2009-06-05 Jakub Jelinek <jakub@redhat.com>
14994
14995 PR middle-end/40340
14996 * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
14997 inlined_function_outer_scope_p blocks for artificial inlines
14998 even at -g0/-g1.
14999 * tree.c (tree_nonartificial_location): Rewrite using
15000 block_nonartificial_location.
15001
15002 2009-06-05 Revital Eres <eres@il.ibm.com>
15003 Leehod Baruch <leehod@il.ibm.com>
15004
15005 * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
15006 (expand_expr_real_1): Remove comment.
15007 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
15008 Vectorize misaligned access when the target supports it.
15009 (vect_supportable_dr_alignment): Check for unaligned access support.
15010 * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
15011 and remove asset.
15012
15013 2009-06-05 Julian Brown <julian@codesourcery.com>
15014
15015 * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
15016 * config/arm/ieee754-sf.S (cmpsf2): Likewise.
15017
15018 2009-06-05 Richard Guenther <rguenther@suse.de>
15019
15020 PR bootstrap/40350
15021 * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
15022 as possibly unused.
15023
15024 2009-06-05 Jakub Jelinek <jakub@redhat.com>
15025
15026 * config/s390/s390.c (global_not_special_regno_p): New static inline.
15027 (save_gprs): Don't tell unwinder when a global register is saved.
15028 (s390_emit_epilogue): Emit needed epilogue unwind info.
15029
15030 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
15031
15032 * dwarf2out.c (deferred_asm_name): New.
15033 (add_name_and_src_coords_attributes): Defer creation of
15034 DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
15035 computed yet.
15036 (move_linkage_attr): New.
15037 (dwarf2out_finish): Revisit deferrals and emit attributes at the
15038 right place.
15039
15040 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
15041
15042 * tree-nested.c (finalize_nesting_tree_1): Declare the
15043 frame_decl in the binding tree.
15044
15045 2009-06-04 Cary Coutant <ccoutant@google.com>
15046
15047 * basic-block.h (struct basic_block_def): Add discriminator field.
15048 * dbxout.c (dbxout_source_line): Add new parameter. Change all
15049 callers.
15050 * debug.c (do_nothing_debug_hooks): Add additional entry.
15051 (debug_nothing_int_charstar_int): New function.
15052 * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
15053 (debug_nothing_int_charstar_int): New declaration.
15054 * dwarf2out.c (dwarf2out_source_line): Add new parameter. Write
15055 discriminator value in .loc directive.
15056 * final.c (last_discriminator): New variable.
15057 (discriminator): New variable.
15058 (final_start_function): Initialize above variables, pass current
15059 discriminator to debug hook.
15060 (notice_source_line): Check for discriminator change.
15061 * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
15062 * sdbout.c (sdbout_source_line): New parameter.
15063 * tree-cfg.c (struct locus_discrim_map): New structure type.
15064 (discriminator_per_locus): New hash table.
15065 (build_gimple_cfg): Allocate and free discriminator hash table.
15066 (make_edges): Call assign_discriminator.
15067 (locus_map_hash): New function.
15068 (locus_map_eq): New function.
15069 (next_discriminator_for_locus): New function.
15070 (same_line_p): New function.
15071 (assign_discriminator): New function.
15072 (make_cond_expr_edges): Call assign_discriminator.
15073 (make_gimple_switch_edges): Likewise.
15074 (first_non_label_stmt): New function.
15075 * vmsdbgout.c (vmsdbgout_source_line): Add new parameter. Change
15076 all callers.
15077 * xcoffout.c (xcoffout_source_line): Add new parameter.
15078
15079 * configure.ac (gcc_cv_as_discriminator): New configury check for
15080 gas support for discriminator.
15081 * configure: Regenerate.
15082 * config.in: Regenerate.
15083
15084 2009-06-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
15085
15086 * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
15087 val after checking for integers.
15088
15089 2009-06-04 Uros Bizjak <ubizjak@gmail.com>
15090
15091 * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
15092 X64_REGPARM_MAX.
15093 (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
15094 (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
15095 (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
15096 * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
15097 X64_REGPARM_MAX. Use X86_64_MS_SSE_REGPARM_MAX instead of
15098 X64_SSE_REGPARM_MAX.
15099 * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
15100 X64_SSE_REGPARM_MAX.
15101
15102 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
15103
15104 * gcc.c (report_times_to_file): New.
15105 (execute): Implement it.
15106 (process_command): Support -time=.
15107 * doc/invoke.texi: Document it.
15108
15109 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
15110
15111 * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
15112 that have value exprs.
15113
15114 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
15115
15116 * dwarf2asm.c (dw2_force_const_mem): Defer creation of
15117 declarations for constants until...
15118 (dw2_output_indirect_constant_1): ... this point.
15119
15120 2009-06-04 Richard Earnshaw <rearnsha@arm.com>
15121
15122 PR target/10242
15123 * arm.md (arm_addsi3): Don't try to split an add with an
15124 eliminable register until after reload has completed.
15125
15126 2009-06-03 Ian Lance Taylor <iant@google.com>
15127
15128 * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
15129 * genattrtab.c (write_length_unit_log): Likewise.
15130 * genchecksum.c (dosum): Likewise.
15131 * gengtype.c (write_rtx_next): Likewise.
15132 (finish_root_table, write_roots): Likewise.
15133 * gimple.c (gimple_ops_offset_): Likewise.
15134 * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
15135 * config/arc/arc.c (arc_attribute_table): Likewise.
15136 * config/arm/arm.c (arm_attribute_table): Likewise.
15137 * config/avr/avr.c (avr_attribute_table): Likewise.
15138 * config/crx/crx.c (crx_attribute_table): Likewise.
15139 * config/m32r/m32r.c (m32r_attribute_table): Likewise.
15140 * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
15141 * config/mcore/mcore.c (mcore_attribute_table): Likewise.
15142 * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
15143 * config/sh/sh.c (sh_attribute_table): Likewise.
15144 * config/sparc/sparc.c (sparc_attribute_table): Likewise.
15145 * config/spu/spu.c (spu_attribute_table): Likewise.
15146 * config/v850/v850.c (v850_attribute_table): Likewise.
15147
15148 * config/alpha/alpha.c (vms_attribute_table): Make static.
15149 * config/bfin/bfin.c (bfin_attribute_table): Likewise.
15150 * config/h8300/h8300.c (h8300_attribute_table): Likewise.
15151 * config/mips/mips.c (mips_attribute_table): Likewise.
15152
15153 * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
15154 $(SYSTEM_H).
15155 (cc1-checksum.o): Likewise.
15156
15157 2009-06-03 Steve Ellcey <sje@cup.hp.com>
15158
15159 * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
15160
15161 2009-06-03 Jakub Jelinek <jakub@redhat.com>
15162
15163 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
15164 insn if it is changing sp. Use gen_add3_insn instead of
15165 conditionally gen_addsi3 and gen_adddi3.
15166 (offset_below_red_zone_p): New static inline function.
15167 (rs6000_emit_epilogue): Emit needed epilogue unwind info.
15168 Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
15169 * config/rs6000/ppc-asm.h: Include auto-host.h.
15170 (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
15171 CFI_RESTORE): Define.
15172 * config/rs6000/crtresxgpr.asm: Add unwind info.
15173 * config/rs6000/crtresxfpr.asm: Likewise.
15174 * config/rs6000/crtresgpr.asm: Likewise.
15175 * config/rs6000/crtresfpr.asm: Likewise.
15176 * config/rs6000/crtsavgpr.asm: Likewise.
15177 * config/rs6000/crtsavfpr.asm: Likewise.
15178
15179 * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
15180 argument of DWARF2_FRAME_REG_OUT macros.
15181
15182 2009-06-03 Julian Brown <julian@codesourcery.com>
15183
15184 * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
15185 words or less (including TImode) in core registers.
15186
15187 2009-06-03 Richard Guenther <rguenther@suse.de>
15188
15189 PR middle-end/40328
15190 * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
15191
15192 2009-06-03 Andrey Belevantsev <abel@ispras.ru>
15193
15194 * statistics.c (statistics_counter_event): Do not record event
15195 in pass dump if its number == -1.
15196 (curr_statistics_hash): Add assert that we never get passes
15197 with static number == -1.
15198
15199 2009-06-03 Richard Guenther <rguenther@suse.de>
15200 Andrey Belevantsev <abel@ispras.ru>
15201
15202 * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
15203 non-BLKmode arrays addressable.
15204
15205 2009-06-03 Maxim Kuvyrkov <maxim@codesourcery.com>
15206
15207 * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
15208 * config/m68k/m68k.h: ... here.
15209
15210 2009-06-03 Martin Jambor <mjambor@suse.cz>
15211
15212 PR tree-optimization/40323
15213 * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
15214 assignment.
15215
15216 2009-06-03 Richard Guenther <rguenther@suse.de>
15217
15218 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15219 consistently.
15220
15221 2009-06-03 Shujing Zhao <pearly.zhao@oracle.com>
15222
15223 * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
15224 JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
15225 JUMP_TABLE_DATA_P where applicable.
15226 * config/sh/sh.c: Ditto.
15227 * config/sh/sh.h: Ditto.
15228 * config/sh/sh.md: Ditto.
15229 * config/sh/symbian.c: Ditto.
15230
15231 2009-06-03 Uros Bizjak <ubizjak@gmail.com>
15232
15233 * config/i386/driver-i386.c (describe_cache): Optimize
15234 concatenation of strings. Use snprintf instead of sprintf.
15235 (host_detect_local_cpu): Ditto. Ignore -march and -mtune for native
15236 target when not compiling with GCC.
15237
15238 2009-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
15239
15240 * config/sh/sh.c: Revert last change.
15241 (sh_expand_epilogue): Emit a blockage insn before the frame
15242 pointer adjustment unconditionally.
15243
15244 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
15245
15246 * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
15247 * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
15248 * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
15249 * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
15250 to COLLECT_GCC_OPTIONS.
15251
15252 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
15253
15254 * collect2.c (target_system_root): New variable.
15255 (main): Handle --sysroot=.
15256 (ignore_library): Strip the sysroot from the library path.
15257
15258 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
15259
15260 * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
15261 (collect2.o): Depend on collect2-aix.h.
15262 (collect2-aix.o): New rule.
15263 * collect2-aix.h: New file.
15264 * collect2-aix.c: Likewise.
15265 * collect2.c: Include collect2-aix.h. Don't undefine
15266 OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
15267 Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
15268 Use TARGET_AIX_VERSION instead of _AIX51.
15269 * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
15270 * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
15271 * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
15272 * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
15273 * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
15274
15275 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
15276
15277 * collect2.c (ignore_library): Avoid premature post-increment
15278 and null deference.
15279
15280 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
15281
15282 * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
15283 * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
15284 !CROSS_DIRECTORY_STRUCTURE alternative and use it for
15285 CROSS_DIRECTORY_STRUCTURE too.
15286 (LINK_LIBG_SPEC): Likewise.
15287 (LIB_SPEC): Add %R to sysroot paths.
15288 * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
15289 (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
15290 * config/rs6000/aix51.h: As for aix43.h.
15291 * config/rs6000/aix52.h: Likewise.
15292 * config/rs6000/aix53.h: Likewise.
15293 * config/rs6000/aix61.h: Likewise.
15294 * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
15295 to the beginning of sysroot paths.
15296
15297 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15298
15299 * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
15300 INSN_LISTs that are out of the REG_NOTE range.
15301
15302 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15303
15304 * loop-unroll.c (struct iv_to_split): Add pointer to next.
15305 (struct var_to_expand): Likewise.
15306 (struct opt_info): Add head and tail for linked lists of the above.
15307 (analyze_insn_to_expand_var): Initialize next.
15308 (analyze_iv_to_split_insn): Likewise.
15309 (analyze_insns_in_loop): Create linked lists.
15310 (allocate_basic_variable): Simplify for use without hash table.
15311 (insert_var_expansion_initialization): Likewise, make it type-safer.
15312 (combine_var_copies_in_loop_exit): Likewise.
15313 (apply_opt_in_copies): Walk lists rather than hash tables.
15314 (release_var_copies): Simplified and inlined by hand into...
15315 (free_opt_info): ... this function.
15316
15317 2009-06-02 Richard Guenther <rguenther@suse.de>
15318
15319 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
15320 for field decls.
15321
15322 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15323
15324 * cfgexpand.c (gimple_expand_cfg): Discard the source location
15325 only for builtins that are not overridden.
15326
15327 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15328
15329 * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
15330 label string.
15331
15332 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15333
15334 * df-core.c (df_ref_debug): Honor -fdump-noaddr.
15335
15336 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15337
15338 * combine.c (move_deaths): Compare LUIDs within the same BB only.
15339
15340 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
15341
15342 * common.opt (fdump-unnumbered-links): New.
15343 * doc/invoke.texi (-fdump-unnumbered-links): Document it.
15344 * print-rtl.c (flag_dump_unnumbered_links): New.
15345 (print_rtx): Test it.
15346
15347 2009-06-02 Richard Earnshaw <rearnsha@arm.com>
15348
15349 * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
15350 push/pop multiple to 8-byte alignment.
15351
15352 2009-06-01 Jakub Jelinek <jakub@redhat.com>
15353
15354 * config/i386/i386.c (queued_cfa_restores): New static variable.
15355 (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
15356 functions.
15357 (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
15358 (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
15359 Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
15360 Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
15361 note unconditionally.
15362 (ix86_emit_restore_regs_using_mov): Likewise.
15363 (ix86_emit_restore_sse_regs_using_mov): Likewise.
15364 (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
15365 it through to ix86_emit_restore_reg_using_pop.
15366 (ix86_emit_leave): Add RED_OFFSET argument. Call
15367 ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
15368 instead of adding REG_CFA_OFFSET note unconditionally.
15369 (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
15370 the above functions. Call ix86_add_queued_cfa_restore_notes when
15371 needed.
15372
15373 * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
15374 force output of the label even for dwarf2out_do_cfi_asm.
15375 (add_fde_cfi): If -g2 and above and cfi might change CFA,
15376 force creation of CFI label and chain DW_CFA_set_loc jumping to it
15377 for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
15378 caller.
15379 (dwarf2out_stack_adjust, dwarf2out_frame_debug,
15380 dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
15381 dwarf2out_cfi_label callers.
15382 * tree.h (dwarf2out_cfi_label): Adjust prototype.
15383 * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
15384 Adjust dwarf2out_cfi_label callers.
15385 * config/vax/vax.c (vax_output_function_prologue): Likewise.
15386
15387 * config/i386/i386.h (struct machine_cfa_state,
15388 struct machine_function): Guard with ifndef USED_FOR_TARGET
15389 instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
15390
15391 PR other/40024
15392 * emutls.c (__emutls_get_address): Change arr->size to mean number
15393 of allocated arr->data entries instead of # of slots + 1.
15394
15395 PR middle-end/40316
15396 * recog.c (peep2_reinit_state): New function.
15397 (peephole2_init_state): Use it at the end of a basic block and also
15398 when seeing a RTX_FRAME_RELATED_P insn.
15399
15400 2009-06-01 Steve Ellcey <sje@cup.hp.com>
15401
15402 * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
15403 fixuns_truncrfdi2): New.
15404 (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
15405 *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
15406 *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
15407 *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
15408 *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
15409 *recip_approx): Remove.
15410 (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
15411 moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
15412 divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
15413 move to div.md.
15414 * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
15415 setf_exp_rf): New.
15416
15417 2009-06-01 Ian Lance Taylor <iant@google.com>
15418
15419 * attribs.c (register_attribute): Use CONST_CAST.
15420 * collect2.c (main): Use CONST_CAST2.
15421 (scan_prog_file): Likewise.
15422 * gcc.c (process_command, main): Likewise.
15423 * toplev.c (toplev_main): Likewise.
15424
15425 * c-typeck.c (handle_warn_cast_qual): New static function,
15426 partially broken out of build_c_cast.
15427 (build_c_cast): Call handle_warn_cast_qual.
15428 * doc/invoke.texi (Warning Options): Document new effect of
15429 -Wcast-qual.
15430
15431 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
15432
15433 * diagnostic.c (diagnostic_build_prefix): Always print columns.
15434 (diagnostic_report_current_module): Print columns.
15435 * common.opt (flag_show_column): Enable by default.
15436
15437 2009-06-01 Luis Machado <luisgpm@br.ibm.com>
15438
15439 * alias.c (find_base_term): Check for NULL term before returning.
15440
15441 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
15442
15443 Revert due to PR40320:
15444 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
15445 * calls.c (emit_library_call_value_1): Don't force_operand for move
15446 and push insns.
15447
15448 2009-06-01 Olivier Hainque <hainque@adacore.com>
15449 Eric Botcazou <ebotcazou@adacore.com>
15450
15451 * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
15452 to be processed as a bitfield for constructor output purposes.
15453 * output.h (initializer_constant_valid_for_bitfield_p): Declare
15454 new function.
15455 * varasm.c (oc_local_state): New type, output_constructor
15456 local state to support communication with helpers.
15457 (oc_outer_state): New type, output_constructor outer state of
15458 relevance in recursive calls.
15459 (output_constructor_array_range): New output_constructor helper,
15460 extracted code for an array range element.
15461 (output_constructor_regular_field): New output_constructor helper,
15462 extracted code for an element that is not a bitfield.
15463 (output_constructor_bitfield): New output_constructor helper,
15464 extracted code for a bitfield element. Accept an OUTER state
15465 argument for recursive processing. Recurse on record or array
15466 CONSTRUCTOR values, possibly past noop conversions.
15467 (initializer_constant_valid_for_bitfield_p): New predicate. Whether
15468 VALUE is a valid constant-valued expression for use in a static
15469 bit-field initializer.
15470 (output_constructor): Rework to use helpers. Accept and honor an
15471 OUTER state argument for recursive calls. Return total size. Be
15472 prepared for nested constructors initializing bitfields.
15473 (output_constant): Feed OUTER in calls to output_constructor.
15474
15475 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
15476
15477 * calls.c (emit_library_call_value_1): Don't force_operand for move
15478 and push insns.
15479
15480 2009-06-01 Nick Clifton <nickc@redhat.com>
15481
15482 * doc/invoke.texi (IA-64 Options): Fix typo.
15483
15484 2009-06-01 Ira Rosen <irar@il.ibm.com>
15485
15486 PR tree-optimization/39129
15487 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
15488 printed message.
15489 (vect_do_peeling_for_loop_bound): Use
15490 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15491 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15492 (vect_loop_versioning): Likewise.
15493 (vect_create_cond_for_alias_checks): Fix indentation.
15494 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
15495 macros.
15496 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
15497 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
15498 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
15499 "control flow in loop".
15500 (vect_estimate_min_profitable_iters): Use
15501 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
15502 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
15503 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
15504 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
15505 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
15506 statement belongs to a group of strided accesses with the exact code
15507 check.
15508 (vectorizable_load): Likewise.
15509 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
15510 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
15511
15512 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
15513
15514 * config/freebsd-stdint.h: New file.
15515 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
15516 Add freebsd-stdint.h to tm_file.
15517
15518 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
15519
15520 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
15521 (thumb2_extendhidi2): Likewise.
15522
15523 2009-05-31 Ian Lance Taylor <iant@google.com>
15524
15525 * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
15526
15527 2009-05-31 Ian Lance Taylor <iant@google.com>
15528
15529 * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
15530 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
15531 (ipa-reference.o): Depend upon gt-ipa-reference.h.
15532
15533 2009-05-31 Jason Merrill <jason@redhat.com>
15534
15535 * tree-pretty-print.c (print_call_name): Take the callee, not the
15536 call itself. Make non-static. Use dump_function_name for functions.
15537 (dump_generic_node): Adjust.
15538 * diagnostic.h: Declare print_call_name.
15539 * gimple-pretty-print.c (dump_gimple_call): Use it.
15540
15541 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
15542
15543 * config/sh/sh.md (ashldi3_std): New define_expand.
15544 (ashldi3): Use it.
15545
15546 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
15547
15548 PR target/40313
15549 * config/sh/sh.c: Include debug.h.
15550 (sh_expand_epilogue): Emit a blockage insn before the frame
15551 pointer adjustment also when dwarf2out_do_frame returns true.
15552
15553 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
15554
15555 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
15556 (thumb2_extendqidi2): New pattern.
15557
15558 2009-05-31 Ira Rosen <irar@il.ibm.com>
15559
15560 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
15561 mark phis for renaming.
15562 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
15563 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
15564 Call mark_sym_for_renaming.
15565 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
15566 * tree-vect-loop.c (vect_transform_loop): Remove
15567 vect_memsyms_to_rename initialization and a call to
15568 mark_set_for_renaming.
15569
15570 2009-05-31 Jakub Jelinek <jakub@redhat.com>
15571
15572 PR middle-end/40304
15573 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
15574 frame related even if !set_cfa && style < 0.
15575
15576 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
15577
15578 * config/i386/mingw-tls.c: New file.
15579 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
15580 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
15581 defining _WIN32 but not __CYGWIN__.
15582
15583 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15584
15585 * configure.ac: Add MPC support.
15586
15587 * config.in, configure: Regenerate.
15588
15589 2009-05-29 Richard Henderson <rth@redhat.com>
15590
15591 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
15592 NOTE_INSN_BASIC_BLOCK.
15593 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
15594 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
15595 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
15596 to be deleted.
15597 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
15598 add in_use field.
15599 (add_cfi): Disable check redefining cfa away from drap.
15600 (lookup_cfa_1): Add remember argument; handle remember/restore.
15601 (lookup_cfa): Pass remember argument.
15602 (cfa_remember): New.
15603 (compute_barrier_args_size_1): Remove sibcall check.
15604 (dwarf2out_frame_debug_def_cfa): New.
15605 (dwarf2out_frame_debug_adjust_cfa): New.
15606 (dwarf2out_frame_debug_cfa_offset): New.
15607 (dwarf2out_frame_debug_cfa_register): New.
15608 (dwarf2out_frame_debug_cfa_restore): New.
15609 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
15610 (dwarf2out_begin_epilogue): New.
15611 (dwarf2out_frame_debug_restore_state): New.
15612 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
15613 DW_CFA_restore_state.
15614 (output_cfi_directive): Likewise.
15615 (convert_cfa_to_fb_loc_list): Likewise.
15616 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
15617 * dwarf2out.h: Update.
15618 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
15619 (copy_insn_1): Early out for null.
15620 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
15621 and dwarf2out_frame_debug_restore_state.
15622 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
15623 (prologue_insn_hash, epilogue_insn_hash): New.
15624 (free_after_compilation): Adjust freeing accordingly.
15625 (record_insns): Create hash table if needed; push insns into
15626 hash instead of array.
15627 (maybe_copy_epilogue_insn): New.
15628 (contains): Search hash table instead of array.
15629 (sibcall_epilogue_contains): Remove.
15630 (thread_prologue_and_epilogue_insns): Split eh_return insns
15631 and mark them as epilogues.
15632 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
15633 scanning in terms of basic blocks.
15634 * insn-notes.def (CFA_RESTORE_STATE): New.
15635 * jump.c (returnjump_p_1): Accept EH_RETURN.
15636 (eh_returnjump_p_1, eh_returnjump_p): New.
15637 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
15638 CFA_REGISTER, CFA_RESTORE): New.
15639 * rtl.def (EH_RETURN): New.
15640 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
15641
15642 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
15643 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
15644
15645 * config/i386/i386.c (gen_push): Update cfa state.
15646 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
15647 add a CFA_ADJUST_CFA note.
15648 (ix86_dwarf_handle_frame_unspec): Remove.
15649 (ix86_expand_prologue): Update cfa state.
15650 (ix86_emit_restore_reg_using_pop): New.
15651 (ix86_emit_restore_regs_using_pop): New.
15652 (ix86_emit_leave): New.
15653 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
15654 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
15655 * config/i386/i386.h (struct machine_cfa_state): New.
15656 (ix86_cfa_state): New.
15657 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
15658 (eh_return_internal): Merge from eh_return_<mode>,
15659 use eh_return rtx, split w/ epilogue.
15660
15661 2009-05-29 Ian Lance Taylor <iant@google.com>
15662
15663 * builtins.c (validate_gimple_arglist): Don't use va_arg with
15664 enum type.
15665 * calls.c (emit_library_call_value_1): Likewise.
15666
15667 * c-typeck.c (c_build_va_arg): New function.
15668 * c-tree.h (c_build_va_arg): Declare.
15669 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
15670 instead of build_va_arg.
15671
15672 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
15673
15674 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
15675 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
15676 (ptr_difference_cost): Use affine combinations to compute it.
15677 (difference_cost): Likewise.
15678 (get_computation_cost_at): Compute more accurate cost for addresses
15679 if the ratio is a multiplier allowed in addresses.
15680 For non-addresses, consider that an additional offset or symbol is
15681 added only once.
15682
15683 2009-05-29 Jakub Jelinek <jakub@redhat.com>
15684
15685 * config/i386/i386.c (ix86_decompose_address): Avoid useless
15686 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
15687
15688 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
15689 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
15690 (prefix_rex): For UNIT_MMX don't imply the prefix by default
15691 if MODE_DI.
15692 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
15693 to 1 for TYPE_SSE{IADD1,CVT1}.
15694 (prefix_vex_imm8): Removed.
15695 (length_vex): Only pass 1 as second argument to
15696 ix86_attr_length_vex_default if prefix_extra is 0.
15697 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
15698 (length): For prefix vex computation use length_immediate
15699 attribute instead of prefix_vex_imm8.
15700 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
15701 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
15702 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
15703 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
15704 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
15705 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
15706 a space in between the operands.
15707 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
15708 if one operand is 0xff and the other one si, di, bp or sp.
15709 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
15710 other one si, di, bp or sp.
15711 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
15712 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
15713 type and mode attributes.
15714 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
15715 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
15716 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
15717 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
15718 prefix_data16 attribute iff MODE_DF.
15719 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
15720 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
15721 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
15722 constm128_operand in length_immediate computation.
15723 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
15724 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
15725 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
15726 length_immediate attribute to 1.
15727 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
15728 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
15729 for certain alternatives.
15730 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
15731 prefix_data16 attribute if MODE_V1DF.
15732 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
15733 length_immediate to 1.
15734 (set_got_rex64, set_rip_rex64): Remove length attribute, set
15735 length_address to 4, set mode attribute to MODE_DI.
15736 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
15737 (fxam<mode>2_i387): Set length attribute to 4.
15738 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
15739 *prefetch_3dnow_rex): Override length_address attribute.
15740 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
15741 attributes.
15742 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
15743 (constm128_operand): Removed.
15744 * config/i386/i386.c (memory_address_length): For
15745 disp && !index && !base in 64-bit mode account for SIB byte if
15746 print_operand_address can't optimize disp32 into disp32(%rip)
15747 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
15748 for fs: or gs: segment.
15749 (ix86_attr_length_immediate_default): When checking if shortform
15750 is possible, truncate immediate to the length of the non-shortened
15751 immediate.
15752 (ix86_attr_length_address_default): Ignore MEM_P operands
15753 with X constraint.
15754 (ix86_attr_length_vex_default): Only check for DImode on
15755 GENERAL_REG_P operands.
15756 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
15757 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
15758 (sse_cvttps2pi): Clear prefix_rep attribute.
15759 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
15760 attribute.
15761 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
15762 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
15763 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
15764 iff operand 2 is const_int_operand.
15765 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
15766 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
15767 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
15768 instead of vex.
15769 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
15770 prefix_data16.
15771 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
15772 prefix_data16 attribute for movlpd and movhpd instructions.
15773 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
15774 length_immediate for shufpd instruction.
15775 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
15776 (avx_cmpp<avxmodesuffixf2c><mode>3,
15777 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
15778 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
15779 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
15780 *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
15781 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
15782 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
15783 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
15784 prefix_data16 attribute for the first alternative to 1.
15785 (*avx_loadlps): Override length_immediate for the first alternative.
15786 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
15787 attributes for second alternative.
15788 (*vec_concatv2sf_sse4_1): Override length_immediate and
15789 prefix_data16 attributes for second alternative.
15790 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
15791 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
15792 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
15793 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
15794 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
15795 prefix_data16 and length_immediate to 1.
15796 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
15797 to 1.
15798 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
15799 prefix_extra attribute for variants that don't have 0f prefix alone.
15800 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
15801 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
15802 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
15803 *sse4_1_pextrd): Set length_immediate to 1.
15804 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
15805 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
15806 to 1.
15807 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
15808 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
15809 length_immediate to 1 for second alternative.
15810 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
15811 prefix_extra and length_immediate attributes for the first
15812 alternative.
15813 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
15814 first alternative.
15815 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
15816 to 1 for the first and third alternative.
15817 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
15818 alternative.
15819 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
15820 attribute.
15821 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
15822 attribute to 0.
15823 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
15824 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
15825 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
15826 *avx_psign<mode>3): Set prefix_extra attribute to 1.
15827 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
15828 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
15829 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
15830 ssse3_psign<mode>3): Override prefix_rex attribute.
15831 (*avx_palignrti): Override prefix_extra and length_immediate to 1.
15832 (ssse3_palignrti): Override length_immediate to 1.
15833 (ssse3_palignrdi): Override length_immediate to 1, override
15834 prefix_rex attribute.
15835 (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
15836 (sse4a_extrqi): Override length_immediate to 2.
15837 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
15838 (sse4a_insertq): Override prefix_data16 to 0.
15839 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
15840 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
15841 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
15842 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
15843 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
15844 and length_immediate to 1.
15845 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
15846 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
15847 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
15848 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
15849 and length_immediate to 1.
15850 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
15851 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
15852 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
15853 avx_ptest256): Override prefix_extra to 1.
15854 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
15855 Override prefix_data16 and length_immediate to 1.
15856 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
15857 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
15858 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
15859 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
15860 prefix_data16 to 0 and prefix_extra to 2.
15861 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
15862 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
15863 attribute.
15864 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
15865 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
15866 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
15867 and prefix_extra to 2.
15868 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
15869 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
15870 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
15871 avx_vpermilvar<mode>3,
15872 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
15873 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
15874 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
15875 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
15876 Override prefix_extra to 1.
15877 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
15878 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
15879 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
15880 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
15881 prefix_extra and length_immediate to 1.
15882 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
15883 modrm to 0.
15884 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
15885 to 1 for the first alternative.
15886 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
15887 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
15888 cases.
15889 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
15890 *movv2sf_internal_avx, *movv2sf_internal): Override
15891 prefix_rep attribute for certain alternatives.
15892 (*mov<mode>_internal): Override prefix_rep or prefix_data16
15893 attributes for certain alternatives.
15894 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
15895 attributes for certain alternatives.
15896 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
15897 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
15898 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
15899 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
15900 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
15901 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
15902 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
15903 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
15904 length_immediate to 1 if operand 2 is const_int_operand.
15905 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
15906 *vec_extractv2si_1): Set length_immediate attribute to 1.
15907 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
15908 using old 3DNOW insn rather than SSE/3DNOW_A.
15909 (mmx_emms, mmx_femms): Clear modrm attribute.
15910
15911 2009-05-29 Martin Jambor <mjambor@suse.cz>
15912
15913 * tree-sra.c: New implementation of SRA.
15914
15915 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
15916 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
15917 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
15918 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
15919 (SRA_MAX_STRUCTURE_COUNT): Removed.
15920 (SRA_FIELD_STRUCTURE_RATIO): Removed.
15921 * doc/invoke.texi (sra-max-structure-size): Removed.
15922 (sra-field-structure-ratio): Removed.
15923
15924 2009-05-29 Jakub Jelinek <jakub@redhat.com>
15925
15926 PR middle-end/40291
15927 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
15928 before expansion.
15929
15930 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
15931
15932 PR rtl-optimization/40101
15933 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
15934 seqno. Adjust comment.
15935 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
15936 inserting bookkeeping before a jump, the jump is not scheduled.
15937 When no positive seqno found, provide a value. Add comment.
15938
15939 2009-05-29 Richard Guenther <rguenther@suse.de>
15940
15941 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
15942 short-cutting on the first component.
15943
15944 2009-05-29 Jakub Jelinek <jakub@redhat.com>
15945
15946 PR middle-end/39958
15947 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
15948 for trees other than decls/types.
15949
15950 2009-05-29 Richard Guenther <rguenther@suse.de>
15951
15952 * tree-ssa-operands.c (get_expr_operands): Do not handle
15953 INDIRECT_REFs in the handled-component case. Remove
15954 unused get_ref_base_and_extent case.
15955 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
15956 tree_low_cst and host_integerp where possible.
15957 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
15958 codes for equivalence.
15959 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
15960
15961 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
15962
15963 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
15964 to tmake_file for i[34567]86-*-cygwin*.
15965
15966 2009-05-29 Jakub Jelinek <jakub@redhat.com>
15967
15968 PR target/40017
15969 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
15970 (altivec_categorize_keyword, init_vector_keywords,
15971 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
15972 similar to bool.
15973
15974 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
15975
15976 * tree.c (handle_dll_attribute): Check if node is
15977 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
15978
15979 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
15980
15981 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
15982 component.
15983 (thumb2_zero_extendqidi2): Likewise.
15984
15985 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
15986
15987 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
15988 instead of gen_movrt.
15989 * config/sh/sh.md (movrt): Remove.
15990
15991 2009-05-28 Steve Ellcey <sje@cup.hp.com>
15992
15993 * doc/invoke.texi (IA-64 Options):
15994 Add -msdata, -mfused-madd, -mno-inline-float-divide,
15995 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
15996 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
15997 -msched-prefer-non-control-spec-insns,
15998 -msched-stop-bits-after-every-cycle,
15999 -msched-count-spec-in-critical-path,
16000 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
16001 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
16002 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
16003 and -msched-spec-verbose.
16004
16005 2009-05-28 Joseph Myers <joseph@codesourcery.com>
16006
16007 * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
16008 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
16009 error if used.
16010 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
16011
16012 2009-05-28 Richard Guenther <rguenther@suse.de>
16013
16014 * tree-ssa-alias.c (ao_ref_init): New function.
16015 (ao_ref_base): Likewise.
16016 (ao_ref_base_alias_set): Likewise.
16017 (ao_ref_alias_set): Likewise.
16018 (refs_may_alias_p_1): Change signature.
16019 (refs_may_alias_p): Adjust.
16020 (refs_anti_dependent_p): Likewise.
16021 (refs_output_dependent_p): Likewise.
16022 (call_may_clobber_ref_p_1): Change signature.
16023 (call_may_clobber_ref_p): Adjust.
16024 (stmt_may_clobber_ref_p_1): New function split out from ...
16025 (stmt_may_clobber_ref_p): ... here.
16026 (maybe_skip_until): Adjust signature.
16027 (get_continuation_for_phi): Likewise.
16028 (walk_non_aliased_vuses): Likewise.
16029 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
16030 (ao_ref_init): Declare.
16031 (ao_ref_base): Likewise.
16032 (ao_ref_alias_set): Likewise.
16033 (stmt_may_clobber_ref_p_1): Likewise.
16034 (walk_non_aliased_vuses): Adjust.
16035 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
16036 (get_ref_from_reference_ops): remove.
16037 (vn_reference_lookup_2): Adjust signature.
16038 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
16039 (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
16040 (vn_reference_lookup): Adjust.
16041 (vn_reference_insert): Likewise.
16042 (vn_reference_insert_pieces): Adjust signature.
16043 (visit_reference_op_call): Adjust.
16044 * tree-ssa-pre.c (get_expr_type): Simplify.
16045 (phi_translate_1): Adjust.
16046 (compute_avail): Likewise.
16047 (translate_vuse_through_block): Do not re-build trees.
16048 (value_dies_in_block_x): Likewise.
16049 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
16050 fields.
16051 (vn_reference_lookup_pieces): Adjust declaration.
16052 (vn_reference_insert_pieces): Likewise.
16053
16054 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
16055
16056 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
16057 with checking disabled.
16058
16059 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
16060
16061 PR target/37216
16062
16063 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
16064 macro definition for support of three-operand format aligned
16065 .comm directive in assembler on cygwin/pe/mingw target OS.
16066 * configure: Regenerate.
16067 * config.h: Regenerate.
16068
16069 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
16070 aligned form of .comm directive if -mpe-aligned-commons is in effect.
16071 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
16072
16073 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
16074 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
16075
16076 2009-05-28 Ira Rosen <irar@il.ibm.com>
16077
16078 PR tree-optimization/40254
16079 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
16080 in analysis of basic blocks.
16081
16082 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
16083
16084 PR middle-end/33699
16085 * target.h (struct gcc_target): Fix indentation. Add const_anchor.
16086 * target-def.h (TARGET_CONST_ANCHOR): New macro.
16087 (TARGET_INITIALIZER): Use it.
16088 * cse.c (CHEAPER): Move it up to the other macros.
16089 (insert): Rename this ...
16090 (insert_with_costs): ... to this. Add cost parameters. Update
16091 function comment.
16092 (insert): New function. Call insert_with_costs.
16093 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
16094 find_reg_offset_for_const, try_const_anchors): New functions.
16095 (cse_insn): Call try_const_anchors. Adjust cost of src_related
16096 when using a const-anchor. Call insert_const_anchors.
16097 * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
16098 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
16099
16100 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
16101
16102 * tree-inline.c (remap_decls): Enable nonlocalized variables
16103 when not optimizing.
16104
16105 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
16106
16107 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
16108 Simplify other tests involving optimize.
16109
16110 2009-05-27 Tom Tromey <tromey@redhat.com>
16111
16112 * unwind-dw2.c (_Unwind_DebugHook): New function.
16113 (uw_install_context): Call _Unwind_DebugHook.
16114
16115 2009-05-27 Tom Tromey <tromey@redhat.com>
16116
16117 * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
16118
16119 2009-05-27 Ian Lance Taylor <iant@google.com>
16120
16121 * Makefile.in (LINKER, LINKER_FLAGS): Define.
16122 (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
16123 (ALL_LINKERFLAGS): Define.
16124 (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
16125 (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16126 (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
16127 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16128 (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
16129 $(LINKER_FOR_BUILD).
16130 (build/gcov-iov$(build_exeext)): Likewise.
16131
16132 2009-05-27 Julian Brown <julian@codesourcery.com>
16133
16134 * gcse.c (target.h): Include.
16135 (can_assign_to_reg_without_clobbers_p): Check that the target allows
16136 copy of argument to a pseudo register.
16137
16138 2009-05-27 Diego Novillo <dnovillo@google.com>
16139
16140 * tree-ssa-live.c (dump_scope_block): Document arguments.
16141 (dump_scope_blocks): Document.
16142 (debug_scope_blocks): New.
16143 * tree-flow.h (debug_scope_blocks): Declare.
16144
16145 2009-05-21 Denis Chertykov <denisc@overta.ru>
16146
16147 * doc/contrib.texi (Contributors): Add myself to the list.
16148
16149 2009-05-27 Olivier Hainque <hainque@adacore.com>
16150
16151 * expr.c (target_align): New function. Alignment the TARGET of an
16152 assignment may be assume to have.
16153 (highest_pow2_factor_for_target): Use it instead of relying on
16154 immediate tree attributes of TARGET, not necessarily honored when
16155 intermediate bitfields are involved.
16156
16157 2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
16158
16159 PR target/40266
16160 * config/i386/driver-i386.c (host_detect_local_cpu): Support
16161 AVX, SSE4, AES, PCLMUL and POPCNT.
16162
16163 2009-05-27 Diego Novillo <dnovillo@google.com>
16164
16165 * tree-pretty-print.c (dump_location): New.
16166 (dump_generic_node): Call it.
16167 Factor code to handle BLOCK nodes ...
16168 (dump_block_node): ... here.
16169
16170 2009-05-27 Rafael Avila de Espindola <espindola@google.com>
16171
16172 * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
16173 with it.
16174 * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
16175 included.
16176 * gcc-plugin.h: Include config.h and system.h.
16177 (IN_GCC): Define if not defined.
16178
16179 2009-05-27 Hans-Peter Nilsson <hp@axis.com>
16180
16181 PR middle-end/40249
16182 * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
16183 with -fno-inline.
16184
16185 2009-05-27 Shujing Zhao <pearly.zhao@oracle.com>
16186
16187 * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
16188 applicable.
16189 * config/m32r/m32r.h: Ditto.
16190 * config/m32r/m32r.md: Ditto.
16191 * config/m32r/predicates.md: Ditto.
16192
16193 2009-05-27 Alexandre Oliva <aoliva@redhat.com>
16194
16195 * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
16196
16197 2009-05-26 Basile Starynkevitch <basile@starynkevitch.net>
16198
16199 * doc/plugins.texi
16200 (Loading plugins): typo.
16201 (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
16202 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16203 (Interacting with the GCC Garbage Collector): Added new section.
16204 (Giving information about a plugin): Added new section for
16205 PLUGIN_INFO.
16206 * ggc.h (ggc_register_root_tab): Added declaration.
16207 * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
16208 (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
16209 (register_callback): Improved comment in declaration.
16210 * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
16211 (extra_root_vec) Added static variable for dynamic roots registration.
16212 (ggc_register_root_tab) Added new routine.
16213 (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
16214 PLUGIN_GGC_MARKING event.
16215 * ggc-zone.c: Include plugin.h.
16216 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16217 * ggc-page.c: Include plugin.h.
16218 (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
16219 * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
16220 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
16221 (register_callback): check lack of callbacks for
16222 pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
16223 PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
16224 (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
16225 PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
16226 * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
16227 dependency on plugin.h.
16228 (plugin.o): Added dependency on ggc.h...
16229
16230 2009-05-26 Richard Guenther <rguenther@suse.de>
16231
16232 PR middle-end/40248
16233 Revert
16234 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
16235 with mismatched comparison modes.
16236
16237 * expr.c (expand_expr_real_1): Expand the operand of a
16238 VIEW_CONVERT_EXPR in its natural mode.
16239
16240 2009-05-26 Ian Lance Taylor <iant@google.com>
16241
16242 * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
16243 (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
16244 (ALL_COMPILERFLAGS): Define.
16245 (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
16246 (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
16247 (collect2$(exeext), collect2.o): Likewise.
16248 (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
16249 (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
16250 ($(out_object_file), mips-tfile, mips-tdump): Likewise.
16251 (libbackend.o, intl.o, cppdefault.o): Likewise.
16252 (gcov$(exeext), gcov-dump$(exeext)): Likewise.
16253 (build/%.o): Use $(COMPILER_FOR_BUILD).
16254 (build/gen%$(build_exeext)): Likewise.
16255 (build/gcov-iov$(build_exeext)): LIkewise.
16256 * config/t-darwin (darwin.o): Use $(COMPILER).
16257 (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
16258 * config/t-sol2 (sol2-c.o): Likewise.
16259 (sol2.o): Likewise.
16260 * config/t-vxworks (vxworks.o): Likewise.
16261 * config/x-darwin (host-darwin.o): Likewise.
16262 * config/x-hpux (host-hpux.o): Likewise.
16263 * config/x-linux (host-linux.o): Likewise.
16264 * config/x-solaris (host-solaris.o): Likewise.
16265 * config/alpha/x-alpha (driver-alpha.o): Likewise.
16266 * config/arm/t-arm (arm-c.o): Likewise.
16267 * config/arm/t-pe (pe.o): Likewise.
16268 * config/arm/t-wince-pe (pe.o): Likewise.
16269 * config/i386/t-cygming (winnt.o): Likewise.
16270 (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
16271 * config/i386/t-cygwin (cygwin1.o): Likewise.
16272 (cygwin2.o): Likewise.
16273 * config/i386/t-i386 (i386-c.o): Likewise.
16274 * config/i386/t-interix (winnt.o): Likewise.
16275 * config/i386/t-netware (netware.o): Likewise.
16276 * config/i386/t-nwld (nwld.o): Likewise.
16277 * config/i386/x-darwin (host-i386-darwin.o): Likewise.
16278 * config/i386/x-i386 (driver-i386.o): Likewise.
16279 * config/i386/x-cygwin (host-cygwin.o): Likewise.
16280 * config/i386/x-mingw32 (host-mingw32.o): Likewise.
16281 * config/ia64/t-ia64 (ia64-c.o): Likewise.
16282 * config/m32c/t-m32c (m32c-pragma.o): Likewise.
16283 * config/mips/x-native (driver-native.o): Likewise.
16284 * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
16285 * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
16286 * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
16287 * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
16288 * config/score/t-score-elf (score7.o): Likewise.
16289 (score3.o): Likewise.
16290 * config/sh/t-sh (sh-c.o): Likewise.
16291 * config/sh/t-symbian (sh-c.o): Likewise.
16292 (symbian.o): Likewise.
16293 * config/spu/t-spu-elf (spu-c.o): Likewise.
16294 * config/v850/t-v850 (v850-c.o): Likewise.
16295 * config/v850/t-v850e (v850-c.o): Likewise.
16296
16297 2009-05-26 Richard Guenther <rguenther@suse.de>
16298
16299 PR tree-optimization/40122
16300 * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
16301 VECTOR_CSTs if possible.
16302 (fold_gimple_assign): Likewise.
16303
16304 2009-05-26 Richard Guenther <rguenther@suse.de>
16305
16306 PR middle-end/40252
16307 * fold-const.c (fold_binary): Use the correct types for building
16308 rotates.
16309
16310 2009-05-26 Richard Guenther <rguenther@suse.de>
16311
16312 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
16313 redundant calls to merge_alias_info.
16314 (bump_vector_ptr): Likewise.
16315 * tree-ssa-copy.c (merge_alias_info): Remove.
16316 (replace_exp_1): Remove call to merge_alias_info.
16317 (propagate_tree_value): Likewise.
16318 (fini_copy_prop): Propagate points-to info.
16319 * tree-flow.h (merge_alias_info): Remove.
16320
16321 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
16322
16323 * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
16324
16325 2009-05-25 Jan Hubicka <jh@suse.cz>
16326
16327 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16328 * cgraph.h (struct inline_summary): New filed self_wize,
16329 size_inlining_benefit, self_time and time_inlining_benefit.
16330 (struct cgraph_global_info): Replace insns by time ans size fields.
16331 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16332 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16333 (ipcp_update_callgraph): Do not touch function bodies.
16334 * ipa-inline.c: Include except.h
16335 (MAX_TIME): New constant.
16336 (overall_insns): Remove.
16337 (leaf_node_p): New.
16338 (overall_size, max_benefit): New static variables.
16339 (cgraph_estimate_time_after_inlining): New function.
16340 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16341 (cgraph_clone_inlined_nodes): Update size.
16342 (cgraph_mark_inline_edge): Update size.
16343 (cgraph_estimate_growth): Use size info.
16344 (cgraph_check_inline_limits): Check size.
16345 (cgraph_default_inline_p): Likewise.
16346 (cgraph_edge_badness): Compute badness based on benefit and size cost.
16347 (cgraph_decide_recursive_inlining): Check size.
16348 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16349 and times.
16350 (cgraph_decide_inlining): Likewise.
16351 (cgraph_decide_inlining_incrementally): Likewise; honor
16352 PARAM_EARLY_INLINING_INSNS.
16353 (likely_eliminated_by_inlining_p): New predicate.
16354 (estimate_function_body_sizes): New function.
16355 (compute_inline_parameters): Use it.
16356 * except.c (must_not_throw_labels): New function.
16357 * except.h (must_not_throw_labels): Declare.
16358 * tree-inline.c (init_inline_once): Kill inlining_weigths
16359 * tree-ssa-structalias.c: Avoid uninitialized warning.
16360 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16361 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16362 (PARAM_INLINE_CALL_COST): Remove.
16363 (PARAM_EARLY_INLINING_INSNS): New.
16364
16365 2009-05-25 Richard Guenther <rguenther@suse.de>
16366
16367 PR tree-optimization/36327
16368 * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
16369 callback for reference translation or lookup at the point of may-defs.
16370 * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
16371 * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
16372 for union COMPONENT_REFs.
16373 (vn_reference_lookup_3): New callback. Lookup from memset
16374 and CONSTRUCTOR assignment, translate through struct copies.
16375 (vn_reference_lookup_pieces): Make sure to not free the
16376 passed operands array. Adjust walk_non_aliased_vuses call.
16377 (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
16378 make sure we do not leak memory.
16379
16380 2009-05-25 Richard Guenther <rguenther@suse.de>
16381
16382 * tree-ssa-alias.h (dump_points_to_solution): Declare.
16383 * tree-inline.c (expand_call_inline): Reset the escaped and
16384 callused solutions.
16385 * tree-ssa-structalias.c (pass_build_ealias): New.
16386 * tree-pass.h (pass_build_ealias): Declare.
16387 * passes.c (init_optimization_passes): Add PTA during
16388 early optimizations.
16389 * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
16390 and CALLUSED solutions.
16391 (dump_points_to_solution): New function, split out from ...
16392 (dump_points_to_info_for): ... here.
16393 * tree-parloops.c (parallelize_loops): Reset the escaped and
16394 callused solutions.
16395
16396 2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
16397
16398 PR bootstrap/40027
16399 * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
16400 * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
16401
16402 2009-05-25 Ira Rosen <irar@il.ibm.com>
16403
16404 PR tree-optimization/40238
16405 * tree-vect-stmts.c (vect_init_vector): Insert initialization
16406 statements after basic block's labels.
16407 * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
16408 to free the allocated memory.
16409
16410 2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
16411
16412 * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
16413 return address with a USE.
16414
16415 2009-05-24 Richard Guenther <rguenther@suse.de>
16416
16417 PR middle-end/40233
16418 * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
16419 array type from the main variant of the inner type.
16420
16421 2009-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
16422
16423 * config/vax/vax-protos.h (legitimate_constant_address_p): Change
16424 definition to bool (from int) to un-break build.
16425 (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
16426
16427 2009-05-24 Paolo Bonzini <bonzini@gnu.org>
16428
16429 * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
16430 discard_stmt_changes): Delete.
16431 * tree-ssa-operands.c (scb_stack): Delete.
16432 (init_ssa_operands): Do not initialize it.
16433 (fini_ssa_operands): Do not free it.
16434 (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
16435
16436 * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
16437 update_stmt, remove the others. Fix comments.
16438 * tree-dfa.c (optimize_stack_restore): Likewise.
16439 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
16440 * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
16441 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16442 * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
16443 Likewise.
16444 * tree-ssa-propagate.c (substitute_and_fold): Likewise.
16445 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
16446 (dom_opt_finalize_block): Likewise, adjusting access to
16447 stmts_to_rescan.
16448 (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
16449 (stmts_to_rescan): Change item type to gimple.
16450 (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
16451
16452 2009-05-24 Ira Rosen <irar@il.ibm.com>
16453
16454 * doc/passes.texi (Tree-SSA passes): Document SLP pass.
16455 * tree-pass.h (pass_slp_vectorize): New pass.
16456 * params.h (SLP_MAX_INSNS_IN_BB): Define.
16457 * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
16458 * tree-vectorizer.c (timevar.h): Include.
16459 (user_vect_verbosity_level): Declare.
16460 (vect_location): Fix comment.
16461 (vect_set_verbosity_level): Update user_vect_verbosity_level
16462 instead of vect_verbosity_level.
16463 (vect_set_dump_settings): Add an argument. Ignore user defined
16464 verbosity if dump flags require higher level of verbosity. Print to
16465 stderr only for loop vectorization.
16466 (vectorize_loops): Update call to vect_set_dump_settings.
16467 (execute_vect_slp): New function.
16468 (gate_vect_slp): Likewise.
16469 (struct gimple_opt_pass pass_slp_vectorize): New.
16470 * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
16471 access its members.
16472 (vec_info_for_bb): New function.
16473 (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
16474 (VECTORIZATION_ENABLED): New macro.
16475 (SLP_ENABLED, SLP_DISABLED): Likewise.
16476 (vect_is_simple_use): Add bb_vec_info argument.
16477 (new_stmt_vec_info, vect_analyze_data_ref_dependences,
16478 vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
16479 vect_analyze_data_ref_accesses, vect_analyze_data_refs,
16480 vect_schedule_slp, vect_analyze_slp): Likewise.
16481 (vect_analyze_stmt): Add slp_tree argument.
16482 (find_bb_location): Declare.
16483 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
16484 * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
16485 (vect_analyze_loop_operations, vect_analyze_loop,
16486 get_initial_def_for_induction, vect_create_epilog_for_reduction,
16487 vect_finalize_reduction, vectorizable_reduction,
16488 vectorizable_live_operation, vect_transform_loop): Likewise.
16489 * tree-data-ref.c (dr_analyze_innermost): Update comment,
16490 skip evolution analysis if analyzing a basic block.
16491 (dr_analyze_indices): Likewise.
16492 (initialize_data_dependence_relation): Skip the test whether the
16493 object is invariant for basic blocks.
16494 (compute_all_dependences): Skip dependence analysis for data
16495 references in basic blocks.
16496 (find_data_references_in_stmt): Don't fail in case of invariant
16497 access in basic block.
16498 (find_data_references_in_bb): New function.
16499 (find_data_references_in_loop): Move code to
16500 find_data_references_in_bb and add a call to it.
16501 (compute_data_dependences_for_bb): New function.
16502 * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
16503 * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
16504 that STEP is 0.
16505 (vect_analyze_data_ref_dependence): Check for interleaving in case of
16506 unknown dependence in basic block and fail in case of dependence in
16507 basic block.
16508 (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
16509 dependence instances from either loop or basic block vectorization
16510 info.
16511 (vect_compute_data_ref_alignment): Check if it is loop vectorization
16512 before calling nested_in_vect_loop_p.
16513 (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
16514 dependence instances from either loop or basic block vectorization
16515 info.
16516 (vect_verify_datarefs_alignment): Likewise.
16517 (vect_enhance_data_refs_alignment): Adjust function calls.
16518 (vect_analyze_data_refs_alignment): Likewise.
16519 (vect_analyze_group_access): Fix printing. Skip different checks if
16520 DR_STEP is 0. Keep strided stores either in loop or basic block
16521 vectorization data structure. Fix indentation.
16522 (vect_analyze_data_ref_access): Fix comments, allow zero step in
16523 basic blocks.
16524 (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
16525 dependence instances from either loop or basic block vectorization
16526 info.
16527 (vect_analyze_data_refs): Update comment. Call
16528 compute_data_dependences_for_bb to analyze basic blocks.
16529 (vect_create_addr_base_for_vector_ref): Check for outer loop only in
16530 case of loop vectorization. In case of basic block vectorization use
16531 data-ref itself as a base.
16532 (vect_create_data_ref_ptr): In case of basic block vectorization:
16533 don't advance the pointer, add new statements before the current
16534 statement. Adjust function calls.
16535 (vect_supportable_dr_alignment): Support only aligned accesses in
16536 basic block vectorization.
16537 * common.opt (ftree-slp-vectorize): New flag.
16538 * tree-vect-patterns.c (widened_name_p): Adjust function calls.
16539 (vect_pattern_recog_1): Likewise.
16540 * tree-vect-stmts.c (process_use): Likewise.
16541 (vect_init_vector): Add new statements in the beginning of the basic
16542 block in case of basic block SLP.
16543 (vect_get_vec_def_for_operand): Adjust function calls.
16544 (vect_finish_stmt_generation): Likewise.
16545 (vectorizable_call): Add assert that it is loop vectorization, adjust
16546 function calls.
16547 (vectorizable_conversion, vectorizable_assignment): Likewise.
16548 (vectorizable_operation): In case of basic block SLP, take
16549 vectorization factor from statement's type and skip the relevance
16550 check. Adjust function calls.
16551 (vectorizable_type_demotion): Add assert that it is loop
16552 vectorization, adjust function calls.
16553 (vectorizable_type_promotion): Likewise.
16554 (vectorizable_store): Check for outer loop only in case of loop
16555 vectorization. Adjust function calls. For basic blocks, skip the
16556 relevance check and don't advance pointers.
16557 (vectorizable_load): Likewise.
16558 (vectorizable_condition): Add assert that it is loop vectorization,
16559 adjust function calls.
16560 (vect_analyze_stmt): Add argument. In case of basic block SLP, check
16561 that it is not reduction, get vector type, call only supported
16562 functions, skip loop specific parts.
16563 (vect_transform_stmt): Check for outer loop only in case of loop
16564 vectorization.
16565 (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
16566 (vect_is_simple_use): Fix comment, add new argument, fix conditions
16567 for external definition.
16568 * passes.c (pass_slp_vectorize): New pass.
16569 * tree-vect-slp.c (find_bb_location): New function.
16570 (vect_get_and_check_slp_defs): Add argument, adjust function calls,
16571 check for patterns only in loops.
16572 (vect_build_slp_tree): Add argument, adjust function calls, fail in
16573 case of multiple types in basic block SLP.
16574 (vect_mark_slp_stmts_relevant): New function.
16575 (vect_supported_load_permutation_p): Fix comment.
16576 (vect_analyze_slp_instance): Add argument. In case of basic block
16577 SLP, take vectorization factor from statement's type, check that
16578 unrolling factor is 1. Adjust function call. Save SLP instance in
16579 either loop or basic block vectorization structure. Return FALSE,
16580 if SLP failed.
16581 (vect_analyze_slp): Add argument. Get strided stores groups from
16582 either loop or basic block vectorization structure. Return FALSE
16583 if basic block SLP failed.
16584 (new_bb_vec_info): New function.
16585 (destroy_bb_vec_info, vect_slp_analyze_node_operations,
16586 vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
16587 (vect_schedule_slp): Add argument. Get SLP instances from either
16588 loop or basic block vectorization structure. Set vectorization factor
16589 to be 1 for basic block SLP.
16590 (vect_slp_transform_bb): New function.
16591 * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
16592
16593 2009-05-23 Mark Mitchell <mark@codesourcery.com>
16594
16595 * final.c (shorten_branches): Do not align labels for jump tables.
16596 (final_scan_insn): Use JUMP_TABLE_DATA_P.
16597
16598 2009-05-23 Eric Botcazou <ebotcazou@adacore.com>
16599
16600 * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
16601 Remove outdated reference to flow.c and fix nits.
16602 * doc/gccint.texi: Tweak RTL description.
16603 * doc/rtl.texi: Likewise.
16604
16605 2009-05-23 Denis Chertykov <chertykov@gmail.com>
16606
16607 * config/avr/avr.c: Change my email address.
16608 * config/avr/avr.h: Likewise.
16609 * config/avr/avr.md: Likewise.
16610 * config/avr/avr-protos.h: Likewise.
16611 * config/avr/libgcc.S: Likewise.
16612
16613 2009-05-22 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
16614
16615 * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
16616 (spu_split_load, spu_split_store): Change return type to int.
16617 (spu_split_convert): Declare.
16618 * config/spu/predicates.md (spu_mem_operand): Remove.
16619 (spu_mov_operand): Update.
16620 (spu_dest_operand, shiftrt_operator, extend_operator): Define.
16621 * config/spu/spu.c (regno_aligned_for_load): Remove.
16622 (reg_aligned_for_addr, spu_expand_load): Define.
16623 (spu_expand_extv): Reimplement and handle MEM.
16624 (spu_expand_insv): Handle MEM.
16625 (spu_sched_reorder): Handle insn's with length 0.
16626 (spu_legitimate_address_p): Reimplement.
16627 (store_with_one_insn_p): Return TRUE for any mode with size
16628 larger than 16 bytes.
16629 (address_needs_split): Define.
16630 (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
16631 operands.
16632 (spu_convert_move): Define.
16633 (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
16634 (spu_split_store): Change all MEM's to TImode.
16635 (spu_init_expanders): Preallocate registers that correspond to
16636 LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
16637 mark_reg_pointer.
16638 (spu_split_convert): Define.
16639 * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
16640 (_move<mode>, _movdi, _movti): Update predicate and condition.
16641 (load, store): Change to define_split.
16642 (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
16643 extend<mode>ti2.
16644 (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
16645 (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
16646 define_insn_and_split of lshr<mode>3.
16647 (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
16648 (<v>ashr<mode>3_imm): Define.
16649 (extv, extzv, insv): Allow MEM operands.
16650 (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
16651 shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
16652 sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
16653 (_spu_convert2): Change to define_insn_and_split and remove the
16654 corresponding define_peephole2.
16655 (stack_protect_set, stack_protect_test, stack_protect_test_si):
16656 Change predicates to memory_operand.
16657
16658 2009-05-22 Mark Mitchell <mark@codesourcery.com>
16659
16660 * config/arm/thumb2.md: Add 16-bit multiply instructions.
16661
16662 2009-05-21 Michael Meissner <meissner@linux.vnet.ibm.com>
16663
16664 PR tree-optimization/40219
16665 * tree.c (iterative_hash_expr): Make sure the builtin function is
16666 a normal builtin function and not a front end or back end builtin
16667 before indexing into the built_in_decls array.
16668
16669 2009-05-22 Richard Guenther <rguenther@suse.de>
16670
16671 PR middle-end/38964
16672 * alias.c (write_dependence_p): Do not use TBAA for answering
16673 anti-dependence or output-dependence.
16674 * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
16675 (emit_pointer_definition): Remove.
16676 (emit_alias_warning): Likewise.
16677 (find_what_var_points_to): Remove TBAA pruning code.
16678 (find_what_p_points_to): Likewise. Do not warn about strict-aliasing
16679 violations.
16680 (compute_points_to_sets): Remove code computing the set of
16681 dereferenced pointers.
16682 * tree-data-ref.c (dr_may_alias_p): Properly use the split
16683 oracle for querying anti and output dependencies.
16684 * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
16685 if TBAA may be applied.
16686 (refs_anti_dependent_p): New function.
16687 (refs_output_dependent_p): Likewise.
16688 * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
16689 (refs_output_dependent_p): Likewise.
16690 * doc/tree-ssa.texi (Memory model): New section.
16691 * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16692 * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16693 * cfgexpand.c (expand_gimple_basic_block): Do not handle
16694 GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
16695 * expr.c (expand_expr_real_1): Likewise.
16696 * gimple-low.c (lower_stmt): Likewise.
16697 * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
16698 (dump_gimple_cdt): Remove.
16699 * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16700 (gimple_size): Likewise.
16701 (walk_gimple_op): Likewise.
16702 (is_gimple_stmt): Likewise.
16703 (walk_stmt_load_store_addr_ops): Likewise.
16704 (gimple_build_cdt): Remove.
16705 * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
16706 * gimple.h (gimple_cdt_new_type): Remove.
16707 (gimple_cdt_new_type_ptr): Likewise.
16708 (gimple_cdt_set_new_type): Likewise.
16709 (gimple_cdt_location): Likewise.
16710 (gimple_cdt_location_ptr): Likewise.
16711 (gimple_cdt_set_location): Likewise.
16712 * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16713 * tree-cfg.c (remove_useless_stmts_1): Do not handle
16714 GIMPLE_CHANGE_DYNAMIC_TYPE.
16715 (verify_types_in_gimple_stmt): Likewise.
16716 * tree-inline.c (estimate_num_insns): Likewise.
16717 (expand_call_inline): Do not copy DECL_NO_TBAA_P.
16718 (copy_decl_to_var): Likewise.
16719 (copy_result_decl_to_var): Likewise.
16720 * tree-pretty-print.c (dump_generic_node): Do not handle
16721 CHANGE_DYNAMIC_TYPE_EXPR.
16722 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
16723 * tree-ssa-operands.c (get_expr_operands): Likewise.
16724 * tree-ssa-structalias.c (struct variable_info): Remove
16725 no_tbaa_pruning member.
16726 (new_var_info): Do not set it based on DECL_NO_TBAA_P.
16727 (unify_nodes): Do not copy it.
16728 (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
16729 (dump_solution_for_var): Do not dump no_tbaa_pruning state.
16730 (set_uids_in_ptset): Do not check it.
16731 (find_what_var_points_to): Likewise.
16732 (compute_tbaa_pruning): Remove.
16733 (compute_points_to_sets): Do not call it.
16734 * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
16735 * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
16736 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
16737 (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
16738 (DECL_NO_TBAA_P): Likewise.
16739 (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
16740 * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
16741 (expand_omp_atomic_pipeline): Do not set it.
16742 * print-tree.c (print_node): Do not dump it.
16743 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
16744 redundant check.
16745
16746 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
16747
16748 PR target/39856
16749 * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
16750 for clobber.
16751
16752 2009-05-22 Mark Mitchell <mark@codesourcery.com>
16753
16754 * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
16755 non-external.
16756
16757 2009-05-22 Ben Elliston <bje@au.ibm.com>
16758
16759 * Makefile.in (bversion.h, s-bversion): New targets.
16760 (TOPLEV_H): Add bversion.h.
16761 * toplev.h: Include "bversion.h".
16762 (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
16763 the __format__ attribute only if compiling with the same version
16764 of GCC as the sources (the "build version").
16765
16766 2009-05-22 Ben Elliston <bje@au.ibm.com>
16767
16768 * c-format.c (handle_format_attribute): Fix comment typo.
16769
16770 2009-05-21 Steve Ellcey <sje@cup.hp.com>
16771
16772 PR target/37846
16773 * config/ia64/ia64.opt (mfused-madd): New.
16774 * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
16775 * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
16776 * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
16777 madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
16778 nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
16779 msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
16780 nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
16781 * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
16782 instruction if !TARGET_FUSED_MADD.
16783 (fpma, fpms): Remove colon from name.
16784
16785 2009-05-22 Richard Guenther <rguenther@suse.de>
16786
16787 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
16788 TMR_ORIGINAL. Always either record TMR_SYMBOL or TMR_BASE.
16789 * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
16790 TARGET_MEM_REF.
16791 (create_expression_by_pieces): Only convert if necessary.
16792 * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
16793 * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
16794
16795 2009-05-21 Adam Nemet <anemet@caviumnetworks.com>
16796
16797 * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
16798 regular pattern from a template and rename it ...
16799 (*extzv_truncsi_exts): ... to this.
16800
16801 2009-05-21 Richard Guenther <rguenther@suse.de>
16802
16803 * cgraph.h (struct cgraph_node): Remove inline_decl member.
16804 * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
16805 (cgraph_default_inline_p): Likewise.
16806 (cgraph_decide_inlining_incrementally): Likewise.
16807
16808 2009-05-21 H.J. Lu <hongjiu.lu@intel.com>
16809 Uros Bizjak <ubizjak@gmail.com>
16810
16811 * config/i386/cpuid.h (bit_MOVBE): New.
16812
16813 * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
16814
16815 * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
16816 (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
16817 (ix86_handle_option): Handle OPT_mmovbe.
16818 (ix86_target_string): Add -mmovbe.
16819 (pta_flags): Add PTA_MOVBE.
16820 (processor_alias_table): Add PTA_MOVBE to "atom".
16821 (override_options): Handle PTA_MOVBE.
16822
16823 * config/i386/i386.h (TARGET_MOVBE): New.
16824
16825 * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
16826 (*bswapsi_movbe): New.
16827 (*bswapdi_movbe): Likewise.
16828 (bswapdi2): Renamed to ...
16829 (*bswapdi_1): This.
16830 (bswapdi2): New expander.
16831
16832 * config/i386/i386.opt (mmovbe): New.
16833
16834 * doc/invoke.texi: Document -mmovbe.
16835
16836 2009-05-21 Taras Glek <tglek@mozilla.com>
16837
16838 * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
16839 * gcc-plugin.h (plugin_init): Updated signature.
16840 * gcc-plugin.h (plugin_name_args): Moved to this header.
16841 * doc/plugins.texi (plugin_init): Updated documention to reflect
16842 API change.
16843 * doc/plugins.texi (plugin_name_args): Added to documention.
16844
16845 2009-05-21 Mark Mitchell <mark@codesourcery.com>
16846
16847 * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
16848 (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
16849
16850 2009-05-21 Shujing Zhao <pearly.zhao@oracle.com>
16851
16852 * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
16853 JUMP_TABLE_DATA_P predicates where applicable.
16854 * config/i386/predicates.md: Ditto.
16855 * config/i386/sse.md: Ditto.
16856
16857 2009-05-21 Jakub Jelinek <jakub@redhat.com>
16858
16859 * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
16860 operand2 -128 override length_immediate attribute to 1.
16861 * config/i386/predicates.md (constm128_operand): New predicate.
16862
16863 * config/i386/i386.c (memory_address_length): Handle %r12
16864 the same as %rsp and %r13 the same as %rbp. For %rsp and %rbp
16865 also check REGNO.
16866 (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
16867 mode look through optional ZERO_EXTEND and SUBREG.
16868 * config/i386/i386.md (R12_REG): New define_constant.
16869 (prefix_data16): For sse unit set also for MODE_TI insns.
16870 (prefix_rex): For -m32 always return 0. For TYPE_IMOVX
16871 insns set if operand 1 is ext_QIreg_operand.
16872 (modrm): For TYPE_IMOV clear only if not MODE_DI. For
16873 TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
16874 immediate.
16875 (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
16876 mode from MODE_DI to MODE_SI.
16877 (movdi_1_rex64): Override modrm and length_immediate attributes
16878 only for movabs (TYPE_IMOV, alternative 2).
16879 (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
16880 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
16881 *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
16882 *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
16883 *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
16884 prefix_rex attribute if DImode.
16885 (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
16886 *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
16887 *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
16888 *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
16889 attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
16890 (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
16891 Likewise. For TYPE_IMOV clear length_immediate attribute.
16892 (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
16893 *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
16894 *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
16895 *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
16896 *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
16897 or one operand TYPE_ISHIFT.
16898 (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
16899 *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
16900 *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
16901 *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
16902 *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
16903 *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
16904 *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
16905 *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
16906 *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
16907 *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
16908 *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
16909 *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
16910 *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
16911 *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
16912 *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
16913 *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
16914 *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
16915 set mode attribute, don't override length attribute.
16916 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
16917 to 1.
16918 (return_internal_long): Set length attribute to 2 instead of 1.
16919 (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
16920 *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
16921 prefix_rex attribute.
16922 * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
16923 New predicates.
16924 (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
16925
16926 2009-05-21 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
16927
16928 * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
16929
16930 2009-05-20 Ian Lance Taylor <iant@google.com>
16931
16932 * tree.c (build_tree_list_vec_stat): New function.
16933 (ctor_to_vec): New function.
16934 (build_nt_call_vec): New function.
16935 (build_call_array): Change args to be a const pointer.
16936 (build_call_vec): New function.
16937 * tree.h (build_nt_call_vec): Declare.
16938 (build_tree_list_vec_stat): Declare.
16939 (build_tree_list_vec): Define.
16940 (build_call_array): Update declaration.
16941 (build_call_vec): Declare.
16942 (ctor_to_vec): Declare.
16943 * c-common.c (tree_vector_cache): New static variable.
16944 (make_tree_vector): New function.
16945 (release_tree_vector): New function.
16946 (make_tree_vector_single): New function.
16947 (make_tree_vector_copy): New function.
16948 * c-common.h (tree_vector_cache, make_tree_vector): Declare.
16949 (make_tree_vector_single, make_tree_vector_copy): Declare.
16950 * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
16951 (c_parser_expr_list): Don't manage cache here, instead call
16952 make_tree_vector.
16953 (c_parser_release_expr_list): Remove static function.
16954 (c_parser_vec_to_tree_list): Remove static function.
16955 (c_parser_attributes): Call build_tree_list_vec instead of
16956 c_parser_vec_to_tree_list. Call release_tree_vector instead of
16957 c_parser_release_expr_list.
16958 (c_parser_postfix_expression_after_primary): Likewise.
16959 (c_parser_objc_keywordexpr): Likewise.
16960
16961 2009-05-20 Sandra Loosemore <sandra@codesourcery.com>
16962
16963 * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
16964 TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
16965 TARGET_CONVERT_TO_TYPE.
16966 * hooks.c (hook_tree_const_tree_null): Define.
16967 * hooks.h (hook_tree_const_tree_null): Declare.
16968 * target.h (struct gcc_target): Add invalid_parameter_type,
16969 invalid_return_type, promoted_type, and convert_to_type fields.
16970 * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
16971 (TARGET_INVALID_RETURN_TYPE): Define.
16972 (TARGET_PROMOTED_TYPE): Define.
16973 (TARGET_CONVERT_TO_TYPE): Define.
16974 (TARGET_INITIALIZER): Update for new fields.
16975 * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
16976 (grokparms): Check targetm.invalid_parameter_type.
16977 * c-typeck.c (default_conversion): Check targetm.promoted_type.
16978 * c-convert.c (convert): Check targetm.convert_to_type.
16979
16980 2009-05-20 Adam Nemet <anemet@caviumnetworks.com>
16981
16982 * config/mips/mips.md (*extenddi_truncate<mode>,
16983 *extendsi_truncate<mode>): Emit exts if supported. Add attribute
16984 defintions.
16985 (*extendhi_truncateqi): New define_insn_and_sptit.
16986
16987 2009-05-20 Jakub Jelinek <jakub@redhat.com>
16988
16989 PR middle-end/40204
16990 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
16991 recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
16992
16993 2009-05-20 Eric Botcazou <ebotcazou@adacore.com>
16994
16995 * fold-const.c (build_fold_addr_expr_with_type): Take the address of
16996 the operand of VIEW_CONVERT_EXPR.
16997
16998 2009-05-20 H.J. Lu <hongjiu.lu@intel.com>
16999
17000 * config/i386/driver-i386.c (host_detect_local_cpu): Check
17001 extended family and model for Intel processors. Support Intel Atom.
17002
17003 2009-05-20 Olivier Hainque <hainque@adacore.com>
17004
17005 * gstab.h (stab_code_type): Define, to be used instead of the
17006 __stab_debug_code enum, made anonymous. Add 2009 to the copyright
17007 notice.
17008 * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
17009 occurrences by stab_code_type.
17010 * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
17011
17012 2009-05-20 Martin Jambor <mjambor@suse.cz>
17013
17014 * tree-flow.h (insert_edge_copies_seq): Undeclare.
17015 (sra_insert_before): Likewise.
17016 (sra_insert_after): Likewise.
17017 (sra_init_cache): Likewise.
17018 (sra_type_can_be_decomposed_p): Likewise.
17019 * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
17020 * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
17021 (sra_insert_before): Likewise.
17022 (sra_insert_after): Likewise.
17023 (sra_init_cache): Likewise.
17024 (insert_edge_copies_seq): Made static and moved upwards.
17025
17026 * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
17027 case.
17028
17029 * tree-flow-inline.h (contains_view_convert_expr_p): New function.
17030
17031 * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
17032 (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
17033 simple copies.
17034
17035 2009-05-20 Richard Guenther <rguenther@suse.de>
17036
17037 * expr.c (expand_expr_real_1): Avoid calling do_store_flag
17038 with mismatched comparison modes.
17039
17040 2009-05-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
17041
17042 * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
17043 (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
17044 * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
17045 with shifts for Thumb2.
17046 (orsi_notsi): New for orn.
17047 (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
17048 (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
17049 * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
17050 (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
17051 Don't invert remainder for IOR.
17052
17053 2009-05-19 Zdenek Dvorak <ook@ucw.cz>
17054
17055 PR tree-optimization/40087
17056 * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
17057 number_of_iterations_ne): Rename never_infinite argument.
17058 (number_of_iterations_lt_to_ne, number_of_iterations_lt,
17059 number_of_iterations_le): Handle pointer-type ivs when
17060 exit_must_be_taken is false.
17061 (number_of_iterations_cond): Do not always assume that
17062 exit_must_be_taken if the control variable is a pointer.
17063
17064 2009-05-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
17065
17066 * c-typeck.c (build_binary_op): Allow % on integal vectors.
17067 * doc/extend.texi (Vector Extension): Document that % is allowed too.
17068
17069 2009-05-19 H.J. Lu <hongjiu.lu@intel.com>
17070
17071 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
17072 ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
17073
17074 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
17075
17076 PR c/40172
17077 * c.opt (Wlogical-op): Disabled by default.
17078 * c-opt (c_common_post_options): Do not enable Wlogical-op with
17079 Wextra.
17080 * doc/invoke.texi (Wlogical-op): Likewise.
17081
17082 2009-05-19 Eric Botcazou <ebotcazou@adacore.com>
17083
17084 * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
17085 into CASE_CONVERT.
17086 <PLUS_EXPR>: Strip useless type conversions instead of type nops.
17087 Propagate the type of the first operand.
17088 <ASSERT_EXPR>: Simplify.
17089 (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
17090 Rewrite using the RHS code as discriminant.
17091 <NOP_EXPR>: Turn into CASE_CONVERT.
17092 <PLUS_EXPR>: Propagate the type of the first operand.
17093
17094 2009-05-19 Steve Ellcey <sje@cup.hp.com>
17095
17096 * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
17097 (ia64_dconst_0_375): New.
17098 * config/ia64/ia64.c (ia64_override_options): Remove
17099 -minline-sqrt-min-latency warning.
17100 (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
17101 (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
17102 * config/ia64/ia64.md (*sqrt_approx): Remove.
17103 (sqrtsf2): Remove #if 0.
17104 (sqrtsf2_internal_thr): Rewrite and move to div.md.
17105 (sqrtdf): Remove assert.
17106 (sqrtdf2_internal_thr): Rewrite and move to div.md.
17107 (sqrtxf2): Remove #if 0.
17108 (sqrtxf2_internal_thr): Rewrite and move to div.md.
17109 * div.md (sqrt_approx_rf): New.
17110 (sqrtsf2_internal_thr): New implementation.
17111 (sqrtsf2_internal_lat): New.
17112 (sqrtdf2_internal_thr: New implementation.
17113 (sqrtxf2_internal): New implementation.
17114
17115 2009-05-19 Francois-Xavier Coudert <fxcoudert@gmail.com>
17116 Hans-Peter Nilsson <hp@axis.com>
17117
17118 * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
17119 (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
17120 (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
17121 (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
17122 (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
17123 (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
17124 (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
17125 (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
17126 (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
17127 (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
17128 * c-common.c: ...from here.
17129
17130 2009-05-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
17131
17132 * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
17133
17134 2009-05-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
17135
17136 * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
17137
17138 2009-05-19 Ben Elliston <bje@au.ibm.com>
17139
17140 * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
17141 assignments with memcpy calls.
17142 (add_fdes): Likewise.
17143 (binary_search_unencoded_fdes): Likewise.
17144 (linear_search_fdes): Eliminate type puns.
17145
17146 2009-05-19 Richard Guenther <rguenther@suse.de>
17147
17148 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
17149 not falsely claim to have propagated into all uses.
17150
17151 2009-05-19 Ben Elliston <bje@au.ibm.com>
17152
17153 * doc/invoke.texi (C Dialect Options): Update OpenMP specification
17154 version to v3.0.
17155
17156 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
17157
17158 * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
17159 * config/sh/sh.c (sh_legitimate_address_p): Make static.
17160 (TARGET_LEGITIMATE_ADDRESS_P): New.
17161 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17162 * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17163
17164 2009-05-18 Dodji Seketeli <dodji@redhat.com>
17165
17166 PR debug/40109
17167 * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
17168 child of the containing namespace's DIE.
17169
17170 2009-05-18 Adam Nemet <anemet@caviumnetworks.com>
17171
17172 * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
17173 *zero_extendhi_truncqi): Move after the zero_extend patterns.
17174 (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
17175 extend patterns.
17176
17177 2009-05-18 H.J. Lu <hongjiu.lu@intel.com>
17178
17179 PR target/39942
17180 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
17181 gen_align with gen_pad.
17182 (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
17183 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
17184
17185 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
17186 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
17187
17188 * config/i386/i386.md (align): Renamed to ...
17189 (pad): This. Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
17190 ASM_OUTPUT_MAX_SKIP_PAD.
17191
17192 2009-05-18 Andreas Schwab <schwab@linux-m68k.org>
17193
17194 * config.gcc: Fix variable syntax.
17195
17196 PR target/39531
17197 * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
17198 before calling exact_log2.
17199 (output_iorsi3): Likewise.
17200 (output_xorsi3): Likewise.
17201
17202 2009-05-18 Kaz Kojima <kkojima@gcc.gnu.org>
17203
17204 * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
17205 for the none zero constant operand except for EQ and NE
17206 comprisons even when the first operand is R0.
17207
17208 2009-05-18 Andreas Krebbel <krebbel1@de.ibm.com>
17209
17210 * config/s390/2064.md: Remove trailing whitespaces.
17211 * config/s390/2084.md: Likewise.
17212 * config/s390/constraints.md: Likewise.
17213 * config/s390/fixdfdi.h: Likewise.
17214 * config/s390/libgcc-glibc.ver: Likewise.
17215 * config/s390/s390-modes.def: Likewise.
17216 * config/s390/s390-protos.h: Likewise.
17217 * config/s390/s390.c: Likewise.
17218 * config/s390/s390.h: Likewise.
17219 * config/s390/s390.md: Likewise.
17220 * config/s390/tpf-unwind.h: Likewise.
17221
17222 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
17223
17224 * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
17225
17226 2009-05-18 Maxim Kuvyrkov <maxim@codesourcery.com>
17227
17228 M68K TLS support.
17229 * configure.ac (m68k-*-*): Check if binutils support TLS.
17230 * configure: Regenerate.
17231 * config/m68k/predicates.md (symbolic_operand): Extend comment.
17232 * config/m68k/constraints.md (Cu): New constraint.
17233 * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
17234 (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
17235 (movsi): Handle TLS symbols.
17236 (addsi3_5200): Handle XTLS symbols, indent.
17237 * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
17238 (m68k_tls_reference_p): Declare.
17239 (m68k_legitimize_address): Declare.
17240 (m68k_unwrap_symbol): Declare.
17241 * config/m68k/m68k.opt (mxtls): New option.
17242 * config/m68k/m68k.c (ggc.h): Include.
17243 (m68k_output_dwarf_dtprel): Implement hook.
17244 (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
17245 (m68k_expand_prologue): Load GOT pointer when function needs it.
17246 (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
17247 (m68k_legitimate_constant_address_p): Same.
17248 (m68k_decompose_address): Handle TLS references.
17249 (m68k_get_gp): New static function.
17250 (enum m68k_reloc): New contants.
17251 (TLS_RELOC_P): New macro.
17252 (m68k_wrap_symbol): New static function.
17253 (m68k_unwrap_symbol): New function.
17254 (m68k_final_prescan_insn_1): New static function.
17255 (m68k_final_prescan_insn): New function.
17256 (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
17257 functions.
17258 (legitimize_pic_address): Handle TLS references..
17259 (m68k_tls_get_addr, m68k_get_tls_get_addr)
17260 (m68k_libcall_value_in_a0_p)
17261 (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
17262 (m68k_call_m68k_read_tp): Helper variables and functions for ...
17263 (m68k_legitimize_tls_address): Handle TLS references.
17264 (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
17265 New functions.
17266 (m68k_legitimize_address): Handle TLS symbols.
17267 (m68k_get_reloc_decoration): New static function.
17268 (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
17269 UNSPEC_RELOC32.
17270 (m68k_output_dwarf_dtprel): Implement hook.
17271 (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
17272 (m68k_libcall_value): Return result in A0 instead of D0 when asked by
17273 m68k_call_* routines.
17274 (sched_attr_op_type): Handle TLS symbols.
17275 (gt-m68k.h): Include.
17276 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
17277 (LEGITIMATE_PIC_OPERAND_P): Support TLS.
17278
17279 2009-05-18 Martin Jambor <mjambor@suse.cz>
17280
17281 * ipa-prop.c (ipa_check_stmt_modifications): Removed.
17282 (visit_store_addr_for_mod_analysis): New function.
17283 (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
17284 (determine_cst_member_ptr): Use gimple_assign_single_p.
17285 (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
17286 (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
17287 operands. Don't check number of operands of a NOP_EXPR.
17288
17289 2009-05-18 Eric Fisher <joefoxreal@gmail.com>
17290
17291 * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
17292
17293 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org>
17294
17295 PR c/40172
17296 * c-common.c (warn_logical_operator): Don't warn if one of
17297 expression isn't always true or false.
17298
17299 2009-05-17 Kai Tietz <kai.tietz@onevision.com>
17300
17301 * config/i386/biarch32.h: New file.
17302 * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
17303
17304 2009-05-17 Adam Nemet <anemet@caviumnetworks.com>
17305
17306 * config/mips/mips.md (*zero_extend<mode>_trunchi,
17307 *zero_extend<mode>_truncqi): Merge these into ...
17308 (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
17309 Name the pattern following this as *zero_extendhi_truncqi.
17310
17311 2009-05-16 Brad Lucier <lucier@math.purdue.edu>
17312
17313 PR middle-end/39301
17314 * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
17315 * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
17316 (output_info): Make field HOST_WIDEST_INT.
17317 (print_statistics): Use HOST_WIDEST_INT_PRINT.
17318 (dump_bitmat_statistics): Same.
17319
17320 2009-05-16 Francois-Xavier Coudert <fxcoudert@gmail.com>
17321
17322 * config.gcc (use_gcc_stdint): Set to wrap.
17323 * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
17324 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
17325 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
17326 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
17327 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
17328 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
17329 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
17330 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
17331
17332 2009-05-16 Joseph Myers <joseph@codesourcery.com>
17333
17334 * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
17335 tune_64.
17336 * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
17337 Move definitions earlier.
17338 (OPT_ARCH64, OPT_ARCH32): Define.
17339 (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
17340 and tune_64.
17341
17342 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
17343
17344 PR target/40153
17345 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
17346 implies.
17347
17348 2009-05-16 Richard Earnshaw <rearnsha@arm.com>
17349
17350 * arm.md (movdi2): Copy non-reg values to DImode registers.
17351
17352 2009-05-16 Jakub Jelinek <jakub@redhat.com>
17353
17354 PR target/39942
17355 * final.c (label_to_max_skip): New function.
17356 (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
17357 CODE_LABEL_NUMBER <= max_labelno.
17358 * output.h (label_to_max_skip): New prototype.
17359 * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
17360 (ix86_avoid_jump_mispredicts): ... this. Don't define if
17361 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment.
17362 Handle CODE_LABELs with >= 16 byte alignment or with
17363 max_skip == (1 << align) - 1.
17364 (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
17365 ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
17366
17367 PR target/39942
17368 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
17369 .p2align 3 if MAX_SKIP is smaller than 7.
17370 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17371
17372 2009-05-15 Ian Lance Taylor <iant@google.com>
17373
17374 * alias.c (struct alias_set_entry_d): Rename from struct
17375 alias_set_entry. Change all uses.
17376 * except.c (struct call_site_record_d): Rename from struct
17377 call_site_record. Change all uses.
17378 * except.h (struct eh_region_d): Rename from struct eh_region.
17379 Change all uses.
17380 * gcse.c (struct hash_table_d): Rename from struct hash_table.
17381 Change all uses.
17382 * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
17383 ivtype_map_elt. Change all uses.
17384 (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
17385 Change all uses.
17386 (struct ifsese_d): Rename fromstruct ifsese. Change all uses.
17387 * graphite.h (struct name_tree_d): Rename from struct name_tree.
17388 Change all uses.
17389 (struct sese_d): Rename from struct sese. Change all uses.
17390 * omega.h (struct eqn_d): Rename from struct eqn. Change all uses.
17391 (struct omega_pb_d): Rename from struct omega_pb. Change all uses.
17392 * optabs.h (struct optab_d): Rename from struct optab. Change all
17393 uses.
17394 (struct convert_optab_d): Rename from struct convert_optab.
17395 Change all uses.
17396 * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
17397 ipa_opt_pass. Change all uses.
17398 * tree-predcom.c (struct dref_d): Rename from struct dref. Change
17399 all uses.
17400
17401 * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
17402 defined as a typedef.
17403 (grokdeclarator): If -Wc++-compat, warn if a typedef is already
17404 defined as a tag.
17405
17406 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
17407
17408 PR 16302
17409 * fold-const.c (make_range,build_range_check,merge_ranges): Move
17410 declaration to...
17411 (merge_ranges): Returns bool.
17412 * tree.h (make_range): .. to here.
17413 (build_range_check): Likewise.
17414 (merge_ranges): Likewise. Renamed from merge_ranges.
17415 * c-typeck.c (parser_build_binary_op): Update calls to
17416 warn_logical_operator.
17417 * c-common.c (warn_logical_operator): Add new warning.
17418 * c-common.h (warn_logical_operator): Update declaration.
17419
17420 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
17421
17422 * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
17423
17424 2009-05-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
17425
17426 * doc/install.texi: Document MPC requirements, flags etc.
17427
17428 * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
17429 (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
17430 Evaluate constant arguments.
17431 (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
17432 (fold_builtin_1): Likewise, also evaluate constant arguments.
17433 Remove superfluous break.
17434 (do_mpc_ckconv): New.
17435 * real.h: Include mpc.h.
17436 * toplev.c (print_version): Output MPC version info if available.
17437
17438 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
17439
17440 * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
17441
17442 2009-05-15 H.J. Lu <hongjiu.lu@intel.com>
17443
17444 * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
17445 only once.
17446
17447 2009-05-15 Jan Hubicka <jh@suse.cz>
17448
17449 * doc/invoke.texi (max-early-inliner-iterations): New flag.
17450 * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
17451 (try_inline): Fix return value.
17452 (cgraph_decide_inlining_incrementally): Honor new value.
17453 (cgraph_early_inlining): Handle indirect inlining.
17454 * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
17455
17456 2009-05-15 Jan Hubicka <jh@suse.cz>
17457
17458 * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
17459 * cgraphunit.c (cgraph_finalize_function): Set it.
17460 (cgraph_expand_function): Use it.
17461
17462 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
17463
17464 * real.c (encode_ieee_half): Define.
17465 (decode_ieee_half): Define.
17466 (ieee_half_format): Define.
17467 (arm_half_format): Define.
17468 * real.h (ieee_half_format): Declare.
17469 (arm_half_format): Declare.
17470
17471 2009-05-15 Sandra Loosemore <sandra@codesourcery.com>
17472
17473 * optabs.c (prepare_float_lib_cmp): Test that the comparison,
17474 swapped, and reversed optabs exist before trying to use them.
17475
17476 2009-05-15 Paul Brook <paul@codesourcery.com>
17477 Sandra Loosemore <sandra@codesourcery.com>
17478
17479 * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
17480 loads. Allow PRE_DEC.
17481 (output_move_neon): Handle PRE_DEC.
17482 (arm_print_operand): Add 'A' for neon structure loads.
17483 * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
17484 * config/arm/neon.md (neon_mov): Update comment.
17485 * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
17486 calls.
17487 (Um): New constraint.
17488
17489 2009-05-15 Jan Hubicka <jh@suse.cz>
17490
17491 Revert the following patch until testsuite fallout is fixed:
17492 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17493 * cgraph.h (struct inline_summary): New filed self_wize,
17494 size_inlining_benefit, self_time and time_inlining_benefit.
17495 (struct cgraph_global_info): Replace insns by time ans size fields.
17496 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17497 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17498 (ipcp_update_callgraph): Do not touch function bodies.
17499 * ipa-inline.c: Include except.h
17500 (MAX_TIME): New constant.
17501 (overall_insns): Remove
17502 (overall_size, max_benefit): New static variables.
17503 (cgraph_estimate_time_after_inlining): New function.
17504 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17505 (cgraph_clone_inlined_nodes): Update size.
17506 (cgraph_mark_inline_edge): Update size.
17507 (cgraph_estimate_growth): Use size info.
17508 (cgraph_check_inline_limits): Check size.
17509 (cgraph_default_inline_p): Likewise.
17510 (cgraph_edge_badness): Compute badness based on benefit and size cost.
17511 (cgraph_decide_recursive_inlining): Check size.
17512 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17513 and times.
17514 (cgraph_decide_inlining): Likewise.
17515 (cgraph_decide_inlining_incrementally): Likewise; honor
17516 PARAM_EARLY_INLINING_INSNS.
17517 (likely_eliminated_by_inlining_p): New predicate.
17518 (estimate_function_body_sizes): New function.
17519 (compute_inline_parameters): Use it.
17520 * except.c (must_not_throw_labels): New function.
17521 * except.h (must_not_throw_labels): Declare.
17522 * tree-inline.c (init_inline_once): Kill inlining_weigths
17523 * tree-ssa-structalias.c: Avoid uninitialized warning.
17524 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17525 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17526 (PARAM_INLINE_CALL_COST): Remove.
17527 (PARAM_EARLY_INLINING_INSNS): New.
17528
17529 2009-05-15 Richard Guenther <rguenther@suse.de>
17530
17531 * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
17532 not TODO_update_ssa.
17533
17534 2009-05-15 Richard Guenther <rguenther@suse.de>
17535
17536 PR tree-optimization/39999
17537 * gimple.h (gimple_expr_type): Use the expression type looking
17538 through useless conversions.
17539 * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
17540 (vn_nary_op_insert_stmt): Likewise.
17541 (simplify_binary_expression): Likewise.
17542
17543 2009-05-15 Richard Guenther <rguenther@suse.de>
17544
17545 * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17546 New options, enabled by default.
17547 * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
17548 Document.
17549 * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
17550 * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
17551 * tree-ssa-structalias.c (gate_tree_pta): New function.
17552 (pass_build_alias): Use it.
17553
17554 2009-05-15 Joseph Myers <joseph@codesourcery.com>
17555
17556 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
17557 recurse on an invariant address if a conversion from a pointer
17558 type to a wider integer type is involved.
17559
17560 2009-05-15 Jan Hubicka <jh@suse.cz>
17561
17562 * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
17563 * cgraph.h (struct inline_summary): New filed self_wize,
17564 size_inlining_benefit, self_time and time_inlining_benefit.
17565 (struct cgraph_global_info): Replace insns by time ans size fields.
17566 * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
17567 (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
17568 (ipcp_update_callgraph): Do not touch function bodies.
17569 * ipa-inline.c: Include except.h
17570 (MAX_TIME): New constant.
17571 (overall_insns): Remove
17572 (overall_size, max_benefit): New static variables.
17573 (cgraph_estimate_time_after_inlining): New function.
17574 (cgraph_estimate_size_after_inlining): Rewrite using benefits.
17575 (cgraph_clone_inlined_nodes): Update size.
17576 (cgraph_mark_inline_edge): Update size.
17577 (cgraph_estimate_growth): Use size info.
17578 (cgraph_check_inline_limits): Check size.
17579 (cgraph_default_inline_p): Likewise.
17580 (cgraph_edge_badness): Compute badness based on benefit and size cost.
17581 (cgraph_decide_recursive_inlining): Check size.
17582 (cgraph_decide_inlining_of_small_function): Update size; dump sizes
17583 and times.
17584 (cgraph_decide_inlining): Likewise.
17585 (cgraph_decide_inlining_incrementally): Likewise; honor
17586 PARAM_EARLY_INLINING_INSNS.
17587 (likely_eliminated_by_inlining_p): New predicate.
17588 (estimate_function_body_sizes): New function.
17589 (compute_inline_parameters): Use it.
17590 * except.c (must_not_throw_labels): New function.
17591 * except.h (must_not_throw_labels): Declare.
17592 * tree-inline.c (init_inline_once): Kill inlining_weigths
17593 * tree-ssa-structalias.c: Avoid uninitialized warning.
17594 * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
17595 (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
17596 (PARAM_INLINE_CALL_COST): Remove.
17597 (PARAM_EARLY_INLINING_INSNS): New.
17598 doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
17599 (inline-call-cost): Remove.
17600 (early-inlining-insns): New.
17601
17602 2009-05-15 Eric Botcazou <ebotcazou@adacore.com>
17603
17604 * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them
17605 for bounds.
17606 (print_int_cst_bounds_in_octal_p): Likewise.
17607 (dbxout_type): Adjust calls to above functions. Be prepared to deal
17608 with subtypes.
17609 * dwarf2out.c (base_type_die): Likewise.
17610 (is_subrange_type): Delete.
17611 (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds.
17612 (modified_type_die): Call subrange_type_for_debug_p on subtypes.
17613 * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
17614 if the destination type is boolean.
17615 (build_range_check): Do not special-case subtypes.
17616 (fold_sign_changed_comparison): Likewise.
17617 (fold_unary): Likewise.
17618 * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
17619 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
17620 * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
17621 * tree.c (subrange_type_for_debug_p): New predicate based on the
17622 former is_subrange_type.
17623 * tree.h (subrange_type_for_debug_p): Declare.
17624 * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
17625 (convert_affine_scev): Remove call to above function.
17626 (chrec_convert_aggressive): Likewise.
17627 * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
17628 false for conversions involving subtypes.
17629 * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
17630 (vrp_val_min): Likewise.
17631 (needs_overflow_infinity): Likewise.
17632 (extract_range_from_unary_expr): Likewise.
17633
17634 2009-05-15 Paolo Bonzini <bonzini@gnu.org>
17635
17636 * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
17637 * config/frv/frv.c: Likewise.
17638 * config/s390/s390.c: Likewise.
17639 * config/sparc/sparc.h: Likewise.
17640 * config/i386/i386.h: Likewise.
17641 * config/i386/i386.c: Likewise.
17642 * config/crx/crx.c: Likewise.
17643 * config/m68hc11/m68hc11.h: Likewise.
17644 * config/iq2000/iq2000.c: Likewise.
17645 * config/mn10300/mn10300.h: Likewise.
17646 * config/mn10300/mn10300.c: Likewise.
17647 * config/m68k/m68k.c: Likewise.
17648 * config/rs6000/rs6000.c: Likewise.
17649 * config/rs6000/xcoff.h: Likewise.
17650 * config/rs6000/linux64.h: Likewise.
17651 * config/rs6000/sysv4.h: Likewise.
17652 * config/score/score3.c: Likewise.
17653 * config/score/score7.c: Likewise.
17654 * config/score/score.c: Likewise.
17655 * config/arm/arm.md: Likewise.
17656 * config/mips/mips.c: Likewise.
17657 * config/mips/mips.md: Likewise.
17658 * config/bfin/bfin.h: Likewise.
17659 * config/pa/pa.c: Likewise.
17660 * config/pa/constraints.md: Likewise.
17661
17662 * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
17663 * config/pdp11/pdp11.c (legitimate_address_p): Delete.
17664 * config/pdp11/pdp11.h: Use memory_address_p instead.
17665
17666 2009-05-14 Ian Lance Taylor <iant@google.com>
17667
17668 * passes.c (finish_optimization_passes): Change i to int.
17669 * plugin.c (plugins_active_p): Change event to int.
17670 (dump_active_plugins): Likewise.
17671 * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
17672 Add cast.
17673 * tree.c (tree_range_check_failed): Change c to unsigned int.
17674 (omp_clause_range_check_failed): Likewise.
17675 (build_common_builtin_nodes): Change mode to int. Add cast.
17676 * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
17677 (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
17678
17679 * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
17680 ++ or -- with a variable of enum type.
17681
17682 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
17683
17684 PR driver/40144
17685 * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
17686
17687 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
17688
17689 * store-motion.c: Do not include params.h
17690 * Makefile.in: Fix dependencies for various files.
17691
17692 2009-05-14 Steven Bosscher <steven@gcc.gnu.org>
17693
17694 * auto-inc-dec.c: Fix pass description, remove apparent
17695 accidental duplication.
17696
17697 2009-05-14 H.J. Lu <hongjiu.lu@intel.com>
17698
17699 PR middle-end/40147
17700 * ipa-utils.h (memory_identifier_string): Moved to ...
17701 * tree.h (memory_identifier_string): Here. Add GTY(()).
17702
17703 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
17704
17705 * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
17706 in the former documentation of...
17707 (GO_IF_LEGITIMATE_ADDRESS): ... this.
17708 * ira-conflicts.c (get_dup_num): Use address_operand.
17709 * targhooks.c (default_legitimate_address_p): New.
17710 * targhooks.h (default_legitimate_address_p): New.
17711 * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
17712 Call hook.
17713 * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
17714 * target.h (struct target): Add legitimate_address_p.
17715 * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
17716 (TARGET_INITIALIZER): Include it.
17717
17718 * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17719 * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
17720 * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
17721 (TARGET_LEGITIMATE_ADDRESS_P): New.
17722
17723 * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17724 (REG_OK_STRICT_P): Delete.
17725 * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
17726 (frv_legitimate_address_p_1): ... this.
17727 * config/frv/frv.c (frv_legitimate_address_p): Forward to...
17728 (frv_legitimate_address_p_1): ... the renamed old
17729 frv_legitimate_address_p.
17730 * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
17731 (TARGET_LEGITIMATE_ADDRESS_P): New.
17732
17733 * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17734 * config/s390/s390-protos.h (legitimate_address_p): Remove.
17735 * config/s390/s390.c (legitimate_address_p): Rename to...
17736 (s390_legitimate_address_p): ... this, make static.
17737 (legitimize_address): Adjust call.
17738 (TARGET_LEGITIMATE_ADDRESS_P): New.
17739 * config/s390/constraints.md ("e"): Call strict_memory_address_p.
17740
17741 * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17742 * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
17743 * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
17744 (TARGET_LEGITIMATE_ADDRESS_P): New.
17745
17746 * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17747 * config/spu/spu-protos.h (spu_legitimate_address): Remove.
17748 * config/spu/spu.c (spu_legitimate_address): Rename to...
17749 (spu_legitimate_address_p): ... this, make static.
17750 (TARGET_LEGITIMATE_ADDRESS_P): New.
17751
17752 * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17753 * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
17754 * config/sparc/sparc.c (legitimate_address_p): Rename to...
17755 (sparc_legitimate_address_p): ... this, make static and return bool.
17756 (legitimize_address): Adjust call.
17757 (TARGET_LEGITIMATE_ADDRESS_P): New.
17758
17759 * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17760 * config/i386/i386-protos.h (legitimate_address_p): Remove.
17761 * config/i386/i386.c (legitimate_address_p): Rename to...
17762 (ix86_legitimate_address_p): ... this, make static.
17763 (constant_address_p): Move after it, adjust call.
17764 (TARGET_LEGITIMATE_ADDRESS_P): New.
17765
17766 * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17767 * config/avr/avr-protos.h (legitimate_address_p): Remove.
17768 * config/avr/avr.c (legitimate_address_p): Rename to...
17769 (avr_legitimate_address_p): ... this, make static.
17770 (legitimize_address): Adjust call.
17771 (TARGET_LEGITIMATE_ADDRESS_P): New.
17772
17773 * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17774 * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
17775 * config/crx/crx.c (crx_legitimate_address_p): Make static.
17776 (TARGET_LEGITIMATE_ADDRESS_P): New.
17777
17778 * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17779 * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
17780 * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
17781 (TARGET_LEGITIMATE_ADDRESS_P): New.
17782
17783 * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17784 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
17785 Remove.
17786 * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
17787 Make static.
17788 (TARGET_LEGITIMATE_ADDRESS_P): New.
17789
17790 * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17791 * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
17792 Remove.
17793 * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
17794 Rename to...
17795 (m68hc11_legitimate_address_p): ... this, make static.
17796 (go_if_legitimate_address_internal): Rename to...
17797 (m68hc11_legitimate_address_p_1): ... this.
17798 (legitimize_address): Adjust call.
17799 (TARGET_LEGITIMATE_ADDRESS_P): New.
17800
17801 * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17802 * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
17803 * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
17804 (TARGET_LEGITIMATE_ADDRESS_P): New.
17805
17806 * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17807 * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
17808 * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
17809 (mn10300_legitimate_address_p): ... this, make static.
17810 (TARGET_LEGITIMATE_ADDRESS_P): New.
17811
17812 * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17813 * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
17814 * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
17815 (TARGET_LEGITIMATE_ADDRESS_P): New.
17816
17817 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17818 (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
17819 (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
17820 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17821 * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
17822 * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
17823 (rs6000_legitimate_address_p): ... this, make static.
17824 (TARGET_LEGITIMATE_ADDRESS_P): New.
17825 (REG_MODE_OK_FOR_BASE_P): Delete.
17826 (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
17827
17828 * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17829 * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
17830 Delete.
17831 * config/picochip/picochip.c (picochip_legitimate_address_p): Make
17832 static, adjust types.
17833 (TARGET_LEGITIMATE_ADDRESS_P): New.
17834
17835 * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17836 * config/score/score.c (score_address_p): Rename to...
17837 (score_legitimate_address_p): ... this.
17838 (TARGET_LEGITIMATE_ADDRESS_P): New.
17839 * config/score/score3.c (score3_address_p): Rename to...
17840 (score3_legitimate_address_p): ... this.
17841 * config/score/score7.c (score7_address_p): Rename to...
17842 (score7_legitimate_address_p): ... this.
17843
17844 * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
17845 THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
17846 GO_IF_LEGITIMATE_ADDRESS): Delete.
17847 * config/arm/arm-protos.h (thumb1_legitimate_address_p,
17848 thumb2_legitimate_address_p): Delete.
17849 (arm_legitimate_address_p): Rename to...
17850 (arm_legitimate_address_outer_p): ... this.
17851 * config/arm/constraints.md ("Uq"): Adjust call.
17852 * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
17853 * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
17854 to...
17855 (arm_legitimate_address_outer_p): ... this.
17856 (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
17857 static.
17858 (TARGET_LEGITIMATE_ADDRESS_P): New.
17859
17860 * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17861 * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
17862 * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
17863 (TARGET_LEGITIMATE_ADDRESS_P): New.
17864
17865 * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17866 * config/vax/vax-protos.h (legitimate_address_p): Remove.
17867 * config/vax/vax.c (legitimate_address_p): Rename to...
17868 (vax_legitimate_address_p): ... this, make static.
17869 (TARGET_LEGITIMATE_ADDRESS_P): New.
17870
17871 * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17872 * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
17873 * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
17874 (TARGET_LEGITIMATE_ADDRESS_P): New.
17875
17876 * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17877 * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
17878 * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
17879 (mmix_legitimate_address_p): ... this, make static.
17880 (TARGET_LEGITIMATE_ADDRESS_P): New.
17881
17882 * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
17883 * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
17884 * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
17885 (TARGET_LEGITIMATE_ADDRESS_P): New.
17886
17887 2009-05-14 Paolo Bonzini <bonzini@gnu.org>
17888
17889 * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
17890 of MODE_COMPLEX_INT.
17891
17892 2009-05-14 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
17893
17894 * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
17895 LCT_NORMAL in function call.
17896 * mips-tdump.c (print_file_desc): Add cast to enum type.
17897 * mips-tfile.c (add_ext_symbol): Add casts to enum types.
17898 (mark_stabs): Add casts to enum types.
17899 (parse_stabs_common): Add casts to enum types.
17900
17901 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
17902
17903 * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
17904 Check for invalid values of LETTER.
17905
17906 2009-05-13 Taras Glek <tglek@mozilla.com>
17907
17908 * attribs.c (register_attribute): moved out attribute registration
17909 into register_attribute.
17910 * doc/plugins.texi: Documented register_attribute and
17911 PLUGIN_ATTRIBUTES.
17912 * gcc-plugin.h: Added forward decl for register_attribute.
17913 * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
17914 * plugin.c (register_callback, invoke_plugin_callbacks): Added
17915 PLUGIN_ATTRIBUTES boilerplate.
17916
17917 2009-05-14 Dave Korn <dave.korn.cygwin@gmail.com>
17918
17919 * config/i386/msformat-c.c (ms_printf_length_specs): Use enumeration
17920 values even in sentinel and empty entries.
17921 (ms_printf_flag_specs): Likewise.
17922 (ms_scanf_flag_specs): Likewise.
17923 (ms_strftime_flag_specs): Likewise.
17924 (ms_print_char_table): Likewise.
17925 (ms_scan_char_table): Likewise.
17926 (ms_time_char_table): Likewise.
17927
17928 2009-05-13 Doug Kwan <dougkwan@google.com>
17929
17930 * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
17931
17932 2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
17933
17934 * config/mips/mips.md (store): Add attributes for QI and HI.
17935 Update comment.
17936 (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
17937 (truncdi<mode>2): ... this new pattern.
17938
17939 2009-05-13 Brad Hards <bradh@kde.org>
17940
17941 * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
17942
17943 2009-05-14 Jakub Jelinek <jakub@redhat.com>
17944 Ben Elliston <bje@au.ibm.com>
17945
17946 PR middle-end/40035
17947 * dse.c (check_mem_read_rtx): Guard against width == -1.
17948
17949 2009-05-13 Michael Matz <matz@suse.de>
17950
17951 PR middle-end/39976
17952 * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
17953 (trivially_conflicts_p): New function.
17954 (insert_backedge_copies): Use it.
17955
17956 2009-05-13 Janis Johnson <janis187@us.ibm.com>
17957
17958 * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
17959 (handle_stdc_pragma): Use new enum constant names.
17960 (handle_pragma_float_const_decimal64): Ditto.
17961
17962 2009-05-13 Ian Lance Taylor <iant@google.com>
17963
17964 * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
17965 tree.def.
17966
17967 2009-05-13 Nathan Sidwell <nathan@codesourcery.com>
17968
17969 * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
17970 * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
17971 multilibs.
17972 * config/m68k/m68k.h (FL_UCLINUX): Define.
17973
17974 2009-05-13 Jan Hubicka <jh@suse.cz>
17975
17976 * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
17977
17978 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
17979
17980 * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
17981 unless -fschedule-insns is specified.
17982
17983 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
17984
17985 PR target/39561
17986 * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
17987 TARGET_EXPAND_CBRANCHDI4.
17988 * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
17989 * config/sh/sh.opt (mexpand-cbranchdi): Remove.
17990 (cmpeqdi): Fix comment.
17991
17992 2009-05-12 Kaz Kojima <kkojima@gcc.gnu.org>
17993
17994 * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
17995 (sh_legitimate_address_p): Likewise.
17996 * config/sh/sh.c (sh_legitimate_index_p): New.
17997 (sh_legitimate_address_p): Likewise.
17998 * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
17999 (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
18000 (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
18001 (MAYBE_BASE_REGISTER_RTX_P): New macro.
18002 (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
18003 (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
18004 (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
18005 (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
18006 (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
18007
18008 2009-05-12 Jan Hubicka <jh@suse.cz>
18009
18010 * tree-inline.c (estimate_operator_cost): Add operands;
18011 when division happens by constant, it is cheap.
18012 (estimate_num_insns): Loads and stores are not having cost of 0;
18013 EH magic stuff is cheap; when computing runtime cost of switch,
18014 use log2 base of amount of its cases; builtin_expect has cost of 0;
18015 compute cost for moving return value of call.
18016 (init_inline_once): Initialize time_based flags.
18017 * tree-inline.h (eni_weights_d): Add time_based flag.
18018
18019 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
18020
18021 * df-core.c: Update head documentation.
18022
18023 2009-05-12 Michael Meissner <meissner@linux.vnet.ibm.com>
18024
18025 PR bootstrap/40118
18026 * rs6000.c (rs6000_generate_compare): Use op1b instead of
18027 shadowing exisiting variable op1.
18028
18029 2009-05-12 Uros Bizjak <ubizjak@gmail.com>
18030
18031 PR target/37179
18032 * config/i386/driver-i386.c (processor_signatures): New enum.
18033 (SIG_GEODE): Move from vendor_signatures to processor_signatures.
18034 (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
18035 processor signature to detect geode processor.
18036
18037 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
18038
18039 Revert:
18040
18041 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
18042
18043 * optabs.c (prepare_cmp_insn): Temporarily disable test that
18044 causes spurious differences between trunk and cond-optab branch.
18045
18046 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
18047
18048 * dojump.c (compare_from_rtx): Delete.
18049 * expmed.c (emit_store_flag): Only try cstore_optab. Canonicalize
18050 any MODE_CC mode to the cstorecc4 pattern. Use prepare_operand, fail
18051 if the comparison does not satisfy the predicate; test predicates for
18052 operands 2 and 3 of a cstore pattern. Don't try cstore optab
18053 further if one existing pattern fails.
18054 * expr.h (compare_from_rtx): Delete.
18055 (prepare_operand): Declare it.
18056 * optabs.c: Change "lib call" to "libcall" throughout.
18057 (bcc_gen_fctn, setcc_gen_code, trap_rtx,
18058 HAVE_conditional_trap, emit_cmp_insn): Delete.
18059 (can_compare_p): Delete cmp_optab case.
18060 (prepare_float_lib_cmp): Return an rtx and a machine mode.
18061 Accept other parameters by value.
18062 (prepare_operand): Make non-static.
18063 (prepare_cmp_insn): Return an rtx and a machine mode. Accept
18064 other parameters by value. Try to widen operands here based on
18065 an optab_methods argument and looking at cbranch_optab.
18066 (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
18067 loop. Use cbranch_optab directly.
18068 (emit_cmp_and_jump_insns): Fix comment. Adjust call to
18069 prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
18070 assertion.
18071 (emit_conditional_move, emit_conditional_add): Inline what's needed
18072 of compare_from_rtx, using new prepare_cmp_insn for the rest.
18073 (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
18074 with COMPARE. Move cmov_optab and cstore_optab above
18075 with cbranch_optab, move cmp_optab down with ucmp_optab,
18076 remove tst_otpab. Do not initialize trap_rtx.
18077 (gen_cond_trap): Do it here. Use ctrap_optab. Test predicate
18078 for trap code. Do not check HAVE_conditional_trap. Use
18079 prepare_cmp_insn. Accept no predicate for operand 3.
18080 * optabs.h (OTI_cmp): Mark as used only for libcalls.
18081 (OTI_ctrap, ctrap_optab): New.
18082 (tst_optab): Delete.
18083 (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
18084 * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
18085 with lookup of ctrap_optab.
18086 * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
18087 Delete.
18088 (ctrap_optab): New.
18089
18090 * combine.c (combine_simplify_rtx, simplify_set): Do not
18091 special case comparing against zero for cc0 machines.
18092 * simplify-rtx.c (simplify_binary_operation_1): Never remove
18093 COMPARE on cc0 machines.
18094 (simplify_relational_operation): Return a new expression when
18095 a COMPARE could be removed.
18096 * final.c (final_scan_insn): Compare cc_status values
18097 against LHS of a (compare FOO (const_int 0)) cc0 source.
18098 Also check if cc_status.value is the full compare.
18099
18100 * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
18101 (cstoreMM4): Document.
18102 (conditional_trap): Document ctrapMM4 instead.
18103 (sync_compare_and_swapMM): Refer to cbranchcc4.
18104 (Dependent Patterns): Eliminate obsolete information referring to
18105 the old jump optimization phase.
18106 (Canonicalization): Include cbranchcc4 case, omit canonicalization
18107 of compares with 0 on cc0 machines.
18108 (Jump Patterns): Refer to MODE_CC jump patterns preferably,
18109 avoiding references to cc0. Remove text about storing operands
18110 in cmpMM.
18111 * doc/tm.texi (Condition Codes): Include blurb on different
18112 condition code representations, separate into subsections for
18113 CC0, MODE_CC and conditional execution.
18114
18115 * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
18116 alpha_emit_setcc): Accept operands and a machine mode.
18117 * config/alpha/alpha.c (alpha_emit_conditional_branch):
18118 Get code/op0/op1 from operands, use machine mode argument
18119 instead of alpha_compare.fp_p. Emit the branch here.
18120 (alpha_emit_setcc): Likewise, and return boolean.
18121 (alpha_emit_conditional_move): Likewise. Assert that
18122 cmp_op_mode == cmp_mode, and simplify accordingly.
18123 * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
18124 * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
18125 (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
18126 Delete.
18127 (stack probe test): Use cbranchdi4.
18128 * config/alpha/predicates.md (alpha_cbranch_operator): New.
18129
18130 * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
18131 * config/arc/arc.h (movsicc, movsfcc): Use it.
18132 (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
18133 (cbranchsi4, cstoresi4): New.
18134 (cmpsi, bCC and sCC expanders): Remove.
18135
18136 * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
18137 * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
18138 * config/arm/predicates.md (arm_comparison_operator): Only include
18139 floating-point operators if there is a hardware floating-point unit.
18140 * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
18141 deferring to cbranch_cc and cstore_cc respectively.
18142 (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
18143 cbranch_cc, cstore_cc): New.
18144 (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
18145 arm_compare_op1.
18146 (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
18147
18148 * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
18149 * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
18150 as an argument.
18151 (adjust_insn_length): Adjust calls.
18152 (avr_reorg): Handle (compare (foo) (const_int 0)).
18153 * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
18154 (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
18155 (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
18156 (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
18157 (bCC): Remove.
18158 (cbranchqi4, cbranchhi4, cbranchsi4): New.
18159 (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
18160
18161 * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
18162 (cbranchsi4, cstorebi4, cstoresi4): New.
18163 (movbisi): This insn is duplicate, split it to zero_extend.
18164 * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
18165 (bfin_gen_compare): Do not use them. Emit VOIDmode SET, not BImode.
18166 (bfin_optimize_loop): Use cbranch expander.
18167 * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
18168 * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
18169 (bfin_bimode_comparison_operator): ... this.
18170 (bfin_direct_comparison_operator): New.
18171
18172 * config/cris/cris.c (cris_normal_notice_update_cc): Look
18173 inside (compare FOO (const_int 0)).
18174 (cris_rtx_costs): Handle ZERO_EXTRACT.
18175 * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
18176 (*tstdi_non_v32): Fold in *cmpdi_non_v32.
18177 (*tstdi_v32): Delete.
18178 (*cmpdi_non_v32): Add M alternative for operand 1.
18179 (cmpsi, cmp<mode>): Make private.
18180 (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
18181 with COMPARE.
18182 (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
18183
18184 * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
18185 (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
18186 (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
18187 (cc_reg_operand): New.
18188 (any_cond): Delete.
18189 * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
18190 crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
18191 * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
18192 * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
18193 crx_expand_scond): Delete.
18194
18195 * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
18196 (cbranchsi4): New.
18197 * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
18198 * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
18199
18200 * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
18201 cstoresi4, cstoresf4, cstoredf4): New.
18202 (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
18203 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18204 Receive the entire operands array.
18205 * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
18206 * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
18207 * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
18208 Get test/op0/op1 from the operands array.
18209 (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
18210
18211 * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
18212 (h8300_expand_store): New.
18213 * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
18214 (const_int 0)).
18215 (h8300_expand_branch): Emit compare here. Adjust for new arguments.
18216 (h8300_expand_store): New.
18217 * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
18218 or do not try to produce (set (cc0) REG).
18219 (peepholes): Wrap arguments with COMPARE. Add a peephole to
18220 change a compare into a move to a scratch register. Disable some
18221 peepholes when comparing with zero.
18222 (tstsi, tsthi, tstsi, cmpqi): Make private.
18223 (cmphi): Delete.
18224 (bCC, sCC): Delete.
18225 (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
18226 cstoresi4): New.
18227
18228 * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
18229 ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
18230 (ix86_emit_i387_log1p): Use gen_cbranchxf4.
18231 (ix86_emit_i387_log1p): Use cbranchxf2.
18232 (ix86_expand_setcc): Return void.
18233 * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
18234 * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
18235 cmp<MODEF>, cmpcc): Remove.
18236 (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
18237 cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
18238 cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
18239 (sCC and bCC expanders): Remove.
18240 (stack_protect_test): Use cbranchcc4.
18241
18242 * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
18243 Delete.
18244 (ia64_expand_compare): Accept three rtx by reference and return void.
18245 * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
18246 (ia64_expand_compare): Replace op0/op1 with *op0/*op1. Get code
18247 from *expr. Update *expr with the BImode comparison to do.
18248 * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
18249 cmptf, bCC, sCC, conditional_trap): Delete.
18250 (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
18251 cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
18252 cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
18253 ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
18254 * config/ia64/predicates.md (ia64_cbranch_operator): New.
18255
18256 * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
18257 type of last argument.
18258 * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
18259 (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
18260 use machine mode argument instead of branch_type. Remove dead
18261 code for floating-point comparisons.
18262 * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
18263 * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
18264 Remove.
18265 (cbranchsi4, cstoresi4): New.
18266 * config/iq2000/predicates.md (reg_or_const_operand): New.
18267
18268 * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
18269 * config/m32c/m32c.md (any_cond, gl_cond): Delete.
18270 (b<code>_op): Rewrite to...
18271 (bcc_op): ... this, using match_operator.
18272 (s<code>_op): Rewrite to...
18273 (scc_op): ... this, using match_operator.
18274 (s<code>_24_op): Rewrite to...
18275 (scc_op_24): ... this, using match_operator.
18276 (s<code>_<mode>): Rewrite to...
18277 (cstore<mode>4): ... this, using match_operator.
18278 (s<code>_<mode>_24): Rewrite to...
18279 (cstore<mode>4_24): ... this, using match_operator.
18280 * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
18281 m32c_unpend_compare, m32c_expand_scc): Delete.
18282 * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
18283 m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
18284 (m32c_expand_movcc): Change NE to EQ if necessary.
18285 (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
18286
18287 * config/m32r/m32r-protos.h (gen_cond_store): New.
18288 * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
18289 (gen_cond_store): New, from sCC patterns.
18290 (m32r_expand_block_move): Use cbranchsi4.
18291 * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
18292 * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
18293 (cbranchsi4, cstoresi4): New.
18294
18295 * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
18296 Delete.
18297 (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
18298 (m68hc11_notice_update_cc): Look into a compare with 0.
18299 * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
18300 Delete.
18301 * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
18302 cmphi, cmpqi, bCC): Delete.
18303 (cbranchsi4, cbranchhi4, cbranchqi4): New.
18304 (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
18305 bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
18306 sets with COMPARE.
18307
18308 * config/m68k/predicates.md (m68k_cstore_comparison_operator,
18309 const0_operand, const1_operand, m68k_subword_comparison_operand): New.
18310 * config/m68k/constraints.md (H): New.
18311 * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
18312 the define_insn below.
18313 (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
18314 (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
18315 *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
18316 patterns): Wrap RHS with COMPARE.
18317 (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
18318 (*cmpdi_internal): Name this pattern.
18319 (cmpdi): Change to define_insn.
18320 (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
18321 cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
18322 (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
18323 predicate.
18324 (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
18325 sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
18326 (conditional_trap): Change to...
18327 (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
18328 (*conditional_trap): Use the ordered_comparison_operator and
18329 const1_operand predicates.
18330 * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
18331 (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
18332 (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
18333 * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
18334
18335 * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
18336 mcore_modify_comparison, mcore_gen_compare_reg): Remove.
18337 (mcore_gen_compare): New.
18338 * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
18339 (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
18340 (mcore_gen_compare): ... this.
18341 * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
18342 (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
18343 (stack probe pattern): Use cbranchsi4.
18344
18345 * config/mips/predicates.md (mips_cstore_operator): New.
18346 * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
18347 * config/mips/mips.md (any_cond): Delete.
18348 (conditional_trap): Rename to ctrap<GPR:mode>4. Adjust predicates,
18349 always succeed.
18350 (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
18351 fixuns_truncsfdi2): Use cbranch patterns.
18352 (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
18353 (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
18354 Adjust call to mips_expand_conditional_branch.
18355 (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
18356 cstore<GPR:mode>4.
18357 * config/mips/mips-protos.h (mips_expand_conditional_branch,
18358 mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
18359 * config/mips/mips.c (cmp_operands): Delete.
18360 (mips_emit_compare): Get comparison operands from *op0/*op1.
18361 (mips_expand_scc): Get code/op0/op1/target from operands. Assert
18362 that it succeeds. Use op0/op1 instead of cmp_operands.
18363 (mips_expand_conditional_branch, mips_expand_conditional_move,
18364 mips_expand_conditional_trap): Likewise.
18365 (mips_block_move_loop): Use cbranch patterns.
18366 * config/mips/mips.h (cmp_operands): Delete.
18367
18368 * config/mmix/mmix.c (mmix_valid_comparison): Delete.
18369 (mmix_gen_compare_reg): Just return a register in the right CC mode.
18370 * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
18371 * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
18372 (*cmpcc_folded): Rename to...
18373 (*cmpdi_folded): this.
18374 (*cmpcc): Rename to...
18375 (*cmps): ... this.
18376 (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
18377 (bCC): Remove.
18378 (cbranchdi4): New.
18379 (cbranchdf4): New. Handle invalid comparisons here.
18380 * config/mmix/predicates.md (float_comparison_operator): New.
18381
18382 * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
18383 zero_extract to be cheap in (compare (zero_extract) (const_int 0).
18384 * config/mn10300/mn10300.md (tst): Delete.
18385 (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
18386 Name these patterns and wrap RHS in a compare.
18387 (*cmpsi): Make this pattern private. Include tst.
18388 (*cmpsf): Make this pattern private.
18389 (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
18390 (compare with zero peepholes): Likewise.
18391 (bCC): Remove.
18392 (cbranchsi4, cbranchsf4): New.
18393 (casesi): Use cbranchsi4.
18394
18395 * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
18396 hppa_branch_type): Delete.
18397 (return_addr_rtx): Use cbranchsi4.
18398 (emit_bcond_fp): Accept all operands. Replace CODE with NE.
18399 Emit CCFPmode comparison here.
18400 (gen_cmp_fp): Delete, now part of emit_bcond_fp.
18401 * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
18402 hppa_branch_type): Delete.
18403 * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
18404 (movsicc, movdicc): Remove references to hppa_compare_op0,
18405 hppa_compare_op1 and compare_from_rtx.
18406 (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
18407 (casesi): Use cbranchsi4.
18408
18409 * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
18410 * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
18411 * config/pdp11/pdp11.md (register_or_const0_operand): New.
18412 (cmpdf, cmphi, cmpqi): Make private. Add tst alternatives.
18413 (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
18414 (bCC): Delete.
18415 (cbranchdf4, cbranchhi4, cbranchqi4): New.
18416 (*branch, *branch_inverted): New.
18417
18418 * config/picochip/picochip.md (cbranchhi4): Use
18419 ordered_comparison_operator.
18420 (cmphi, bCC): Remove.
18421
18422 * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
18423 (trap_comparison_operator): Delete.
18424 * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
18425 rs6000_emit_cbranch): Accept mode and operands.
18426 * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
18427 rs6000_compare_fp_p): Delete.
18428 (rs6000_generate_compare): Accept mode and comparison. Extract code
18429 and op0/op1 from there. Replace references to rs6000_compare_op0
18430 and rs6000_compare_op1.
18431 (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
18432 extract result from passed operands.
18433 (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
18434 extract loc from passed operands.
18435 (rs6000_emit_cmove): Likewise.
18436 * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
18437 rs6000_compare_fp_p): Delete.
18438 * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
18439 (cbranch<GPR>4, cbranch<FP>4): New.
18440 (cstore<mode>4): New. Consolidate here all choices about when to use
18441 portable or specialized sCC sequences.
18442 (stack_protect_test): Use cbranchsi4.
18443 (conditional_trap): Replace with ctrap<GPR>4.
18444 (conditional trap insn): Replace trap_comparison_operator with
18445 ordered_comparison_operator.
18446
18447 * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
18448 (s390_emit_prologue): Use ctrap.
18449 * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
18450 * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
18451 New predicates replacing...
18452 * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
18453 (cmp<GPR>, cmp<FP>, cmpcc): Delete.
18454 (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
18455 (add<mode>cc): Do not use s390_compare_op0/op1.
18456 (s<code>): Change to...
18457 (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
18458 (seq): Change to...
18459 (cstorecc4): ... this. Handle EQ or NE equally.
18460 (*sne): Un-privatize for use in cstorecc4.
18461 (b<code>): Change to...
18462 (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
18463 (conditional_trap): Replace with...
18464 (ctrap<GPR>4, ctrap<FP>4): ... these.
18465 (stack_protect): Use cbranchcc4.
18466
18467 * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
18468 * config/score/score-protos.h (score_gen_cmp): Delete.
18469 * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
18470 (score_block_move-loop): Use cbranchsi4.
18471 * config/score/score.md (cbranchsi4): New.
18472 (cmpsi, bCC): Delete.
18473 * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
18474 (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18475 * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
18476 (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
18477 * config/score/score3.h (score3_gen_cmp): Delete.
18478 * config/score/score7.h (score7_gen_cmp): Delete.
18479
18480 * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
18481 (sh_emit_scc_to_t): ... this. Return void.
18482 (from_compare): Rename to...
18483 (sh_emit_compare_and_branch): ... this.
18484 (sh_emit_compare_and_set): New.
18485 (sh_expand_t_scc): Accept operands.
18486 * config/sh/predicates.md (sh_float_comparison_operator): New.
18487 * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
18488 (prepare_scc_operands): Rename to...
18489 (sh_emit_scc_to_t): ... this. Return void. Get op0/op1 from
18490 arguments.
18491 (sh_emit_cheap_store_flag): New.
18492 (sh_emit_set_t_insn): New.
18493 (from_compare): Rename to...
18494 (sh_emit_compare_and_branch): ... this. Accept mode. Rewrite
18495 handling of TARGET_SH2E floating point to avoid recursive call.
18496 Generate branch here.
18497 (sh_emit_compare_and_set): New.
18498 (sh_expand_t_scc): Get op0/op1 from arguments.
18499 (sh_emit_cheap_store_flag): New.
18500 * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
18501 cases.
18502 (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
18503 (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
18504 (movsicc, movdicc): Do nothing when it recreated operands from
18505 sh_compare_*. Use sh_emit_cheap_store_flag. Adjust call to
18506 prepare_scc_operands (now sh_emit_scc_to_t).
18507 (udivdi3): Use cstoresi4.
18508 (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
18509 bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
18510 (cbranchint4_media, cbranchfp4_media): New.
18511 (casesi): Use cbranchdi4.
18512 (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
18513 Delete.
18514 (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
18515 (movnegt): Remove second operand.
18516 (cbranchsf4, cbranchdf4): New.
18517 (stack_protect): Use cbranchdi4/cbranchsi4.
18518
18519 * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
18520 (gen_compare_reg): Accept comparison, extract part of it to...
18521 (gen_compare_reg_1): ... this.
18522 (gen_compare_operator): Delete.
18523 (gen_v9_scc): Accept separate destination, comparison code and arms.
18524 Do not use sparc_compare_op0/sparc_compare_op1.
18525 (emit_scc_insn, emit_conditional_branch_insn): New.
18526 (emit_v9_brxx): Make static. Remove useless assertion.
18527 (sparc_emit_float_lib_cmp): Return RTL instead of calling
18528 emit_cmp_insn.
18529 (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
18530 * config/sparc/sparc-protos.h (gen_compare_reg,
18531 sparc_emit_float_lib_cmp): Adjust prototype.
18532 (emit_scc_insn, emit_conditional_branch_insn): New.
18533 (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
18534 * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
18535 * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
18536 iterators to the top.
18537 (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
18538 snesi_special_extend, sCC, bCC, seqdi_special_trunc,
18539 snedi_special_trunc): Delete.
18540 (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
18541 and snedi_special_trunc.
18542 (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
18543 cbranchdi4, cbranch<F:mode>4): New.
18544 (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
18545 here. Use gen_compare_reg instead of gen_compare_operator.
18546 (conditional_trap): Replace with...
18547 (ctrapsi4, ctrapdi4): ... this.
18548 (stack_protect_test): Use cbranchcc4.
18549
18550 * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
18551 argument to rtx.
18552 * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
18553 (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
18554 Change spu_compare_op0/op1 to op0/op1 throughout. Get target
18555 from operands[0] or operands[3] depending on is_set.
18556 * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
18557 * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
18558 cmpdf, bCC), sCC: Remove.
18559 (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
18560 cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
18561 cstoredf4): New.
18562 (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
18563 spu_emit_branch_or_set.
18564
18565 * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
18566 Add two arguments.
18567 * config/stormy16/stormy16.h (xstormy16_compare_op0,
18568 xstormy16_compare_op1): Delete.
18569 * config/stormy16/stormy16.c (xstormy16_compare_op0,
18570 xstormy16_compare_op1): Delete.
18571 (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
18572 Adjust calls.
18573 * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
18574 (cmphi, cmpsi, bCC): Remove.
18575
18576 * config/v850/v850.md (tstsi, cmpsi): Fold into...
18577 (*cmpsi): ... this one.
18578 (cbranchsi4, cstoresi4): New.
18579 (bCC expanders): Delete.
18580 (sCC insns): Fold into...
18581 (*setcc): ... this one.
18582 (casesi): Do not use gen_cmpsi and gen_bgtu.
18583 (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
18584 (movsicc): Simplify.
18585 * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
18586
18587 * config/vax/vax-protos.h (cond_name): New.
18588 (vax_output_conditional_branch): Remove.
18589 * config/vax/vax.c (cond_name): New.
18590 (vax_output_conditional_branch): Remove.
18591 * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
18592 * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
18593 (cmp<VAXint>, cmp<VAXfp>): Privatize. Add constraints for tst.
18594 (bit<VAXint>): Wrap source with (compare).
18595 (b<code> and following unnamed pattern): Rename to *branch and
18596 *branch_reversed. Change macroization to match_operator.
18597 (cbranch<VAXint>4, cbranch<VAXfp>4): New.
18598
18599 * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
18600 * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
18601 Change last argument to machine_mode.
18602 (xtensa_expand_scc): Add machine_mode argument.
18603 * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
18604 (gen_conditional_move, xtensa_expand_conditional_branch,
18605 xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
18606 instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
18607 Adjust operand numbers.
18608 * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
18609 Delete.
18610 * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
18611 (cmpsi, cmpsf, b<code>, s<code>): Delete.
18612 (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
18613
18614 2009-05-12 Paolo Bonzini <bonzini@gnu.org>
18615
18616 * optabs.c (prepare_cmp_insn): Temporarily disable test that
18617 causes spurious differences between trunk and cond-optab branch.
18618
18619 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
18620
18621 PR target/37137
18622 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
18623
18624 2009-05-12 Alexandre Oliva <aoliva@redhat.com>
18625
18626 * tree.c (iterative_hash_pointer): Delete.
18627 (iterative_hash_expr): Short-circuit handling of NULL pointer.
18628 Hash UIDs and versions of SSA names. Don't special-case built-in
18629 function declarations.
18630
18631 2009-05-11 Ian Lance Taylor <iant@google.com>
18632
18633 PR bootstrap/40103
18634 * graphite.c: Force -Wc++-compat to only be a warning before
18635 #including "cloog/cloog.h".
18636
18637 2009-05-11 Martin Jambor <mjambor@suse.cz>
18638
18639 * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
18640
18641 2009-05-11 Jan Hubicka <jh@suse.cz>
18642
18643 * tree-ssa-loop-ivcanon.c: Include target.h
18644 (struct loop_size): new structure.
18645 (constant_after_peeling): New predicate.
18646 (tree_estimate_loop_size): New function.
18647 (estimated_unrolled_size): Rewrite for new estimates.
18648 (try_unroll_loop_completely): Use new estimates.
18649 * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
18650
18651 2009-05-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
18652
18653 * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
18654 libcpp interface change.
18655 (spu_macro_to_expand): Likewise.
18656
18657 2009-05-11 Paolo Bonzini <bonzini@gnu.org>
18658
18659 PR tree-optimization/40026
18660 * gimplify.c (gimplify_init_constructor): Change initial conditional
18661 to assertion. Rewrite TREE_OPERAND (*expr_p, 1) after
18662 optimize_compound_literals_in_ctor.
18663
18664 2009-05-11 Nathan Sidwell <nathan@codesourcery.com>
18665
18666 * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
18667 New devices.
18668 * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
18669
18670 2009-05-11 H.J. Lu <hongjiu.lu@intel.com>
18671
18672 * tree-vect-data-refs.c (vect_analyze_group_access): Use
18673 HOST_WIDE_INT for gap.
18674
18675 2009-05-11 Ira Rosen <irar@il.ibm.com>
18676
18677 PR tree-optimization/40074
18678 * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
18679 account in group size and step comparison.
18680
18681 2009-05-11 Richard Guenther <rguenther@suse.de>
18682
18683 * passes.c (init_optimization_passes): Strip now incorrect comment.
18684 (execute_function_todo): Do not set PROP_alias.
18685 * tree-pass.h (PROP_alias): Remove.
18686 * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
18687 * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
18688 * tree-nrv.c (pass_return_slot): Likewise.
18689 * tree-object-size.c (pass_object_sizes): Likewise.
18690 * tree-ssa-dom.c (pass_dominator): Likewise.
18691 (pass_phi_only_cprop): Likewise.
18692 * tree-ssa-dse.c (pass_dse): Likewise.
18693 * tree-ssa-phiopt.c (pass_phiopt): Likewise.
18694 (pass_cselim): Likewise.
18695 * tree-ssa-pre.c (pass_pre): Likewise.
18696 (pass_fre): Likewise.
18697 * tree-ssa-reassoc.c (pass_reassoc): Likewise.
18698 * tree-ssa-sink.c (pass_sink_code): Likewise.
18699 * tree-stdarg.c (pass_stdarg): Likewise.
18700 * tree-tailcall.c (pass_tail_calls): Likewise.
18701 * tree-vrp.c (pass_vrp): Likewise.
18702
18703 2009-05-10 Ian Lance Taylor <iant@google.com>
18704
18705 * basic-block.h (enum profile_status): Break out of struct
18706 control_flow_graph.
18707 * cgraph.h (struct inline_summary): Break out of struct
18708 cgraph_local_info.
18709 * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
18710 of struct cgraph_order_sort.
18711 * combine.c (enum undo_kind): New enum, broken out of struct undo.
18712 * cse.c (struct branch_path): Break out of struct
18713 cse_basic_block_data.
18714 * except.h (enum eh_region_type): Break out of struct eh_region.
18715 * gcc.c (enum add_del): Break out of struct modify_target.
18716 * genrecog.c (enum decision_type): Break out of struct decision_test.
18717 * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
18718 ggc_pch_data.
18719 * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
18720 * regmove.c (enum match_use): New enum, broken out of struct match.
18721 * sched-int.h (enum post_call_group): New enum, broken out of
18722 struct deps.
18723 (struct deps_reg): Break out of struct deps.
18724 * target.h (struct asm_int_op): Break out of struct gcc_target.
18725 * tree-eh.c (struct goto_queue_node): Break out of struct
18726 leh_tf_state.
18727 * tree-inline.h (enum copy_body_cge_which): Break out of
18728 copy_body_data.
18729 * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
18730
18731 * c-decl.c (in_struct, struct_types): New static variables.
18732 (pushtag): Add loc parameter. Change all callers.
18733 (lookup_tag): Add ploc parameter. Change all callers.
18734 (check_compound_literal_type): New function.
18735 (parser_xref_tag): Add loc parameter. Change all callers. If
18736 -Wc++-compat, warn about struct/union/enum types defined within a
18737 struct or union.
18738 (start_struct): Add enclosing_in_struct, enclosing_struct_types,
18739 and loc parameters. Change all callers. Change error calls to
18740 error_at, using loc. For a redefinition, if the location of the
18741 original definition is known, report it. Set in_struct and
18742 struct_types. If -Wc++-compat warn if in sizeof, typeof, or alignof.
18743 (finish_struct): Add new parameters enclosing_in_struct and
18744 enclosing_struct_types. Change all callers. Set
18745 C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
18746 in the struct. If in a struct, add this struct to struct_types.
18747 (start_enum): Add loc parameter. Change all callers. Use
18748 error_at for errors, using loc. For a redefinition, if the
18749 location of the original definition is known, report it. If in a
18750 struct, add this enum type to struct_types. If -Wc++-compat warn
18751 if in sizeof, typeof, or alignof.
18752 * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
18753 (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
18754 (c_parser_enum_specifier): Get enum location for start_enum.
18755 (c_parser_struct_or_union_specifier): Get struct location for
18756 start_struct. Save in_struct and struct_types status between
18757 start_struct and finish_struct.
18758 (c_parser_cast_expression): Get location of cast.
18759 (c_parser_alignof_expression): Get location of type.
18760 (c_parser_postfix_expression): Likewise.
18761 (c_parser_postfix_expression_after_paren_type): Add type_loc
18762 parameter. Change all callers. Call check_compound_literal_type.
18763 Use type_loc for error about variable size type.
18764 * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
18765 of an enum constant from an enum type defined in a struct or union.
18766 (c_cast_expr): Add loc parameter. Change all callers. If
18767 -Wc++-compat, warn about defining a type in a cast.
18768 * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
18769 (start_enum, start_struct, finish_struct): Update declarations.
18770 (parser_xref_tag, c_cast_expr): Update declarations.
18771 (check_compound_literal_type): Declare.
18772
18773 2009-05-11 Ben Elliston <bje@au.ibm.com>
18774
18775 * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
18776 for recent libcpp interface change.
18777 (rs6000_macro_to_expand): Likewise.
18778
18779 2009-05-10 Michael Matz <matz@suse.de>
18780
18781 PR target/40031
18782 * config/arm/arm.c (require_pic_register): Emit on entry edge,
18783 not at entry of function.
18784
18785 2009-05-10 Richard Guenther <rguenther@suse.de>
18786
18787 PR tree-optimization/40081
18788 Revert
18789 * tree-sra.c (instantiate_element): Instantiate scalar replacements
18790 using the main variant of the element type. Do not fiddle with
18791 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18792
18793 * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
18794 structs with volatile fields.
18795
18796 2009-05-10 Jan Hubicka <jh@suse.cz>
18797
18798 * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
18799 (estimate_move_cost): Assert that it does not get called for
18800 VOID_TYPE_P.
18801 (estimate_num_insns): Skip VOID types in argument handling.
18802 (optimize_inline_calls): Delete unreachable blocks and verify that
18803 callgraph is valid.
18804
18805 2009-05-10 Jan Hubicka <jh@suse.cz>
18806
18807 * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
18808 * cgraph.c (cgraph_mark_address_taken_node): New function.
18809 (dump_cgraph_node): Dump new flag.
18810 * cgraph.h (struct cgraph_node): Add address_taken.
18811 (cgraph_mark_address_taken_node): New function.
18812 * ipa.c (cgraph_postorder): Prioritize functions with address taken
18813 since new direct calls can be born.
18814
18815 2009-05-10 Joseph Myers <joseph@codesourcery.com>
18816
18817 * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
18818 tok->val.node.node.
18819
18820 2009-05-10 Jan Hubicka <jh@suse.cz>
18821
18822 PR middle-end/40084
18823 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
18824 argument; rewrite.
18825 (cgraph_update_edges_for_call_stmt): Take old_decl argument.
18826 * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
18827 * tree-inline.c (copy_bb): Set frequency correctly.
18828 (fold_marked_statements): Update call to
18829 cgraph_update_edges_for_call_stmt.
18830
18831 2009-05-10 Joseph Myers <joseph@codesourcery.com>
18832
18833 * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
18834 identifiers in diagnostics.
18835 * config/arm/arm.c (arm_handle_fndecl_attribute,
18836 arm_handle_isr_attribute): Likewise.
18837 * config/avr/avr.c (avr_handle_progmem_attribute,
18838 avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
18839 * config/bfin/bfin.c (handle_int_attribute,
18840 bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
18841 bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
18842 bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
18843 Likewise.
18844 * config/darwin.c (darwin_handle_kext_attribute,
18845 darwin_handle_weak_import_attribute): Likewise.
18846 * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
18847 h8300_handle_eightbit_data_attribute,
18848 h8300_handle_tiny_data_attribute): Likewise.
18849 * config/i386/i386.c (ix86_handle_cconv_attribute,
18850 ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
18851 * config/i386/winnt.c (ix86_handle_shared_attribute,
18852 ix86_handle_selectany_attribute): Likewise.
18853 * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
18854 * config/m32c/m32c.c (function_vector_handler): Likewise.
18855 * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
18856 m68hc11_handle_fntype_attribute): Likewise.
18857 * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
18858 * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
18859 * config/mips/mips.c (mips_insert_attributes,
18860 mips_merge_decl_attributes, mips_expand_builtin): Likewise.
18861 * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
18862 rs6000_handle_struct_attribute): Likewise.
18863 * config/sh/sh.c (sh_insert_attributes,
18864 sh_handle_resbank_handler_attribute,
18865 sh_handle_interrupt_handler_attribute,
18866 sh2a_handle_function_vector_handler_attribute,
18867 sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
18868 Likewise.
18869 * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
18870 * config/spu/spu.c (spu_handle_fndecl_attribute,
18871 spu_handle_vector_attribute): Likewise.
18872 * config/stormy16/stormy16.c
18873 (xstormy16_handle_interrupt_attribute): Likewise.
18874 * config/v850/v850-c.c (ghs_pragma_section): Likewise.
18875 * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
18876
18877 2009-05-10 Joseph Myers <joseph@codesourcery.com>
18878
18879 * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
18880 (pp_translate_identifiers): New.
18881 (pp_identifier): Only conditionally translate identifier to locale
18882 character set.
18883 * pretty-print.c (pp_construct): Set pp_translate_identifiers.
18884 (pp_base_tree_identifier): Only conditionally translate identifier
18885 to locale character set.
18886 * c-pretty-print.c (M_): Define.
18887 (pp_c_type_specifier, pp_c_primary_expression): Mark English
18888 fragments for conditional translation with M_.
18889 * tree-pretty-print.c (maybe_init_pretty_print): Disable
18890 identifier translation.
18891
18892 2009-05-10 Richard Guenther <rguenther@suse.de>
18893
18894 PR tree-optimization/40081
18895 * tree-sra.c (instantiate_element): Instantiate scalar replacements
18896 using the main variant of the element type. Do not fiddle with
18897 TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
18898
18899 2009-05-09 Jan Hubicka <jh@suse.cz>
18900
18901 PR middle-end/40080
18902 * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
18903 indirect calls; verify cgraph afterwards.
18904
18905 2009-05-09 Jan Hubicka <jh@suse.cz>
18906
18907 PR bootstrap/40082
18908 * ipa.c (update_inlined_to_pointer): New function.
18909 (cgraph_remove_unreachable_nodes): Use it.
18910
18911 2009-05-09 Jan Hubicka <jh@suse.cz>
18912
18913 * tree-eh.c (struct leh_state): Remove prev_try.
18914 (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
18915 not track prev_try.
18916 * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
18917 copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
18918 remove_eh_handler_and_replace, foreach_reachable_handler,
18919 verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
18920 * except.h (struct eh_region): Remove eh_region_u_cleanup.
18921 (gen_eh_region_cleanup): Update prototype.
18922
18923 2009-05-09 Jan Hubicka <jh@suse.cz>
18924
18925 PR middle-end/40043
18926 * except.c (copy_eh_region): Always set prev_try.
18927 (redirect_eh_edge_to_label): Find outer try.
18928 (foreach_reachable_handler): When looking for prev try
18929 handle case where previous try is not going to be taken.
18930
18931 2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
18932
18933 PR tree-optimization/40049
18934 * tree-vect-stmts.c (vectorizable_operation): If the machine has
18935 only vector/vector shifts, convert the type of the constant to the
18936 appropriate type to avoid building incorrect trees, which
18937 eventually have problems with garbage collection.
18938
18939 2009-05-08 Joseph Myers <joseph@codesourcery.com>
18940
18941 * fold-const.c (fold_binary): Do not fold multiplication by 1 or
18942 -1 for complex floating-point types if honoring signed zeros.
18943
18944 2009-05-08 Jan Hubicka <jh@suse.cz>
18945
18946 * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
18947 argument; handle correctly when profile is absent.
18948 (build_cgraph_edges): Update.
18949 (rebuild_cgraph_edges): Update.
18950 * cgraph.c: Do not include varray.h.
18951 (cgraph_set_call_stmt_including_clones): New function.
18952 (cgraph_create_edge_including_clones): Likewise
18953 (cgraph_update_edges_for_call_stmt_node): New static cfunction.
18954 (cgraph_update_edges_for_call_stmt): Handle clones.
18955 (cgraph_remove_node): Handle clone tree.
18956 (cgraph_remove_node_and_inline_clones): New function.
18957 (dump_cgraph_node): Dump clone tree.
18958 (cgraph_clone_node): Handle clone tree.
18959 (clone_function_name): Bring here from tree-inline.c.
18960 (cgraph_create_virtual_clone): New function.
18961 * cgraph.h (ipa_replace_map): Move here from ipa.h.
18962 (cgraph_clone_info): New function.
18963 (strut cgraph_node): Add clone_info and new clone tree pointers.
18964 (cgraph_remove_node_and_inline_clones,
18965 cgraph_set_call_stmt_including_clones,
18966 cgraph_create_edge_including_clones,
18967 cgraph_create_virtual_clone): Declare.
18968 (cgraph_function_versioning): Use VEC argument.
18969 (compute_call_stmt_bb_frequency): Update prototype.
18970 (cgraph_materialize_all_clones): New function.
18971 * ipa-cp.c (ipcp_update_cloned_node): Remove.
18972 (ipcp_create_replace_map): Update to VECtors.
18973 (ipcp_update_callgraph): Use virtual clones.
18974 (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
18975 (ipcp_update_profiling): Do not update local profiling.
18976 (ipcp_insert_stage): Use VECtors and virtual clones.
18977 * cgraphunit.c (verify_cgraph_node): Verify clone tree.
18978 (clone_of_p): New function.
18979 (cgraph_preserve_function_body_p): Use clone tree.
18980 (cgraph_optimize): Materialize clones.
18981 (cgraph_function_versioning): Update for VECtors.
18982 (save_inline_function_body): Use clone tree.
18983 (cgraph_materialize_clone): New function.
18984 (cgraph_materialize_all_clones): Likewise.
18985 * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
18986 * ipa.c: Include gimple.h.
18987 (cgraph_remove_unreachable_nodes): Use clone tree.
18988 * ipa-prop.c (ipa_note_param_call): Update call to
18989 compute_call_stmt_bb_frequencycall.
18990 * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
18991 * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
18992 (copy_bb): Handle updating of clone tree; add new edge when new call
18993 appears.
18994 (expand_call_inline): Be strict about every call having edge.
18995 (clone_fn_id_num, clone_function_name): Move to cgraph.c.
18996 (delete_unreachable_blocks_update_callgraph): New function.
18997 (tree_function_versioning): Use VECtors; always remove unreachable
18998 blocks and fold conditionals.
18999 * tree-inline.h: Do not include varray.h.
19000 (tree_function_versioning): Remove.
19001 * Makefile.in (GTFILES): Remove tree-inline.c
19002 * passes.c (do_per_function): Do only functions having body.
19003 * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
19004 tree.
19005
19006 2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
19007 Andrew Morrow <acm@google.com>
19008
19009 PR c/36892
19010 * c-common.c (c_common_attribute_table): Permit deprecated
19011 attribute to take an optional argument.
19012 (handle_deprecated_attribute): If the optional argument to
19013 __attribute__((deprecated)) is not a string ignore the attribute
19014 and emit a warning.
19015
19016 * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
19017 * c-typeck.c (build_component_ref): Likewise.
19018 (build_external_ref): Likewise.
19019
19020 * toplev.c (warn_deprecated_use): Add an attribute argument.
19021 Emit the message associated with __attribute__((deprecated)).
19022
19023 * toplev.h (warn_deprecated_use): Updated.
19024
19025 * doc/extend.texi: Document new optional parameter to
19026 __attribute__((deprecated))
19027
19028 2009-05-08 Michael Eager <eager@eagercon.com>
19029
19030 * config/rs6000/rs6000.md (*movdf_softfloat32): replace
19031 !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
19032
19033 2009-05-08 Richard Guenther <rguenther@suse.de>
19034
19035 PR tree-optimization/40062
19036 * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
19037 Avoid exponential behavior.
19038
19039 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
19040
19041 PR rtl-optimization/33928
19042 PR 26854
19043 * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
19044 process_uses, build_single_def_use_links): New.
19045 (update_df): Update use_def_ref.
19046 (forward_propagate_into): Use get_def_for_use instead of use-def
19047 chains.
19048 (fwprop_init): Call build_single_def_use_links and let it initialize
19049 dataflow.
19050 (fwprop_done): Free use_def_ref.
19051 (fwprop_addr): Eliminate duplicate call to df_set_flags.
19052 * df-problems.c (df_rd_simulate_artificial_defs_at_top,
19053 df_rd_simulate_one_insn): New.
19054 (df_rd_bb_local_compute_process_def): Update head comment.
19055 (df_chain_create_bb): Use the new RD simulation functions.
19056 * df.h (df_rd_simulate_artificial_defs_at_top,
19057 df_rd_simulate_one_insn): New.
19058 * opts.c (decode_options): Enable fwprop at -O1.
19059 * doc/invoke.texi (-fforward-propagate): Document this.
19060
19061 2009-05-08 Joseph Myers <joseph@codesourcery.com>
19062
19063 PR c/24581
19064 * c-typeck.c (build_binary_op): Handle arithmetic between one real
19065 and one complex operand specially.
19066 * tree-complex.c (some_nonzerop): Do not identify a real value as
19067 zero if flag_signed_zeros.
19068
19069 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
19070
19071 PR rtl-optimization/33928
19072 * loop-invariant.c (record_use): Fix && vs. || mishap.
19073
19074 2009-05-08 Paolo Bonzini <bonzini@gnu.org>
19075
19076 PR rtl-optimization/33928
19077 * loop-invariant.c (struct use): Add addr_use_p.
19078 (struct def): Add n_addr_uses.
19079 (struct invariant): Add cheap_address.
19080 (create_new_invariant): Set cheap_address.
19081 (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
19082 (record_uses): Pass df_ref to record_use.
19083 (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
19084 used only as such.
19085
19086 2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
19087
19088 * config/sh/sh.c: Do not include c-pragma.h.
19089
19090 2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
19091
19092 * config/spu/spu.c: Remove include of c-common.h.
19093
19094 2009-05-07 Janis Johnson <janis187@us.ibm.com>
19095
19096 PR c/39037
19097 * c-common.h (mark_valid_location_for_stdc_pragma,
19098 valid_location_for_stdc_pragma_p, set_float_const_decimal64,
19099 clear_float_const_decimal64, float_const_decimal64_p): New.
19100 * c.opt (Wunsuffixed-float-constants): New.
19101 * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
19102 unsuffixed float constant, handle new warning.
19103 * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
19104 * c-decl.c (c_scope): New flag float_const_decimal64.
19105 (set_float_const_decimal64, clear_float_const_decimal64,
19106 float_const_decimal64_p): New.
19107 (push_scope): Set new flag.
19108 * c-parser.c (c_parser_translation_unit): Mark when it's valid
19109 to use STDC pragmas.
19110 (c_parser_external_declaration): Ditto.
19111 (c_parser_compound_statement_nostart): Ditto.
19112 * c-pragma.c (valid_location_for_stdc_pragma,
19113 mark_valid_location_for_stdc_pragma,
19114 valid_location_for_stdc_pragma_p, handle_stdc_pragma,
19115 handle_pragma_float_const_decimal64): New.
19116 (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
19117 * cp/semantics.c (valid_location_for_stdc_pragma_p,
19118 set_float_const_decimal64, clear_float_const_decimal64,
19119 float_const_decimal64_p): New dummy functions.
19120 * doc/extend.texi (Decimal Float): Remove statement that the
19121 pragma, and suffix for double constants, are not supported.
19122 * doc/invoke.texi (Warning Options): List new option.
19123 (-Wunsuffixed-float-constants): New.
19124
19125 2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
19126
19127 * config/i386/i386.c: Do not include c-common.h.
19128
19129 2009-05-07 Mark Heffernan <meheff@google.com>
19130
19131 * doc/invoke.texi (Debugging Options): Document change of debugging
19132 dump location.
19133 * opts.c (decode_options): Make dump_base_name relative to
19134 aux_base_name directory.
19135
19136 2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
19137
19138 * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
19139 * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
19140
19141 2009-05-07 Rafael Avila de Espindola <espindola@google.com>
19142
19143 * Makefile.in (install-plugin): Simplify a bit.
19144
19145 2009-05-07 Paolo Bonzini <bonzini@gnu.org>
19146
19147 * Makefile.in (OBJS-common): Add regcprop.o.
19148 (regcprop.o): New.
19149 * timevar.def (TV_CPROP_REGISTERS): New.
19150 * regrename.c (regrename_optimize): Return 0.
19151 (rest_of_handle_regrename): Delete.
19152 (pass_rename_registers): Point to regrename_optimize.
19153 (struct value_data_entry, struct value_data,
19154 kill_value_one_regno, kill_value_regno, kill_value,
19155 set_value_regno, init_value_data, kill_clobbered_value,
19156 kill_set_value, kill_autoinc_value, copy_value,
19157 mode_change_ok, maybe_mode_change, find_oldest_value_reg,
19158 replace_oldest_value_reg, replace_oldest_value_addr,
19159 replace_oldest_value_mem, copyprop_hardreg_forward_1,
19160 debug_value_data, validate_value_data): Move...
19161 * regcprop.c: ... here.
19162 (rest_of_handle_cprop): Delete.
19163 (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
19164
19165 2009-05-07 Jakub Jelinek <jakub@redhat.com>
19166
19167 PR middle-end/40057
19168 * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
19169 GEN_INT for 1 << bitnum.
19170 (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
19171 build_int_cst_type.
19172
19173 2009-05-07 Uros Bizjak <ubizjak@gmail.com>
19174
19175 * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
19176 Remove wrong description of "nand" operation.
19177
19178 2009-05-06 Richard Guenther <rguenther@suse.de>
19179 Adam Nemet <anemet@caviumnetworks.com>
19180
19181 * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
19182 comment. Add that if LHS is not a gimple register, then RHS1 has
19183 to be a single object (GIMPLE_SINGLE_RHS).
19184
19185 2009-05-06 Adam Nemet <anemet@caviumnetworks.com>
19186
19187 * expr.c (get_def_for_expr): Move it up in the file.
19188 (store_field): When expanding a bit-field store, look at the
19189 defining gimple stmt for the masking conversion.
19190
19191 2009-05-06 Janis Johnson <janis187@us.ibm.com>
19192
19193 PR middle-end/39986
19194 * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
19195 decode_decimal64, encode_decimal128, decode_decimal128): Avoid
19196 32-bit memcpy into long.
19197
19198 2009-05-06 Jakub Jelinek <jakub@redhat.com>
19199
19200 * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
19201 (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
19202 new_reg_loc_descr.
19203 (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
19204 instead of appending DW_OP_deref*.
19205
19206 2009-05-06 Michael Matz <matz@suse.de>
19207
19208 PR middle-end/40021
19209 * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
19210 (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
19211
19212 2009-05-06 Rafael Avila de Espindola <espindola@google.com>
19213
19214 * Makefile.in (install-plugin): Fix srcdir handling.
19215
19216 2009-05-06 Andrey Belevantsev <abel@ispras.ru>
19217
19218 * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
19219 when processing for not_regs_needed bitmap.
19220 * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
19221 handle TARGET_MEM_REF in lhs. Check TMR_BASE for NULL while
19222 handling it for rhs.
19223
19224 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
19225
19226 * config/i386/i386.md (unnamed inc/dec peephole): Use
19227 optimize_insn_for_size_p instead of optimize_size.
19228 * config/i386/predicates.md (incdec_operand): Likewise.
19229 (aligned_operand): Likewise.
19230 * config/i386/sse.md (divv8sf3): Likewise.
19231 (sqrtv8sf2): Likewise.
19232
19233 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
19234
19235 * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
19236
19237 * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
19238
19239 2009-05-06 H.J. Lu <hongjiu.lu@intel.com>
19240
19241 * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
19242 ssemodesuffixf2c with avxmodesuffixf2c.
19243
19244 2009-05-06 Joseph Myers <joseph@codesourcery.com>
19245
19246 PR c/40032
19247 * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
19248
19249 2009-05-05 Jakub Jelinek <jakub@redhat.com>
19250
19251 * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
19252 (struct tree_base): Adjust spacing for 8 bit boundaries.
19253 (struct tree_decl_common): Add decl_by_reference_flag bit.
19254 (DECL_BY_REFERENCE): Adjust.
19255 * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
19256 print DECL_BY_REFERENCE bit.
19257 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
19258 * dwarf2out.c (loc_by_reference, gen_decl_die): Check
19259 DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
19260 (gen_variable_die): Likewise. Check TREE_PRIVATE/TREE_PROTECTED
19261 unconditionally.
19262
19263 PR middle-end/39666
19264 * gimplify.c (gimplify_switch_expr): If case labels cover the whole
19265 range of the type, but default label is missing, add it with one
19266 of the existing labels instead of adding a new label for it.
19267
19268 2009-05-05 Joseph Myers <joseph@codesourcery.com>
19269
19270 * dwarf.h: Remove.
19271
19272 2009-05-05 Rafael Avila de Espindola <espindola@google.com>
19273
19274 * Makefile.in (enable_plugin, plugin_includedir): New.
19275 (install): Depend on install-plugin.
19276 (PLUGIN_HEADERS): New.
19277 (install-plugin): New.
19278 * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
19279
19280 2009-05-05 Richard Guenther <rguenther@suse.de>
19281
19282 PR tree-optimization/40022
19283 * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
19284 the only vuse.
19285 (phivn_valid_p): Fix tuplification error, simplify.
19286 (phiprop_insert_phi): Add dumps.
19287 (propagate_with_phi): Simplify.
19288
19289 2009-05-05 Richard Guenther <rguenther@suse.de>
19290
19291 PR middle-end/40023
19292 * builtins.c (gimplify_va_arg_expr): Properly build the address.
19293
19294 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
19295
19296 * tree.h (strip_float_extensions): Remove duplicate declaration.
19297 (build_low_bits_mask, debug_fold_checksum, expand_function_end,
19298 expand_function_start, stack_protect_prologue, stack_protect_epilogue,
19299 block_ultimate_origin): Rearrange the declarations line to match the
19300 comment that indicates the .c file which the functions are defined.
19301 (dwarf2out_*, set_decl_rtl): Add comment.
19302 (get_base_address): Adjust comment.
19303 (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
19304 declarations line and add comment.
19305 (is_builtin_name): Add blank after function name, for clarity.
19306
19307 2009-05-04 Joseph Myers <joseph@codesourcery.com>
19308
19309 * attribs.c (decl_attributes): Use %qE for identifiers in
19310 diagnostics.
19311 * cgraphunit.c (verify_cgraph_node): Translate function names to
19312 locale character set in diagnostics.
19313 * coverage.c (get_coverage_counts): Use %qE for identifiers in
19314 diagnostics.
19315 * doc/invoke.texi (-finstrument-functions-exclude-function-list):
19316 Document that functions are named in UTF-8.
19317 * expr.c (expand_expr_real_1): Translate function names to locale
19318 character set in diagnostics.
19319 * gimplify.c (omp_notice_variable, omp_is_private,
19320 gimplify_scan_omp_clauses): Use %qE for identifiers in
19321 diagnostics.
19322 * langhooks.c (lhd_print_error_function): Translate function names
19323 to locale character set.
19324 * langhooks.h (decl_printable_name): Document that return value is
19325 in internal character set.
19326 * stmt.c: Include pretty-print.h
19327 (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
19328 diagnostics.
19329 (resolve_operand_name_1): Translate named operand name to locale
19330 character set.
19331 * stor-layout.c (finalize_record_size): Use %qE for identifiers in
19332 diagnostics.
19333 * toplev.c (announce_function): Translate function names to locale
19334 character set.
19335 (warn_deprecated_use): Use %qE for identifiers in diagnostics.
19336 (default_tree_printer): Use pp_identifier or translate identifiers
19337 to locale character set. Mark "<anonymous>" for translation.
19338 * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
19339 for identifiers in diagnostics.
19340 * tree.c (handle_dll_attribute): Use %qE for identifiers in
19341 diagnostics.
19342 * varasm.c (output_constructor): Use %qE for identifiers in
19343 diagnostics.
19344
19345 2009-05-04 Rafael Avila de Espindola <espindola@google.com>
19346
19347 * configure.ac: use ` ` instead of $()
19348 * configure: Regenerate.
19349
19350 2009-05-05 Ben Elliston <bje@au.ibm.com>
19351
19352 * config/pa/linux-atomic.c: Eliminate conditional include of
19353 errno.h on non-LP64 systems to simplify build requirements.
19354
19355 2009-05-04 Joseph Myers <joseph@codesourcery.com>
19356
19357 * c-common.c (handle_mode_attribute): Use %qE for identifiers in
19358 diagnostics.
19359 * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
19360 and pass value to identifier_to_locale.
19361 (warn_variable_length_array): Make name a tree.
19362 (grokdeclarator): Separate diagnostic texts for named and unnamed
19363 declarators. Use %qE for named declarators.
19364 * c-parser.c (c_lex_one_token): Use %qE for identifiers in
19365 diagnostics.
19366 * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
19367 identifiers in diagnostics.
19368 * c-typeck.c (push_member_name, start_init): Pass identifiers to
19369 identifier_to_locale. Mark "anonymous" strings for translation.
19370
19371 2009-05-04 Michael Eager <eager@eagercon.com>
19372
19373 * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
19374 address for DImode/DFmode only if double-precision FP regs.
19375
19376 2009-05-04 Michael Eager <eager@eagercon.com>
19377
19378 * config/rs6000/rs6000.c (rs6000_libcall_value): Add
19379 TARGET_SINGLE_FLOAT check.
19380
19381 2009-05-04 Michael Eager <eager@eagercon.com>
19382
19383 * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
19384
19385 2009-05-04 Michael Eager <eager@eagercon.com>
19386
19387 * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
19388 * config/rs6000/t-xilinx: New
19389
19390 2009-05-04 Paolo Bonzini <bonzini@gnu.org>
19391
19392 * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
19393 * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
19394 * gcc/explow.c (memory_address): Use target hook.
19395 * gcc/targhooks.c (default_legitimize_address): New.
19396 * gcc/targhooks.h (default_legitimize_address): New.
19397 * gcc/target.h (legitimize_address): New.
19398 * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
19399 (TARGET_INITIALIZER): Include it.
19400 * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
19401
19402 * config/bfin/bfin-protos.h (legitimize_address): Remove.
19403 * config/bfin/bfin.c (legitimize_address): Remove.
19404 * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
19405 * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
19406 Remove.
19407 * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
19408 * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
19409
19410 * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
19411 THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
19412 * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
19413 * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
19414 * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
19415 * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
19416 * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
19417 * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
19418 * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
19419 * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
19420 * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
19421 * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
19422 * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
19423 * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
19424 * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
19425 * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
19426 * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
19427 * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
19428 * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
19429 * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
19430 * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
19431 * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
19432 * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
19433
19434 * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
19435 * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
19436 * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
19437 * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
19438 * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
19439 * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
19440 * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
19441 * gcc/config/arm/arm-protos.h (arm_legitimize_address,
19442 (thumb_legitimize_address): Delete.
19443 * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
19444 * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
19445 * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
19446 * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
19447 * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
19448 * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
19449 Delete.
19450 * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
19451 Delete.
19452
19453 * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
19454 * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
19455 * config/m32r/m32r.c (m32r_legitimize_address): New.
19456 * config/m68k/m68k.c (m68k_legitimize_address): New.
19457 * config/score/score.c (score_legitimize_address): Standardize.
19458 * config/score/score3.c (score3_legitimize_address): Standardize.
19459 * config/score/score3.h (score3_legitimize_address): Adjust.
19460 * config/score/score7.c (score7_legitimize_address): Standardize.
19461 * config/score/score7.h (score7_legitimize_address): Adjust.
19462 * config/sh/sh.c (sh_legitimize_address): New.
19463 * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
19464
19465 * gcc/config/s390/s390.c (legitimize_address): Rename to...
19466 (s390_legitimize_address): ... this.
19467 * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
19468 (sparc_legitimize_address): ... this.
19469 * gcc/config/i386/i386.c (legitimize_address): Rename to...
19470 (ix86_legitimize_address): ... this.
19471 * gcc/config/avr/avr.c (legitimize_address): Rename to...
19472 (avr_legitimize_address): ... this.
19473 * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
19474 (mn10300_legitimize_address): ... this.
19475 * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
19476 (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
19477 (alpha_expand_mov): Adjust call.
19478
19479 * config/frv/frv.c (frv_legitimize_address): Return x on failure.
19480 * config/spu/spu.c (spu_legitimize_address): Likewise.
19481 * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
19482 * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
19483
19484 2009-05-04 Joseph Myers <joseph@codesourcery.com>
19485
19486 * intl.c (locale_encoding, locale_utf8): New.
19487 (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
19488 * intl.h (locale_encoding, locale_utf8): Declare.
19489 * pretty-print.c: Include ggc.h. Include iconv.h if HAVE_ICONV.
19490 (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
19491 New.
19492 * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
19493 argument.
19494 (pp_tree_identifier): Define to call pp_base_tree_identifier.
19495 (pp_base_tree_identifier): Declare as function.
19496 (identifier_to_locale): Declare.
19497 * Makefile.in (pretty-print.o): Update dependencies.
19498 * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
19499
19500 2009-05-04 Richard Guenther <rguenther@suse.de>
19501
19502 PR middle-end/40015
19503 * builtins.c (fold_builtin_memory_op): Do not decay to element
19504 type if the size matches the whole array.
19505
19506 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
19507
19508 * expmed.c (synth_mult): When trying out a shift, pass the result
19509 of a signed shift.
19510
19511 2009-05-04 Kazu Hirata <kazu@codesourcery.com>
19512
19513 * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
19514 (shiftsub1_cost): New.
19515 (init_expmed): Compute shiftsub1_cost.
19516 (synth_mult): Optimize multiplications by constants of the form
19517 -(2^^m-1) for some constant positive integer m.
19518
19519 2009-05-03 Richard Guenther <rguenther@suse.de>
19520
19521 PR c/39983
19522 * c-typeck.c (array_to_pointer_conversion): Do not built
19523 ADDR_EXPRs of arrays of pointer-to-element type.
19524 * c-gimplify.c (c_gimplify_expr): Revert change fixing
19525 up wrong ADDR_EXPRs after-the-fact.
19526 * c-common.c (strict_aliasing_warning): Strip pointer
19527 conversions for obtaining the original type.
19528 * builtins.c (fold_builtin_memset): Handle array types.
19529 (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
19530 and array types
19531
19532 2009-05-03 Richard Guenther <rguenther@suse.de>
19533
19534 PR middle-end/23329
19535 * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
19536 Do not lose casts from array types with unknown extent to array
19537 types with known extent.
19538 * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
19539 alias set compatibility.
19540
19541 2009-05-03 Manuel López-Ibáñez <manu@gcc.gnu.org>
19542
19543 * flags.h (extra_warnings): Delete.
19544 * toplev.c (process_options): Handle Wuninitialized here.
19545 * opts.c (extra_warnings): Delete.
19546 (set_Wextra): Delete.
19547 (common_handle_option): -Wextra can be handled automatically.
19548 * c-opts.c (c_common_handle_option): Delete obsolete code.
19549 (c_common_post_options): Simplify comment.
19550 * common.opt (W): Add Var.
19551 (Wextra): Add Var.
19552 (Wuninitialized): Initialize to -1.
19553
19554 2009-05-03 Adam Nemet <anemet@caviumnetworks.com>
19555 Richard Guenther <rguenther@suse.de>
19556
19557 * expr.c (get_def_for_expr): New function.
19558 (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
19559 SSA rather than trees.
19560 <MULT_EXPR>: Likewise. Use subexp0 and subexp1 instead of
19561 TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
19562
19563 2009-05-03 Joseph Myers <joseph@codesourcery.com>
19564
19565 * c-common.c (reswords): Add _Imaginary.
19566 * c-common.c (enum rid): Add RID_IMAGINARY.
19567
19568 2009-05-03 Paolo Bonzini <bonzini@gnu.org>
19569
19570 * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
19571 Patch by Richard Guenther.
19572
19573 2009-05-03 Anatoly Sokolov <aesok@post.ru>
19574
19575 * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
19576 * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
19577 * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
19578 * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
19579 * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
19580 * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
19581 * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
19582 * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
19583 * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
19584 * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
19585 * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
19586 * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
19587 * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
19588 * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
19589 * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
19590 * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
19591 * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
19592 * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
19593
19594 2009-05-02 Richard Guenther <rguenther@suse.de>
19595
19596 PR tree-optimization/39940
19597 * tree-ssa-pre.c (eliminate): Make sure we may propagate before
19598 doing so.
19599
19600 2009-05-02 Richard Guenther <rguenther@suse.de>
19601
19602 PR middle-end/40001
19603 * tree-ssa.c (execute_update_addresses_taken): Properly check
19604 if we can mark a variable DECL_GIMPLE_REG_P.
19605 * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
19606 back to the end of the function.
19607 (is_gimple_reg_type): Remove complex type special casing.
19608 * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
19609 if not optimizing.
19610
19611 2009-05-02 Ben Elliston <bje@au.ibm.com>
19612
19613 * doc/collect2.texi (Collect2): Document search path behaviour
19614 when configured with --with-ld.
19615
19616 2009-05-02 Jan Hubicka <jh@suse.cz>
19617
19618 * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
19619 parameter; update callers.
19620 (coalesce_cost_edge): EH edges are costier because they needs
19621 splitting even if not critical and even more costier when there are
19622 multiple EH predecestors.
19623
19624 2009-05-02 Jan Hubicka <jh@suse.cz>
19625
19626 * except.c (remove_eh_handler_and_replace): Handle updating after
19627 removing TRY blocks.
19628
19629 2009-05-02 Eric Botcazou <ebotcazou@adacore.com>
19630
19631 * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
19632
19633 2009-05-02 Steven Bosscher <steven@gcc.gnu.org>
19634
19635 * varasm.c: Do not include c-pragma.h.
19636 * attribs.c: Do not incude c-common.h.
19637
19638 2009-05-01 Michael Matz <matz@suse.de>
19639
19640 * calls.c (initialize_argument_information): Handle SSA names like
19641 decls with a non MEM_P DECL_RTL.
19642
19643 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
19644
19645 * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
19646 * ipa-utils.c: Likewise.
19647 * ipa-type-escape.c: Likewise.
19648 * cgraphunit.c Do not include c-common.h.
19649 * ipa-pure-const.c: Likewise.
19650 * tree-if-conv.c: Likewise.
19651 * matrix-reorg.c: Do not include c-common.h and c-tree.h.
19652 * ipa-struct-reorg.c: Likewise.
19653 * tree-nomudflap.c: Likewise.
19654 * tree-ssa-structalias.c: Likewise.
19655
19656 2009-05-01 Steven Bosscher <steven@gcc.gnu.org>
19657
19658 * store-motion.c: Many cleanups to make this pass a first-class
19659 citizen instead of an appendix to gcse load motion. Add TODO list
19660 to make this pass faster/cleaner/better.
19661
19662 (struct ls_expr): Post gcse.c-split cleanups.
19663 Rename to st_expr. Rename "loads" field to "antic_stores". Rename
19664 "stores" field to "avail_stores".
19665 (pre_ldst_mems): Rename to store_motion_mems.
19666 (pre_ldst_table): Rename to store_motion_mems_table.
19667 (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
19668 (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
19669 (ldst_entry): Rename to st_expr_entry, update users.
19670 (free_ldst_entry): Rename to free_st_expr_entry, update users.
19671 (free_ldst_mems): Rename to free_store_motion_mems, update users.
19672 (enumerate_ldsts): Rename to enumerate_store_motion_mems,
19673 update caller.
19674 (first_ls_expr): Rename to first_st_expr, update users.
19675 (next_ls_expr): Rename to next_st_expr, update users.
19676 (print_ldst_list): Rename to print_store_motion_mems. Print names of
19677 fields properly for store motion instead of names inherited from load
19678 motion in gcse.c.
19679 (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
19680 (LAST_AVAIL_CHECK_FAILURE): Explain what this is. Undefine when we
19681 are done with it.
19682
19683 (ae_kill): Rename to st_kill, update users.
19684 (ae_gen): Rename to st_avloc, update users.
19685 (transp): Rename to st_transp, update users.
19686 (pre_insert_map): Rename to st_insert_map, update users.
19687 (pre_delete_map): Rename to st_delete_map, update users.
19688 (insert_store, build_store_vectors, free_store_memory,
19689 one_store_motion_pass): Update for abovementioned changes.
19690
19691 (gcse_subst_count, gcse_create_count): Remove.
19692 (one_store_motion_pass): New statistics counters "n_stores_deleted"
19693 and "n_stores_created", local variables.
19694
19695 (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
19696 use for_each_rtx.
19697
19698 (regvec, compute_store_table_current_insn): Remove.
19699 (reg_set_info, reg_clear_last_set): Remove.
19700 (compute_store_table): Use DF caches instead of local dataflow
19701 solvers.
19702
19703 2009-05-01 Joseph Myers <joseph@codesourcery.com>
19704
19705 * c-objc-common.c (c_tree_printer): Print identifiers with
19706 pp_identifier, not pp_string. Mark "({anonymous})" for
19707 translation.
19708 * c-pretty-print.c (pp_c_ws_string): New.
19709 (pp_c_cv_qualifier, pp_c_type_specifier,
19710 pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
19711 pp_c_storage_class_specifier, pp_c_function_specifier,
19712 pp_c_attributes, pp_c_bool_constant, pp_c_constant,
19713 pp_c_primary_expression, pp_c_postfix_expression,
19714 pp_c_unary_expression, pp_c_shift_expression,
19715 pp_c_relational_expression, pp_c_equality_expression,
19716 pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
19717 use pp_string and pp_c_ws_string in place of pp_identifier and
19718 pp_c_identifier for non-identifiers. Mark English strings for
19719 translation.
19720 * c-pretty-print.h (pp_c_ws_string): Declare.
19721
19722 2009-04-30 Paul Pluzhnikov <ppluzhnikov@google.com>
19723 Roland McGrath <roland@redhat.com>
19724
19725 * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
19726 (ENABLE_LD_BUILDID): New configuration option.
19727 * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
19728 (LINK_BUILDID_SPEC): New macro.
19729 (init_spec): If defined, prepend it between LINK_EH_SPEC and
19730 link_spec.
19731 * doc/install.texi: Document --enable-linker-build-id option.
19732 * configure: Rebuild.
19733 * config.in: Rebuild.
19734
19735 2009-04-30 Adam Nemet <anemet@caviumnetworks.com>
19736
19737 * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
19738 MIPS_GP_SAVE_AREA_SIZE): Define new macros.
19739 (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD. Use
19740 MIPS_GP_SAVE_AREA_SIZE.
19741 * config/mips/mips.c (struct mips_frame_info): Update comment
19742 before arg_pointer_offset and hard_frame_pointer_offset.
19743 (mips_compute_frame_info): Update diagram before function: to
19744 correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
19745 indicate the position of frame_pointer_rtx with -fstack-protector and
19746 to show args_size. Don't allocate cprestore area for leaf functions
19747 if FRAME_GROWS_DOWNWARD. Use MIPS_GP_SAVE_AREA_SIZE to set
19748 cprestore_size.
19749 (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
19750
19751 2009-04-30 Michael Matz <matz@suse.de>
19752
19753 PR tree-optimization/39955
19754 * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
19755
19756 2009-04-30 Dave Korn <dave.korn.cygwin@gmail.com>
19757
19758 * ira.c (setup_cover_and_important_classes): Use safe macro
19759 REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
19760 directly.
19761 * genpreds.c (write_tm_preds_h): Output suitable definition of
19762 REG_CLASS_FOR_CONSTRAINT.
19763
19764 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
19765
19766 * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
19767 instead of an int.
19768 * bitmap.c (bitmap_descriptor): Likewise.
19769 * ggc-common.c (loc_descriptor): Likewise.
19770 * varray.c (varray_descriptor): Likewise.
19771 * vec.c (vec_descriptor): Likewise.
19772
19773 2009-04-30 Eric Botcazou <ebotcazou@adacore.com>
19774
19775 * Makefile.in (dce.o): Add $(EXCEPT_H).
19776 * dce.c: Include except.h and delete redundant vector definitions.
19777 (deletable_insn_p): Return false for non-call insns that can throw
19778 if DF is running.
19779
19780 2009-04-30 Steven Bosscher <steven@gcc.gnu.org>
19781
19782 * gcse.c (ae_gen): Remove.
19783 (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
19784 and make non-static function to make it available in store-motion.c.
19785 Update call sites with search-and-replace.
19786 (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
19787 extract_mentioned_regs, extract_mentioned_regs_helper,
19788 find_moveable_store, compute_store_table, load_kills_store, find_loads,
19789 store_killed_in_insn, store_killed_after, store_killed_before,
19790 build_store_vectors, insert_insn_start_basic_block, insert-store,
19791 remove_reachable_equiv_notes, replace_store_insn, delete_store,
19792 free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
19793 execute_rtl_store_motion, pass_rtl_store_motion): Move to...
19794 * store-motion.c: ...new file. Also copy data structures from gcse.c
19795 and clean up to remove parts not used by store motion.
19796 * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
19797 * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
19798
19799 2009-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
19800
19801 PR target/38571
19802 * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
19803 when optimizing for size.
19804
19805 2009-04-30 Hans-Peter Nilsson <hp@axis.com>
19806
19807 * gcse.c (gcse_constant_p): Fix typo in last change.
19808
19809 2009-04-30 Rafael Avila de Espindola <espindola@google.com>
19810
19811 * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
19812
19813 2009-04-30 Andreas Krebbel <krebbel1@de.ibm.com>
19814
19815 * gcse.c (gcse_constant_p): Make sure the constant is sharable.
19816
19817 2009-04-29 James E. Wilson <wilson@codesourcery.com>
19818
19819 * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
19820 CONST_HIGH_PART result.
19821
19822 2009-04-29 Anatoly Sokolov <aesok@post.ru>
19823
19824 * config/avr/avr.c (initial_elimination_offset): Rename to
19825 avr_initial_elimination_offset.
19826 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
19827 change return type to bool.
19828 (avr_can_eliminate): New function.
19829 * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
19830 (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
19831 (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
19832 * config/avr/avr-protos.h (initial_elimination_offset): Rename to
19833 avr_initial_elimination_offset.
19834 (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
19835 (avr_initial_elimination_offset): Define.
19836
19837 2009-04-29 Eric Botcazou <ebotcazou@adacore.com>
19838 Steven Bosscher <steven@gcc.gnu.org>
19839
19840 PR rtl-optimization/39938
19841 * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
19842 * cfgrtl.c: Include insn-attr.h.
19843 (rest_of_pass_free_cfg): New function.
19844 (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
19845 * resource.c (init_resource_info): Remove call to df_analyze.
19846
19847 2009-04-29 Richard Guenther <rguenther@suse.de>
19848
19849 PR target/39943
19850 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
19851 allow conversion to signed integers.
19852
19853 2009-04-29 Richard Guenther <rguenther@suse.de>
19854
19855 * tree-cfg.c (verify_gimple_assign_binary): Allow vector
19856 shifts of floating point vectors if the shift amount is
19857 a constant multiple of the element size.
19858
19859 2009-04-29 Andreas Krebbel <krebbel1@de.ibm.com>
19860 Michael Matz <matz@suse.de>
19861
19862 PR middle-end/39927
19863 PR bootstrap/39929
19864 * tree-outof-ssa.c (emit_partition_copy): New function.
19865 (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
19866 insert_part_to_rtx_on_edge): Perform the partition base var
19867 copy using emit_partition_copy.
19868 (insert_value_copy_on_edge): Convert constants to the right mode.
19869 (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
19870 (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
19871
19872 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
19873
19874 * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
19875 scan backwards to try to find a constant to initialize it.
19876
19877 * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
19878 insn before the loop_end instruction, don't look past labels.
19879
19880 2009-04-29 Richard Guenther <rguenther@suse.de>
19881
19882 PR middle-end/39937
19883 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
19884 loose type conversions.
19885 (forward_propagate_addr_expr): Fix tuplification bug. Remove
19886 stmts only if there are no uses of its definition.
19887
19888 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
19889
19890 * config/bfin/bfin.h (splitting_loops): Declare.
19891 * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
19892 Reorder bit definitions to be ascending.
19893 (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
19894 * config/bfin/bfin.c (splitting_loops): New variable.
19895 (bfin_cpus): Add WA_LOAD_LCREGS as needed.
19896 (struct loop_info): Remove members INIT and LOOP_INIT.
19897 (bfin_optimize_loop): Don't set them. Reorder the code that generates
19898 the LSETUP sequence. Allow LC to be loaded from any register, but
19899 also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
19900 (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
19901 set to 1.
19902 * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
19903 of reload_completed.
19904
19905 From Jie Zhang:
19906 * config/bfin/bfin.md (movsi_insn): Refine constraints.
19907
19908 2009-04-29 Rafael Avila de Espindola <espindola@google.com>
19909
19910 * Makefile.in (PLUGIN_VERSION_H): New.
19911 (OBJS-common): Remove plugin-version.o.
19912 (plugin.o): Depend on (PLUGIN_VERSION_H).
19913 (plugin-version.o): Remove.
19914 * configure: Regenerate
19915 * configure.ac: Create plugin-version.h.
19916 * gcc-plugin.h (plugin_gcc_version): Remove.
19917 (plugin_default_version_check): Change signature.
19918 * plugin-version.c: Remove.
19919 * plugin.c: Include plugin-version.h.
19920 (str_plugin_gcc_version_name): Remove.
19921 (try_init_one_plugin): Pass gcc version to plugin_init.
19922 (plugin_default_version_check): Both gcc and plugin versions are now
19923 arguments.
19924
19925 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
19926
19927 * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
19928 problematic last insns. Test for TYPE_CALL rather than CALL_P.
19929 Remove special case testing for last insn of inner loops. Don't fail
19930 if the loop ends with a jump, emit an extra nop instead.
19931
19932 * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
19933 DREGS rather than comparing directly. Remove code that tries to
19934 account for latencies.
19935
19936 2009-04-29 Richard Guenther <rguenther@suse.de>
19937
19938 PR tree-optimization/39941
19939 * tree-ssa-pre.c (eliminate): Schedule update-ssa after
19940 eliminating an indirect call.
19941
19942 2009-04-29 Richard Guenther <rguenther@suse.de>
19943
19944 * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
19945 parameter. Allow invariants as base if !require_lvalue.
19946 (verify_gimple_assign_single): Adjust.
19947
19948 2009-04-29 Bernd Schmidt <bernd.schmidt@analog.com>
19949
19950 * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
19951 (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
19952 ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
19953 ssubhi3, ssaddhi3_parts and sssubhi3_parts.
19954 (flag_mulhi3_parts): Produce a HImode output rather than trying to set
19955 a VEC_SELECT.
19956 * config/bfin/bfin.c (bfin_expand_builtin,
19957 case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
19958
19959 2009-04-28 Richard Guenther <rguenther@suse.de>
19960
19961 * tree-vect-loop.c (get_initial_def_for_induction): Use
19962 correct types for pointer increment.
19963
19964 2009-04-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
19965
19966 * toplev.c (print_version): Update GMP version string calculation.
19967
19968 2009-04-28 Eric Botcazou <ebotcazou@adacore.com>
19969
19970 PR rtl-optimization/39938
19971 * resource.c (init_resource_info): Add call to df_analyze.
19972
19973 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
19974
19975 * config/alpha/alpha.md (usegp): Cast the result of
19976 alpha_find_lo_sum_using_gp to enum attr_usegp.
19977 * config/alpha/alpha.c (override_options): Remove end-of-structure
19978 marker element from cpu_table. Use array size of cpu_table to handle
19979 -mcpu and -mtune options.
19980 (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
19981
19982 2009-04-28 Joseph Myers <joseph@codesourcery.com>
19983
19984 * config.gcc (powerpc*-*-* | rs6000-*-*): Add
19985 rs6000/option-defaults.h to tm_file. Support cpu_32, cpu_64,
19986 tune_32 and tune_64.
19987 * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
19988 support on PowerPC.
19989 * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
19990 * config/rs6000/option-defaults.h: ... here. New file.
19991 (OPT_64, OPT_32): Define.
19992 (MASK_64BIT): Define to 0 if not already defined.
19993 (OPT_ARCH64, OPT_ARCH32): Define.
19994 (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
19995 and tune_64.
19996
19997 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
19998
19999 * config/arm/arm.c (arm_override_options): Emit error on using
20000 fpa with AAPCS.
20001
20002 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
20003
20004 PR rtl-optimization/39914
20005 * ira-conflicts.c (ira_build_conflicts): Prohibit call used
20006 registers for allocnos created from user-defined variables only
20007 when not optimizing.
20008
20009 2009-04-28 Richard Guenther <rguenther@suse.de>
20010
20011 PR middle-end/39937
20012 * fold-const.c (fold_binary): Use distribute_real_division only
20013 on float types.
20014
20015 2009-04-28 Steve Ellcey <sje@cup.hp.com>
20016
20017 * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
20018 add hpux-stdint.h to tm_file.
20019 (hppa[12]*-*-hpux11*): Ditto.
20020 (ia64*-*-hpux*): Ditto.
20021 * config/hpux-stdint.h: New.
20022 * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
20023 __STDC_EXT__ for all compiles.
20024 * config/pa/pa-hpux.h: Ditto.
20025 * config/pa/pa-hpux10.h: Ditto.
20026 * config/pa/pa-hpux11.h: Ditto.
20027
20028 2009-04-28 Catherine Moore <clm@codesourcery.com>
20029
20030 * debug.h (set_name): Add comment.
20031
20032 2009-04-28 Andrew Pinski <pinskia@gmail.com>
20033
20034 PR target/39929
20035 * config/darwin.c (machopic_gen_offset): Check
20036 currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
20037 * config/arm/arm.c (require_pic_register): Likewise.
20038
20039 2009-04-28 Paolo Bonzini <bonzini@gnu.org>
20040
20041 * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
20042 m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
20043 m32c_promote_prototypes): Delete.
20044
20045 2009-04-28 Michael Matz <matz@suse.de>
20046
20047 PR middle-end/39922
20048 * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
20049 constants.
20050
20051 2009-04-28 Richard Guenther <rguenther@suse.de>
20052
20053 * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
20054
20055 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
20056
20057 * config/arm/arm-cores.def: Add support for arm1156t2f-s.
20058 * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
20059 * config/arm/arm-tune.md: Regenerate.
20060
20061 2009-04-28 Alexander Monakov <amonakov@ispras.ru>
20062
20063 * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
20064 block if there are complex incoming edges.
20065 (sel_merge_blocks): Remove useless assert.
20066 (sel_redirect_edge_and_branch): Check that edge was redirected.
20067 * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
20068 (sel_find_rgns): Delete declaration.
20069 * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
20070 the region when it is not a preheader.
20071
20072 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
20073
20074 PR c/39323
20075 * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
20076
20077 2009-04-28 Richard Guenther <rguenther@suse.de>
20078
20079 * tree.h (SSA_NAME_VALUE): Remove.
20080 (struct tree_ssa_name): Remove value_handle member.
20081 * tree-vrp.c (execute_vrp): Initialize/free the value-handle
20082 array for jump threading.
20083 * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
20084 SSA_NAME_VALUEs.
20085 * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
20086 * tree-flow.h (threadedge_initialize_values): Declare.
20087 (threadedge_finalize_values): Likewise.
20088 * tree-ssa-threadedge.c (ssa_name_values): New global variable.
20089 (SSA_NAME_VALUE): Define.
20090 (threadedge_initialize_values): New function.
20091 (threadedge_finalize_values): Likewise.
20092 * tree-ssa-dom.c (ssa_name_values): New global variable.
20093 (SSA_NAME_VALUE): Define.
20094 (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
20095
20096 2009-04-28 Ira Rosen <irar@il.ibm.com>
20097
20098 * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
20099 Use REPORT_VECTORIZED_LOCATIONS instead
20100 REPORT_VECTORIZED_LOOPS.
20101 * tree-vectorizer.c (vect_verbosity_level): Make static.
20102 (vect_loop_location): Rename to vect_location.
20103 (vect_set_verbosity_level): Update comment.
20104 (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
20105 and vect_location.
20106 (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
20107 and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
20108 instead REPORT_UNVECTORIZED_LOOPS.
20109 * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
20110 and vect_loop_def to vect_external_def and vect_internal_def.
20111 (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
20112 and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
20113 REPORT_UNVECTORIZED_LOCATIONS.
20114 (enum vect_relevant): Update comment. Rename vect_unused_in_loop
20115 and vect_used_in_loop and to vect_unused_in_scope and
20116 vect_used_in_scope.
20117 (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
20118 (vect_verbosity_level): Remove declaration.
20119 (vect_analyze_operations): Likewise.
20120 (vect_analyze_stmt): Declare.
20121 * tree-vect-loop.c (vect_determine_vectorization_factor): Use
20122 REPORT_UNVECTORIZED_LOCATIONS.
20123 (vect_get_loop_niters): Fix indentation.
20124 (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
20125 (vect_analyze_loop_operations): New function.
20126 (vect_analyze_loop): Call vect_analyze_loop_operations instead of
20127 vect_analyze_operations.
20128 (vect_is_simple_reduction): Use new names.
20129 (vectorizable_live_operation, vect_transform_loop): Likewise.
20130 * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
20131 to specify whether the data references can be a part of interleaving
20132 chain.
20133 (vect_analyze_data_ref_dependence): Use new names.
20134 (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
20135 (vect_create_addr_base_for_vector_ref): Remove redundant code.
20136 * tree-vect-patterns.c (widened_name_p): Use new names.
20137 (vect_recog_dot_prod_pattern): Likewise.
20138 * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
20139 (process_use, vect_mark_stmts_to_be_vectorized,
20140 vect_model_simple_cost, vect_model_store_cost,
20141 vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
20142 vectorizable_call, vectorizable_conversion, vectorizable_assignment,
20143 vectorizable_operation, vectorizable_type_demotion,
20144 vectorizable_type_promotion, vectorizable_store, vectorizable_load,
20145 vectorizable_condition): Likewise.
20146 (vect_analyze_operations): Split into vect_analyze_loop_operations
20147 and ...
20148 (vect_analyze_stmt): ... new function.
20149 (new_stmt_vec_info): Use new names.
20150 (vect_is_simple_use): Use new names and fix comment.
20151 * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
20152 (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
20153
20154 2009-04-28 Uros Bizjak <ubizjak@gmail.com>
20155
20156 PR target/39911
20157 * config/i386/i386.c (print_operand) ['Z']: Handle floating point
20158 and integer modes for x87 operands. Do not ICE for unsupported size,
20159 generate error instead. Generate error for unsupported operand types.
20160 ['z']: Do not handle HImode memory operands specially. Warning
20161 for floating-point operands. Fallthru to 'Z' for unsupported operand
20162 types. Do not ICE for unsupported size, generate error instead.
20163 (output_387_binary_op): Use %Z to output operands.
20164 (output_fp_compare): Ditto.
20165 (output_387_reg_move): Ditto.
20166
20167 2009-04-28 Ben Elliston <bje@au.ibm.com>
20168
20169 PR c++/35652
20170 Revert:
20171
20172 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
20173
20174 * builtins.c (c_strlen): Do not warn here.
20175 * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
20176 * c-common.c (pointer_int_sum): Take an explicit location.
20177 Warn about offsets out of bounds.
20178 * c-common.h (pointer_int_sum): Adjust declaration.
20179
20180 2009-04-27 Ian Lance Taylor <iant@google.com>
20181
20182 * collect2.c (is_ctor_dtor): Change type of ret field in struct
20183 names to symkind.
20184 * dce.c (run_fast_df_dce): Change type of old_flags to int.
20185 * df-core.c (df_set_flags): Change return type to int. Change
20186 type of old_flags to int.
20187 (df_clear_flags): Likewise.
20188 * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
20189 (df_get_conditional_uses): Likewise.
20190 * df.h (df_set_flags, df_clear_flags): Update declarations.
20191 * dwarf2out.c (struct indirect_string_node): Change type of form
20192 field to enum dwarf_form.
20193 (AT_string_form): Change return type to enum dwarf_form.
20194 * fixed-value.c (fixed_compare): Add cast to enum type.
20195 * fwprop.c (update_df): Change 0 to VOIDmode.
20196 * gensupport.c: Change 0 to UNKNOWN.
20197 * gimple.h (gimple_cond_code): Add cast to enum type.
20198 * haifa-sched.c (reemit_notes): Add cast to enum type.
20199 * hooks.c (hook_int_void_no_regs): Remove function.
20200 * hooks.h (hook_int_void_no_regs): Remove declaration.
20201 * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
20202 * predict.c (combine_predictions_for_insn): Add casts to enum type.
20203 * real.c (real_arithmetic): Add cast to enum type.
20204 (real_compare): Likewise.
20205 * target.h (struct gcc_target): Change return type of
20206 branch_target_register_class to enum reg_class.
20207 * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
20208 default_branch_target_register_class.
20209 * targhooks.c (default_branch_target_register_class): New function.
20210 * targhooks.h (default_branch_target_register_class): Declare.
20211 * tree-data-ref.c (print_direction_vector): Add cast to enum type.
20212 * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
20213 cast to int.
20214 * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
20215 ERROR_MARK.
20216 * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
20217 vect_uninitialized_def. Change 0 to ERROR_MARK.
20218 * tree-vect-stmts.c (supportable_widening_operation): Don't
20219 initialize icode1 and icode2.
20220 * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
20221 * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
20222 and to STD_C89.
20223 (cmn_err_flag_specs): Change 0 to STD_C89.
20224 (cmn_err_char_table): Likewise.
20225 * config/arm/arm.c (get_arm_condition_code): Change type of code
20226 to enum arm_cond_code.
20227 (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
20228 (IWMMXT_BUILTIN2): Likewise.
20229 (neon_builtin_type_bits): Don't define typedef.
20230 (neon_builtin_datum): Change type of bits field to int.
20231 (arm_expand_neon_args): Add cast to enum type.
20232 * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
20233 TLS_MODEL_NONE.
20234 * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN. Add
20235 casts to enum type.
20236 * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
20237 MIPS_FP_COND_f.
20238 * config/mips/mips.md (jal_macro): Return enum constant.
20239 (single_insn): Likewise.
20240 * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
20241 CODE_FOR_nothing.
20242 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
20243 casts to enum type.
20244 * config/s390/s390.c (s390_tune_flags): Change type to int.
20245 (s390_arch_flags): Likewise.
20246 (s390_handle_arch_option): Change flags field of struct pta to int.
20247 * config/s390/s390.h (s390_tune_flags): Update declaration.
20248 (s390_arch_flags): Likewise.
20249 * config/sh/sh.c (prepare_move_operands): Compare
20250 tls_symbolic_operand result with enum constant.
20251 (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
20252 (sh_expand_prologue): Add cast to enum type.
20253 (sh_expand_epilogue): Likewise.
20254 (tls_symbolic_operand): Change return type to enum tls_model.
20255 (fpscr_set_from_mem): Add cast to enum type.
20256 (legitimize_pic_address): Compare tls_symbolic_operand result with
20257 enum constant.
20258 (sh_target_reg_class): Change return type to enum reg_class.
20259 * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
20260 PROCESSOR_xxx.
20261 * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
20262 * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
20263 * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
20264 (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
20265 (delayed_branch, tls_call_delay): Likewise.
20266 (eligible_for_sibcall_delay): Likewise.
20267 (eligible_for_return_delay): Likewise.
20268 * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
20269 (spu_expand_builtin_1): Likewise.
20270
20271 * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
20272 for all types of conversions.
20273 (output_init_element): Issue -Wc++-compat warning if needed when
20274 initializing a bitfield with enum type.
20275 * c-parser.c (c_parser_expression): Set original_type to
20276 original_type of right hand operand of comma operator.
20277
20278 2009-04-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20279
20280 * doc/c-tree.texi (Types, Functions, Expression trees): Fix
20281 grammar nits.
20282 * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
20283 * doc/cpp.texi (Standard Predefined Macros)
20284 (Implementation-defined behavior): Likewise.
20285 * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
20286 * doc/gimple.texi (GIMPLE Exception Handling)
20287 (@code{GIMPLE_ASSIGN}): Likewise.
20288 * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
20289 * doc/invoke.texi (Warning Options, Optimize Options)
20290 (AVR Options, Darwin Options): Likewise.
20291 (Optimize Options): Reformulate -fwhole-program description.
20292 * doc/loop.texi (Lambda): Likewise.
20293 * doc/md.texi (Output Template, Define Constraints)
20294 (Standard Names, Insn Splitting): Likewise.
20295 * doc/options.texi (Option properties): Likewise.
20296 * doc/passes.texi (Tree-SSA passes): Likewise.
20297 * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
20298 * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
20299 (File Names and DBX): Likewise.
20300 * doc/trouble.texi (Incompatibilities): Likewise.
20301
20302 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
20303
20304 * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
20305 instruction is correct.
20306
20307 2009-04-27 Trevor Smigiel <trevor_smigiel@playstation.sony.com>
20308
20309 Allow non-constant arguments to conversion intrinsics.
20310 * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
20311 * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
20312 * spu.c (print_operand): Handle 'v' and 'w'.
20313 (exp2_immediate_p, spu_gen_exp2): Define.
20314 * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
20315 spu_convtf_1): Update parameter descriptions.
20316 * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
20317 * constraints.md ('v', 'w'): New.
20318 * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
20319 Remove.
20320 (i2f, I2F): New define_mode_attr.
20321 (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
20322 floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
20323 fixuns_truncv4sfv4si2): Update to use mode attribute.
20324 (float<mode><i2f>2_mul, float<mode><i2f>2_div,
20325 fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
20326 floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
20327 patterns for combine.
20328
20329 2009-04-27 Steven Bosscher <steven@gcc.gnu.org>
20330
20331 * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
20332 (cprop, hoist, pre, store_motion): New debug counters.
20333 * tree-pass.h (pass_tracer): Move to list of gimple passes, it
20334 is not an RTL pass anymore.
20335 (pass_profiling): Remove extern decl for pass removed in 2005.
20336 (pass_gcse, pass_jump_bypass): Remove.
20337 * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
20338 to 0 for clean state.
20339 * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
20340 * cse.c (gate_handle_cse_after_global_opts,
20341 rest_of_handle_cse_after_global_opts): New functions.
20342 (pass_cse_after_global_opts): New pass, does local CSE.
20343 * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
20344 (TV_CPROP): New timevar.
20345 * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
20346 (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
20347 (gcse_main, recompute_all_luids): Remove.
20348 (compute_hash_table_work): Call max_reg_num instead of reading
20349 max_gcse_regno.
20350 (cprop_jump): Don't set run_jump_opt_after_gcse.
20351 (constprop_register): Always allow to alter jumps.
20352 (cprop_insn): Likewise.
20353 (do_local_cprop): Likewise.
20354 (local_cprop_pass): Likewise. Return non-zero if something changed.
20355 (cprop): Remove function, fold interesting bits into one_cprop_pass.
20356 (find_implicit_sets): Add note about missed optimization opportunity.
20357 (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
20358 pass_rtl_cprop execute function.
20359 Don't bother tracking the pass number, each pass gets its own dumpfile
20360 now anyway.
20361 Always allow to alter jumpsand bypass jumps.
20362 (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
20363 will just find no suitable set.
20364 (pre_edge_insert): Fix dumping, this function is for PRE only.
20365 (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
20366 pass_rtl_pre execute function.
20367 (hoist_code): Return non-zero if something changed. Keep track of
20368 substitutions and insertions for statistics gathering similar to PRE.
20369 (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
20370 called from the pass_rtl_hoist execute function. Show pass statistics.
20371 (compute_store_table): Use max_reg_num directly instead of using the
20372 formerly global max_gcse_regno.
20373 (build_store_vectors): Likewise.
20374 (replace_store_insn): Fix dumping.
20375 (store_motion): Rename to ...
20376 (one_store_motion_pass): ... this. Rewrite to be "the" STORE_MOTION
20377 pass, called from the pass_rtl_store_motion execute function. Keep
20378 track of substitutions and insertions for statistics gathering similar
20379 to PRE.
20380 (bypass_jumps): Remove, fold interesting bits into ...
20381 (one_cprop_pass): ... this. Rewrite to be "the" CPROP pass, called
20382 from the pass_rtl_cprop execute function.
20383 (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
20384 pass_jump_bypass): Remove.
20385 (gate_handle_gcse, rest_of_handle_gcse): Remove.
20386 (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
20387 (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
20388 (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
20389 (gate_rtl_store_motion, execute_rtl_store_motion,
20390 pass_rtl_store_motion): New.
20391 * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
20392 make it clear that -fcse-skip-blocks is a no-op for backward compat.
20393 * passes.c (init_optimization_passes): Remove pass_gcse and
20394 pass_jump_bypass. Schedule cprop, pre, hoist, cprop, store_motion,
20395 and cse_after_global_opts in place of pass_gcse. Schedule cprop
20396 instead of pass_jump_bypass.
20397
20398 2009-04-27 Richard Guenther <rguenther@suse.de>
20399
20400 PR middle-end/39928
20401 * gimplify.c (gimplify_expr): If we are required to create
20402 a temporary make sure it ends up as register.
20403
20404 2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
20405
20406 PR target/39903
20407 * config/i386/i386.c (construct_container): Don't call
20408 gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
20409 X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
20410
20411 2009-04-27 Michael Matz <matz@suse.de>
20412
20413 * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
20414 (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
20415 * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
20416 (dump_replaceable_exprs): Take a bitmap.
20417 * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
20418 array.
20419 (expand_gimple_basic_block): Likewise.
20420 * tree-ssa-ter.c (struct temp_expr_table_d): Make
20421 replaceable_expressions member a bitmap.
20422 (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
20423 (mark_replaceable): Likewise.
20424 (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
20425 * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
20426
20427 2009-04-27 Richard Guenther <rguenther@suse.de>
20428
20429 * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
20430 (verify_stmts): Dispatch to gimple/type verification code.
20431 * tree-inline.c (remap_gimple_op_r): Work around C++ FE
20432 issue with call argument types.
20433
20434 2009-04-27 Michael Matz <matz@suse.de>
20435
20436 * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
20437 (init_update_ssa, delete_update_ssa, update_ssa): Remove references
20438 to above.
20439
20440 2009-04-27 Richard Sandiford <rdsandiford@googlemail.com>
20441 Eric Botcazou <ebotcazou@adacore.com>
20442
20443 * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
20444 a label's basic block.
20445 (mark_target_live_regs): Tidy and rework obsolete comments.
20446 Change back DF problem to LIVE. If a label starts a basic block,
20447 assume that all registers that used to be live then still are.
20448 (init_resource_info): If a label starts a basic block, set its
20449 BLOCK_FOR_INSN accordingly.
20450 (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
20451
20452 2009-04-27 Richard Guenther <rguenther@suse.de>
20453
20454 * tree-flow-inline.h (function_ann): Remove.
20455 (get_function_ann): Likewise.
20456 * tree-dfa.c (create_function_ann): Remove.
20457 * tree-flow.h (struct static_var_ann_d): Remove.
20458 (struct function_ann_d): Likewise.
20459 (union tree_ann_d): Remove fdecl member.
20460 (function_ann_t): Remove.
20461 (function_ann, get_function_ann, create_function_ann): Remove
20462 declarations.
20463
20464 2009-04-27 Uros Bizjak <ubizjak@gmail.com>
20465
20466 * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
20467
20468 2009-04-27 Jan Hubicka <jh@suse.cz>
20469
20470 * ipa-pure-const.c (struct funct_state_d): New fields
20471 state_previously_known, looping_previously_known; remove
20472 state_set_in_source.
20473 (analyze_function): Use new fields.
20474 (propagate): Avoid assumption that state_set_in_source imply
20475 nonlooping.
20476
20477 * tree-ssa-loop-niter.c (finite_loop_p): New function.
20478 * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
20479 * cfgloop.h (finite_loop_p): Declare.
20480
20481 2009-04-26 Michael Matz <matz@suse.de>
20482
20483 * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
20484
20485 2009-04-26 Michael Matz <matz@suse.de>
20486
20487 * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
20488 pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
20489 * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
20490 pass_mark_used_blocks): Remove.
20491 * tree-optimize.c (pass_free_datastructures,
20492 execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
20493 * passes.c (init_optimization_passes): Don't call
20494 pass_mark_used_blocks, remove dead code.
20495
20496 2009-04-26 H.J. Lu <hongjiu.lu@intel.com>
20497
20498 * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
20499 * tree-ssa-live.h (register_ssa_partition): Likewise.
20500
20501 2009-04-26 Michael Matz <matz@suse.de>
20502
20503 Expand from SSA.
20504 * builtins.c (fold_builtin_next_arg): Handle SSA names.
20505 * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
20506 * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
20507 SSA names.
20508 (compare_pairs): Swap cost comparison.
20509 (coalesce_ssa_name): Don't use change_partition_var.
20510 * tree-nrv.c (struct nrv_data): Add modified member.
20511 (finalize_nrv_r): Set it.
20512 (tree_nrv): Use it to update statements.
20513 (pass_nrv): Require PROP_ssa.
20514 * tree-mudflap.c (mf_decl_cache_locals,
20515 mf_build_check_statement_for): Use make_rename_temp.
20516 (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
20517 * alias.c (find_base_decl): Handle SSA names.
20518 * emit-rtl (set_reg_attrs_for_parm): Make non-static.
20519 (component_ref_for_mem_expr): Don't leak SSA names into RTL.
20520 * rtl.h (set_reg_attrs_for_parm): Declare.
20521 * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
20522 to "optimized", remove unused locals at finish.
20523 (execute_free_datastructures): Make global, call
20524 delete_tree_cfg_annotations.
20525 (execute_free_cfg_annotations): Don't call
20526 delete_tree_cfg_annotations.
20527
20528 * ssaexpand.h: New file.
20529 * expr.c (toplevel): Include ssaexpand.h.
20530 (expand_assignment): Handle SSA names the same as register variables.
20531 (expand_expr_real_1): Expand SSA names.
20532 * cfgexpand.c (toplevel): Include ssaexpand.h.
20533 (SA): New global variable.
20534 (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
20535 (SSAVAR): New macro.
20536 (set_rtl): New helper function.
20537 (add_stack_var): Deal with SSA names, use set_rtl.
20538 (expand_one_stack_var_at): Likewise.
20539 (expand_one_stack_var): Deal with SSA names.
20540 (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
20541 before unique numbers.
20542 (expand_stack_vars): Use set_rtl.
20543 (expand_one_var): Accept SSA names, add asserts for them, feed them
20544 to above subroutines.
20545 (expand_used_vars): Expand all partitions (without default defs),
20546 then only the local decls (ignoring those expanded already).
20547 (expand_gimple_cond): Remove edges when jumpif() expands an
20548 unconditional jump.
20549 (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
20550 or remove abnormal edges. Ignore insns setting the LHS of a TERed
20551 SSA name.
20552 (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
20553 members of SA; deal with PARM_DECL partitions here; expand
20554 all PHI nodes, free tree datastructures and SA. Commit instructions
20555 on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
20556 (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
20557 info and statements at start, collect garbage at finish.
20558 * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
20559 (VAR_ANN_PARTITION) Remove.
20560 (change_partition_var): Don't declare.
20561 (partition_to_var): Always return SSA names.
20562 (var_to_partition): Only accept SSA names.
20563 (register_ssa_partition): Only check argument.
20564 * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
20565 member.
20566 (delete_var_map): Don't free it.
20567 (var_union): Only accept SSA names, simplify.
20568 (partition_view_init): Mark only useful SSA names as used.
20569 (partition_view_fini): Only deal with SSA names.
20570 (change_partition_var): Remove.
20571 (dump_var_map): Use ssa_name instead of partition_to_var member.
20572 * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
20573 basic blocks.
20574 * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
20575 (struct _elim_graph): New member const_dests; nodes member vector of
20576 ints.
20577 (set_location_for_edge): New static helper.
20578 (create_temp): Remove.
20579 (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
20580 insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
20581 (new_elim_graph): Allocate const_dests member.
20582 (clean_elim_graph): Truncate const_dests member.
20583 (delete_elim_graph): Free const_dests member.
20584 (elim_graph_size): Adapt to new type of nodes member.
20585 (elim_graph_add_node): Likewise.
20586 (eliminate_name): Likewise.
20587 (eliminate_build): Don't take basic block argument, deal only with
20588 partition numbers, not variables.
20589 (get_temp_reg): New static helper.
20590 (elim_create): Use it, deal with RTL temporaries instead of trees.
20591 (eliminate_phi): Adjust all calls to new signature.
20592 (assign_vars, replace_use_variable, replace_def_variable): Remove.
20593 (rewrite_trees): Only do checking.
20594 (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
20595 (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
20596 init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
20597 contains_tree_r, MAX_STMTS_IN_LATCH,
20598 process_single_block_loop_latch, analyze_edges_for_bb,
20599 perform_edge_inserts): Remove.
20600 (expand_phi_nodes): New global function.
20601 (remove_ssa_form): Take ssaexpand parameter. Don't call removed
20602 functions, initialize new parameter, remember partitions having a
20603 default def.
20604 (finish_out_of_ssa): New global function.
20605 (rewrite_out_of_ssa): Make global. Adjust call to remove_ssa_form,
20606 don't reset in_ssa_p here, don't disable TER when mudflap.
20607 (pass_del_ssa): Remove.
20608 * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
20609 partition members.
20610 (execute_free_datastructures): Declare.
20611 * Makefile.in (SSAEXPAND_H): New variable.
20612 (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
20613 * basic-block.h (commit_one_edge_insertion): Declare.
20614 * passes.c (init_optimization_passes): Move pass_nrv and
20615 pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
20616 pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
20617 * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
20618 (redirect_branch_edge): Deal with super block when expanding, split
20619 out jump patching itself into ...
20620 (patch_jump_insn): ... here, new static helper.
20621
20622 2009-04-26 Michael Matz <matz@suse.de>
20623
20624 * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
20625 beyond num_ssa_names.
20626 * tree-ssa-ter.c (free_temp_expr_table): Likewise.
20627 * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
20628
20629 2009-04-26 Jakub Jelinek <jakub@redhat.com>
20630
20631 PR inline-asm/39543
20632 * fwprop.c (forward_propagate_asm): New function.
20633 (forward_propagate_and_simplify): Propagate also into __asm, if it
20634 doesn't increase the number of referenced registers.
20635
20636 PR c/39889
20637 * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
20638
20639 2009-04-26 Jakub Jelinek <jakub@redhat.com>
20640
20641 * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
20642 note_nonlocal_vla_type for nonlocal VLAs.
20643 (note_nonlocal_vla_type, note_nonlocal_block_vlas,
20644 contains_remapped_vars, remap_vla_decls): New functions.
20645 (convert_nonlocal_reference_stmt): If not optimizing, call
20646 note_nonlocal_block_vlas on GIMPLE_BIND block vars.
20647 (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
20648 if it wasn't found in var_map.
20649 (finalize_nesting_tree_1): Call remap_vla_decls. If outermost
20650 GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
20651 to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
20652 declare_vars.
20653 * gimplify.c (nonlocal_vlas): New variable.
20654 (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
20655 referenced VLAs.
20656 (gimplify_body): Create and destroy nonlocal_vlas.
20657
20658 * dwarf2out.c (loc_descr_plus_const): New function.
20659 (build_cfa_aligned_loc, tls_mem_loc_descriptor,
20660 mem_loc_descriptor, loc_descriptor_from_tree_1,
20661 descr_info_loc, gen_variable_die): Use it.
20662
20663 * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
20664 !TREE_STATIC VAR_DECLs.
20665 * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
20666 DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
20667 (gen_variable_die): Likewise. Don't look at TREE_PRIVATE if
20668 DECL_BY_REFERENCE is valid.
20669 * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
20670 for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
20671 * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
20672 Copy DECL_BY_REFERENCE.
20673 (struct nesting_copy_body_data): New type.
20674 (nesting_copy_decl): New function.
20675 (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
20676 if they have variable length.
20677
20678 2009-04-26 Michael Matz <matz@suse.de>
20679
20680 * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
20681 mark new temporaries for renaming.
20682
20683 2009-04-26 Joseph Myers <joseph@codesourcery.com>
20684
20685 PR c/39581
20686 * c-decl.c (global_bindings_p): Return negative value.
20687 (c_variable_size): New. Based on variable_size from
20688 stor-layout.c.
20689 (grokdeclarator): Call c_variable_size not variable_size.
20690
20691 2009-04-26 Uros Bizjak <ubizjak@gmail.com>
20692
20693 * config/i386/i386.c (print_operand) ['z']: Fix typo.
20694
20695 2009-04-26 Kai Tietz <kai.tietz@onevision.com>
20696
20697 * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
20698 Redefine it to just use mingw/include.
20699 (ASM_SPEC): Rules for -m32 and -m64.
20700 (LINK_SPEC): Use Likewise.
20701 (SPEC_32): New define.
20702 (SPEC_64): Likewise.
20703 (SUB_LINK_SPEC): Likewise.
20704 (MULTILIB_DEFAULTS): New define.
20705 * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
20706 Add multilib options.
20707 (MULTILIB_DIRNAMES): Likewise.
20708 (MULTILIB_OSDIRNAMES): Likewise.
20709 (LIBGCC): Likewise.
20710 (INSTALL_LIBGCC): Likewise.
20711
20712 2009-04-26 Joseph Myers <joseph@codesourcery.com>
20713
20714 PR c/39556
20715 * c-tree.h (enum c_inline_static_type): New.
20716 (record_inline_static): Declare.
20717 * c-decl.c (struct c_inline_static, c_inline_statics,
20718 record_inline_static, check_inline_statics): New.
20719 (pop_file_scope): Call check_inline_statics.
20720 (start_decl): Call record_inline_static instead of pedwarning
20721 directly for static in inline function.
20722 * c-typeck.c (build_external_ref): Call record_inline_static
20723 instead of pedwarning directly for static referenced in inline
20724 function.
20725
20726 2009-04-26 Steven Bosscher <steven@gcc.gnu.org>
20727
20728 * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
20729 not new but only being rescanned.
20730 * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
20731 reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
20732 alloc_reg_set_mem, free_reg_set_mem, record_one_set,
20733 record_set_info, compute_set, grealloc): Remove.
20734 (recompute_all_luids): New function.
20735 (gcse_main): Don't compute sets, and don't do related memory
20736 allocations/free-ing. If something changed before the end of the
20737 pass, update LUIDs using recompute_all_luids.
20738 (alloc_gcse_mem): Don't compute LUIDs. Don't allocate reg_set memory.
20739 (free_gcse_mem): Don't free it either.
20740 (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
20741 Use the df insn LUIDs.
20742 (load_killed_in_block): Likewise.
20743 (compute_hash_table_work): Don't compute reg_set_in_block.
20744 (compute_transp): Use DF_REG_DEF_CHAINs.
20745 (local_cprop_pass): Don't use compute_sets and related functions.
20746 (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
20747 Use get_max_uid() instead of max_cuid.
20748 (insert_insn_end_basic_block, pre_insert_copy_insn,
20749 update_ld_motion_stores): Don't try to
20750 keep reg_set tables up to date.
20751 (pre_insert_copies): Use df insn LUIDs.
20752 (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
20753 (reg_set_info): Don't use extra bitmap argument.
20754 (compute_store_table): Don't compute reg_set_in_block. Use DF scan
20755 information to compute regs_set_in_block.
20756 (free_store_memory, store_motion): Don't nullify reg_set_in_block.
20757 (bypass_jumps): Don't use compute_sets and friends.
20758
20759 2009-04-26 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20760
20761 PR testsuite/39710
20762 * opts.c (undocumented_msg): Do not leave blank even with
20763 ENABLE_CHECKING.
20764
20765 2009-04-25 Joseph Myers <joseph@codesourcery.com>
20766
20767 * c-decl.c (build_enumerator): Allow values folding to integer
20768 constants but not integer constant expressions with a pedwarn if
20769 pedantic.
20770
20771 2009-04-25 Joseph Myers <joseph@codesourcery.com>
20772
20773 PR c/39582
20774 * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
20775 with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
20776 type is an integer constant.
20777
20778 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
20779
20780 PR target/39897
20781 * config/i386/i386.c (print_operand) ['z']: Revert handling of
20782 HImode operands.
20783
20784 2009-04-25 Joseph Myers <joseph@codesourcery.com>
20785
20786 PR c/39564
20787 * c-decl.c (grokdeclarator): Diagnose declarations of functions
20788 with variably modified return type and no storage class
20789 specifiers, except for the case of nested functions. Distinguish
20790 extern declarations of functions with variably modified return
20791 types from those of objects with variably modified types.
20792
20793 2009-04-25 Jan Hubicka <jh@suse.cz>
20794
20795 * tree.c (list_equal_p): New function.
20796 * tree.h (list_equal_p): Declare.
20797 * coretypes.h (edge_def, edge, const_edge, basic_block_def
20798 basic_block_def, basic_block, const_basic_block): New.
20799 * tree-eh.c (make_eh_edge): EH edges are not abnormal.
20800 (redirect_eh_edge): New function.
20801 (make_eh_edge_update_phi): EH edges are not abnormal.
20802 * except.c: Include tree-flow.h.
20803 (list_match): New function.
20804 (eh_region_replaceable_by_p): New function.
20805 (replace_region): New function.
20806 (hash_type_list): New function.
20807 (hash_eh_region): New function.
20808 (eh_regions_equal_p): New function.
20809 (merge_peers): New function.
20810 (remove_unreachable_regions): Verify EH tree when checking;
20811 merge peers.
20812 (copy_eh_region_1): New function.
20813 (copy_eh_region): New function.
20814 (push_reachable_handler): New function.
20815 (build_post_landing_pads, dw2_build_landing_pads): Be ready for
20816 regions without label but with live RESX.
20817 * except.h (redirect_eh_edge_to_label): New.
20818 * tree-flow.h (redirect_eh_edge): New.
20819 * coretypes.h (edge_def, edge, const_edge, basic_block_def
20820 basic_block_def, basic_block, const_basic_block): Remove.
20821 * Makefile.in (except.o): Add dependency on tree-flow.h
20822 * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
20823 * basic-block.h (edge, const_edge, basic_block, const_basic_block):
20824 Remove.
20825
20826 2009-04-25 Eric Botcazou <ebotcazou@adacore.com>
20827
20828 PR bootstrap/39645
20829 * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
20830 on the destination of memcpy.
20831
20832 2009-04-25 Paolo Bonzini <bonzini@gnu.org>
20833
20834 * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
20835 REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
20836 REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
20837
20838 2009-04-25 Jan Hubicka <jh@suse.cz>
20839
20840 * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
20841 (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
20842 to be reached by different label than left.
20843 (update_eh_edges): Update comment; remove edge_to_remove if possible
20844 and return true if suceeded.
20845 (cleanup_empty_eh): Accept sharing map; handle shared regions.
20846 (cleanup_eh): Compute sharing map.
20847 * except.c (remove_eh_handler_and_replace): Add argument if we should
20848 update regions.
20849 (remove_unreachable_regions): Update for label sharing.
20850 (label_to_region_map): Likewise.
20851 (get_next_region_sharing_label): New function.
20852 (remove_eh_handler_and_replace): Add update_catch_try parameter; update
20853 prev_try pointers.
20854 (remove_eh_handler): Update.
20855 (remove_eh_region_and_replace_by_outer_of): New function.
20856 * except.h (struct eh_region): Add next_region_sharing_label.
20857 (remove_eh_region_and_replace_by_outer_of,
20858 get_next_region_sharing_label): Declare.
20859 * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
20860
20861 2009-04-25 Jan Hubicka <jh@suse.cz>
20862
20863 * tree-cfg.c (split_critical_edges): Split also edges where we can't
20864 insert code even if they are not critical.
20865
20866 2009-04-25 Jan Hubicka <jh@suse.cz>
20867
20868 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20869 (gimple_can_remove_branch_p): EH edges won't remove branch by
20870 redirection.
20871 * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
20872 updating of non-abnormal EH edges.
20873 * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
20874 (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
20875 (split_critical_edges): Split also edges where emitting code on them
20876 will lead to splitting later.
20877
20878 2009-04-25 Uros Bizjak <ubizjak@gmail.com>
20879 H.J. Lu <hongjiu.lu@intel.com>
20880
20881 PR target/39590
20882 * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
20883 the configured assembler supports fildq and fistpq mnemonics.
20884 (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
20885 * configure: Regenerated.
20886 * config.in: Ditto.
20887
20888 * config/i386/i386.c (print_operand): Handle 'Z'.
20889 ['z']: Remove handling of special fild/fist suffixes.
20890 (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
20891 * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
20892 suffix of fild insn.
20893 (*floatsi<mode>2_vector_mixed): Ditto.
20894 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
20895 (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
20896 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20897 (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
20898 * config/i386/gas.h (GAS_MNEMONICS): Remove.
20899
20900 2009-04-25 Ben Elliston <bje@au.ibm.com>
20901
20902 * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
20903 the source of a set operation.
20904
20905 2009-04-25 Anatoly Sokolov <aesok@post.ru>
20906
20907 * target.h (struct gcc_target): Add case_values_threshold field.
20908 * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
20909 (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
20910 * targhooks.c (default_case_values_threshold): New function.
20911 * targhooks.h (default_case_values_threshold): Declare function.
20912 * stmt.c (expand_case): Use case_values_threshold target hook.
20913 * expr.h (case_values_threshold): Remove declartation.
20914 * expr.c (case_values_threshold): Remove function.
20915 * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
20916
20917 * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
20918 * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20919 (avr_case_values_threshold): Declare as static.
20920 * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
20921
20922 * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
20923 * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
20924 (mn10300_case_values_threshold): New function.
20925
20926 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
20927
20928 * ira.c (setup_cover_and_important_classes): Add enum cast.
20929
20930 2009-04-24 Vladimir Makarov <vmakarov@redhat.com>
20931
20932 * genpreds.c (write_enum_constraint_num): Output definition of
20933 CONSTRAINT_NUM_DEFINED_P macro.
20934 * ira.c (setup_cover_and_important_classes): Use
20935 CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
20936
20937 2009-04-24 DJ Delorie <dj@redhat.com>
20938
20939 * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
20940 __SH2A_SINGLE_ONLY__ also.
20941
20942 2009-04-24 Steve Ellcey <sje@cup.hp.com>
20943
20944 * config/ia64/ia64.md (movfs_internal): Allow flt constants.
20945 (movdf_internal): Ditto.
20946 * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
20947 SFmode and DFmode constants.
20948 (ia64_print_operand): Add 'G' format for printing
20949 floating point constants.
20950
20951 2009-04-24 Richard Guenther <rguenther@suse.de>
20952
20953 * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
20954 from unsigned additions.
20955
20956 2009-04-24 Joseph Myers <joseph@codesourcery.com>
20957
20958 * c-typeck.c (set_init_index): Allow array designators that are
20959 not integer constant expressions with a pedwarn if pedantic.
20960
20961 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
20962
20963 * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
20964 zero if no overlap in nonzero bits between the operands.
20965
20966 2009-04-24 Ian Lance Taylor <iant@google.com>
20967
20968 * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
20969 (record_dead_and_set_regs): Likewise.
20970 * df.h (struct df_mw_hardreg): Change flags field to int.
20971 (struct df_base_ref): Likewise.
20972 (struct df): Change changeable_flags field to int.
20973 * df-scan.c (df_defs_record): Change clobber_flags to int.
20974 * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
20975 constants rather than #define macros.
20976 (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
20977 (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
20978 (enum dwarf_calling_convention): Likewise.
20979 (enum dwarf_line_number_x_ops): Likewise.
20980 (enum dwarf_call_frame_info): Likewise.
20981 (enum dwarf_source_language): Likewise.
20982 * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
20983 (add_calling_convention_attribute): Likewise.
20984 * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
20985 (combine_comparisons): Change compcode to int. Add cast to enum type.
20986 * genrecog.c (maybe_both_true_2): Change c to int.
20987 (write_switch): Likewise. Add cast to enum type.
20988 * gimplify.c (gimplify_omp_for): Handle return values from
20989 gimplify_expr using MIN rather than bitwise or.
20990 (gimplify_expr): Add cast to enum type.
20991 * ipa-prop.c (update_jump_functions_after_inlining): Change
20992 IPA_BOTTOM to IPA_JF_UNKNOWN.
20993 * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
20994 Add casts to enum type.
20995 (setup_cover_and_important_classes): Change cl to int. Add casts
20996 to enum type.
20997 (setup_class_translate): Change cl and mode to int.
20998 (ira_init_once): Change mode to int.
20999 (free_register_move_costs): Likewise.
21000 (setup_prohibited_mode_move_regs): Add casts to enum type.
21001 * langhooks.c (add_builtin_function_common): Rework assertion that
21002 value fits bitfield.
21003 * mcf.c (add_fixup_edge): Change type parameter to edge_type.
21004 * omega.c (omega_do_elimination): Avoid math on enum types.
21005 * optabs.c (expand_vec_shift_expr): Remove casts to int.
21006 * opts.c (set_debug_level): Change 2 to enum constant. Use new
21007 int local to handle integral_argment value.
21008 * regmove.c (try_auto_increment): Change PUT_MODE to
21009 PUT_REG_NOTE_KIND.
21010 * reload.c (push_secondary_reload): Add casts to enum type.
21011 (secondary_reload_class, find_valid_class): Likewise.
21012 * reload1.c (emit_input_reload_insns): Likewise.
21013 * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
21014 * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
21015 * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
21016 constant.
21017 * tree.c (build_common_builtin_nodes): Add casts to enum type.
21018 * tree-complex.c (complex_lattice_t): Typedef to int rather than
21019 enum type.
21020 (expand_complex_libcall): Add casts to enum type.
21021 * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
21022 * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
21023 with ERROR_MARK, not NUM_TREE_CODES.
21024 (vect_create_epilog_for_reduction): Likewise.
21025 (vectorizable_reduction): Don't initialize epiloc_reduc_code.
21026 When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
21027 * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
21028 enum machine_mode.
21029 * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
21030 vect_unused_in_loop. Change 0 to loop_vect.
21031 * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
21032 * var-tracking.c (get_init_value): Change return type to enum
21033 var_init_status.
21034 * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
21035 * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
21036 arm_fp_model.
21037 (arm_override_options): Add casts to enum type.
21038 (arm_emit_tls_decoration): Likewise.
21039 * config/i386/i386.c (ix86_function_specific_restore): Add casts
21040 to enum type.
21041 * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
21042 * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
21043 * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
21044 enum type.
21045 * config/s390/s390.c (code_for_builtin_64): Change to array of
21046 enum insn_code.
21047 (code_for_builtin_31): Likewise.
21048 (s390_expand_builtin): Change code_for_builtin to enum insn_code
21049 const *.
21050 * config/sparc/sparc.c (sparc_override_options): Change value
21051 field in struct code_model to enum cmodel. In initializer change
21052 0 to NULL and add cast to enum type.
21053
21054 * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
21055 Change all callers. Issue a -Wc++-compat warning using
21056 lhs_origtype if necessary.
21057 (convert_for_assignment): Issue -Wc++-compat warnings about
21058 invalid conversions to enum type on assignment.
21059 * c-common.h (build_modify_expr): Update declaration.
21060
21061 2009-04-24 Nick Clifton <nickc@redhat.com>
21062
21063 * config/iq2000/iq2000.c (function_arg): Handle TImode values.
21064 (function_arg_advance): Likewise.
21065 * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
21066 5th alternative.
21067
21068 2009-04-24 Andreas Krebbel <krebbel1@de.ibm.com>
21069
21070 * config/s390/constraints.md ('I', 'J'): Fix condition.
21071
21072 2009-04-24 Diego Novillo <dnovillo@google.com>
21073
21074 * gengtype-parse.c (parse_error): Add newline after message.
21075
21076 2009-04-24 H.J. Lu <hongjiu.lu@intel.com>
21077
21078 * config/i386/sse.md (avxmodesuffixs): Removed.
21079 (*avx_pinsr<avxmodesuffixs>): Renamed to ...
21080 (*avx_pinsr<ssevecsize>): This.
21081
21082 2009-04-24 Bernd Schmidt <bernd.schmidt@analog.com>
21083
21084 * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
21085 follow chains of regs with a single definition, and allow expressions
21086 that are function_invariant_p.
21087 (simple_rhs_p): Allow expressions that are function_invariant_p.
21088
21089 2009-04-24 Paolo Bonzini <bonzini@gnu.org>
21090
21091 PR middle-end/39867
21092 * fold-const.c (fold_cond_expr_with_comparison): When folding
21093 > and >= to MAX, make sure the MAX uses the same type as the
21094 comparison's operands.
21095
21096 2009-04-24 Nick Clifton <nickc@redhat.com>
21097
21098 * config/frv/frv.c (frv_frame_access): Do not use reg+reg
21099 addressing for DImode accesses.
21100 (frv_print_operand_address): Handle PLUS case.
21101 * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
21102
21103 2009-04-24 Jakub Jelinek <jakub@redhat.com>
21104
21105 PR rtl-optimization/39794
21106 * alias.c (canon_true_dependence): Add x_addr argument.
21107 * rtl.h (canon_true_dependence): Adjust prototype.
21108 * cse.c (check_dependence): Adjust canon_true_dependence callers.
21109 * cselib.c (cselib_invalidate_mem): Likewise.
21110 * gcse.c (compute_transp): Likewise.
21111 * dse.c (scan_reads_nospill): Likewise.
21112 (record_store, check_mem_read_rtx): Likewise. For non-const-or-frame
21113 addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
21114 canon_base_addr of the group, plus optional offset.
21115 (struct group_info): Rename canon_base_mem to
21116 canon_base_addr.
21117 (get_group_info): Set canon_base_addr to canon_rtx of base, not
21118 canon_rtx of base_mem.
21119
21120 2009-04-23 Paolo Bonzini <bonzini@gnu.org>
21121
21122 * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
21123 Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
21124
21125 2009-04-23 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
21126
21127 * config/spu/spu-builtins.h: Delete file.
21128
21129 * config/spu/spu.h (enum spu_builtin_type): Move here from
21130 spu-builtins.h.
21131 (struct spu_builtin_description): Likewise. Add GTY marker.
21132 Do not use enum spu_function_code or enum insn_code.
21133 (spu_builtins): Add extern declaration.
21134
21135 * config/spu/spu.c: Do not include "spu-builtins.h".
21136 (enum spu_function_code, enum spu_builtin_type_index,
21137 V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
21138 V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
21139 unsigned_V8HI_type_node, unsigned_V4SI_type_node,
21140 unsigned_V2DI_type_node): Move here from spu-builtins.h.
21141 (spu_builtin_types): Make static. Add GTY marker.
21142 (spu_builtins): Add extern declaration with GTY marker.
21143 Include "gt-spu.h".
21144
21145 * config/spu/spu-c.c: Do not include "spu-builtins.h".
21146 (spu_resolve_overloaded_builtin): Do not use spu_function_code.
21147 Check programmatically whether all parameters are scalar.
21148
21149 * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
21150
21151 2009-04-23 Eric Botcazou <ebotcazou@adacore.com>
21152
21153 * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
21154 assignment from the constructor either if the target is volatile.
21155
21156 2009-04-23 Daniel Jacobowitz <dan@codesourcery.com>
21157
21158 * config/arm/arm.md (insv): Do not share operands[0].
21159
21160 2009-04-23 Nathan Sidwell <nathan@codesourcery.com>
21161
21162 * config/vxlib-tls.c (active_tls_threads): Delete.
21163 (delete_hook_installed): New.
21164 (tls_delete_hook): Don't delete the delete hook.
21165 (tls_destructor): Delete it here.
21166 (__gthread_set_specific): Adjust installing the delete hook.
21167 (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
21168 __gthread_leave_tsd_dtor_context.
21169
21170 2009-04-23 Rafael Avila de Espindola <espindola@google.com>
21171
21172 * c-format.c (gcc_tdiag_char_table): Add support for %E.
21173
21174 2009-04-23 Uros Bizjak <ubizjak@gmail.com>
21175
21176 * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
21177 enum type.
21178 (alpha_rtx_costs): Ditto.
21179 (emit_unlikely_jump): Use add_reg_note.
21180 (emit_frame_store_1): Ditto.
21181 (alpha_expand_prologue): Ditto.
21182 (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21183 * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
21184
21185 2009-04-23 Nick Clifton <nickc@redhat.com>
21186
21187 * config/v850/v850.md (epilogue): Remove suppressed code.
21188 (return): Rename to return_simple and remove test of frame size.
21189 * config/v850/v850.c (expand_epilogue): Rename call to gen_return
21190 to gen_return_simple.
21191
21192 2009-04-22 Jing Yu <jingyu@google.com>
21193
21194 PR testsuite/39781
21195 * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
21196
21197 2009-04-22 Andrew Pinski <andrew_pinski@playstation.sony.com>
21198
21199 PR C/31499
21200 * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
21201 and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the
21202 value is a VECTOR_CST, the element type is the element type of the
21203 vector.
21204
21205 2009-04-22 DJ Delorie <dj@redhat.com>
21206
21207 * config/m32c/m32c.h: Update GTY annotations to new syntax.
21208
21209 2009-04-22 Jakub Jelinek <jakub@redhat.com>
21210
21211 * alias.c (find_base_term): Move around LO_SUM case, so that
21212 CONST falls through into PLUS/MINUS handling.
21213
21214 PR c/39855
21215 * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
21216 into 0, use omit_one_operand.
21217
21218 2009-04-23 Ben Elliston <bje@au.ibm.com>
21219
21220 * config/rs6000/linux-unwind.h (get_regs): Remove type
21221 puns. Change the type of `pc' to an array of unsigned ints and
21222 update all users. Constify frame24.
21223
21224 2009-04-22 DJ Delorie <dj@redhat.com>
21225
21226 * config/m32c/m32c.c (m32c_special_page_vector_p): Move
21227 declarations before code.
21228 (current_function_special_page_vector): Likewise.
21229 (m32c_expand_insv): Silence a warning.
21230
21231 2009-04-21 Taras Glek <tglek@mozilla.com>
21232
21233 * alias.c: Update GTY annotations to new syntax.
21234 * basic-block.h: Likewise.
21235 * bitmap.h: Likewise.
21236 * c-common.h: Likewise.
21237 * c-decl.c: Likewise.
21238 * c-parser.c: Likewise.
21239 * c-pragma.c: Likewise.
21240 * c-tree.h: Likewise.
21241 * cfgloop.h: Likewise.
21242 * cgraph.h: Likewise.
21243 * config/alpha/alpha.c: Likewise.
21244 * config/arm/arm.h: Likewise.
21245 * config/avr/avr.h: Likewise.
21246 * config/bfin/bfin.c: Likewise.
21247 * config/cris/cris.c: Likewise.
21248 * config/darwin.c: Likewise.
21249 * config/frv/frv.c: Likewise.
21250 * config/i386/i386.c: Likewise.
21251 * config/i386/i386.h: Likewise.
21252 * config/i386/winnt.c: Likewise.
21253 * config/ia64/ia64.h: Likewise.
21254 * config/iq2000/iq2000.c: Likewise.
21255 * config/mips/mips.c: Likewise.
21256 * config/mmix/mmix.h: Likewise.
21257 * config/pa/pa.c: Likewise.
21258 * config/pa/pa.h: Likewise.
21259 * config/rs6000/rs6000.c: Likewise.
21260 * config/s390/s390.c: Likewise.
21261 * config/sparc/sparc.c: Likewise.
21262 * config/xtensa/xtensa.c: Likewise.
21263 * cselib.h: Likewise.
21264 * dbxout.c: Likewise.
21265 * dwarf2out.c: Likewise.
21266 * except.c: Likewise.
21267 * except.h: Likewise.
21268 * fixed-value.h: Likewise.
21269 * function.c: Likewise.
21270 * function.h: Likewise.
21271 * gimple.h: Likewise.
21272 * integrate.c: Likewise.
21273 * optabs.c: Likewise.
21274 * output.h: Likewise.
21275 * real.h: Likewise.
21276 * rtl.h: Likewise.
21277 * stringpool.c: Likewise.
21278 * tree-data-ref.c: Likewise.
21279 * tree-flow.h: Likewise.
21280 * tree-scalar-evolution.c: Likewise.
21281 * tree-ssa-address.c: Likewise.
21282 * tree-ssa-alias.h: Likewise.
21283 * tree-ssa-operands.h: Likewise.
21284 * tree.c: Likewise.
21285 * tree.h: Likewise.
21286 * varasm.c: Likewise.
21287 * varray.h: Likewise.
21288 * vec.h: Likewise.
21289 * coretypes.h: Do not define GTY macro if it is already defined.
21290 * doc/gty.texi: Update GTY documentation to new syntax.
21291 * gengtype-lex.l: Enforce attribute-like syntax for GTY
21292 annotations on structs.
21293 * gengtype-parse.c: Likewise.
21294
21295 2009-04-22 Mark Heffernan <meheff@google.com>
21296
21297 * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
21298
21299 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
21300
21301 * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
21302 where appropriate.
21303
21304 2009-04-22 Kazu Hirata <kazu@codesourcery.com>
21305
21306 * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
21307 the same as a PLUS without a shift. Increase the cost of a
21308 CONST_INT in MULT.
21309
21310 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
21311
21312 * Makefile.in: Update dependencies.
21313 * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
21314 * errors.h: Remove bogus comment about compatibility.
21315 (warning): Update declaration.
21316 * genautomata.c: Update all calls to warning.
21317 * gimple.c: Do not include errors.h. Include toplev.h.
21318 * tree-ssa-structalias.c: Do not include errors.h.
21319 * omega.c: Likewise.
21320 * tree-ssa-reassoc.c: Likewise.
21321 * config/spu/spu-c.c: Likewise.
21322 * config/spu/t-spu-elf: Update dependencies.
21323
21324 2009-04-22 Richard Guenther <rguenther@suse.de>
21325
21326 PR tree-optimization/39824
21327 * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
21328 make sure the types are compatible.
21329
21330 2009-04-22 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
21331
21332 PR c++/14875
21333 * c-common.c (c_parse_error): Take a token_flags parameter.
21334 Use token_type for the token type instead.
21335 Pass token_flags to cpp_type2name.
21336 * c-common.h (c_parse_error): Update declaration.
21337 * c-parser.c (c_parser_error): Pass 0 as token flags.
21338
21339 2009-04-22 Andrey Belevantsev <abel@ispras.ru>
21340
21341 PR rtl-optimization/39580
21342 * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
21343
21344 2009-04-22 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
21345
21346 * function.c (expand_function_end): Do not emit a jump to the "naked"
21347 return label for fall-through returns.
21348 * except.c (sjlj_emit_function_exit): Always place the call to the
21349 unregister function at the location installed by expand_function_end.
21350
21351 2009-04-22 Richard Guenther <rguenther@suse.de>
21352
21353 PR tree-optimization/39845
21354 * tree-switch-conversion.c (build_arrays): Add new referenced vars.
21355 (gen_inbound_check): Likewise.
21356
21357 2009-04-22 Nathan Sidwell <nathan@codesourcery.com>
21358
21359 * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
21360 padding for PPC.
21361 (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
21362 * config/vxlib.c (__gthread_once): Add race guard for PPC.
21363
21364 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
21365
21366 * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
21367 sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
21368 shift counts to avoid out-of-bounds array accesses.
21369
21370 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
21371
21372 * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
21373 (Pmode): Move above.
21374
21375 2009-04-22 Uros Bizjak <ubizjak@gmail.com>
21376
21377 * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
21378 NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
21379 GET_CODE macro. Use IN_RANGE macro where appropriate.
21380 * config/alpha/alpha.h: Ditto.
21381 * config/alpha/alpha.md: Ditto.
21382 * config/alpha/constraints.md: Ditto.
21383 * config/alpha/predicates.md: Ditto.
21384
21385 2009-04-22 Paolo Bonzini <bonzini@gnu.org>
21386
21387 * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
21388 * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21389 * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21390 * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21391 * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21392 * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21393 * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21394 * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21395 * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21396 * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21397 * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21398 * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21399 * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21400 * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21401 * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21402 * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21403 * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21404 * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21405 * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21406 * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21407 * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21408 * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21409 * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21410 * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21411 * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21412 * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21413 * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
21414
21415 2009-04-22 Laurynas Biveinis <laurynas.biveinis@gmail.com>
21416
21417 * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
21418 references from comments.
21419 * cfgbuild.c (count_basic_blocks): Delete.
21420 (find_basic_blocks_1): Delete.
21421 (find_basic_blocks): Delete.
21422 * except.c (finish_eh_generation): Make static. Move comment from
21423 except.h here. Remove find_basic_blocks references from comments.
21424 * except.h (finish_eh_generation): Delete.
21425 * basic-block.h (find_basic_blocks): Delete.
21426 * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
21427
21428 2009-04-22 Dave Korn <dave.korn.cygwin@gmail.com>
21429
21430 * sdbout.c (sdbout_symbol): Pass VOIDmode to eliminate_regs.
21431 (sdbout_parms): Likewise.
21432
21433 2009-04-21 Kaz Kojima <kkojima@gcc.gnu.org>
21434
21435 * config/sh/sh.c (prepare_cbranch_operands): Use
21436 LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
21437 (expand_cbranchdi4): Likewise.
21438 (from_compare): Add cast to enum type.
21439 (expand_cbranchsi4): Use add_reg_note.
21440 (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
21441 (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
21442 (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
21443 (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21444 * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
21445 instead of CODE_FOR_nothing.
21446 (cbranchdi4): Likewise. Fix the order of arguments for
21447 gen_rtx_fmt_ee.
21448 (push_fpscr): Use add_reg_note.
21449 (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
21450 reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
21451
21452 2009-04-21 Joseph Myers <joseph@codesourcery.com>
21453
21454 * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
21455 ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21456 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21457 ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
21458 ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
21459 FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
21460 config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
21461 config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
21462 config/alpha/x-vms, config/arc/t-arc,
21463 config/arm/README-interworking, config/arm/arm-c.c,
21464 config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
21465 config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
21466 config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
21467 config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
21468 config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
21469 config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
21470 config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
21471 config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
21472 config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
21473 config/cris/t-elfmulti, config/crx/t-crx,
21474 config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
21475 config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
21476 config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
21477 config/h8300/t-h8300, config/i386/athlon.md,
21478 config/i386/darwin-libgcc.10.4.ver,
21479 config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
21480 config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
21481 config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
21482 config/i386/t-linux64, config/i386/t-nwld,
21483 config/i386/t-rtems-i386, config/i386/t-sol2-10,
21484 config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
21485 config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
21486 config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
21487 config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
21488 config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
21489 config/iq2000/t-iq2000, config/libgcc-glibc.ver,
21490 config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
21491 config/m32r/t-m32r, config/m68hc11/t-m68hc11,
21492 config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
21493 config/m68k/t-uclinux, config/mcore/t-mcore,
21494 config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
21495 config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
21496 config/mips/crtn.asm, config/mips/irix-crti.asm,
21497 config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
21498 config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
21499 config/mips/mips-fixed.md, config/mips/sb1.md,
21500 config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
21501 config/mips/t-iris6, config/mips/t-isa3264,
21502 config/mips/t-libgcc-mips16, config/mips/t-linux64,
21503 config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
21504 config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
21505 config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
21506 config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
21507 config/mn10300/t-linux, config/mn10300/t-mn10300,
21508 config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
21509 config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
21510 config/picochip/libgccExtras/clzsi2.asm,
21511 config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
21512 config/rs6000/darwin-libgcc.10.4.ver,
21513 config/rs6000/darwin-libgcc.10.5.ver,
21514 config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
21515 config/rs6000/t-aix43, config/rs6000/t-aix52,
21516 config/rs6000/t-darwin, config/rs6000/t-fprules,
21517 config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
21518 config/rs6000/t-lynx, config/rs6000/t-netbsd,
21519 config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
21520 config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
21521 config/rs6000/t-rtems, config/rs6000/t-spe,
21522 config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
21523 config/score/t-score-elf, config/sh/divcost-analysis,
21524 config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
21525 config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
21526 config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
21527 config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
21528 config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
21529 config/stormy16/stormy-abi, config/stormy16/t-stormy16,
21530 config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
21531 config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
21532 config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
21533 config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
21534 config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
21535 gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
21536 java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
21537 limitx.h, version.c, xcoff.h: Add copyright and license notices.
21538 * config/h8300/genmova.sh: Include copyright and license notices
21539 in generated output.
21540 * config/h8300/mova.md: Regenerate.
21541 * doc/install.texi2html: Include word "Copyright" in copyright
21542 notice and use name "Free Software Foundation, Inc.".
21543 * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
21544 ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
21545 ChangeLog-2007, ChangeLog-2008: Correct dates.
21546
21547 2009-04-21 Eric Botcazou <ebotcazou@adacore.com>
21548
21549 * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
21550 NE_EXPR operations as well.
21551 * c-parser.c (c_parser_condition): Do not set location information on
21552 the condition.
21553 (c_parser_conditional_expression): Likewise.
21554 (c_parser_binary_expression): Set location information on operators.
21555 * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
21556 TRUTH_NOT_EXPR has been folded.
21557 * fold-const.c (fold_truth_not_expr): Copy location information from
21558 the incoming expression to the outgoing one.
21559 * gimplify.c (shortcut_cond_r): Add locus parameter. Pass it to
21560 recursive calls on the LHS of the operator but pass that of the
21561 operator to recursive calls on the RHS of the operator. Set it
21562 on the COND_EXPR.
21563 (shortcut_cond_expr): Set the locus of the operator on the second
21564 COND_EXPR and that of the expression on the first in degenerate cases.
21565 Pass the locus of the expression to calls to shortcut_cond_r.
21566 Set the locus of the 'then' block on the associated jump, if any.
21567 (gimplify_boolean_expr): Add locus parameter. Set it on the COND_EXPR.
21568 (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
21569 expression to call to gimplify_boolean_expr.
21570
21571 2009-04-21 Kai Tietz <kai.tietz@onevision.com>
21572
21573 * config.gcc: Add additional configuration for
21574 i686-w64-mingw* and x86_64-w64-mingw* triplet.
21575 * config/i386/mingw-w64.h: New mingw-w64 specific header.
21576 (CPP_SPEC): Redefine for allowing -municode option.
21577 (STARTFILE_SPEC): Likewise.
21578 * config/i386/t-mingw-w64: New.
21579 * config/i386/mingw-w64.opt: New.
21580 (municode): Add new target option.
21581 * doc/invoke.texi (municode): Add documentation for new option.
21582
21583 2009-04-21 Ian Lance Taylor <iant@google.com>
21584
21585 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21586 Correct test for number of arguments.
21587 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
21588
21589 2009-04-21 Andreas Schwab <schwab@linux-m68k.org>
21590
21591 * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
21592 argument of emit_library_call.
21593
21594 2009-04-21 Richard Guenther <rguenther@suse.de>
21595
21596 PR middle-end/39829
21597 * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
21598 inside VIEW_CONVERT_EXPRs.
21599
21600 2009-04-21 Martin Jambor <mjambor@suse.cz>
21601
21602 * tree-switch-conversion.c (build_constructors): Split a long line.
21603 (constructor_contains_same_values_p): New function.
21604 (build_one_array): Create assigns of constants if possible, do not
21605 call mark_sym_for_renaming, call update_stmt.
21606 (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
21607 make_rename_temp. Do not call mark_symbols_for_renaming, call
21608 update_stmt.
21609 (gen_def_assigns): Do not call mark_symbols_for_renaming or
21610 find_new_referenced_vars, call update_stmt.
21611 (gen_inbound_check): Use create_tmp_var and create ssa names manually
21612 instead of calling make_rename_temp. Do not call
21613 find_new_referenced_vars or mark_symbols_for_renaming, call
21614 update_stmt.
21615
21616 2009-04-21 Richard Guenther <rguenther@suse.de>
21617
21618 PR tree-optimization/39827
21619 * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
21620 (tree_ssa_phiprop): Pass the correct array size.
21621
21622 2009-04-21 Uros Bizjak <ubizjak@gmail.com>
21623
21624 * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
21625
21626 2009-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
21627
21628 PR 16202
21629 * c-typeck.c (lvalue_p): Move declaration ...
21630 * c-common.h (lvalue_p): ... to here.
21631 * c-common.c (candidate_equal_p): New.
21632 (add_tlist): Use it.
21633 (merge_tlist): Use it.
21634 (warn_for_collisions_1): Likewise.
21635 (warning_candidate_p): Accept more candidates.
21636 (verify_tree): A warning candidate can be an expression. Use
21637 candidate_equal_p.
21638
21639 2009-04-21 Ben Elliston <bje@au.ibm.com>
21640
21641 PR target/5267
21642 * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
21643 for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
21644 options. Remove -mcall-solaris documentation.
21645
21646 2009-04-21 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
21647
21648 PR c++/13358
21649 * doc/invoke.texi (-Wlong-long): Update description.
21650 * c-lex (interpret_integer): Only warn if there was no previous
21651 overflow and -Wlong-long is enabled.
21652 * c-decl.c (declspecs_add_type): Drop redundant flags.
21653 * c.opt (Wlong-long): Init to -1.
21654 * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
21655 and front-end warn_long_long. Wlong-long only depends on other
21656 flags if it is uninitialized.
21657 * c-parser.c (disable_extension_diagnostics): warn_long_long is
21658 the same for CPP and FE.
21659 (restore_extension_diagnostics): Likewise.
21660
21661 2009-04-20 Ian Lance Taylor <iant@google.com>
21662
21663 Fix enum conversions which are invalid in C++:
21664 * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
21665 * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
21666 * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
21667 * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
21668 * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
21669 (dbxout_parms): Likewise.
21670 * df-core.c (df_set_flags): Change changeable_flags parameter to int.
21671 (df_clear_flags): Likewise.
21672 * df-problems.c (df_rd_bb_local_compute_process_def): Change
21673 top_flag parameter to int.
21674 (df_chain_create_bb_process_use): Likewise.
21675 (df_chain_add_problem): Change chain_flags parameter to unsigned int.
21676 Remove cast.
21677 * df-scan.c (df_ref_create): Change ref_flags parameter to int.
21678 (df_ref_create_structure, df_def_record_1): Likewise.
21679 (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
21680 (df_notes_rescan): Change 0 to VOIDmode in function call.
21681 (df_get_call_refs, df_insn_refs_collect): Likewise.
21682 (df_bb_regs_collect): Likewise.
21683 (df_entry_block_defs_collect): Likewise.
21684 (df_exit_block_uses_collect): Likewise.
21685 * df.h: Update declarations.
21686 * double-int.c (double_int_divmod): Add cast to enum type.
21687 * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
21688 * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
21689 (based_loc_descr): Likewise.
21690 (loc_descriptor_from_tree_1): Change first_op and second_op to
21691 enum dwarf_location_atom. Add cast to enum type.
21692 * expmed.c (init_expmed): Change 0 to SET in function call.
21693 * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
21694 (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
21695 (do_store_flag): Likewise.
21696 * fixed-value.h (struct fixed_value): Change mode to enum
21697 machine_mode.
21698 * function.c (assign_parms): Change 0 to VOIDmode in function call.
21699 * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
21700 function call.
21701 (insert_insn_decl, insert_decl, insert_state): Likewise.
21702 (automata_list_finish): Likewise.
21703 * genrecog.c (process_define_predicate): Add cast to enum type.
21704 * gensupport.c (init_predicate_table): Add cast to enum type.
21705 * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
21706 function call.
21707 (gimple_build_call_1, gimple_build_label): Likewise.
21708 (gimple_build_goto, gimple_build_asm_1): Likewise.
21709 (gimple_build_switch_1, gimple_build_cdt): Likewise.
21710 * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
21711 (enum fallback): Rename from enum fallback_t.
21712 (fallback_t): Typedef as int.
21713 * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
21714 GSI_SAME_STMT in function call.
21715 * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
21716 enum type.
21717 (setup_reg_class_relations): Likewise.
21718 (setup_reg_class_nregs): Change cl to int. Add casts to enum type.
21719 (setup_prohibited_class_mode_regs): Add cast to enum type.
21720 (setup_prohibited_mode_move_regs): Likewise.
21721 * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
21722 (record_address_regs): Change i to enum reg_class.
21723 * lists.c (alloc_EXPR_LIST): Add cast to enum type.
21724 * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
21725 (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
21726 (GET_MODE_2XWIDER_MODE): Likewise.
21727 (GET_CLASS_NARROWEST_MODE): Likewise.
21728 * omp-low.c (expand_omp_for): Add cast to enum type.
21729 * optabs.c (debug_optab_libfuncs): Add casts to enum type.
21730 * opts.c (enable_warning_as_error): Change kind to diagostic_t.
21731 * postreload.c (reload_cse_simplify_operands): Change rclass local
21732 to enum reg_class.
21733 * predict.c (combine_predictions_for_insn): Change best_predictor
21734 and predictor to enum br_predictor.
21735 (combine_predictions_for_bb): Likewise.
21736 (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
21737 use SET_PREDICT_EXPR_OUTCOME.
21738 * real.c (real_arithmetic): Change icode to code in function call.
21739 * reginfo.c (init_move_cost): Add casts to enum type.
21740 (init_reg_sets_1, init_fake_stack_mems): Likewise.
21741 * regmove.c (regclass_compatible_p): Change class0 and class1 to
21742 enum reg_class.
21743 * reload.c (find_valid_class): Add casts to enum type.
21744 (push_reload): Change 0 to NO_REGS in function call.
21745 (find_reloads): Change this_alternative to array of enum
21746 reg_class. Remove some now-unnecessary casts.
21747 (make_memloc): Change 0 to VOIDmode in function call.
21748 * reload1.c (reload): Change 0 to VOIDmode in function call.
21749 (eliminate_regs_1, elimination_effects): Likewise.
21750 (eliminate_regs_in_insn): Likewise.
21751 (emit_input_reload_insns): Add cast to enum type.
21752 (delete_output_reload): Change 0 to VOIDmode in function call.
21753 * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
21754 to enum type in function call.
21755 * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
21756 (SET_PREDICT_EXPR_OUTCOME): Define.
21757 * tree-dump.c (get_dump_file_info): Change phase parameter to int.
21758 (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
21759 (dump_initialized_p, dump_flag_name, dump_end): Likewise.
21760 (dump_function): Likewise.
21761 * tree-dump.h: Update declarations.
21762 * tree-pass.h: Update declarations.
21763 * varasm.c (assemble_integer): Change mclass to enum mode_class.
21764 * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
21765 enum type.
21766 (arm_rtx_costs_1): Correct parenthesization.
21767 (arm_rtx_costs): Add casts to enum type.
21768 (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
21769 (vfp_emit_fstmd): Use add_rg_note.
21770 (emit_multi_reg_push, emit_sfm): Likewise.
21771 (thumb_set_frame_pointer): Likewise.
21772 (arm_expand_prologue): Likewise.
21773 (arm_regno_class): Change return type to enum reg_class.
21774 (thumb1_expand_prologue): Use add_reg_note.
21775 * config/arm/arm-protos.h (arm_regno_class): Update declaration.
21776 * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
21777 in function call.
21778 * config/arm/gentune.sh: Add cast to enum type.
21779 * config/arm/arm-tune.md: Rebuild.
21780 * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
21781 (ix86_split_fp_branch, predict_jump): Likewise.
21782 (ix86_expand_multi_arg_builtin): Change sub_code from enum
21783 insn_code to enum rtx_code.
21784 (ix86_builtin_vectorized_function): Add cast to enum type.
21785 * config/i386/i386.md (truncdfsf2): Change slot to enum
21786 ix86_stack_slot.
21787 (truncxf<mode>2, isinf<mode>2): Likewise.
21788 * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
21789 enum type.
21790 * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
21791 (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
21792 (insert_bundle_state): Change 1 to INSERT in function call.
21793 (ia64_add_bundle_selector_before): Likewise.
21794 * config/ia64/ia64.md (cpu attr): Add cast to enum type.
21795 (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
21796 (restore_stack_nonlocal): Likewise.
21797 * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
21798 function call.
21799 * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
21800 function call.
21801 (mips_rtx_costs): Likewise.
21802 (mips_override_options): Add casts to enum type.
21803 * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
21804 in function call.
21805 * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
21806 (store_reg, set_reg_plus_d): Likewise.
21807 (hppa_expand_prologue, hppa_profile_hook): Likewise.
21808 * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
21809 cast to enum type.
21810 (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
21811 function call.
21812 (emit_unlikely_jump): Use add_reg_note.
21813 (rs6000_emit_allocate_stack): Likewise.
21814 (rs6000_frame_related, rs6000_emit_prologue): Likewise.
21815 (output_toc): Change 1 to INSERT in function call.
21816 (output_profile_hook): Change 0 to LCT_NORMAL in function call.
21817 (rs6000_initialize_trampoline): Likewise.
21818 (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
21819 function call.
21820 * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
21821 (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
21822 (s390_expand_setmem, s390_expand_cmpmem): Likewise.
21823 (save_gprs): Use add_reg_note.
21824 (s390_emit_prologue): Likewise.
21825 (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
21826 * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
21827 (sparc_fold_builtin): Add cast to enum type.
21828 * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
21829 enum insn_code.
21830 (spu_expand_prologue): Use add_reg_note.
21831 (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
21832
21833 2009-04-20 Ian Lance Taylor <iant@google.com>
21834
21835 * c-parser.c (c_parser_attributes): Change VEC back to tree list.
21836 (c_parser_postfix_expression_after_primary): Get VEC for list of
21837 arguments. Get original types of arguments. Call
21838 build_function_call_vec.
21839 (cached_expr_list_1, cached_expr_list_2): New static variables.
21840 (c_parser_expr_list): Change return type to VEC *. Add
21841 p_orig_types parameter. Change all callers.
21842 (c_parser_release_expr): New static function.
21843 (c_parser_vec_to_tree_list): New static function.
21844 * c-typeck.c (build_function_call): Rewrite to build a VEC and
21845 call build_function_call_vec.
21846 (build_function_call_vec): New function, based on old
21847 build_function_call.
21848 (convert_arguments): Remove nargs and argarray parameters. Change
21849 values to a VEC. Add origtypes parameter.
21850 (build_modify_expr): Add rhs_origtype parameter. Change all callers.
21851 (convert_for_assignment): Add origtype parameter. Change all
21852 callers. If warn_cxx_compat, check for conversion to an enum
21853 type when calling a function.
21854 (store_init_value): Add origtype parameter. Change all callers.
21855 (digest_init): Likewise.
21856 (struct init_node): Add origtype field.
21857 (add_pending_init): Add origtype parameter. Change all callers.
21858 (output_init_element): Likewise.
21859 (output_pending_init_elements): Pass origtype from init_node to
21860 output_init_element.
21861 (process_init_element): Pass origtype from c_expr to
21862 output_init_element.
21863 (c_finish_return): Add origtype parameter. Change all callers.
21864 * c-common.c (sync_resolve_size): Change params to VEC *. Change
21865 caller.
21866 (sync_resolve_params): Likewise.
21867 (sync_resolve_return): Change params to first_param. Change caller.
21868 (resolve_overloaded_builtins): Change params to VEC *. Change
21869 callers. Save first parameter around call to build_function_call_vec.
21870 * c-decl.c (finish_decl): Add origtype parameter. Change all
21871 callers. Call build_function_call_vec rather than
21872 build_function_call for cleanup.
21873 * c-tree.h: Update declarations.
21874 * c-common.h: Update declarations.
21875 * stub-objc.c (objc_rewrite_function_call): Change parameter from
21876 params to first_param.
21877 * target.h (struct gcc_target): Change resolve_overloaded_builtin
21878 params parameter from tree to void *.
21879 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21880 Change arglist parameter to have type void *, and to be a pointer
21881 to a VEC.
21882 * config/rs6000/rs6000-protos.h
21883 (altivec_resolve_overloaded_builtin): Update declaration.
21884 * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
21885 fnargs parameter to have type void *, and to be a pointer to a
21886 VEC. Call build_function_call_vec instead of
21887 build_function_call.
21888 * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
21889
21890 2009-04-20 Joey Ye <joey.ye@intel.com>
21891 Xuepeng Guo <xuepeng.guo@intel.com>
21892 H.J. Lu <hongjiu.lu@intel.com>
21893
21894 * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
21895
21896 * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
21897 (IX86_LEA_PRIORITY): Likewise.
21898 (distance_non_agu_define): New function.
21899 (distance_agu_use): Likewise.
21900 (ix86_lea_for_add_ok): Likewise.
21901 (ix86_dep_by_shift_count): Likewise.
21902
21903 * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
21904 should split for LEA.
21905
21906 * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
21907 function.
21908 (ix86_dep_by_shift_count): Likewise.
21909
21910 2009-04-20 Richard Guenther <rguenther@suse.de>
21911
21912 * expr.c (handled_component_p): Move ...
21913 * tree.h (handled_component_p): ... here.
21914 * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
21915 ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
21916 and REALPART_EXPR to be in one group.
21917
21918 2009-04-20 Richard Guenther <rguenther@suse.de>
21919
21920 * basic-block.h (get_all_dominated_blocks): Declare.
21921 * dominance.c (get_all_dominated_blocks): New function.
21922 * tree-cfg.c (get_all_dominated_blocks): Remove.
21923 (remove_edge_and_dominated_blocks): Adjust.
21924 * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
21925 (tree_ssa_phiprop): ... here. Use get_all_dominated_blocks
21926 instead of recursing.
21927
21928 2009-04-20 Doug Kwan <dougkwan@google.com>
21929
21930 * cgraph.h (cgraph_node_ptr): New type for vector functions.
21931 (struct cgraph_node_set_def): New type.
21932 (cgraph_node_set) New type. Also declare vector functions.
21933 (struct cgraph_node_set_element_def): New type.
21934 (cgraph_node_set_element): Ditto.
21935 (cgraph_node_set_iterator): New iterator type.
21936 (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
21937 cgraph_node_set_remove, dump_cgraph_node_set,
21938 debug_cgraph_node_set): New prototypes.
21939 (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
21940 cgraph_node_set_size): New inlines.
21941 * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
21942 including cgraph.h.
21943 (struct ipa_opt_pass): Add struct cgraph_node_set_def
21944 argument to function 'write_summary'.
21945 * ipa.c: Include ggc.h.
21946 (hash_cgraph_node_set_element,
21947 eq_cgraph_node_set_element, cgraph_node_set_new,
21948 cgraph_node_set_add, cgraph_node_set_remove,
21949 cgraph_node_set_find, dump_cgraph_node_set,
21950 debug_cgraph_node_set): New functions.
21951 * Makefile.in (ipa.o): Add dependency on GGC_H.
21952
21953 2009-04-20 Ira Rosen <irar@il.ibm.com>
21954
21955 PR tree-optimization/39675
21956 * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
21957 check of the return code of vect_schedule_slp. Check that
21958 stmt_vec_info still exists for the statement, before checking its
21959 vectorization type.
21960
21961 2009-04-20 Michael Matz <matz@suse.de>
21962
21963 * Makefile.in (generated_files): Take out $(simple_generated_c).
21964
21965 2009-04-19 Dave Korn <dave.korn.cygwin@gmail.com>
21966
21967 * config/i386/cygwin-stdint.h (INTPTR_TYPE): Remove "long".
21968 (UINTPTR_TYPE): Likewise.
21969
21970 2009-04-19 Joseph Myers <joseph@codesourcery.com>
21971
21972 PR c/37481
21973 * c-typeck.c (digest_init): Check for initializing an array with a
21974 string literal.
21975
21976 2009-04-19 Joseph Myers <joseph@codesourcery.com>
21977
21978 PR c/19771
21979 * c-semantics.c (pop_stmt_list): Propagate
21980 STATEMENT_LIST_HAS_LABEL to parent statement list.
21981
21982 2009-04-19 Adam Nemet <anemet@caviumnetworks.com>
21983
21984 * config/mips/mips.h (mips_tune_attr): New macro.
21985 * config/mips/mips.md (cpu): Use it.
21986
21987 2009-04-19 Joseph Myers <joseph@codesourcery.com>
21988
21989 PR c/38243
21990 * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
21991 declaring a tag.
21992
21993 2009-04-19 Diego Novillo <dnovillo@google.com>
21994
21995 * toplev.c (compile_file): Move call to coverage_finish ...
21996 * cgraphunit.c (ipa_passes): ... here.
21997 Call cgraph_process_new_functions.
21998 * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
21999 * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
22000
22001 2009-04-19 Jan Hubicka <jh@suse.cz>
22002
22003 * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
22004 cfun.
22005 (dump_cgraph_node): Dump can throw external flag.
22006 * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
22007
22008 2009-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
22009
22010 PR c/32061
22011 PR c++/36954
22012 * doc/invoke.texi: Add -Wlogical-op to -Wextra.
22013 * common.opt (Wlogical-op): Move from here...
22014 * c.opt (Wlogical-op): ... to here.
22015 * c-typeck.c (parser_build_binary_op): Update call to
22016 warn_logical_operator.
22017 * c-opts.c (c_common_post_options): Enable warn_logical_op with
22018 extra_warnings.
22019 * c-common.c (warn_logical_op): Update.
22020 * c-common.h (warn_logical_op): Update declaration.
22021
22022 2009-04-19 Eric Botcazou <ebotcazou@adacore.com>
22023
22024 * tree.c (protected_set_expr_location): Fix formatting.
22025
22026 2009-04-18 Joseph Myers <joseph@codesourcery.com>
22027
22028 PR c/27676
22029 * c-typeck.c (readonly_warning): new.
22030 (build_unary_op, build_modify_expr): Use readonly_warning for
22031 storing into something readonly but not const-qualified.
22032
22033 2009-04-18 Joseph Myers <joseph@codesourcery.com>
22034
22035 PR c/22367
22036 * c-typeck.c (build_unary_op): Check for taking address of
22037 expression of type void.
22038
22039 2009-04-18 Joseph Myers <joseph@codesourcery.com>
22040
22041 PR c/35210
22042 * c-typeck.c (build_function_call): Check for calling a function
22043 with qualified void return types. Call require_complete_type when
22044 generating a trap.
22045
22046 2009-04-18 Jan Hubicka <jh@suse.cz>
22047
22048 * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
22049 Set nothrow flag.
22050 * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
22051 can_throw_external flag.
22052 * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
22053 * ipa-pure-const.c (ignore_edge): New function.
22054 (propagate): Compute order for NOTHROW computation; set NOTHROWs
22055 only over can_throw_external edges.
22056 (local_pure_const): Add nothrow flag.
22057 * ipa-utils.c (searchc): Add ignore_edge callback.
22058 (ipa_utils_reduced_inorder): Add ignore_edge callback.
22059 * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
22060 (set_nothrow_function_flags): Update cgraph.
22061 * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
22062
22063 2009-04-18 Richard Guenther <rguenther@suse.de>
22064
22065 PR middle-end/39804
22066 * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
22067 (fold_stmt): ... this and ...
22068 (fold_stmt_inplace): ... this.
22069 (fold_stmt_1): Fold references in calls and asms.
22070 * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
22071
22072 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
22073
22074 * tree-vrp.c (ssa_name_nonzero_p): Remove.
22075 * tree.h: Remove the prototype for ssa_name_nonzero_p.
22076
22077 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
22078
22079 * tree.c (function_args_count): Remove.
22080 * tree.h: Remove the prototype for function_args_count.
22081
22082 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
22083
22084 * tree-iterator.c (expr_only): Remove.
22085 * tree.h: Remove the prototype for expr_only.
22086
22087 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
22088
22089 * reginfo.c (cannot_change_mode_set_regs): Remove.
22090 * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
22091
22092 2009-04-08 Anatoly Sokolov <aesok@post.ru>
22093
22094 * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
22095 whether operands 0 and 1 overlaps.
22096
22097 2009-04-18 Manuel López-Ibáñez <manu@gcc.gnu.org>
22098
22099 PR middle-end/36902
22100 * tree-vrp.c (check_array_ref): Pass a location_t instead of a
22101 pointer. Use warning_at instead of warning.
22102 (search_for_addr_array): Likewise.
22103 (check_array_bounds): Likewise.
22104 (check_all_array_refs): Check that the incoming edge is not in the
22105 list of edges to be removed.
22106 (check_all_array_refs): Avoid the temporal pointer.
22107 (vrp_visit_cond_stmt): Fix typo.
22108 (simplify_switch_using_ranges): Handle the case where the switch
22109 index is an integer constant.
22110
22111 2009-04-18 Adam Nemet <anemet@caviumnetworks.com>
22112
22113 * config/mips/mips.c (mips_final_postscan_insn): Make it static.
22114
22115 2009-04-18 Kazu Hirata <kazu@codesourcery.com>
22116
22117 * doc/extend.texi, doc/invoke.texi: Fix typos.
22118
22119 2009-04-17 Cary Coutant <ccoutant@google.com>
22120
22121 * tree-flow-inline.h (get_lineno): Fix inverted test.
22122
22123 2009-04-17 Diego Novillo <dnovillo@google.com>
22124
22125 * tree-ssa-pre.c (create_expression_by_pieces): Remove
22126 assertion for AVAIL_OUT.
22127
22128 2009-04-17 Mike Frysinger <vapier@gentoo.org>
22129
22130 PR target/38627
22131 * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
22132 * config/sh/linux-atomic.asm: Likewise.
22133
22134 2009-04-17 Diego Novillo <dnovillo@google.com>
22135
22136 * except.c (debug_eh_tree): New.
22137 (struct eh_region, struct eh_status): Move ...
22138 * except.h: ... here.
22139 (add_type_for_runtime): Declare extern.
22140 (lookup_type_for_runtime): Likewise.
22141 (debug_eh_tree): Declare.
22142 * Makefile.in (GTFILES): List except.h before except.c
22143
22144 2009-04-17 Diego Novillo <dnovillo@google.com>
22145
22146 * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
22147 * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
22148 * tree-dfa.c (find_referenced_vars_in): Factor out of ...
22149 (find_vars_r): ... here.
22150 * tree-flow.h (find_referenced_vars_in): Declare.
22151 * tree-ssa-pre.c (create_expression_by_pieces): Assert
22152 that AVAIL_OUT exists for BLOCK.
22153 * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
22154 (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
22155 (tree-parloops.o): Likewise.
22156
22157 2009-04-17 Simon Baldwin <simonb@google.com>
22158
22159 * toplev.c (default_tree_printer): Add handling for %E format.
22160
22161 2009-04-17 Diego Novillo <dnovillo@google.com>
22162
22163 * tree-pretty-print.c (dump_generic_node): Add break after
22164 TREE_BINFO handler. Handle COMPLEX_TYPE, REAL_TYPE and
22165 FIXED_POINT_TYPE. Handle NULL TREE_TYPEs. Handle METHOD_TYPE and
22166 FUNCTION_TYPE together. Call print_struct_decl when printing
22167 structures and TDF_SLIM is not given.
22168 (print_struct_decl): Fix logic for detecting recursion.
22169
22170 2009-04-17 Rafael Avila de Espindola <espindola@google.com>
22171
22172 PR 31567
22173 * gcc.c (create_at_file): New.
22174 (compile_input_file_p): New.
22175 (do_spec_1): Use @args files for %i. Use create_at_file for %o.
22176 * main.c (main): Update call to toplev_main.
22177 * toplev.c (toplev_main): Change signature. Call expandargv.
22178 * toplev.h (toplev_main): Change signature.
22179
22180 2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
22181
22182 * dwarf2out.c (field_byte_offset): Use the type size as the field size
22183 if the latter is not constant.
22184
22185 2009-04-17 David Edelsohn <edelsohn@gnu.org>
22186
22187 * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
22188
22189 2009-04-17 Eric Botcazou <ebotcazou@adacore.com>
22190
22191 * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
22192 * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
22193
22194 2009-04-17 Richard Guenther <rguenther@suse.de>
22195
22196 * tree-ssa-structalias.c (get_constraint_for_component_ref):
22197 Handle component references view-converting an invariant address.
22198
22199 2009-04-17 Adam Nemet <anemet@caviumnetworks.com>
22200
22201 * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
22202 TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
22203 TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
22204 TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
22205 Use @deftypevr rather than @deftypevar.
22206
22207 2009-04-17 Richard Guenther <rguenther@suse.de>
22208
22209 * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
22210 (get_prop_source_stmt): Likewise.
22211 (can_propagate_from): Likewise.
22212
22213 2009-04-17 Andrew Stubbs <ams@codesourcery.com>
22214
22215 * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
22216 TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
22217 (--with-multilib-list): Add default value.
22218 * configure: Regenerate.
22219 * Makefile.in (TM_ENDIAN_CONFIG): Define.
22220 (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
22221 * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
22222 TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
22223 Don't add default cpu to multilib list unnecessarily, but do enable
22224 the relevant compiler option..
22225 Add support for --with-multilib-list=<blank> and
22226 --with-multilib-list=!<somelib> to supress unwanted multilibs.
22227 * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
22228 (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
22229 (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
22230 TM_MULTILIB_CONFIG.
22231 (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
22232 (MULTILIB_OSDIRNAMES): New variable.
22233 * config/sh/t-1e: Delete file.
22234 * config/sh/t-mlib-sh1: Delete file.
22235 * config/sh/t-mlib-sh2: Delete file.
22236 * config/sh/t-mlib-sh2a: Delete file.
22237 * config/sh/t-mlib-sh2a-nofpu: Delete file.
22238 * config/sh/t-mlib-sh2a-single: Delete file.
22239 * config/sh/t-mlib-sh2a-single-only: Delete file.
22240 * config/sh/t-mlib-sh2e: Delete file.
22241 * config/sh/t-mlib-sh3e: Delete file.
22242 * config/sh/t-mlib-sh4: Delete file.
22243 * config/sh/t-mlib-sh4-nofpu: Delete file.
22244 * config/sh/t-mlib-sh4-single: Delete file.
22245 * config/sh/t-mlib-sh4-single-only: Delete file.
22246 * config/sh/t-mlib-sh4a: Delete file.
22247 * config/sh/t-mlib-sh4a-nofpu: Delete file.
22248 * config/sh/t-mlib-sh4a-single: Delete file.
22249 * config/sh/t-mlib-sh4a-single-only: Delete file.
22250 * config/sh/t-mlib-sh4al: Delete file.
22251 * config/sh/t-mlib-sh5-32media: Delete file.
22252 * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
22253 * config/sh/t-mlib-sh5-64media: Delete file.
22254 * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
22255 * config/sh/t-mlib-sh5-compact: Delete file.
22256 * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
22257 * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
22258 * doc/install.texi (Options specification): Add
22259 --with-multilib-list and --with-endian.
22260
22261 2009-04-17 Rafael Avila de Espindola <espindola@google.com>
22262
22263 * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
22264 REVISION_c.
22265 (OBJS-common): Add plugin-version.o.
22266 (plugin-version.o): New.
22267 * gcc-plugin.h (plugin_gcc_version): New.
22268 (plugin_default_version_check): New.
22269 (plugin_init_func, plugin_init): Add version argument.
22270 * plugin-version.c: New.
22271 * plugin.c (str_plugin_gcc_version_name): New.
22272 (try_init_one_plugin): Read plugin_gcc_version from the plugin and
22273 pass it to the init function.
22274 (plugin_default_version_check): New.
22275
22276 2009-04-17 Richard Guenther <rguenther@suse.de>
22277
22278 * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
22279 for decl-vs-decl disambiguation.
22280
22281 2009-04-17 Andreas Krebbel <krebbel1@de.ibm.com>
22282
22283 * config/s390/s390.h (s390_tune_attr): New macro definition.
22284 * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
22285
22286 2009-04-17 Richard Guenther <rguenther@suse.de>
22287
22288 * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
22289 (fold_stmt_r): Likewise.
22290 (maybe_fold_reference): New function.
22291 (fold_gimple_assign): Handle cases fold_stmt_r did.
22292 (fold_stmt): Do not use fold_stmt_r.
22293 (fold_stmt_inplace): Likewise.
22294
22295 2009-04-17 Richard Guenther <rguenther@suse.de>
22296
22297 * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
22298 (record_equivalences_from_stmt): Remove useless checks and
22299 simplifications.
22300 * tree-ssa-pre.c (eliminate): Avoid converting a constant if
22301 the type is already suitable.
22302
22303 2009-04-17 Paolo Bonzini <bonzini@gnu.org>
22304
22305 * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
22306
22307 2009-04-17 Uros Bizjak <ubizjak@gmail.com>
22308
22309 * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
22310 (CMPtype): Define as __gcc_CMPtype.
22311
22312 2009-04-17 Aurelien Jarno <aurelien@aurel32.net>
22313
22314 * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
22315 for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
22316
22317 2009-04-17 Richard Guenther <rguenther@suse.de>
22318
22319 PR tree-optimization/39746
22320 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
22321 special-casing for builtins and static variable use/def.
22322 (call_may_clobber_ref_p_1): Likewise.
22323
22324 2009-04-16 Ian Lance Taylor <iant@google.com>
22325
22326 * df.h: Include "timevar.h".
22327 (struct df_problem): Change tv_id field to timevar_id_t.
22328 * tree-pass.h: Include "timevar.h".
22329 (struct opt_pass): Change tv_id field to timevar_id_t.
22330 * timevar.h (timevar_id_t): Define TV_NONE.
22331 * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
22332 TV_NONE rather than tv_id != 0.
22333 (execute_one_pass): Likewise.
22334 * Makefile.in (DF_H): Add $(TIMEVAR_H).
22335 (TREE_PASS_H): Define. Change all instances of tree-pass.h in
22336 dependencies to $(TREE_PASS_H).
22337 * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
22338 to TV_NONE.
22339 (pass_branch_target_load_optimize2): Likewise.
22340 * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
22341 (pass_outof_cfg_layout_mode): Likewise.
22342 * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
22343 (pass_rebuild_cgraph_edges): Likewise.
22344 (pass_remove_cgraph_callee_edges): Likewise.
22345 * df-core.c (pass_df_initialize_opt): Likewise.
22346 (pass_df_initialize_no_opt): Likewise.
22347 (pass_df_finish): Likewise.
22348 * emit-rtl.c (pass_unshare_all_rtl): Likewise.
22349 * except.c (pass_set_nothrow_function_flags): Likewise.
22350 (pass_convert_to_eh_region_ranges): Likewise.
22351 * final.c (pass_compute_alignments): Likewise.
22352 * function.c (pass_instantiate_virtual_regs): Likewise.
22353 (pass_init_function): Likewise.
22354 (pass_leaf_regs): Likewise.
22355 (pass_match_asm_constraints): Likewise.
22356 * gimple-low.c (pass_lower_cf): Likewise.
22357 (pass_mark_used_blocks): Likewise.
22358 * init-regs.c (pass_initialize_regs): Likewise.
22359 * integrate.c (pass_initial_value_sets): Likewise.
22360 * ira.c (pass_ira): Likewise.
22361 * jump.c (pass_cleanup_barriers): Likewise.
22362 * omp-low.c (pass_expand_omp): Likewise.
22363 (pass_lower_omp): Likewise.
22364 * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
22365 * recog.c (pass_split_all_insns): Likewise.
22366 (pass_split_after_reload): Likewise.
22367 (pass_split_before_regstack): Likewise.
22368 (pass_split_before_sched2): Likewise.
22369 (pass_split_for_shorten_branches): Likewise.
22370 * reginfo.c (pass_reginfo_init): Likewise.
22371 (pass_subregs_of_mode_init): Likewise.
22372 (pass_subregs_of_mode_finish): Likewise.
22373 * passes.c (pass_postreload): Likewise.
22374 * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
22375 * tree-cfg.c (pass_remove_useless_stmts): Likewise.
22376 (pass_warn_function_return): Likewise.
22377 (pass_warn_function_noreturn): Likewise.
22378 * tree-complex.c (pass_lower_complex): Likewise.
22379 (pass_lower_complex_O0): Likewise.
22380 * tree-if-conv.c (pass_if_conversion): Likewise.
22381 * tree-into-ssa.c (pass_build_ssa): Likewise.
22382 * tree-mudflap.c (pass_mudflap_1): Likewise.
22383 (pass_mudflap_2): Likewise.
22384 * tree-nomudflap.c (pass_mudflap_1): Likewise.
22385 (pass_mudflap_2): Likewise.
22386 * tree-nrv.c (pass_return_slot): Likewise.
22387 * tree-object-size.c (pass_object_sizes): Likewise.
22388 * tree-optimize.c (pass_all_optimizations): Likewise.
22389 (pass_early_local_passes): Likewise.
22390 (pass_all_early_optimizations): Likewise.
22391 (pass_cleanup_cfg): Likewise.
22392 (pass_cleanup_cfg_post_optimizing): Likewise.
22393 (pass_free_datastructures): Likewise.
22394 (pass_free_cfg_annotations): Likewise.
22395 (pass_fixup_cfg): Likewise.
22396 (pass_init_datastructures): Likewise.
22397 * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
22398 (pass_late_warn_uninitialized): Likewise.
22399 (pass_update_address_taken): Likewise.
22400 * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
22401 * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
22402 (pass_cse_sincos): Likewise.
22403 (pass_convert_to_rsqrt): Likewise.
22404 * tree-ssa-structalias.c (pass_build_alias): Likewise.
22405 * tree-stdarg.c (pass_stdarg): Likewise.
22406 * tree-tailcall.c (pass_tail_recursion): Likewise.
22407 (pass_tail_calls): Likewise.
22408 * tree-vect-generic.c (pass_lower_vector): Likewise.
22409 (pass_lower_vector_ssa): Likewise.
22410 * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
22411
22412 2009-04-16 Joseph Myers <joseph@codesourcery.com>
22413
22414 * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
22415 XLR entry.
22416 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
22417 Handle -march=xlr.
22418 * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
22419 logical and signext.
22420
22421 2009-04-16 Kaz Kojima <kkojima@gcc.gnu.org>
22422
22423 PR target/39767
22424 * config/sh/predicates.md (arith_operand): Check if the operand
22425 of TRUNCATE is a REG.
22426
22427 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22428
22429 * cfgrtl.c (delete_insn_chain_and_edges): Remove.
22430 * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
22431
22432 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22433
22434 * tree-iterator.c (tsi_split_statement_list_after,
22435 tsi_split_statement_list_before): Remove.
22436 * tree-iterator.h: Remove the prototypes for
22437 tsi_split_statement_list_after and tsi_split_statement_list_before.
22438
22439 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22440
22441 * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
22442 * tree-ssa-propagate.h: Remove the prototype for
22443 stmt_makes_single_load.
22444
22445 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22446
22447 * emit-rtl.c (set_mem_attrs_from_reg): Remove.
22448 * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
22449
22450 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22451
22452 * tree-iterator.c (EXPR_LAST_BODY): Remove.
22453
22454 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22455
22456 * except.c (eh_region_outer_p): Remove.
22457 * except.h: Remove the prototype for eh_region_outer_p.
22458
22459 2009-04-16 Kazu Hirata <kazu@codesourcery.com>
22460
22461 * function.c (current_function_assembler_name): Remove.
22462 * function.h: Remove the prototype for
22463 current_function_assembler_name.
22464
22465 2009-04-16 Ian Lance Taylor <iant@google.com>
22466
22467 * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
22468 (add_reg_note): Call alloc_reg_note.
22469 * rtl.h (alloc_reg_note): Declare.
22470 * combine.c (try_combine): Use alloc_reg_note.
22471 (recog_for_combine, move_deaths): Likewise.
22472 (distribute_notes): Use alloc_reg_note and add_reg_note.
22473 * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
22474 * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
22475 * reload1.c (eliminate_regs_1): Use alloc_reg_note.
22476
22477 2009-04-16 Vladimir Makarov <vmakarov@redhat.com>
22478
22479 PR rtl-optimization/39762
22480 * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
22481 ira_may_move_out_cost): Add comments about way of their usage.
22482 (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
22483
22484 * ira-conflicts.c (process_regs_for_copy): Use function
22485 ira_get_register_move_cost instead of global
22486 ira_register_move_cost.
22487
22488 * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
22489 color_pass, move_spill_restore, update_curr_costs): Ditto.
22490
22491 * ira-lives.c (process_single_reg_class_operands): Ditto.
22492
22493 * ira-emit.c (emit_move_list): Ditto.
22494
22495 * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
22496 (record_reg_classes): Ditto. Use functions
22497 ira_get_register_move_cost and ira_get_may_move_cost instead of
22498 global vars ira_register_move_cost, ira_may_move_out_cost and
22499 ira_may_move_in_cost.
22500 (record_address_regs): Don't call ira_init_register_move_cost.
22501 Use function ira_get_may_move_cost instead of global
22502 ira_may_move_in_cost.
22503 (process_bb_node_for_hard_reg_moves): Use function
22504 ira_get_register_move_cost instead of global ira_register_move_cost.
22505 (ira_costs): Don't call ira_init_register_move_cost.
22506
22507 2009-04-16 Richard Guenther <rguenther@suse.de>
22508
22509 * tree-cfg.c (verify_gimple_assign_binary):
22510 Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
22511 * ipa-struct-reorg.c (gen_size): Fold the built expressions.
22512 (create_general_new_stmt): Note that this function is broken.
22513
22514 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
22515
22516 * common.opt (fhelp): Add Var(help_flag).
22517 * gcc-plugin.h (plugin_info): Add help.
22518 * plugin.c (plugin_name_args): Add help.
22519 (register_plugin_info): Set plugin->help.
22520 (print_help_one_plugin): New.
22521 (print_plugins_help): New.
22522 * plugin.h (print_plugins_help): New.
22523 * toplev.c (toplev_main): Call print_plugins_help if needed.
22524
22525 2009-04-16 Richard Guenther <rguenther@suse.de>
22526
22527 * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
22528 (gimple_ior_addresses_taken_1): New function.
22529 (gimple_ior_addresses_taken): Likewise.
22530 * gimple.h (struct gimple_statement_with_ops_base): Remove
22531 addresses_taken member.
22532 (gimple_ior_addresses_taken): Declare.
22533 (gimple_addresses_taken, gimple_addresses_taken_ptr,
22534 gimple_set_addresses_taken): Remove.
22535 * ipa-reference.c (mark_address): New function.
22536 (scan_stmt_for_static_refs): Use it for marking addresses taken.
22537 * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
22538 (mark_address_taken): ... this. Just set TREE_ADDRESSABLE.
22539 (gimple_add_to_addresses_taken): Remove.
22540 (get_tmr_operands): Call mark_address_taken.
22541 (get_asm_expr_operands): Likewise.
22542 (get_expr_operands): Likewise.
22543 (build_ssa_operands): Do not clear the addresses_taken bitmap.
22544 (free_stmt_operands): Do not free it.
22545 * tree-ssa.c (delete_tree_ssa): Likewise.
22546 (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
22547
22548 2009-04-16 Richard Guenther <rguenther@suse.de>
22549
22550 * gimple.h (walk_stmt_load_store_addr_ops): Declare.
22551 (walk_stmt_load_store_ops): Likewise.
22552 * gimple.c (get_base_loadstore): New function.
22553 (walk_stmt_load_store_addr_ops): Likewise.
22554 (walk_stmt_load_store_ops): Likewise.
22555 * ipa-pure-const.c (check_op): Simplify.
22556 (check_load, check_store): New functions.
22557 (check_stmt): Use walk_stmt_load_store_ops.
22558 * ipa-reference.c (mark_load): Adjust signature.
22559 (mark_store): Likewise.
22560 (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
22561
22562 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
22563
22564 * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
22565 (plugin_info): New.
22566 * opts.c (common_handle_option): Don't call print_version.
22567 * plugin.c (plugin_name_args): Add version.
22568 (register_plugin_info): New.
22569 (register_callback): Handle PLUGIN_INFO.
22570 (try_init_one_plugin): New.
22571 (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
22572 if failed to init.
22573 (finalize_one_plugin): New.
22574 (finalize_plugins): New.
22575 (print_one_plugin): New.
22576 (print_plugins_versions): New.
22577 * plugin.h (print_plugins_versions): New.
22578 (finalize_plugins): New.
22579 * toplev.c (compile_file): Don't call initialize_plugins.
22580 (print_version): Call print_plugins_versions.
22581 (toplev_main): Call initialize_plugins. Print version if needed.
22582 Call finalize_plugins.
22583
22584 2009-04-16 Rafael Avila de Espindola <espindola@google.com>
22585
22586 * common.opt (fversion): New.
22587 * gcc.c (print_version): New.
22588 (process_command): Don't print the version. Just set print_version.
22589 (main): Print version. Call subprocesses if print_version and
22590 verbose_flag are set.
22591 * opts.c (common_handle_option): Handle OPT_fversion.
22592
22593 2009-04-16 Richard Guenther <rguenther@suse.de>
22594 Ira Rosen <irar@il.ibm.com>
22595
22596 PR tree-optimization/39698
22597 * tree-vect-loop.c (get_initial_def_for_reduction): Use the
22598 type of the reduction variable. Only generate the def if
22599 it is needed.
22600
22601 * omp-low.c (expand_omp_for_generic): When converting to a pointer
22602 make sure to first convert to an integer of the same precision.
22603 * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
22604 the type of the evolution correctly in computing the new
22605 induction variable base.
22606
22607 2009-04-16 Richard Guenther <rguenther@suse.de>
22608
22609 PR middle-end/39625
22610 * tree-cfg.c (make_blocks): Split statements with to-be
22611 abnormal SSA names on the lhs.
22612
22613 2009-04-16 Paolo Bonzini <bonzini@gnu.org>
22614
22615 * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
22616 Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
22617 * c-typeck.c (really_start_incremental_init): Likewise.
22618 * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
22619 (TARGET_INITIALIZER): Remove it.
22620 * target.h (struct target): Remove vector_opaque_p.
22621 * tree.c (build_opaque_vector_type): New.
22622 * tree.h (TYPE_VECTOR_OPAQUE): New.
22623 (build_opaque_vector_type): Declare.
22624 * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
22625 * config/rs6000/rs6000.c (build_opaque_vector_type,
22626 rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
22627 (rs6000_init_builtins): Use build_opaque_vector_type for
22628 opaque_V4SI_type_node.
22629
22630 2009-04-15 Catherine Moore <clm@codesourcery.com>
22631
22632 * debug.h (set_name): Declare.
22633 * dwarf2out.c (dwarf2out_set_name): Declare.
22634 (dwarf2_debug_hooks): Add set_name.
22635 (find_AT_string): New.
22636 (add_AT_string): Call find_AT_string.
22637 (dwarf2out_set_name): New.
22638 * cp/decl.c (grokdeclarator): Call set_name.
22639 * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
22640 * debug.c (do_nothing_debug_hooks): Likewise.
22641 * dbxout.c (dbx_debug_hooks): Likewise.
22642 * sdbout.c (sdb_debug_hooks): Likewise.
22643
22644 2009-04-15 Michael Eager <eager@eagercon.com>
22645
22646 * config/rs6000/rs6000.c (rs6000_function_value): Set function return
22647 reg for single-precision FPU.
22648 * config/rs6000/rs6000.md (movsi_internal1): Only for
22649 !TARGET_SINGLE_FPU.
22650 (movsi_internal1_single): New. Add pattern to move SI values to/from
22651 single-precision FP regs.
22652
22653 2009-04-15 Richard Guenther <rguenther@suse.de>
22654
22655 * omp-low.c (lower_rec_input_clauses): Build correct address
22656 expressions.
22657 (expand_omp_for_generic): Fix multiplication type.
22658 * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
22659 (generate_memset_zero): Fix types.
22660 * tree-profile.c (prepare_instrumented_value): Correctly
22661 widen a pointer.
22662
22663 2009-04-15 Ian Lance Taylor <iant@google.com>
22664
22665 * c.opt (Wenum-compare): Enable for C and Objc. Initialize to -1.
22666 * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
22667 for -Wall and for -Wc++-compat.
22668 (c_common_post_options): For C++, set warn_enum_compare if not
22669 already set.
22670 * c-tree.h (struct c_expr): Add field original_type.
22671 (build_external_ref): Update declaration.
22672 * c-parser.c (c_parser_braced_init): Set original_type.
22673 (c_parser_initelt): Likewise.
22674 (c_parser_expr_no_commas): Likewise.
22675 (c_parser_conditional_expression): Likewise.
22676 (c_parser_cast_expression): Likewise.
22677 (c_parser_unary_expression): Likewise. Pull setting of
22678 original_code to top of function.
22679 (c_parser_sizeof_expression): Set original_type.
22680 (c_parser_alignof_expression): Likewise.
22681 (c_parser_postfix_expression): Likewise. Pull setting of
22682 original_code to top of function.
22683 (c_parser_postfix_expression_after_paren_type): Set original_type.
22684 (c_parser_postfix_expression_after_primary): Likewise.
22685 (c_parser_expression): Likewise.
22686 * c-typeck.c (build_external_ref): Add type parameter. Change all
22687 callers.
22688 (c_expr_sizeof_expr): Set original_type field.
22689 (parser_build_unary_op): Likewise.
22690 (parser_build_binary_op): Likewise. Optionally warn about
22691 comparisons of enums of different types.
22692 (digest_init): Set original_type field.
22693 (really_start_incremental_init): Likewise.
22694 (push_init_level, pop_init_level): Likewise.
22695 * doc/invoke.texi (Warning Options): -Wenum-compare now
22696 supported in C.
22697
22698 2009-04-15 Richard Guenther <rguenther@suse.de>
22699
22700 * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
22701 out a necessary conversion.
22702 * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
22703 names we didn't value number.
22704 * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
22705
22706 2009-04-15 Richard Guenther <rguenther@suse.de>
22707
22708 PR tree-optimization/39764
22709 * tree-ssa-ccp.c (get_value): Canonicalize value with
22710 canonicalize_float_value.
22711
22712 2009-04-15 Jan Hubicka <jh@suse.cz>
22713
22714 * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
22715 Wrong version of patch.
22716
22717 2009-04-15 Jan Hubicka <jh@suse.cz>
22718
22719 * builtins.def (va_start, va_end, va_copy): Mark nothrow.
22720
22721 2009-04-15 Nathan Sidwell <nathan@codesourcery.com>
22722
22723 * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
22724 our distinct integral and vector types.
22725
22726 2009-04-15 Rafael Avila de Espindola <espindola@google.com>
22727
22728 * class.c (build_vtbl_ref_1): Remove call to assemble_external.
22729 * init.c (build_vtbl_address): Remove call to assemble_external.
22730
22731 2009-04-14 Daniel Jacobowitz <dan@codesourcery.com>
22732
22733 * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
22734 output for other floating point modes.
22735
22736 2009-04-14 Diego Novillo <dnovillo@google.com>
22737
22738 * diagnostic.c (diagnostic_report_diagnostic): Do not
22739 warn about loaded plugins for DK_ERROR and DK_WARNING.
22740 * c-decl.c (declspecs_add_type): Move call to
22741 invoke_plugin_callbacks ...
22742 * c-parser.c (c_parser_declspecs): ... here.
22743 * plugin.c (dump_active_plugins): Tidy output.
22744
22745 2009-04-14 Diego Novillo <dnovillo@google.com>
22746 Le-Chun Wu <lcwu@google.com>
22747
22748 * configure.ac: Add --enable-plugin support.
22749 Define ENABLE_PLUGIN and PLUGINLIBS when specified.
22750 * Makefile.in (PLUGIN_H): Define.
22751 Export ENABLE_PLUGIN and GMPINC to site.exp.
22752 Add PLUGINLIBS to link command.
22753 Add/modify dependencies for plugin.o and files including plugin.h.
22754 (plugin.o): New.
22755 * config.in: Regenerate.
22756
22757 * opts.c (common_handle_option): Handle OPT_fplugin_ and
22758 OPT_fplugin_arg_.
22759
22760 2009-04-14 Le-Chun Wu <lcwu@google.com>
22761
22762 * tree-pass.h (register_one_dump_file): Add a prototype for
22763 register_one_dump_file.
22764 * toplev.c (compile_file): Call initialize_plugins.
22765 (do_compile): Call invoke_plugin_callbacks.
22766 (toplev_main): Call invoke_plugin_callbacks.
22767 * common.opt: Add -fplugin= and -fplugin-arg-.
22768 * gcc-plugin.h: New public header file for plugins to include.
22769 * plugin.c: New source file.
22770 * plugin.h: New internal header file.
22771 * passes.c (register_one_dump_file): Make it external.
22772
22773 * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
22774
22775 2009-04-14 Diego Novillo <dnovillo@google.com>
22776
22777 * doc/plugins.texi: New.
22778 * doc/gccint.texi: Add reference to Plugins chapter.
22779 * doc/invoke.texi: Document -fplugin and -fplugin-arg
22780 * diagnostic.c (diagnostic_report_diagnostic): Warn about
22781 loaded plugins, if any.
22782 * timevar.def (TV_PLUGIN_INIT): Define.
22783 (TV_PLUGIN_RUN): Define.
22784 * plugin.c: Include timevar.h
22785 (plugins_active_p): New.
22786 (dump_active_plugins): New.
22787 (debug_active_plugins): New.
22788
22789 2009-04-14 Joseph Myers <joseph@codesourcery.com>
22790
22791 * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
22792 library paths.
22793 * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
22794
22795 2009-04-14 Kazu Hirata <kazu@codesourcery.com>
22796
22797 * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
22798 the same as a minus without a shift.
22799
22800 2009-04-14 Nick Clifton <nickc@redhat.com>
22801
22802 * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
22803 comparisons with small integers will always produce a short
22804 branch.
22805
22806 2009-04-14 Rafael Avila de Espindola <espindola@google.com>
22807
22808 Merge:
22809 2008-12-19 Diego Novillo <dnovillo@google.com>
22810
22811 * cgraph.c (dump_cgraph_node): Show memory address of NODE.
22812
22813 2009-04-14 Richard Guenther <rguenther@suse.de>
22814
22815 * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
22816 verification.
22817 (verify_gimple_assign_binary): Likewise. Handle shifts and
22818 rotates correctly.
22819 (verify_gimple_phi): Print the mismatched argument position.
22820 * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
22821 Fix types.
22822 (vect_update_init_of_dr): Likewise.
22823 * matrix-reorg.c (transform_access_sites): Do what the
22824 comment suggests.
22825 * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
22826
22827 2009-04-13 Michael Eager <eager@eagercon.com>
22828
22829 * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
22830 _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
22831 * config/rs6000/xilinx.h: New. Spec for powerpc-xilinx-eabi
22832 * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
22833 remove duplicate config
22834
22835 2009-04-13 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
22836
22837 * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
22838 file_name:line_number type locator of the call site.
22839
22840 2009-04-13 Vladimir Makarov <vmakarov@redhat.com>
22841
22842 * genautomata.c: Put blank after comma.
22843 (automaton_decls): New.
22844 (struct unit_usage): Add comments to member next.
22845 (store_alt_unit_usage): Keep the list ordered.
22846 (unit_present_on_list_p, equal_alternatives_p): New.
22847 (check_regexp_units_distribution): Check units distribution
22848 correctness correctly.
22849 (main): Don't write automata if error is found. Return correct
22850 exit code.
22851
22852 * config/m68k/cf.md (cfv4_ds): Remove.
22853 (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
22854 cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
22855
22856 * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
22857 power4-load-ext, power4-store, power4-store-update,
22858 power4-fpstore, power4-fpstore-update, power4-two, power4-three,
22859 power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
22860 power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
22861 power4-sqrt, power4-isync): Modify reservation to make correct
22862 unit distribution to automata.
22863
22864 * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
22865 power5-store-update, power5-two, power5-three, power5-lmul,
22866 power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
22867
22868 2009-04-13 Adam Nemet <anemet@caviumnetworks.com>
22869
22870 * except.c (pass_set_nothrow_function_flags): Set name and add
22871 TODO_dump_func.
22872 (set_nothrow_function_flags): Mention in the dump file when
22873 changing a function to nothrow.
22874
22875 2009-04-13 Ozkan Sezer <sezeroz@gmail.com>
22876
22877 PR/39066
22878 * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
22879 instead of unsigned long.
22880
22881 2009-04-13 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
22882
22883 * config/arm/arm.c (return_used_this_function): Remove.
22884 (arm_output_function_prologue): Remove use of
22885 return_used_this_function.
22886 (output_return_instruction): Replace use of
22887 return_used_this_function
22888 by cfun->machine->return_used_this_function.
22889 (arm_output_epilogue): Likewise.
22890 (arm_output_function_epilogue): Likewise.
22891 (thumb_unexpanded_epilogue): Likewise.
22892 * config/arm/arm.h (struct machine_function):
22893 New member return_used_this_function.
22894
22895 2009-04-12 Mark Mitchell <mark@codesourcery.com>
22896
22897 * doc/install.texi: Correct description of default directory for
22898 --with-gxx-include-dir.
22899
22900 2009-04-12 Eric Botcazou <ebotcazou@adacore.com>
22901
22902 * fold-const.c (build_range_check): Properly deal with enumeral and
22903 boolean base types.
22904
22905 2009-04-12 Steven Bosscher <steven@gcc.gnu.org>
22906
22907 * doc/invoke.texi (max_gcse_passes): Remove documentation.
22908 * params.def (PARAM_MAX_GCSE_PASSES): Remove.
22909 * params.h (MAX_GCSE_PASSES): Remove.
22910 * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
22911 in sequence. Remove ability to run multiple passes.
22912 (bypass_jumps): Report run as third CPROP pass.
22913
22914 2009-04-12 Adam Nemet <anemet@caviumnetworks.com>
22915
22916 PR middle-end/39651
22917 * except.c (can_throw_external): Look at each insn in a SEQUENCE
22918 when deciding whether the whole SEQUENCE can throw.
22919
22920 2009-04-12 Uros Bizjak <ubizjak@gmail.com>
22921
22922 PR target/39740
22923 * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
22924 offseted label references.
22925
22926 2009-04-11 Jan Hubicka <jh@suse.cz>
22927
22928 * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
22929
22930 2009-04-11 Richard Guenther <rguenther@suse.de>
22931
22932 PR middle-end/39732
22933 * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
22934 return variables as TREE_ADDRESSABLE.
22935
22936 2009-04-11 Richard Guenther <rguenther@suse.de>
22937
22938 PR tree-optimization/39713
22939 * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
22940 reference trees have SSA_NAME operands.
22941
22942 2009-04-11 Richard Guenther <rguenther@suse.de>
22943
22944 PR c/39712
22945 * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
22946 address expressions.
22947
22948 2009-04-11 Dave Korn <dave.korn.cygwin@gmail.com>
22949
22950 * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE): Update to
22951 match changes in Cygwin 1.7
22952 (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
22953 UINT_FAST16_TYPE, UINT_FAST32_TYPE): Likewise.
22954
22955 2009-04-10 Paolo Bonzini <bonzini@gnu.org>
22956
22957 PR tree-optimization/39701
22958 * doc/invoke.texi (Optimization Options): Document change in
22959 meaning and initialization of -fdelete-null-pointer-checks.
22960
22961 2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
22962
22963 PR middle-end/39701
22964 * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
22965
22966 * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
22967 here.
22968
22969 * doc/invoke.texi: Update -fdelete-null-pointer-checks.
22970
22971 2009-04-10 Chao-ying Fu <fu@mips.com>
22972
22973 * doc/tm.texi (Instruction Output): Document
22974 TARGET_ASM_FINAL_POSTSCAN_INSN.
22975 * target.h (final_postscan_insn): New field in asm_out.
22976 * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22977 (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
22978 * final.c (final_scan_insn): Call
22979 targetm.asm_out.final_postscan_insn after outputting
22980 an asm macro and a normal instruction.
22981
22982 * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
22983 * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
22984 * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
22985 (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
22986 (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
22987
22988 2009-04-10 Paolo Bonzini <bonzini@gnu.org>
22989
22990 PR middle-end/39701
22991 * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
22992 variables as non-NULL even with -fdelete-null-pointer-checks.
22993
22994 2009-04-10 H.J. Lu <hongjiu.lu@intel.com>
22995
22996 * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
22997
22998 2009-04-09 H.J. Lu <hongjiu.lu@intel.com>
22999
23000 PR target/39678
23001 * config/i386/i386.c (classify_argument): Handle SCmode with
23002 (bit_offset % 64) != 0.
23003
23004 2009-04-09 Sandra Loosemore <sandra@codesourcery.com>
23005
23006 * doc/invoke.texi (Optimize Options): Add cross-reference to
23007 -Q --help=optimizers examples.
23008
23009 2009-04-10 Ben Elliston <bje@au.ibm.com>
23010
23011 PR target/36800
23012 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
23013 regalign for the reg == fpr and TDmode case.
23014
23015 2009-04-09 David Ayers <ayers@fsfe.org>
23016
23017 PR objc/29200
23018 * objc/objc-act.c (warn_with_method): Remove helper function.
23019 (check_duplicates): Call warning and inform directly.
23020 (really_start_method): Likewise.
23021
23022 2009-04-09 Paolo Bonzini <bonzini@gnu.org>
23023
23024 * expmed.c (expand_divmod): Always use a comparison for a division
23025 by a large unsigned integer.
23026
23027 * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
23028 for things others than variables or functions as nonzero.
23029
23030 2009-04-09 Nick Clifton <nickc@redhat.com>
23031
23032 * unwind-compat.c: Change copyright header to refer to version
23033 3 of the GNU General Public License with version 3.1 of the
23034 GCC Runtime Library Exception and to point readers at the
23035 COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
23036 * config/alpha/crtfastmath.c: Likewise.
23037 * config/alpha/linux-unwind.h: Likewise.
23038 * config/alpha/qrnnd.asm: Likewise.
23039 * config/alpha/vms-crt0-64.c: Likewise.
23040 * config/alpha/vms-crt0.c: Likewise.
23041 * config/alpha/vms-dwarf2.asm: Likewise.
23042 * config/alpha/vms-dwarf2eh.asm: Likewise.
23043 * config/alpha/vms-psxcrt0-64.c: Likewise.
23044 * config/alpha/vms-psxcrt0.c: Likewise.
23045 * config/alpha/vms_tramp.asm: Likewise.
23046 * config/arc/initfini.c: Likewise.
23047 * config/arc/lib1funcs.asm: Likewise.
23048 * config/arm/bpabi-v6m.S: Likewise.
23049 * config/arm/bpabi.S: Likewise.
23050 * config/arm/bpabi.c: Likewise.
23051 * config/arm/crti.asm: Likewise.
23052 * config/arm/crtn.asm: Likewise.
23053 * config/arm/ieee754-df.S: Likewise.
23054 * config/arm/ieee754-sf.S: Likewise.
23055 * config/arm/lib1funcs.asm: Likewise.
23056 * config/arm/libunwind.S: Likewise.
23057 * config/arm/linux-atomic.c: Likewise.
23058 * config/arm/mmintrin.h: Likewise.
23059 * config/arm/pr-support.c: Likewise.
23060 * config/arm/unaligned-funcs.c: Likewise.
23061 * config/arm/unwind-arm.c: Likewise.
23062 * config/arm/unwind-arm.h: Likewise.
23063 * config/avr/libgcc.S: Likewise.
23064 * config/bfin/crti.s: Likewise.
23065 * config/bfin/crtlibid.s: Likewise.
23066 * config/bfin/crtn.s: Likewise.
23067 * config/bfin/lib1funcs.asm: Likewise.
23068 * config/bfin/linux-unwind.h: Likewise.
23069 * config/cris/arit.c: Likewise.
23070 * config/cris/cris_abi_symbol.c: Likewise.
23071 * config/darwin-64.c: Likewise.
23072 * config/darwin-crt2.c: Likewise.
23073 * config/darwin-crt3.c: Likewise.
23074 * config/darwin.h: Likewise.
23075 * config/dbxelf.h: Likewise.
23076 * config/dfp-bit.c: Likewise.
23077 * config/dfp-bit.h: Likewise.
23078 * config/elfos.h: Likewise.
23079 * config/fixed-bit.c: Likewise.
23080 * config/fixed-bit.h: Likewise.
23081 * config/fp-bit.c: Likewise.
23082 * config/fp-bit.h: Likewise.
23083 * config/fr30/crti.asm: Likewise.
23084 * config/fr30/crtn.asm: Likewise.
23085 * config/fr30/lib1funcs.asm: Likewise.
23086 * config/freebsd-spec.h: Likewise.
23087 * config/frv/cmovd.c: Likewise.
23088 * config/frv/cmovh.c: Likewise.
23089 * config/frv/cmovw.c: Likewise.
23090 * config/frv/frvbegin.c: Likewise.
23091 * config/frv/frvend.c: Likewise.
23092 * config/frv/lib1funcs.asm: Likewise.
23093 * config/glibc-stdint.h: Likewise.
23094 * config/h8300/clzhi2.c: Likewise.
23095 * config/h8300/crti.asm: Likewise.
23096 * config/h8300/crtn.asm: Likewise.
23097 * config/h8300/ctzhi2.c: Likewise.
23098 * config/h8300/fixunssfsi.c: Likewise.
23099 * config/h8300/lib1funcs.asm: Likewise.
23100 * config/h8300/parityhi2.c: Likewise.
23101 * config/h8300/popcounthi2.c: Likewise.
23102 * config/i386/ammintrin.h: Likewise.
23103 * config/i386/att.h: Likewise.
23104 * config/i386/avxintrin.h: Likewise.
23105 * config/i386/biarch64.h: Likewise.
23106 * config/i386/bmmintrin.h: Likewise.
23107 * config/i386/cpuid.h: Likewise.
23108 * config/i386/cross-stdarg.h: Likewise.
23109 * config/i386/crtfastmath.c: Likewise.
23110 * config/i386/crtprec.c: Likewise.
23111 * config/i386/cygming-crtbegin.c: Likewise.
23112 * config/i386/cygming-crtend.c: Likewise.
23113 * config/i386/cygwin.asm: Likewise.
23114 * config/i386/emmintrin.h: Likewise.
23115 * config/i386/gmm_malloc.h: Likewise.
23116 * config/i386/gthr-win32.c: Likewise.
23117 * config/i386/i386.h: Likewise.
23118 * config/i386/immintrin.h: Likewise.
23119 * config/i386/linux-unwind.h: Likewise.
23120 * config/i386/linux64.h: Likewise.
23121 * config/i386/mm3dnow.h: Likewise.
23122 * config/i386/mmintrin-common.h: Likewise.
23123 * config/i386/mmintrin.h: Likewise.
23124 * config/i386/nmmintrin.h: Likewise.
23125 * config/i386/pmm_malloc.h: Likewise.
23126 * config/i386/pmmintrin.h: Likewise.
23127 * config/i386/smmintrin.h: Likewise.
23128 * config/i386/sol2-c1.asm: Likewise.
23129 * config/i386/sol2-ci.asm: Likewise.
23130 * config/i386/sol2-cn.asm: Likewise.
23131 * config/i386/sol2-gc1.asm: Likewise.
23132 * config/i386/tmmintrin.h: Likewise.
23133 * config/i386/unix.h: Likewise.
23134 * config/i386/w32-unwind.h: Likewise.
23135 * config/i386/wmmintrin.h: Likewise.
23136 * config/i386/x86-64.h: Likewise.
23137 * config/i386/x86intrin.h: Likewise.
23138 * config/i386/xmmintrin.h: Likewise.
23139 * config/ia64/crtbegin.asm: Likewise.
23140 * config/ia64/crtend.asm: Likewise.
23141 * config/ia64/crtfastmath.c: Likewise.
23142 * config/ia64/crti.asm: Likewise.
23143 * config/ia64/crtn.asm: Likewise.
23144 * config/ia64/fde-glibc.c: Likewise.
23145 * config/ia64/lib1funcs.asm: Likewise.
23146 * config/ia64/linux-unwind.h: Likewise.
23147 * config/ia64/quadlib.c: Likewise.
23148 * config/ia64/unwind-ia64.c: Likewise.
23149 * config/linux.h: Likewise.
23150 * config/m32c/m32c-lib1.S: Likewise.
23151 * config/m32c/m32c-lib2-trapv.c: Likewise.
23152 * config/m32c/m32c-lib2.c: Likewise.
23153 * config/m32r/initfini.c: Likewise.
23154 * config/m68hc11/larith.asm: Likewise.
23155 * config/m68hc11/m68hc11-crt0.S: Likewise.
23156 * config/m68k/cf.md: Likewise.
23157 * config/m68k/crti.s: Likewise.
23158 * config/m68k/crtn.s: Likewise.
23159 * config/m68k/lb1sf68.asm: Likewise.
23160 * config/m68k/linux-unwind.h: Likewise.
23161 * config/mcore/crti.asm: Likewise.
23162 * config/mcore/crtn.asm: Likewise.
23163 * config/mcore/lib1.asm: Likewise.
23164 * config/mips/linux-unwind.h: Likewise.
23165 * config/mips/loongson.h: Likewise.
23166 * config/mips/mips16.S: Likewise.
23167 * config/mmix/crti.asm: Likewise.
23168 * config/mmix/crtn.asm: Likewise.
23169 * config/pa/fptr.c: Likewise.
23170 * config/pa/hpux-unwind.h: Likewise.
23171 * config/pa/lib2funcs.asm: Likewise.
23172 * config/pa/linux-atomic.c: Likewise.
23173 * config/pa/linux-unwind.h: Likewise.
23174 * config/pa/milli64.S: Likewise.
23175 * config/pa/quadlib.c: Likewise.
23176 * config/pa/stublib.c: Likewise.
23177 * config/picochip/libgccExtras/adddi3.asm: Likewise.
23178 * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
23179 * config/picochip/libgccExtras/ashlsi3.c: Likewise.
23180 * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
23181 * config/picochip/libgccExtras/ashrsi3.c: Likewise.
23182 * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
23183 * config/picochip/libgccExtras/divmod15.asm: Likewise.
23184 * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
23185 * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
23186 * config/picochip/libgccExtras/longjmp.asm: Likewise.
23187 * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
23188 * config/picochip/libgccExtras/lshrsi3.c: Likewise.
23189 * config/picochip/libgccExtras/parityhi2.asm: Likewise.
23190 * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
23191 * config/picochip/libgccExtras/setjmp.asm: Likewise.
23192 * config/picochip/libgccExtras/subdi3.asm: Likewise.
23193 * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
23194 * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
23195 * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
23196 * config/rs6000/750cl.h: Likewise.
23197 * config/rs6000/altivec.h: Likewise.
23198 * config/rs6000/biarch64.h: Likewise.
23199 * config/rs6000/crtresfpr.asm: Likewise.
23200 * config/rs6000/crtresgpr.asm: Likewise.
23201 * config/rs6000/crtresxfpr.asm: Likewise.
23202 * config/rs6000/crtresxgpr.asm: Likewise.
23203 * config/rs6000/crtsavfpr.asm: Likewise.
23204 * config/rs6000/crtsavgpr.asm: Likewise.
23205 * config/rs6000/darwin-asm.h: Likewise.
23206 * config/rs6000/darwin-fallback.c: Likewise.
23207 * config/rs6000/darwin-fpsave.asm: Likewise.
23208 * config/rs6000/darwin-ldouble.c: Likewise.
23209 * config/rs6000/darwin-tramp.asm: Likewise.
23210 * config/rs6000/darwin-unwind.h: Likewise.
23211 * config/rs6000/darwin-vecsave.asm: Likewise.
23212 * config/rs6000/darwin-world.asm: Likewise.
23213 * config/rs6000/e500crtres32gpr.asm: Likewise.
23214 * config/rs6000/e500crtres64gpr.asm: Likewise.
23215 * config/rs6000/e500crtres64gprctr.asm: Likewise.
23216 * config/rs6000/e500crtrest32gpr.asm: Likewise.
23217 * config/rs6000/e500crtrest64gpr.asm: Likewise.
23218 * config/rs6000/e500crtresx32gpr.asm: Likewise.
23219 * config/rs6000/e500crtresx64gpr.asm: Likewise.
23220 * config/rs6000/e500crtsav32gpr.asm: Likewise.
23221 * config/rs6000/e500crtsav64gpr.asm: Likewise.
23222 * config/rs6000/e500crtsav64gprctr.asm: Likewise.
23223 * config/rs6000/e500crtsavg32gpr.asm: Likewise.
23224 * config/rs6000/e500crtsavg64gpr.asm: Likewise.
23225 * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
23226 * config/rs6000/eabi-ci.asm: Likewise.
23227 * config/rs6000/eabi-cn.asm: Likewise.
23228 * config/rs6000/eabi.asm: Likewise.
23229 * config/rs6000/linux-unwind.h: Likewise.
23230 * config/rs6000/linux64.h: Likewise.
23231 * config/rs6000/paired.h: Likewise.
23232 * config/rs6000/paired.md: Likewise.
23233 * config/rs6000/ppc64-fp.c: Likewise.
23234 * config/rs6000/ppu_intrinsics.h: Likewise.
23235 * config/rs6000/rs6000.h: Likewise.
23236 * config/rs6000/si2vmx.h: Likewise.
23237 * config/rs6000/sol-ci.asm: Likewise.
23238 * config/rs6000/sol-cn.asm: Likewise.
23239 * config/rs6000/spe.h: Likewise.
23240 * config/rs6000/spu2vmx.h: Likewise.
23241 * config/rs6000/sysv4.h: Likewise.
23242 * config/rs6000/tramp.asm: Likewise.
23243 * config/rs6000/vec_types.h: Likewise.
23244 * config/s390/linux-unwind.h: Likewise.
23245 * config/s390/tpf-unwind.h: Likewise.
23246 * config/score/crti.asm: Likewise.
23247 * config/score/crtn.asm: Likewise.
23248 * config/sh/crt1.asm: Likewise.
23249 * config/sh/crti.asm: Likewise.
23250 * config/sh/crtn.asm: Likewise.
23251 * config/sh/divtab-sh4-300.c: Likewise.
23252 * config/sh/divtab-sh4.c: Likewise.
23253 * config/sh/divtab.c: Likewise.
23254 * config/sh/lib1funcs-4-300.asm: Likewise.
23255 * config/sh/lib1funcs-Os-4-200.asm: Likewise.
23256 * config/sh/lib1funcs.asm: Likewise.
23257 * config/sh/lib1funcs.h: Likewise.
23258 * config/sh/linux-atomic.asm: Likewise.
23259 * config/sh/linux-unwind.h: Likewise.
23260 * config/sh/shmedia.h: Likewise.
23261 * config/sh/sshmedia.h: Likewise.
23262 * config/sh/ushmedia.h: Likewise.
23263 * config/sparc/crtfastmath.c: Likewise.
23264 * config/sparc/linux-unwind.h: Likewise.
23265 * config/sparc/sol2-c1.asm: Likewise.
23266 * config/sparc/sol2-ci.asm: Likewise.
23267 * config/sparc/sol2-cn.asm: Likewise.
23268 * config/spu/divmodti4.c: Likewise.
23269 * config/spu/divv2df3.c: Likewise.
23270 * config/spu/float_disf.c: Likewise.
23271 * config/spu/float_unsdidf.c: Likewise.
23272 * config/spu/float_unsdisf.c: Likewise.
23273 * config/spu/float_unssidf.c: Likewise.
23274 * config/spu/mfc_multi_tag_release.c: Likewise.
23275 * config/spu/mfc_multi_tag_reserve.c: Likewise.
23276 * config/spu/mfc_tag_release.c: Likewise.
23277 * config/spu/mfc_tag_reserve.c: Likewise.
23278 * config/spu/mfc_tag_table.c: Likewise.
23279 * config/spu/multi3.c: Likewise.
23280 * config/spu/spu_internals.h: Likewise.
23281 * config/spu/spu_intrinsics.h: Likewise.
23282 * config/spu/spu_mfcio.h: Likewise.
23283 * config/spu/vec_types.h: Likewise.
23284 * config/spu/vmx2spu.h: Likewise.
23285 * config/stormy16/stormy16-lib2.c: Likewise.
23286 * config/svr4.h: Likewise.
23287 * config/sync.c: Likewise.
23288 * config/v850/lib1funcs.asm: Likewise.
23289 * config/vxlib-tls.c: Likewise.
23290 * config/vxlib.c: Likewise.
23291 * config/vxworks-dummy.h: Likewise.
23292 * config/xtensa/crti.asm: Likewise.
23293 * config/xtensa/crtn.asm: Likewise.
23294 * config/xtensa/ieee754-df.S: Likewise.
23295 * config/xtensa/ieee754-sf.S: Likewise.
23296 * config/xtensa/lib1funcs.asm: Likewise.
23297 * config/xtensa/lib2funcs.S: Likewise.
23298 * config/xtensa/linux-unwind.h: Likewise.
23299 * config/xtensa/unwind-dw2-xtensa.c: Likewise.
23300 * config/xtensa/unwind-dw2-xtensa.h: Likewise.
23301 * coretypes.h: Likewise.
23302 * crtstuff.c: Likewise.
23303 * defaults.h: Likewise.
23304 * dwarf2.h: Likewise.
23305 * emutls.c: Likewise.
23306 * gbl-ctors.h: Likewise.
23307 * gcov-io.h: Likewise.
23308 * ginclude/float.h: Likewise.
23309 * ginclude/iso646.h: Likewise.
23310 * ginclude/stdarg.h: Likewise.
23311 * ginclude/stdbool.h: Likewise.
23312 * ginclude/stddef.h: Likewise.
23313 * ginclude/stdfix.h: Likewise.
23314 * ginclude/stdint-gcc.h: Likewise.
23315 * ginclude/tgmath.h: Likewise.
23316 * gthr-aix.h: Likewise.
23317 * gthr-dce.h: Likewise.
23318 * gthr-gnat.c: Likewise.
23319 * gthr-gnat.h: Likewise.
23320 * gthr-lynx.h: Likewise.
23321 * gthr-mipssde.h: Likewise.
23322 * gthr-nks.h: Likewise.
23323 * gthr-posix.c: Likewise.
23324 * gthr-posix.h: Likewise.
23325 * gthr-posix95.h: Likewise.
23326 * gthr-rtems.h: Likewise.
23327 * gthr-single.h: Likewise.
23328 * gthr-solaris.h: Likewise.
23329 * gthr-tpf.h: Likewise.
23330 * gthr-vxworks.h: Likewise.
23331 * gthr-win32.h: Likewise.
23332 * gthr.h: Likewise.
23333 * libgcc2.c: Likewise.
23334 * libgcc2.h: Likewise.
23335 * libgcov.c: Likewise.
23336 * tsystem.h: Likewise.
23337 * typeclass.h: Likewise.
23338 * unwind-c.c: Likewise.
23339 * unwind-compat.h: Likewise.
23340 * unwind-dw2-fde-compat.c: Likewise.
23341 * unwind-dw2-fde-darwin.c: Likewise.
23342 * unwind-dw2-fde-glibc.c: Likewise.
23343 * unwind-dw2-fde.c: Likewise.
23344 * unwind-dw2-fde.h: Likewise.
23345 * unwind-dw2.c: Likewise.
23346 * unwind-dw2.h: Likewise.
23347 * unwind-generic.h: Likewise.
23348 * unwind-pe.h: Likewise.
23349 * unwind-sjlj.c: Likewise.
23350 * unwind.inc: Likewise.
23351 * config/arm/neon-gen.ml: Change generated copyright header to
23352 refer to version 3 of the GNU General Public License with
23353 version 3.1 of the GCC Runtime Library Exception and to point
23354 readers at the COPYING3 and COPYING3.RUNTIME files and the
23355 FSF's license web page.
23356 * config/arm/arm_neon.h: Regenerate.
23357
23358 2009-04-09 Jakub Jelinek <jakub@redhat.com>
23359
23360 * config/cris/cris.md: Change copyright header to refer to version
23361 3 of the GNU General Public License.
23362 * doc/install.texi2html: Change copyright header to refer to version
23363 3 of the GNU General Public License and to point readers at the
23364 COPYING3 file and the FSF's license web page.
23365 * config/vax/linux.h: Likewise.
23366
23367 2009-04-09 Paolo Bonzini <bonzini@gnu.org>
23368
23369 * config/i386/i386.md (cmpcc): New.
23370 * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
23371 (sync_compare_and_swap_cc*): Delete.
23372
23373 * config/s390/s390.c (s390_compare_emitted): Remove.
23374 (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
23375 s390_compare_emitted used to be handled. Assert that modes match.
23376 (s390_emit_compare_and_swap): Use s390_emit_compare, do not
23377 refer to sync_compare_and_swap_ccsi.
23378 * config/s390/s390.h (s390_compare_emitted): Remove.
23379 * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
23380 instead of s390_compare_emitted.
23381 (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
23382 instead of s390_compare_emitted.
23383 * config/s390/s390.md (cmpcc): New.
23384 (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
23385 CC_REGNUM, do not pretend it's set.
23386 (sync_compare_and_swap_cc*): Delete.
23387 * config/s390/predicates.md (cc_reg_operand): New.
23388
23389 * expr.c (sync_compare_and_swap_cc): Delete.
23390 * optabs.h (sync_compare_and_swap_cc): Delete.
23391 * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
23392 is being used with can_compare_p.
23393 (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
23394 (find_cc_set): New.
23395 (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
23396 look for a MODE_CC set instead. Use emit_store_flag.
23397 (expand_compare_and_swap_loop): Likewise, with some additional
23398 complication to avoid a force_reg when useless. Use
23399 emit_cmp_and_jump_insns.
23400 * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
23401 * doc/md.texi (sync_compare_and_swap_cc): Merge with
23402 sync_compare_and_swap documentation.
23403
23404 2009-04-09 Jan Hubicka <jh@suse.cz>
23405
23406 * except.c (find_prev_try): Break out from ....
23407 (duplicate_eh_regions): ... here; properly update prev_try pointers
23408 when duplication part of tree.
23409 (dump_eh_tree): Improve dumping.
23410 (verify_eh_region): New.
23411 (verify_eh_tree): Use it.
23412
23413 2009-04-06 Richard Guenther <rguenther@suse.de>
23414
23415 * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
23416 &ARRAY addresses by adjusting their types and prepending
23417 a conversion.
23418 * tree-cfg.c (verify_gimple_assign_single): Verify that
23419 addresses are correct.
23420
23421 2009-04-09 Richard Guenther <rguenther@suse.de>
23422
23423 * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
23424 indices into an array reference if possible.
23425 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23426 Fold POINTER_PLUS_EXPR statements with invariant address.
23427
23428 2009-04-09 Alan Modra <amodra@bigpond.net.au>
23429
23430 PR target/39634
23431 * config.gcc (powerpc64-*-linux*): Always build biarch.
23432
23433 2009-04-09 Joseph Myers <joseph@codesourcery.com>
23434
23435 PR c/39613
23436 * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
23437 it and pedwarn if this results in an INTEGER_CST.
23438
23439 2009-04-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
23440
23441 * doc/install.texi: Update minimum GMP version. Remove obsolete
23442 text in MPFR section.
23443
23444 2009-04-08 Jakub Jelinek <jakub@redhat.com>
23445
23446 * dwarf2out.c (class_scope_p): New static inline.
23447 (class_or_namespace_scope_p): Use it.
23448 (gen_variable_die): Use DW_TAG_member tag for static data member
23449 declarations instead of DW_TAG_variable.
23450
23451 PR middle-end/39573
23452 * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
23453 variables.
23454
23455 2009-04-08 Richard Guenther <rguenther@suse.de>
23456
23457 * tree-ssa-sccvn.c (valueize_refs): Do not continue to
23458 valueize random data.
23459
23460 2009-04-08 David Edelsohn <edelsohn@gnu.org>
23461
23462 * config.gcc (aix tm_file): Add aix-stdint.h.
23463 (aix tm clause use_gcc_stdint): Set to wrap.
23464 * config/rs6000/aix-stdint.h: New file.
23465
23466 2009-04-08 Richard Guenther <rguenther@suse.de>
23467
23468 PR middle-end/36291
23469 * tree-dfa.c (add_referenced_var): Do not recurse into
23470 global initializers.
23471 * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
23472 exposed variables.
23473 (fold_const_aggregate_ref): Likewise.
23474
23475 2009-04-08 Paolo Bonzini <bonzini@gnu.org>
23476
23477 * recog.c (ordered_comparison_operator): New.
23478 * gensupport.c (std_preds): Add it.
23479 * doc/md.texi (Machine-Independent Predicates): Document it.
23480
23481 2009-04-08 Jan Hubicka <jh@suse.cz>
23482
23483 * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
23484 * function.h (rtl_eh): Remove exception_handler_label_map.
23485 * except.c (ehl_hash, ehl_eq, add_ehl_entry,
23486 remove_exception_handler_label, for_each_eh_label_1): Remove.
23487 (rtl_remove_unreachable_regions): Remove.
23488 (convert_from_eh_region_ranges): Do not remove unreachable regions.
23489 (find_exception_handler_labels): Don't build the hashtable.
23490 (maybe_remove_eh_handler): Remove.
23491 (for_each_eh_label): Rewrite to walk the tree.
23492 (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
23493 * except.h (maybe_remove_eh_handler): Remove.
23494 * passes.c (init_optimization_passes): Schedule second EH cleanup
23495 before out-of-ssa.
23496 * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
23497 cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
23498
23499 2009-04-08 Paolo Bonzini <bonzini@gnu.org>
23500
23501 * genoutput.c (validate_optab_operands): New.
23502 (gen_insn, gen_expand): Call it.
23503
23504 * genflags.c (gen_insn): Detect misused iterators.
23505 (main): Pass line_no to gen_insn, exit with status 1 on error.
23506
23507 * genextract.c (line_no): Make global.
23508 (VEC_safe_set_locstr): Change assertion to error message.
23509 (main): Exit with status 1 on error.
23510
23511 2009-04-08 Joseph Myers <joseph@codesourcery.com>
23512
23513 PR c/39614
23514 PR c/39673
23515 * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
23516 C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
23517 EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
23518 * c-convert.c (convert): Do not call fold on results of conversion
23519 functions when the result is a C_MAYBE_CONST_EXPR.
23520 * c-parser.c (c_parser_postfix_expression): Do not fold condition
23521 of __builtin_choose_expr.
23522 * c-typeck.c (remove_c_maybe_const_expr): New.
23523 (build_unary_op, build_conditional_expr, build_compound_expr,
23524 build_binary_op, c_objc_common_truthvalue_conversion): Call
23525 remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
23526 integer operands.
23527
23528 2009-04-08 Bingfeng Mei <bmei@broadcom.com>
23529
23530 * fold-const.c (const_binop): Combine two VECTOR_CST under operation
23531 CODE to produce a new one. Add a prototype to use fold_convert_const
23532
23533 2009-04-08 Danny Smith <dannysmith@users.sourceforge.net>
23534
23535 PR bootstrap/39660
23536 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
23537 mix declarations and code.
23538
23539 2009-04-08 Ben Elliston <bje@au.ibm.com>
23540
23541 * gcc.c: Replace `CC' with `GCC' throughout.
23542
23543 2009-04-07 H.J. Lu <hongjiu.lu@intel.com>
23544
23545 * doc/invoke.texi: Document Atom support.
23546
23547 2009-04-07 Jason Merrill <jason@redhat.com>
23548
23549 PR c++/25185
23550 * c-common.h, c-common.c: Add flag_pretty_templates.
23551 * c-opts.c (c_common_handle_option): Set it.
23552 * c.opt: Add -fno-pretty-templates.
23553 * doc/invoke.texi (C++ Dialect Options): Likewise.
23554
23555 2009-04-07 Uros Bizjak <ubizjak@gmail.com>
23556
23557 * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
23558 (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
23559 (ia64_expand_builtin): Likewise.
23560
23561 2009-04-07 Martin Jambor <mjambor@suse.cz>
23562
23563 * tree-ssa-alias.c (refs_may_alias_p_1): Check for
23564 is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
23565 ADDR_EXPRS are include too.
23566
23567 2009-04-07 Richard Guenther <rguenther@suse.de>
23568
23569 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
23570 decls are only used if passes as parameters or if they are
23571 local statics and the call is not to a builtin.
23572 (call_may_clobber_ref_p_1): Likewise.
23573
23574 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
23575
23576 * expr.c (do_store_flag): Remove last argument. Simplify code
23577 to avoid duplication of tests already done by can_compare_p.
23578 (expand_expr_real_1): Adjust caller.
23579
23580 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
23581
23582 * optabs.c (can_compare_p): Test the predicate of a
23583 cbranch and cstore pattern.
23584
23585 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
23586
23587 * expr.c (convert_move): Use emit_store_flag instead of
23588 "emulating" it.
23589
23590 2009-04-07 Paolo Bonzini <bonzini@gnu.org>
23591
23592 * config/i386/i386.c (ix86_compare_emitted): Remove.
23593 (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
23594 ix86_compare_op0 like ix86_compare_emitted used to be handled.
23595 * config/i386/i386.h (ix86_compare_emitted): Remove.
23596 * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
23597 instead of ix86_compare_emitted.
23598 * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
23599
23600 2009-04-07 Andrew Stubbs <ams@codesourcery.com>
23601
23602 * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
23603 Add t-sysroot-suffix to tmake_file.
23604 * config/print-sysroot-suffix.sh: New file.
23605 * config/t-sysroot-suffix: New file.
23606
23607 2009-04-07 Ben Elliston <bje@au.ibm.com>
23608
23609 * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
23610 as the latter produces a warning when the target does not support
23611 infinity.
23612
23613 2009-04-07 Ben Elliston <bje@au.ibm.com>
23614
23615 * dfp.c: Replace type punning assignments with memcpy throughout.
23616 * Makefile.in (dfp.o-warn): Remove.
23617
23618 2009-04-07 Alan Modra <amodra@bigpond.net.au>
23619
23620 PR target/39634
23621 * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
23622 Include soft-fp/t-softfp after rs6000/t-linux64.
23623
23624 2009-04-06 Eric Botcazou <ebotcazou@adacore.com>
23625
23626 * stor-layout.c (set_sizetype): Use the full precision of their
23627 machine mode for bitsize types.
23628
23629 2009-04-06 H.J. Lu <hongjiu.lu@intel.com>
23630
23631 * config/i386/i386.md: Revert 2 accidental checkins.
23632
23633 2009-04-06 Joey Ye <joey.ye@intel.com>
23634 Xuepeng Guo <xuepeng.guo@intel.com>
23635 H.J. Lu <hongjiu.lu@intel.com>
23636
23637 Atom pipeline model, tuning and insn selection.
23638 * config.gcc (atom): Add atom config options and target.
23639
23640 * config/i386/atom.md: New.
23641
23642 * config/i386/i386.c (atom_cost): New cost.
23643 (m_ATOM): New macro flag.
23644 (initial_ix86_tune_features): Set m_ATOM.
23645 (x86_accumulate_outgoing_args): Likewise.
23646 (x86_arch_always_fancy_math_387): Likewise.
23647 (processor_target): Add Atom cost.
23648 (cpu_names): Add Atom cpu name.
23649 (override_options): Set Atom ISA.
23650 (ix86_issue_rate): New case PROCESSOR_ATOM.
23651 (ix86_adjust_cost): Likewise.
23652
23653 * config/i386/i386.h (TARGET_ATOM): New target macro.
23654 (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
23655 (TARGET_OPT_AGU): New target option.
23656 (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
23657 (processor_type): Add PROCESSOR_ATOM.
23658
23659 * config/i386/i386.md (cpu): Add new value "atom".
23660 (use_carry, movu): New attr.
23661 (atom.md): Include atom.md.
23662 (adddi3_carry_rex64): Set attr "use_carry".
23663 (addqi3_carry): Likewise.
23664 (addhi3_carry): Likewise.
23665 (addsi3_carry): Likewise.
23666 (*addsi3_carry_zext): Likewise.
23667 (subdi3_carry_rex64): Likewise.
23668 (subqi3_carry): Likewise.
23669 (subhi3_carry): Likewise.
23670 (subsi3_carry): Likewise.
23671 (x86_movdicc_0_m1_rex64): Likewise.
23672 (*x86_movdicc_0_m1_se): Likewise.
23673 (x86_movsicc_0_m1): Likewise.
23674 (*x86_movsicc_0_m1_se): Likewise.
23675 (*adddi_1_rex64): Emit add insn as much as possible.
23676 (*addsi_1): Likewise.
23677 (return_internal): Set atom_unit.
23678 (return_internal_long): Likewise.
23679 (return_pop_internal): Likewise.
23680 (*rcpsf2_sse): Set atom_sse_attr attr.
23681 (*qrt<mode>2_sse): Likewise.
23682 (*prefetch_sse): Likewise.
23683
23684 * config/i386/i386-c.c (ix86_target_macros_internal): New case
23685 PROCESSOR_ATOM.
23686 (ix86_target_macros_internal): Likewise.
23687
23688 * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
23689 (*prefetch_sse_rex): Likewise.
23690 (sse_rcpv4sf2): Likewise.
23691 (sse_vmrcpv4sf2): Likewise.
23692 (sse_sqrtv4sf2): Likewise.
23693 (<sse>_vmsqrt<mode>2): Likewise.
23694 (sse_ldmxcsr): Likewise.
23695 (sse_stmxcsr): Likewise.
23696 (*sse_sfence): Likewise.
23697 (sse2_clflush): Likewise.
23698 (*sse2_mfence): Likewise.
23699 (*sse2_lfence): Likewise.
23700 (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
23701 (<sse>_movup<ssemodesuffixf2c>): Likewise.
23702 (avx_movdqu<avxmodesuffix>): Likewise.
23703 (avx_lddqu<avxmodesuffix>): Likewise.
23704 (sse2_movntv2di): Change attr "type" to "ssemov".
23705 (sse2_movntsi): Likewise.
23706 (rsqrtv8sf2): Change attr "type" to "sseadd".
23707 (sse3_addsubv2df3): Set attr "atom_unit".
23708 (sse3_h<plusminus_insn>v4sf3): Likewise.
23709 (*sse2_pmaddwd): Likewise.
23710 (*vec_extractv2di_1_rex64): Likewise.
23711 (*vec_extractv2di_1_avx): Likewise.
23712 (sse2_psadbw): Likewise.
23713 (ssse3_phaddwv8hi3): Likewise.
23714 (ssse3_phaddwv4hi3): Likewise.
23715 (ssse3_phadddv4si3): Likewise.
23716 (ssse3_phadddv2si3): Likewise.
23717 (ssse3_phaddswv8hi3): Likewise.
23718 (ssse3_phaddswv4hi3): Likewise.
23719 (ssse3_phsubwv8hi3): Likewise.
23720 (ssse3_phsubwv4hi3): Likewise.
23721 (ssse3_phsubdv4si3): Likewise.
23722 (ssse3_phsubdv2si3): Likewise.
23723 (ssse3_phsubswv8hi3): Likewise.
23724 (ssse3_phsubswv4hi3): Likewise.
23725 (ssse3_pmaddubsw128): Likewise.
23726 (sse3_pmaddubsw: Likewise.
23727 (ssse3_palignrti): Likewise.
23728 (ssse3_palignrdi): Likewise.
23729
23730 2009-04-06 Gerald Pfeifer <gerald@pfeifer.com>
23731
23732 * doc/install.texi (Specific): Fix two cross-references to MinGW.
23733
23734 2009-04-06 Richard Guenther <rguenther@suse.de>
23735
23736 PR tree-optimization/28868
23737 * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
23738 of which PHI results we inserted.
23739 (insert_into_preds_of_block): Record inserted PHIs.
23740 (eliminate): Eliminate redundant PHI nodes.
23741 (init_pre): Init inserted_phi_names.
23742
23743 2009-04-06 Richard Guenther <rguenther@suse.de>
23744
23745 PR tree-optimization/39643
23746 * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
23747 IMAGPART_EXPRs of complex constants.
23748 (execute_fold_all_builtins): If we folded a call queue
23749 TODO_update_address_taken.
23750
23751 2009-04-06 Jan Hubicka <jh@suse.cz>
23752
23753 PR middle-end/39659
23754 * except.c (remove_unreachable_regions): Propagate may_contain_throw
23755 flag.
23756
23757 2009-04-06 Andrew Stubbs <ams@codesourcery.com>
23758
23759 * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
23760 delay slot.
23761 (ic_invalidate_array): Likewise.
23762
23763 2009-04-06 Hariharan Sandanagobalane <hariharan@picochip.com>
23764
23765 * calls.c (emit_library_call_value_1): Fix a problem with parameter
23766 alignment for library calls.
23767
23768 2009-04-06 Danny Smith <dannysmith@users.sourceforge.net>
23769
23770 * config.gcc (mingw32 tm_file): Add mingw-stdint.h.
23771 (mingw32 tm clause use_gcc_stdint): Set to wrap.
23772 * config/i386/mingw-stdint.h: New file.
23773
23774 2009-04-05 Richard Guenther <rguenther@suse.de>
23775
23776 PR tree-optimization/39648
23777 * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
23778 our &A vs. &A[0] IL deficiencies.
23779
23780 2009-04-04 Jan Hubicka <jh@suse.cz>
23781
23782 * except.c (sjlj_find_directly_reachable_regions): Be ready for
23783 removed toplevel regions.
23784 (sjlj_mark_call_sites): Likewise.
23785
23786 2009-04-04 Dave Korn <dave.korn.cygwin@gmail.com>
23787
23788 * config.gcc (cygwin tm_file): Add cygwin-stdint.h.
23789 (cygwin tm clause use_gcc_stdint): Set to wrap.
23790 * config/i386/cygwin-stdint.h: New file.
23791
23792 2009-04-04 Richard Guenther <rguenther@suse.de>
23793
23794 * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
23795 * tree-ssa-copy.c (init_copy_prop): Do not propagate through
23796 single-argument PHIs if we are in loop-closed SSA form.
23797 * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
23798 for the pre-condition.
23799 (slpeel_tree_peel_loop_to_edge): Likewise.
23800 (vect_build_loop_niters): Take an optional sequence to append stmts.
23801 (vect_generate_tmps_on_preheader): Likewise.
23802 (vect_do_peeling_for_loop_bound): Take extra guards for the
23803 pre-condition.
23804 (vect_do_peeling_for_alignment): Adjust. Unconditionally apply
23805 the cost model check.
23806 (vect_loop_versioning): Take stmt and stmt list to put pre-condition
23807 guards if we are going to peel. Do not apply versioning in that case.
23808 * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
23809 (vect_do_peeling_for_loop_bound): Likewise.
23810 * tree-vect-loop.c (vect_transform_loop): If we are peeling for
23811 loop bound only record extra pre-conditions, do not apply loop
23812 versioning.
23813
23814 2009-04-04 Richard Guenther <rguenther@suse.de>
23815
23816 * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
23817 renaming code.
23818
23819 2009-04-04 Jan Hubicka <jh@suse.cz>
23820
23821 * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
23822 last_basic_block for size of bb->index indexed array.
23823 * bt-load.c (compute_defs_uses_and_gen, compute_kill,
23824 compute_out, link_btr_uses, build_btr_def_use_webs,
23825 build_btr_def_use_webs, migrate_btr_defs): Likewise.
23826
23827 2009-04-04 Jan Hubicka <jh@suse.cz>
23828
23829 * except.c (remove_eh_handler_and_replace): Break out from ...
23830 (remove_eh_handler): ... here.
23831 (bring_to_root): New function.
23832 (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
23833 handled ones, bring others to root of tree.
23834
23835 2009-04-04 Jan Hubicka <jh@suse.cz>
23836
23837 * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
23838 (all_phis_safe_to_merge): New function.
23839 (update_info): New structure.
23840 (make_eh_edge_and_update_phi, update_eh_edges): New functions.
23841 (cleanup_empty_eh): Update SSA if possible.
23842
23843 2009-04-04 Richard Guenther <rguenther@suse.de>
23844
23845 * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
23846 * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
23847 (append_vuse): Likewise.
23848
23849 2009-04-04 Jakub Jelinek <jakub@redhat.com>
23850
23851 * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
23852 * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
23853 instead of REG_UNSAVED for DW_CFA_undefined.
23854 (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
23855 (uw_update_context): If RA column is REG_UNDEFINED, mark it as
23856 outermost frame.
23857
23858 2009-04-04 Richard Earnshaw <rearnsha@arm.com>
23859
23860 PR target/39501
23861 * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
23862
23863 2009-04-04 Richard Guenther <rguenther@suse.de>
23864
23865 PR tree-optimization/8781
23866 PR tree-optimization/37892
23867 * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
23868 * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
23869 (valueize_refs): Call it for *& valueizations.
23870 (shared_reference_ops_from_ref): Rename to ...
23871 (valueize_shared_reference_ops_from_ref): ... this and valueize.
23872 (shared_reference_ops_from_call): Rename to ...
23873 (valueize_shared_reference_ops_from_call): ... this and valueize.
23874 (vn_reference_lookup): Update.
23875 (visit_reference_op_call): Likewise.
23876 * tree-ssa-pre.c (phi_translate_1): Fold *&.
23877 (eliminate): Value-replace the call address in call statements.
23878
23879 2009-04-04 Richard Guenther <rguenther@suse.de>
23880
23881 PR tree-optimization/39636
23882 * tree-ssa-forwprop.c
23883 (forward_propagate_addr_into_variable_array_index): Check for
23884 GIMPLE_ASSIGN before accessing the rhs code.
23885
23886 2009-04-03 Jason Merrill <jason@redhat.com>
23887
23888 * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
23889
23890 2009-04-03 Steve Ellcey <sje@cup.hp.com>
23891
23892 * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
23893 truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
23894 fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
23895 floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
23896 fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
23897 smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
23898 divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
23899 umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
23900 *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
23901 *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
23902 adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
23903 smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
23904 *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
23905 *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
23906 sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
23907 Use fr_reg_or_fp01_operand instead of fr_register_operand
23908
23909 * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
23910 recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
23911 divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
23912
23913 2009-04-03 Vladimir Makarov <vmakarov@redhat.com>
23914
23915 PR rtl-optimization/39607
23916 PR rtl-optimization/39631
23917
23918 Revert:
23919
23920 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
23921 * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
23922 instead of DF_LR_OUT.
23923 * ira-lives.c (process_bb_node_lives): Ditto.
23924 * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
23925 instead of DF_LR_{OUT,IN}.
23926 * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
23927 * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
23928
23929 2009-04-03 Steven Bosscher <steven@gcc.gnu.org>
23930
23931 * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
23932 (execute_lower_omp): Always run but take the short way out if -fopenmp
23933 is not given.
23934 (gate_lower_omp): Remove, forcing the pass manager to always run the
23935 pass and always set PROP_gimple_lomp.
23936 (pass_lower_omp): Remove gate function.
23937 * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
23938 PROP_trees. Instead, require it.
23939 * ipa-cp.c (pass_ipa_cp): Likewise.
23940 * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
23941 (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
23942 * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
23943 and PROP_gimple_leh.
23944
23945 2009-04-03 Richard Guenther <rguenther@suse.de>
23946
23947 PR middle-end/13146
23948 PR tree-optimization/23940
23949 PR tree-optimization/33237
23950 PR middle-end/33974
23951 PR middle-end/34093
23952 PR tree-optimization/36201
23953 PR tree-optimization/36230
23954 PR tree-optimization/38049
23955 PR tree-optimization/38207
23956 PR tree-optimization/38230
23957 PR tree-optimization/38301
23958 PR tree-optimization/38585
23959 PR middle-end/38895
23960 PR tree-optimization/38985
23961 PR tree-optimization/39299
23962 * tree-ssa-structalias.h: Remove.
23963 * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
23964 (NULL_DEF_OPERAND_P): Make of type def_operand_p.
23965 (struct vuse_element_d): Remove.
23966 (struct vuse_vec_d): Likewise.
23967 (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
23968 VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
23969 SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
23970 VUSE_ELEMENT_VAR): Likewise.
23971 (struct voptype_d): Likewise.
23972 (NUM_VOP_FREE_BUCKETS): Likewise.
23973 (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
23974 (struct stmt_operands_d): Remove.
23975 (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
23976 VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
23977 VDEF_NUM, VDEF_VECT): Likewise.
23978 (copy_virtual_operands): Remove.
23979 (operand_build_cmp): Likewise.
23980 (create_ssa_artificial_load_stmt): Likewise.
23981 (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
23982 (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
23983 vuse_index and mayuse_index members. Pack and move done and iter_type
23984 members to the front.
23985 (SSA_OP_VMAYUSE): Remove.
23986 (SSA_OP_VIRTUAL_USES): Adjust.
23987 (FOR_EACH_SSA_VDEF_OPERAND): Remove.
23988 (unlink_stmt_vdef): Declare.
23989 (add_to_addressable_set): Remove.
23990 * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
23991 (vrp_visit_stmt): Likewise.
23992 * doc/tree-ssa.texi (Alias analysis): Update.
23993 * doc/invoke.texi (max-aliased-vops): Remove docs.
23994 (avg-aliased-vops): Likewise.
23995 * tree-into-ssa.c (syms_to_rename): Remove.
23996 (need_to_update_vops_p): Likewise.
23997 (need_to_initialize_update_ssa_p): Rename to ...
23998 (update_ssa_initialized_fn): ... this. Track function we are
23999 initialized for.
24000 (symbol_marked_for_renaming): Simplify.
24001 (add_new_name_mapping): Do not set need_to_update_vops_p.
24002 (dump_currdefs): Use SYMS_TO_RENAME.
24003 (rewrite_update_stmt): Always walk all uses/defs.
24004 (dump_update_ssa): Adjust.
24005 (init_update_ssa): Take function argument. Track what we are
24006 initialized for.
24007 (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
24008 (create_new_def_for): Initialize for cfun, assert we are initialized
24009 for cfun.
24010 (mark_sym_for_renaming): Simplify.
24011 (mark_set_for_renaming): Do not initialize update-ssa.
24012 (need_ssa_update_p): Simplify. Take function argument.
24013 (name_mappings_registered_p): Assert we ask for the correct function.
24014 (name_registered_for_update_p): Likewise.
24015 (ssa_names_to_replace): Likewise.
24016 (release_ssa_name_after_update_ssa): Likewise.
24017 (update_ssa): Likewise. Use SYMS_TO_RENAME.
24018 (dump_decl_set): Do not print a newline.
24019 (debug_decl_set): Do it here.
24020 (dump_update_ssa): And here.
24021 * tree-ssa-loop-im.c (move_computations): Adjust.
24022 (movement_possibility): Likewise.
24023 (determine_max_movement): Likewise.
24024 (gather_mem_refs_stmt): Likewise.
24025 * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
24026 or NAME_MEMORY_TAG.
24027 * tree-complex.c (update_all_vops): Remove.
24028 (expand_complex_move): Adjust.
24029 * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
24030 Simplify test for memory referencing statement. Exclude
24031 non-invariant ADDR_EXPRs.
24032 * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
24033 * tree-loop-distribution.c (generate_memset_zero): Adjust.
24034 (rdg_flag_uses): Likewise.
24035 * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
24036 related code.
24037 (tree_optimize_tail_calls_1): Also split the
24038 edge from the entry block if we have degenerate PHI nodes in
24039 the first basic block.
24040 * tree.c (init_ttree): Remove memory-tag related code.
24041 (tree_code_size): Likewise.
24042 (tree_node_structure): Likewise.
24043 (build7_stat): Re-write to be build6_stat.
24044 * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
24045 (SSA_VAR_P): Adjust.
24046 (struct tree_memory_tag): Remove.
24047 (struct tree_memory_partition_tag): Likewise.
24048 (union tree_node): Adjust.
24049 (build7): Re-write to be build6.
24050 * tree-pass.h (pass_reset_cc_flags): Remove.
24051 (TODO_update_address_taken): New flag.
24052 (pass_simple_dse): Remove.
24053 * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
24054 * params.h (MAX_ALIASED_VOPS): Remove.
24055 (AVG_ALIASED_VOPS): Likewise.
24056 * omp-low.c (expand_omp_taskreg): Update SSA form.
24057 * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
24058 aliases the lhs in a copy stmt.
24059 * tree-ssa-dse.c (struct address_walk_data): Remove.
24060 (memory_ssa_name_same): Likewise.
24061 (memory_address_same): Likewise.
24062 (get_kill_of_stmt_lhs): Likewise.
24063 (dse_possible_dead_store_p): Simplify, use the oracle. Handle
24064 unused stores. Look through PHI nodes into post-dominated regions.
24065 (dse_optimize_stmt): Simplify. Properly remove stores.
24066 (tree_ssa_dse): Compute dominators.
24067 (execute_simple_dse): Remove.
24068 (pass_simple_dse): Likewise.
24069 * ipa-reference.c (scan_stmt_for_static_refs): Open-code
24070 gimple_loaded_syms and gimple_stored_syms computation.
24071 * toplev.c (dump_memory_report): Dump alias and pta stats.
24072 * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
24073 (vn_reference_eq): Likewise.
24074 (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
24075 copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
24076 valueize_vuses): Remove.
24077 (get_def_ref_stmt_vuses): Simplify. Rename to ...
24078 (get_def_ref_stmt_vuse): ... this.
24079 (vn_reference_lookup_2): New function.
24080 (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
24081 walking equivalent vuses. Simplify.
24082 (vn_reference_lookup): Likewise.
24083 (vn_reference_insert): Likewise.
24084 (vn_reference_insert_pieces): Likewise.
24085 (visit_reference_op_call): Simplify.
24086 (visit_reference_op_load): Likewise.
24087 (visit_reference_op_store): Likewise.
24088 (init_scc_vn): Remove shared_lookup_vuses initialization.
24089 (free_scc_vn): Remove shared_lookup_vuses freeing.
24090 (sort_vuses, sort_vuses_heap): Remove.
24091 (get_ref_from_reference_ops): Export.
24092 * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
24093 vector with single vuse pointer.
24094 (vn_reference_lookup_pieces, vn_reference_lookup,
24095 vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
24096 (shared_vuses_from_stmt): Remove.
24097 (get_ref_from_reference_ops): Declare.
24098 * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
24099 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
24100 memory-tag related code.
24101 * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
24102 (likely_value): Add comment, skip static-chain of call statements.
24103 (surely_varying_stmt_p): Adjust.
24104 (gimplify_and_update_call_from_tree): Likewise.
24105 (execute_fold_all_builtins): Do not rebuild alias info.
24106 (gimplify_and_update_call_from_tree): Properly update VOPs.
24107 * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
24108 (copy_ref_info): Remove memory-tag related code.
24109 * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
24110 * ipa-pure-const.c (check_decl): Remove memory-tag related code.
24111 (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
24112 computation.
24113 * tree-ssa-dom.c (gimple_p): Remove typedef.
24114 (eliminate_redundant_computations): Adjust.
24115 (record_equivalences_from_stmt): Likewise.
24116 (avail_expr_hash): Likewise.
24117 (avail_expr_eq): Likewise.
24118 * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
24119 (stmt_makes_single_load): Likewise.
24120 (stmt_makes_single_store): Likewise.
24121 * tree-ssa-alias.c: Rewrite completely.
24122 (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
24123 debug_mem_sym_stats, dump_mem_sym_stats_for_var,
24124 debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
24125 delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
24126 dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
24127 Remove public functions.
24128 (pass_reset_cc_flags): Remove.
24129 (pass_build_alias): Move ...
24130 * tree-ssa-structalias.c (pass_build_alias): ... here.
24131 * tree-ssa-alias.c (may_be_aliased): Move ...
24132 * tree-flow-inline.h (may_be_aliased): ... here.
24133 tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
24134 count_uses_and_derefs): Move ...
24135 * gimple.c: ... here.
24136 * gimple.h (count_uses_and_derefs): Declare.
24137 * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
24138 ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
24139 same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
24140 indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
24141 ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
24142 call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
24143 get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
24144 New functions.
24145 * tree-dfa.c (refs_may_alias_p): Move ...
24146 * tree-ssa-alias.c (refs_may_alias_p): ... here. Extend.
24147 * tree-ssa-alias.h: New file.
24148 * tree-ssa-sink.c (is_hidden_global_store): Adjust.
24149 (statement_sink_location): Likewise.
24150 * opts.c (decode_options): Do not adjust max-aliased-vops or
24151 avg-aliased-vops values.
24152 * timevar.def (TV_TREE_MAY_ALIAS): Remove.
24153 (TV_CALL_CLOBBER): Likewise.
24154 (TV_FLOW_SENSITIVE): Likewise.
24155 (TV_FLOW_INSENSITIVE): Likewise.
24156 (TV_MEMORY_PARTITIONING): Likewise.
24157 (TV_ALIAS_STMT_WALK): New timevar.
24158 * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
24159 * tree-ssa-address.c (create_mem_ref_raw): Use build6.
24160 (get_address_description): Remove memory-tag related code.
24161 * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
24162 * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
24163 * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
24164 and immediate uses in statements. Document.
24165 * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
24166 (dump_symbols): Remove.
24167 (dump_gimple_mem_ops): Do not dump loaded or stored syms.
24168 * alias.c (get_deref_alias_set): New function split out from ...
24169 (get_alias_set): ... here.
24170 * alias.h (get_deref_alias_set): Declare.
24171 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
24172 type parameter. Remove restrict pointer handling. Create a
24173 ref-all pointer in case type-based alias sets do not conflict.
24174 (vect_analyze_data_refs): Remove SMT related code.
24175 * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
24176 (vectorizable_load): Likewise.
24177 * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
24178 (DR_SYMBOL_TAG, DR_VOPS): Remove.
24179 * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
24180 Ignore vops and SMTs.
24181 (dr_analyze_alias): Likewise..
24182 (free_data_ref): Likewise.
24183 (create_data_ref): Likewise.
24184 (analyze_all_data_dependences): Likewise.
24185 (get_references_in_stmt): Adjust.
24186 * tree-flow-inline.h (gimple_aliases_computed_p,
24187 gimple_addressable_vars, gimple_call_clobbered_vars,
24188 gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
24189 factoring_name_p, mark_call_clobbered, clear_call_clobbered,
24190 compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
24191 gimple_mem_ref_stats): Remove.
24192 (gimple_vop): New function.
24193 (op_iter_next_use): Remove vuses and mayuses cases.
24194 (op_iter_next_def): Remove vdefs case.
24195 (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
24196 (clear_and_done_ssa_iter): Do not set removed fields.
24197 (op_iter_init): Likewise. Skip vuse and/or vdef if requested.
24198 Assert we are not iterating over vuses or vdefs if not also
24199 iterating over uses or defs.
24200 (op_iter_init_use): Likewise.
24201 (op_iter_init_def): Likewise.
24202 (op_iter_next_vdef): Remove.
24203 (op_iter_next_mustdef): Likewise.
24204 (op_iter_init_vdef): Likewise.
24205 (compare_ssa_operands_equal): Likewise.
24206 (link_use_stmts_after): Handle vuse operand.
24207 (is_call_used): Use is_call_clobbered.
24208 (is_call_clobbered): Global variables are always call clobbered,
24209 query the call-clobbers bitmap.
24210 (mark_call_clobbered): Ignore global variables.
24211 (clear_call_clobbered): Likewise.
24212 * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
24213 virtual operands sanity check.
24214 * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
24215 Remove.
24216 (TARGET_MEM_REF): Remove TMR_TAG operand.
24217 * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
24218 Remove call-clobber related code.
24219 (remove_referenced_var): Likewise. Do not clear mpt or symbol_mem_tag.
24220 (dump_variable): Do not dump SMTs, memory stats, may-aliases or
24221 partitions or escape reason.
24222 (get_single_def_stmt, get_single_def_stmt_from_phi,
24223 get_single_def_stmt_with_phi): Remove.
24224 (dump_referenced_vars): Tidy.
24225 (get_ref_base_and_extent): Allow bare decls.
24226 (collect_dfa_stats): Adjust.
24227 * graphite.c (rename_variables_in_stmt): Adjust.
24228 (graphite_copy_stmts_from_block): Likewise.
24229 (translate_clast): Likewise.
24230 * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
24231 (EXPR_DIES): New.
24232 (translate_vuse_through_block): Use the oracle.
24233 (phi_translate_1): Adjust.
24234 (value_dies_in_block_x): Use the oracle. Cache the outcome
24235 in EXPR_DIES.
24236 (valid_in_sets): Check if the VUSE for
24237 a REFERENCE is available.
24238 (eliminate): Do not remove stmts during elimination,
24239 instead queue and remove them afterwards.
24240 (do_pre): Do not rebuild alias info.
24241 (pass_pre): Run TODO_rebuild_alias before PRE.
24242 * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
24243 * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
24244 (mark_all_v_defs_stmt): Remove.
24245 (mark_all_v_defs_seq): Adjust.
24246 (sra_replace): Likewise.
24247 (scalarize_use): Likewise.
24248 (scalarize_copy): Likewise.
24249 (scalarize_init): Likewise.
24250 (scalarize_ldst): Likewise.
24251 (todoflags): Remove.
24252 (tree_sra): Do not rebuild alias info.
24253 (tree_sra_early): Adjust.
24254 (pass_sra): Run TODO_update_address_taken before SRA.
24255 * tree-predcom.c (set_alias_info): Remove.
24256 (prepare_initializers_chain): Do not call it.
24257 (mark_virtual_ops_for_renaming): Adjust.
24258 (mark_virtual_ops_for_renaming_list): Remove.
24259 (initialize_root_vars): Adjust.
24260 (initialize_root_vars_lm): Likewise.
24261 (prepare_initializers_chain): Likewise.
24262 * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
24263 (may_propagate_copy_into_stmt): Likewise.
24264 (merge_alias_info): Do nothing for now.
24265 (propagate_tree_value_into_stmt): Adjust.
24266 (stmt_may_generate_copy): Likewise.
24267 * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
24268 not mark symbols for renaming.
24269 (forward_propagate_addr_expr): Match up push/pop_stmt_changes
24270 with the same statement, make sure to update the new pointed-to one.
24271 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
24272 call statements, do not mark symbols for renaming.
24273 (mark_operand_necessary): Dump something.
24274 (ref_may_be_aliased): New function.
24275 (mark_aliased_reaching_defs_necessary_1): New helper function.
24276 (mark_aliased_reaching_defs_necessary): Likewise.
24277 (mark_all_reaching_defs_necessary_1): Likewise.
24278 (mark_all_reaching_defs_necessary): Likewise.
24279 (propagate_necessity): Do not process virtual PHIs. For
24280 non-aliased loads mark all reaching definitions as necessary.
24281 For aliased loads and stores mark the immediate dominating
24282 aliased clobbers as necessary.
24283 (visited): New global static.
24284 (perform_tree_ssa_dce): Free visited bitmap after propagating
24285 necessity.
24286 (remove_dead_phis): Perform simple dead virtual PHI removal.
24287 (remove_dead_stmt): Properly unlink virtual operands when
24288 removing stores.
24289 (eliminate_unnecessary_stmts): Schedule PHI removal after
24290 stmt removal.
24291 * tree-ssa-ter.c (is_replaceable_p): Adjust.
24292 (process_replaceable): Likewise.
24293 (find_replaceable_in_bb): Likewise.
24294 * tree-ssa.c (verify_ssa_name): Verify all VOPs are
24295 based on the single gimple vop.
24296 (verify_flow_insensitive_alias_info): Remove.
24297 (verify_flow_sensitive_alias_info): Likewise.
24298 (verify_call_clobbering): Likewise.
24299 (verify_memory_partitions): Likewise.
24300 (verify_alias_info): Likewise.
24301 (verify_ssa): Adjust..
24302 (execute_update_addresses_taken): Export. Update SSA
24303 manually. Optimize only when optimizing. Use a local bitmap.
24304 (pass_update_address_taken): Remove TODO_update_ssa, add
24305 TODO_dump_func.
24306 (pass_update_address_taken): Just use TODO_update_address_taken.
24307 (init_tree_ssa): Do not initialize addressable_vars.
24308 (verify_ssa): Verify new VUSE / VDEF properties.
24309 Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
24310 Do not call verify_alias_info.
24311 (delete_tree_ssa): Clear the VUSE, VDEF operands.
24312 Do not free the loaded and stored syms bitmaps. Reset the escaped
24313 and callused solutions. Do not free addressable_vars.
24314 Remove memory-tag related code.
24315 (warn_uninitialized_var): Aliases are always available.
24316 * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
24317 * lambda-code.c (can_put_in_inner_loop): Adjust.
24318 (can_put_after_inner_loop): Likewise.
24319 (perfect_nestify): Likewise.
24320 * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
24321 (vect_gen_widened_results_half): Remove CALL_EXPR handling.
24322 (vectorizable_conversion): Do not mark symbols for renaming.
24323 * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
24324 (expand_call_inline): Unlink the calls virtual operands before
24325 replacing it.
24326 (tree_function_versioning): Do not call update_ssa if we are not
24327 updating clones. Simplify.
24328 * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
24329 (propagate_with_phi): Likewise..
24330 * tree-outof-ssa.c (create_temp): Remove memory tag and call
24331 clobber code. Assert we are not aliased or global.
24332 * tree-flow.h: Include tree-ssa-alias.h
24333 (enum escape_type): Remove.
24334 (struct mem_sym_stats_d): Likewise.
24335 (struct mem_ref_stats_d): Likewise.
24336 (struct gimple_df): Add vop member. Remove global_var,
24337 call_clobbered_vars, call_used_vars, addressable_vars,
24338 aliases_compted_p and mem_ref_stats members. Add syms_to_rename,
24339 escaped and callused members.
24340 (struct ptr_info_def): Remove all members, add points-to solution
24341 member pt.
24342 (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
24343 call_clobbered, escape_mask, mpt and symbol_mem_tag members.
24344 * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
24345 (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
24346 (tree-ssa-alias.o): Likewise.
24347 (toplev.o): Add tree-ssa-alias.h
24348 (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
24349 * gimple.c (gimple_set_bb): Fix off-by-one error.
24350 (is_gimple_reg): Do not handle memory tags.
24351 (gimple_copy): Also copy virtual operands.
24352 Delay updating the statement. Do not reset loaded and stored syms.
24353 (gimple_set_stored_syms): Remove.
24354 (gimple_set_loaded_syms): Likewise.
24355 (gimple_call_copy_skip_args): Copy the virtual operands
24356 and mark the new statement modified.
24357 * tree-ssa-structalias.c (may_alias_p): Remove.
24358 (set_uids_in_ptset): Take the alias set to prune with as
24359 parameter. Fold in the alias test of may_alias_p.
24360 (compute_points_to_sets): Compute whether a ptr is dereferenced
24361 in a local sbitmap.
24362 (process_constraint): Deal with &ANYTHING on the lhs, reject all
24363 other ADDRESSOF constraints on the lhs.
24364 (get_constraint_for_component_ref): Assert that we don't get
24365 ADDRESSOF constraints from the base of the reference.
24366 Properly generate UNKNOWN_OFFSET for DEREF if needed.
24367 (struct variable_info): Remove collapsed_to member.
24368 (get_varinfo_fc): Remove.
24369 (new_var_info): Do not set collapsed_to.
24370 (dump_constraint): Do not follow cycles.
24371 (dump_constraint_graph): Likewise.
24372 (build_pred_graph): Likewise.
24373 (build_succ_graph): Likewise.
24374 (rewrite_constraints): Likewise.
24375 (do_simple_structure_copy): Remove.
24376 (do_rhs_deref_structure_copy): Remove.
24377 (do_lhs_deref_structure_copy): Remove.
24378 (collapse_rest_of_var): Remove.
24379 (do_structure_copy): Re-implement.
24380 (pta_stats): New global variable.
24381 (dump_pta_stats): New function.
24382 (struct constraint_expr): Make offset signed.
24383 (UNKNOWN_OFFSET): Define special value.
24384 (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
24385 (solution_set_expand): New helper function split out from ...
24386 (do_sd_constraint): ... here.
24387 (solution_set_add): Handle UNKNOWN_OFFSET. Handle negative offsets.
24388 (do_ds_constraint): Likewise.
24389 (do_sd_constraint): Likewise. Do not special-case ESCAPED = *ESCAPED
24390 and CALLUSED = *CALLUSED.
24391 (set_union_with_increment): Make inc argument signed.
24392 (type_safe): Remove.
24393 (get_constraint_for_ptr_offset): Handle unknown and negative
24394 constant offsets.
24395 (first_vi_for_offset): Handle offsets before start. Bail
24396 out early for offsets beyond the variable extent.
24397 (first_or_preceding_vi_for_offset): New function.
24398 (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
24399 Together with ESCAPED = *ESCAPED this properly computes reachability.
24400 (find_what_var_points_to): New function.
24401 (find_what_p_points_to): Implement in terms of find_what_var_points_to.
24402 (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
24403 pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
24404 pt_solutions_intersect): New functions.
24405 (compute_call_used_vars): Remove.
24406 (compute_may_aliases): New main entry into PTA computation.
24407 * gimple.h (gimple_p): New typedef.
24408 (struct gimple_statement_base): Remove references_memory_p.
24409 (struct gimple_statement_with_memory_ops_base): Remove
24410 vdef_ops, vuse_ops, stores and loads members. Add vdef and vuse
24411 members.
24412 (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
24413 gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
24414 gimple_set_references_memory): Remove.
24415 (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
24416 gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
24417 New functions.
24418 * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
24419 (verify_expr): Allow RESULT_DECL.
24420 (gimple_duplicate_bb): Do not copy virtual operands.
24421 (gimple_duplicate_sese_region): Adjust.
24422 (gimple_duplicate_sese_tail): Likewise.
24423 (mark_virtual_ops_in_region): Remove.
24424 (move_sese_region_to_fn): Do not call it.
24425 * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
24426 and pass_simple_dse.
24427 (execute_function_todo): Handle TODO_update_address_taken,
24428 call execute_update_addresses_taken for TODO_rebuild_alias.
24429 (execute_todo): Adjust.
24430 (execute_one_pass): Init dump files early.
24431 * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
24432 call-clobbered.
24433 (create_general_new_stmt): Clear vops.
24434 * tree-ssa-reassoc.c (get_rank): Adjust.
24435 * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
24436 symbols for renaming.
24437 * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
24438 (PARAM_AVG_ALIASED_VOPS): Likewise.
24439 * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
24440 (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
24441 * tree-ssa-operands.c: Simplify for new virtual operand representation.
24442 (operand_build_cmp, copy_virtual_operands,
24443 create_ssa_artificial_load_stmt, add_to_addressable_set,
24444 gimple_add_to_addresses_taken): Remove public functions.
24445 (unlink_stmt_vdef): New function.
24446
24447 2009-04-03 Alan Modra <amodra@bigpond.net.au>
24448
24449 * config.gcc (powerpc-*-linux*): Merge variants.
24450
24451 2009-04-02 Chao-ying Fu <fu@mips.com>
24452 James Grosbach <james.grosbach@microchip.com>
24453
24454 * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
24455 num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
24456 cop0_sp_offset.
24457 (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
24458 keep_interrupts_masked_p, use_debug_exception_return_p.
24459 (mips_attribute_table): Add interrupt, use_shadow_register_set,
24460 keep_interrupts_masked, use_debug_exception_return.
24461 (mips_interrupt_type_p, mips_use_shadow_register_set_p,
24462 mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
24463 New functions.
24464 (mips_function_ok_for_sibcall): Return false for interrupt handlers.
24465 (mips_print_operand): Process COP0 registers to print $0 .. $31
24466 correctly for GAS to process.
24467 (mips_interrupt_extra_call_saved_reg_p): New function.
24468 (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
24469 extra registers.
24470 (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
24471 (mips_compute_frame_info): Add supports for interrupt context that
24472 includes doubleword accumulators and COP0 registers.
24473 (mips_for_each_saved_acc): New function.
24474 (mips_for_each_saved_gpr_and_fpr): Change the function name from
24475 mips_for_each_saved_reg.
24476 (mips_save_reg): Save accumulators.
24477 (mips_kernel_reg_p): A new for_each_rtx callback.
24478 (mips_expand_prologue): Support interrupt handlers.
24479 (mips_restore_reg): Restore accumulators.
24480 (mips_expand_epilogue): Support interrupt handlers.
24481 (mips_can_use_return_insn): Return false for interrupt handlers.
24482 (mips_epilogue_uses): New function.
24483 * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
24484 UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
24485 (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
24486 cop0_move): New instructions.
24487 * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
24488 * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
24489 defines.
24490 (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
24491 New defines.
24492 (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
24493 (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
24494 interrupt handlers, we use K0 as the temporary register.
24495 (EPILOGUE_USES): Change to a function call.
24496 * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
24497 handlers, we use K0 as the temporary register.
24498
24499 * doc/extend.texi (Function Attributes): Document interrupt,
24500 use_shadow_register_set, keep_interrupts_masked,
24501 use_debug_exception_return for MIPS attributes.
24502
24503 2009-04-03 Alan Modra <amodra@bigpond.net.au>
24504
24505 * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
24506 Remove a number of t-files from tmake_file.
24507 * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
24508 * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
24509 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
24510 target_prototype, not TARGET_PROTOTYPE.
24511 (LINK_OS_GNU_SPEC): Define.
24512 * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
24513 and darwin-ldoubdle.c.
24514
24515 2009-04-02 Michael Meissner <meissner@linux.vnet.ibm.com>
24516
24517 PR driver/39293
24518 * gcc.c (save_temps_flag): Add support for -save-temps=obj.
24519 (cpp_options): Ditto.
24520 (default_compilers): Ditto.
24521 (display_help): Ditto.
24522 (process_command): Ditto.
24523 (do_spec_1): Ditto.
24524 (set_input): Use lbasename instead of duplicate code.
24525 (save_temps_prefix): New static for -save-temps=obj.
24526 (save_temps_length): Ditto.
24527
24528 * doc/invoke.texi (-save-temps=obj): Document new variant to
24529 -save-temps switch.
24530
24531 2009-04-02 Jeff Law <law@redhat.com>
24532
24533 * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
24534 variable.
24535
24536 2009-04-02 H.J. Lu <hongjiu.lu@intel.com>
24537
24538 * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
24539 * configure: Regenerated.
24540
24541 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
24542
24543 * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
24544 share the argument list.
24545
24546 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
24547
24548 Merge
24549
24550 2009-02-12 Diego Novillo <dnovillo@google.com>
24551
24552 * varpool.c (debug_varpool): New.
24553 * cgraph.h (debug_varpool): Declare.
24554
24555 2009-04-02 Jan Hubicka <jh@suse.cz>
24556
24557 * passes.c (init_optimization_passes): Remove two copies of ehcleanup
24558 pass.
24559
24560 2009-04-02 H.J. Lu <hongjiu.lu@intel.com>
24561
24562 * config/i386/i386.c (ix86_abi): Move initialization to ...
24563 (override_options): Here.
24564
24565 2009-04-02 Christian Bruel <christian.bruel@st.com>
24566
24567 * config/sh/sh.c (sh_dwarf_register_span): New function.
24568 (TARGET_DWARF_REGISTER_SPAN): Define.
24569 * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
24570
24571 2009-04-02 Ira Rosen <irar@il.ibm.com>
24572
24573 PR tree-optimization/39595
24574 * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
24575 interleaved loads group is not greater than the SLP group size.
24576
24577 2009-04-02 Rafael Avila de Espindola <espindola@google.com>
24578
24579 * builtins.c (is_builtin_name): New.
24580 (called_as_built_in): Use is_builtin_name.
24581 * tree.h (is_builtin_name): New.
24582 * varasm.c (incorporeal_function_p): Use is_builtin_name
24583
24584 2009-04-02 Andrew Stubbs <ams@codesourcery.com>
24585
24586 * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
24587
24588 2009-04-02 Dodji Seketeli <dodji@redhat.com>
24589
24590 PR c++/26693
24591 * c-decl.c (clone_underlying_type): Move this ...
24592 * c-common.c (set_underlying_type): ... here.
24593 Also, make sure the function properly sets TYPE_STUB_DECL() on
24594 the newly created typedef variant type.
24595 * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
24596 * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
24597 points.
24598
24599 2009-04-02 Richard Guenther <rguenther@suse.de>
24600
24601 PR tree-optimization/37221
24602 * tree-flow.h (degenerate_phi_result): Declare.
24603 * tree-ssa-dom.c (degenerate_phi_result): Export.
24604 * tree-scalar-evolution.c (analyze_initial_condition): If
24605 the initial condition is defined by a degenerate PHI node
24606 use the degenerate value.
24607
24608 2009-04-01 Eric Botcazou <ebotcazou@adacore.com>
24609
24610 PR rtl-optimization/39588
24611 * combine.c (merge_outer_ops): Do not set the constant when this
24612 is not necessary.
24613 (simplify_shift_const_1): Do not modify it either in this case.
24614
24615 2009-04-01 Steven Bosscher <steven@gcc.gnu.org>
24616
24617 * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
24618 tuning is deprecated if -mtune value is set to an Itanium1 variant.
24619
24620 2009-04-01 Janis Johnson <janis187@us.ibm.com>
24621
24622 PR c/29027
24623 * c-lex.c (interpret_float): Default (no suffix) is double.
24624
24625 2009-04-1 Xinliang David Li <davidxl@google.com>
24626
24627 * config/i386/i386.c (legitimate_constant_p): Recognize
24628 all one vector constant.
24629
24630 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24631
24632 * config/vax/vax.c: Add #includes to silence warnings.
24633 Change #include order to silence two warnings.
24634
24635 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24636
24637 * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
24638 (ASM_SPEC): Pass -k to the assembler for PIC code.
24639
24640 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24641
24642 * config.gcc: Add vax-*-linux* to the switch.
24643 * config/vax/linux.h: New file. (TARGET_VERSION,
24644 TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
24645
24646 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24647
24648 * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
24649 Use predicate macros instead of GET_CODE() == foo.
24650 * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
24651 ashlsi3, rotrsi3, <unnamed>): Likewise.
24652
24653 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24654
24655 * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
24656 jbbccihi, jbbccisi): Remova trailing whitespace.
24657 * config/vax/constraints.md: Likewise.
24658 * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
24659 * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
24660 * config/vax/predicates.md: Likewise.
24661 * config/vax/vax.c (print_operand_address, vax_output_int_move,
24662 vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
24663 * config/vax/vax.h: Likewise.
24664 * config/vax/vax.md (nonlocal_goto): Likewise.
24665
24666 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24667
24668 * config/vax/vax.c (vax_float_literal, vax_output_int_move)
24669 (indirectable_address_p, adjacent_operands_p): Add spaces around
24670 braces.
24671 * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
24672
24673 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24674
24675 * config/vax/vax.c (legitimate_constant_address_p,
24676 legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
24677 index_term_p, reg_plus_index_p, legitimate_address_p,
24678 vax_mode_dependent_address_p): Update comments to match functions
24679 modified by the recent int->bool conversion.
24680
24681 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24682
24683 * config/vax/builtins.md: Update copyright message.
24684 * config/vax/constraints.md: Likewise.
24685 * config/vax/netbsd-elf.h: Likewise.
24686 * config/vax/predicates.md: Likewise.
24687 * config/vax/vax-protos.h: Likewise.
24688 * config/vax/vax.c: Likewise.
24689 * config/vax/vax.h: Likewise.
24690 * config/vax/vax.md: Likewise.
24691 * config/vax/vax.opt: Likewise.
24692
24693 2009-04-01 Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
24694
24695 * config/vax/builtins.md (ffssi2, ffssi2_internal,
24696 sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
24697 * config/vax/constraints.md (B, R): Likewise.
24698 * config/vax/predicates.md (external_memory_operand,
24699 nonimmediate_addsub_di_operand): Likewise.
24700 * config/vax/vax.c (vax_output_int_add): Likewise.
24701 * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
24702 untyped_call): Likewise.
24703
24704 2009-04-01 Matt Thomas <matt@3am-software.com>
24705
24706 * config/vax/predicates.md: New file.
24707 (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
24708 external_const_operand, nonsymbolic_operand, external_memory_operand,
24709 indirect_memory_operand, indexed_memory_operand,
24710 illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
24711 nonimmediate_addsub_di_operand, general_addsub_di_operand): New
24712 predicate.
24713 * config/vax/constraints.md: New file.
24714 (Z0, U06, U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
24715 New constraint.
24716 * config/vax/builtins.md: New file.
24717 (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
24718 jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
24719 jbbccisi): Define.
24720 * config/vax/vax.opt (mqmath): Add option.
24721 * config/vax/vax.md (isfx): Extend with DI.
24722 (VAXintQH, VAXintQHSD): Define.
24723 (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
24724 mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
24725 and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
24726 one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
24727 (movdi): Update constraints and use vax_output_int_move().
24728 (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
24729 movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
24730 pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
24731 nonlocal_goto): New.
24732 (mov<mode>): Extend accepted operand types.
24733 (subdi3_old): Rename from subdi3, change update constraints and use
24734 a new implementation.
24735 * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
24736 (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
24737 MOVE_RATIO, CLEAR_RATIO): Define.
24738 (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
24739 CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
24740 (PRINT_OPERAND): Redefine using a function instead of inlined code.
24741 * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
24742 (split_quadword_operands): Make static and really allow variable
24743 splitting.
24744 (print_operand_address): Update for PIC generation.
24745 (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
24746 indexable_address_p, fixup_mathdi_operand,
24747 vax_expand_addsub_di_operands, adjacent_operands_p): New.
24748 (vax_float_literal, legitimate_constant_p,
24749 indirectable_constant_address_p, index_term_p,
24750 reg_plus_index_p): Return bool instead of int.
24751 (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
24752 where needed.
24753 (vax_output_int_move, vax_output_int_add): Extend to allow PIC
24754 generation.
24755 (vax_output_conditional_branch): Indent.
24756 (legitimate_constant_address_p, indirectable_constant_address_p,
24757 indirectable_address_p, nonindexed_address_p, legitimate_address_p,
24758 vax_mode_dependent_address_p): Return bool instead of int, update for
24759 PIC generation.
24760 * config/vax/vax-protos.h (legitimate_constant_address_p,
24761 legitimate_constant_p, legitimate_address_p,
24762 vax_mode_dependent_address_p): Change declaration to bool.
24763 (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
24764 vax_expand_addsub_di_operands, vax_output_int_subtract,
24765 vax_output_movmemsi): Declare.
24766 (split_quadword_operands, vax_float_literal): Delete declaration.
24767 * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
24768 * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
24769 VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
24770 ASM_OUTPUT_DWARF_PCREL): Define.
24771 (ASM_SPEC): Change definition to allow PIC generation.
24772
24773 2009-04-01 Steve Ellcey <sje@cup.hp.com>
24774
24775 * doc/sourcebuild.texi: Update front-end requirements.
24776
24777 2009-04-01 Jakub Jelinek <jakub@redhat.com>
24778
24779 PR target/39226
24780 * config/rs6000/rs6000.md (andsi3_internal5_nomc,
24781 anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
24782 (booldi3_internal3): Use boolean_or_operator instead of
24783 boolean_operator.
24784
24785 2009-04-01 Joseph Myers <joseph@codesourcery.com>
24786
24787 PR c/39605
24788 * c-decl.c (grokdeclarator): Pedwarn for file-scope array
24789 declarator whose size is not an integer constant expression but
24790 folds to an integer constant, then treat it as a constant
24791 subsequently.
24792
24793 2009-04-01 Richard Guenther <rguenther@suse.de>
24794
24795 * fold-const.c (fold_plusminus_mult_expr): Do not fold
24796 i * 4 + 2 to (i * 2 + 1) * 2.
24797
24798 2009-04-01 Jakub Jelinek <jakub@redhat.com>
24799
24800 PR c/37772
24801 * c-parser.c (c_parser_asm_statement): Skip until close paren and
24802 return if c_parser_asm_string_literal returned NULL.
24803
24804 2009-04-01 Nick Clifton <nickc@redhat.com>
24805
24806 * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
24807 already defined.
24808 * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
24809 * config/m32c/m32c-lib2.c: Remove unused typedefs. Rename the
24810 other typedefs to avoid conflicts with libgcc2.c. Define labels
24811 to gain 16-bit bit-manipulation functions from libgcc2.c and then
24812 include it.
24813 * config/m32c/m32c-lib2-trapv.c: New file. Define labels
24814 to gain 16-bit trapping arithmetic functions from libgcc2.c and
24815 then include it.
24816
24817 2009-04-01 Rafael Avila de Espindola <espindola@google.com>
24818
24819 * varasm.c (default_function_rodata_section): Declare DOT as
24820 const char*.
24821
24822 2009-04-01 Kai Tietz <kai.tietz@onevision.com>
24823 Andrey Galkin <agalkin@hypercom.com>
24824
24825 PR/39492
24826 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
24827 Make object_name unique for each process.
24828
24829 2009-04-01 Jakub Jelinek <jakub@redhat.com>
24830
24831 PR other/39591
24832 * omp-low.c (remove_exit_barrier): Don't optimize if there are any
24833 addressable variables in the parallel that could go out of scope while
24834 running queued tasks.
24835
24836 2009-04-01 Anatoly Sokolov <aesok@post.ru>
24837
24838 * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
24839 (CASE_VALUES_THRESHOLD): Redefine.
24840 * config/avr/avr.c (avr_override_options): Remove initialization of
24841 avr_case_values_threshold variable.
24842 (avr_case_values_threshold): Remove variable. Add new function.
24843 * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
24844 * config/avr/avr.opt (mno-tablejump): Remove option.
24845 * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
24846
24847 2009-04-01 DJ Delorie <dj@redhat.com>
24848
24849 * varasm.c (default_function_rodata_section): Don't assume
24850 anything about where the first '.' in the section name is.
24851
24852 2009-04-01 Alan Modra <amodra@bigpond.net.au>
24853
24854 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
24855 rs6000_emit_stack_tie.
24856
24857 2009-03-31 Ian Lance Taylor <iant@google.com>
24858
24859 * tree-eh.c (tree_remove_unreachable_handlers): Compare
24860 gimple_code with GIMPLE_RESX, not RESX.
24861
24862 2009-03-31 Joseph Myers <joseph@codesourcery.com>
24863
24864 * c-common.c (c_get_ident): New.
24865 (c_common_nodes_and_builtins): Call it for type names that may be NULL.
24866
24867 2009-04-01 Ben Elliston <bje@au.ibm.com>
24868
24869 * config/rs6000/sysv4.opt (msdata): Improve option description.
24870
24871 2009-03-31 Steve Ellcey <sje@cup.hp.com>
24872
24873 * config/ia64/ia64.md (divsf3_internal_lat): Remove.
24874 (divdf3_internal_lat): Remove.
24875 (divxf3_internal_lat): Remove.
24876 (divxf3_internal_thr): Remove.
24877 (divxf): Use divxf3_internal.
24878 * config/ia64/div.md (divsf3_internal_lat): New.
24879 (divdf3_internal_lat): New.
24880 (divxf3_internal): New.
24881
24882 2009-03-31 Joseph Myers <joseph@codesourcery.com>
24883
24884 PR c/448
24885 * Makefile.in (USE_GCC_STDINT): Define.
24886 (stmp-int-hdrs): Install stdint.h if applicable.
24887 * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
24888 if known.
24889 (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
24890 (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
24891 UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24892 INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24893 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24894 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24895 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24896 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24897 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24898 (c_common_nodes_and_builtins): Initialize
24899 underlying_wchar_type_node. Do not initialize
24900 signed_wchar_type_node or unsigned_wchar_type_node. Initialize
24901 nodes for new types.
24902 (c_stddef_cpp_builtins): Define macros for new types.
24903 * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
24904 Remove.
24905 (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
24906 CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
24907 CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
24908 CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
24909 CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
24910 CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
24911 CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
24912 CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
24913 CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
24914 (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
24915 (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
24916 int16_type_node, int32_type_node, int64_type_node,
24917 uint8_type_node, uint16_type_node, c_uint32_type_node,
24918 c_uint64_type_node, int_least8_type_node, int_least16_type_node,
24919 int_least32_type_node, int_least64_type_node,
24920 uint_least8_type_node, uint_least16_type_node,
24921 uint_least32_type_node, uint_least64_type_node,
24922 int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
24923 int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
24924 uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
24925 uintptr_type_node): Define.
24926 * c-cppbuiltin.c (builtin_define_constants,
24927 builtin_define_type_minmax): New.
24928 (builtin_define_stdint_macros): Define more macros.
24929 (c_cpp_builtins): Define more limit macros.
24930 (type_suffix): New.
24931 (builtin_define_type_max): Define in terms of
24932 builtin_define_type_minmax. Remove is_long parameter. All
24933 callers changed.
24934 * config.gcc (use_gcc_stdint): Define.
24935 (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
24936 Add newlib-stdint.h for generic targets.
24937 * config/glibc-stdint.h, config/newlib-stdint.h,
24938 ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
24939 * config/m32c/m32c.h (UINTPTR_TYPE): Define.
24940 * config/score/score.h (UINTPTR_TYPE): Define.
24941 * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
24942 INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
24943 UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24944 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24945 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24946 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24947 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24948 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
24949 * config/spu/spu.h (STDINT_LONG32): Define.
24950 * configure.ac (use_gcc_stdint): Substitute.
24951 * configure: Regenerate.
24952 * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
24953 __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
24954 __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
24955 __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
24956 __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
24957 __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
24958 __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
24959 __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
24960 __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
24961 __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
24962 __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
24963 __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
24964 __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
24965 __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
24966 __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
24967 __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
24968 __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
24969 __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
24970 __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
24971 __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
24972 __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
24973 * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
24974 INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
24975 INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
24976 INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
24977 UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
24978 INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
24979 UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
24980 UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
24981
24982 2009-03-31 Bernd Schmidt <bernd.schmidt@analog.com>
24983
24984 * loop-iv.c (suitable_set_for_replacement): Renamed from
24985 simplify_using_assignment; changed to return bool and to accept new
24986 args DEST and SRC. Return true iff we find a source/destination pair
24987 that can be used to make a replacement, and fill SRC and DEST if so.
24988 Remove arg ALTERED. Don't deal with altered regs here. All callers
24989 changed.
24990 (simplify_using_initial_values): Deal with altered regs here and track
24991 more precisely the effect they have on the validity of our expression.
24992
24993 * loop-iv.c (simplify_using_condition): A condition of the form
24994 (EQ REG CONST) can be used to simply make a substitution.
24995 (simplify_using_initial_values): Keep track of conditions we have seen
24996 and keep using them to simplify new expressions, while applying the
24997 same substitutions to them as to the expression.
24998
24999 * simplify-rtx.c (simplify_relational_operation_1): Simplify
25000 (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
25001 GEU/LTU reversed.
25002
25003 * loop-iv.c (determine_max_iter): New arg OLD_NITER. All callers
25004 changed. Use this when trying to improve the upper bound.
25005 Generate the comparison by using simplify_gen_relational.
25006
25007 * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
25008
25009 * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
25010 functions.
25011 (simplify_using_assignment, simplify_using_initial_values): Call
25012 replace_in_expr to make replacements. Call replace_single_def_regs
25013 once on the initial version of the expression.
25014
25015 2009-03-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
25016
25017 PR target/27237
25018 * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
25019
25020 2009-03-31 Richard Guenther <rguenther@suse.de>
25021
25022 PR middle-end/31029
25023 * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
25024 equality comparisons. Fold C - X CMP X if C % 2 == 1.
25025
25026 2009-03-31 Richard Guenther <rguenther@suse.de>
25027
25028 * tree.h (div_if_zero_remainder): Declare.
25029 * fold-const.c (div_if_zero_remainder): Export.
25030 * tree-ssa-forwprop.c
25031 (forward_propagate_addr_into_variable_array_index): Handle
25032 constant array index addition outside of the variable index.
25033
25034 2009-03-31 Joseph Myers <joseph@codesourcery.com>
25035
25036 PR target/39592
25037 * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
25038 define_splits, floatunssi<mode>2): Require x87 conversions from
25039 DImode to be permitted.
25040
25041 2009-03-31 Joseph Myers <joseph@codesourcery.com>
25042
25043 PR preprocessor/15638
25044 * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
25045
25046 2009-03-31 Richard Guenther <rguenther@suse.de>
25047
25048 PR middle-end/23401
25049 PR middle-end/27810
25050 * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
25051 (struct tree_decl_with_vis): Remove gimple_formal_temp member.
25052 * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
25053 a separate statement.
25054 * gimplify.c (pop_gimplify_context): Remove formal temp handling.
25055 (lookup_tmp_var): Likewise.
25056 (is_gimple_formal_tmp_or_call_rhs): Remove.
25057 (is_gimple_reg_or_call_rhs): Rename to ...
25058 (is_gimple_reg_rhs_or_call): ... this.
25059 (is_gimple_mem_or_call_rhs): Rename to ...
25060 (is_gimple_mem_rhs_or_call): ... this.
25061 (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call. Set
25062 DECL_GIMPLE_REG_P only if is_formal is true.
25063 (gimplify_compound_lval): Use is_gimple_reg. Remove workaround
25064 for non-proper post-modify expression gimplification.
25065 (gimplify_self_mod_expr): For post-modify expressions gimplify
25066 the lvalue to a minimal lvalue.
25067 (rhs_predicate_for): Remove formal temp case.
25068 (gimplify_modify_expr_rhs): Likewise.
25069 (gimplify_addr_expr): Use is_gimple_reg.
25070 (gimplify_expr): Remove formal temp cases.
25071 (gimple_regimplify_operands): Likewise.
25072 * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
25073 and FILTER_EXPR like constants.
25074 * gimple.c (walk_gimple_op): Fix val_only initialization, use
25075 is_gimple_reg.
25076 (is_gimple_formal_tmp_rhs): Remove.
25077 (is_gimple_reg_rhs): Remove special casing.
25078 (is_gimple_mem_rhs): Fix.
25079 (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
25080 (is_gimple_formal_tmp_var): Remove.
25081 (is_gimple_formal_tmp_reg): Likewise.
25082 (is_gimple_min_lval): Allow invariant component ref parts.
25083 * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
25084 is_gimple_formal_tmp_reg): Remove declarations.
25085 * tree-cfg.c (verify_expr): Verify that variables with address
25086 taken do not have DECL_GIMPLE_REG_P set.
25087 * tree-mudflap.c (mf_build_check_statement_for): Use
25088 force_gimple_operand instead of gimplify_expr.
25089
25090 2009-03-31 Ayal Zaks <zaks@il.ibm.com>
25091
25092 * modulo-sched.c (sms_schedule_by_order): Pass the actual
25093 schedulable rows to compute_split_row.
25094
25095 2009-03-31 Ben Elliston <bje@au.ibm.com>
25096
25097 PR target/31635
25098 * config/rs6000/rs6000.c (rs6000_handle_option): Handle
25099 OPT_mvrsave.
25100
25101 2009-03-31 Alan Modra <amodra@bigpond.net.au>
25102
25103 * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
25104 * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
25105 * configure: Regenerate.
25106 * config.in: Regenerate.
25107 * config/rs6000/rs6000.opt (mtls-markers): Add.
25108 * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
25109 * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
25110 (tls_ld_aix, tls_ld_sysv): Likewise.
25111 (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
25112 (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
25113
25114 2009-03-31 Alan Modra <amodra@bigpond.net.au>
25115
25116 * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
25117
25118 2009-03-30 Jan Hubicka <jh@suse.cz>
25119
25120 * tree-eh.c (make_eh_edges): Set probability 100% to first edge
25121 out of RESX.
25122 (tree_remove_unreachable_handlers): Cleanup EH predecestor
25123 detection and label handling.
25124
25125 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
25126
25127 * ira-int.h (ira_allocno): Rename left_conflicts_num to
25128 left_conflicts_size.
25129 (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
25130 ALLOCNO_LEFT_CONFLICTS_SIZE.
25131
25132 * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
25133 remove_allocno_from_bucket_and_push,
25134 allocno_spill_priority_compare, push_allocnos_to_stack,
25135 setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
25136 instead of ALLOCNO_LEFT_CONFLICTS_NUM.
25137 (setup_allocno_left_conflicts_num): Ditto. Rename to
25138 setup_allocno_left_conflicts_size.
25139 (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
25140 instead of ALLOCNO_LEFT_CONFLICTS_NUM and
25141 setup_allocno_left_conflicts_size instead of
25142 setup_allocno_left_conflicts_num.
25143
25144 * ira-build.c (ira_create_allocno): Use
25145 ALLOCNO_LEFT_CONFLICTS_SIZE instead of
25146 ALLOCNO_LEFT_CONFLICTS_NUM.
25147
25148 2009-03-30 Vladimir Makarov <vmakarov@redhat.com>
25149
25150 * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
25151 instead of DF_LR_OUT.
25152
25153 * ira-lives.c (process_bb_node_lives): Ditto.
25154
25155 * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
25156 instead of DF_LR_{OUT,IN}.
25157
25158 * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
25159
25160 * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
25161
25162 2009-03-30 Jan Hubicka <jh@suse.cz>
25163
25164 * except.c (label_to_region_map): Fix thinko.
25165
25166 2009-03-30 Steve Ellcey <sje@cup.hp.com>
25167
25168 PR middle-end/38237
25169 * tree.h (tree_find_value): New declaration.
25170 * tree.c (tree_find_value): New function.
25171 * varasm.c (assemble_external): Avoid duplicate entries on lists.
25172
25173 2009-03-30 Jakub Jelinek <jakub@redhat.com>
25174
25175 PR debug/39563
25176 * c-decl.c (struct c_binding): Add locus field.
25177 (bind): Add locus argument, set locus field from it.
25178 (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
25179 add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
25180 (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
25181 implicitly_declare, undeclared_variable, lookup_label,
25182 declare_label, c_make_fname_decl, c_builtin_function,
25183 c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
25184 bind callers.
25185
25186 2009-03-30 H.J. Lu <hongjiu.lu@intel.com>
25187
25188 PR target/38781
25189 * config/i386/i386.c (classify_argument): Check total size of
25190 structure.
25191
25192 2009-03-30 Martin Jambor <mjambor@suse.cz>
25193
25194 * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
25195 IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
25196 IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
25197 respectively.
25198
25199 * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
25200 seen_variable_array_ref while also traversing a union.
25201
25202 * tree-inline.c (optimize_inline_calls): Do not call
25203 cgraph_node_remove_callees.
25204 * cgraphbuild.c (remove_cgraph_callee_edges): New function.
25205 (pass_remove_cgraph_callee_edges): New variable.
25206 * passes.c (init_optimization_passes): Add
25207 pass_remove_cgraph_callee_edges after early inlining and before all
25208 late intraprocedural passes.
25209
25210 * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
25211
25212 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25213
25214 * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
25215 Fix typos in names.
25216
25217 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25218
25219 * combine.c (simplify_comparison): Use have_insn_for.
25220 * dojump.c (do_jump): Likewise.
25221
25222 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25223
25224 * config/sparc/sparc.c (sparc_compare_emitted): Remove.
25225 (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
25226 sparc_compare_op0 like sparc_compare_emitted used to be handled.
25227 (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
25228 instead of sparc_compare_emitted.
25229 * config/sparc/sparc.h (sparc_compare_emitted): Remove.
25230 * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
25231 instead of sparc_compare_emitted.
25232
25233 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25234
25235 * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
25236 enter/exit cfglayout mode.
25237 (pass_partition_block): Require it.
25238 * combine.c (find_single_use, reg_dead_at_p): Use CFG.
25239 (combine_instructions): Track basic blocks instead of labels.
25240 (update_cfg_for_uncondjump): New.
25241 (try_combine): Use it. Update jumps after rescanning.
25242 (pass_combine): Require PROP_cfglayout.
25243 * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
25244
25245 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25246
25247 * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
25248 Provide/destroy PROP_cfglayout respectively.
25249 * gcse.c (pass_jump_bypass, pass_gcse): Require it.
25250 * tree-pass.h (PROP_cfglayout): New.
25251
25252 2009-03-30 Paolo Bonzini <bonzini@gnu.org>
25253
25254 * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
25255 fold_convert_const_fixed_from_fixed,
25256 fold_convert_const_fixed_from_int,
25257 fold_convert_const_fixed_from_real, fold_negate_const): Do not
25258 set TREE_CONSTANT_OVERFLOW.
25259 * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
25260 * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
25261
25262 2009-03-30 Ira Rosen <irar@il.ibm.com>
25263
25264 * tree-vect-loop-manip.c: New file.
25265 * tree-vectorizer.c: Update documentation and included files.
25266 (vect_loop_location): Make extern.
25267 (rename_use_op): Move to tree-vect-loop-manip.c
25268 (rename_variables_in_bb, rename_variables_in_loop,
25269 slpeel_update_phis_for_duplicate_loop,
25270 slpeel_update_phi_nodes_for_guard1,
25271 slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
25272 slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
25273 slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
25274 set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
25275 find_loop_location): Likewise.
25276 (new_stmt_vec_info): Move to tree-vect-stmts.c.
25277 (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
25278 get_vectype_for_scalar_type, vect_is_simple_use,
25279 supportable_widening_operation, supportable_narrowing_operation):
25280 Likewise.
25281 (bb_in_loop_p): Move to tree-vect-loop.c.
25282 (new_loop_vec_info, destroy_loop_vec_info,
25283 reduction_code_for_scalar_code, report_vect_op,
25284 vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
25285 (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
25286 (vect_supportable_dr_alignment): Likewise.
25287 * tree-vectorizer.h (tree-data-ref.h): Include.
25288 (vect_loop_location): Declare.
25289 Reorganize function declarations according to the new file structure.
25290 * tree-vect-loop.c: New file.
25291 * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
25292 tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
25293 * tree-vect-data-refs.c: New file.
25294 * tree-vect-patterns.c (timevar.h): Don't include.
25295 * tree-vect-stmts.c: New file.
25296 * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
25297 tree-vect-slp.c, tree-vect-loop.c.
25298 * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
25299 tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
25300 tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
25301 (tree-vect-analyze.o): Remove.
25302 (tree-vect-transform.o): Likewise.
25303 (tree-vect-data-refs.o): Add rule.
25304 (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
25305 tree-vect-slp.o): Likewise.
25306 (tree-vect-patterns.o): Remove redundant dependencies.
25307 (tree-vectorizer.o): Likewise.
25308 * tree-vect-slp.c: New file.
25309
25310 2009-03-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25311
25312 * optc-gen.awk: Warn if an option flag has multiple different
25313 help strings.
25314
25315 2009-03-30 Sebastian Pop <sebastian.pop@amd.com>
25316
25317 * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
25318 -floop-block): Document dependences on PPL, CLooG and Graphite.
25319
25320 2009-03-30 Joseph Myers <joseph@codesourcery.com>
25321
25322 PR rtl-optimization/323
25323 * c-common.c (c_fully_fold, convert_and_check,
25324 c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
25325 (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
25326 * c-common.def (EXCESS_PRECISION_EXPR): New.
25327 * c-cppbuiltin.c (builtin_define_float_constants): Define
25328 constants with enough digits for long double.
25329 * c-lex.c (interpret_float): Interpret constant with excess
25330 precision where appropriate.
25331 * c-opts.c (c_common_post_options): Set
25332 flag_excess_precision_cmdline. Give an error for
25333 -fexcess-precision=standard for C++ for processors where the
25334 option is significant.
25335 * c-parser.c (c_parser_conditional_expression): Handle excess
25336 precision in condition.
25337 * c-typeck.c (convert_arguments): Handle arguments with excess
25338 precision.
25339 (build_unary_op): Move excess precision outside operation.
25340 (build_conditional_expr): Likewise.
25341 (build_compound_expr): Likewise.
25342 (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
25343 (build_modify_expr): Handle excess precision in RHS.
25344 (convert_for_assignment): Handle excess precision in converted
25345 value.
25346 (digest_init, output_init_element, process_init_element): Handle
25347 excess precision in initializer.
25348 (c_finish_return): Handle excess precision in return value.
25349 (build_binary_op): Handle excess precision in operands and add
25350 excess precision as needed for operation.
25351 * common.opt (-fexcess-precision=): New option.
25352 * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
25353 * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
25354 For standard excess precision, output explicit conversion to and
25355 truncation from XFmode.
25356 (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
25357 *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
25358 *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
25359 define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
25360 define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
25361 floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
25362 divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
25363 *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
25364 *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
25365 define_splits, sqrt<mode>2): Disable where appropriate for
25366 standard excess precision.
25367 * convert.c (convert_to_real): Do not shorten arithmetic to type
25368 for which excess precision would be used.
25369 * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
25370 * doc/invoke.texi (-fexcess-precision=): Document option.
25371 (-mfpmath=): Correct index entry.
25372 * flags.h (enum excess_precision, flag_excess_precision_cmdline,
25373 flag_excess_precision): New.
25374 * langhooks.c (lhd_post_options): Set
25375 flag_excess_precision_cmdline.
25376 * opts.c (common_handle_option): Handle -fexcess-precision=.
25377 * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
25378 init_excess_precision): New.
25379 (lang_dependent_init_target): Call init_excess_precision.
25380 * tree.c (excess_precision_type): New.
25381 * tree.h (excess_precision_type): Declare.
25382
25383 2009-03-30 Joseph Myers <joseph@codesourcery.com>
25384
25385 PR c/35235
25386 * c-typeck.c (build_component_ref): Do not copy qualifiers from
25387 non-lvalue to component.
25388
25389 2009-03-29 Joseph Myers <joseph@codesourcery.com>
25390
25391 PR preprocessor/34695
25392 * Makefile.in (c-opts.o): Depend on c-tree.h.
25393 * c-common.c: Move down include of diagnostic.h.
25394 (done_lexing, c_cpp_error): New.
25395 * c-common.h (done_lexing): Declare.
25396 * c-decl.c (c_write_global_declarations): Don't check cpp_errors
25397 (parse_in).
25398 * c-opts.c: Include c-tree.h.
25399 (c_common_init_options): Set preprocessor error callback.
25400 (c_common_handle_option): Do not set preprocessor
25401 inhibit_warnings, warnings_are_errors, warn_system_headers,
25402 pedantic_errors or inhibit_warnings flags.
25403 (c_common_post_options): Do not check cpp_errors (parse_in).
25404 (c_common_finish): Do not output dependencies if there were
25405 errors. Do not check return value of cpp_finish.
25406 * c-ppoutput.c (pp_file_change): Set input_location.
25407 * c-tree.h (c_cpp_error): Declare.
25408 * diagnostic.c (diagnostic_set_info_translated): Also initialize
25409 override_column.
25410 (diagnostic_build_prefix): Check override_column.
25411 * diagnostic.h (diagnostic_info): Add override_column field.
25412 (diagnostic_override_column): Define.
25413
25414 2009-03-28 Paolo Bonzini <bonzini@gnu.org>
25415
25416 * c-common.c (c_expand_expr, c_staticp): Remove.
25417 * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
25418 * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
25419 COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
25420 * c-gimplify.c (gimplify_compound_literal_expr,
25421 optimize_compound_literals_in_ctor): Remove.
25422 (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
25423 * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
25424 * c-semantics.c (emit_local_var): Remove.
25425
25426 * langhooks-def.h (lhd_expand_expr): Remove.
25427 * langhooks.c (lhd_expand_expr): Remove.
25428 * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
25429
25430 * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
25431 handling from c-semantics.c; don't call into langhook.
25432 (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
25433 * gimplify.c (gimplify_compound_literal_expr,
25434 optimize_compound_literals_in_ctor): Move from c-gimplify.c.
25435 (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
25436 (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
25437 as was done in c-gimplify.c.
25438 * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
25439 * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
25440 Move from c-common.h.
25441 * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
25442
25443 * tree.c (staticp): Do not call langhook.
25444 * langhooks.c (lhd_staticp): Delete.
25445 * langhooks-def.h (lhd_staticp): Delete prototype.
25446 (LANG_HOOKS_STATICP): Delete.
25447 (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
25448
25449 * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
25450 instead of DECL_STMTs.
25451
25452 2009-03-29 Joseph Myers <joseph@codesourcery.com>
25453
25454 PR c/456
25455 PR c/5675
25456 PR c/19976
25457 PR c/29116
25458 PR c/31871
25459 PR c/35198
25460 * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
25461 void_type_node.
25462 (fold_call_expr): Return a NOP_EXPR from folding rather than the
25463 contained expression.
25464 * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
25465 (c_common_truthvalue_conversion): Use c_save_expr. Do not fold
25466 conditional expressions for C.
25467 (decl_constant_value_for_optimization): Move from
25468 decl_constant_value_for_broken_optimization in c-typeck.c. Check
25469 whether optimizing and that the expression is a VAR_DECL not of
25470 array type instead of doing such checks in the caller. Do not
25471 check pedantic. Call gcc_unreachable for C++.
25472 * c-common.def (C_MAYBE_CONST_EXPR): New.
25473 * c-common.h (c_fully_fold, c_save_expr,
25474 decl_constant_value_for_optimization): New prototypes.
25475 (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
25476 C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
25477 EXPR_INT_CONST_OPERANDS): Define.
25478 * c-convert.c (convert): Strip nops from expression.
25479 * c-decl.c (groktypename): Take extra parameters expr and
25480 expr_const_operands. Update call to grokdeclarator.
25481 (start_decl): Update call to grokdeclarator. Add statement for
25482 expressions used in type of decl.
25483 (grokparm): Update call to grokdeclarator.
25484 (push_parm_decl): Update call to grokdeclarator.
25485 (build_compound_literal): Add parameter non_const and build a
25486 C_MAYBE_COSNT_EXPR if applicable.
25487 (grokdeclarator): Take extra parameters expr and
25488 expr_const_operands. Track expressions used in declaration
25489 specifiers and declarators. Fold array sizes and track whether
25490 they are constant expressions and whether they are integer
25491 constant expressions.
25492 (parser_xref_tag): Set expr and expr_const_operands fields in
25493 return value.
25494 (grokfield): Update call to grokdeclarator.
25495 (start_function): Update call to grokdeclarator.
25496 (build_null_declspecs): Set expr and expr_const_operands fields in
25497 return value.
25498 (declspecs_add_type): Handle expressions in typeof specifiers.
25499 * c-parser.c (c_parser_declspecs): Set expr and
25500 expr_const_operands fields for declaration specifiers.
25501 (c_parser_enum_specifier): Likewise.
25502 (c_parser_struct_or_union_specifier): Likewise.
25503 (c_parser_typeof_specifier): Likewise. Update call to
25504 groktypename. Fold expression as needed. Return expressions with
25505 type instead of adding statements.
25506 (c_parser_attributes): Update calls to c_parser_expr_list.
25507 (c_parser_statement_after_labels): Fold expression before passing
25508 to objc_build_throw_stmt.
25509 (c_parser_condition): Fold expression.
25510 (c_parser_asm_operands): Fold expression.
25511 (c_parser_conditional_expression): Use c_save_expr. Update call
25512 to build_conditional_expr.
25513 (c_parser_alignof_expression): Update call to groktypename.
25514 (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
25515 original_code. Fold expression argument of va_arg. Create
25516 C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
25517 argument to va_arg. Update calls to groktypename. Fold array
25518 index for offsetof. Verify that first argument to
25519 __builtin_choose_expr has integer type.
25520 (c_parser_postfix_expression_after_paren_type): Update calls to
25521 groktypename and build_compound_literal. Handle expressions with
25522 side effects in type name.
25523 (c_parser_postfix_expression_after_primary): Update call to
25524 c_parser_expr_list. Set original_code for calls to
25525 __builtin_constant_p.
25526 (c_parser_expr_list): Take extra parameter fold_p. Fold
25527 expressions if requested.
25528 (c_parser_objc_type_name): Update call to groktypename.
25529 (c_parser_objc_synchronized_statement): Fold expression.
25530 (c_parser_objc_receiver): Fold expression.
25531 (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
25532 (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
25533 c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
25534 * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
25535 (struct c_typespec): Add elements expr and expr_const_operands.
25536 (struct c_declspecs): Add elements expr and expr_const_operands.
25537 (groktypename, build_conditional_expr, build_compound_literal):
25538 Update prototypes.
25539 (in_late_binary_op): Declare.
25540 * c-typeck.c (note_integer_operands): New function.
25541 (in_late_binary_op): New variable.
25542 (decl_constant_value_for_broken_optimization): Move to c-common.c
25543 and rename to decl_constant_value_for_optimization.
25544 (default_function_array_conversion): Do not strip nops.
25545 (default_conversion): Do not call
25546 decl_constant_value_for_broken_optimization.
25547 (build_array_ref): Do not fold result.
25548 (c_expr_sizeof_expr): Fold operand. Use C_MAYBE_CONST_EXPR for
25549 result when operand is a VLA.
25550 (c_expr_sizeof_type): Update call to groktypename. Handle
25551 expressions included in type name. Use C_MAYBE_CONST_EXPR for
25552 result when operand names a VLA type.
25553 (build_function_call): Update call to build_compound_literal.
25554 Only fold result for calls to __builtin_* functions. Strip
25555 NOP_EXPR from INTEGER_CST returned from such functions. Fold
25556 the function designator.
25557 (convert_arguments): Fold arguments. Update call to
25558 convert_for_assignment.
25559 (build_unary_op): Handle increment and decrement of
25560 C_MAYBE_CONST_EXPR. Move lvalue checks for increment and
25561 decrement earlier. Fold operand of increment and decrement.
25562 Handle address of C_MAYBE_CONST_EXPR. Only fold expression being
25563 built for integer operand. Wrap returns that are INTEGER_CSTs
25564 without being integer constant expressions or that have integer
25565 constant operands without being INTEGER_CSTs.
25566 (lvalue_p): Handle C_MAYBE_CONST_EXPR.
25567 (build_conditional_expr): Add operand ifexp_bcp. Track whether
25568 result is an integer constant expression or can be used in
25569 unevaluated parts of one and avoid folding and wrap as
25570 appropriate. Fold operands before possibly doing -Wsign-compare
25571 warnings.
25572 (build_compound_expr): Wrap result for C99 if operands can be used
25573 in integer constant expressions.
25574 (build_c_cast): Update call to digest_init. Do not ignore
25575 overflow from casting floating-point constants to integers. Wrap
25576 results that could be confused with integer constant expressions,
25577 null pointer constants or floating-point constants.
25578 (c_cast_expr): Update call to groktypename. Handle expressions
25579 included in type name.
25580 (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR. Fold
25581 lhs inside possible SAVE_EXPR. Fold RHS before assignment.
25582 Update calls to convert_for_assignment.
25583 (convert_for_assignment): Take new parameter
25584 null_pointer_constant. Do not strip nops or call
25585 decl_constant_value_for_broken_optimization. Set
25586 in_late_binary_op for conversions to boolean.
25587 (store_init_value): Update call to digest_init.
25588 (digest_init): Take new parameter null_pointer_constant. Do not
25589 call decl_constant_value_for_broken_optimization. pedwarn for
25590 initializers not constant expressions. Update calls to
25591 convert_for_assignment.
25592 (constructor_nonconst): New.
25593 (struct constructor_stack): Add nonconst element.
25594 (really_start_incremental_init, push_init_level, pop_init_level):
25595 Handle constructor_nonconst and nonconst element.
25596 (set_init_index): Call constant_expression_warning for array
25597 designators.
25598 (output_init_element): Fold value. Set constructor_nonconst as
25599 applicable. pedwarn for initializers not constant expressions.
25600 Update call to digest_init. Call constant_expression_warning
25601 where constant initializers are required.
25602 (process_init_element): Use c_save_expr.
25603 (c_finish_goto_ptr): Fold expression.
25604 (c_finish_return): Fold return value. Update call to
25605 convert_for_assignment.
25606 (c_start_case): Fold switch expression.
25607 (c_process_expr_stmt): Fold expression.
25608 (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
25609 ensure statement expression is not evaluated in constant expression.
25610 (build_binary_op): Track whether results are integer constant
25611 expressions or may occur in such, disable folding and wrap results
25612 as applicable. Fold operands for -Wsign-compare warnings unless
25613 in_late_binary_op.
25614 (c_objc_common_truthvalue_conversion): Handle results folded to
25615 integer constants that are not integer constant expressions.
25616 * doc/extend.texi: Document when typeof operands are evaluated,
25617 that condition of __builtin_choose_expr is an integer constant
25618 expression, and more about use of __builtin_constant_p in
25619 initializers.
25620
25621 2009-03-29 Richard Guenther <rguenther@suse.de>
25622
25623 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
25624 propagate addresses of array references.
25625
25626 2009-03-29 Steven Bosscher <steven@gcc.gnu.org>
25627
25628 * regmove.c (perhaps_ends_bb_p): Remove.
25629 (optimize_reg_copy_1): Don't call perhaps_ends_bb_p. Get basic block
25630 from INSN and check that the main loop stays within that basic block.
25631 (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
25632 (regmove_forward_pass): Split out from regmove_optimize. Use
25633 FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
25634 (regmove_backward_pass): Split out from regmove_optimize. Use
25635 FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
25636 (regmove_optimize): Simplify.
25637
25638 2009-03-29 H.J. Lu <hongjiu.lu@intel.com>
25639
25640 PR target/39545
25641 * config/i386/i386.c (classify_argument): Ignore flexible array
25642 member in struct and warn ABI change.
25643
25644 2009-03-29 H.J. Lu <hongjiu.lu@intel.com>
25645
25646 * config/i386/i386-protos.h (ix86_agi_dependent): New.
25647
25648 * config/i386/i386.c (ix86_agi_dependent): Rewrite.
25649 (ix86_adjust_cost): Updated.
25650
25651 2009-03-29 Jan Hubicka <jh@suse.cz>
25652
25653 PR middle-end/28850
25654 * tree-pass.h (pass_cleanup_eh): New function.
25655 (remove_unreachable_regions): Break code handling RTL
25656 to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
25657 that can not be reached by runtime.
25658 (can_be_reached_by_runtime): New function.
25659 (label_to_region_map): New function.
25660 (num_eh_regions): New function.
25661 (rtl_remove_unreachable_regions): New function.
25662 (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
25663 (remove_eh_region): New function.
25664 * except.h: Include sbitmap and vecprim.
25665 (remove_eh_region, remove_unreachable_regions, label_to_region_map,
25666 num_eh_regions): Declare.
25667 * passes.c (init_optimization_passes): Schedule cleanup_eh.
25668 * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
25669 * tree-eh.c (tree_remove_unreachable_handlers): New function.
25670 (tree_empty_eh_handler_p): New function.
25671 (cleanup_empty_eh): New function.
25672 (cleanup_eh): New function.
25673 (pass_cleanup_eh): New function.
25674
25675 2009-03-29 Jan Hubicka <jh@suse.cz>
25676
25677 * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
25678 for removed regions.
25679
25680 2009-03-29 Jan Hubicka <jh@suse.cz>
25681
25682 * except.c (dump_eh_tree): Dump all datastructures.
25683
25684 2009-03-29 Jan Hubicka <jh@suse.cz>
25685
25686 * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
25687 (duplicate_eh_regions_1): Likewise.
25688 (duplicate_eh_regions): Likewise; cleanup code gorwing the region
25689 vector; call EH verification.
25690 (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25691 Be ready for region being removed.
25692
25693 2009-03-29 Jan Hubicka <jh@suse.cz>
25694
25695 * bitmap.c (bitmap_last_set_bit): New function.
25696 * bitmap.h (bitmap_last_set_bit): Declare.
25697
25698 2009-03-29 David Ayers <ayers@fsfe.org>
25699
25700 PR objc/27377
25701 * c-typeck.c (build_conditional_expr): Emit ObjC warnings
25702 by calling objc_compare_types and surpress warnings about
25703 incompatible C pointers that are compatible ObjC pointers.
25704
25705 2009-03-29 Adam Nemet <anemet@caviumnetworks.com>
25706
25707 * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
25708 call initialize_inline_failed.
25709 (initialize_inline_failed): Move it from here ...
25710 * cgraph.c (initialize_inline_failed): ... to here.
25711 (cgraph_create_edge): Call initialize_inline_failed rather than
25712 setting inline_failed directly.
25713
25714 2009-03-29 Ben Elliston <bje@au.ibm.com>
25715
25716 PR target/32542
25717 * sysv4.opt (msdata): Improve comment.
25718 * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
25719 * sysv4.h (SVR4_ASM_SPEC): Likewise.
25720
25721 2009-03-29 Ben Elliston <bje@au.ibm.com>
25722
25723 PR target/30451
25724 * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
25725 load and store attributes.
25726
25727 2009-03-29 Ben Elliston <bje@au.ibm.com>
25728
25729 * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
25730 (ix86_init_builtins): Add built-in function __builtin_huge_valq.
25731 (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
25732 * doc/extend.texi (X86 Built-in Functions): Add index entries for
25733 __builtin_infq and __builtin_huge_valq.
25734
25735 2009-03-28 Anatoly Sokolov <aesok@post.ru>
25736
25737 * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
25738 atmega8m1 devices.
25739 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25740 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
25741
25742 2009-03-28 Xinliang David Li <davidxl@google.com>
25743
25744 * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
25745 (do_dbg_cnt): New function.
25746
25747 2009-03-28 Jan Hubicka <jh@suse.cz>
25748
25749 Merge from pretty-ipa:
25750
25751 2009-03-27 Jan Hubicka <jh@suse.cz>
25752
25753 * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25754 * tree-pass.h (function_called_by_processed_nodes_p): Declare.
25755 * passes.c (function_called_by_processed_nodes_p): New.
25756 * ipa-pure-const.c (check_call): Fix handling of operands.
25757 (analyze_function): Dump debug output for skipped bodies.
25758 (local_pure_const): Use function_called_by_processed_nodes_p.
25759 * dwarf2out.c (reference_to_unused): Use output.
25760 * passes.c (do_per_function_toporder): Likewise.
25761
25762 2008-11-12 Jan Hubicka <jh@suse.cz>
25763
25764 * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
25765 * ipa-pure-const.c (funct_state_d): Add can throw field; make
25766 state_set_in_source enum
25767 (check_decl): Ignore memory tags; do not set fake looping flags;
25768 dump diagnostics.
25769 (check_operand, check_tree, check_rhs_var, check_lhs_var,
25770 get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
25771 (check_call, analyze_function): Rewrite.
25772 (check_stmt): New.
25773 (add_new_function): Update call of analyze_function.
25774 (generate_summary): Add call of analyze_function.
25775 (propagate): Propagate can_throw; handle state_set_in_source correctly.
25776 (local_pure_const): New function.
25777 (pass_local_pure_const): New pass.
25778 * ipa-inline.c (inline_transform): Set after_inlining.
25779 * tree-eh.c (stmt_can_throw_external): New.
25780 * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
25781 work with aliasing built.
25782 * tree-flow.h (stmt_can_throw_external): New.
25783 * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
25784 and local pure/const pass in early and late optimization queue.
25785
25786 2009-03-28 Martin Jambor <mjambor@suse.cz>
25787
25788 * fold-const.c (get_pointer_modulus_and_residue): New parameter
25789 allow_func_align.
25790 (fold_binary): Allow function decl aligment consideration is the
25791 second argument is integer constant one.
25792 * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
25793 (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
25794 with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
25795
25796 2009-03-28 Jan Hubicka <jh@suse.cz>
25797
25798 * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
25799 * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
25800 * function.h (rtl_data): Add nothrow flag.
25801 * except.c (set_nothrow_function_flags): Use crtl->nothrow;
25802 set DECL_NOTHROW for AVAILABLE functions.
25803
25804 2009-03-28 Jakub Jelinek <jakub@redhat.com>
25805
25806 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
25807 following vector keyword has expansion starting with pixel or bool
25808 keyword, expand vector to __vector and pixel or bool to __pixel or
25809 __bool.
25810
25811 PR c++/39554
25812 * opts.c (warning_disallowed_functions, warn_disallowed_functions,
25813 warn_if_disallowed_function_p): Removed.
25814 (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
25815 * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
25816 warning_if_disallowed_function_p.
25817 * flags.h (warn_if_disallowed_function_p,
25818 warn_disallowed_functions): Removed.
25819 * common.opt (Wdisallowed-function-list=): Removed.
25820 * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
25821
25822 2009-03-28 Richard Guenther <rguenther@suse.de>
25823
25824 PR tree-optimization/38723
25825 * tree-ssa-pre.c (compute_avail): Add all default definitions to
25826 the entry block.
25827
25828 2009-03-28 Jan Hubicka <jh@suse.cz>
25829
25830 * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
25831 test introduced by my previous patch.
25832
25833 2009-03-28 Richard Guenther <rguenther@suse.de>
25834
25835 * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
25836 the PHIs value undefined.
25837
25838 2009-03-28 Jan Hubicka <jh@suse.cz>
25839
25840 * tree-pass.h (pass_fixup_cfg): New pass.
25841 * ipa-inline.c (inline_transform): Set
25842 always_inline_functions_inlined/after_inlining.
25843 * tree-optimize.c (execute_fixup_cfg): Do not set them here.
25844 (pass_fixup_cfg): New pass.
25845 * passes.c (init_optimization_passes): Add fixup_cfg.
25846
25847 2009-03-28 Richard Guenther <rguenther@suse.de>
25848
25849 PR tree-optimization/38458
25850 * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
25851 argument use the arguments copy-of value.
25852
25853 2009-03-28 Richard Guenther <rguenther@suse.de>
25854
25855 PR tree-optimization/38180
25856 * tree-ssa-ccp.c (get_default_value): Simplify.
25857 (likely_value): Likewise.
25858 (surely_varying_stmt_p): Properly handle VOP case.
25859 (ccp_initialize): Likewise.
25860 (ccp_fold): Handle propagating through *&.
25861 (fold_const_aggregate_ref): Also handle decls.
25862
25863 2009-03-28 Jan Hubicka <jh@suse.cz>
25864
25865 * cgraph.c (dump_cgraph_node): Add replace output flag by process.
25866 * cgraph.h (cgraph_node): Likewise.
25867 * cgraphunit.c (cgraph_process_new_functions): Set process flag.
25868 (cgraph_reset_node): Use process flag.
25869 (cgraph_mark_functions_to_output): Likewise.
25870 (cgraph_expand_function): Likewise.
25871 (cgraph_expand_all_functions): Likewise.
25872 (cgraph_output_in_order): Likewise.
25873 * dwarf2out.c (reference_to_unused): Likewise.
25874 * passes.c do_per_function_toporder): Likewise.
25875
25876 2009-03-28 Jan Hubicka <jh@suse.cz>
25877
25878 Bring from lto-branch:
25879
25880 2008-09-03 Doug Kwan <dougkwan@google.com>
25881
25882 * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
25883 enums instead of reason strings.
25884 * cgraph.c (cgraph_create_edge): Same.
25885 (cgraph_inline_failed_string): New function.
25886 * cgraph.h (cgraph_inline_failed_t): New enum type.
25887 (cgraph_inline_failed_string): New prototype.
25888 (struct cgraph_edge): Change type of INLINED_FAILED from constant
25889 char pointer to cgraph_inline_failed_t.
25890 (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
25891 (cgraph_default_inline_p): Ditto.
25892 * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
25893 to cgraph_inline_failed_t pointer.
25894 * cif-code.def: New file.
25895 * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
25896 reason string.
25897 (cgraph_check_inline_limits): Change type of REASON to pointer to
25898 cgraph_inline_failed_t. Replace reason strings with enums.
25899 (cgraph_default_inline_p): Ditto.
25900 (cgraph_recursive_inlining_p): Ditto.
25901 (update_caller_keys): Change type of FAILED_REASON to
25902 cgraph_inline_failed_t.
25903 (cgraph_set_inline_failed): Change type of REASON to pointer to
25904 cgraph_inline_failed_t. Call cgraph_inline_failed_string to
25905 convert enums to strings for text output.
25906 (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
25907 to be of type cgraph_inline_failed_t. Replace reason strings with
25908 enums. Call cgraph_inline_failed_string to covert enums
25909 to strings for text output.
25910 (cgraph_decide_inlining): Replace reason strings with enums.
25911 (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
25912 to cgraph_inline_failed_t type. Call cgraph_inline_failed_string
25913 for text output.
25914 * tree-inline.c (expand_call_inline): Change type of REASON
25915 to cgraph_inline_failed_t. Replace reason strings with enums.
25916 Call cgraph_inline_failed_string for text output.
25917 * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
25918 (cgraph.o): Ditto.
25919
25920 2009-03-28 Jan Hubicka <jh@suse.cz>
25921
25922 * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
25923 cgraph_clone_node): Remove master clone handling.
25924 (cgraph_is_master_clone, cgraph_master_clone): Remove.
25925 * cgraph.h (master_clone): Remove.
25926 (cgraph_is_master_clone, cgraph_master_clone): Remove.
25927 * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
25928 (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
25929
25930 2009-03-28 Jan Hubicka <jh@suse.cz>
25931
25932 * cgraph.c (cgraph_function_body_availability): Functions declared
25933 inline are always safe to assume that it is not going to be replaced.
25934
25935 2009-03-28 Richard Guenther <rguenther@suse.de>
25936
25937 PR tree-optimization/38513
25938 * tree-ssa-pre.c (eliminate): Remove redundant stores.
25939 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
25940 EXC_PTR_EXPR and FILTER_EXPR.
25941 (get_ref_from_reference_ops): Likewise.
25942
25943 2009-03-28 Richard Guenther <rguenther@suse.de>
25944
25945 PR tree-optimization/38968
25946 * tree-vect-analyze.c (vect_compute_data_ref_alignment):
25947 Use FLOOR_MOD_EXPR to compute misalignment.
25948
25949 2009-03-28 Richard Guenther <rguenther@suse.de>
25950
25951 PR tree-optimization/37795
25952 * tree.h (combine_comparisons): Declare.
25953 * fold-const.c (combine_comparisons): Export.
25954 * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
25955 comparisons.
25956 (ifcombine_iforif): Use combine_comparisons.
25957
25958 2009-03-28 Jan Hubicka <jh@suse.cz>
25959
25960 * tree-eh.c (inlinable_call_p): New function.
25961 (make_eh_edges): Use it.
25962 (verify_eh_edges): Use it.
25963 (stmt_can_throw_external, stmt_can_throw_internal): Use it.
25964 * except.c (reachable_next_level): Add inlinable_function argument
25965 (sjlj_find_directly_reachable_regions): Update.
25966 (add_reachable_handler): Do not set saw_any_handlers.
25967 (reachable_next_level): Handle MUST_NOT_THROW more curefully.
25968 (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
25969 Add new inlinable call parameter.
25970 (can_throw_internal, can_throw_external): Update.
25971 * except.h (can_throw_internal_1, can_throw_external_1,
25972 foreach_reachable_handler): Update declaration.
25973
25974 2009-03-28 Joseph Myers <joseph@codesourcery.com>
25975
25976 * config/arm/t-arm-coff, config/h8300/coff.h,
25977 config/i386/i386-aout.h, config/i386/i386-coff.h,
25978 config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
25979 config/pdp11/2bsd.h, config/rs6000/aix41.h,
25980 config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
25981 fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
25982 scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
25983 sys-types.h: Remove.
25984 * Makefile.in: Remove protoize and fixproto support and references
25985 in comments.
25986 (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
25987 PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
25988 Remove.
25989 (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
25990 (MOSTLYCLEANFILES): Remove protoize$(exeext) and
25991 unprotoize$(exeext).
25992 (rest.encap): Don't depend on $(STMP_FIXPROTO)
25993 (.PHONY): Don't depend on proto.
25994 (libgcc-support): Don't depend on $(STMP_FIXPROTO).
25995 (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
25996 protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
25997 deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
25998 build/gen-protos.o, build/scan.o, xsys-protos.h,
25999 build/fix-header$(build_exeext), build/fix-header.o,
26000 build/scan-decls.o, fixhdr.ready, stmp-fixproto,
26001 stmp-install-fixproto): Remove.
26002 (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
26003 SYSCALLS.c or fixproto files.
26004 (install-common): Don't install protoize.
26005 (install-headers-tar, install-headers-cpio, install-headers-cp):
26006 Don't depend on $(STMP_FIXPROTO).
26007 (install-mkheaders): Don't depend on $(STMP_FIXPROTO). Don't
26008 install fixproto files or write out fixproto settings.
26009 (uninstall): Don't uninstall protoize.
26010 * config.gcc (use_fixproto): Remove.
26011 (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
26012 i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
26013 rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
26014 * config/m32r/t-linux (STMP_FIXPROTO): Remove.
26015 * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
26016 * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
26017 * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
26018 * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
26019 * config/t-svr4 (FIXPROTO_DEFINES): Remove.
26020 * config/t-vxworks (STMP_FIXPROTO): Remove.
26021 * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
26022 STMP_FIXPROTO): Remove.
26023 * config.in, configure: Regenerate.
26024 * crtstuff.c (gid_t, uid_t): Don't undefine.
26025 * doc/install.texi: Change m68k-coff to m68k-elf in example.
26026 (arm-*-coff, arm-*-aout: Remove target entries.
26027 (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
26028 Remove mention of AIX 4.1.
26029 (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
26030 * doc/invoke.texi (Running Protoize): Remove.
26031 * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
26032 (Protoize Caveats): Remove.
26033 * tsystem.h: Update comments on headers assumed to exist.
26034
26035 2009-03-27 Vladimir Makarov <vmakarov@redhat.com>
26036
26037 * genautomata.c: Add a new year to the copyright. Add a new
26038 reference.
26039 (struct insn_reserv_decl): Add comments for member bypass_list.
26040 (find_bypass): Remove.
26041 (insert_bypass): New.
26042 (process_decls): Use insert_bypass.
26043 (output_internal_insn_latency_func): Output all bypasses with the
26044 same input insn in one switch case.
26045
26046 * rtl.def (define_bypass): Describe bypass choice.
26047 * doc/md.texi (define_bypass): Ditto.
26048
26049 2009-03-27 Richard Guenther <rguenther@suse.de>
26050
26051 * gimplify.c (mark_addressable): Export.
26052 * tree-flow.h (mark_addressable): Declare.
26053 * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
26054 * tree-ssa.c (verify_phi_args): Verify that address taken
26055 variables have TREE_ADDRESSABLE set.
26056
26057 2009-03-27 Richard Guenther <rguenther@suse.de>
26058
26059 * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
26060 (build_fold_addr_expr_with_type): ... this. Remove in_fold handling.
26061 Do not mark decls TREE_ADDRESSABLE.
26062 (build_fold_addr_expr): Adjust.
26063 (fold_addr_expr): Remove.
26064 (fold_unary): Use build_fold_addr_expr.
26065 (fold_comparison): Likewise.
26066 (split_address_to_core_and_offset): Likewise.
26067 * coverage.c (tree_coverage_counter_addr): Mark the array decl
26068 TREE_ADDRESSABLE.
26069 * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
26070 (gimplify_modify_expr_to_memcpy): Mark source and destination
26071 addressable.
26072 * omp-low.c (create_omp_child_function): Mark the object decl
26073 TREE_ADDRESSABLE.
26074 (lower_rec_input_clauses): Mark the var we take the address of
26075 TREE_ADDRESSABLE.
26076 (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
26077
26078 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26079
26080 PR middle-end/39315
26081 * cfgexpand.c (expand_one_stack_var_at): Change alignment
26082 limit to MAX_SUPPORTED_STACK_ALIGNMENT.
26083
26084 2009-03-27 Richard Guenther <rguenther@suse.de>
26085
26086 PR tree-optimization/39120
26087 * tree-ssa-structalias.c (handle_rhs_call): Fill out return
26088 constraints.
26089 (handle_lhs_call): Process return constraints. Add escape
26090 constraints if necessary.
26091 (handle_const_call): Fill out return constraints. Make nested
26092 case more precise. Avoid consttmp if possible.
26093 (handle_pure_call): Fill out return constraints. Avoid
26094 callused if possible.
26095 (find_func_aliases): Simplify call handling.
26096
26097 2009-03-27 Richard Guenther <rguenther@suse.de>
26098
26099 PR tree-optimization/39120
26100 * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
26101 as a representative.
26102 (solve_graph): Do propagate CALLUSED.
26103 (handle_pure_call): Use a scalar constraint from CALLUSED for
26104 the return value.
26105 (find_what_p_points_to): CALLUSED shall not appear in poins-to
26106 solutions.
26107
26108 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26109
26110 PR c/39323
26111 * c-common.c (handle_aligned_attribute): Properly check alignment
26112 overflow. Use (1U << i) instead of (1 << i).
26113
26114 * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
26115
26116 * expr.h (get_mem_align_offset): Updated.
26117
26118 * tree.h (tree_decl_common): Change align to "unsigned int" and
26119 move it before pointer_alias_set.
26120
26121 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26122 Jakub Jelinek <jakub@redhat.com>
26123
26124 PR target/38034
26125 * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
26126 gr_register_operand with gr_reg_or_0_operand.
26127 (cmpxchg_rel_di): Likewise.
26128 (sync_lock_test_and_set<mode>): Likewise.
26129
26130 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26131
26132 * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
26133 (true_regnum): Likewise.
26134
26135 * rtlanal.c (subreg_info): Moved to ...
26136 * rtl.h (subreg_info): Here. New.
26137 (subreg_get_info): New.
26138
26139 * rtlanal.c (subreg_get_info): Make it extern.
26140
26141 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26142
26143 PR target/39472
26144 * config/i386/i386.c (ix86_abi): New.
26145 (override_options): Handle -mabi=.
26146 (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
26147 (ix86_call_abi_override): Likewise.
26148 (init_cumulative_args): Likewise.
26149 (function_arg_advance): Likewise.
26150 (function_arg_64): Likewise.
26151 (function_arg): Likewise.
26152 (ix86_pass_by_reference): Likewise.
26153 (ix86_function_value_regno_p): Likewise.
26154 (ix86_build_builtin_va_list_abi): Likewise.
26155 (setup_incoming_varargs_64): Likewise.
26156 (is_va_list_char_pointer): Likewise.
26157 (ix86_init_machine_status): Likewise.
26158 (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
26159 (ix86_function_type_abi): Return enum calling_abi. Rewrite
26160 for 64bit. Replace DEFAULT_ABI with ix86_abi.
26161 (ix86_function_abi): Make it static and return enum calling_abi.
26162 (ix86_cfun_abi): Return enum calling_abi. Replace DEFAULT_ABI
26163 with ix86_abi.
26164 (ix86_fn_abi_va_list): Updated.
26165
26166 * config/i386/i386.h (ix86_abi): New.
26167 (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
26168 (CONDITIONAL_REGISTER_USAGE): Likewise.
26169 (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
26170 (machine_function): Likewise.
26171
26172 * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
26173 with ix86_abi.
26174 * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
26175 (STACK_BOUNDARY): Likewise.
26176 * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
26177
26178 * config/i386/i386.opt (mabi=): New.
26179
26180 * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
26181 return enum calling_abi.
26182 (ix86_function_type_abi): Likewise.
26183 (ix86_function_abi): Removed.
26184
26185 * doc/invoke.texi: Document -mabi= option for x86.
26186
26187 2009-03-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
26188
26189 * builtins.c (real_dconstp): Delete.
26190 (fold_builtin_logarithm): Remove inaccurate log(e) special case.
26191
26192 2009-03-27 Dodji Seketeli <dodji@redhat.com>
26193 Jakub Jelinek <jakub@redhat.com>
26194
26195 PR debug/37959
26196 * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
26197 (gen_subprogram_die): When a function is explicit, generate the
26198 DW_AT_explicit attribute.
26199 * langhooks.h (struct lang_hooks_for_decls): Add
26200 function_decl_explicit_p langhook.
26201 * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
26202 (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
26203
26204 2009-03-27 Jakub Jelinek <jakub@redhat.com>
26205
26206 * builtins.c (fold_builtin_memory_op): Optimize memmove
26207 into memcpy if we can prove source and destination don't overlap.
26208
26209 * tree-inline.c: Include gt-tree-inline.h.
26210 (clone_fn_id_num): New variable.
26211 (clone_function_name): New function.
26212 (tree_function_versioning): Use it.
26213 * Makefile.in (GTFILES): Add tree-inline.c.
26214
26215 2009-03-27 Mark Mitchell <mark@codesourcery.com>
26216
26217 * BASE-VER: Change to 4.5.0.
26218
26219 2009-03-27 Xinliang David Li <davidxl@google.com>
26220
26221 PR tree-optimization/39557
26222 * tree-ssa.c (warn_uninitialized_vars): free postdom info.
26223
26224 2009-03-27 Xinliang David Li <davidxl@google.com>
26225
26226 PR tree-optimization/39548
26227 * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
26228 candidate check.
26229
26230 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26231
26232 * c-common.c (pointer_int_sum): Use %wd on return from
26233 tree_low_cst.
26234
26235 2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
26236
26237 * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
26238 on return from tree_low_cst.
26239
26240 2009-03-27 Andrew Pinski <andrew_pinski@playstation.sony.com>
26241
26242 PR c++/36799
26243 * ginclude/stdarg.h (va_copy): Define also for
26244 __GXX_EXPERIMENTAL_CXX0X__.
26245
26246 2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
26247
26248 PR c++/35652
26249 * builtins.h (c_strlen): Do not warn here.
26250 * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
26251 * c-common.c (pointer_int_sum): Take an explicit location.
26252 Warn about offsets out of bounds.
26253 * c-common.h (pointer_int_sum): Adjust declaration.
26254
26255 2009-03-26 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26256
26257 * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
26258 markup glitch.
26259
26260 2009-03-26 Jakub Jelinek <jakub@redhat.com>
26261
26262 PR c++/39554
26263 * opts.c (warn_if_disallowed_function_p): Don't assume
26264 get_callee_fndecl must return non-NULL.
26265
26266 2009-03-26 Vladimir Makarov <vmakarov@redhat.com>
26267
26268 PR rtl-optimization/39522
26269 * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
26270 when reg_reloaded_valid is set.
26271
26272 2009-03-26 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
26273
26274 * config/spu/divv2df3.c: New file.
26275 * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
26276 (DPBIT_FUNCS): Filter out _div_df.
26277
26278 2009-03-26 Bernd Schmidt <bernd.schmidt@analog.com>
26279
26280 * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
26281 a jump insn, count that jump in the distance to the loop start.
26282
26283 2009-03-25 Kaz Kojima <kkojima@gcc.gnu.org>
26284
26285 PR target/39523
26286 * config/sh/sh.c (calc_live_regs): Fix condition for global
26287 registers except PIC_OFFSET_TABLE_REGNUM.
26288
26289 2009-03-25 Kai Tietz <kai.tietz@onevision.com>
26290
26291 PR/39518
26292 * doc/invoke.texi (-mconsole): New.
26293 (-mcygwin): New.
26294 (-mno-cygwin): New.
26295 (-mdll): New.
26296 (-mnop-fun-dllimport): New.
26297 (-mthread): New.
26298 (-mwin32): New.
26299 (-mwindows): New.
26300 (sub section "i386 and x86-64 Windows Options"): New.
26301
26302 2009-03-25 Ralf Corsépius <ralf.corsepius@rtems.org>
26303
26304 * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
26305 * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
26306
26307 2009-03-25 Richard Guenther <rguenther@suse.de>
26308
26309 PR middle-end/39497
26310 * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
26311 of -Wno-error.
26312
26313 2009-03-25 Andrey Belevantsev <abel@ispras.ru>
26314
26315 * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
26316 neither of haifa/selective schedulers are working.
26317
26318 2009-03-25 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26319
26320 * doc/invoke.texi (Debugging Options): Fix description of
26321 -fno-merge-debug-strings.
26322
26323 2009-03-24 Hans-Peter Nilsson <hp@axis.com>
26324
26325 * config/cris/libgcc.ver: New version-script.
26326 * config/cris/t-linux (SHLIB_MAPFILES): Use it.
26327
26328 * configure.ac <GAS features, nop mnemonic>: Add pattern
26329 crisv32-*-* for "nop".
26330 <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
26331 * configure: Regenerate.
26332
26333 2009-03-24 Ira Rosen <irar@il.ibm.com>
26334
26335 PR tree-optimization/39529
26336 * tree-vect-transform.c (vect_create_data_ref_ptr): Call
26337 mark_sym_for_renaming for the tag copied to the new vector
26338 pointer.
26339
26340 2009-03-24 Arthur Loiret <aloiret@debian.org>
26341
26342 * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
26343 * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
26344 EXTRA_SPEC_FUNCTIONS.
26345 (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
26346 * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
26347 * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
26348 -march and -mtune options.
26349
26350 2009-03-24 Ralf Corsépius <ralf.corsepius@rtems.org>
26351
26352 * config/m68k/t-rtems: Add m5329 multilib.
26353
26354 2009-03-24 Dodji Seketeli <dodji@redhat.com>
26355 Jakub Jelinek <jakub@redhat.com>
26356
26357 PR debug/39524
26358 * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
26359 nodes.
26360
26361 2009-03-23 Jakub Jelinek <jakub@redhat.com>
26362
26363 PR c/39495
26364 * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
26365 instead of c_parser_expression_conv, if original_code isn't one of the
26366 4 allowed comparison codes, fail.
26367
26368 2009-03-23 Richard Guenther <rguenther@suse.de>
26369
26370 * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
26371 * tree.h (struct tree_type): Likewise.
26372 * reload.h (struct insn_chain): Likewise.
26373 * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
26374 * function.h (struct function): Likewise.
26375 * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
26376
26377 2009-03-23 Jakub Jelinek <jakub@redhat.com>
26378
26379 PR tree-optimization/39516
26380 * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
26381
26382 2009-03-23 Bingfeng Mei <bmei@broadcom.com>
26383
26384 * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
26385 should be set true if BITS_PER_WORD of target is bigger than 32
26386
26387 2009-03-22 Hans-Peter Nilsson <hp@axis.com>
26388
26389 * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
26390 Translate -B-options to -rpath-link. Correct existing
26391 rpath-link and conditionalize on !nostdlib.
26392
26393 2009-03-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26394
26395 * doc/extend.texi (Function Attributes, Variable Attributes):
26396 Fix typos.
26397 * doc/invoke.texi (Debugging Options, Optimize Options)
26398 (i386 and x86-64 Options, MCore Options): Likewise.
26399
26400 2009-03-20 Jakub Jelinek <jakub@redhat.com>
26401
26402 PR debug/37890
26403 * dwarf2out.c (gen_namespace_die): Add context_die argument and use
26404 it for block local namespace aliases.
26405 (gen_decl_die): Pass context_die to gen_namespace_die.
26406
26407 2009-03-19 Jakub Jelinek <jakub@redhat.com>
26408
26409 PR c/39495
26410 * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
26411 minimum or maximum value.
26412
26413 2009-03-19 Alexandre Oliva <aoliva@redhat.com>
26414
26415 * reginfo.c (globalize_reg): Recompute derived reg sets.
26416
26417 2009-03-19 Ozkan Sezer <sezeroz@gmail.com>
26418
26419 PR target/39063
26420 * libgcc2.c (mprotect): Do not use signed arguments for
26421 VirtualProtect, use DWORD arguments. Also fix the 'may
26422 be used uninitialized' warning for the np variable.
26423
26424 2009-03-19 Jakub Jelinek <jakub@redhat.com>
26425
26426 PR target/39496
26427 * config/i386/i386.c (ix86_function_regparm): Don't optimize local
26428 functions using regparm calling conventions when not optimizing.
26429 (ix86_function_sseregparm): Similarly for sseregparm calling
26430 conventions.
26431
26432 2009-03-19 Li Feng <nemokingdom@gmail.com>
26433
26434 PR middle-end/39500
26435 * tree-data-ref.c (analyze_subscript_affine_affine): There is no
26436 dependence if the first conflict is after niter iterations.
26437
26438 2009-03-19 Hans-Peter Nilsson <hp@axis.com>
26439
26440 PR middle-end/38609
26441 * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
26442 functions with dynamic stack-pointer adjustments.
26443
26444 2009-03-19 Ben Elliston <bje@au.ibm.com>
26445
26446 * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
26447 option; change to -msdata=data.
26448
26449 2009-03-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26450
26451 * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
26452 and -fopenmp.
26453
26454 2009-03-18 Eric Botcazou <ebotcazou@adacore.com>
26455
26456 PR target/35180
26457 * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
26458
26459 2009-03-18 Sandra Loosemore <sandra@codesourcery.com>
26460
26461 * doc/invoke.texi (Code Gen Options): Expand discussion of
26462 -fno-common.
26463
26464 2009-03-18 Jakub Jelinek <jakub@redhat.com>
26465
26466 * dse.c (struct group_info): Reorder fields for 64-bit hosts.
26467 * matrix-reorg.c (struct matrix_info): Likewise.
26468 * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
26469 * rtl.h (struct mem_attrs): Likewise.
26470 * df.h (struct df): Likewise.
26471 * tree-data-ref.h (struct data_dependence_relation): Likewise.
26472 * ira-int.h (struct ira_allocno): Likewise.
26473 * df-scan.c (struct df_collection_rec): Likewise.
26474 * ira.c (struct equivalence): Likewise.
26475 * function.c (struct temp_slot): Likewise.
26476 * cfgloop.h (struct loop): Likewise.
26477
26478 PR debug/39485
26479 * function.c (use_register_for_decl): When not optimizing, disregard
26480 register keyword for variables with types containing methods.
26481
26482 2009-03-18 Sebastian Pop <sebastian.pop@amd.com>
26483
26484 PR middle-end/39447
26485 * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
26486 (is_simple_operand): Call contains_component_ref_p before calling data
26487 reference analysis that would fail on COMPONENT_REFs.
26488
26489 * tree-vrp.c (search_for_addr_array): Fix formatting.
26490
26491 2009-03-18 Richard Guenther <rguenther@suse.de>
26492
26493 * tree-vect-transform.c (vect_loop_versioning): Fold the
26494 generated comparisons.
26495 * tree-vectorizer.c (set_prologue_iterations): Likewise.
26496 (slpeel_tree_peel_loop_to_edge): Likewise.
26497
26498 2009-03-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26499
26500 PR middle-end/37805
26501 * opts.c (print_specific_help): In addition to `undocumented',
26502 accept `separate' and `joined' flags if passed alone. Describe
26503 output by the first matched one of those.
26504 (common_handle_option): Skip over empty strings.
26505 * gcc.c (display_help): Fix help string for `--help='.
26506 * doc/invoke.texi (Option Summary, Overall Options): With
26507 `--help=', classes and qualifiers can both be repeated, but
26508 only the latter can be negated. One should not pass only
26509 negated qualifiers. Fix markup and examples.
26510
26511 Revert
26512 2008-10-14 Jakub Jelinek <jakub@redhat.com>
26513 PR middle-end/37805
26514 * opts.c (common_handle_option): Don't ICE on -fhelp=joined
26515 and -fhelp=separate.
26516
26517 2009-03-17 Jing Yu <jingyu@google.com>
26518
26519 PR middle-end/39378
26520 * function.h (struct rtl_data): Move is_thunk from here...
26521 (struct function): ...to here.
26522 * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
26523 * varasm.c (assemble_start_function): Change is_thunk from crtl to
26524 cfun.
26525 * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
26526 cfun.
26527 (alpha_does_function_need_gp, alpha_start_function): Likewise.
26528 (alpha_output_function_end_prologue): Likewise.
26529 (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
26530 * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
26531 (rs6000_output_function_epilogue): Likewise.
26532 * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
26533
26534 2009-03-17 Uros Bizjak <ubizjak@gmail.com>
26535
26536 PR target/39482
26537 * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
26538 from different units in a single alternative.
26539 (*truncdfsf_i387): Ditto.
26540 (*truncxfsf2_mixed): Ditto.
26541 (*truncxfdf2_mixed): Ditto.
26542
26543 2009-03-17 Jakub Jelinek <jakub@redhat.com>
26544
26545 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
26546 non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
26547
26548 PR debug/39474
26549 * tree-ssa-live.c (remove_unused_locals): Don't remove local
26550 unused non-artificial variables when not optimizing.
26551
26552 PR debug/39471
26553 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
26554 DW_TAG_imported_module even if decl is IMPORTED_DECL with
26555 NAMESPACE_DECL in its DECL_INITIAL.
26556
26557 PR middle-end/39443
26558 * optabs.c (set_user_assembler_libfunc): New function.
26559 * expr.h (set_user_assembler_libfunc): New prototype.
26560 * c-common.c: Include libfuncs.h.
26561 (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
26562 for memcmp, memset, memcpy, memmove and abort.
26563 * Makefile.in (c-common.o): Depend on libfuncs.h.
26564
26565 PR debug/39412
26566 * dwarf2out.c (gen_inlined_enumeration_type_die,
26567 gen_inlined_structure_type_die, gen_inlined_union_type_die,
26568 gen_tagged_type_instantiation_die): Removed.
26569 (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
26570 do nothing.
26571
26572 2009-03-17 Janis Johnson <janis187@us.ibm.com>
26573
26574 PR testsuite/38526
26575 * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
26576 its use.
26577 (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
26578 (check-parallel-%): Ditto.
26579 (check-consistency): Ditto.
26580
26581 2009-03-17 Kai Tietz <kai.tietz@onevision.com>
26582
26583 * ipa-struct-reorg.c (create_general_new_stmt): Initialize
26584 local variable rhs by NULL_TREE.
26585
26586 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
26587
26588 PR target/39477
26589 * doc/extend.texi: Correct register behavior for regparm on Intel 386.
26590
26591 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
26592
26593 PR target/39476
26594 * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
26595
26596 2009-03-17 H.J. Lu <hongjiu.lu@intel.com>
26597
26598 PR target/39473
26599 * config/i386/i386.c (ix86_expand_call): Check extra clobbers
26600 for ms->sysv ABI calls only in 64bit mode.
26601
26602 * config/i386/i386.md (untyped_call): Support 32bit.
26603
26604 2009-03-16 H.J. Lu <hongjiu.lu@intel.com>
26605
26606 * doc/extend.texi: Replace x86_65 with x86_64.
26607
26608 2009-03-16 Jakub Jelinek <jakub@redhat.com>
26609
26610 PR tree-optimization/39455
26611 * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
26612 mismatches for POINTER_TYPE_P (type).
26613 (number_of_iterations_le): Likewise.
26614
26615 2009-03-16 Hariharan Sandanagobalane <hariharan@picochip.com>
26616
26617 * config/picochip/picochip.c: Removed profiling support.
26618 * config/picochip/picochip.md: Removed profiling instruction.
26619 * config/picochip/picochip.h: Removed profiling builtin.
26620
26621 2009-03-16 Joseph Myers <joseph@codesourcery.com>
26622
26623 * doc/install.texi (--with-host-libstdcxx): Document.
26624
26625 2009-03-14 Anatoly Sokolov <aesok@post.ru>
26626
26627 PR target/34299
26628 * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
26629 generate a warning if the function name does not begin with
26630 "__vector" and the function has either the 'signal' or 'interrupt'
26631 attribute, from here to ...
26632 (avr_declare_function_name): ...here. New function.
26633 * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
26634 * config/avr/avr-protos.h (avr_declare_function_name): Declare.
26635
26636 2009-03-14 Jakub Jelinek <jakub@redhat.com>
26637
26638 PR bootstrap/39454
26639 * cse.c (fold_rtx): Don't modify original const_arg1 when
26640 canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
26641 separate variable instead.
26642 * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
26643 from out of range shift counts.
26644 (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
26645
26646 2009-03-13 Catherine Moore <clm@codesourcery.com>
26647
26648 * config/i386/x-mingw32 (host-mingw32.o): Replace
26649 diagnostic.h with $(DIAGNOSTIC_H).
26650
26651 2009-03-12 Jakub Jelinek <jakub@redhat.com>
26652
26653 PR target/39431
26654 * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
26655 predicate.
26656 * config/i386/sync.md (sync_compare_and_swap<mode>,
26657 sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
26658 if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
26659 into a register.
26660 (sync_double_compare_and_swapdi_pic,
26661 sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
26662 cmpxchg8b_pic_memory_operand instead of just memory_operand.
26663
26664 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
26665
26666 PR target/39445
26667 * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
26668
26669 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
26670
26671 PR target/39327
26672 * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
26673 (avx_addsubv4df3): Likewise.
26674 (*avx_addsubv4sf3): Likewise.
26675 (sse3_addsubv4sf3): Likewise.
26676
26677 2009-03-12 H.J. Lu <hongjiu.lu@intel.com>
26678
26679 PR target/38824
26680 * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
26681
26682 2009-03-12 Vladimir Makarov <vmakarov@redhat.com>
26683
26684 PR debug/39432
26685 * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
26686 * ira-conflicts.c (ira_build_conflicts): Prohibit call used
26687 registers for allocnos created from user-defined variables.
26688
26689 2009-03-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
26690
26691 PR target/39181
26692 * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
26693 of non-integer mode as well.
26694
26695 2009-03-11 Adam Nemet <anemet@caviumnetworks.com>
26696
26697 * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
26698 for functions for which the parameter types are unknown.
26699
26700 2009-03-11 Jakub Jelinek <jakub@redhat.com>
26701
26702 PR target/39137
26703 * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
26704 * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
26705 * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
26706 * config/i386/i386.c (ix86_local_alignment): For
26707 -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
26708 long long variables on the stack to avoid dynamic realignment.
26709 Allow the first argument to be a decl rather than type.
26710 * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
26711
26712 2009-03-11 Nick Clifton <nickc@redhat.com>
26713
26714 PR target/5362
26715 * config/mcore/mcore.opt: Remove deprecated m4align and m8align
26716 options.
26717 Add description to mno-lsim option.
26718 * config/mcore/mcore.h: Remove comment about deprecated m4align
26719 option.
26720 (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
26721 * doc/invoke.texi: Add description of mno-lsim and
26722 mstack-increment options.
26723
26724 * config/fr30/fr30.opt: Document the -mno-lsim option.
26725 * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
26726 and -mno-lsim options.
26727
26728 2009-03-11 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
26729
26730 * fold-const.c (fold_comparison): Only call fold_inf_compare
26731 if the mode supports infinities.
26732
26733 2009-03-11 Jason Merrill <jason@redhat.com>
26734
26735 PR debug/39086
26736 * tree-nrv.c (tree_nrv): Don't do this optimization if the front
26737 end already did. Notice GIMPLE_CALL modifications of the result.
26738 Don't copy debug information from an ignored decl or a decl from
26739 another function.
26740
26741 2009-03-10 Richard Guenther <rguenther@suse.de>
26742 Nathan Froyd <froydnj@codesourcery.com>
26743
26744 PR middle-end/37850
26745 * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
26746 (__divMODE3): Likewise.
26747
26748 2009-03-09 Jakub Jelinek <jakub@redhat.com>
26749
26750 PR tree-optimization/39394
26751 * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
26752 DECL_SIZE_UNIT of variable length FIELD_DECLs.
26753
26754 2009-03-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
26755
26756 * recog.c (verfiy_changes): Disallow renaming of hard regs in
26757 inline asms for register asm ("") declarations.
26758
26759 2009-03-09 Eric Botcazou <ebotcazou@adacore.com>
26760
26761 * fold-const.c (fold_unary): Fix comment.
26762
26763 2009-03-07 Jan Hubicka <jh@suse.cz>
26764
26765 PR target/39361
26766 * tree-inline.c (setup_one_parameter): Do replacement of const
26767 argument by constant in SSA form.
26768
26769 2009-03-07 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
26770
26771 PR middle-end/38028
26772 * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
26773 determine alignment passed to assign_stack_local.
26774 (assign_parms_unsplit_complex): Likewise.
26775 * except.c (sjlj_build_landing_pads): Likewise.
26776
26777 2009-03-06 Jakub Jelinek <jakub@redhat.com>
26778
26779 PR middle-end/39360
26780 * tree-flow.h (add_referenced_var): Return bool instead of void.
26781 * tree-dfa.c (add_referenced_var): Return result of
26782 referenced_var_check_and_insert call.
26783 * tree-inline.c (expand_call_inline): Call add_referenced_var instead
26784 of referenced_var_check_and_insert.
26785
26786 PR debug/39372
26787 * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
26788 (gen_variable_die): Emit DW_AT_location on abstract static variable's
26789 DIE, don't emit it if abstract origin already has it.
26790 * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
26791 BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
26792
26793 2009-03-06 Jan-Benedict Glaw <jbglaw@lug-owl.de>
26794
26795 * genpreds.c (needs_variable): Fix parentheses at variable name
26796 detection.
26797 (write_tm_constrs_h): Indent generated code.
26798
26799 2009-03-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
26800
26801 * doc/extend.texi (Function Attributes): Add documentation
26802 for isr attributes.
26803
26804 2009-03-06 Jakub Jelinek <jakub@redhat.com>
26805
26806 PR debug/39387
26807 * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
26808 take locus from its DECL_SOURCE_LOCATION instead of input_location.
26809
26810 2009-03-05 Bernd Schmidt <bernd.schmidt@analog.com>
26811
26812 * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
26813 the loop as bad.
26814
26815 2009-03-05 Jakub Jelinek <jakub@redhat.com>
26816
26817 PR debug/39379
26818 * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
26819 with blocks containing IMPORTED_DECLs in BLOCK_VARS.
26820
26821 2009-03-05 Uros Bizjak <ubizjak@gmail.com>
26822
26823 * config/i386/i386.md (R8_REG, R9_REG): New constants.
26824 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
26825 constants instead of magic numbers.
26826 (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
26827 (QI_REG_P): Ditto.
26828 * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
26829 (x86_64_ms_abi_int_parameter_registers): Ditto.
26830 (x86_64_int_return_registers): Ditto.
26831 (ix86_maybe_switch_abi): Ditto.
26832 (ix86_expand_call): Ditto for clobbered_registers array.
26833 (ix86_hard_regno_mode_ok): Ditto.
26834 (x86_extended_QIreg_mentioned_p): Ditto.
26835
26836 2009-03-05 J"orn Rennecke <joern.rennecke@arc.com>
26837
26838 PR tree-optimization/39349
26839 * cse.c (cse_insn): Fix loop to stop at VOIDmode.
26840
26841 * combine.c (gen_lowpart_for_combine): Use omode when generating
26842 clobber.
26843
26844 2009-03-04 J"orn Rennecke <joern.rennecke@arc.com>
26845
26846 PR rtl-optimization/39235
26847 * loop-iv.c (get_simple_loop_desc): Use XCNEW.
26848
26849 2009-03-04 Zdenek Dvorak <ook@ucw.cz>
26850
26851 * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
26852
26853 2009-03-04 Richard Guenther <rguenther@suse.de>
26854
26855 PR tree-optimization/39362
26856 * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
26857 that occur in abnormal PHIs should be varying.
26858
26859 2009-03-04 Zdenek Dvorak <ook@ucw.cz>
26860
26861 * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
26862 Extend comments.
26863 (simple_iv): Take loop as an argument instead of statement.
26864 * tree-scalar-evolution.h (simple_iv): Declaration changed.
26865 * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
26866 to simple_iv.
26867 * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
26868 Ditto.
26869 * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
26870 * matrix-reorg.c (analyze_transpose): Ditto.
26871 * tree-data-ref.c (dr_analyze_innermost): Ditto.
26872 * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
26873 * tree-predcom.c (ref_at_iteration): Ditto.
26874 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
26875
26876 2009-03-04 Richard Guenther <rguenther@suse.de>
26877
26878 PR tree-optimization/39358
26879 * tree-ssa-structalias.c (do_sd_constraint): Fix check for
26880 escaped_id and callused_id.
26881 (solve_graph): Likewise.
26882
26883 2009-03-04 Richard Guenther <rguenther@suse.de>
26884
26885 PR tree-optimization/39339
26886 * tree-sra.c (try_instantiate_multiple_fields): Make it
26887 no longer ICE on the above.
26888
26889 2009-03-03 Joseph Myers <joseph@codesourcery.com>
26890
26891 * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
26892 that fits within Pmode.
26893
26894 2009-03-03 Steve Ellcey <sje@cup.hp.com>
26895
26896 PR middle-end/10109
26897 * tm.texi (LIBCALL_VALUE): Update description.
26898
26899 2009-03-03 Steve Ellcey <sje@cup.hp.com>
26900
26901 PR middle-end/34443
26902 * doc/extend.texi (section): Update description.
26903
26904 2009-03-03 H.J. Lu <hongjiu.lu@intel.com>
26905
26906 PR middle-end/39345
26907 * tree-inline.c (remapped_type): New.
26908 (can_be_nonlocal): Call remapped_type instead of remap_type.
26909
26910 2009-03-03 Jakub Jelinek <jakub@redhat.com>
26911
26912 PR fortran/39354
26913 * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
26914 TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
26915
26916 2009-03-03 Richard Guenther <rguenther@suse.de>
26917
26918 PR middle-end/39272
26919 * tree.c (tree_nonartificial_location): New function.
26920 * tree.h (tree_nonartificial_location): Declare.
26921 * builtins.c (expand_builtin_memory_chk): Provide location
26922 of the call location for artificial function pieces.
26923 (maybe_emit_chk_warning): Likewise.
26924 (maybe_emit_sprintf_chk_warning): Likewise.
26925 (maybe_emit_free_warning): Likewise.
26926 * expr.c (expand_expr_real_1): Likewise.
26927
26928 2009-03-03 Jakub Jelinek <jakub@redhat.com>
26929
26930 PR tree-optimization/39343
26931 * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
26932 COMPONENT_REF t has ARRAY_TYPE.
26933
26934 2009-03-02 Sebastian Pop <sebastian.pop@amd.com>
26935
26936 PR middle-end/39335
26937 * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
26938 when the type precision of the induction variable should be
26939 larger than the type precision of nit.
26940 (gen_parallel_loop): Update use of canonicalize_loop_ivs.
26941 * graphite.c (graphite_loop_normal_form): Same.
26942 * tree-flow.h (canonicalize_loop_ivs): Update declaration.
26943
26944 2009-03-02 Uros Bizjak <ubizjak@gmail.com>
26945
26946 * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
26947 (*call_1_rex64_ms_sysv): Use named constants instead of magic
26948 numbers to describe clobbered registers.
26949 (*call_value_0_rex64_ms_sysv): Ditto.
26950 * config/i386/mmx.md (mmx_emms): Ditto.
26951 (mmx_femms): Ditto.
26952
26953 2009-03-02 Richard Sandiford <rdsandiford@googlemail.com>
26954
26955 * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
26956 of ABI_64.
26957
26958 2009-03-02 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
26959
26960 * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
26961 (spu_section_type_flags): New function.
26962
26963 2009-03-02 Uros Bizjak <ubizjak@gmail.com>
26964
26965 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
26966 reg_class_contents of FLOAT_REGS into a temporary.
26967
26968 2009-03-02 Richard Guenther <rguenther@suse.de>
26969 Ira Rosen <irar@il.ibm.com>
26970
26971 PR tree-optimization/39318
26972 * tree-vect-transform.c (vectorizable_call): Transfer the EH region
26973 information to the vectorized statement.
26974
26975 2009-03-01 Uros Bizjak <ubizjak@gmail.com>
26976
26977 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
26978 variable. Use defined names instead of magic constants for REX SSE
26979 registers.
26980
26981 2009-03-01 Richard Guenther <rguenther@suse.de>
26982
26983 PR tree-optimization/39331
26984 * omp-low.c (lower_send_shared_vars): Do not receive new
26985 values for the reference of DECL_BY_REFERENCE parms or results.
26986
26987 2009-03-01 Jan Hubicka <jh@suse.cz>
26988
26989 PR debug/39267
26990 * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
26991 BLOCK_NONLOCALIZED_VAR): New macros.
26992 (tree_block): Add nonlocalized_vars.
26993 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
26994 gen_decl_die): Add origin argument. Allow generation of die with
26995 origin at hand only.
26996 (gen_member_die, gen_type_die_with_usage, force_decl_die,
26997 declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
26998 of gen_*.
26999 (gen_block_die): Fix checking for unused blocks.
27000 (process_scope_var): Break out from .... ; work with origins only.
27001 (decls_for_scope) ... here; process nonlocalized list.
27002 (dwarf2out_ignore_block): Look for nonlocalized vars.
27003 * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
27004 vars.
27005 (dump_scope_block): Dump them.
27006 * tree-inline.c (remap_decls): Handle nonlocalized vars.
27007 (remap_block): Likewise.
27008 (can_be_nonlocal): New predicate.
27009 (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
27010
27011 2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
27012
27013 * configure: Regenerate.
27014
27015 2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
27016
27017 * optc-gen.awk: No need to duplicate option flags twice.
27018 Reuse help texts for duplicate options which do not have any.
27019
27020 * gcc.c (display_help): Document --version.
27021
27022 * gcc.c (main): If print_help_list and verbose_flag, ensure
27023 driver output comes before subprocess output.
27024
27025 * optc-gen.awk: Assign all remaining fields to help string,
27026 space-separated, for multi-line help in *.opt.
27027
27028 * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
27029 -Wno-pedantic-ms-format is for MinGW targets only.
27030
27031 * doc/options.texi (Option file format): Fix bad indentation,
27032 restoring dropped sentence.
27033
27034 2009-02-28 Jan Hubicka <jh@suse.cz>
27035
27036 * tree-inline.c (tree_function_versioning): Output debug info.
27037
27038 2009-02-28 Jan Hubicka <jh@suse.cz>
27039
27040 PR debug/39267
27041 * tree-inline.c (setup_one_parameter): Do not copy propagate
27042 arguments when not optimizing.
27043
27044 2009-02-28 H.J. Lu <hongjiu.lu@intel.com>
27045
27046 PR target/39327
27047 * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
27048 (avx_addsubv4df3): Likewise.
27049 (*avx_addsubv4sf3): Likewise.
27050 (sse3_addsubv4sf3): Likewise.
27051 (*avx_addsubv2df3): Likewise.
27052 (sse3_addsubv2df3): Likewise.
27053 (avx_unpckhps256): Correct item selectors.
27054 (avx_unpcklps256): Likewise.
27055 (avx_unpckhpd256): Likewise.
27056 (avx_unpcklpd256): Likewise.
27057
27058 2009-02-28 Jan Hubicka <jh@suse.cz>
27059
27060 * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
27061 static vars.
27062 (copy_arguments_for_versioning): If var is declared don't declare it.
27063 (tree_function_versioning): First setup substitutions and then copy
27064 args.
27065
27066 2009-02-27 Jan Hubicka <jh@suse.cz>
27067
27068 PR debug/39267
27069 * cgraph.h (varpool_output_debug_info): Remove.
27070 * cgraphunit.c (varpool_output_debug_info): Remove.
27071 * dwarf2out.c (deferred_locations_struct): New struct
27072 (deferred_locations): New type.
27073 (deferred_locations_list): New static var.
27074 (deffer_location): New function.
27075 (gen_variable_die): Use it.
27076 (decls_for_scope): Output info on local static vars.
27077 (dwarf2out_finish): Process deferred locations.
27078 * varpool.c (varpool_output_debug_info): Remove.
27079
27080 2009-02-27 Jan Hubicka <jh@suse.cz>
27081
27082 PR debug/39267
27083 * tree.h (TREE_PROTECTED): Fix comment.
27084 (BLOCK_HANDLER_BLOCK): Remove.
27085 (struct tree_block): Remove handler_block add body_block.
27086 (inlined_function_outer_scope_p): New.
27087 (is_body_block): Remove.
27088 * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
27089 * dwarf2out.c (is_inlined_entry_point): Remove.
27090 (add_high_low_attributes): Use inlined_function_outer_scope_p.
27091 (gen_block_die): Use is_inlined_entry_point check. Remove body block
27092 code.
27093 * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
27094 * gimplify.c (gimplify_expr): Gimplify body blocks.
27095 * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
27096 block with multiple subblocks.
27097 (dump_scope_block): Prettier output; dump more flags and info.
27098 (dump_scope_blocks): New.
27099 (remove_unused_locals): Use dump_scope_blocks.
27100 * tree-flow.h (dump_scope_blocks): Declare.
27101 * tree-cfg.c (execute_build_cfg): Dump scope blocks.
27102 * stmt.c (is_body_block): Remove.
27103 * tree-inline.c (remap_block): Copy BODY_BLOCK info.
27104 * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
27105
27106 2009-02-27 Sebastian Pop <sebastian.pop@amd.com>
27107
27108 PR middle-end/39308
27109 * graphite.c (graphite_loop_normal_form): Do not call
27110 number_of_iterations_exit from a gcc_assert.
27111
27112 2009-02-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
27113
27114 * config/s390/s390.c (s390_swap_cmp): Look for conditional
27115 jumps if COND is NULL.
27116 (find_cond_jump): New function.
27117 (s390_z10_optimize_cmp): Handling for reg-reg compares added.
27118 * config/s390/s390.md: Remove z10_cobra attribute value.
27119
27120 2009-02-26 Uros Bizjak <ubizjak@gmail.com>
27121
27122 * config/alpha/alpha.h (alpha_expand_mov): Return false if
27123 force_const_mem returns NULL_RTX.
27124
27125 2009-02-26 Jan Hubicka <jh@suse.cz>
27126
27127 PR debug/39267
27128 * cgraph.h (varpool_output_debug_info): Remove.
27129 * cgraphunit.c (varpool_output_debug_info): Remove.
27130 * dwarf2out.c (deferred_locations_struct): New struct
27131 (deferred_locations): New type.
27132 (deferred_locations_list): New static var.
27133 (deffer_location): New function.
27134 (gen_variable_die): Use it.
27135 (decls_for_scope): Output info on local static vars.
27136 (dwarf2out_finish): Process deferred locations.
27137 * varpool.c (varpool_output_debug_info): Remove.
27138
27139 2009-02-25 H.J. Lu <hongjiu.lu@intel.com>
27140
27141 PR rtl-optimization/39241
27142 * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
27143 to subreg_offset_representable_p.
27144
27145 2009-02-25 Paolo Bonzini <bonzini@gnu.org>
27146
27147 * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
27148 execute function prototype. Get f and nregs from max_reg_num
27149 and get_insns. Remove the first backward pass as it's dead,
27150 guard the forward pass by flag_expensive_optimizations.
27151 (rest_of_handle_regmove): Delete.
27152 (pass_regmove): Replace it with regmove_optimize.
27153
27154 2009-02-25 Martin Jambor <mjambor@suse.cz>
27155
27156 PR tree-optimization/39259
27157 * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
27158 calls_alloca function flags.
27159 (copy_bb): Set calls_setjmp and alls_alloca function flags if such
27160 calls are detected.
27161
27162 2009-02-25 Paolo Bonzini <bonzini@gnu.org>
27163
27164 * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
27165 flags_set_1_rtx, flags_set_1_set): Delete.
27166 (regmove_optimize): Do not call mark_flags_life_zones.
27167
27168 2009-02-24 Julian Brown <julian@codesourcery.com>
27169
27170 PR target/35965
27171 * config/arm/arm.c (require_pic_register): Only set
27172 cfun->machine->pic_reg once per function.
27173
27174 2009-02-24 Sandra Loosemore <sandra@codesourcery.com>
27175
27176 * doc/invoke.texi (Link Options): Document an easier way to pass
27177 options that take arguments to the GNU linker using -Xlinker and -Wl.
27178
27179 2009-02-24 Steve Ellcey <sje@cup.hp.com>
27180
27181 PR target/33785
27182 * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
27183
27184 2009-02-24 Richard Guenther <rguenther@suse.de>
27185
27186 PR debug/39285
27187 * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
27188
27189 2009-02-24 Richard Guenther <rguenther@suse.de>
27190 Zdenek Dvorak <ook@ucw.cz>
27191
27192 PR tree-optimization/39233
27193 * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
27194 from converting them to a generic type.
27195
27196 2009-02-23 Sebastian Pop <sebastian.pop@amd.com>
27197
27198 PR tree-optimization/39260
27199 * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
27200 contains a condition with a real type.
27201 (build_scop_conditions_1): Conditions are always last_stmt of a bb.
27202
27203 2009-02-23 Jason Merrill <jason@redhat.com>
27204
27205 PR c++/38880
27206 * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
27207 narrowing_initializer_constant_valid_p.
27208 (narrowing_initializer_constant_valid_p): Don't return
27209 null_pointer_node for adding a pointer to itself.
27210
27211 2009-02-23 Jan Hubicka <jh@suse.cz>
27212
27213 PR c/12245
27214 * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
27215 resizing.
27216
27217 2009-02-23 Jan Hubicka <jh@suse.cz>
27218
27219 PR tree-optimization/37709
27220 * tree.c (block_ultimate_origin): Move here from dwarf2out.
27221 * tree.h (block_ultimate_origin): Declare.
27222 * dwarf2out.c (block_ultimate_origin): Move to tree.c
27223 * tree-ssa-live.c (remove_unused_scope_block_p):
27224 Eliminate blocks containig no instructions nor live variables nor
27225 nested blocks.
27226 (dump_scope_block): New function.
27227 (remove_unused_locals): Enable removal of dead blocks by default;
27228 enable dumping at TDF_DETAILS.
27229
27230 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
27231
27232 * config/i386/i386.c (classify_argument): Don't allow COImode
27233 and OImode.
27234 (function_arg_advance_32): Don't allow OImode.
27235 (function_arg_32): Likewise.
27236 (function_value_32): Likewise.
27237 (return_in_memory_32): Likewise.
27238 (function_arg_64): Remove OImode comment.
27239
27240 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
27241
27242 PR target/39261
27243 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
27244 ix86_expand_vector_set for V4DImode in 64bit mode only.
27245 (ix86_expand_vector_init_one_var): Likewise.
27246
27247 2009-02-21 Sebastian Pop <sebastian.pop@amd.com>
27248
27249 * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
27250
27251 2009-02-21 Richard Sandiford <rdsandiford@googlemail.com>
27252
27253 PR bootstrap/39257
27254 * loop-iv.c: Revert last change.
27255 * emit-rtl.c: Likewise.
27256
27257 2009-02-21 H.J. Lu <hongjiu.lu@intel.com>
27258
27259 PR target/39256
27260 * config/i386/i386.c (type_natural_mode): Remove an extra
27261 space in the warning message.
27262 (function_value_32): Handle 32-byte vector modes.
27263 (return_in_memory_32): Likewise.
27264
27265 2009-02-21 Richard Sandiford <rdsandiford@googlemail.com>
27266
27267 * loop-iv.c (truncate_value): New function.
27268 (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
27269 of lowpart_subreg.
27270 (lowpart_subreg): Move to...
27271 * emit-rtl.c: ...here.
27272
27273 2009-02-21 Danny Smith <dannysmith@users.sourceforge.net>
27274
27275 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
27276 accidental and undocumented change at revision 140860.
27277
27278 2009-02-21 Joseph Myers <joseph@codesourcery.com>
27279
27280 * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
27281 take gimple_seq * arguments.
27282 (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
27283 types_compatible_p langhook.
27284
27285 2009-02-20 Mark Mitchell <mark@codesourcery.com>
27286 Joseph Myers <joseph@codesourcery.com>
27287
27288 * config/arm/arm.c (arm_builtin_va_list): New function.
27289 (arm_expand_builtin_va_start): Likewise.
27290 (arm_gimplify_va_arg_expr): Likewise.
27291 (TARGET_BUILD_BUILTIN_VA_LIST): Define.
27292 (TARGET_BUILD_BUILTIN_VA_START): Likewise.
27293 (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
27294 (va_list_type): New variable.
27295 (arm_mangle_type): Mangle va_list_type appropriately.
27296
27297 2009-02-20 Jakub Jelinek <jakub@redhat.com>
27298
27299 PR middle-end/39157
27300 * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
27301 * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
27302 * params.def (loop-invariant-max-bbs-in-loop): New parameter.
27303 * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
27304 parameter to 1000 for -O1 by default.
27305 * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
27306 parameter.
27307 * loop-invariant.c: Include params.h.
27308 (move_loop_invariants): Don't call move_single_loop_invariants on
27309 very large loops.
27310
27311 2009-02-20 Jaka Mocnik <jaka@xlab.si>
27312
27313 * calls.c (emit_library_call_value_1): Use slot_offset instead of
27314 offset when calculating bounds for indexing stack_usage_map. Fixes
27315 a buffer overflow with certain target setups.
27316
27317 2009-02-20 Jakub Jelinek <jakub@redhat.com>
27318
27319 PR target/39240
27320 * calls.c (expand_call): Clear try_tail_call if caller and callee
27321 disagree in promotion of function return value.
27322
27323 2009-02-19 Jakub Jelinek <jakub@redhat.com>
27324
27325 PR target/39175
27326 * c-common.c (c_determine_visibility): If visibility changed and
27327 DECL_RTL has been already set, call make_decl_rtl to update symbol
27328 flags.
27329
27330 2009-02-19 H.J. Lu <hongjiu.lu@intel.com>
27331
27332 PR c++/39188
27333 * varasm.c (assemble_variable): Don't check DECL_NAME when
27334 globalizing a variable.
27335
27336 2009-02-19 Joseph Myers <joseph@codesourcery.com>
27337
27338 PR c/38483
27339 * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
27340 expression before any __builtin_trap call.
27341 * c-typeck.c (build_function_call): Convert and check function
27342 arguments before generating a call to a trap. Evaluate the
27343 function arguments before the trap.
27344
27345 2009-02-19 Uros Bizjak <ubizjak@gmail.com>
27346
27347 PR target/39228
27348 * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
27349 (UNSPEC_FXAM_MEM): New unspec.
27350 (fxam<mode>2_i387_with_temp): New insn and split pattern.
27351 (isinf<mode>2): Use MODEF mode iterator. Force operand[1] through
27352 memory using fxam<mode>2_i387_with_temp to remove excess precision.
27353
27354 2009-02-19 Richard Guenther <rguenther@suse.de>
27355
27356 PR tree-optimization/39207
27357 PR tree-optimization/39074
27358 * tree-ssa-structalias.c (storedanything_id, var_storedanything,
27359 storedanything_tree): New.
27360 (do_ds_constraint): Simplify ANYTHING shortcutting. Update
27361 the STOREDANYTHING solution if the lhs solution contains ANYTHING.
27362 (build_succ_graph): Add edges from STOREDANYTHING to all
27363 non-direct nodes.
27364 (init_base_vars): Initialize STOREDANYTHING.
27365 (compute_points_to_sets): Free substitution info after
27366 building the succ graph.
27367 (ipa_pta_execute): Likewise.
27368
27369 * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
27370 field.
27371 (do_ds_constraint): Do not add to special var or non-pointer
27372 field solutions.
27373 (type_could_have_pointers): Split out from ...
27374 (could_have_pointers): ... here. For arrays use the element type.
27375 (create_variable_info_for): Initialize may_have_pointers.
27376 (new_var_info): Likewise.
27377 (handle_lhs_call): Make the HEAP variable unknown-sized.
27378 (intra_create_variable_infos): Use a type with pointers for
27379 PARM_NOALIAS, make it unknown-sized.
27380
27381 2009-02-18 H.J. Lu <hongjiu.lu@intel.com>
27382
27383 PR target/39224
27384 * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
27385
27386 2009-02-18 Jason Merrill <jason@redhat.com>
27387
27388 PR target/39179
27389 * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
27390 value if DECL_EXTERNAL.
27391 * tree-sra.c (sra_walk_gimple_assign): Likewise.
27392 * target.h (gcc_target::binds_local_p): Clarify "module".
27393 * tree.h (TREE_PUBLIC): Clarify "module".
27394
27395 2009-02-17 Xuepeng Guo <xuepeng.guo@intel.com>
27396
27397 PR target/38891
27398 * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
27399 initialization for MS_ABI prior to the hunk of !TARGET_MMX.
27400
27401 2009-02-17 H.J. Lu <hongjiu.lu@intel.com>
27402
27403 PR target/39082
27404 * c.opt (Wabi): Support C and ObjC.
27405 (Wpsabi): New.
27406
27407 * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
27408
27409 * config/i386/i386.c (classify_argument): Warn once about the ABI
27410 change when passing union with long double.
27411
27412 * doc/invoke.texi: Update -Wabi for warning psABI changes.
27413
27414 2009-02-18 Joseph Myers <joseph@codesourcery.com>
27415
27416 PR c/35447
27417 * c-parser.c (c_parser_compound_statement): Always enter and leave
27418 a scope.
27419
27420 2009-02-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
27421
27422 PR target/34587
27423 * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
27424
27425 2009-02-18 Jakub Jelinek <jakub@redhat.com>
27426
27427 PR tree-optimization/36922
27428 * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
27429 * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
27430 Likewise.
27431
27432 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
27433
27434 * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
27435 to 0 for EABI64.
27436
27437 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
27438
27439 * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
27440
27441 2009-02-17 Richard Sandiford <rdsandiford@googlemail.com>
27442
27443 * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
27444 tree sharing.
27445
27446 2009-02-17 Ruan Beihong <ruanbeihong@gmail.com>
27447 Richard Sandiford <rdsandiford@googlemail.com>
27448
27449 * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
27450 * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
27451 (loongson_biadd): ...this.
27452
27453 2009-02-17 Richard Guenther <rguenther@suse.de>
27454
27455 PR tree-optimization/39202
27456 * tree-ssa-structalias.c (do_structure_copy): Before collapsing
27457 a var make sure to follow existing collapses.
27458
27459 2009-02-17 Richard Guenther <rguenther@suse.de>
27460
27461 PR middle-end/39214
27462 * langhooks.c (lhd_print_error_function): Check for NULL block.
27463
27464 2009-02-17 Richard Guenther <rguenther@suse.de>
27465
27466 PR tree-optimization/39204
27467 * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
27468 of the PHI arg.
27469
27470 2009-02-17 Uros Bizjak <ubizjak@gmail.com>
27471
27472 * config/soft-fp/double.h: Update from glibc CVS.
27473
27474 2009-02-17 Richard Guenther <rguenther@suse.de>
27475
27476 PR tree-optimization/39207
27477 * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
27478 strict-aliasing warnings for pointers pointing to NULL.
27479
27480 2009-02-16 Joseph Myers <joseph@codesourcery.com>
27481
27482 PR c/35446
27483 * c-parser.c (c_parser_braced_init): Call pop_init_level when
27484 skipping until next close brace.
27485
27486 2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
27487
27488 PR target/37049
27489 * config/i386/i386.c (ix86_expand_push): Set memory alignment
27490 to function argument boundary.
27491
27492 2009-02-16 Hariharan Sandanagobalane <hariharan@picochip.com>
27493
27494 * config/picochip/picochip.md (lea_add): Allow any nonimmediate
27495 in the lea_add. Reload eventually constraints it properly.
27496 * config/picochip/constraints.md: Remove the target constraint
27497 "b", since it is not needed anymore.
27498
27499 2009-02-16 Jakub Jelinek <jakub@redhat.com>
27500
27501 * gthr-dce.h: Uglify function parameter and local variable names.
27502 * gthr-gnat.h: Likewise.
27503 * gthr-mipssde.h: Likewise.
27504 * gthr-nks.h: Likewise.
27505 * gthr-posix95.h: Likewise.
27506 * gthr-posix.h: Likewise.
27507 * gthr-rtems.h: Likewise.
27508 * gthr-single.h: Likewise.
27509 * gthr-solaris.h: Likewise.
27510 * gthr-tpf.h: Likewise.
27511 * gthr-vxworks.h: Likewise.
27512 * gthr-win32.h: Likewise.
27513
27514 2009-02-15 H.J. Lu <hongjiu.lu@intel.com>
27515
27516 PR target/39196
27517 * config/i386/i386.md: Restrict the new peephole2 to move
27518 between MMX/SSE registers.
27519
27520 2009-02-15 Richard Guenther <rguenther@suse.de>
27521
27522 Revert
27523 2009-02-13 Richard Guenther <rguenther@suse.de>
27524
27525 * configure.ac: Enable LFS.
27526 * configure: Re-generate.
27527 * config.in: Likewise.
27528
27529 2009-02-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
27530
27531 * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
27532 spu_srqwbyte, spu_srqwbytebc): Define.
27533 * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
27534 spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
27535 * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
27536 "shrqby_<mode>"): New insn-and-split patterns.
27537 * config/spu/spu.c (expand_builtin_args): Determine and return
27538 number of operands using spu_builtin_description data.
27539 (spu_expand_builtin_1): Use it.
27540
27541 2009-02-13 Steve Ellcey <sje@cup.hp.com>
27542
27543 PR target/38056
27544 * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
27545 TARGET_CONST_GP.
27546
27547 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
27548
27549 PR target/39149
27550 * config/i386/i386.c (override_options): Correct warning
27551 messages for -malign-loops, -malign-jumps and -malign-functions.
27552
27553 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
27554
27555 PR target/39152
27556 * config/i386/i386.md: Restrict the new peephole2 to move
27557 between the general purpose registers.
27558
27559 2009-02-13 H.J. Lu <hongjiu.lu@intel.com>
27560
27561 PR target/39162
27562 * config/i386/i386.c (type_natural_mode): Add a new argument.
27563 Return the original mode and warn ABI change if vector size is 32byte.
27564 (function_arg_advance): Updated.
27565 (function_arg): Likewise.
27566 (ix86_function_value): Likewise.
27567 (ix86_return_in_memory): Likewise.
27568 (ix86_sol10_return_in_memory): Likewise.
27569 (ix86_gimplify_va_arg): Likewise.
27570 (function_arg_32): Don't warn ABX ABI change here.
27571 (function_arg_64): Likewise.
27572
27573 2009-02-13 Bernd Schmidt <bernd.schmidt@analog.com>
27574
27575 * loop-iv.c (implies_p): In the final case, test that operands 0
27576 of the two comparisons match.
27577
27578 * config/bfin/bfin.c (find_prev_insn_start): New function.
27579 (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
27580 (find_next_insn_start): Move.
27581
27582 2009-02-13 Richard Guenther <rguenther@suse.de>
27583
27584 * configure.ac: Enable LFS.
27585 * configure: Re-generate.
27586 * config.in: Likewise.
27587
27588 2009-02-13 Joseph Myers <joseph@codesourcery.com>
27589
27590 PR c/35444
27591 * c-parser.c (c_parser_parms_list_declarator): Discard pending
27592 sizes on syntax error after some arguments have been parsed.
27593
27594 2009-02-12 Jakub Jelinek <jakub@redhat.com>
27595
27596 * doc/invoke.texi (-fira): Remove.
27597
27598 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
27599
27600 * caller-save.c: Replace regclass.c with reginfo.c in comments.
27601 * recog.c: Likewise.
27602 * rtl.h: Likewise.
27603
27604 2009-02-12 Uros Bizjak <ubizjak@gmail.com>
27605
27606 * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
27607 (umul_ppmm): Likewise.
27608 (count_leading_zeros): Likewise.
27609 (count_trailing_zeros): Likewise.
27610 (UMUL_TIME): Likewise.
27611
27612 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
27613
27614 * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
27615 soft-fp/t-softfp to tmake_file.
27616
27617 * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
27618 (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
27619 (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
27620 IA64_BUILTIN_INFQ]: New.
27621 (ia64_init_builtins): Initialize __builtin_infq,
27622 __builtin_fabsq and __builtin_copysignq if not HPUX.
27623 (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
27624 IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
27625
27626 * config/ia64/lib1funcs.asm (__divtf3): Define only if
27627 SHARED is defined.
27628 (__fixtfti): Likewise.
27629 (__fixunstfti): Likewise.
27630 (__floattitf): Likewise.
27631
27632 * config/ia64/libgcc-glibc.ver: New.
27633 * config/ia64/t-fprules-softfp: Likewise.
27634 * config/ia64/sfp-machine.h: Likewise.
27635
27636 * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
27637 (LIBGCC2_TF_CEXT): Likewise.
27638 (TF_SIZE): Likewise.
27639 (TARGET_INIT_LIBFUNCS): Likewise.
27640
27641 * config/ia64/t-glibc (SHLINB_MAPFILES):
27642 Add $(srcdir)/config/ia64/libgcc-glibc.ver.
27643
27644 2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
27645
27646 * config/i386/i386.c (construct_container): Rewrite processing
27647 BLKmode with X86_64_SSE_CLASS.
27648
27649 2009-02-12 Paolo Bonzini <bonzini@gnu.org>
27650
27651 PR target/39152
27652 * config/i386/i386.md: Replace simplify_replace_rtx with
27653 replace_rtx in the new peephole2.
27654
27655 2009-02-12 Nathan Sidwell <nathan@codesourcery.com>
27656
27657 * doc/invoke.texi (Optimize Options): Stop claiming inlining and
27658 loop unrolling do not happen at -O2.
27659
27660 2009-02-12 Michael Matz <matz@suse.de>
27661
27662 * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
27663
27664 2009-02-12 Jakub Jelinek <jakub@redhat.com>
27665
27666 * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
27667 for -g3.
27668
27669 2009-02-12 Ben Elliston <bje@au.ibm.com>
27670
27671 * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
27672 patterns when updating the back chain. Missed in the 2009-02-10
27673 change.
27674
27675 2009-02-11 Janis Johnson <janis187@us.ibm.com>
27676
27677 * doc/extend.texi (Decimal Floating Types): Update identifier of
27678 draft TR and list of missing support.
27679
27680 2009-02-11 Jakub Jelinek <jakub@redhat.com>
27681
27682 PR middle-end/39154
27683 * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
27684 bit to variable length decl's flags, add it also to its
27685 pointer replacement variable.
27686
27687 2009-02-11 Uros Bizjak <ubizjak@gmail.com>
27688 Jakub Jelinek <jakub@redhat.com>
27689
27690 PR target/39118
27691 * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
27692 (memory_blockage): New expander.
27693 (*memory_blockage): New insn pattern.
27694 * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
27695 instead of general blockage at the end of function prologue when
27696 frame pointer is used to access red zone area. Do not emit blockage
27697 when profiling, it is emitted in generic code.
27698 (ix86_expand_epilogue): Emit memory_blockage at the beginning of
27699 function epilogue when frame pointer is used to access red zone area.
27700
27701 2009-02-11 Paolo Bonzini <bonzini@gnu.org>
27702
27703 PR target/38824
27704 * config/i386/i386.md: Add two new peephole2 to avoid mov followed
27705 by arithmetic with memory operands.
27706 * config/i386/predicates.md (commutative_operator): New.
27707
27708 2009-02-10 Janis Johnson <janis187@us.ibm.com>
27709
27710 * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
27711 bulleted lists.
27712
27713 2009-02-10 Eric Botcazou <ebotcazou@adacore.com>
27714
27715 * alias.h (record_alias_subset): Declare.
27716 * alias.c (record_alias_subset): Make global.
27717
27718 2009-02-10 Nick Clifton <nickc@redhat.com>
27719
27720 * tree-parloops.c: Change license to GPLv3.
27721 * ipa-struct-reorg.c: Change license to GPLv3.
27722 * ipa-struct-reorg.h: Change license to GPLv3.
27723
27724 2009-02-10 Steve Ellcey <sje@cup.hp.com>
27725
27726 PR c/39084
27727 * c-decl.c (start_struct): Return NULL on error.
27728
27729 2009-02-10 Jakub Jelinek <jakub@redhat.com>
27730
27731 PR middle-end/39124
27732 * cfgloopmanip.c (remove_path): Call remove_bbs after
27733 cancel_loop_tree, not before it.
27734
27735 PR target/39139
27736 * function.h (struct function): Add has_local_explicit_reg_vars bit.
27737 * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
27738 VAR_DECLs were seen.
27739 * tree-ssa-live.c (remove_unused_locals): Recompute
27740 cfun->has_local_explicit_reg_vars.
27741 * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
27742 copies or clearings if cfun->has_local_explicit_reg_vars.
27743
27744 2009-02-10 Uros Bizjak <ubizjak@gmail.com>
27745
27746 PR target/39118
27747 * config/i386/i386.c (expand_prologue): Emit blockage at the end
27748 of function prologue when frame pointer is used to access
27749 red zone area.
27750
27751 2009-02-10 Richard Guenther <rguenther@suse.de>
27752
27753 PR middle-end/39127
27754 * gimplify.c (gimple_regimplify_operands): Always look if
27755 we need to create a temporary.
27756
27757 2009-02-10 Richard Guenther <rguenther@suse.de>
27758
27759 PR tree-optimization/39132
27760 * tree-loop-distribution.c (todo): New global var.
27761 (generate_memset_zero): Trigger TODO_rebuild_alias.
27762 (tree_loop_distribution): Return todo.
27763
27764 2009-02-10 H.J. Lu <hongjiu.lu@intel.com>
27765
27766 PR target/39119
27767 * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
27768 (x86_64_reg_class_name): Removed.
27769 (classify_argument): Return 0 if bytes > 32. Return 0 if the
27770 first one isn't X86_64_SSE_CLASS or any other ones aren't
27771 X86_64_SSEUP_CLASS when size > 16bytes. Don't turn
27772 X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
27773 is X86_64_SSEUP_CLASS. Set AVX modes to 1 X86_64_SSE_CLASS
27774 and 3 X86_64_SSEUP_CLASS.
27775 (construct_container): Remove X86_64_AVX_CLASS. Handle 4
27776 registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
27777
27778 2009-02-10 Ben Elliston <bje@au.ibm.com>
27779
27780 * config/rs6000/rs6000.md (allocate_stack): Always use an update
27781 form instruction to update the stack back chain word, even if the
27782 user has disabled the generation of update instructions.
27783 (movdi_<mode>_update_stack): New.
27784 (movsi_update_stack): Likewise.
27785 * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
27786 always use an update form instruction to update the stack back
27787 chain word.
27788
27789 2009-02-09 Sebastian Pop <sebastian.pop@amd.com>
27790
27791 PR middle-end/38953
27792 * graphite.c (if_region_set_false_region): After moving a region in
27793 the false branch of a condition, remove the empty dummy basic block.
27794 (gloog): Remove wrong fix for PR38953.
27795
27796 2009-02-09 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
27797
27798 * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
27799 generation due to implicit sign extension.
27800
27801 2009-02-09 Eric Botcazou <ebotcazou@adacore.com>
27802
27803 PR middle-end/38981
27804 * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
27805 at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
27806
27807 2009-02-09 Richard Guenther <rguenther@suse.de>
27808
27809 PR middle-end/35202
27810 * convert.c (convert_to_real): Disable (float)fn((double)x)
27811 to fnf(x) conversion if errno differences may occur and
27812 -fmath-errno is set.
27813
27814 2009-02-07 Anatoly Sokolov <aesok@post.ru>
27815
27816 * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
27817 * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
27818 * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
27819
27820 2009-02-06 Joseph Myers <joseph@codesourcery.com>
27821
27822 PR c/35434
27823 * c-common.c (handle_alias_attribute): Disallow attribute for
27824 anything not a FUNCTION_DECL or VAR_DECL.
27825
27826 2009-02-06 Janis Johnson <janis187@us.ibm.com>
27827
27828 PR c/39035
27829 * real.c (do_compare): Special-case compare of zero against
27830 decimal float value.
27831
27832 2009-02-06 Joseph Myers <joseph@codesourcery.com>
27833
27834 PR c/36432
27835 * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
27836 as indicating flexible array members unless the field itself is
27837 being declarared as the incomplete array.
27838
27839 2009-02-06 Jan Hubicka <jh@suse.cz>
27840
27841 PR tree-optimization/38844
27842 * ipa-inline.c (try_inline): Stop inlining recursion when edge
27843 is already inlined.
27844
27845 2009-02-06 Richard Guenther <rguenther@suse.de>
27846
27847 PR middle-end/38977
27848 * tree-cfg.c (need_fake_edge_p): Force a fake edge for
27849 fork because we may expand it as __gcov_fork.
27850
27851 2009-02-06 Nick Clifton <nickc@redhat.com>
27852
27853 * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
27854
27855 2009-02-06 Paolo Bonzini <bonzini@gnu.org>
27856
27857 PR tree-optimization/35659
27858 * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
27859 vn_phi_eq): Shortcut if hashcode does not match.
27860 (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
27861 NULL operands.
27862 * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
27863 and avoid iterative_hash_expr.
27864 (FOR_EACH_VALUE_ID_IN_SET): New.
27865 (value_id_compare): Remove.
27866 (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
27867 sort expressions by value id.
27868
27869 2009-02-05 Kaz Kojima <kkojima@gcc.gnu.org>
27870
27871 PR target/38991
27872 * config/sh/predicates.md (general_movsrc_operand): Don't check
27873 the subreg of system registers here.
27874
27875 2009-02-05 Jakub Jelinek <jakub@redhat.com>
27876
27877 PR c++/39106
27878 * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
27879 on the copied decl.
27880
27881 2009-02-05 Paolo Bonzini <bonzini@gnu.org>
27882
27883 PR rtl-optimization/39110
27884 * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
27885 addresses, not aligned ones.
27886
27887 2009-02-05 Daniel Berlin <dberlin@dberlin.org>
27888 Richard Guenther <rguenther@suse.de>
27889
27890 PR tree-optimization/39100
27891 * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
27892 comment says and add edges.
27893
27894 2009-02-05 Joseph Myers <joseph@codesourcery.com>
27895
27896 PR c/35435
27897 * c-common.c (handle_tls_model_attribute): Ignore attribute for
27898 non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
27899
27900 2009-02-04 Tobias Grosser <grosser@fim.uni-passau.de>
27901
27902 * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
27903 sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
27904 register_bb_in_sese, new_sese, free_sese): Moved.
27905 (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
27906 outermost_loop_in_scop, build_scop_iteration_domain,
27907 expand_scalar_variables_ssa_name, get_vdef_before_scop,
27908 limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
27909 Use loop_in_sese_p instead of loop_in_scop_p.
27910 (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
27911 (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
27912 (scopdet_basic_block_info): Fix bug in scop detection.
27913 (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
27914 eq_loop_to_cloog_loop): Remove.
27915 (nb_loops_around_loop_in_scop, nb_loop
27916 ref_nb_loops): Moved here...
27917 * graphite.h (ref_nb_loops): ... from here.
27918 (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
27919 (loop_domain_dim, loop_iteration_vector_dim): Remove.
27920 (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
27921
27922 2009-02-04 Paolo Bonzini <bonzini@gnu.org>
27923 Hans-Peter Nilsson <hp@axis.com>
27924
27925 PR rtl-optimization/37889
27926 * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
27927 Move offset handling from PLUS to before the switch. Use new
27928 arguments when considering SYMBOL_REFs too.
27929 (rtx_addr_can_trap_p): Pass dummy offset and size.
27930 (enum may_trap_p_flags): Remove.
27931 (may_trap_p_1): Pass size from MEM_SIZE.
27932
27933 PR rtl-optimization/38921
27934 * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
27935 * rtl.h (may_trap_after_code_motion_p): Delete prototype.
27936 * rtlanal.c (may_trap_after_code_motion_p): Delete.
27937 (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
27938
27939 2009-02-04 H.J. Lu <hongjiu.lu@intel.com>
27940
27941 AVX Programming Reference (January, 2009)
27942 * config/i386/sse.md (*vpclmulqdq): New.
27943
27944 2009-02-04 Jakub Jelinek <jakub@redhat.com>
27945
27946 PR tree-optimization/38977
27947 PR gcov-profile/38292
27948 * calls.c (special_function_p): Disregard __builtin_ prefix.
27949
27950 2009-02-04 Hariharan Sandanagobalane <hariharan@picochip.com>
27951
27952 * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
27953 non-indexable addresses even before reload.
27954
27955 2009-02-03 Joseph Myers <joseph@codesourcery.com>
27956
27957 PR c/29129
27958 * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
27959 as having variable size. Do not give an error for unnamed
27960 parameters with [*] declarators. Give a warning for type names
27961 with [*] declarators and mark them as variable size.
27962 * c-parser.c (c_parser_sizeof_expression): Do not give an error
27963 for sizeof applied to [*] type names.
27964
27965 2009-02-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
27966
27967 PR C++/36607
27968 * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
27969
27970 2009-02-03 Jakub Jelinek <jakub@redhat.com>
27971
27972 * gcc.c (process_command): Update copyright notice dates.
27973 * gcov.c (print_version): Likewise.
27974 * gcov-dump.c (print_version): Likewise.
27975 * mips-tfile.c (main): Likewise.
27976 * mips-tdump.c (main): Likewise.
27977
27978 2009-02-03 Joseph Myers <joseph@codesourcery.com>
27979
27980 PR c/35433
27981 * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
27982 for composite type involving a zero-length array type.
27983
27984 2009-02-03 Jakub Jelinek <jakub@redhat.com>
27985
27986 PR target/35318
27987 * function.c (match_asm_constraints_1): Skip over
27988 initial optional % in the constraint.
27989
27990 PR inline-asm/39059
27991 * c-parser.c (c_parser_postfix_expression): If fixed point is not
27992 supported, don't accept FIXED_CSTs.
27993 * c-decl.c (finish_declspecs): Error if fixed point is not supported
27994 and _Sat is used without _Fract/_Accum. Set specs->type to
27995 integer_type_node for cts_fract/cts_accum if fixed point is not
27996 supported.
27997
27998 2009-02-02 Catherine Moore <clm@codesourcery.com>
27999
28000 * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
28001
28002 2009-02-02 Richard Sandiford <rdsandiford@googlemail.com>
28003
28004 * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
28005 (ABI_HAS_64BIT_SYMBOLS): Use it.
28006 (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
28007
28008 2009-02-02 Paul Brook <paul@codesourcery.com>
28009
28010 * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
28011
28012 2009-02-02 Jakub Jelinek <jakub@redhat.com>
28013
28014 PR inline-asm/39058
28015 * recog.h (asm_operand_ok): Add constraints argument.
28016 * recog.c (asm_operand_ok): Likewise. If it is set, for digits
28017 recurse on matching constraint.
28018 (check_asm_operands): Pass constraints as 3rd argument to
28019 asm_operand_ok. Don't look up matching constraint here.
28020 * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
28021 to asm_operand_ok.
28022
28023 2009-02-02 Ben Elliston <bje@au.ibm.com>
28024
28025 * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
28026 TARGET_NARROW_VOLATILE_BITFIELD macro names.
28027
28028 2009-01-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
28029
28030 * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
28031 information. Remove some obsolete information. Reorganize.
28032
28033 * config/pa/fptr.c: Revert license to GPL 2.
28034 * config/pa/milli64.S: Likewise.
28035
28036 2009-01-31 Dave Korn <dave.korn.cygwin@gmail.com>
28037
28038 PR target/38904
28039 * mkmap-flat.awk (END): Use pe_dll command-line arg to pass
28040 LIBRARY name in, instead of hard-coding it.
28041 * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*): Add an
28042 extra target make frag to tmake_files according to EH model.
28043 (i[34567]86-*-mingw* | x86_64-*-mingw*): Likewise.
28044 * config/i386/t-dw2-eh, config/i386/t-sjlj-eh: Add new target
28045 frags that define makefile variable EH_MODEL appropriately.
28046 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Add comment.
28047 * config/i386/cygwin.h (LIBGCC_EH_EXTN): Define to nothing or
28048 to "-sjlj" according to type of EH configured.
28049 (LIBGCC_SONAME): Concatenate it to shared library base name.
28050 * config/i386/mingw32.h (LIBGCC_EH_EXTN): Define to "_dw2" or
28051 to "_sjlj" according to type of EH configured.
28052 (LIBGCC_SONAME): Concatenate it to shared library base name.
28053 * config/i386/t-cygming (SHLIB_SONAME): Use EH_MODEL.
28054 (SHLIB_LINK): Add missing semicolon to if-else construct.
28055 (SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
28056 string value of "pe_dll" command-line option.
28057 * config/i386/t-cygwin (SHLIB_EH_EXTENSION): New helper.
28058 (SHLIB_SONAME): Use it when overriding t-cygming default.
28059 (SHLIB_IMPLIB): Override t-cygming default.
28060 (SHLIB_MKMAP_OPTS): Pass library name to mkmap-flat.awk as
28061 string value of "pe_dll" command-line option.
28062
28063 2009-01-31 Dave Korn <dave.korn.cygwin@gmail.com>
28064
28065 PR target/38952
28066 * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
28067 (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
28068
28069 2009-01-31 Richard Guenther <rguenther@suse.de>
28070
28071 PR tree-optimization/38937
28072 * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
28073 computing the transitive closure.
28074
28075 2009-01-30 Richard Guenther <rguenther@suse.de>
28076
28077 PR tree-optimization/39041
28078 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
28079 Propagate variable indices only if the types match for this stmt.
28080
28081 2009-01-30 Jakub Jelinek <jakub@redhat.com>
28082
28083 PR target/39013
28084 * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
28085 inline but never defined.
28086
28087 2009-01-30 Wolfgang Gellerich <gellerich@de.ibm.com>
28088
28089 * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
28090 (*insv_h_di_reg_extimm): New insn.
28091 (*insv_l<mode>_reg_extimm): New insn.
28092
28093 2009-01-30 Hariharan Sandanagobalane <hariharan@picochip.com>
28094
28095 * config/picochip/picochip.c (flag_conserve_stack): set
28096 PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
28097 fconserve-stack. Reduce call-overhead used by inliner.
28098
28099 2009-01-30 Hariharan Sandanagobalane <hariharan@picochip.com>
28100
28101 PR/38157
28102 * common.opt (flag_conserve_stack): Initialised to zero.
28103
28104 2009-01-30 Kai Tietz <kai.tietz@onevision.com>
28105
28106 PR/39002
28107 * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
28108 (ix86_expand_epilogue): Take nsseregs in account to use proper restore
28109 method.
28110
28111 2009-01-29 H.J. Lu <hongjiu.lu@intel.com>
28112
28113 * ira-color.c (allocno_reload_assign): Update comments.
28114 * regmove.c (regmove_optimize): Likewise.
28115
28116 * ra.h: Removed.
28117
28118 2009-01-29 Robert Millan <rmh@aybabtu.com>
28119
28120 * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
28121 * config/i386/kopensolaris-gnu.h: New file. Undefine
28122 `MD_UNWIND_SUPPORT'.
28123 * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
28124
28125 2009-01-29 Kazu Hirata <kazu@codesourcery.com>
28126
28127 PR tree-optimization/39007
28128 * tree-loop-distribution.c (generate_builtin): Use
28129 recompute_dominator to compute the immediate dominator of the
28130 basic block just after the loop.
28131
28132 2009-01-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
28133
28134 * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
28135 (ASM_OUTPUT_DWARF_PCREL): Define.
28136
28137 2009-01-29 Vladimir Makarov <vmakarov@redhat.com>
28138
28139 * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
28140 * doc/passes.texi: Remove entries about regclass, local-alloc, and
28141 global. Modify entries about regmove and IRA.
28142
28143 * ra-conflict.c: Remove the file.
28144
28145 * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
28146
28147 * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
28148 (pass_regclass_init): Rename to pass_reginfo_init.
28149
28150 * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
28151
28152 * toplev.h (flag_ira): Remove.
28153
28154 * caller-save.c (setup_save_areas): Remove flag_ira.
28155
28156 * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
28157
28158 * global.c: Remove the file.
28159
28160 * opts.c (decode_options): Remove flag_ira.
28161
28162 * hard-reg-set.h (losing_caller_save_reg_set): Remove.
28163
28164 * regmove.c: Modify file description.
28165 (find_use_as_address, try_auto_increment): Define them only if
28166 AUTO_INC_DEC is defined.
28167 (replacement_quality, replace_in_call_usage, fixup_match_1,
28168 stable_and_no_regs_but_for_p): Remove.
28169 (reg_set_in_bb): Make it static.
28170 (regmove_optimize): Remove flag_ira and code which worked for
28171 !flag_ira.
28172
28173 * local-alloc.c: Remove the file.
28174
28175 * common.opt (fira): Remove.
28176
28177 * ira.c: Include except.h.
28178 (eliminable_regset): Move from global.c.
28179 (mark_elimination): Ditto. Remove flag_ira.
28180 (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
28181 equiv_mem_modified, validate_equiv_mem_from_store,
28182 validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
28183 contains_replace_regs, memref_referenced_p, memref_used_between_p,
28184 no_equiv, recorded_label_ref): Move from local-alloc.c.
28185 (update_equiv_regs): Ditto. Make it static.
28186 (print_insn_chain, print_insn_chains): Move it from global.c.
28187 (pseudo_for_reload_consideration_p): Ditto. Remove flag_ira.
28188 (build_insn_chain): Ditto. Make it static.
28189 (ra_init_live_subregs): Move from ra-conflict.c. Make it static.
28190 Rename to init_live_subregs.
28191 (gate_ira): Remove flag_ira.
28192
28193 * regclass.c: Rename reginfo.c. Change file description.
28194 (FORBIDDEN_INC_DEC_CLASSES): Remove.
28195 (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
28196 (init_reg_sets_1): Remove code for evaluation of
28197 reg_class_superclasses and losing_caller_save_reg_set.
28198 (init_regs): Remove init_reg_autoinc.
28199 (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
28200 ok_for_base_p_nonstrict): Remove.
28201 (regclass_init): Rename to reginfo_init. Don't initialize init_cost.
28202 (pass_regclass_init): Rename to pass_reginfo_init. Modify
28203 corresponding entries.
28204 (dump_regclass, record_operand_costs, scan_one_insn,
28205 init_reg_autoinc, regclass, record_reg_classes, copy_cost,
28206 record_address_regs, auto_inc_dec_reg_p): Remove.
28207 (gt-regclass.h): Rename to gt-reginfo.h.
28208
28209 * rtl.h (dump_global_regs, retry_global_alloc,
28210 build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
28211
28212 * Makefile.in (RA_H): Remove.
28213 (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
28214 Rename regclass.o to reginfo.o.
28215 (regclass.o): Rename to reginfo.o. Rename gt-regclass.h to
28216 gt-reginfo.h.
28217 (global.o, local-alloc.o, ra-conflict.o): Remove entries.
28218 (GTFILES): Rename regclass.c to reginfo.c.
28219
28220 * passes.c (init_optimization_passes): Remove pass_local_alloc and
28221 pass_global_alloc. Rename pass_regclass_init to pass_reginfo_init.
28222
28223 * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
28224 count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
28225 Remove flag_ira.
28226 (finish_spills): Ditto. Remove code for !flag_ira.
28227
28228 2009-01-29 Kenneth Zadeck <zadeck@naturalbridge.com>
28229
28230 PR middle-end/35854
28231 * doc/invoke.texi (rtl debug options): Complete rewrite.
28232 * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
28233 to auto_inc_dec".
28234 * mode-switching.c (pass_mode_switching): Rename pass from
28235 "mode-sw" to "mode_sw".
28236 * except.c (pass_convert_to_eh_ranges): Rename pass from
28237 "eh-ranges" to "eh_ranges".
28238 * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
28239 to "subreg1".
28240
28241
28242 2009-01-29 Andrey Belevantsev <abel@ispras.ru>
28243 Alexander Monakov <amonakov@ispras.ru>
28244
28245 PR middle-end/38857
28246 * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
28247 register.
28248 (move_exprs_to_boundary): Change return type and pass through
28249 should_move from move_op. Relax assert. Update usage ...
28250 (schedule_expr_on_boundary): ... here. Use should_move instead of
28251 cant_move.
28252 (move_op_orig_expr_found): Indicate that insn was disconnected from
28253 stream.
28254 (code_motion_process_successors): Do not call after_merge_succs
28255 callback if original expression was not found when traversing any of
28256 the branches.
28257 (code_motion_path_driver): Change return type. Update prototype.
28258 (move_op): Update comment. Add a new parameter (should_move). Update
28259 prototype. Set *should_move based on indication provided by
28260 move_op_orig_expr_found.
28261
28262 2009-01-28 Pat Haugen <pthaugen@us.ibm.com>
28263
28264 * doc/invoke.texi (avoid-indexed-addresses): Document new option.
28265 * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
28266 * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
28267 * config/rs6000/rs6000.c (rs6000_override_options): Default
28268 avoid-indexed-addresses on for Power6, off for everything else.
28269 (avoiding_indexed_address_p): New function.
28270 (rs6000_legitimize_address): Use it.
28271 (rs6000_legitimate_address): Likewise.
28272 * config/rs6000/rs6000.md (movXX_updateX): Likewise
28273
28274 2009-01-28 Kazu Hirata <kazu@codesourcery.com>
28275
28276 PR tree-optimization/38997
28277 * tree-loop-distribution.c (generate_memset_zero): Use
28278 POINTER_PLUS_EXPR for a pointer addition.
28279
28280 2009-01-28 Andreas Krebbel <krebbel1@de.ibm.com>
28281
28282 * config/s390/s390.md (bswap<mode>2): New pattern added.
28283
28284 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
28285
28286 * config/s390/s390.md (*tls_load_31): Added type attribute.
28287
28288 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
28289
28290 * config/s390/s390.md: Fix a few comments.
28291
28292 2009-01-28 Wolfgang Gellerich <gellerich@de.ibm.com>
28293
28294 * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
28295 (*tm<mode>_full): Fixed z10prop attribute.
28296 (*tst<mode>_extimm): Fixed z10prop attribute.
28297 (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
28298 (*tstqiCCT_cconly): Fixed z10prop attribute.
28299 (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
28300 (*movsi_larl): Fixed z10prop attribute.
28301 (*movsi_zarch): Fixed z10prop attribute.
28302 (*movsi_eas): Fixed z10prop attribute.
28303 (*movhi): Fixed z10prop attribute.
28304 (*movqi): Fixed z10prop attribute.
28305 (*movstrictqi): Fixed z10prop attribute.
28306 (*mov<mode>): Fixed z10prop attribute.
28307 (*movcc): Fixed z10prop attribute.
28308 (*sethighpartdi_64): Fixed z10prop attribute.
28309 (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
28310 (*negdi2_sign_cc): Fixed z10prop attribute.
28311 (*negdi2_sign): Fixed z10prop attribute.
28312 (*absdi2_sign_cc): Fixed z10prop attribute.
28313 (*absdi2_sign): Fixed z10prop attribute.
28314 (*negabsdi2_sign_cc): Fixed z10prop attribute.
28315 (*negabsdi2_sign): Fixed z10prop attribute.
28316 (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
28317 (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
28318 (doloop_si64): Fixed z10prop attribute.
28319 (doloop_si31): Fixed z10prop attribute.
28320 (doloop_long): Fixed z10prop attribute.
28321 (indirect_jump): Fixed z10prop attribute.
28322 (nop): Fixed z10prop attribute.
28323 (main_base_64): Fixed z10prop attribute.
28324 (reload_base_64): Fixed z10prop attribute.
28325
28326 2009-01-28 Jakub Jelinek <jakub@redhat.com>
28327
28328 PR rtl-optimization/38740
28329 * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
28330 if !optimize.
28331 * config/mips/mips.c (mips_reorg): Likewise.
28332
28333 2009-01-28 Richard Guenther <rguenther@suse.de>
28334
28335 PR tree-optimization/38926
28336 * tree-ssa-pre.c (add_to_value): Assert we add only expressions
28337 with the correct value id to a value.
28338 (do_regular_insertion): Use the value number of edoubleprime
28339 for the value number of the expr.
28340
28341 Revert
28342 2008-08-21 Richard Guenther <rguenther@suse.de>
28343
28344 * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
28345 a PHI ask VN if it is already available.
28346 * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
28347 * tree-ssa-sccvn.c (vn_phi_lookup): Export.
28348
28349 2009-01-28 Jakub Jelinek <jakub@redhat.com>
28350
28351 PR middle-end/38934
28352 * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
28353 set to varying whenever max has TREE_OVERFLOW set, similarly
28354 for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
28355
28356 2009-01-28 Richard Guenther <rguenther@suse.de>
28357
28358 PR middle-end/38908
28359 * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
28360 uninitialized aggregate uses in call arguments.
28361
28362 2009-01-28 Paolo Bonzini <bonzini@gnu.org>
28363
28364 PR tree-optimization/38984
28365 * tree-ssa-structalias.c (get_constraints_for_1): Do not use
28366 the nothing_id variable if -fno-delete-null-pointer-checks.
28367
28368 2009-01-28 Uros Bizjak <ubizjak@gmail.com>
28369
28370 PR target/38988
28371 * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
28372 (set_got_offset_rex64): Ditto.
28373
28374 2009-01-27 H.J. Lu <hongjiu.lu@intel.com>
28375
28376 PR target/38941
28377 * doc/extend.texi: Improve local variable with asm reg.
28378
28379 2009-01-27 Adam Nemet <anemet@caviumnetworks.com>
28380
28381 * c.opt (Wpacked-bitfield-compat): Change init value to -1.
28382 * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
28383 was not supplied then set warn_packed_bitfield_compat to the
28384 default value of 1.
28385 * stor-layout.c (place_field): Check warn_packed_bitfield_compat
28386 against 1.
28387
28388 2009-01-27 Richard Guenther <rguenther@suse.de>
28389
28390 PR tree-optimization/38503
28391 * cfgexpand.c (expand_gimple_basic_block): Ignore
28392 GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
28393 * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
28394 variables that cannot have TBAA applied.
28395 (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
28396 statements.
28397
28398 2009-01-27 Uros Bizjak <ubizjak@gmail.com>
28399
28400 PR middle-end/38969
28401 * calls.c (initialize_argument_information): Do not wrap complex
28402 arguments in SAVE_EXPR.
28403
28404 2009-01-26 Andreas Tobler <a.tobler@schweiz.org>
28405
28406 * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
28407 (INSTALL_LIBGCC): Revert typo commit.
28408
28409 2009-01-26 Richard Guenther <rguenther@suse.de>
28410
28411 PR tree-optimization/38745
28412 * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
28413 from special handling.
28414
28415 2009-01-26 Richard Guenther <rguenther@suse.de>
28416
28417 PR tree-optimization/38745
28418 * tree-ssa.c (execute_update_addresses_taken): Do not include
28419 variables that cannot possibly be a register in not_reg_needs.
28420 Do not clear TREE_ADDRESSABLE on vars that may not become
28421 registers.
28422 * tree-ssa.c (update_alias_info_1): Include those in the set
28423 of addressable vars.
28424
28425 2009-01-26 Richard Guenther <rguenther@suse.de>
28426
28427 PR middle-end/38851
28428 * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
28429 * tree-ssa-dse.c: Include langhooks.h
28430 (execute_simple_dse): Remove stores with zero size.
28431
28432 2009-01-24 Jakub Jelinek <jakub@redhat.com>
28433
28434 PR c/38957
28435 * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
28436 as PLUS_EXPR.
28437
28438 2009-01-24 Julian Brown <julian@codesourcery.com>
28439
28440 * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
28441 config/arm/linux-atomic.c.
28442 * config/arm/linux-atomic.c: New.
28443
28444 2009-01-24 Eric Botcazou <ebotcazou@adacore.com>
28445
28446 * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
28447 * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
28448 * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
28449
28450 2009-01-24 H.J. Lu <hongjiu.lu@intel.com>
28451
28452 PR c/38938
28453 * c-opts.c (c_common_handle_option): Update warn_pointer_sign
28454 properly.
28455
28456 2009-01-24 Sebastian Pop <sebastian.pop@amd.com>
28457
28458 PR tree-optimization/38953
28459 * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
28460 (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
28461 (gloog): Split the exit of the scop when the scop exit is a loop exit.
28462 (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
28463 changed the CFG.
28464
28465 2009-01-24 Paul Brook <paul@codesourcery.com>
28466
28467 * config/arm/neon.md (neon_type): Move to arm.md.
28468 (neon_mov<VSTRUCT>): Add neon_type attribute.
28469 * config/arm/arm.md (neon_type): Move to here.
28470 (conds): Add "unconditioal" and use as default for NEON insns.
28471
28472 2009-01-24 Ben Elliston <bje@au.ibm.com>
28473
28474 * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
28475 void *' warning from -Wc++-compat.
28476 * Makefile.in (dominance.o-warn): Remove.
28477
28478 2009-01-23 Paolo Bonzini <bonzini@gnu.org>
28479
28480 PR tree-optimization/38932
28481 * fold-const.c (fold_unary_ignore_overflow): New.
28482 * tree.h (fold_unary_ignore_overflow): Declare.
28483 * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
28484 * tree-ssa-sccvn.c (visit_reference_op_load,
28485 simplify_unary_expression): Likewise.
28486
28487 2009-01-22 Adam Nemet <anemet@caviumnetworks.com>
28488
28489 * c-decl.c (finish_struct): Move code to set DECL_PACKED after
28490 DECL_BIT_FIELD is alreay known. Also inherit packed for bitfields
28491 regardless of their type.
28492 * c-common.c (handle_packed_attribute): Don't ignore packed on
28493 bitfields.
28494 * c.opt (Wpacked-bitfield-compat): New warning option.
28495 * stor-layout.c (place_field): Warn if offset of a field changed.
28496 * doc/extend.texi (packed): Mention the ABI change.
28497 * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
28498 (Warning Options): Add it to the list.
28499
28500 2009-01-22 H.J. Lu <hongjiu.lu@intel.com>
28501
28502 * c-opts.c (c_common_post_options): Fix a typo in comments.
28503
28504 2009-01-22 Steve Ellcey <sje@cup.hp.com>
28505
28506 PR middle-end/38615
28507 * gimplify.c (gimplify_init_constructor): Fix promotion of const
28508 variables to static.
28509 * doc/invoke.texi (-fmerge-all-constants): Update description.
28510
28511 2009-01-22 Uros Bizjak <ubizjak@gmail.com>
28512
28513 PR target/38931
28514 * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
28515 (*movdi_1_rex64): Use type "mmx" for alternative 5.
28516
28517 2009-01-22 Richard Earnshaw <rearnsha@arm.com>
28518
28519 * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
28520 a word boundary.
28521 (LOCAL_ALIGNMENT): Similarly.
28522
28523 2009-01-22 Mark Shinwell <shinwell@codesourcery.com>
28524 Joseph Myers <joseph@codesourcery.com>
28525
28526 * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
28527 * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
28528 * config/arm/arm-tune.md: Regenerate.
28529 * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
28530 -march=iwmmxt2.
28531
28532 2009-01-22 Mark Shinwell <shinwell@codesourcery.com>
28533
28534 * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
28535 version number to five.
28536
28537 2009-01-22 Dodji Seketeli <dodji@redhat.com>
28538
28539 PR c++/38930
28540 * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
28541 * c-common.c (set_underlying_type): Likewise.
28542 (is_typedef_decl ): Likewise
28543 * tree.h: Likewise
28544 (set_underlying_type): Likewise.
28545 (is_typedef_type): Likewise.
28546
28547 2009-01-21 Vladimir Makarov <vmakarov@redhat.com>
28548
28549 PR middle-end/38587
28550 * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
28551 crossing setjmps.
28552
28553 2009-01-21 Dave Korn <dave.korn.cygwin@gmail.com>
28554
28555 PR bootstrap/37660
28556 * config/i386/cygwin.h (SHARED_LIBGCC_SPEC): New helper macro.
28557 (LIBGCC_SPEC): Don't define.
28558 (REAL_LIBGCC_SPEC): Define instead, using SHARED_LIBGCC_SPEC.
28559
28560 2009-01-21 Uros Bizjak <ubizjak@gmail.com>
28561
28562 PR rtl-optimization/38879
28563 * alias.c (base_alias_check): Unaligned access via AND address can
28564 alias all surrounding object types except those with sizes equal
28565 or wider than the size of unaligned access.
28566
28567 2009-01-21 Dodji Seketeli <dodji@redhat.com>
28568
28569 PR c++/26693
28570 * c-decl.c (clone_underlying_type): Move this ...
28571 * c-common.c (set_underlying_type): ... here.
28572 Also, make sure the function properly sets TYPE_STUB_DECL() on
28573 the newly created typedef variant type.
28574 (is_typedef_decl ): New entry point.
28575 * tree.h: Added a new member member_types_needing_access_check to
28576 struct tree_decl_non_common.
28577 (set_underlying_type): New entry point.
28578 (is_typedef_type): Likewise.
28579
28580 2009-01-21 Bingfeng Mei <bmei@broadcom.com>
28581
28582 * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
28583 Check whether two instructions have memory references that
28584 belong to conflicting alias sets. walk_mems_1 and walk_mems_2
28585 are helper functions for traversing.
28586 * alias.h (insn_alias_sets_confilict_p): New prototypes.
28587 * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
28588 not to draw dependency edge for instructions with non-conflicting
28589 alias sets.
28590
28591 2009-01-20 Joseph Myers <joseph@codesourcery.com>
28592
28593 PR other/38758
28594 * longlong.h: Update copyright years. Use soft-fp license notice.
28595 Sync __clz_tab declaration with glibc.
28596
28597 2009-01-20 Steve Ellcey <sje@cup.hp.com>
28598
28599 PR target/30687
28600 * doc/extend.texi (syscall_linkage): New.
28601 (version_id): Modify.
28602
28603 2009-01-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
28604 Richard Guenther <rguenther@suse.de>
28605
28606 PR tree-optimization/38747
28607 PR tree-optimization/38748
28608 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
28609 conversion if the base address is an indirect reference and the
28610 aliasing sets could cause issues.
28611
28612 2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
28613
28614 * common.opt (fgraphite, fgraphite-identity): Add comment for
28615 explaining why these options are not documented.
28616
28617 2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
28618
28619 * graphite.c (stmt_simple_for_scop_p): Also handle cases when
28620 gimple_call_lhs is NULL.
28621
28622 2009-01-20 Paolo Bonzini <bonzini@gnu.org>
28623
28624 PR target/38868
28625 * emit-rtl.c (adjust_address_1): Make sure memref is never
28626 overwritten.
28627
28628 2009-01-20 Ben Elliston <bje@au.ibm.com>
28629
28630 * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28631 const qualifier from arg parameter. Remove unnecessary cast to char *.
28632 * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
28633 const qualifier from arg 2.
28634
28635 2009-01-19 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
28636
28637 * config/darwin.h: Add static-libgfortran to LINK_SPEC.
28638
28639 2009-01-19 Vladimir Makarov <vmakarov@redhat.com>
28640
28641 PR c/38869
28642 * rtl.h (reinit_regs): New prototype.
28643 * regclass.c: Include ira.h.
28644 (reinit_regs): New.
28645 * Makefile.in (regclass.o): Add ira.h.
28646 * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
28647
28648 2009-01-18 H.J. Lu <hongjiu.lu@intel.com>
28649
28650 PR target/38736
28651 * c-common.c (handle_aligned_attribute): Use
28652 ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
28653 default alignment value.
28654
28655 * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
28656
28657 * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
28658 * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
28659
28660 * doc/extend.texi: Update __attribute__ ((aligned)). Document
28661 __BIGGEST_ALIGNMENT__.
28662
28663 * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
28664
28665 2009-01-18 Richard Guenther <rguenther@suse.de>
28666
28667 PR tree-optimization/38819
28668 * tree-flow.h (operation_could_trap_helper_p): Declare.
28669 * tree-eh.c (operation_could_trap_helper_p): Export.
28670 * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
28671 * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
28672 * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
28673 are about to insert a possibly trapping instruction and fail
28674 in this case.
28675
28676 2009-01-18 Andreas Schwab <schwab@suse.de>
28677
28678 * doc/install.texi (Configuration): Remove obsolete paragraph
28679 about use of --with-gnu-ld with --with-gnu-as.
28680
28681 2009-01-18 Kazu Hirata <kazu@codesourcery.com>
28682
28683 * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
28684 doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
28685 Follow spelling conventions.
28686
28687 2009-01-18 Ben Elliston <bje@au.ibm.com>
28688
28689 * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
28690 C++ warning about implicit conversion from void * to struct
28691 bitmap_head_def *.
28692 (bitmap_obstack_free): Likewise for bitmap_element *.
28693 * Makefile.in (bitmap.o-warn): Remove.
28694
28695 2009-01-17 Dave Korn <dave.korn.cygwin@gmail.com>
28696
28697 * Makefile.in (BACKENDLIBS): Reorder to match dependencies.
28698
28699 2009-01-17 Sebastian Pop <sebastian.pop@amd.com>
28700 Tobias Grosser <tobi.grosser@amd.com>
28701
28702 * graphite.c (graphite_trans_scop_block): Do not block single
28703 nested loops.
28704
28705 2009-01-16 Alexandre Oliva <aoliva@redhat.com>
28706
28707 * ebitmap.h (ebitmap_iter_init): Initialize all fields.
28708 * ipa-struct-reorg.c (gen_struct_type): Replace known-true
28709 test with assertion.
28710
28711 2009-01-16 Richard Guenther <rguenther@suse.de>
28712
28713 PR tree-optimization/38835
28714 PR middle-end/36227
28715 * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
28716 and INT + PTR -> (INT)(PTR p+ INT) folding.
28717 * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
28718
28719 2009-01-16 Adam Nemet <anemet@caviumnetworks.com>
28720
28721 PR target/38554
28722 * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
28723 the subreg from a lowpart subreg if it is also casting the value.
28724
28725 2009-01-16 Sebastian Pop <sebastian.pop@amd.com>
28726 Tobias Grosser <tobi.grosser@amd.com>
28727
28728 * graphite.c (compare_prefix_loops): New.
28729 (build_scop_canonical_schedules): Rewritten.
28730 (graphite_transform_loops): Move build_scop_canonical_schedules
28731 after build_scop_iteration_domain.
28732
28733 2009-01-16 Sebastian Pop <sebastian.pop@amd.com>
28734 Tobias Grosser <tobi.grosser@amd.com>
28735
28736 * graphite.c (add_conditions_to_domain): Add the loops to
28737 the dimension of the iteration domain. Do copy the domain
28738 only when it exists.
28739 (build_scop_conditions_1): Do not call add_conditions_to_domain.
28740 (add_conditions_to_constraints): New.
28741 (can_generate_code_stmt, can_generate_code): Removed.
28742 (gloog): Do not call can_generate_code.
28743 (graphite_transform_loops): Call add_conditions_to_constraints
28744 after building the iteration domain.
28745
28746 2009-01-16 Jakub Jelinek <jakub@redhat.com>
28747
28748 PR tree-optimization/38789
28749 * tree-ssa-threadedge.c
28750 (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
28751 __builtin_constant_p.
28752
28753 2009-01-16 Kenneth Zadeck <zadeck@naturalbridge.com>
28754
28755 * dce.c (delete_unmarked_insns): Reversed the order that insns are
28756 examined before deleting them.
28757
28758 2009-01-16 Richard Earnshaw <rearnsha@arm.com>
28759
28760 * function.c (aggregate_value_p): Correctly extract the function
28761 type from CALL_EXPR_FN lookup.
28762
28763 2009-01-16 Hariharan Sandanagobalane <hariharan@picochip.com>
28764
28765 * config/picochip/picochip.c (picochip_override_options): Revert
28766 CFI asm flag disable commited previously.
28767
28768 2009-01-15 Sebastian Pop <sebastian.pop@amd.com>
28769 Tobias Grosser <tobi.grosser@amd.com>
28770 Jan Sjodin <jan.sjodin@amd.com>
28771
28772 * graphite.c (scan_tree_for_params): On substractions negate
28773 all the coefficients of the term.
28774 (clast_to_gcc_expression_red): New. Handle reduction expressions
28775 of more than two operands.
28776 (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
28777 (get_vdef_before_scop): Handle also the case of default definitions.
28778
28779 2009-01-15 Richard Sandiford <rdsandiford@googlemail.com>
28780
28781 * caller-save.c (add_used_regs_1, add_used_regs): New functions.
28782 (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
28783 Also use them when walking CALL_INSN_FUNCTION_USAGE.
28784
28785 2009-01-15 H.J. Lu <hongjiu.lu@intel.com>
28786 Joey Ye <joey.ye@intel.com>
28787
28788 PR middle-end/37843
28789 * cfgexpand.c (expand_stack_alignment): Don't update stack
28790 boundary nor check incoming stack boundary here.
28791 (gimple_expand_cfg): Update stack boundary and check incoming
28792 stack boundary here.
28793
28794 2009-01-15 Kenneth Zadeck <zadeck@naturalbridge.com>
28795
28796 * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
28797
28798 2009-01-14 Jakub Jelinek <jakub@redhat.com>
28799
28800 PR rtl-optimization/38245
28801 * calls.c (expand_call): Add stack arguments to
28802 CALL_INSN_FUNCTION_USAGE even for pure calls (when
28803 ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
28804 in regs and partially in memory or BLKmode arguments.
28805 (emit_library_call_value_1): Add stack arguments to
28806 CALL_INSN_FUNCTION_USAGE even for pure calls (when
28807 ACCUMULATE_OUTGOING_ARGS).
28808 * dce.c: Include tm_p.h.
28809 (find_call_stack_args): New function.
28810 (deletable_insn_p): Call it for CALL_P insns. Add ARG_STORES
28811 argument.
28812 (mark_insn): Call find_call_stack_args for CALL_Ps.
28813 (prescan_insns_for_dce): Walk insns backwards in bb rather than
28814 forwards. Allocate and free arg_stores bitmap if needed, pass it
28815 down to deletable_insn_p, don't mark stores set in arg_stores
28816 bitmap, clear the bitmap at the beginning of each bb.
28817 * Makefile.in (dce.o): Depend on $(TM_P_H).
28818
28819 2009-01-14 Michael Meissner <gnu@the-meissners.org>
28820
28821 PR target/22599
28822 * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
28823 to make sure the insn is a conditional test (bug 22599). Reformat a
28824 few long lines.
28825
28826 2009-01-14 Sebastian Pop <sebastian.pop@amd.com>
28827
28828 PR middle-end/38431
28829 * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
28830 (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
28831 (gloog): Do not call cleanup_tree_cfg.
28832 (graphite_transform_loops): Call cleanup_tree_cfg after all
28833 scops have been code generated.
28834
28835 2009-01-14 Basile Starynkevitch <basile@starynkevitch.net>
28836 * doc/gty.texi (Invoking the garbage collector): Added new node
28837 and section documenting ggc_collect.
28838
28839 2009-01-14 Richard Guenther <rguenther@suse.de>
28840
28841 PR tree-optimization/38826
28842 PR middle-end/38477
28843 * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
28844 initialization notes only if we actually emitted a warning.
28845 (intra_create_variable_infos): Add constraints for a result decl
28846 that is passed by hidden reference.
28847 (build_pred_graph): Mark all related variables non-direct on
28848 address-taking.
28849
28850 2009-01-14 Nick Clifton <nickc@redhat.com>
28851
28852 * ira-conflicts.c: Include addresses.h for the definition of
28853 base_reg_class.
28854 (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
28855 * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
28856
28857 2009-01-13 Vladimir Makarov <vmakarov@redhat.com>
28858
28859 PR target/38811
28860 * Makefile.in (ira-lives.o): Add except.h.
28861
28862 * ira-lives.c: Include except.h.
28863 (process_bb_node_lives): Process can_throw_internal.
28864
28865 2009-01-13 Jakub Jelinek <jakub@redhat.com>
28866
28867 PR rtl-optimization/38774
28868 * combine.c (simplify_set): When undoing cc_use change, don't do
28869 PUT_CODE on the newly created comparison, but instead put back the
28870 old comparison.
28871
28872 2009-01-13 Joseph Myers <joseph@codesourcery.com>
28873
28874 * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
28875 values. Remove duplicate arm8 entry.
28876
28877 2009-01-13 Sebastian Pop <sebastian.pop@amd.com>
28878
28879 PR tree-optimization/38786
28880 * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
28881 the SSA_NAME case of expand_scalar_variables_expr.
28882 Set the type of an expression to the type of its assign statement.
28883 (expand_scalar_variables_expr): Also gather the scalar computation
28884 used to index the memory access. Do not pass loop_p.
28885 Fix comment. Stop recursion on tcc_constant or tcc_declaration.
28886 (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
28887 the gimple_stmt_iterator where it inserts new code.
28888 Do not pass loop_p.
28889 (copy_bb_and_scalar_dependences): Do not pass loop_p.
28890 (translate_clast): Update call to copy_bb_and_scalar_dependences.
28891
28892 2009-01-13 Sebastian Pop <sebastian.pop@amd.com>
28893
28894 * graphite.h (debug_value): Removed.
28895 * graphite.c (debug_value): Removed.
28896
28897 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
28898
28899 * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
28900 ldrd/strd with two 32-bit instructions.
28901
28902 2009-01-13 Richard Earnshaw <rearnsha@arm.com>
28903
28904 * config/arm/arm.c (struct processors): Pass for speed down into
28905 cost helper functions.
28906 (const_ok_for_op): Handle COMPARE and inequality nodes.
28907 (arm_rtx_costs_1): Rewrite.
28908 (arm_size_rtx_costs): Update prototype.
28909 (arm_rtx_costs): Pass speed down to helper functions.
28910 (arm_slowmul_rtx_costs): Rework cost calculations.
28911 (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
28912 (arm_9e_rtx_costs): Likewise.
28913
28914 2009-01-13 Uros Bizjak <ubizjak@gmail.com>
28915
28916 * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
28917 relocations of local symbols wider than UNITS_PER_WORD are not valid.
28918 (alpha_legitimize_address): Do not split local symbols wider than
28919 UNITS_PER_WORD into HIGH/LO_SUM parts.
28920
28921 2009-01-13 Danny Smith <dannysmith@users.sourceforge.net>
28922
28923 PR bootstrap/38580
28924 * gcc.c (process_command): Replace call to execvp with calls
28925 to pex_one and exit.
28926
28927 2009-01-03 Anatoly Sokolov <aesok@post.ru>
28928
28929 PR target/29141
28930 * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
28931 * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
28932 variant for devices with 3-byte PC.
28933 (__tablejump_elpm__): New.
28934
28935 2009-01-12 Jakub Jelinek <jakub@redhat.com>
28936
28937 PR c/32041
28938 * c-parser.c (c_parser_postfix_expression): Allow `->' in
28939 offsetof member-designator, handle it as `[0].'.
28940
28941 2009-01-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
28942
28943 * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
28944 function when not using named sections on targets with named sections
28945 if branch distance is less than 262132.
28946
28947 2009-01-12 Richard Earnshaw <rearnsha@arm.com>
28948
28949 * combine.c (combine_instructions): Recompute
28950 optimize_this_for_speed_p for each BB in the main combine loop.
28951
28952 2009-01-12 Tomas Bily <tbily@suse.cz>
28953
28954 PR middlend/38385
28955 * tree-loop-distribution.c (prop_phis): New function.
28956 (generate_builtin): Call prop_phis.
28957
28958 2009-01-12 Jakub Jelinek <jakub@redhat.com>
28959
28960 PR tree-optimization/38807
28961 * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
28962 gimple_visited_p unless stmt is GIMPLE_ASSIGN.
28963
28964 2009-01-11 Adam Nemet <anemet@caviumnetworks.com>
28965
28966 * expmed.c (store_bit_field_1): Properly truncate the paradoxical
28967 subreg of op0 to the original op0.
28968
28969 2009-01-11 Laurent GUERBY <laurent@guerby.net>
28970
28971 * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
28972
28973 2009-01-11 Markus Schoepflin <markus.schoepflin@comsoft.de>
28974
28975 PR debug/7055
28976 * mips-tfile.c (parse_def): Fix parsing of def strings
28977 starting with digits.
28978
28979 2009-01-10 Jakub Jelinek <jakub@redhat.com>
28980
28981 PR target/38695
28982 * config/arm/arm.c (arm_is_long_call_p): Don't call
28983 arm_function_in_section_p if decl isn't a FUNCTION_DECL.
28984
28985 2009-01-09 Steven Bosscher <steven@gcc.gnu.org>
28986
28987 * regrename.c (regrename_optimize): Fix dumping.
28988 (find_oldest_value_reg): Preserve REG_POINTER.
28989 (copy_hardreg_forward_1): Likewise.
28990
28991 2009-01-09 Diego Novillo <dnovillo@google.com>
28992
28993 * gimple.h (struct gimple_statement_base) <uid>: Document
28994 the restrictions on its use.
28995 (gimple_uid): Tidy.
28996 (gimple_set_uid): Tidy.
28997
28998 2009-01-09 Jakub Jelinek <jakub@redhat.com>
28999
29000 * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
29001 zero guard even if align_bytes != 0 and count is smaller than
29002 size_needed.
29003
29004 2009-01-09 Vladimir Makarov <vmakarov@redhat.com>
29005
29006 PR rtl-optimization/38495
29007 * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
29008 (add_range_and_copies_from_move_list): Print all added ranges.
29009 Add ranges to memory optimized destination.
29010
29011 2009-01-09 Jakub Jelinek <jakub@redhat.com>
29012
29013 PR target/38686
29014 PR target/38708
29015 * config/i386/i386.c (override_options): Reject
29016 -mstringop-strategy=rep_8byte with -m32.
29017 (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
29018 to 1. Do count comparison against epilogue_size_needed at compile
29019 time even when count_exp was constant forced into register. For
29020 size_needed don't jump to epilogue, instead just avoid aligning
29021 and invoke the body algorithm. If need_zero_guard, add zero guard
29022 even if count is non-zero, but smaller than size_needed + number of
29023 bytes that could be stored for alignment.
29024 (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
29025 to 1. If need_zero_guard, add zero guard even if count is non-zero,
29026 but smaller than size_needed + number of bytes that could be stored
29027 for alignment. Compare size_needed with epilogue_size_needed instead
29028 of desired_align - align, don't adjust size_needed, pass
29029 epilogue_size_needed to the epilogue expanders.
29030
29031 PR c/35742
29032 * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
29033
29034 2009-01-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
29035
29036 * pa.c (last_address): Change to unsigned.
29037 (update_total_code_bytes): Change argument to unsigned. Don't
29038 check if insn addresses are set.
29039 (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
29040 addresses are not set.
29041 (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
29042
29043 2009-01-09 Nick Clifton <nickc@redhat.com>
29044
29045 * config/sh/symbian.c: Replace uses of DECL_INLINE with
29046 DECL_DECLARED_INLINE_P.
29047
29048 2009-01-09 Jakub Jelinek <jakub@redhat.com>
29049
29050 PR middle-end/38347
29051 * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
29052 GET_MODE (op0) in operand_subword_force calls.
29053
29054 PR middle-end/38771
29055 * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
29056 fold_convert arg0 operands to TREE_TYPE (op0) first.
29057
29058 2009-01-08 Vladimir Makarov <vmakarov@redhat.com>
29059
29060 * params.def (ira-max-conflict-table-size): Decrease default value
29061 to 1000.
29062
29063 2009-01-08 Jakub Jelinek <jakub@redhat.com>
29064
29065 PR tree-optimization/37031
29066 * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
29067 on parameter_set.
29068 (build_access_matrix): Reserve correct size for AM_MATRIX vector,
29069 allocate it using gc instead of heap, use VEC_quick_push instead of
29070 VEC_safe_push.
29071 * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
29072 instead of heap, use VEC_quick_push instead of VEC_safe_push.
29073 * tree-data-ref.h (struct access_matrix): Change matrix to gc
29074 allocated vector from heap allocated.
29075 * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
29076 * tree-loop-linear.c (linear_transform_loops): Allocate nest
29077 vector only after perfect_loop_nest_depth call.
29078
29079 2009-01-08 Sebastian Pop <sebastian.pop@amd.com>
29080 Jan Sjodin <jan.sjodin@amd.com>
29081
29082 PR tree-optimization/38559
29083 * graphite.c (debug_value, copy_constraint,
29084 swap_constraint_variables, scale_constraint_variable, ): New.
29085 (get_lower_bound, get_upper_bound): Removed.
29086 (graphite_trans_bb_strip_mine): Clean up this code that works
29087 only for constant number of iterations. Fully copy upper and
29088 lower bound constraints, not only the constant part of them.
29089 * graphite.h (debug_value): Declared.
29090
29091 2009-01-08 Ira Rosen <irar@il.ibm.com>
29092
29093 PR tree-optimization/37194
29094 * tree-vect-transform.c (vect_estimate_min_profitable_iters):
29095 Don't add the cost of cost model guard in prologue to scalar
29096 outside cost in case of known number of iterations.
29097
29098 2009-01-07 Nathan Froyd <froydnj@codesourcery.com>
29099 Alan Modra <amodra@bigpond.net.au>
29100
29101 * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
29102 non-word-aligned REG+CONST addressing.
29103
29104 2009-01-07 Uros Bizjak <ubizjak@gmail.com>
29105
29106 PR target/38706
29107 * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
29108 free_after_compilation when outputting a thunk.
29109 (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
29110 Do not call free_after_compilation here.
29111
29112 2009-01-07 Uros Bizjak <ubizjak@gmail.com>
29113
29114 * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
29115 (ix86_valid_target_attribute_inner_p): Ditto.
29116
29117 2009-01-07 Jan Sjodin <jan.sjodin@amd.com>
29118
29119 PR tree-optimization/38492
29120 PR tree-optimization/38498
29121 * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
29122 * tree-chrec.h (scev_is_linear_expression): Declared.
29123 * graphite.c (graphite_cannot_represent_loop_niter): New.
29124 (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
29125 (graphite_loop_normal_form): Use gcc_assert.
29126 (scan_tree_for_params): Use CASE_CONVERT.
29127 (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
29128 (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
29129 Use gcc_assert. Discard scops that contain unhandled cases.
29130 (build_scop_conditions): Return a boolean status for unhandled cases.
29131 (strip_mine_profitable_p): Print the loop number, not its depth.
29132 (is_interchange_valid): Pass the depth of the loop nest, don't
29133 recompute it wrongly.
29134 (graphite_trans_bb_block): Same.
29135 (graphite_trans_bb_block): Print tentative of loop blocking.
29136 (graphite_trans_scop_block): Do not print that the loop has been
29137 blocked.
29138 (graphite_transform_loops): Do not handle scops that contain condition
29139 scalar phi nodes.
29140
29141 2009-01-07 H.J. Lu <hongjiu.lu@intel.com>
29142
29143 AVX Programming Reference (December, 2008)
29144 * config/i386/avxintrin.h (_mm256_stream_si256): New.
29145 (_mm256_stream_pd): Likewise.
29146 (_mm256_stream_ps): Likewise.
29147
29148 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
29149 IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
29150 (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
29151 (bdesc_special_args): Add __builtin_ia32_movntdq256,
29152 __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
29153 (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
29154 (ix86_expand_special_args_builtin): Likewise.
29155
29156 * config/i386/sse.md (AVXMODEDI): New.
29157 (avx_movnt<mode>): Likewise.
29158 (avx_movnt<mode>): Likewise.
29159 (<sse>_movnt<mode>): Remove AVX support.
29160 (sse2_movntv2di): Likewise.
29161
29162 2009-01-07 Richard Guenther <rguenther@suse.de>
29163
29164 PR middle-end/38751
29165 * fold-const.c (extract_muldiv): Remove obsolete comment.
29166 (fold_plusminus_mult_expr): Undo MINUS_EXPR
29167 to PLUS_EXPR canonicalization for the canonicalization.
29168
29169 2009-01-07 Gerald Pfeifer <gerald@pfeifer.com>
29170
29171 * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
29172 hosted cross-compilers generating less efficient code.
29173
29174 2009-01-06 Richard Sandiford <rdsandiford@googlemail.com>
29175
29176 * function.h (rtl_data): Add a dbr_scheduled_p field.
29177 * reorg.c (dbr_schedule): Set it.
29178 (gate_handle_delay_slots): Check it.
29179 * config/mips/mips.c (mips_base_delayed_branch): Delete.
29180 (mips_reorg): Check flag_delayed_branch instead of
29181 mips_base_delayed_branch.
29182 (mips_override_options): Don't set mips_base_delayed_branch
29183 or flag_delayed_branch.
29184
29185 2009-01-06 Richard Sandiford <rdsandiford@googlemail.com>
29186
29187 PR rtl-optimization/38426.
29188 * ira.c (ira): Set current_function_is_leaf earlier.
29189
29190 2009-01-06 Jakub Jelinek <jakub@redhat.com>
29191
29192 PR rtl-optimization/38722
29193 * combine.c (try_combine): Don't modify PATTERN (i3) and notes
29194 too early, only set a flag and modify after last possible
29195 undo_all point.
29196
29197 2009-01-06 Janis Johnson <janis187@us.ibm.com>
29198
29199 PR c/34252
29200 * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
29201 * real.c (decimal_single_format): Correct values of emin and emax.
29202 (decimal_double_format): Ditto.
29203 (decimal_quad_format): Ditto.
29204 * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
29205 computation of DECnn_MIN and DECnn_MAX for corrected values of
29206 emin and emax. Define __DECnn_SUBNORMAL_MIN__ instead of
29207 __DECnn_MIN__, and adjust its computation for the corrected value
29208 of emin.
29209
29210 2009-01-06 Jan Hubicka <jh@suse.cz>
29211
29212 PR target/38744
29213 * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
29214
29215 2009-01-06 Gerald Pfeifer <gerald@pfeifer.com>
29216
29217 * doc/contrib.texi (Contributors): Slightly adjust the end note.
29218 Add Robert Clark to the list of testers.
29219
29220 2009-01-06 Jan Hubicka <jh@suse.cz>
29221 Kai Tietz <kai.tietz@onevision.com>
29222
29223 * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
29224 * config/i386/i386.c (ix86_expand_call): Add clobbers.
29225
29226 2009-01-06 Jan Hubicka <jh@suse.cz>
29227 Kai Tietz <kai.tietz@onevision.com>
29228
29229 * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
29230 for w64 ABI.
29231 * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
29232 (ix86_nsaved_regs): Count only general purpose regs.
29233 (ix86_nsaved_sseregs): New.
29234 (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
29235 to 16 for w64; compute padding and size of sse reg save area.
29236 (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
29237 general purpose regs.
29238 (ix86_emit_save_sse_regs_using_mov): New.
29239 (ix86_expand_prologue): Save SSE regs if needed.
29240 (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
29241 (ix86_emit_restore_sse_regs_using_mov): New.
29242 (ix86_expand_epilogue): Save SSE regs if needed.
29243
29244 2009-01-06 Jan Hubicka <jh@suse.cz>
29245 Kai Tietz <kai.tietz@onevision.com>
29246
29247 * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
29248 * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
29249 functions when accumulate outgoing args is off.
29250
29251 2009-01-06 H.J. Lu <hongjiu.lu@intel.com>
29252
29253 PR bootstrap/38742
29254 * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
29255 before using pseudos_have_intersected_live_ranges_p.
29256
29257 * ira-int.h (ira_assert): Always define.
29258
29259 2009-01-06 H.J. Lu <hongjiu.lu@intel.com>
29260
29261 AVX Programming Reference (December, 2008)
29262 * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
29263 (_mm256_permute2_pd): Likewise.
29264 (_mm_permute2_ps): Likewise.
29265 (_mm256_permute2_ps): Likewise.
29266 * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
29267 * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
29268
29269 * config/i386/i386.c (ix86_builtins): Remove
29270 IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
29271 IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
29272 (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
29273 V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
29274 and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
29275 (bdesc_args): Remove __builtin_ia32_vpermil2pd,
29276 __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
29277 __builtin_ia32_vpermil2ps256.
29278 (ix86_init_mmx_sse_builtins): Updated.
29279 (ix86_expand_args_builtin): Likewise.
29280
29281 2009-01-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
29282
29283 * pa.c (output_call): Relocate non-jump insns in the delay slot of
29284 long absolute calls when generating PA 2.0 code.
29285
29286 2009-01-05 Vladimir Makarov <vmakarov@redhat.com>
29287
29288 PR rtl-optimization/38583
29289 * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
29290
29291 * params.def (ira-max-conflict-table-size): New.
29292
29293 * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
29294
29295 * ira.h (ira_conflicts_p): New external definition.
29296
29297 * ira-conflicts.c (build_conflict_bit_table): Do not build too big
29298 table. Report this. Return result of building.
29299 (ira_build_conflicts): Use ira_conflicts_p. Check result of
29300 building conflict table.
29301
29302 * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
29303 (ira_color): Use ira_conflicts_p.
29304
29305 * global.c: Include ira.h.
29306 (pseudo_for_reload_consideration_p, build_insn_chain): Use
29307 ira_conflicts_p.
29308
29309 * Makefile.in (global.o): Add ira.h.
29310
29311 * ira-build.c (mark_all_loops_for_removal,
29312 propagate_some_info_from_allocno): New.
29313 (remove_unnecessary_allocnos): Call
29314 propagate_some_info_from_allocno.
29315 (remove_low_level_allocnos): New.
29316 (remove_unnecessary_regions): Add parameter. Call
29317 mark_all_loops_for_removal and remove_low_level_allocnos. Pass
29318 parameter to remove_unnecessary_regions.
29319 (ira_build): Remove all regions but root if the conflict table was
29320 not built. Update conflict hard regs for allocnos crossing calls.
29321
29322 * ira.c (ira_conflicts_p): New global.
29323 (ira): Define and use ira_conflicts_p.
29324
29325 * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
29326 count_spilled_pseudo, find_reg, alter_reg, finish_spills,
29327 emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
29328
29329 2009-01-06 Ben Elliston <bje@au.ibm.com>
29330
29331 * gengtype-lex.l (YY_NO_INPUT): Define.
29332
29333 2009-01-05 Andrew Pinski <andrew_pinski@playstation.sony.com>
29334
29335 PR c/34911
29336 * c-common.c (handle_vector_size_attribute): Also reject
29337 BOOLEAN_TYPE types.
29338
29339 2009-01-05 Sebastian Pop <sebastian.pop@amd.com>
29340
29341 PR tree-optimization/38492
29342 * graphite.c (rename_map_elt, debug_rename_elt,
29343 debug_rename_map_1, debug_rename_map, new_rename_map_elt,
29344 rename_map_elt_info, eq_rename_map_elts,
29345 get_new_name_from_old_name, bb_in_sese_p): Moved around.
29346 (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
29347 (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
29348 (sese_build_livein_liveouts): New.
29349 (new_sese, free_sese): New.
29350 (new_scop): Call new_sese.
29351 (free_scop): Call free_sese.
29352 (rename_variables_from_edge, rename_phis_end_scop): Removed.
29353 (register_old_new_names): Renamed register_old_and_new_names.
29354 (register_scop_liveout_renames, add_loop_exit_phis,
29355 insert_loop_close_phis, struct igp,
29356 default_liveout_before_guard, add_guard_exit_phis,
29357 insert_guard_phis, copy_renames): New.
29358 (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
29359 (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
29360 (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
29361 (scop_adjust_phis_for_liveouts): New.
29362 (gloog): Call scop_adjust_phis_for_liveouts.
29363
29364 * graphite.h (struct sese): Documented. Added fields liveout,
29365 num_ver and livein.
29366 (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
29367 (new_sese, free_sese, sese_build_livein_liveouts): Declared.
29368 (struct scop): Added field liveout_renames.
29369 (SCOP_LIVEOUT_RENAMES): New.
29370
29371 2009-01-05 Harsha Jagasia <harsha.jagasia@amd.com>
29372
29373 PR tree-optimization/38510
29374 * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
29375 (translate_clast): Call recompute_all_dominators before
29376 graphite_verify.
29377 (gloog): Call recompute_all_dominators before graphite_verify.
29378
29379 2009-01-05 Harsha Jagasia <harsha.jagasia@amd.com>
29380 Jan Sjodin <jan.sjodin@amd.com>
29381
29382 PR tree-optimization/38500
29383 * graphite.c (create_sese_edges): Call fix_loop_structure after
29384 splitting blocks.
29385
29386 2009-01-05 Joel Sherrill <joel.sherrill@oarcorp.com>
29387
29388 * config.gcc: Add m32r*-*-rtems*.
29389 * config/m32r/rtems.h: New file.
29390
29391 2009-01-05 Ben Elliston <bje@au.ibm.com>
29392
29393 * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
29394 (.po.pox): Likewise.
29395 (po/gcc.pot): Likewise.
29396
29397 2009-01-04 David S. Miller <davem@davemloft.net>
29398
29399 * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
29400 (STARTING_FRAME_OFFSET): Always set to zero.
29401
29402 2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
29403
29404 * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
29405 * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
29406 fixed-point types, and vectors of the same.
29407
29408 2009-01-04 Richard Sandiford <rdsandiford@googlemail.com>
29409
29410 * config/mips/sync.md (*mb_barrier): Rename to...
29411 (*memory_barrier): ...this.
29412
29413 2009-01-04 Jonathan Wakely <jwakely.gcc@gmail.com>
29414
29415 * doc/extend.texi (Function Attributes): Move @cindex after @item
29416 for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
29417 and put in alphabetical order. Fix 'target' name and put in order.
29418 * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
29419 typos.
29420
29421 2009-01-04 Uros Bizjak <ubizjak@gmail.com>
29422
29423 * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
29424 (memory_barrier): Expand as unspec instead of unspec_volatile.
29425 Remove mem:BLK from insn operands. Use Pmode scratch register.
29426 (*memory_barrier): Define as unspec instead of unspec_volatile.
29427 Use (match_dup 0) as input operand.
29428
29429 * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
29430 * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
29431 unspec_volatile. Remove mem:BLK from insn operands. Use Pmode
29432 scratch register. Remove operand 1.
29433 (*stbar): Define as unspec instead of unspec_volatile.
29434 Use (match_dup 0) as input operand, remove (const_int 8).
29435 (*membar): Define as unspec instead of unspec_volatile.
29436 Use (match_dup 0) as input operand, remove input operand 2.
29437
29438 * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
29439 (memory_barrier): Expand as unspec instead of unspec_volatile.
29440 Remove mem:BLK from insn operands. Use Pmode scratch register.
29441 (*memory_barrier): Define as unspec instead of unspec_volatile.
29442 Use (match_dup 0) as input operand.
29443
29444 * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
29445 Remove mem:BLK from insn operands. Use Pmode scratch register.
29446 Set volatile flag on operand 0.
29447 (*memory_barrier): New insn pattern.
29448
29449 * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
29450 insn operands.
29451 (*memory_barrier): Use (match_dup 0) as input operand.
29452
29453 * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
29454 Remove mem:BLK from insn operands. Use Pmode scratch register.
29455 Set volatile flag on operand 0.
29456 (*mb_internal): New insn pattern.
29457
29458 * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
29459
29460 2009-01-04 Steven Bosscher <steven@gcc.gnu.org>
29461
29462 PR middle-end/38586
29463 * function.c (struct temp_slot): Move to the section of the file
29464 that deals with temp slots. Remove field 'address'.
29465 (temp_slot_address_table): New hash table of address -> temp slot.
29466 (struct temp_slot_address_entry): New struct, items for the table.
29467 (temp_slot_address_compute_hash, temp_slot_address_hash,
29468 temp_slot_address_eq, insert_temp_slot_address): Support functions
29469 for the new table.
29470 (find_temp_slot_from_address): Rewrite to use the new hash table.
29471 (remove_unused_temp_slot_addresses): Remove addresses of temp
29472 slots that have been made available.
29473 (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
29474 worker function for remove_unused_temp_slot_addresses.
29475 (assign_stack_temp_for_type): Don't clear the temp slot address list.
29476 Add the temp slot address to the address -> temp slot map.
29477 (update_temp_slot_address): Update via insert_temp_slot_address.
29478 (free_temp_slots): Call remove_unused_temp_slot_addresses.
29479 (pop_temp_slots): Likewise.
29480 (init_temp_slots): Allocate the address -> temp slot map, or empty
29481 the map if it is already allocated.
29482 (prepare_function_start): Initialize temp slot processing.
29483
29484 2009-01-04 Steven Bosscher <steven@gcc.gnu.org>
29485
29486 PR middle-end/38584
29487 * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
29488 Calculate the size of all stack vars assuming no packing of stack
29489 vars will happen, replacing a quadratic algorithm with a linear one.
29490
29491 2009-01-03 Jakub Jelinek <jakub@redhat.com>
29492
29493 PR target/38707
29494 * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
29495 can't be used.
29496
29497 2009-01-03 Diego Novillo <dnovillo@google.com>
29498
29499 * doc/contrib.texi: Update contributions.
29500
29501 2009-01-03 Jakub Jelinek <jakub@redhat.com>
29502
29503 PR c++/38705
29504 * builtins.c (fold_builtin_memory_op): Give up if either operand
29505 is volatile. Set srctype or desttype to non-qualified version
29506 of the other type.
29507
29508 PR c/38700
29509 * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
29510 and FUNCTION_DECLs.
29511
29512 2009-01-02 Kenneth Zadeck <zadeck@naturalbridge.com>
29513
29514 PR rtl-optimization/35805
29515 * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
29516 problem if fast dce is able to remove any instructions.
29517 * dce.c (dce_process_block): Fix dump message.
29518
29519 2009-01-02 Mark Mitchell <mark@codesourcery.com>
29520
29521 PR 33649
29522 * tree-ssa-pre.c (compute_antic): Correct loop bounds.
29523
29524 2009-01-02 Jakub Jelinek <jakub@redhat.com>
29525
29526 PR middle-end/38690
29527 * tree-flow.h (op_code_prio, op_prio): New prototypes.
29528 * tree-pretty-print.c (op_code_prio): New function.
29529 (op_prio): No longer static. Use op_code_prio.
29530 * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
29531 Use op_prio and op_code_prio to determine if () should be
29532 printed around operand(s) or not.
29533
29534 * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
29535 dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
29536 dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
29537 dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
29538 pp_character instead of pp_string for single letter printing.
29539
29540 2009-01-02 Richard Sandiford <rdsandiford@googlemail.com>
29541
29542 * doc/extend.texi: Fix '#pragma GCC option' typo.
29543
29544 2009-01-02 Richard Guenther <rguenther@suse.de>
29545
29546 * doc/install.texi (--enable-checking): Mention different
29547 default for stage1.
29548 (--enable-stage1-checking): Document.
29549
29550 2009-01-01 Andrew Pinski <pinskia@gmail.com>
29551
29552 PR middle-end/30142
29553 * tree-cfg.c (verify_expr): Add INDIRECT_REF case. Change MODIFY_EXPR
29554 case to be an error.
29555
29556 2009-01-02 Ben Elliston <bje@au.ibm.com>
29557
29558 * config/fp-bit.h (pack_d): Constify argument.
29559 * config/fp-bit.c (makenan): Constify return type. Remove casts.
29560 (isnan): Constify argument.
29561 (isinf): Likewise.
29562 (iszero): Likewise.
29563 (pack_d): Likewise.
29564 (_fpadd_parts): Constify return type.
29565 (_fpmul_parts): Likewise.
29566 (_fpdiv_parts): Likewise.
29567
29568 2009-01-01 Jakub Jelinek <jakub@redhat.com>
29569
29570 PR c/36489
29571 * c-typeck.c (add_pending_init): Add IMPLICIT argument. Only
29572 warn about overwriting initializer with side-effects or
29573 -Woverride-init if !IMPLICIT.
29574 (output_init_element): Likewise. Pass IMPLICIT down to
29575 add_pending_init.
29576 (process_init_element): Add IMPLICIT argument. Pass it down
29577 to output_init_element.
29578 (push_init_element, pop_init_level, set_designator): Adjust
29579 process_init_element callers.
29580 (set_nonincremental_init, set_nonincremental_init_from_string):
29581 Adjust add_pending_init callers.
29582 (output_pending_init_elements): Adjust output_init_element callers.
29583 * c-tree.h (process_init_element): Adjust prototype.
29584 * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
29585 process_init_element callers.
29586
29587 \f
29588 Copyright (C) 2009 Free Software Foundation, Inc.
29589
29590 Copying and distribution of this file, with or without modification,
29591 are permitted in any medium without royalty provided the copyright
29592 notice and this notice are preserved.