re PR target/25864 (Enable IBM long double format in 32-bit PowerPC Linux)
[gcc.git] / gcc / ChangeLog
1 2006-02-03 Andreas Krebbel <krebbel1@de.ibm.com>
2 Ulrich Weigand <uweigand@de.ibm.com>
3
4 PR target/25864
5 * config/s390/2084.md ("x_fsimptf", "x_fmultf", "x_fdivtf",
6 "x_floadtf", "x_ftrunctf", "x_ftruncdf"): New insn reservations.
7 * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): New functions.
8 * config/s390/s390.c (struct processor_costs): Add mxbr, sqxbr, dxbr
9 and dxr fields.
10 (z900_cost, z990_cost, z9_109_cost): Values for the new fields added.
11 (s390_rtx_costs): Use the new fields to calculate rtx costs.
12 (s390_secondary_input_reload_class, s390_secondary_output_reload_class):
13 Define secondary reloads for TFmode moves.
14 (constant_modes): Add TFmode.
15 (NR_C_MODES): Set to 8.
16 * config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Add __LONG_DOUBLE_128__
17 builtin define.
18 (LONG_DOUBLE_TYPE_SIZE): Set to 128 or 64.
19 (LIBGCC2_LONG_DOUBLE_TYPE_SIZE, WIDEST_HARDWARE_FP_SIZE): Define.
20 (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS,
21 CANNOT_CHANGE_MODE_CLASS): Consider TFmode.
22 * config/s390/s390.md ("type" attribute): Add fsimptf, floadtf, fmultf,
23 fdivtf, fsqrttf, ftrunctf, ftruncdf as possible values.
24 (FPR mode macro): Add TFmode.
25 (DSF mode macro): New.
26 (<de>, <dee> mode attributes): Removed.
27 (<xde>, <xdee>, <RRe>, <RXe>, <Rf> mode attributes): New.
28 ("*cmp<mode>_ccs_0", "*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs",
29 "*cmp<mode>_ccs_ibm", "fix_trunc<FPR:mode><GPR:mode>2_ieee",
30 "floatdi<mode>2", "floatsi<mode>2_ieee", "*add<mode>3",
31 "*add<mode>3_cc", "*add<mode>3_cconly", "*add<mode>3_ibm",
32 "*sub<mode>3", "*sub<mode>3_cc", "*sub<mode>3_cconly",
33 "*sub<mode>3_ibm", "*mul<mode>3_ibm", "*fmadd<mode>", "*fmsub<mode>",
34 "*div<mode>3", "*div<mode>3_ibm", "*neg<mode>2_cc",
35 "*neg<mode>2_cconly", "*neg<mode>2", "*neg<mode>2_ibm",
36 "*abs<mode>2_cc", "*abs<mode>2_cconly", "*abs<mode>2",
37 "*abs<mode>2_ibm", "*negabs<mode>2_cc", "*negabs<mode>2_cconly",
38 "*negabs<mode>2", "sqrt<mode>2"):
39 Changed <de> to <xde>. R constraint replaced by <Rf>.
40 ("*mul<mode>3"): Changed <dee> to <xdee>. R constraint replaced by
41 <Rf>.
42 ("fix_trunc<FPR:mode>di2"): 'FPR:' removed.
43 ("*fmadd<mode>", "*fmsub<mode>"): FPR mode replaced by DSF.
44 ("*movtf_64", "*movtf_31"): New insn definitions followed by 5
45 splitters.
46 ("movtf", "reload_outtf", "reload_intf", "trunctfdf2", "trunctfsf2",
47 "extenddftf2", "extendsftf2"): New expanders.
48 ("*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
49 "*trunctfsf2_ibm", "*extenddftf2_ieee", "*extenddftf2_ibm",
50 "*extendsftf2_ieee", "*extendsftf2_ibm"): New insn patterns.
51 * config/s390/s390.opt (mlong-double-128, mlong-double-64):
52 New options.
53 * config/s390/t-crtstuff (TARGET_LIBGCC2_CFLAGS): Macro defined.
54 * config/s390/libgcc-glibc.ver (__divtc3, __multc3, __powitf2,
55 __fixtfti, __fixunstfti, __floattitf, __fixtfdi, __fixunstfdi,
56 __floatditf): Add a GCC_4.1.0 symbol version tag.
57 * doc/invoke.texi (-mlong-double-128, -mlong-double-64): Document
58 the new options.
59
60 2006-02-02 Andrew Pinski <pinskia@physics.uc.edu>
61
62 PR target/25377
63 * config/i386/i386.c (ix86_function_ok_for_sibcall):
64 Use targetm.binds_local_p instead of TREE_PUBLIC.
65
66 2006-02-02 Roger Sayle <roger@eyesopen.com>
67
68 * tree.h (TYPE_STRING_FLAG): Document that this field may be used
69 on INTEGER_TYPEs to indicate that it denotes a character type.
70 * tree.c (build_common_tree_nodes): Set TYPE_STRING_FLAG on
71 signed_char_type_node, unsigned_char_type_node and char_type_node.
72 * dwarf2out.c (base_type_die): Treat CHAR_TYPE identically to
73 INTEGER_TYPE. Use TYPE_STRING_FLAG to decide whether to emit
74 a DW_ATE_[un]signed_char instead of a DW_ATE_[un]signed.
75
76 2006-02-02 Zdenek Dvorak <dvorakz@suse.cz>
77 Daniel Berlin <dberlin@dberlin.org>
78
79 * tree-tailcall.c (arg_needs_copy_p): New function.
80 (eliminate_tail_call): Use arg_needs_copy_p.
81 (tree_optimize_tail_calls_1): Ditto. Also call add_virtual_phis.
82 (add_virtual_phis): New function.
83
84 2006-02-02 Jakub Jelinek <jakub@redhat.com>
85
86 * config/sparc/sparc.c (sparc_output_scratch_registers): Use
87 #ignore instead of #scratch for %g7 .register directive.
88
89 2006-02-02 Andreas Tobler <a.tobler@schweiz.ch>
90
91 * config/sparc/freebsd.h (ENDFILE_SPEC): Add space to separate
92 object files.
93
94 2006-02-02 Bernd Schmidt <bernd.schmidt@analog.com>
95
96 * flow.c (calculate_global_regs_live): Assert that there aren't any
97 EDGE_FAKE edges.
98
99 2006-02-02 Paolo Bonzini <bonzini@gnu.org>
100
101 * tree-flow-inline.h (bsi_after_labels): Rewrite, return
102 what its name says.
103 * lambda-code.c (perfect_nestify): Use bsi_insert_before on
104 bsi_after_labels iterator.
105 * tree-if-conv.c (find_phi_replacement_condition,
106 replace_phi_with_cond_modify_expr): Likewise.
107 * tree-scalar-evolution.c (scev_const_prop): Likewise.
108 * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Likewise.
109
110 2006-02-02 Diego Novillo <dnovillo@redhat.com>
111
112 * tree-inline.c (copy_tree_r): Also copy OMP_CLAUSE nodes.
113
114 2006-02-02 Diego Novillo <dnovillo@redhat.com>
115
116 PR 25990
117 * tree-cfg.c (move_block_to_fn): Clear out the basic block
118 array after growing it.
119
120 2006-02-01 Steve Ellcey <sje@cup.hp.com>
121
122 PR middle-end/24901
123 * fold-const.c (fold_checksum_tree): Change type of buf.
124
125 2006-02-01 Bernd Schmidt <bernd.schmidt@analog.com>
126
127 * reload.c (push_secondary_reload): Initialize t_icode.
128
129 2006-02-01 Jakub Jelinek <jakub@redhat.com>
130
131 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For
132 -msoft-float -mlong-double-128 only issue a warning, but don't
133 swich to DFmode long double.
134
135 2006-02-01 Hans-Peter Nilsson <hp@axis.com>
136
137 * cse.c (fold_rtx) <case RTX_COMM_COMPARE, RTX_COMPARE>: When arg1
138 has a constant equivalent, iterate over equivalents for arg0,
139 calling simplify_relational_operation and if there's a result
140 cheaper than X, apply fold_rtx and return the result.
141
142 2006-02-01 Jan Hubicka <jh@suse.cz>
143
144 * opts.c (no_unit_at_a_time_default): New global variable.
145 (decode_options): Use it.
146 * opts.h (no_unit_at_a_time_default): Declare.
147
148 2006-02-01 Paul Brook <paul@codesourcery.com>
149
150 * function.c (assign_parm_setup_reg): Use function argument promotion
151 rules.
152 * expr.c (expand_expr_real_1): Use function argument promotion rules
153 for PARM_DECLs.
154
155 2006-02-01 Steve Ellcey <sje@cup.hp.com>
156
157 * gcc.c (process_command): Change j to 'unsigned int'.
158
159 2006-01-31 Andrew Pinski <pinskia@physics.uc.edu>
160
161 PR middle-end/26001
162 * expr.c (expand_expr_real_1) <case ARRAY_REF>:
163 Use the corrected index for the character
164 out of the string constant.
165
166 2006-01-31 Andrew Pinski <pinskia@physics.uc.edu>
167
168 * mode-switching.c (optimize_mode_switching): Fix size
169 allocated for bb_info[n_entities].
170
171 2006-01-31 Andrew Pinski <pinskia@physics.uc.edu>
172
173 * gcc.c (main): Correct type that is allocated for
174 explicit_link_files.
175
176 2006-01-31 Jakub Jelinek <jakub@redhat.com>
177
178 * config/s390/s390.c (init_alignment_context): Set
179 ALIAS_SET_MEMORY_BARRIER on the MEM.
180 * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Likewise.
181
182 2006-01-31 Uttam Pawar <uttamp@us.ibm.com>
183
184 PR middle-end/25933
185 * loop-unroll.c (unroll_loop_runtime_iterations): Free
186 dom_bbs pointer.
187 * tree-ssa-live.c (type_var_init): Allocate bitmap after
188 call to tpa_init.
189
190 2006-01-31 Marcin Dalecki <martin@dalecki.de>
191
192 * tree-vrp.c: Use XNEW/XCNEW allocation wrappers.
193 * regrename.c: Ditto.
194 * tree-ssa-loop-im.c: Ditto.
195 * tree-dump.c: Ditto.
196 * tree-complex.c: Ditto.
197 * genrecog.c: Ditto.
198 * tree-ssa-threadupdate.c: Ditto.
199 * tracer.c: Ditto.
200 * java/class.c: Ditto.
201 * java/jcf-parse.c: Ditto.
202 * java/resource.c: Ditto.
203 * java/except.c: Ditto.
204 * java/jvspec.c: Ditto.
205 * java/jcf-write.c: Ditto.
206 * java/jcf-path.c: Ditto.
207 * java/gjavah.c: Ditto.
208 * java/zextract.c: Ditto.
209 * java/jcf-io.c: Ditto.
210 * java/jcf.h: Ditto.
211 * java/buffer.c: Ditto.
212 * java/lang.c: Ditto.
213 * java/parse-scan.y: Ditto.
214 * java/lex.c: Ditto.
215 * java/lex.h: Ditto.
216 * cfgloopmanip.c: Ditto.
217 * postreload-gcse.c: Ditto.
218 * tree-ssa-loop-manip.c: Ditto.
219 * postreload.c: Ditto.
220 * tree-ssa-loop-ch.c: Ditto.
221 * loop.c: Ditto.
222 * ipa-cp.c: Ditto.
223 * cppspec.c: Ditto.
224 * diagnostic.c: Ditto.
225 * final.c: Ditto.
226 * genoutput.c: Ditto.
227 * gcc.c: Ditto.
228 * cfghooks.c: Ditto.
229 * cfgloopanal.c: Ditto.
230 * objc/objc-act.c: Ditto.
231 * gcov.c: Ditto.
232 * genextract.c: Ditto.
233 * genautomata.c: Ditto.
234 * pretty-print.c: Ditto.
235 * genemit.c: Ditto.
236 * cgraphunit.c: Ditto.
237 * flow.c: Ditto.
238 * df-scan.c: Ditto.
239 * haifa-sched.c: Ditto.
240 * dominance.c: Ditto.
241 * dbxout.c: Ditto.
242 * tree-ssa-loop-ivopts.c: Ditto.
243 * df-core.c: Ditto.
244 * mode-switching.c: Ditto.
245 * modulo-sched.c: Ditto.
246 * graph.c: Ditto.
247 * ipa-pure-const.c: Ditto.
248 * cse.c: Ditto.
249 * fix-header.c: Ditto.
250 * web.c: Ditto.
251 * tree-stdarg.c: Ditto.
252 * ipa-utils.c: Ditto.
253 * loop-init.c: Ditto.
254 * ipa-inline.c: Ditto.
255 * cfganal.c: Ditto.
256 * global.c: Ditto.
257 * alloc-pool.c: Ditto.
258 * dwarf2out.c: Ditto.
259 * opts.c: Ditto.
260 * genattrtab.c: Ditto.
261 * tree-ssa-loop-ivcanon.c: Ditto.
262 * predict.c: Ditto.
263 * timevar.c: Ditto.
264 * lcm.c: Ditto.
265 * fortran/gfortranspec.c: Ditto.
266 * regmove.c: Ditto.
267 * local-alloc.c: Ditto.
268 * langhooks.c: Ditto.
269 * function.c: Ditto.
270 * tree-vectorizer.c: Ditto.
271 * gcse.c: Ditto.
272 * ipa-type-escape.c: Ditto.
273 * alias.c: Ditto.
274 * tree-if-conv.c: Ditto.
275 * profile.c: Ditto.
276 * ipa.c: Ditto.
277 * tree-data-ref.c: Ditto.
278 * loop-unroll.c: Ditto.
279 * treelang/treetree.c: Ditto.
280 * calls.c: Ditto.
281 * bt-load.c: Ditto.
282 * ggc-common.c: Ditto.
283 * except.c: Ditto.
284 * coverage.c: Ditto.
285 * cselib.c: Ditto.
286 * tree-cfgcleanup.c: Ditto.
287 * tree-ssa-pre.c: Ditto.
288 * cfgcleanup.c: Ditto.
289 * loop-invariant.c: Ditto.
290 * loop-iv.c: Ditto.
291 * ipa-prop.c: Ditto.
292 * print-tree.c: Ditto.
293 * conflict.c: Ditto.
294 * ggc-page.c: Ditto.
295 * sched-deps.c: Ditto.
296 * regclass.c: Ditto.
297 * tree-object-size.c: Ditto.
298 * combine.c: Ditto.
299 * bb-reorder.c: Ditto.
300 * resource.c: Ditto.
301 * var-tracking.c: Ditto.
302 * cfgloop.c: Ditto.
303 * df-problems.c: Ditto.
304 * reg-stack.c: Ditto.
305 * tlink.c: Ditto.
306 * gccspec.c: Ditto.
307 * sched-rgn.c: Ditto.
308 * tree-ssa-structalias.c: Ditto.
309 * tree-ssa-reassoc.c: Ditto.
310 * config/darwin-c.c: Ditto.
311 * config/darwin.c: Ditto.
312 * config/arm/arm.c: Ditto.
313 * cfgrtl.c: Ditto.
314 * collect2.c: Ditto.
315 * reload1.c: Ditto.
316
317 2006-01-31 Nicolas Pitre <nico@cam.org>
318
319 * arm.md (smaxsi3): Make aware of smax_m1.
320 (smax_m1): New.
321
322 2006-01-31 Nathan Sidwell <nathan@codesourcery.com>
323
324 * gcc/config/m68k/lb1sf68.asm: Use moveq to load small constants.
325
326 2006-01-31 Richard Guenther <rguenther@suse.de>
327
328 * doc/invoke.texi (-msselibm): Document.
329 * target.h (expand_library_builtin): New target hook.
330 * builtins.c (expand_builtin): Use expand_library_builtin.
331 (default_expand_library_builtin): New function.
332 * gcc.c (LINK_GCC_MATH_SPEC): Define.
333 (LINK_COMMAND_SPEC): Handle %(link_gcc_math).
334 (link_gcc_math_spec): Declare.
335 (static_specs): Add link_gcc_math_spec.
336 * expr.h (default_expand_library_builtin): Declare.
337 * target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
338 (TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
339 * config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
340 * config/i386/i386.opt (msselibm): New target option.
341 * config/i386/i386.c (ix86_builtin_function_variants): New array.
342 (ix86_init_sse_abi_builtins): New function.
343 (ix86_expand_library_builtin): Likewise.
344 (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
345 (override_options): Handle error conditions wrt -msselibm.
346 (ix86_builtins): Add function codes for SSE2 ABI builtins.
347 (ix86_init_builtins): Call ix86_init_sse_abi_builtins.
348 * doc/extend.texi (__builtin_sse2_*): Document new target specific
349 builtins.
350
351 2006-01-31 Richard Guenther <rguenther@suse.de>
352 Paolo Bonzini <bonzini@gnu.org>
353
354 * doc/install.texi (--disable-libgcc-math): Document.
355
356 2006-01-30 Marcin Dalecki <martin@dalecki.de>
357
358 * expr.h (expand_normal): new inline function.
359 * builtins.c: use it, use EXPAND_NORMAL explicitely.
360 * dojump.c: use it.
361 * dwarf2out.c: use it.
362 * expr.c: use it.
363 * calls.c: use it.
364 * expmed.c: use it.
365 * except.c: use it.
366 * config/sparc/sparc.c: use it.
367 * config/i386/i386.c: use it.
368 * config/rs6000/rs6000.c: use it.
369 * config/arm/arm.c: use it.
370 * config/mips/mips.c: use it.
371 * stmt.c: use it, use EXPAND_NORMAL explicitely.
372
373 2006-01-30 Roger Sayle <roger@eyesopen.com>
374
375 * config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
376 argv to the appropriate type.
377
378 2006-01-30 Zdenek Dvorak <dvorakz@suse.cz>
379
380 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Remove
381 unreachable code.
382
383 2006-01-30 Ulrich Weigand <uweigand@de.ibm.com>
384
385 PR target/26018
386 * config/s390/s390.c (struct machine_function): New flag
387 decomposed_literal_pool_addresses_ok_p.
388 (s390_reorg): Set it before final stage of literal pool transforms.
389 (s390_decompose_address): Only accept displacements of the form
390 (minus (label_ref ...) (label_ref ...)) if that flag is set.
391
392 2006-01-30 Carlos O'Donell <carlos@codesourcery.com>
393
394 * optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
395 the comparison routine return.
396
397 2006-01-30 Michael Matz <matz@suse.de>
398
399 * global.c (find_reg): Only evict for global regs.
400 Take n_refs into account and dump more info.
401
402 2006-01-30 J"orn Rennecke <joern.rennecke@st.com>
403
404 PR target/14798:
405 * sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
406 (pragma_trap, pragma_nosave_low_regs): Likewise.
407 (current_function_anonymous_args): Likewise.
408 (sh_deferred_function_attributes): New variable.
409 (sh_deferred_function_attributes_tail): Likewise.
410 (print_operand): For '@', look up trap_exit attribute.
411 (calc_live_regs): Look up trapa_handler attribute. For trapa
412 handlers, save/restore fpscr, but don't do any other
413 interrupt-specific saves.
414 Don't save r0..r7 if the nosave_low_regs attribute is in effect.
415 Fix check for partially saved registers to check for SHmedia.
416 (sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
417 (sh_output_function_epilogue): Don't clear any of the removed
418 variables.
419 (sh_insert_attributes): Don't check pragma_interrupt.
420 Insert deferred attributes. Check that interrupt attribute is
421 present for other attributes that require its presence.
422 (sh_attribute_table): Add new attributes trapa_handler and
423 nosave_low_regs.
424 (sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
425 Don't check for pragma_interrupt. Don't store argument.
426 * sh.h (pragma_interrupt, sp_switch): Don't declare.
427 (sh_deferred_function_attributes): Declare.
428 (sh_deferred_function_attributes_tail): Likewise.
429 * sh.md (sp_switch_1): Add operand. Change generator caller.
430 (sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
431 (*return_i): Don't use when trap_exit attribute is in effect.
432 (*return_trapa): New insn pattern.
433 * sh-c.c: New file.
434 * config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
435 setting c_target_objs and cxx_target_objs.
436 * t-sh: Add rule for sh-c.o.
437
438 2006-01-30 Richard Guenther <rguenther@suse.de>
439
440 PR c++/23372
441 * gimplify.c (gimplify_target_expr): Handle easy cases
442 without creating a temporary.
443
444 2006-01-30 Nathan Sidwell <nathan@codesourcery.com>
445
446 * vec.h (safe_grow): Remove duplicated line.
447
448 2006-01-29 Diego Novillo <dnovillo@redhat.com>
449
450 PR 25874
451 * omp-low.c (execute_expand_omp): Move CFG cleanup code ...
452 (expand_omp): ... here.
453 (expand_omp_parallel): Only remove barriers for combined
454 parallel+workshare constructs.
455
456 2006-01-29 Eric Botcazou <ebotcazou@adacore.com>
457
458 Revert
459
460 2005-11-09 Eric Botcazou <ebotcazou@adacore.com>
461 * tree.c (build_qualified_type): Chain the new type to the original
462 type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
463 a POINTER_TYPE or a REFERENCE_TYPE respectively.
464 (build_pointer_type_for_mode): Only return unqualified types.
465 (build_reference_type_for_mode): Likewise.
466
467 2006-01-29 Gabriel Dos Reis <gdr@integgrable-solutions.net>
468
469 * configure.ac (cxx_compat_warn): Set if -Wc++-compat is supported.
470 * Makefile.in (CXX_COMPAT_WARN): Define.
471 * configure: Regenerate.
472
473 2006-01-29 Dorit Nuzman <dorit@il.ibm.com>
474
475 PR tree-opt/25911
476 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
477 to an if check.
478
479 2006-01-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
480
481 * toplev.c: Fix thinko.
482
483 2006-01-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
484 Marcin Dalecki <martin@dalecki.de>
485
486 * toplev.c (floor_log2, exact_log2): Don't define if __cplusplus.
487 (push_srcloc): Use XNEW.
488 (init_asm_output, default_get_pch_validity): Use XNEWVEC.
489
490 2006-01-29 Kenneth Zadeck <zadeck@naturalbridge.com>
491
492 * df-core.c (df_set_blocks): Deleted all variable.
493
494 2006-01-28 Ian Lance Taylor <ian@airs.com>
495
496 * cgraphunit.c (cgraph_assemble_pending_functions): Call
497 cgraph_output_pending_asms.
498
499 2006-01-28 Zack Weinberg <zackw@panix.com>
500
501 * c.opt: Add -W(no-)overlength-strings.
502 * doc/invoke.texi: Document it.
503 * c-opts.c (c_common_handle_option): -pedantic implies
504 -Woverlength-strings, if not explicitly disabled already.
505 (c_common_post_options): -Woverlength-strings defaults to off, and
506 is always off for C++.
507 * c-common.c (fix_string_type): Issue warning about strings longer
508 than is portable only if warn_overlength_strings. Rearrange code
509 a little for clarity.
510 * configure.in: Check for -Wno-overlength-strings as well before
511 enabling -pedantic in stage 1.
512 * Makefile.in (STRICT2_WARN): Add -Wno-overlength-strings.
513 (gcc.o-warn, insn-automata.o-warn, build/gencondmd.o-warn): Delete.
514
515 * genconditions.c (write_header, write_one_condition)
516 (write_conditions, write_writer): Consolidate very long strings
517 that were broken up to fit in C89 portable limit. Don't use
518 printf when fputs will do.
519
520 2006-01-28 Adam Nemet <anemet@caviumnetworks.com>
521
522 * combine.c (simplify_comparison <AND>): Check
523 TRULY_NOOP_TRUNCATION before start using a subreg.
524
525 * config/mips/mips.md (*branch_zero<mode>,
526 *branch_zero<mode>_inverted, *branch_equality<mode>,
527 *branch_equality<mode>_inverted, *branch_equality<mode>_mips16):
528 Remove mode check from comparisons.
529
530 2006-01-28 Kenneth Zadeck <zadeck@naturalbridge.com>
531
532 * config/mips/mips-protos.h (mips_set_live_on_entry): Deleted.
533
534 2006-01-28 Kazu Hirata <kazu@codesourcery.com>
535
536 * expmed.c (const_mult_add_overflow_p): Remove.
537 * expr.h: Remove the prototype for const_mult_add_overflow_p.
538
539 * recog.c (validate_replace_rtx_subexp): Remove.
540 * recog.h: Remove the prototype for
541 validate_replace_rtx_subexp.
542
543 * integrate.h: Remove the prototype for
544 copy_decl_for_inlining.
545 * rtl.h: Remove the prototype for mark_constant_function.
546 * tree-vectorizer.h: Remove the prototype for
547 vect_strip_conversion.
548
549 * modulo-sched.c (create_partial_schedule,
550 free_partial_schedule, reset_partial_schedule): Make them
551 static.
552
553 * hooks.c (hook_bool_rtx_int_false): Remove.
554 * hooks.h: Remove the prototype for hook_bool_rtx_int_false.
555
556 2006-01-28 David Edelsohn <edelsohn@gnu.org>
557
558 * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
559 and -mlong-double-128 are incompatible.
560 * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
561 * config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.
562 (TARGET_LIBGCC2_CFLAGS): Define.
563 * config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same.
564 (TARGET_LIBGCC2_CFLAGS): Same.
565 * config/rs6000/ppc64-fp.c: Compile for 64-bit AIX.
566
567 2006-01-28 Kazu Hirata <kazu@codesourcery.com>
568
569 PR c/19606.
570 * c-typeck.c (build_binary_op): Perform implicit casts of
571 operands before shortening them.
572
573 * cfgloopmanip.c (split_loop_bb): Remove.
574 * cfgloop.h: Remove the prototype for split_loop_bb.
575
576 * cfgloop.c (flow_loop_outside_edge_p): Remove.
577 * cfgloop.h: Remove the prototype for
578 flow_loop_outside_edge_p.
579
580 * emit-rtl.c (init_virtual_regs): Make it static.
581 * function.h: Remove the prototype for init_virtual_regs.
582
583 * recog.c (peephole2_optimize): Make it static.
584 * recog.h: Remove the prototype for peephole2_optimize.
585
586 2006-01-27 H.J. Lu <hongjiu.lu@intel.com>
587
588 * df-scan.c (df_record_entry_block_defs): Check if
589 INCOMING_RETURN_ADDR_RTX is defined.
590
591 2006-01-27 Daniel Berlin <dberlin@dberlin.org>
592 Kenneth Zadeck <zadeck@naturalbridge.com>
593
594 PR rtl-optimization/24762
595 * doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
596 * targhooks.c (hook_void_bitmap): New hook prototype.
597 * targhoohs.h (hook_void_bitmap): Ditto.
598 * bitmap.h (bitmap_head_def): Moved to coretypes.h.
599 * coretypes.h (bitmap_head_def): Moved from bitmap.h.
600 * target.h (live_on_entry): New function pointer.
601 * df-scan.c (df_all_hard_regs): Removed.
602 (df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
603 (df_scan_free_internal): Added df->entry_block_defs.
604 (df_scan_alloc): Ditto.
605 (df_scan_dump): Ditto.
606 (df_uses_record): Plumbed flag field properly thru calls.
607 Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
608 This part fixes PR24762.
609 (df_bb_refs_record): Added code to make the frame and arg
610 pointers live in EH blocks.
611 (df_refs_record): Added call to df_record_entry_block_defs.
612 (df_record_entry_block_defs): New function.
613 * df-core.c: Added comments to describe new artifical defs.
614 * df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
615 (entry_block_defs): New field in struct df.
616 (df_all_hard_regs): Deleted.
617 * target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
618 * df-problems.c (df_ru_bb_local_compute_process_def):
619 Added code to handle artifical defs in the entry to a function.
620 (df_ru_bb_local_compute): Ditto.
621 (df_rd_bb_local_compute_process_def): Ditto.
622 (df_rd_bb_local_compute): Ditto.
623 (df_lr_bb_local_compute): Ditto.
624 (df_ur_bb_local_compute): Ditto.
625 (df_urec_bb_local_compute): Ditto.
626 (df_chain_create_bb): Ditto.
627 (df_ur_local_finalize): Removed entry.
628 (df_urec_init): Ditto.
629 (df_urec_local_finalize): Ditto.
630 (df_ri_bb_compute): Added detection of last use of pseudos.
631 * Makefile.in (df-scan.o): Updated dependencies.
632 * config/mips/mips-protos.h (mips_set_live_on_entry): Added.
633 * config/mips/mips.c (mips_set_live_on_entry): Added.
634 * config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
635 for target hook.
636 * dce.c (marked_insn_p): Added code to handle artifical defs.
637
638 2006-01-27 H.J. Lu <hongjiu.lu@intel.com>
639
640 * config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
641 intrinsic.
642 (_mm_cvtsi128_si64): Likewise.
643 (_mm_cvtsd_si64): Likewise.
644 (_mm_cvttsd_si64): Likewise.
645 (_mm_cvtsi64_sd): Likewise.
646 (_mm_cvtsi64_si128): Likewise.
647 * config/i386/mmintrin.h (_m_from_int64): Likewise.
648 (_mm_cvtsi64_m64): Likewise.
649 (_m_to_int64): Likewise.
650 (_mm_cvtm64_si64): Likewise.
651 * config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
652 (_mm_cvttss_si64): Likewise.
653 (_mm_cvtsi64_ss): Likewise.
654 (_mm_cvtss_f32): Likewise.
655
656 2006-01-27 Carlos O'Donell <carlos@codesourcery.com>
657
658 * c-pragma.c (init_pragma) : Call c_register_pragma_with_expansion
659 for pragma redefine_extname.
660
661 2006-01-27 Jakub Jelinek <jakub@redhat.com>
662
663 PR target/25864
664 * libgcc-std.ver: Add GCC_4.1.0 symbol version.
665 * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
666 -mno-minimal-toc to previous content.
667 (bispecs): Remove goal.
668 * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
669 * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
670 compatibility aliases on powerpc-*-*gnu*.
671 * config/rs6000/libgcc-ppc-glibc.ver: New file.
672 * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
673 libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
674 (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
675 (ldblspecs): New goal.
676 * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
677 * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
678 _df_to_tf.
679 * config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
680 L_sf_to_tf or L_df_to_tf is defined.
681
682 2006-01-27 David Edelsohn <edelsohn@gnu.org>
683 Alan Modra <amodra@bigpond.net.au>
684
685 PR target/25864
686 * config/rs6000/linux.h (POWERPC_LINUX): Define.
687 * config/rs6000/linux64.h (POWERPC_LINUX): Define.
688 * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
689 * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
690 * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
691 * config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
692 (rs6000_override_options): Initialize rs6000_ieeequad.
693 Initialize TFmode format to ibm_extended_format if not
694 TARGET_IEEEQUAD.
695 (rs6000_handle_option): Accept -mabi= ibmlongdouble and
696 ieeelongdouble.
697 (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
698 (rs6000_return_in_memory): Only return IEEEQUAD in memory.
699 (function_arg_advance): IBM long double passed in two FPRs, not
700 split.
701 (function_arg): IBM long double passed in FPRs.
702 (rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
703 (rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
704 Only multireg GPR aligned.
705 (rs6000_init_libfuncs): Enable IBM long double functions if not
706 IEEEQUAD.
707 (rs6000_generate_compare): Use IBM long double compare if not
708 TARGET_IEEEQUAD.
709 * config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
710 (TARGET_IEEEQUAD): Define.
711 (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
712 not TARGET_IEEEQUAD.
713 * config/rs6000/rs6000.md: Enable TFmode patterns if
714 !TARGET_IEEEQUAD.
715 * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
716 * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
717 and -mlong-double-128 are incompatible.
718 * doc/invoke.texi (-mabi): Collect options together. Add
719 ibmlongdouble and ieeelongdouble.
720
721 2006-01-27 Richard Sandiford <richard@codesourcery.com>
722
723 * doc/rtl.texi (SYMBOL_REF_DATA): Adjust documentation for new
724 opaque type.
725 * optabs.c (init_one_libfunc): Use SET_SYMBOL_REF_DECL.
726 * varasm.c (make_decl_rtl, build_constant_desc): Likewise.
727 (force_const_mem): Use SET_SYMBOL_REF_CONSTANT.
728 * rtl.h (rtunion_def): Remove rt_ptr.
729 (X0PTR): Delete.
730 (SYMBOL_REF_DATA): Use X0ANY instead of X0PTR.
731 (SET_SYMBOL_REF_DECL, SET_SYMBOL_REF_CONSTANT): New macros.
732 * config/i386/winnt.c (i386_pe_mark_dllexport)
733 (i386_pe_mark_dllimport): Use SET_SYMBOL_REF_DECL.
734
735 2006-01-27 Gabor Loki <loki@gcc.gnu.org>
736
737 * cfgcleanup.c (try_crossjump_to_edge): Fix comment typo.
738
739 2006-01-26 Alexandre Oliva <aoliva@redhat.com>
740
741 PR other/24829
742 PR target/24831
743 * gthr-dce.h: Do not gthrw-ify pthread_once_init,
744 pthread_key_delete. From John David Anglin. gthrw-ify
745 pthread_getunique_np only if it it's not a macro. Delete
746 UNUSED macro.
747 (__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
748 __gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
749 __gthread_objc_condition_signal, __gthread_key_delete): Add
750 "__attribute__ ((__unused__))" to unused arguments.
751 (__gthread_recursive_mutex_init_function): Add missing return.
752 * gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
753 gthr-posix95.h: Use macro-based approach for name redirection
754 on targets missing weakref.
755
756 2006-01-26 Zack Weinberg <zackw@panix.com>
757
758 * genconditions.c (write_header): In generated code, #ifdef out
759 all includes and fake declarations, except includes of bconfig.h
760 and system.h, unless GCC_VERSION >= 3001. Do not include
761 gensupport.h in any case.
762 (write_conditions): Generate a definition of struct c_test. Add
763 a comment to the generated #endif.
764 (write_one_condition): Escape backslashes in string too.
765 (write_writer): Generated code must escape backslashes and quote
766 marks (but not newlines) in the strings it writes.
767 * Makefile.in (build/gencondmd.o): Update dependencies.
768
769 2006-01-26 Steve Ellcey <sje@cup.hp.com>
770
771 PR target/25961
772 * Makefile.in (insn-automata.o): Add header file dependencies.
773 * genautomata.c: Add includes.
774
775 2006-01-26 Steve Ellcey <sje@cup.hp.com>
776
777 PR target/25961
778 * Makefile.in (insn-automata.o): Add -Wno-error flag.
779
780 2006-01-26 Paolo Bonzini <bonzini@gnu.org>
781
782 * configure.ac: Expect target tools paths to be passed from the toplevel
783 and wrap the detection into AS_SET_VAR_IF. Extract side-effects out of
784 AS_SET_VAR_IF.
785 * acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.
786
787 2006-01-26 Alexandre Oliva <aoliva@redhat.com>
788
789 PR c/25892
790 * c.opt (Wpointer-sign): Init to -1.
791 * c-opts.c (c_common_handle_option): Set to 1 on OPT_Wall and
792 OPT_pedantic, to 0 otherwise.
793 * doc/invoke.texi: Update.
794
795 2006-01-26 Paolo Bonzini <bonzini@gnu.org>
796
797 * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Emit
798 constants provided by 80387 instructions in the destination mode.
799
800 2006-01-26 Richard Guenther <rguenther@suse.de>
801 Andrew Pinski <pinskia@physics.uc.edu>
802
803 PR tree-opt/21470
804 partial PR tree-opt/17064
805 * tree-ssa-structalias.c (intra_create_variable_infos):
806 Create heap variables for incoming parameters if
807 flag_argument_noalias > 1.
808 (find_what_p_points_to): Look through default defs of
809 parameter decls.
810
811 2006-01-26 Jeff Law <law@redhat.com>
812
813 PR ada/25900
814 * tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
815 with a VR_ANTI_RANGE and the VR_ANTI_RANGEis completely contained
816 within the VR_RANGE, use the VR_RANGE as the result, not the
817 VR_ANTI_RANGE.
818 (adjust_range_with_scev): Reject ranges from SCEV which are out
819 of bounds for the type.
820
821 2006-01-26 Daniel Berlin <dberlin@dberlin.org>
822
823 * tree-ssa-alias.c (maybe_create_global_var): Change
824 subvar walking to an assertion that we don't have subvar'd variables.
825
826 2006-01-26 Andrew Pinski <pinskia@physics.uc.edu>
827
828 PR C/25861
829 * c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
830 Use a new variable, inner. PARM_DECLs are always non-weak.
831
832 2006-01-26 Shantonu Sen <ssen@opendarwin.org>
833
834 * tree.h (OMP_CLAUSE_SUBCODE_CHECK): Add definition for
835 --disable-checking.
836
837 2006-01-26 Adam Nemet <anemet@caviumnetworks.com>
838
839 * config/mips/mips.md (*clear_upper32): New combiner pattern.
840
841 2006-01-26 Richard Earnshaw <richard.earnshaw@arm.com>
842
843 * arm.md (smaxsi3, sminsi3): Convert to define_expand.
844 (smax_insn, smin_insn, smax_0, smin_0): New.
845
846 2006-01-26 Hans-Peter Nilsson <hp@axis.com>
847
848 PR target/25947
849 * config/cris/cris.c (cris_order_for_addsi3): New function.
850 * config/cris/cris-protos.h: Prototype it.
851 * config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
852 (split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
853 (split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
854 (split for "op.S1 [rx=rx+i],ry (swapped)")
855 (split for "op(s|u).S1 [rx=rx+i],ry")
856 (split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
857 Apply cris_order_for_addsi3 when generating addsi3 insns.
858
859 2006-01-25 Diego Novillo <dnovillo@redhat.com>
860
861 * tree.h (TREE_RANGE_CHECK): Fix range predicate.
862 (TREE_BLOCK): Add call to EXPR_CHECK.
863
864 2006-01-25 Diego Novillo <dnovillo@redhat.com>
865
866 PR 25886
867 * tree-dump.c (dequeue_and_dump): Handle OMP_CLAUSE.
868 * tree-pretty-print.c (dump_omp_clause): Extract from ...
869 (dump_omp_clauses): ... here.
870 (dump_generic_node): Handle OMP_CLAUSE.
871 * tree.c (omp_clause_num_ops): New.
872 (omp_clause_code_name): New.
873 (tree_code_size): Handle OMP_CLAUSE.
874 (tree_size): Likewise.
875 (make_node): Document handling of OMP_CLAUSE.
876 (tree_node_structure): Handle OMP_CLAUSE.
877 (omp_clause_check_failed): New.
878 (omp_clause_range_check_failed): New.
879 (omp_clause_operand_check_failed): New.
880 (build_omp_clause): New.
881 (walk_tree): Adjust handling of OMP_CLAUSE_* nodes.
882 * tree.h (enum omp_clause_code): Declare.
883 (OMP_CLAUSE_SUBCODE_CHECK): Define.
884 (OMP_CLAUSE_RANGE_CHECK): Define.
885 (OMP_CLAUSE_ELT_CHECK): Define.
886 (omp_clause_check_failed): Declare.
887 (omp_clause_operand_check_failed): Declare.
888 (omp_clause_range_check_failed): Declare.
889 (OMP_CLAUSE_CHAIN): Do not use TREE_RANGE_CHECK.
890 (OMP_CLAUSE_OPERAND): Use OMP_CLAUSE_RANGE_CHECK.
891 (OMP_CLAUSE_PRIVATE_DEBUG): Use OMP_CLAUSE_SUBCODE_CHECK.
892 (OMP_CLAUSE_LASTPRIVATE): Likewise.
893 (OMP_CLAUSE_IF_EXPR): Likewise.
894 (OMP_CLAUSE_NUM_THREADS_EXPR): Likewise.
895 (OMP_CLAUSE_SCHEDULE_CHUNK_EXPR): Likewise.
896 (OMP_CLAUSE_REDUCTION_CODE): Likewise.
897 (OMP_CLAUSE_REDUCTION_INIT): Likewise.
898 (OMP_CLAUSE_REDUCTION_MERGE): Likewise.
899 (OMP_CLAUSE_REDUCTION_PLACEHOLDER): Likewise.
900 Use tree_node.omp_clause.subcode instead of TREE_COMPLEXITY.
901 (OMP_CLAUSE_SCHEDULE_KIND): Likewise.
902 (OMP_CLAUSE_DEFAULT_KIND): Likewise.
903 (OMP_CLAUSE_CODE): Define.
904 (OMP_CLAUSE_SET_CODE): Define.
905 (OMP_CLAUSE_CODE): Define.
906 (OMP_CLAUSE_OPERAND): Define.
907 (struct tree_omp_clause): Declare.
908 (union tree_node): Add field 'omp_clause'.
909 * treestruct.def (TS_OMP_CLAUSE): Define.
910 * tree.def (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED
911 OMP_CLAUSE_FIRSTPRIVATE, OMP_CLAUSE_LASTPRIVATE,
912 OMP_CLAUSE_REDUCTION, OMP_CLAUSE_COPYIN,
913 OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF,
914 OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE,
915 OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Remove.
916 (OMP_CLAUSE): Define.
917 * print-tree.c (print_node): Handle OMP_CLAUSE.
918 * omp-low.c: Adapt all uses of OMP_CLAUSE_* nodes.
919 * c-typeck.c: Likewise.
920 * gimplify.c: Likewise.
921 * c-omp.c: Likewise.
922 * tree-nested.c: Likewise.
923 * tree-inline.c: Likewise.
924 * c-parser.c: Likewise.
925 * gimple-low.c (lower_omp_directive): Do not set TREE_BLOCK on
926 clauses.
927
928 2006-01-25 Roger Sayle <roger@eyesopen.com>
929
930 PR rtl-optimization/25703
931 * combine.c (try_combine): Handle zero_extract and strict_low_part
932 of non-lowpart SUBREGs for constant reg_subword_p set optimization.
933
934 2006-01-25 Peter Bergner <bergner@vnet.ibm.com>
935
936 * global.c: Fix comment typos.
937
938 2006-01-25 Andrew Pinski <pinskia@physics.uc.edu>
939
940 PR target/25758
941 * config/i386/i386.c (output_pic_addr_const) <case SYMBOL_REF>:
942 Use output_addr_const instead of assemble_name.
943
944 2006-01-25 Paolo Bonzini <bonzini@gnu.org>
945
946 * Makefile.in (sched-vis.o): Update dependencies.
947 * haifa-sched.c (sched_finish): Clear current_sched_info.
948 * cfg.c (dump_bb_info): New, split from dump_flow_info.
949 (dump_flow_info): Call it.
950 * passes.c (execute_todo): Call print_rtl_slim_with_bb to make
951 a slim RTL dump.
952 * basic-block.h (dump_bb_info): Declare.
953 * tree-dump.c (dump_enable_all): OR the flags of a -fdump-tree-all
954 option, and apply options only for dump files whose TDF_RTL,
955 TDF_TREE, or TDF_IPA bits match.
956 * rtl.h: Declare new functions exported from sched-vis.c.
957 * sched-vis.c: Enable also if scheduling is not used.
958 (print_value): Print the mode of registers if not inside scheduling.
959 (print_insn): Make it work outside the scheduler. Beautify the output
960 a bit.
961 (dump_insn_slim, debug_insn_slim, print_rtl_slim_with_bb): New.
962
963 2006-01-25 Richard Sandiford <richard@codesourcery.com>
964
965 * doc/rtl.texi (SYMBOL_REF_CONSTANT, SYMBOL_REF_DATA): Document.
966 * gengtype.c (adjust_field_rtx_def): Garbage-collect field 2 of
967 a SYMBOL_REF as either a tree or a constant_descriptor_rtx,
968 depending on the value of CONSTANT_POOL_ADDRESS_P.
969 * optabs.c (init_one_libfunc): Nullify SYMBOL_REF_DATA rather than
970 SYMBOL_REF_DECL.
971 * varasm.c (make_decl_rtl, build_constant_desc): Set SYMBOL_REF_DATA
972 rather than SYMBOL_REF_DECL.
973 (rtx_constant_pool): Remove const_rtx_sym_htab.
974 (const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): Delete.
975 (init_varasm_status): Don't initialize const_rtx_sym_htab.
976 (force_const_mem): Point SYMBOL_REF_DATA to the constant pool entry.
977 Remove handling of const_rtx_sym_htab.
978 (find_pool_constant): Delete.
979 (get_pool_constant, get_pool_constant_mark): Use SYMBOL_REF_CONSTANT
980 rather than find_pool_constant.
981 (get_pool_constant_for_function): Delete.
982 (get_pool_mode, mark_constant): Use SYMBOL_REF_CONSTANT rather than
983 find_pool_constant.
984 * rtl.h (rtunion_def): Add rt_constant and rt_ptr fields.
985 (X0CONSTANT, X0PTR, SYMBOL_REF_DATA): New macros.
986 (SYMBOL_REF_DECL): Return NULL if CONSTANT_POOL_ADDRESS_P.
987 (SYMBOL_REF_CONSTANT): New macro.
988 (get_pool_constant_for_function): Delete.
989 * config/i386/winnt.c (i386_pe_mark_dllexport): Set SYMBOL_REF_DATA
990 rather than SYMBOL_REF_DECL.
991 (i386_pe_mark_dllimport): Likewise.
992 * config/rs6000/rs6000.c (rs6000_emit_move): Copy SYMBOL_REF_DATA
993 rather than SYMBOL_REF_DECL.
994 * config/darwin.c (machopic_indirect_data_reference): Likewise.
995 (machopic_indirect_call_target): Likewise.
996
997 2006-01-25 Eric Botcazou <ebotcazou@adacore.com>
998
999 * flow.c (delete_noop_moves): Add missing EOL to dump message.
1000
1001 2006-01-25 Richard Sandiford <richard@codesourcery.com>
1002
1003 * genattrtab.c (gen_bypass): Allow bypasses to contain whitespace.
1004
1005 2006-01-25 Kaz Kojima <kkojima@gcc.gnu.org>
1006
1007 * config/sh/predicates.md (sh_register_operand): Accept CONST_DOUBLE.
1008
1009 2006-01-24 David Daney <ddaney@avtrex.com>
1010
1011 PR java/25816
1012 * configure.ac (enable_tls): New enable option.
1013 (HAVE_AS_TLS): Don't do assembler check if enable_tls set.
1014 * configure: Regenerate.
1015 * doc/install.texi (--enable-tls): Document new option.
1016 (--disable-tls): Ditto.
1017
1018 2006-01-24 Richard Henderson <rth@redehat.com>
1019
1020 * alias.h (ALIAS_SET_MEMORY_BARRIER): New.
1021 * alias.c (true_dependence): Respect it.
1022 (canon_true_dependence, write_dependence_p): Likewise.
1023 * builtins.c (get_builtin_sync_mem): Set it.
1024
1025 2006-01-25 Zdenek Dvorak <dvorakz@suse.cz>
1026
1027 * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more
1028 efficient way.
1029
1030 2006-01-24 DJ Delorie <dj@redhat.com>
1031
1032 * expmed.c (store_bit_field): Don't arbitrarily deny using insv
1033 for storing constants in single-bit bitfields.
1034
1035 2006-01-25 Ben Elliston <bje@au.ibm.com>
1036
1037 * dfp.c (dfp_byte_swap): Use uint32_t and not unsigned long.
1038
1039 2006-01-24 Andrew Pinski <pinskia@physics.uc.edu>
1040
1041 PR tree-opt/25860
1042 * tree-ssa-pre.c (phi_translate): Return NULL
1043 for AGGREGATE_TYPE's.
1044
1045 2006-01-24 Zack Weinberg <zackw@panix.com>
1046
1047 * genautomata.c (process_state_for_insn_equiv_partition):
1048 Use xcalloc for insn_arcs_array.
1049 * vec.h (DEF_VEC_ALLOC_FUNC_I): New set of templates.
1050 (DEF_VEC_ALLOC_I): Use it, not DEF_VEC_ALLOC_FUNC_P.
1051
1052 2006-01-24 Richard Henderson <rth@redhat.com>
1053
1054 * genextract.c (VEC_safe_set_locstr): Take VEC by reference;
1055 update all callers.
1056
1057 2006-01-23 Paolo Bonzini <bonzini@gnu.org>
1058
1059 PR rtl-optimization/25890
1060 PR rtl-optimization/25905
1061 * combine.c (expand_compound_operation, expand_field_assignment):
1062 Fail if the bitfield's final position is out of bounds.
1063
1064 2006-01-24 Ian Lance Taylor <ian@airs.com>
1065
1066 PR middle-end/25930
1067 * cgraphunit.c (cgraph_output_in_order): Don't clear
1068 cgraph_asm_nodes until after asm strings have been output.
1069
1070 2006-01-23 Adam Nemet <anemet@caviumnetworks.com>
1071
1072 * fix-header.c (read_scan_file): Add new parameter imultilib when
1073 calling register_include_chains.
1074
1075 2006-01-23 Diego Novillo <dnovillo@redhat.com>
1076
1077 * omp-low.c: Update documentation.
1078
1079 2006-01-23 Andrew Pinski <pinskia@physics.uc.edu>
1080 Daniel Berlin <dberlin@dberlin.org>
1081
1082 PR tree-opt/25315
1083 PR tree-opt/25857
1084 * tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
1085 return from the function.
1086
1087 2006-01-22 Zack Weinberg <zackw@panix.com>
1088
1089 * rtl.def (match_code): Add second argument.
1090 * genpreds.c (write_extract_subexp): New function.
1091 (write_match_code): Add path argument. Use write_extract_subexp.
1092 (write_predicate_expr): Pass path to write_match_code.
1093 (mark_mode_tests): MATCH_CODE applied to a subexpression does
1094 not perform a mode test.
1095 * genrecog.c (compute_predicate_codes): MATCH_CODE applied to
1096 a subexpression does not constrain the top-level code set.
1097 * read-rtl.c (read_rtx_variadic): New function.
1098 (read_rtx_1): Use it; allow AND and IOR to be variadic.
1099 * doc/md.texi: Document new notation.
1100 * config/i386/predicates.md (cmpsi_operand_1): Fold into ...
1101 (cmpsi_operand): ... here, using new notation.
1102
1103 2006-01-22 Zack Weinberg <zackw@panix.com>
1104
1105 * varray.c: Remove GENERATOR_FILE #ifdefs.
1106
1107 2006-01-22 Zack Weinberg <zackw@panix.com>
1108
1109 * genautomata.c (output_reserved_units_table): Emit nothing if
1110 description->query_units_num is zero. Remove extra blank line.
1111 (output_cpu_unit_reservation_p): Short circuit
1112 if description->query_units_num is zero.
1113
1114 2006-01-22 Zack Weinberg <zackw@panix.com>
1115
1116 * genattrtab.c: Don't include genattrtab.h. Define ATTR_NONE
1117 and ATTR_SPECIAL (from genattrtab.h). Don't define num_dfa_decls
1118 nor any of the random handful of variables that used to be necessary
1119 when this program was linked with rtlanal.o. Prune set of forward
1120 function declarations.
1121 (struct attr_desc): Remove static_p field.
1122 (hash_obstack, temp_obstack, attr_hash_table, attr_printf)
1123 (check_attr_test, make_internal_attr, make_numeric_value): Make static.
1124 (attr_string): Do not read the character one past the length of
1125 the string.
1126 (write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
1127 (struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
1128 (n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
1129 (n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
1130 (make_automaton_attrs): New.
1131 (main): Do not call into genautomata. Call local gen_bypass
1132 and gen_insn_reserv as appropriate. Call make_automaton_attrs.
1133 Remove special case for insn_alts.
1134 * genautomata.c: Include gensupport.h; not genattrtab.h nor
1135 varray.h (leftover from previous change). Prune set of forward
1136 function declarations. Remove state_alts fields from all
1137 structures. Remove state_alts_table from struct automaton.
1138 Make everything except main static. Do not maintain num_dfa_decls.
1139 Do not maintain state_alts fields of various structures.
1140 (process_decls): Don't validate condexp for dm_insn_reserv decls.
1141 (add_arc): Remove state_alts argument. All callers updated.
1142 (output_reserved_units_table): Emit #ifdef here...
1143 (output_tables): ...not here. Don't generate state_alts tables.
1144 (expand_automata): Don't generate attributes.
1145 (write_automata): Don't generate state_alts functions.
1146 (main): New function.
1147 (it_is_empty_reserv_sets, output_state_alts_full_vect_name)
1148 (output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
1149 (AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
1150 (STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
1151 (BYPASS_P_FUNC_NAME, output_state_alts_table)
1152 (output_automata_list_state_alts_code, output_internal_state_alts_func)
1153 (output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
1154 (make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
1155 Delete.
1156 * genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
1157 * genattrtab.h: Delete file.
1158 * Makefile.in (OBJS-common): Add insn-automata.o.
1159 (insn-automata.o): New rule.
1160 (simple_generated_c): Add insn-automata.c.
1161 (build/genattrtab.o, build/genautomata.o): Update dependencies.
1162 (genprogmd): Add automata.
1163 (build/genattrtab): Needs no extra objects nor libraries.
1164 (build/genautomata): Needs build/vec.o and -lm.
1165
1166 2006-01-22 Zack Weinberg <zackw@panix.com>
1167
1168 * genautomata.c (process_state_longest_path, max_dfa_issue_rate)
1169 (output_dfa_max_issue_rate, locked_states_num): Delete.
1170 (struct automaton): Add locked_states field.
1171 (output_dead_lock_vect): Save number of locked states in
1172 automaton->locked_states. If it is zero, don't print anything.
1173 (output_max_insn_queue_index_def): Define max_insn_queue_index const.
1174 (output_internal_dead_lock_func): Only test the dead_lock_vect
1175 for automata that have locked states.
1176 (output_statistics): Always print the number of locked states for
1177 each automaton. Calculate total number of locked states here.
1178 (write_automata): Don't call output_dfa_max_issue_rate.
1179 * genattrtab.c: Define length_unit_log as a const variable.
1180 * genattr.c: Don't emit MAX_DFA_ISSUE_RATE. Declare
1181 max_insn_queue_index const.
1182 * final.c (length_unit_log): Declare const.
1183 * doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.
1184
1185 2006-01-22 Zack Weinberg <zackw@panix.com>
1186
1187 * genautomata.c: Include vec.h, not varray.h.
1188 Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
1189 VLA_HWINT_ macros. Change vla_hwint_t to a typedef for
1190 VEC(vect_el_t,heap) *. Convert all uses of VLA_* macros to
1191 VEC_* macros operating on appropriately typed vectors, or to
1192 malloced arrays when the size is known in advance. Const-ify
1193 many char* variables and function arguments. No functional changes.
1194 * Makefile.in (build/varray.o): Delete rule.
1195 (build/genattrtab): Depend on build/vec.o instead of build/varray.o.
1196 (build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).
1197
1198 2006-01-22 Zack Weinberg <zackw@panix.com>
1199
1200 * gensupport.c: Define get_insn_name and record_insn_name here.
1201 (read_md_rtx): Call record_insn_name as appropriate.
1202 * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
1203 * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
1204 * genpreds.c, genrecog.c: Don't define get_insn_name nor
1205 record_insn_name.
1206 * Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
1207 (BUILD_VARRAY): Delete.
1208 (genprognormal): Rename genprogmd. Fold in all programs from
1209 genprognoprint; also attrtab.
1210 (build/genattrtab): Just mention genautomata.o and varray.o.
1211 Reorganize a bit, add comments to make the categories clearer.
1212
1213 2006-01-22 Zack Weinberg <zackw@panix.com>
1214
1215 * genconditions.c (condition_table, add_condition): Delete.
1216 (write_conditions): Don't emit n_insn_conditions nor
1217 insn_elision_unavailable. Issue the gcc version #ifdef here,
1218 inside the table, with no #else clause ...
1219 (write_header): ...not here.
1220 (write_writer): New function.
1221 (main): Don't initialize condition_table. Use add_c_test.
1222 Call write_writer.
1223 * gensupport.c (init_md_reader_args_cb): Handle multiple input
1224 files on the command line.
1225 (maybe_eval_c_test): Don't check insn_elision_unavailable.
1226 Return -1 if there is no entry in the table, don't abort.
1227 (add_c_test, traverse_c_tests): New functions.
1228 * gensupport.h (insn_elision_unavailable, insn_conditions)
1229 (n_insn_conditions): Delete declarations.
1230 (add_c_test, traverse_c_tests): Declare.
1231 * read-rtl.c: Include gensupport.h.
1232 (read_conditions): New function.
1233 (read_rtx): If read_rtx_1 returns 0, treat as EOF.
1234 (read_rtx_1): If we get EOF when we were looking for an initial
1235 open paren, return 0. Call read_conditions when appropriate.
1236 * Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
1237 dummy-conditions.o. Eliminate references to insn-conditions.o,
1238 or change them to build/gencondmd.o, as appropriate. Remove
1239 insn-constants.h from $(simple_generated_h) and insn-conditions.c
1240 from $(simple_generated_c). For all files remaining in those
1241 two lists, add insn-conditions.md to the generator command line.
1242 Give insn-constants.h/s-constants their own rules. Add rules
1243 for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
1244 (build/read-rtl.o): Depend on gensupport.h.
1245 (genprognormal): Include preds.
1246 (genprogearly): Rename genprognoprint; only difference is now that
1247 they don't link with $(BUILD_PRINT).
1248 * dummy-conditions.c: Delete.
1249
1250 2006-01-22 Zack Weinberg <zackw@panix.com>
1251
1252 * genextract.c: Don't include insn-config.h. Do include vec.h.
1253 Declare vectors of int, char, and locstr.
1254 (locstr): New typedef.
1255 (struct extraction): Make all array fields into bare pointers.
1256 (insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
1257 (insn_code_number): Delete.
1258 (accum_extract): New struct.
1259 (VEC_safe_set_locstr, VEC_char_to_string): New functions.
1260 (gen_insn): Take insn_code_number as an argument. Use an
1261 accum_extract structure instead of loading data directly into
1262 a struct extraction, and having to know how big it might get.
1263 (walk_rtx): Operate entirely on an accum_extract structure.
1264 (print_path): Avoid unnecessary use of printf.
1265 (print_header): New function, split out of main. Distinguish
1266 more carefully between an unrecognizable insn and an insn that
1267 has the code number of a define_expand.
1268 (main): Pass insn_code_number to gen_insn. Call print_header
1269 only after parsing. Avoid unnecessary use of printf.
1270 * Makefile.in (build/vec.o): New rule.
1271 (build/genextract): Depend on build/vec.o.
1272 (build/genextract.o): Don't depend on insn-config.h.
1273
1274 2006-01-22 Zack Weinberg <zackw@panix.com>
1275
1276 * Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
1277 $(RUN_GEN). Use pattern rules to factor out as much boilerplate as
1278 practical. Eliminate per-generator-program link rules.
1279
1280 2006-01-23 Andrew Pinski <pinskia@physics.uc.edu>
1281
1282 PR middle-end/24437
1283 * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
1284 with a call expr to ...
1285 * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
1286
1287 2006-01-23 Richard Guenther <rguenther@suse.de>
1288
1289 * cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
1290 before make_edge with conditional EDGE_TRUE_VALUE.
1291
1292 2006-01-23 Steven Bosscher <stevenb.gcc@gmail.com>
1293 Jan Hubicka <jh@suse.cz>
1294 Richard Guenther <rguenther@suse.de>
1295
1296 PR rtl-optimization/25654
1297 * cfgexpand.c (aggregate_contains_union_type): New function.
1298 (add_alias_set_conflicts): Call it. Make sure to add conflicts
1299 for structure variables that contain a union type.
1300
1301 2006-01-23 Richard Sandiford <richard@codesourcery.com>
1302
1303 * gengtype.c (new_structure): Return the structure.
1304 (create_option): Add an extra "next" argument.
1305 (create_field): New function.
1306 (adjust_field_rtx_def): Use create_option and create_field.
1307 Remove a now-unnecessary call to find_structure.
1308 (adjust_field_tree_def): Likewise.
1309 (note_yacc_type): Remove an unnecessary call to find_structure.
1310 * gengtype.h (new_structure): Return the structure.
1311 (create_option): Add an extra argument.
1312 * gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
1313 (option): Adjust calls to create_option.
1314
1315 2006-01-22 David Edelsohn <edelsohn@gnu.org>
1316
1317 * config/rs6000/aix.h (STACK_BOUNDARY): Define.
1318
1319 2006-01-22 Paul Brook <paul@codesourcery.com>
1320 Peter Barada <peter@the-baradas.com>
1321
1322 * config/m68k/m68k.md: Add Coldfire FPU support.
1323 Define FP mode macro and associated attributes.
1324 Use it for float mode patterns.
1325 * config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
1326 (LIBCALL_VALUE): Use m68k_libcall_value.
1327 * config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
1328 (m68k_function_value): Ditto.
1329 (emit_move_sequence): Ditto.
1330 * config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
1331 * config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
1332 * config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
1333 (MULTILIB_EXCEPTIONS): Ditto.
1334 * config/m68k/m68k.opt: Add mcfv4e.
1335 * config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
1336 (m68k_compute_frame_layout): Include space for ColdFire FPU regs.
1337 (m68k_output_function_prologue): Save ColdFire FPU registers.
1338 (m68k_output_function_epilogue): Restore ColdFire FPU registers.
1339 (force_mode, fp_reg_operand, emit_move_sequence): New functions.
1340 (m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
1341 ColdFire FPU registers.
1342 (m68k_libcall_value, m68k_function_value): New functions.
1343 * config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
1344 (LIBCALL_VALUE): Use m68k_libcall_value.
1345 * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
1346 (MASK_COLDFIRE): Add MASK_CFV4E.
1347 (TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
1348 (MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
1349 (REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
1350 (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
1351 (GO_IF_LEGITIMATE_ADDRESS): Use it.
1352 (LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
1353 * doc/invoke.tex: Document -mcfv4e on m68k.
1354
1355 2006-01-22 Ranjit Mathew <rmathew@gcc.gnu.org>
1356
1357 * doc/contribute.texi: Change CVS to SVN and update the corresponding
1358 URL.
1359
1360 2006-01-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
1361
1362 PR c++/16190
1363 * c-opts.c (c_common_handle_option): Don't include
1364 -Wnon-virtual-dtor in -Wall; enable if -Weffc++.
1365 * doc/invoke.texi (C++ Dialect Options): Document that
1366 -Wnon-virtual-dtor is no longer included in -Wall.
1367
1368 2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
1369
1370 * gcov.c (print_version), gcov-dump.c (print_version),
1371 mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
1372 dates.
1373
1374 2006-01-21 Kenneth Zadeck <zadeck@naturalbridge.com>
1375
1376 * df-scan.c (problem_SCAN): Added NULL reset function.
1377 (df_scan_reset_blocks): Added code to call reset block function
1378 (df_bb_refs_delete) Fixed comment.
1379 (df_insn_refs_delete): Made tolerant of deleting non existent info
1380 for dataflow problems that need to be reset.
1381 * df-core.c (df_set_blocks): Ditto.
1382 * df.h (struct df_problem): Added reset_fun.
1383 * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
1384 problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
1385 (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
1386 functions to clear out all references to def-use or use-def chains.
1387
1388 2006-01-21 Ben Elliston <bje@au.ibm.com>
1389
1390 * varasm.c (assemble_real): Initialise data array.
1391
1392 2006-01-20 Paul Brook <paul@codesourcery.com>
1393
1394 Merge from csl-arm-branch.
1395 2005-09-21 Kazu Hirata <kazu@codesourcery.com>
1396 * config/arm/arm.md (movdi): Force operands[1] to a register
1397 if we have a non-register source.
1398 (*arm_movdi, *movdf_soft_insn): Require that one of the
1399 operands be a register.
1400 * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
1401 * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
1402
1403 2006-01-20 DJ Delorie <dj@redhat.com>
1404
1405 * varasm.c (initialize_constant_valid_p): Allow pointers
1406 initialized from integer constants of lesser precision.
1407 (output_constant): Allow non-int-sized pointer modes to be
1408 initialized from integer constants.
1409
1410 2006-01-20 Joseph S. Myers <joseph@codesourcery.com>
1411
1412 PR libstdc++/25524
1413 * cppdefault.h (struct default_include): Add multilib flag.
1414 * cppdefault.c (cpp_include_defaults): Set it.
1415 * c.opt (-imultilib): New option.
1416 * c-opts.c (imultilib): New.
1417 (c_common_handle_option): Handle -imultilib.
1418 (c_common_post_options): Likewise.
1419 * c-incpath.c (add_standard_paths, register_include_chains):
1420 Likewise.
1421 * c-incpath.h (register_include_chains): Add extra parameter.
1422 * gcc.c (do_spec_1): Generate -imultilib option.
1423 (The Specs Language): Update %I description.
1424 (process_command): Update copyright notice.
1425 * doc/cppopts.texi (-imultilib): Document.
1426 * doc/invoke.texi (-imultilib): Include in option summary.
1427 (%I): Update specs documentation.
1428
1429 2006-01-20 Zdenek Dvorak <dvorakz@suse.cz>
1430
1431 * loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
1432
1433 2006-01-20 Richard Sandiford <richard@codesourcery.com>
1434
1435 * stmt.c (case_bit_test_cmp): Stabilize the sort using code
1436 label numbers.
1437
1438 2006-01-20 Richard Guenther <rguenther@suse.de>
1439 Steven Bosscher <stevenb.gcc@gmail.com>
1440
1441 PR rtl-optimization/24626
1442 * cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
1443 EDGE_TRUE_VALUE if in RTL mode.
1444
1445 Revert
1446 2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
1447 * cfgrtl.c (rtl_verify_flow_info_1): Fix.
1448
1449 2006-01-20 Dirk Mueller <dmueller@suse.com>
1450
1451 PR c++/5520
1452 * c-parser.c (c_parser_if_body): Use build_empty_stmt()
1453 instead of a special NOP marker.
1454 * c-typeck.c (c_finish_if_stmt): Remove obsoleted special
1455 NOP marker handling.
1456 * c-common.h (empty_body_warning): Add forward declaration.
1457 * c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
1458 Now uses IS_EMPTY_STMT() instead of special NOP markers.
1459
1460 2006-01-20 Paul Brook <paul@codesourcery.com>
1461
1462 * Makefile.in (lang_checks): Keep going if mkdir fails.
1463
1464 2006-01-19 Kenneth Zadeck <zadeck@naturalbridge.com>
1465
1466 * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
1467 be able to clean out basic block when not necessary.
1468 (df_scan_free): Fixed to properly delete information if df is
1469 unused before calling df_finish.
1470 (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
1471 df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
1472 or comment typos.
1473 (df_bb_refs_delete): New function.
1474 (df_refs_delete): Moved per block code to df_bb_refs_delete.
1475 * df-core.c (df_set_blocks): Added code to properly clean out
1476 unused blocks if they are not part of the blocks to consider.
1477 Added additional null check.
1478 (df_compact_blocks): Added basic block parameter to free_bb_fun to
1479 be able to clean out basic block when not necessary
1480 * df.h (df_free_bb_function): Ditto.
1481 (df_bb_refs_delete): New function.
1482 * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
1483 df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
1484 basic block parameter to be able to clean out basic block when not
1485 necessary.
1486 (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
1487 (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
1488 Fixed to properly delete information if df is unused before
1489 calling df_finish.
1490
1491 2006-01-19 Kenneth Zadeck <zadeck@naturalbridge.com>
1492
1493 PR rtl-optimization/25799
1494 * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
1495 Corrected confluence operator to remove bits from op2 before oring
1496 with op1 rather than removing bits from op1.
1497 (df_ru_transfer_function): Corrected test on wrong bitmap which
1498 caused infinite loop. Both of these problems were introduced in
1499 the dataflow rewrite.
1500
1501 2006-01-19 DJ Delorie <dj@redhat.com>
1502
1503 * reload1.c (find_reload_regs): Note the details of reload
1504 failures in the dump file.
1505 (spill_failure): Likewise.
1506
1507 2006-01-20 Zdenek Dvorak <dvorakz@suse.cz>
1508
1509 * loop-iv.c: Include df.h and hashtab.h.
1510 (enum iv_grd_result): New enum.
1511 (DF_REF_IV, DF_REF_IV_SET): New macros.
1512 (struct biv_entry): New.
1513 (df, bivs): New global variables.
1514 (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
1515 assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
1516 Removed.
1517 (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
1518 iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
1519 analyzed_for_bivness_p, record_biv): New functions.
1520 (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
1521 get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
1522 iv_analyze, biv_p, iv_analysis_done): Work with df representation of
1523 UD chains.
1524 (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
1525 analysed.
1526 (iv_number_of_iterations): Use new interface to iv analysis.
1527 * loop-unroll.c: Do not include varray.h.
1528 (analyze_iv_to_split_insn): Use new interface to iv
1529 analysis.
1530 * loop-unswitch.c (may_unswitch_on): Ditto.
1531 * df.c (df_bitmaps_free): Only work for bbs for that structures are
1532 allocated.
1533 (df_bb_modify): Realloc tables to the new index.
1534 (df_find_use): New function.
1535 * df.h (df_find_use): Declare.
1536 * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
1537 outmode.
1538 * cfgloop.h (struct rtx_iv): Remove analysed field.
1539 (iv_get_reaching_def): Removed.
1540 (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
1541 * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
1542 (loop-iv.o): Add df.h and hashtab.h dependency.
1543 * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.
1544
1545 2006-01-20 Alan Modra <amodra@bigpond.net.au>
1546
1547 * libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
1548 Double TFmode.
1549 (__floatundisf, __floatundidf): Likewise.
1550 * libgcc2.h (IS_IBM_EXTENDED): Define.
1551
1552 2006-01-19 DJ Delorie <dj@redhat.com>
1553
1554 * config/m32c/m32c.h (REG_ALLOC_ORDER): Define.
1555
1556 2006-01-19 Paul Brook <paul@codesourcery.com>
1557
1558 * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
1559 as nothrow when unwinding tables are disabled.
1560
1561 2006-01-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1562
1563 PR testsuite/25171
1564 * c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
1565 of bit-field" when in system header.
1566
1567 2006-01-19 DJ Delorie <dj@redhat.com>
1568
1569 * config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
1570 the 16 bit shift limit of the m16c.
1571
1572 2006-01-19 Andrew Pinski <pinskia@physics.uc.edu>
1573
1574 PR target/22099
1575 * config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
1576 * config/i386/i386.c (output_set_got): Output the label if we have one
1577 for the TARGET_DEEP_BRANCH_PREDICTION case.
1578
1579 2006-01-19 Jan Hubicka <jh@suse.cz>
1580 H.J. Lu <hongjiu.lu@intel.com>
1581 Evandro Menezes <evandro.menezes@amd.com>
1582
1583 * invoke.texi (generic): Document
1584 (i686) Update.
1585 * config.gcc: Make x86_64-* and i686-* default to generic tunning.
1586 * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
1587 TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
1588 (x86_use_incdec, x86_pad_returns): New variables
1589 (TARGET_CPU_DEFAULT_generic): New constant
1590 (TARGET_CPU_DEFAULT_NAMES): Add generic.
1591 (enum processor_type): Add generic32 and generic64.
1592 * i386.md (cpu attribute): Add generic32/generic64
1593 (movhi splitter): Behave sanely when both partial_reg_dependency and
1594 partial_reg_stall are set.
1595 (K8 splitters): Enable for generic as well.
1596 * predicates.md (incdec_operand): Use TARGET_INCDEC
1597 (aligned_operand): Avoid memory mismatch stalls.
1598 * athlon.md: Enable for generic64, new patterns for 128bit moves.
1599 * ppro.md: Enable for generic32
1600 * i386.c (generic64_cost, generic32_cost): New.
1601 (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
1602 (x86_use_leave): Enable for generic64. (x86_use_sahf,
1603 x86_ext_80387_constants): Enable for generic32. (x86_push_memory,
1604 x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
1605 x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
1606 x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
1607 x86_partial_reg_dependency, x86_memory_mismatch_stall,
1608 x86_accumulate_outgoing_args, x86_prologue_using_move,
1609 x86_epilogue_using_move, x86_arch_always_fancy_math_387,
1610 x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
1611 Enable for generic.
1612 (x86_use_incdec, x86_pad_returns): New.
1613 (override_options): Add generic32 and generic64, translate "generic"
1614 to generic32/generic64 and "i686" to "generic32", refuse
1615 "generic32"/"generic64" as arch target.
1616 (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
1617 (ix86_reorg): Honor PAD_RETURNS.
1618
1619 2006-01-19 Diego Novillo <dnovillo@redhat.com>
1620
1621 * tree-pretty-print.c (dump_generic_node): Handle
1622 OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
1623 * cgraph.c (cgraph_expand_queue): Rename from
1624 cgraph_analyze_queue. Update all users.
1625 * cgraphunit.c (cgraph_assemble_pending_functions): Process
1626 cgraph_expand_queue.
1627 (cgraph_expand_all_functions): Likewise.
1628 (cgraph_finalize_pending_functions): Remove. Update callers.
1629
1630 * tree.h (OMP_DIRECTIVE_P): Define.
1631 (OMP_PARALLEL_FN): Define.
1632 (OMP_PARALLEL_DATA_ARG): Define.
1633 (OMP_SECTIONS_SECTIONS): Define.
1634 * tree-pass.h (pass_expand_omp): Declare.
1635 * omp-low.c (struct omp_region): Declare.
1636 (struct omp_context): Remove fields 'parallel_type',
1637 'parallel_start_ix' and 'parallel_start_additional_args'.
1638 Update all users.
1639 (struct omp_for_data): Rename from struct expand_omp_for_data.
1640 (omp_regions): New static variable.
1641 (root_omp_region): New static variable.
1642 (find_omp_clause): Make static.
1643 (is_in_combined_parallel_ctx): Remove.
1644 (is_combined_parallel): New.
1645 (extract_omp_for_data): Move earlier in the file.
1646 (workshare_safe_to_combine_p): New.
1647 (get_ws_args_for): New.
1648 (determine_parallel_type): Move earlier in the file.
1649 (omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
1650 child function.
1651 (omp_copy_decl): Likewise.
1652 (create_omp_child_function): Likewise.
1653 (lookup_omp_region): New.
1654 (dump_omp_region): New.
1655 (debug_omp_region): New.
1656 (debug_all_omp_regions): New.
1657 (new_omp_region): New.
1658 (scan_omp_parallel): If parallel_nesting_level > 1, the
1659 directive is nested within another parallel directive.
1660 Set OMP_PARALLEL_FN.
1661 (scan_omp_for): Do not try to handle combined parallel+for
1662 cases.
1663 Remove FIXME comment.
1664 (scan_omp_nested): Remove.
1665 (scan_omp_1): Do not call scan_omp_nested when
1666 parallel_nesting_level is > 1.
1667 Do not change the DECL_CONTEXT of local variables found.
1668 (lookup_decl_in_outer_ctx): New.
1669 (lower_rec_input_clauses): Rename from expand_rec_input_clauses.
1670 (lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
1671 (lower_reduction_clauses): Rename from expand_reduction_clauses.
1672 (lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
1673 If CTX is nested, lookup VAR in the outer context when
1674 building copy assignment.
1675 (lower_send_clauses): Rename from expand_send_clauses.
1676 If CTX is nested, lookup VAR in the outer context when
1677 building copy assignments.
1678 (lower_send_shared_vars): Rename from expand_send_shared_vars.
1679 If CTX is nested, lookup VAR in the outer context when
1680 building copy assignments.
1681 (expand_parallel_call): Rename from build_parallel_call.
1682 Handle combined parallel+workshare cases.
1683 Re-implement to emit code into the CFG.
1684 (list2chain): New.
1685 (expand_omp_parallel): Re-implement to emit code into the CFG.
1686 Call move_sese_region_to_fn to outline the sub-graph
1687 containing the parallel region.
1688 (expand_omp_for_1): Remove.
1689 (expand_omp_for_generic): Re-implement to emit code into the
1690 CFG.
1691 (expand_omp_for_static_nochunk): Likewise.
1692 (expand_omp_for_static_chunk): Likewise.
1693 (expand_omp_for): Likewise.
1694 (expand_omp_sections): Likewise.
1695 (remove_exit_barriers): New.
1696 (expand_omp_synch): New.
1697 (expand_omp): New.
1698 (build_omp_regions_1): New.
1699 (build_omp_regions): New.
1700 (execute_expand_omp): New.
1701 (gate_expand_omp): New.
1702 (pass_expand_omp): Define.
1703 (lower_omp_sections): Rename from expand_omp_sections.
1704 Set OMP_SECTIONS_SECTIONS.
1705 (lower_omp_single_simple): Rename from expand_omp_single_simple.
1706 (lower_omp_single_copy): Rename from expand_omp_single_copy.
1707 (lower_omp_single): Rename from expand_omp_simple.
1708 (lower_omp_master): Rename from expand_omp_master.
1709 (lower_omp_ordered): Rename from expand_omp_ordered.
1710 (lower_omp_critical): Rename from expand_omp_critical.
1711 (lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
1712 (lower_omp_for): Re-implement.
1713 (lower_omp_parallel): Re-implement.
1714 (lower_regimplify): Rename from expand_regimplify.
1715 (lower_omp_1): Rename from expand_omp_1.
1716 If there are syntax errors in the program, replace every
1717 OpenMP directive with NOP.
1718 Call lower_omp_* instead of expand_omp_*.
1719 (lower_omp): Rename from expand_omp.
1720
1721 * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
1722 * tree-gimple.h (enum omp_parallel_type): Remove.
1723 (gimple_boolify): Declare extern.
1724 (find_omp_clause, determine_parallel_type): Remove.
1725
1726 * gimple-low.c (lower_omp_directive): New.
1727 (lower_stmt): Call it.
1728 (record_vars_into): Move from ...
1729 (record_vars): ... here.
1730 Call record_vars_into with current_function_decl.
1731
1732 * gimplify.c (struct gimplify_ctx): Remove fields
1733 combined_pre_p and combined_ctxp. Update users.
1734 (get_formal_tmp_var): Add documentation.
1735 (gimple_boolify): Make extern.
1736 (gimplify_expr_in_ctx): Remove. Update callers.
1737 (gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
1738 will always be a BIND_EXPR.
1739 (gimplify_expr): Handle OMP_RETURN_EXPR.
1740 * tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
1741 (OMP_PARALLEL): Add 3 operands.
1742 (OMP_SECTIONS): Add 1 operand.
1743 (OMP_RETURN_EXPR): Define.
1744
1745 * tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
1746 (copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
1747 * tree-iterator.c (alloc_stmt_list): Assert that we are not
1748 creating a circular free list.
1749 (free_stmt_list): Assert that we are not freeing stmt_list_cache.
1750
1751 * tree-flow.h (move_sese_region_to_fn): Declare.
1752 (record_vars_into): Declare.
1753 * tree-cfg.c (make_omp_sections_edges): New.
1754 (make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
1755 OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
1756 OMP_SECTIONS and OMP_SECTION.
1757 (is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
1758 (set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
1759 (verify_stmt): Do not handle OMP_DIRECTIVE_P.
1760 (gather_blocks_in_sese_region): New.
1761 (struct move_stmt_d): Declare.
1762 (move_stmt_r): New.
1763 (move_block_to_fn): New.
1764 (move_sese_region_to_fn): New.
1765
1766 * passes.c (init_optimization_passes): Schedule
1767 pass_expand_omp after pass_init_datastructures.
1768
1769 * tree-ssa-operands.c (get_expr_operands): Handle
1770 OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
1771 OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.
1772
1773 2006-01-19 Jeff Law <law@redhat.com>
1774
1775 * tree-vrp.c (extract_range_from_assert): Refine the result range
1776 if the variable referenced by the ASSERT_EXPR has a range and
1777 either the tentative result range or the previous range is a
1778 VR_ANTI_RANGE.
1779
1780 2006-01-19 Richard Sandiford <richard@codesourcery.com>
1781
1782 * c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.
1783
1784 2006-01-19 Jan Hubicka <jh@suse.cz>
1785
1786 * tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.
1787
1788 2006-01-19 Paolo Bonzini <bonzini@gnu.org>
1789
1790 * combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
1791 (expand_compound_operation, expand_field_assignment): Fail if the
1792 bit lengths of an extract operation are out of range.
1793 (make_extraction): Compute wanted_inner_mode based on the position
1794 and length of the extraction. Make it extraction_mode for non-constant
1795 positions, and do not modify offset in that case. When generating a
1796 new MEM, use a mode that can hold the extraction while keeping correct
1797 alignment. Remove code that supported MEMs wrapped by USEs.
1798 (simplify_shift_const_1, force_to_mode) <case USE>: Remove.
1799
1800 2006-01-19 Andreas Krebbel <krebbel1@de.ibm.com>
1801
1802 * config/s390/s390.md ("Y", "y"): New mode attribute.
1803 ("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
1804 "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
1805 "*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
1806 "*addsi3_imm_cc", "*addsi3_carry1_cc",
1807 "*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
1808 "*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
1809 "*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
1810 "*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
1811 "*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
1812 "*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
1813 "addsi3", "subsi3"): Insn patterns removed.
1814 ("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
1815 "*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
1816 "*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
1817 "*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
1818 "*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
1819 "*sub<mode>3_cconly2"): New insn patterns.
1820 ("addsi3", "subsi3"): New expanders.
1821
1822 2006-01-19 Dorit Nuzman <dorit@il.ibm.com>
1823
1824 * Makefile.in (tree-vect-patterns.o): Add rule for new file.
1825 * tree-vect-analyze.c (vect_determine_vectorization_factor): Use
1826 existing STMT_VINFO_VECTYPE if available.
1827 (vect_mark_relevant): Add special handling for stmts that are
1828 marked as STMT_VINFO_IN_PATTERN_P.
1829 (vect_analyze_loop): Call vect_pattern_recog.
1830 * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
1831 * tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
1832 stmt_info.
1833 (STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
1834 (vect_recog_func_ptr): New function-pointer type.
1835 * tree-vect-patterns.c: New file.
1836 (vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
1837 (vect_recog_dot_prod_pattern, vect_pattern_recog):
1838 (vect_pattern_recog_1): New functions.
1839 (vect_pattern_recog_funcs): New array of function pointers.
1840
1841 * tree-vectorizer.h (ternary_op): New enum value.
1842 * tree-vect-transform.c (vect_create_epilog_for_reduction): Added
1843 declaration. Revised documentation. Removed redundant dump prints.
1844 Removed redundant argument. Added support for reduction patterns.
1845 (vectorizable_reduction): Added support for reduction patterns.
1846 (vect_transform_stmt): Added support for patterns.
1847
1848 * expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
1849 * genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
1850 * optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
1851 (expand_widen_pattern_expr): New function.
1852 (init_optabs): Initialize new optabs udot_prod_optab,
1853 sdot_prod_optab.
1854 * optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
1855 (sdot_prod_optab, udot_prod_optab): Define new optabs.
1856 (expand_widen_pattern_expr): New function declaration.
1857 * tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
1858 tree-codes.
1859 * tree-inline.c (estimate_num_insns_1): Added cases for new
1860 tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
1861 * tree-pretty-print.c (dump_generic_node): Likewise.
1862 (op_prio): Likewise.
1863 (op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
1864 * tree-ssa-operands.c (get_expr_operands): Added case for
1865 DOT_PROD_EXPR.
1866 * tree-vect-patterns.c (widened_name_p): New function.
1867 (vect_recog_dot_prod_pattern): Added function implementation.
1868 * tree-vect-transform.c (get_initial_def_for_reduction): Added
1869 cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
1870 * config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
1871 * config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.
1872
1873 * expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
1874 * genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
1875 * optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
1876 (init_optabs): Initialize new optabs widen_ssum_optab,
1877 widen_usum_optab.
1878 * optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
1879 (widen_ssum_optab, widen_usum_optab): Define new optabs.
1880 * tree-vect-generic.c: (expand_vector_operations_1): Check type of
1881 use instead of type of def.
1882 * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
1883 function implementation.
1884 * config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
1885 widen_ssumv8hi): New.
1886
1887 * doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
1888 patterns.
1889
1890 2006-01-19 Richard Sandiford <richard@codesourcery.com>
1891
1892 PR c/25805
1893 * c-decl.c (add_flexible_array_elts_to_size): New function.
1894 (finish_decl): Use it.
1895
1896 2006-01-18 Andrew Pinski <pinskia@physics.uc.edu>
1897
1898 * diagnostic.h: Include options.h.
1899 * config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
1900 dependancies for diagnostic.h.
1901 * Makefile.in (DIAGNOSTIC_H): Add options.h.
1902
1903 2006-01-16 Daniel Berlin <dberlin@dberlin.org>
1904
1905 * tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
1906 (ssa_ro_call_cache_valid): Ditto.
1907 * tree-ssa-alias.c (sort_tags_by_id): New function.
1908 (init_transitive_clobber_worklist): Ditto.
1909 (add_to_worklist): Ditto.
1910 (mark_aliases_call_clobbered): Ditto.
1911 (compute_tag_properties): Ditto.
1912 (set_initial_properties): Ditto.
1913 (compute_call_clobbered): Ditto.
1914 (compute_may_aliases): Call compute_call_clobbered and grouping.
1915 (compute_flow_sensitive_aliasing): Remove clobbering related code.
1916 (compute_flow_insensitive_aliasing): Grouping now happens in our
1917 caller.
1918 (setup_pointers_and_addressables): Remove clobbering related code.
1919 (add_may_alias): Ditto.
1920 (replace_may_alias): Ditto.
1921 (get_nmt_for): Ditto.
1922 (create_global_var):
1923 (is_escape_site): Return an escape_type enumeration.
1924 * tree-flow-inline.h (is_call_clobbered): Global var does not
1925 imply call clobbered.
1926 (mark_call_clobbered): Take a reason for marking this. Remove
1927 marking of globalness, and cache invalidation.
1928 (clear_call_clobbered): Remove cache invalidation code.
1929 * tree-dfa.c (dump_variable): If details is on, dump the reason
1930 for escaping.
1931 * tree-outof-ssa.c (create_temp): Copy escape mask from original
1932 variable.
1933 * tree-flow.h (struct ptr_info_def): Add escape mask member.
1934 (struct var_ann_d): Ditto.
1935 (enum escape_type): New.
1936 (mark_call_clobbered): Adjust prototype.
1937 * tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
1938 are never call clobbered.
1939 Record reasons for escaping.
1940 * tree-ssa-structalias.h (is_escape_site): Update prototype.
1941 * tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
1942 (ssa_ro_call_cache_valid): Ditto.
1943 (clobbered_v_may_defs): Ditto.
1944 (clobbered_vuses): Ditto.
1945 (ro_call_vuses): Ditto.
1946 (clobber_stats): New.
1947 (init_ssa_operands): Zero out clobber stats.
1948 (fini_ssa_operands): Print out clobber stats.
1949 (get_call_expr_operands): Pass callee fndecl to
1950 add_call_read_ops).
1951 (add_call_clobber_ops): Remove use of cache.
1952 Add use of PURE_CONST information.
1953 (add_call_read_ops): Remove use of cache.
1954 Add use of static not_read information.
1955
1956 2006-01-18 Alexandre Oliva <aoliva@redhat.com>
1957
1958 Introduce TLS descriptors for i386 and x86_64.
1959 * config/i386/i386.h (TARGET_GNU2_TLS): New macro.
1960 (TARGET_ANY_GNU_TLS): New macro.
1961 (enum tls_dialect): Added TLS_DIALECT_GNU2.
1962 (struct machine_function): Add tls_descriptor_call_expanded_p.
1963 (ix86_tls_descriptor_calls_expande_in_cfun): New macro.
1964 (ix86_current_function_calls_tls_descriptor): Likewise.
1965 * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
1966 (override_options): Introduce gnu2 tls dialect.
1967 (ix86_frame_pointer_required): Functions containing TLSCALLs are
1968 not leaves.
1969 (ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
1970 Likewise.
1971 (legitimize_tls_address): Adjust logic for GNU2 TLS.
1972 (ix86_init_machine_status): Initialize new field.
1973 (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
1974 (ix86_tls_module_base): New.
1975 * config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
1976 * config/i386/i386.md (UNSPEC_TLSDESC): New constant.
1977 (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
1978 (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
1979 (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
1980 (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
1981 (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
1982 (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
1983 * config/i386/predicates.md (tls_modbase_operand): New.
1984 (tp_or_register_operand): New.
1985
1986 2006-01-18 Daniel Berlin <dberlin@dberlin.org>
1987
1988 * ipa-reference.c (check_operand): Allow FUNCTION_DECL.
1989 (look_for_address_of): Ditto.
1990 (ipa_init): Walk the function decls.
1991 (static_execute): Don't set readonly on FUNCTION_DECL's.
1992
1993 2006-01-18 Roger Sayle <roger@eyesopen.com>
1994
1995 * config/i386/i386.md (shift spliter): Fix a a typo in the splitter
1996 for shifts where the source and destination registers are different.
1997
1998 2006-01-18 Paul Brook <paul@codesourcery.com>
1999
2000 Merge from csl-arm-branch.
2001 2005-03-14 Julian Brown <julian@codesourcery.com>
2002 * config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
2003 (aeabi_llsl): Likewise.
2004 (ashrdi3): Likewise.
2005 (aeabi_lasr): Likewise.
2006 (lshrdi3): Likewise.
2007 (aeabi_llsr): Likewise.
2008 2005-03-10 Julian Brown <julian@codesourcery.com>
2009 * config.gcc: Disable shared libgcc for SymbianOS.
2010 * config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.
2011
2012 2006-01-18 DJ Delorie <dj@redhat.com>
2013
2014 * c-pragma.c (handle_pragma_diagnostic): New.
2015 (init_pragma): Register it.
2016 * doc/extend.texi: Document it.
2017
2018 * diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
2019 * diagnostic.h (diagnostic_classify_diagnostic): Declare.
2020 (diagnostic_context): Add classify_diagnostic[].
2021 * diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
2022 as errors if they're overridden to DK_WARNING.
2023 (diagnostic_initialize): Initialize classify_diagnostic[].
2024 (diagnostic_set_kind_override): New.
2025 (diagnostic_report_diagnostic): Check for kind changes.
2026 * opts.c (common_handle_option): Take lang_mask. Update callers.
2027 Handle OPT_Werror_.
2028 * common.opt (Werror=): New.
2029 * doc/invoke.texi: Document -Werror=*
2030
2031 2006-01-18 Jeff Law <law@redhat.com>
2032
2033 * tree-vrp.c (test_for_singularity): Correct test for new
2034 min limit. Use operand_equal_p rather than pointer equality
2035 for testing if new min/max values are equal.
2036
2037 * tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
2038 using range information until after propagation and folding.
2039
2040 2006-01-18 Richard Henderson <rth@redhat.com>
2041 Aldy Hernandez <aldyh@redhat.com>
2042 Jakub Jelinek <jakub@redhat.com>
2043 Diego Novillo <dnovillo@redhat.com>
2044
2045 * omp-low.c: New file.
2046 * c-omp.c: New file.
2047
2048 2006-01-18 Richard Henderson <rth@redhat.com>
2049 Jakub Jelinek <jakub@redhat.com>
2050 Diego Novillo <dnovillo@redhat.com>
2051
2052 * doc/invoke.texi: Document -fopenmp.
2053 * tree-dump.h (debug_function): Declare.
2054 * hooks.c (hook_bool_tree_bool_false): New function.
2055 (hook_tree_tree_null): Remove.
2056 (hook_tree_tree_tree_null): New.
2057 * hooks.h: Update to match.
2058 * tree-pretty-print.c (debug_tree_chain): New.
2059 (print_generic_expr): Handle TDF_CHAIN.
2060 (dump_generic_node): Handle BLOCK.
2061 Do not abort with incomplete SWITCH_EXPRs.
2062 Do not dump body of an OpenMP directive if TDF_SLIM is given.
2063 <case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
2064 print space after directive name.
2065 <OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
2066 Handle OMP_MASTER and OMP_ORDERED.
2067 Handle printing of OMP_BODY just in one place, goto
2068 dump_omp_body in the rest of OMP_* nodes that have
2069 OMP_BODY.
2070 Don't handle clause nodes here. Update omp statements to
2071 use dump_omp_clauses.
2072 Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
2073 OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
2074 OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
2075 GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
2076 GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
2077 GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
2078 Adjust output for GOMP_PARALLEL.
2079 (dump_omp_clauses): New.
2080 (print_declaration): Dump DECL_VALUE_EXPR.
2081 (op_symbol_1): Split out of op_symbol.
2082 (dumping_stmts): Remove. Update all users.
2083 * cgraph.c (cgraph_analyze_queue): New.
2084 (cgraph_add_new_function): New.
2085 * cgraph.h (cgraph_analyze_queue): Declare.
2086 (cgraph_add_new_function): Declare.
2087 (cgraph_lower_function): Remove.
2088 * tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
2089 nodes. Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
2090 and TYPE_P nodes in its default clause.
2091 (empty_body_p): New.
2092 (tree_range_check_failed): New.
2093 (build5_stat): New.
2094 * tree.h (OMP_CLAUSE_REDUCTION_INIT,
2095 OMP_CLAUSE_REDUCTION_MERGE,
2096 OMP_CLAUSE_REDUCTION_PLACEHOLDER,
2097 OMP_CLAUSE_PRIVATE_DEBUG,
2098 OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
2099 OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
2100 OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
2101 OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
2102 OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
2103 OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
2104 OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
2105 OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
2106 OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
2107 OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
2108 OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
2109 OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
2110 OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
2111 OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
2112 (TREE_RANGE_CHECK): New.
2113 (empty_body_p): Declare.
2114 (enum omp_clause_default_kind): New.
2115 (build_string_literal): Declare.
2116 (enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
2117 (build5_stat, build5): Declare.
2118 * tree-pass.h (TDF_CHAIN): Define.
2119 * tree-pass.h (PROP_gimple_lomp): Define.
2120 (pass_lower_omp): Declare.
2121 * diagnostic.h (debug_tree_chain): Declare.
2122 * builtins.c (get_builtin_sync_mode): Use 0 as last argument to
2123 mode_for_size.
2124 (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
2125 * builtins.c (build_string_literal): Make extern.
2126 * gcc.c (include_spec_function): New.
2127 (static_spec_functions): Add it.
2128 (main): Move load of libgomp.spec ...
2129 (LINK_COMMAND_SPEC): ... here.
2130 (link_gomp_spec): New.
2131 (static_specs): Include it.
2132 (LINK_COMMAND_SPEC): Add link_gomp.
2133 (GOMP_SELF_SPECS): New.
2134 (driver_self_specs): Include it.
2135 (switch_matches): Don't mark inline.
2136 (main): Load libgomp.spec.
2137 * tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
2138 OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
2139 and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
2140 * tree-gimple.h (enum omp_parallel): Declare.
2141 (determine_parallel_type): Declare.
2142 (omp_firstprivatize_variable): Declare.
2143 (omp_reduction_init): Declare.
2144 (diagnose_omp_structured_block_errors): Declare.
2145 (struct walk_stmt_info): Add want_return_expr.
2146 (struct walk_stmt_info): Add want_bind_expr, want_locations.
2147 (find_omp_clause): Declare.
2148 (insert_field_into_struct): Declare.
2149 (struct walk_stmt_info): Move from tree-nested.c
2150 (walk_stmts): Declare.
2151 * c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
2152 to 200505.
2153 * cgraphunit.c (cgraph_lower_function): Make static.
2154 (cgraph_finalize_pending_functions): New.
2155 (cgraph_finalize_function): Call it.
2156 (cgraph_finalize_compilation_unit): Likewise.
2157 * builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
2158 BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
2159 (BT_FN_UINT_UINT): New.
2160 (DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
2161 DEF_FUNCTION_TYPE_VAR_4): Document.
2162 (BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
2163 BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
2164 BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
2165 BT_FN_VOID_OMPFN_PTR_UINT_UINT,
2166 BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
2167 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
2168 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
2169 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
2170 * builtins.def: Update DEF_BUILTIN comment to include COND argument.
2171 Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
2172 into separate files.
2173 (DEF_GOMP_BUILTIN): New.
2174 (BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
2175 BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
2176 BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
2177 BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
2178 BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
2179 BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
2180 BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
2181 BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
2182 BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
2183 BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
2184 BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
2185 BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
2186 BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
2187 BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
2188 BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
2189 BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
2190 BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
2191 BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
2192 BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
2193 BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
2194 BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
2195 BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
2196 BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
2197 BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
2198 BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
2199 BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
2200 * sync-builtins.def: New file, moved from builtins.def.
2201 * omp-builtins.def: New file, moved from builtins.def.
2202 * c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2203 * gimple-low.c (lower_function_body): Clear data.
2204 (lower_stmt): Do not handle COMPOUND_EXPR.
2205 Remove call to print_node_brief.
2206 * c-tree.h (c_finish_omp_clauses): New prototype.
2207 (C_DECL_THREADPRIVATE_P): Define.
2208 (lookup_name_no_remap, c_omp_remap_private): Remove
2209 (c_begin_omp_parallel, c_finish_omp_parallel): Update.
2210 (check_for_loop_decls): Update decl.
2211 (lookup_name_no_remap, c_omp_remap_private): Declare.
2212 (build_indirect_ref, build_modify_expr, pushdecl,
2213 pushdecl_top_level): Move to c-common.h.
2214 * dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
2215 before the switch, but just in the 2 places that need it.
2216 * c-decl.c (diagnose_mismatched_decls): Do not check for
2217 mismatched thread-local attributes when OLDDECL is marked
2218 threadprivate and NEWDECL has no thread-local attributes.
2219 (merge_decls): Merge C_DECL_THREADPRIVATE_P.
2220 (c_gimple_diagnostics_recursively): Rename from
2221 c_warn_unused_result_recursively. Invoke
2222 diagnose_omp_structured_block_errors.
2223 (check_for_loop_decls): Return a singular decl found.
2224 * langhooks.c (lhd_omp_predetermined_sharing): Return
2225 OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
2226 (lhd_omp_firstprivatize_type_sizes): New.
2227 (lhd_omp_assignment): New.
2228 (lhd_omp_predetermined_sharing): New.
2229 * langhooks.h (struct gimplify_omp_ctx): Forward declare.
2230 (struct lang_hooks_for_types): Add
2231 omp_firstprivatize_type_sizes, omp_privatize_by_reference,
2232 omp_predetermined_sharing, omp_disregard_value_expr,
2233 omp_private_debug_clause, omp_clause_default_ctor,
2234 omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
2235 (c_finish_omp_clauses): New.
2236 (c_finish_bc_stmt): Diagnose break within omp for.
2237 (c_begin_omp_parallel, c_finish_omp_parallel): New.
2238 (build_unary_op): Return error_mark after reporting
2239 a readonly_error.
2240 (build_modify_expr): Likewise.
2241 * gimplify.c: Include optabs.h and pointer-set.h.
2242 (enum gimplify_omp_var_data): Declare.
2243 (struct gimplify_omp_ctx): Declare.
2244 (struct gimplify_ctx): Add fields prev_context, combined_pre_p
2245 and combined_ctxp.
2246 (gimplify_ctxp, gimplify_omp_ctxp): New local variables.
2247 (push_gimplify_context, pop_gimplify_context): Allow nesting.
2248 (splay_tree_compare_decl_uid): New.
2249 (new_omp_context): New.
2250 (delete_omp_context): New.
2251 (gimple_add_tmp_var): Call omp_add_variable.
2252 (gimplify_bind_expr): Likewise.
2253 (gimplify_var_or_parm_decl): If omp_notice_variable returned
2254 true, disregard DECL_VALUE_EXPR on the decl if any.
2255 (gimplify_expr_in_ctx): New.
2256 (omp_firstprivatize_variable, omp_firstprivatize_type_sizes
2257 omp_add_variable, omp_notice_variable, omp_is_private
2258 gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
2259 gimplify_adjust_omp_clauses, gimplify_omp_parallel
2260 gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
2261 gimplify_omp_atomic_fetch_op, goa_stabilize_expr
2262 gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
2263 gimplify_omp_atomic): New.
2264 (gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2265 OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
2266 OMP_CRITICAL and OMP_ATOMIC.
2267 (gimplify_body): Verify gimplify_ctxp is empty after gimplification.
2268 * c-pragma.h (enum pragma_kind): Add
2269 PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
2270 PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
2271 PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
2272 PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
2273 PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
2274 PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
2275 PRAGMA_OMP_THREADPRIVATE.
2276 * tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2277 OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
2278 OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
2279 OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
2280 OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
2281 OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
2282 OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
2283 OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
2284 OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
2285 * print-tree.c (print_node): Dump DECL_VALUE_EXPR.
2286 * tree-ssa-dce.c (find_control_dependence): Do not assume that
2287 ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
2288 * tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
2289 OpenMP directives.
2290 (struct nesting_info): Add field_map,
2291 suppress_expansion, debug_var_chain.
2292 (create_nesting_tree): Initialize them.
2293 (lookup_field_for_decl): Use field_map.
2294 (get_nonlocal_debug_decl, get_local_debug_decl): New.
2295 (convert_local_omp_clauses): New.
2296 (finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
2297 (walk_body): Split out of walk_function.
2298 (convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
2299 (convert_nonlocal_reference): Handle omp statements.
2300 (convert_local_reference): Likewise.
2301 (unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
2302 (unnest_nesting_tree): New.
2303 (lower_nested_functions): Call it.
2304 (insert_field_into_struct): Make extern.
2305 (struct walk_stmt_info): Move to tree-gimple.h.
2306 (walk_stmts): Make extern.
2307 * omp-builtins.def: New file.
2308 * tree-iterator.c (expr_only): Clarify comment.
2309 * c-common.h (pushdecl_top_level, pushdecl,
2310 build_modify_expr, build_indirect_ref,
2311 c_finish_omp_master, c_finish_omp_critical,
2312 c_finish_omp_ordered, c_finish_omp_barrier,
2313 c_finish_omp_atomic, c_finish_omp_flush,
2314 c_finish_omp_for, c_split_parallel_clauses,
2315 omp_clause_default_kind, c_omp_sharing_predetermined,
2316 c_omp_remap_decl): Declare.
2317 * Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
2318 (OBJS-common): Add omp-low.o.
2319 (c-omp.o, omp-low.o): Add.
2320 (gimplify.o): Add dependency on $(OPTABS_H).
2321 (GTFILES): Add omp-low.c.
2322 (gt-stringpool.h): Add.
2323 * tree-cfg.c (set_bb_for_stmt): Do not update the
2324 block-to-labels map if we are currently expanding to RTL.
2325 (tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
2326 checks.
2327 Handle IDENTIFIER_NODE.
2328 (tree_verify_flow_info): Do not ICE when emitting error
2329 messages about invalid labels.
2330 (dump_function_to_file): Reset CFUN before emitting the body
2331 of the function.
2332 (debug_function): New.
2333 * passes.c (init_optimization_passes): Schedule
2334 pass_lower_omp.
2335 * langhooks-def.h (lhd_omp_predetermined_sharing,
2336 lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
2337 Declare.
2338 (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
2339 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
2340 (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
2341 LANG_HOOKS_OMP_PREDETERMINED_SHARING,
2342 LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
2343 LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
2344 LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
2345 LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
2346 LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
2347 LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
2348 (LANG_HOOK_DECLS): Use them.
2349
2350 2006-01-18 Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
2351 Richard Henderson <rth@redhat.com>
2352 Jakub Jelinek <jakub@redhat.com>
2353 Diego Novillo <dnovillo@redhat.com>
2354
2355 * c-parser.c (pragma_omp_clause): Define.
2356 (c_parser_declaration_or_fndef): Document OpenMP syntax.
2357 (c_parser_compound_statement): Likewise.
2358 (c_parser_statement): Likewise.
2359 (c_parser_pragma): Handle omp pragmas.
2360 (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
2361 OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
2362 (c_parser_omp_clause_name, check_no_duplicate_clause,
2363 c_parser_omp_variable_list,
2364 c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
2365 c_parser_omp_clause_copyprivate,
2366 c_parser_omp_clause_default,
2367 c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
2368 c_parser_omp_clause_lastprivate,
2369 c_parser_omp_clause_nowait,
2370 c_parser_omp_clause_num_threads,
2371 c_parser_omp_clause_ordered, c_parser_omp_clause_private,
2372 c_parser_omp_clause_reduction,
2373 c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
2374 c_parser_omp_all_clauses, c_parser_omp_structured_block,
2375 c_parser_omp_atomic, c_parser_omp_barrier,
2376 c_parser_omp_critical, c_parser_omp_flush,
2377 c_parser_omp_for_loop, c_parser_omp_for,
2378 c_parser_omp_master, c_parser_omp_ordered,
2379 c_parser_omp_sections_scope, c_parser_omp_sections,
2380 c_parser_omp_parallel, c_parser_omp_single,
2381 c_parser_omp_construct, c_parser_omp_threadprivate): New.
2382 * c-pragma.c (init_pragma): Do omp pragma registration here.
2383 * c.opt (fopenmp): New flag.
2384
2385 2006-01-18 Eric Christopher <echristo@apple.com>
2386
2387 * gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
2388 * config/darwin.h (GOMP_SELF_SPECS): Define.
2389
2390 2006-01-18 Kazu Hirata <kazu@codesourcery.com>
2391
2392 * rtl.h: Remove the prototype for reg_alloc.
2393
2394 2006-01-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2395
2396 PR target/25731
2397 * config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
2398 hppa[12]*-*-hpux11*): Override default shared libgcc version for both
2399 sjlj and dwarf2 exception handling.
2400 * pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
2401 Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
2402 * pa/pa.c (function_value): Treat complex and vector types as
2403 aggregates.
2404 (function_arg): Likewise. Only pass scalar floats in the floating
2405 point argument registers.
2406 * pa/t-slibgcc-dwarf-ver: New file.
2407 * pa/t-slibgcc-sjlj-ver: New file.
2408 * pa/t-slibgcc-elf-ver: Delete file.
2409
2410 2006-01-19 Alan Modra <amodra@bigpond.net.au>
2411
2412 * config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
2413 unlikely_test_section_p test.
2414
2415 2006-01-18 Kazu Hirata <kazu@codesourcery.com>
2416
2417 * mode-switching.c (optimize_mode_switching): Make it static.
2418 * basic-block.h: Remove the prototype for
2419 optimize_mode_switching.
2420
2421 * modulo-sched.c (sms_schedule): Make it static.
2422 * rtl.h: Remove the prototype for sms_schedule.
2423
2424 * postreload-gcse.c (gcse_after_reload_main): Make it static.
2425 * rtl.h: Remove the prototype for gcse_after_reload_main.
2426
2427 * reg-stack.c (reg_to_stack): Make it static.
2428 * rtl.h: Remove the prototype for reg_to_stack.
2429
2430 * regrename.c (regrename_optimize, copyprop_hardreg_forward):
2431 Make them static.
2432 * rtl.h: Remove the prototypes for regrename_optimize and
2433 copyprop_hardreg_forward.
2434
2435 2006-01-18 Eric Botcazou <ebotcazou@adacore.com>
2436
2437 * config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
2438 alpha_split_tmode_pair. Add 'mode' and 'fixup_overlap' arguments.
2439 Test against the appropriate null constant for the mode.
2440 If 'fixup_overlap' is true, swap the operands if they overlap.
2441 (alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
2442 * config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
2443 alpha_split_tmode_pair and adjust for above change.
2444 * config/alpha/alpha.md (movtf_internal): Adjust call to
2445 alpha_split_tfmode_pair and rely on it to swap the operands.
2446 (movti_internal): New insn and post-reload splitter.
2447 (movti): New expander.
2448
2449 2006-01-18 Philippe De Muyter <phdm@macqel.be>
2450
2451 * config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
2452 operands.
2453
2454 2006-01-18 Kazu Hirata <kazu@codesourcery.com>
2455
2456 * rtlanal.c (global_reg_mentioned_p_1,
2457 global_reg_mentioned_p): Remove.
2458 * rtl.h: Remove the prototype for global_reg_mentioned_p.
2459
2460 * flow.c (initialize_uninitialized_subregs): Make it static.
2461 * rtl.h: Remove the prototype for
2462 initialize_uninitialized_subregs.
2463
2464 * function.c (instantiate_virtual_regs): Make it static.
2465 * function.h: Remove the prototype for
2466 instantiate_virtual_regs.
2467
2468 * regmove.c (regmove_optimize, combine_stack_adjustments):
2469 Make them static.
2470 * rtl.h: Remove the prototypes for regmove_optimize and
2471 combine_stack_adjustments.
2472
2473 2006-01-17 Roger Sayle <roger@eyesopen.com>
2474
2475 * config/i386/i386.c (COSTS_N_BYTES): New macro.
2476 (size_cost): Encode costs in bytes so that a reg-reg addition is
2477 equivalent to COSTS_N_INSNS(1).
2478 (override_options): Use the size_cost.branch_cost as the default
2479 ix86_branch_cost when optimizing for size.
2480
2481 2006-01-18 Ben Elliston <bje@au.ibm.com>
2482
2483 * Makefile.in (D32PBIT_FUNCS): New.
2484 (D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
2485 (libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
2486 D64PBIT_FUNCS and D128PBIT_FUNCS.
2487 (LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
2488 * mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
2489 D128PBIT are set.
2490 (decnumber_dep): Define.
2491 * doc/libgcc.texi (Decimal float library routines): New node.
2492 * config/dfp-bit.h, config/dfp-bit.c: New files.
2493
2494 2006-01-18 Ben Elliston <bje@au.ibm.com>
2495
2496 * expr.c (emit_move_change_mode): Always adjust addresses, not
2497 just during reload. Copy replacements only during reload.
2498 (emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
2499 emit_move_via_integer.
2500
2501 2006-01-17 Shantonu Sen <ssen@opendarwin.org>
2502
2503 * Makefile.in (check-%, check-consistency): Use $${srcdir}
2504 instead of $(srcdir) and ${srcdir}.
2505
2506 2006-01-17 Richard Earnshaw <rearnsha@arm.com>
2507
2508 PR target/592
2509 PR middle-end/11135
2510 * arm.h (struct machine_function): Add pic_reg.
2511 * arm.c (arm_pic_register): Make unsigned.
2512 (arm_override_options): Only set arm_pic_register if
2513 TARGET_SINGLE_PIC_BASE.
2514 (use_return_insn): Only test for a pic register if it is fixed.
2515 (arm_compute_save_reg0_reg12_mask): Likewise.
2516 (thumb_compute_save_reg_mask): Likewise.
2517 (legitimate_pic_operand): Factor out some known invariants.
2518 (legitimize_pic_address): If we don't have a fixed pic register,
2519 then set up a pseudo in the function entry sequence. Handle the
2520 pic base being in a pseudo.
2521 (arm_load_pic_register): Handle the pic register being in a pseudo.
2522 (arm_expand_prologue): Only set up the pic register if it is fixed.
2523 (thumb_expand_prologue): Likewise.
2524 * arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
2525 (pic_load_addr_based_insn): Likewise.
2526 (builtin_setjmp_receiver): Don't restore the pic base if it isn't
2527 fixed.
2528
2529 2006-01-18 Ben Elliston <bje@au.ibm.com>
2530
2531 * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
2532 decimal float modes for all floating point registers.
2533
2534 * config/rs6000/predicates.md (reg_or_mem_operand): Pair up
2535 match_code "mem" with match_test "macho_lo_sum_memory_operand".
2536
2537 2006-01-17 Jakub Jelinek <jakub@redhat.com>
2538
2539 PR c/25682
2540 * c-typeck.c (build_unary_op): Fold offsetof-like expressions
2541 even when the pointer is not NULL.
2542
2543 2006-01-16 Ian Lance Taylor <ian@airs.com>
2544
2545 * common.opt (ftoplevel-reorder): New option.
2546 * cgraph.c (cgraph_asm_nodes): New global variable.
2547 (cgraph_asm_last_node): New static variable.
2548 (cgraph_order): New global variable.
2549 (cgraph_create_node): Set new order field.
2550 (cgraph_varpool_node): Likewise.
2551 (decide_is_variable_needed): Return true if not
2552 flag_toplevel_reorder.
2553 (cgraph_add_asm_node): New function.
2554 * cgraph.h (struct cgraph_node): Add order field.
2555 (struct cgraph_varpool_node): Add order field.
2556 (struct cgraph_asm_node): Define.
2557 (cgraph_asm_nodes, cgraph_order): Declare.
2558 (cgraph_add_asm_node): Declare.
2559 * cgraphunit.c (cgraph_varpool_assemble_decl): New static
2560 function.
2561 (cgraph_varpool_assemble_pending_decls): Call it.
2562 (cgraph_output_pending_asms): New static function.
2563 (cgraph_finalize_compilation_unit): Call it.
2564 (struct cgraph_order_sort): Define.
2565 (cgraph_output_in_order): New static function.
2566 (cgraph_optimize): Call cgraph_output_pending_asms. Add code for
2567 !flag_toplevel_reorder case.
2568 * c-parser.c: Include "cgraph.h".
2569 (c_parser_asm_definition): Call cgraph_add_asm_node rather than
2570 assemble_asm.
2571 * Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
2572 than -fno-unit-at-a-time.
2573 * doc/invoke.texi (Option Summary): Mention
2574 -fno-toplevel-reorder.
2575 (Optimize Options): Document -fno-toplevel-reorder. Mention it in
2576 -funit-at-a-time documentation.
2577
2578 2006-01-17 Hans-Peter Nilsson <hp@axis.com>
2579 Kazu Hirata <kazu@codesourcery.com>
2580
2581 * Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.
2582
2583 2006-01-17 Kazu Hirata <kazu@codesourcery.com>
2584
2585 * Makefile.in (FUNCTION_H): New. Use it instead of
2586 function.h throughout the file.
2587 * function.h: Include tree.h.
2588
2589 2006-01-17 Ben Elliston <bje@au.ibm.com>
2590
2591 * recog.c: Separate some functions with whitespace.
2592
2593 2006-01-16 Richard Henderson <rth@redhat.com>
2594
2595 Merge from gomp branch:
2596 * Makefile.in (TREE_INLINE_H): New. Use it as needed.
2597 * tree-inline.h (struct copy_body_data): Move from tree-inline.c
2598 and rename from struct inline_data. Rename callee* to dst*;
2599 caller* to src*; add copy_decl hook, transform_call_graph_edges,
2600 transform_new_cfg, transform_return_to_modify, and
2601 transform_lang_insert_block flags; remove cloning_p, versioning_p,
2602 update_clones_p.
2603 (copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
2604 (copy_decl_for_dup): Remove.
2605 * tree-inline.c (struct inline_data): Move to header.
2606 (insert_decl_map): Export.
2607 (remap_decl): Update for member name changes. Use copy_decl hook.
2608 Allow for replacement to be a non-decl. Remove dead code.
2609 (remap_type_1): Check for existing mapping.
2610 (remap_type): Export.
2611 (remap_decls): Update for member name changes.
2612 (remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
2613 (copy_body, setup_one_parameter, declare_return_variable): Likewise.
2614 (expand_call_inline, optimize_inline_calls, clone_body): Likewise.
2615 (copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
2616 (tree_function_versioning, build_duplicate_type): Likewise.
2617 (copy_body_r): Likewise. Export.
2618 (copy_decl_for_dup): Split into ...
2619 (copy_decl_for_dup_finish, copy_decl_to_var,
2620 copy_decl_no_change, copy_decl_maybe_to_var): ... these.
2621 (replace_ref_tree, inlining_p): Remove.
2622
2623 2006-01-16 Kazu Hirata <kazu@codesourcery.com>
2624
2625 * ifcvt.c (if_convert): Make it static.
2626 * rtl.h: Remove the prototype for if_convert.
2627
2628 * local-alloc.c (local_alloc): Make it static.
2629 * rtl.h: Remove the prototype for local_alloc.
2630
2631 * loop.c (loop_optimize): Make it static.
2632 * cfgloop.h: Remove the prototype for loop_optimize.
2633 * rtl.h: Likewise.
2634
2635 2006-01-16 DJ Delorie <dj@redhat.com>
2636
2637 * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
2638 mems.
2639
2640 2006-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2641
2642 * pa.md: Disparage copies between general and floating-point registers
2643 in 32-bit move patterns.
2644
2645 2006-01-16 H.J. Lu <hongjiu.lu@intel.com>
2646
2647 PR testsuite/25741
2648 * Makefile.in (check-%): Depend on site.exp instead of
2649 $(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
2650 directories.
2651
2652 2006-01-16 Kazu Hirata <kazu@codesourcery.com>
2653
2654 * global.c (global_alloc): Make it static.
2655 * rtl.h: Remove the prototype for global_alloc.
2656
2657 2006-01-16 Richard Guenther <rguenther@suse.de>
2658
2659 * tree-ssa-alias.c (struct used_part): Add write_only field.
2660 (get_or_create_used_part_for): Initialize it to true.
2661 (create_overlap_variables_for): Don't create structure variables
2662 for structures that only are written to.
2663 (find_used_portions): Handle MODIFY_EXPR to track whether a
2664 structure is only written to.
2665
2666 2006-01-16 Kazu Hirata <kazu@codesourcery.com>
2667
2668 * bb-reorder.c (partition_hot_cold_basic_blocks): Make it
2669 static.
2670 * basic-block.h: Remove the prototype for
2671 partition_hot_cold_basic_blocks.
2672
2673 2006-01-16 Rafael Ãvila de Espíndola <rafael.espindola@gmail.com>
2674
2675 * cppspec.c (lang_specific_spec_functions): Remove.
2676 * gcc.c (lookup_spec_function): Use static_spec_functions directly.
2677 * gcc.h (lang_specific_spec_functions): Remove.
2678 * gccspec.c (lang_specific_spec_functions): Remove.
2679
2680 2006-01-16 Paolo Bonzini <bonzini@gnu.org>
2681
2682 * combine.c (record_value_for_reg): Invalidate registers
2683 if INSN is null.
2684 (record_dead_and_set_regs_1): Likewise, by passing them to
2685 record_value_for_reg.
2686 (record_dead_and_set_regs): Invalidate stores made by a
2687 call. We do not combine across a call, but we still
2688 relied on equivalences.
2689
2690 2006-01-16 Eric Botcazou <ebotcazou@adacore.com>
2691
2692 * tree-vrp.c (extract_range_from_binary_expr): Cope with
2693 vrp_int_const_binop returning non-constant nodes.
2694
2695 2006-01-16 Paul Brook <paul@codesourcery.com>
2696
2697 * config/m68k/m68k.c (output_move_const_into_data_reg):
2698 Output correct mnemonic for mvz and mvs.
2699
2700 2006-01-16 Gabor Loki <loki@gcc.gnu.org>
2701
2702 * rtl-factoring.c: Add sequence abstraction algorithm.
2703 * cfgcleanup.c (outgoing_edges_match): Extra checks.
2704 (try_crossjump_to_edge): Avoid deleting preserve label when redirecting
2705 ABNORMAL edges.
2706 (block_has_preserve_label): New function.
2707 * common.opt: Register new pass.
2708 * Makefile.in: Ditto.
2709 * passes.c: Ditto.
2710 * timevar.def: Ditto.
2711 * tree-pass.h: Ditto.
2712 * emit-rtl.c (make_jump_insn_raw): Remove forward decl.
2713 * rtl.h (make_jump_insn_raw): Add forward decl.
2714 * doc/invoke.texi: Add documentation for -frtl-abstract-sequences.
2715
2716 2006-01-16 Eric Botcazou <ebotcazou@adacore.com>
2717 Roger Sayle <roger@eyesopen.com>
2718
2719 * fold-const.c (fold_minmax): New static function.
2720 (fold_binary) <MIN_EXPR>: Call it.
2721 <MAX_EXPR>: Likewise.
2722 * stor-layout.c (place_field): Use DECL_SIZE consistently
2723 in the computation of the new record size.
2724
2725 2006-01-16 Kazu Hirata <kazu@codesourcery.com>
2726
2727 * cse.c (cse_condition_code_reg): Make it static.
2728 * rtl.h: Remove the prototype for cse_condition_code_reg.
2729
2730 * combine.c (combine_instructions): Make it static.
2731 * rtl.h: Remove the prototype for combine_instructions.
2732
2733 2006-01-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2734
2735 PR target/25168
2736 * tree.c (get_file_function_name_long): Concatenate the first global
2737 object name with a string derived from the input filename of the object
2738 for type "F".
2739
2740 2006-01-16 Ben Elliston <bje@au.ibm.com>
2741
2742 * config/i386/winnt-stubs.c: Update FSF address.
2743 * config/xtensa/ieee754-df.S: Ditto.
2744 * config/xtensa/ieee754-sf.S: Ditto.
2745
2746 2006-01-14 Ian Lance Taylor <ian@airs.com>
2747
2748 * ifcvt.c (noce_init_if_info): New static function, broken out of
2749 noce_process_if_block.
2750 (noce_process_if_block): Call noce_init_if_info.
2751 (check_cond_move_block): New static function.
2752 (cond_move_process_if_block): New static function.
2753 (process_if_block): Call cond_move_process_if_block.
2754
2755 2006-01-15 Kazu Hirata <kazu@codesourcery.com>
2756
2757 * cselib.c (hash_table): Rename to cselib_hash_table.
2758 (cselib_clear_table, discard_useless_values,
2759 remove_useless_values, cselib_lookup_mem, cselib_lookup,
2760 cselib_init, cselib_finish): Adjust uses of hash_table.
2761
2762 2006-01-14 Kazu Hirata <kazu@codesourcery.com>
2763
2764 PR tree-optimization/25485
2765 * tree-vrp.c (extract_range_from_binary_expr): Handle cases
2766 where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
2767 is known to be false and true, respectively.
2768
2769 2006-01-14 Richard Guenther <rguenther@suse.de>
2770
2771 PR tree-optimization/22548
2772 PR tree-optimization/22555
2773 PR tree-optimization/22501
2774 * Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
2775 * params.def (salias-max-array-elements): New parameter.
2776 * params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
2777 * doc/invoke.texi (salias-max-array-elements): Document.
2778 * tree-flow-inline.h (var_can_have_subvars): We also handle
2779 arrays now.
2780 * tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
2781 COMPONENT_REF.
2782 * tree-ssa-structalias.c (params.h): Include.
2783 (push_fields_onto_fieldstack): Handle ARRAY_TYPE.
2784 (find_func_aliases): Handle multiple constraints from ARRAY_REF.
2785 (get_constraint_for): For ADDR_EXPR operating on something
2786 containing an ARRAY_REF, add all subvars to the solution.
2787 (handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
2788 * tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
2789 for creating MUST_DEFs.
2790 (get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.
2791
2792 2006-01-14 Zdenek Dvorak <dvorakz@suse.cz>
2793
2794 * tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
2795 functions.
2796 (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2797 assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
2798 number_of_iterations_le): New functions.
2799 (number_of_iterations_special): Removed.
2800 (number_of_iterations_exit): Do not use number_of_iterations_special.
2801 * tree.c (unsigned_type_for): Always return integer type.
2802
2803 2006-01-14 Steven Bosscher <stevenb.gcc@gmail.com>
2804 Richard Guenther <rguenther@suse.de>
2805
2806 PR rtl-optimization/24257
2807 * gcse.c (find_moveable_store): Only consider a store movable
2808 when the SET_SRC of the insn can be assigned to a register.
2809
2810 2006-01-14 Ian Lance Taylor <ian@airs.com>
2811
2812 * tree.c (tree_not_class_check_failed): New function.
2813 * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
2814 (tree_not_class_check_failed): Declare.
2815
2816 2006-01-13 Ian Lance Taylor <ian@airs.com>
2817
2818 * reload1.c (do_output_reload): Add assertion rejecting a
2819 CALL_INSN.
2820
2821 2006-01-13 Adam Nemet <anemet@caviumnetworks.com>
2822
2823 * combine.c (struct reg_stat): Add new fields truncation_label and
2824 truncated_to_mode.
2825 (record_value_for_reg): Reset truncated_to_mode.
2826 (record_truncated_value): New function.
2827 (check_promoted_subreg): Call it. Rename to check_conversions.
2828 (combine_instructions): Rename check_promoted_subreg to
2829 check_conversions.
2830 (reg_truncated_to_mode): New function.
2831 (make_extraction): Use it. Check TRULY_NOOP_TRUNCATION.
2832 (gen_lowpart_or_truncate): New function.
2833 (force_to_mode): Use it instead of gen_lowpart.
2834
2835 2006-01-13 Diego Novillo <dnovillo@redhat.com>
2836
2837 * tree-ssa-alias.c (add_type_alias): Fix typo. Test whether
2838 VAR is a tag, not its type tag.
2839
2840 2006-01-13 Alexandre Oliva <aoliva@redhat.com>
2841
2842 * config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
2843 alternatives to match style of other entries.
2844 (*vec_extractv2di_1_sse): Likewise. Fix mode attr.
2845
2846 2006-01-13 Daniel Berlin <dberlin@dberlin.org>
2847
2848 PR tree-optimization/25771
2849 * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
2850 SSA_NAMES.
2851
2852 2006-01-13 Andrew Pinski <pinskia@physics.uc.edu>
2853
2854 PR tree-opt/24365
2855 * tree-inline.c (declare_return_variable): If the return variable
2856 was marked as a non gimple complex, set the return slot variable
2857 to be a non gimple comple variable.
2858
2859 2006-01-13 Richard Guenther <rguenther@suse.de>
2860
2861 * builtins.c (expand_builtin_sincos): New function.
2862 (expand_builtin_mathfn_3): Remove dead code, sin and cos
2863 do not set errno.
2864 (expand_builtin): Expand sincos using expand_builtin_sincos.
2865
2866 2006-01-12 DJ Delorie <dj@redhat.com>
2867
2868 * config/m32c/shift.md: Rewrite: Allow arbitrary operands for
2869 shift counts, separate SI shifts for m32c vs m16c, pass shift type
2870 so that constant shifts can be split.
2871 * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
2872 (m32c_valid_pointer_mode): Make static.
2873 (shift_gen_func_for): New.
2874 (m32c_prepare_shift): Use it. Split large const shifts into
2875 multiple shifts.
2876 * config/m32c/predicates.md (shiftcount_operand): Allow more
2877 general operands.
2878 (longshiftcount_operand): New.
2879 * doc/md.texi (Machine Constraints): Document In6.
2880
2881 2006-01-13 Ben Elliston <bje@au.ibm.com>
2882
2883 * doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
2884 REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
2885 documentation.
2886
2887 2006-01-12 Daniel Berlin <dberlin@dberlin.org>
2888
2889 * tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
2890 to try to avoid clobbering pieces of structures when we know
2891 something about the whole structure.
2892 * tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR
2893
2894 2006-01-13 Ben Elliston <bje@au.ibm.com>
2895
2896 * doc/rtl.texi (Insns): Remove statement that libcalls cannot
2897 return in memory, as this is no limitation is no longer present.
2898
2899 2006-01-12 DJ Delorie <dj@redhat.com>
2900
2901 * config/m32c/addsub.md (addhi3): Add two more alternatives, for
2902 mova with fb, and for fb+0 -> An.
2903
2904 * config/m32c/mov.md (peephole2): Fix enabling logic.
2905
2906 * config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
2907 DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
2908 DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
2909 FINI_ARRAY_SECTION_ASM_OP): Define.
2910
2911 * config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
2912 variable.
2913 (m32c_legitimize_reload_address): New logic to reload FB to An.
2914 (m32c_output_reg_push): Add newline.
2915 (m32c_output_reg_pop): Likewise.
2916
2917 2006-01-12 Ulrich Weigand <uweigand@de.ibm.com>
2918
2919 * struct-equiv.c (find_dying_inputs): Fix off-by-one bug.
2920
2921 2006-01-11 Andrew Pinski <pinskia@physics.uc.edu>
2922
2923 * config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.
2924
2925 2006-01-11 Kazu Hirata <kazu@codesourcery.com>
2926
2927 * config/sh/predicates.md (sh_rep_vec): Add parallel to
2928 match_code.
2929
2930 2006-01-11 Ben Elliston <bje@au.ibm.com>
2931
2932 * rtlanal.c (find_reg_note): Assert insn is not null.
2933
2934 2006-01-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2935
2936 * df-scan.c (df_hard_reg_init): Move declaration of i outside
2937 ifdef.
2938
2939 2006-01-11 Jeff Law <law@redhat.com>
2940
2941 * tree-ssa-threadupdate.c (threaded_edges): New VEC to
2942 hold edge pairs.
2943 (mark_threaded_blocks, register_jump_thread): New functions.
2944 (thread_through_all_blocks): Remove unwanted argument. No
2945 longer rely on e->aux to communicate thread target info.
2946 Call mark_threaded_blocks. Release the threaded_blocks
2947 bitmap and threaded_edges vector when complete.
2948 * tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
2949 (threaded_blocks): Remove.
2950 (tree_ssa_dominator_optimize): Remove initialization and
2951 finalization of threaded_blocks. Simplify call to
2952 thread_through_all_blocks.
2953 (thread_across_edge): Call register_jump_thread rather than
2954 storing thread information into e->aux.
2955 (free_all_edge_infos): Simplify now that e->aux is no longer
2956 used to communicate with thread_through_all_blocks.
2957 * tree-flow.h (thread_through_all_blocks): Update prototype.
2958 (register_jump_thread): Prototype.
2959
2960 2006-01-11 Kazu Hirata <kazu@codesourcery.com>
2961
2962 * df-core.c (df_compact_blocks, df_bb_replace): Use
2963 SET_BASIC_BLOCK instead of BASIC_BLOCK.
2964
2965 2006-01-11 Richard Guenther <rguenther@suse.de>
2966
2967 PR tree-optimization/25734
2968 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
2969 stop propagation after successful propagation to the LHS.
2970
2971 2006-01-11 Kazu Hirata <kazu@codesourcery.com>
2972
2973 * basic-block.h (control_flow_graph): Change the type of
2974 x_basic_block_info to VEC(basic_block,gc) *.
2975 (BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
2976 basic_block_info.
2977 (SET_BASIC_BLOCK): New.
2978 * cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
2979 instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
2980 * cfgbuild.c (find_basic_blocks): Likewise.
2981 * cfglayout.c (fixup_reorder_chain): Likewise.
2982 * cfgrtl.c (create_basic_block_structure,
2983 rtl_create_basic_block): Likewise.
2984 * ifcvt.c (find_if_case_1): Likewise.
2985 * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
2986 Likewise.
2987
2988 2006-01-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2989
2990 * Makefile.in: Removed rotted odf.c entry.
2991
2992 2006-01-11 Hans-Peter Nilsson <hp@axis.com>
2993
2994 PR target/25706
2995 * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
2996 ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
2997 ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
2998 output pattern modifier, not %e.
2999 * config/cris/cris.c (cris_op_str): Update comment about pattern
3000 modifier.
3001 (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
3002 before falling through into...
3003 <case 'E'>: Redefined from old 'e' case.
3004
3005 2006-01-11 Jan Hubicka <jh@suse.cz>
3006
3007 PR target/25042
3008 * i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128
3009
3010 2006-01-11 Jan Hubicka <jh@suse.cz>
3011
3012 * i386.h (TARGET_DECOMPOSE_LEA): Kill.
3013 * i386.c (x86_decompose_lea): Kill.
3014 (ix86_rtx_costs): Kill.
3015
3016 2006-01-11 Jan Hubicka <jh@suse.cz>
3017
3018 * cgraph.c (cgraph_insert_node_to_hashtable): New function.
3019 * cgraph.h (cgraph_node): Add inline_decl.
3020 (cgraph_insert_node_to_hashtable): Declare.
3021 (save_inline_function_body): Declare.
3022 * cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
3023 clones.
3024 (cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
3025 (cgraph_function_versioning): Update call of tree_function_versioning.
3026 (save_inline_function_body): New function.
3027 * function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
3028 saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
3029 * ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
3030 (cgraph_default_inline_p): Likewise.
3031 (cgraph_decide_inlining_incrementally): Likewise.
3032 * tree-inline.c (inline_data): Kill saving_p add update_clones_p.
3033 (copy_bb): Kill saving; do updating of clones.
3034 (copy_cfg_body): Kill saving.
3035 (initialize_inlined-parameters): Likewise.
3036 (expand_call_inline): Likewise.
3037 (save_body): Kill.
3038 (tree_function_versioning): New parameter "update_clones".
3039 (inlining_p): Kill saving.
3040 * tree-inline.h (tree_function_versioning): Update prototype.
3041 * tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
3042 saving.
3043
3044 2006-01-11 Ian Lance Taylor <ian@airs.com>
3045
3046 * combine.c (struct undo): Remove is_int. Enumify types of undos.
3047 Allow undoing set of machine mode.
3048 (do_SUBST): Use enums instead of is_int.
3049 (do_SUBST_MODE): New function.
3050 (SUBST_MODE): New macro.
3051 (try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
3052 reg and trying to replace reg_regno_rtx with a new register.
3053 (undo_all): Use new enums, handle undoing a PUT_MODE change.
3054 (simplify_set): Use SUBST_MODE.
3055 (distribute_notes): Remove code that tried to update reg notes
3056 for regno_reg_rtx changes.
3057
3058 2006-01-11 Paolo Bonzini <bonzini@gnu.org>
3059
3060 PR tree-optimization/23109
3061 PR tree-optimization/23948
3062 PR tree-optimization/24123
3063
3064 * Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
3065 * tree-cfg.c (single_noncomplex_succ): New.
3066 * tree-flow.h (single_noncomplex_succ): Declare it.
3067 * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
3068 * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
3069 (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
3070 insert_bb, register_division_in, insert_reciprocals,
3071 replace_reciprocal, free_bb): New.
3072 (execute_cse_reciprocals_1): Rewritten.
3073 (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
3074 Do not commit any edge insertion. Always compute dominators and
3075 create the allocation pool.
3076 * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
3077 * target.h (struct gcc_target): Add min_divistions_for_recip_mul.
3078 * targhooks.c (default_min_divistions_for_recip_mul): New.
3079 * targhooks.h (default_min_divistions_for_recip_mul): New prototype.
3080 * passes.c (init_optimization_passes): Run recip after tree loop
3081 optimizations.
3082 * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.
3083
3084 2006-01-11 Danny Berlin <dberlin@dberlin.org>
3085 Kenneth Zadeck <zadeck@naturalbridge.com>
3086
3087 * df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
3088 DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
3089 DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
3090 DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
3091 DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
3092 DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
3093 DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
3094 DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
3095 DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
3096 DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
3097 DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
3098 DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
3099 DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
3100 DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
3101 DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
3102 DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
3103 DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
3104 DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
3105 DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
3106 DF_SCAN_POST_ALLOC): New macros.
3107 (df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
3108 df_free_bb_function, df_local_compute_function, df_init_function,
3109 df_dataflow_function, df_confluence_function_0,
3110 df_confluence_function_n, df_transfer_function,
3111 df_finalizer_function, df_free_function, df_dump_problem_function,
3112 df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
3113 df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
3114 df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
3115 df_urec_bb_info, ) New types.
3116 (df_invalidated_by_call, df_all_hard_regs, df_state) New public
3117 variables.
3118 (df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
3119 df_analyze_simple_change_some_blocks,
3120 df_analyze_simple_change_one_block, df_compact_blocks,
3121 df_bb_replace, df_bb_regno_last_use_find,
3122 df_bb_regno_first_def_find, df_bb_regno_last_def_find,
3123 df_insn_regno_def_p, df_find_def, df_find_use,
3124 df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
3125 df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
3126 df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
3127 debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
3128 debug_df_chain, df_get_dependent_problem, df_chain_create,
3129 df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
3130 df_grow_bb_info, df_chain_dump, df_print_bb_index,
3131 df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
3132 df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
3133 df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
3134 df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
3135 df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
3136 df_rescan_blocks, df_ref_create, df_get_artificial_defs,
3137 df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
3138 df_ref_remove, df_insn_refs_delete, df_refs_delete,
3139 df_reorganize_refs, df_set_state, df_hard_reg_init,
3140 df_read_modify_subreg_p) New public functions.
3141 * df-core.c: The core dataflow solver and glue routines for rtl
3142 dataflow.
3143 (df_init, df_add_problem, df_set_blocks, df_finish,
3144 df_hybrid_search_forward, df_hybrid_search_backward,
3145 df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
3146 df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
3147 df_bb_regno_last_use_find, df_bb_regno_first_def_find,
3148 df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
3149 df_reg_defined, df_find_use, df_reg_used, df_dump,
3150 df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
3151 df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
3152 debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
3153 debug_df_useno, reset_df_after_reload): New functions.
3154 * df-scan.c: The scanning fuctions, once in df.c, completely
3155 rewritten so that they now fully model the functionality of
3156 register usage at the backend.
3157 (df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
3158 df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
3159 df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
3160 df_grow_insn_info, df_rescan_blocks, df_ref_create,
3161 df_get_artificial_defs, df_get_artificial_uses,
3162 df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
3163 df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
3164 df_refs_delete, df_reorganize_refs, df_set_state,
3165 df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
3166 df_def_record_1, df_defs_record, df_uses_record,
3167 df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
3168 df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
3169 df_record_exit_block_uses, df_hard_reg_init): New functions.
3170
3171 * df-problems.c: Seven concrete dataflow problems that use the
3172 scanning in df-scan.c and are solved by the engine in df-core.c.
3173 (df_get_dependent_problem, df_chain_create, df_chain_unlink,
3174 df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
3175 df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
3176 df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
3177 df_ru_free_bb_info, df_ru_alloc,
3178 df_ru_bb_local_compute_process_def,
3179 df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
3180 df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
3181 df_ru_transfer_function, df_ru_free, df_ru_dump,
3182 df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
3183 df_rd_free_bb_info, df_rd_alloc,
3184 df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
3185 df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
3186 df_rd_transfer_function, df_rd_free, df_rd_dump,
3187 df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
3188 df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
3189 df_lr_local_compute, df_lr_init, df_lr_confluence_0,
3190 df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
3191 df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
3192 df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
3193 df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
3194 df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
3195 df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
3196 df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
3197 df_urec_mark_reg_change, df_urec_check_earlyclobber,
3198 df_urec_mark_reg_use_for_earlyclobber,
3199 df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3200 df_urec_local_compute, df_urec_init, df_urec_local_finalize,
3201 df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
3202 df_urec_dump, df_urec_add_problem, df_chain_alloc,
3203 df_chain_create_bb_process_use, df_chain_create_bb,
3204 df_chain_finalize, df_chain_free, df_chains_dump,
3205 df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
3206 df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
3207 df_reg_lifetime): New functions.
3208 * df.c: Deleted file.
3209 * ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
3210 consistent with new df api.
3211 * modulo-sched.c (sms_schedule, rest_of_handle_sms,
3212 rest_of_handle_sms): Ditto.
3213 * web.c (unionfind_union, union_defs, entry_register, web_main):
3214 Ditto.
3215 * loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
3216 invariant_expr_equal_p, find_defs, check_dependencies,
3217 find_invariant_insn, find_invariants_to_move, move_invariant_reg,
3218 free_inv_motion_data, move_loop_invariants): Ditto.
3219 * Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
3220 Update dependencies.
3221 (odf.c): Added defective entry that was deleted later in day.
3222 * sched-deps.c (sched_analyze_1): Ditto.
3223
3224 2006-01-11 Zdenek Dvorak <dvorakz@suse.cz>
3225
3226 * tree-ssa-operands.c (get_expr_operands): Record addressable
3227 variables directly. Do not call add_stmt_operands for CONST_DECLs
3228 and ARRAY_DECLs.
3229 (get_indirect_ref_operands): Remove handling of *(&a + offset) case.
3230 (add_stmt_operands): Handle only objects satisfying SSA_VAR_P.
3231
3232 2006-01-11 Ben Elliston <bje@au.ibm.com>
3233
3234 * config/i386/i386.c (ix86_return_in_memory): Fix comment: this
3235 function returns true in the positive case.
3236
3237 2006-01-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3238
3239 PR target/20754
3240 * config/pa/pa.md: Create separate 32 and 64-bit move patterns
3241 for SI, DI, SF and DF modes. Add alternatives to copy between
3242 general and floating point registers to the 32-bit patterns.
3243 * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
3244 * config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
3245 (SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
3246 generating 64-bit code.
3247 * config/pa/pa.c (output_move_double): Handle copies between general
3248 and floating registers.
3249
3250 2006-01-10 Stuart Hastings <stuart@apple.com>
3251
3252 * config/i386/i386.md (set_got): Update.
3253 (set_got_labelled): New. (UNSPEC_LD_MPIC): New.
3254 (builtin_setjmp_receiver): Mach-O support.
3255 * config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
3256 (GOT_SYMBOL_NAME): Define.
3257 (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
3258 (TARGET_DEEP_BRANCH_PREDICTION): Remove.
3259 * config/i386/i386.c (override_options): Revise for Darwin.
3260 (USE_HIDDEN_LINKONCE): Enable for Mach-O. (ix86_file_end): Mach-O
3261 support. (darwin_x86_file_end): New. (output_set_got): Add label
3262 parameter, revise for Mach-O. (x86_output_mi_thunk): Likewise.
3263 * config/i386/i386-protos.h (output_set_got): Likewise.
3264 * config/darwin.c (machopic_legitimize_pic_address): Update
3265 regs_ever_live[].
3266
3267 2006-01-10 Kaz Kojima <kkojima@gcc.gnu.org>
3268
3269 * config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
3270 when MODE isn't BLKmode.
3271
3272 2006-01-10 Eric Botcazou <ebotcazou@libertysurf.fr>
3273
3274 PR rtl-optimization/25367
3275 * config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.
3276
3277 2006-01-10 Hans-Peter Nilsson <hp@axis.com>
3278
3279 PR target/25718
3280 * config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
3281 for a negative bound.
3282
3283 2006-01-10 Richard Guenther <rguenther@suse.de>
3284
3285 * tree-ssa-structalias.c (get_constraint_for_component_ref):
3286 Never override with anything constraint.
3287
3288 2006-01-10 Jan Beulich <jbeulich@novell.com>
3289
3290 * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
3291 256 bits when optimize_size.
3292
3293 2006-01-10 Jan Beulich <jbeulich@novell.com>
3294
3295 * config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
3296 MASK_ALIGN_DOUBLE.
3297 * config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
3298 * config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
3299 arguments.
3300
3301 2006-01-10 Ben Elliston <bje@au.ibm.com>
3302
3303 * config/rs6000/predicates.md (easy_fp_constant): Discount decimal
3304 float modes.
3305 * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
3306 (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
3307 (USE_FP_FOR_ARG): Reject decimal float modes.
3308 (function_arg_advance): Likewise.
3309 (output_toc): Handle emitting TDmode, DDmode and SDmode constants.
3310 (rs6000_handle_altivec_attribute): Do not permit decimal floating
3311 point types in AltiVec vectors.
3312 (rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
3313 (rs6000_libcall_value): Likewise.
3314
3315 2006-01-09 Bob Wilson <bob.wilson@acm.org>
3316
3317 * config/xtensa/ieee754-df.S: New file.
3318 * config/xtensa/ieee754-sf.S: New file.
3319 * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
3320 (LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
3321 * config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.
3322
3323 2006-01-09 Kazu Hirata <kazu@codesourcery.com>
3324
3325 * config/sh/predicates.md (binary_float_operator,
3326 binary_logical_operator, commutative_float_operator,
3327 equality_comparison_operator, greater_comparison_operator,
3328 less_comparison_operator, logical_operator,
3329 noncommutative_float_operator, shift_operator,
3330 symbol_ref_operand, unary_float_operator): Remove redundant
3331 conditionals.
3332
3333 2006-01-09 Jeff Law <law@redhat.com>
3334
3335 * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
3336 code to propagate the RHS of a cast into COND_EXPR_COND. Remove
3337 now unused arguments. Callers updated.
3338 (eliminate_redundant_computations): Remove now unused arguments,
3339 callers updated.
3340 (local_fold): Remove, no longer used.
3341 (find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
3342 and moved to...
3343 * tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
3344 (simplify_cond): New function.
3345 (forward_propagate_into_cond): Call simplify_cond.
3346
3347 2006-01-09 Alexandre Oliva <aoliva@redhat.com>
3348
3349 * config/i386/sse.md (*vec_extractv2di_1_sse2): New.
3350 (*vec_extractv2di_1_sse): New.
3351
3352 2006-01-09 Ben Elliston <bje@au.ibm.com>
3353
3354 * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.
3355
3356 2006-01-08 Richard Guenther <rguenther@suse.de>
3357
3358 * tree-ssa-structalias.c (get_constraint_for): Remove
3359 anyoffset argument.
3360 (get_constraint_for_component_ref): Likewise.
3361 (do_deref): Likewise.
3362 (get_constraint_for): Likewise.
3363 (do_structure_copy): Likewise.
3364 (handle_ptr_arith): Likewise.
3365 (find_func_aliases): Likewise. Remove unused need_anyoffset
3366 variable.
3367
3368 2006-01-08 J"orn Rennecke <joern.rennecke@st.com>
3369 Kaz Kojima <kkojima@gcc.gnu.org>
3370
3371 * config/sh/sh.h (CONST_OK_FOR_K16): Define.
3372 (CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
3373 (EXTRA_CONSTRAINT_C16): Remove.
3374 (EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
3375 (EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
3376 EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
3377 * config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
3378 constants of SHmedia. Handle nested constant expressions of
3379 SHmedia correctly.
3380 (andcosts): Fix the costs for SHmedia constants.
3381 (sh_rtx_costs): Take account of outer_code for SHmedia constants.
3382 * config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
3383 (*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
3384 (*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
3385 (movv4hi_i, movv2si_i): Likewise.
3386 (movsi_const): Adjust the second operand of ior so to match with
3387 the Csu constraint.
3388 (movdi_const, movdi_const_32bit): Likewise.
3389 (movdi_const_16bit+1): Don't sign-extend LOW.
3390 (movdi_const_16bit+2): Likewise. Remove the zero_extend and truncate
3391 step.
3392 (*double_shori): Fix the split condition. Use GEN_INT instead
3393 of get_int_mode calls. Mask lower 16-bit of the argument of
3394 the last GEN_INT.
3395 (sym2GOTPLT): Remove.
3396 (symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
3397 gen_rtx_UNSPEC.
3398 * config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
3399 instead of EXTRA_CONSTRAINT_C16.
3400
3401 2006-01-07 Ian Lance Taylor <ian@airs.com>
3402 David Edelsohn <edelsohn@gnu.org>
3403
3404 PR rtl-optimization/25662
3405 * optabs.c (simplify_expand_binop): Use simplify_binary_operation
3406 for constant operands instead of simplify_gen_binary.
3407 * simplify-rtx.c (simplify_gen_binary): Swap commutative operands
3408 after trying simplify_binary_operation
3409
3410 2006-01-06 Daniel Berlin <dberlin@dberlin.org>
3411
3412 * tree.c (iterative_hash_expr): Hash decls based on UID.
3413
3414 2006-01-06 Eric Christopher <echristo@apple.com>
3415
3416 * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
3417 (TARGET_UNWIND_EMIT): Fix spelling.
3418 * target.h (gcc_target): Add except_table_label.
3419 * except.c (output_function_exception_table): Use.
3420 * varasm.c (default_emit_except_table_label): New.
3421 * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
3422 define.
3423 (asm_out): Add here.
3424 * output.h (default_emit_except_table_label): Prototype.
3425 * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
3426 * config/darwin.c (darwin_emit_except_table_label): Define.
3427 * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.
3428
3429 2006-01-06 Zdenek Dvorak <dvorakz@suse.cz>
3430
3431 PR tree-optimization/18527
3432 * tree-ssa-loop-niter.c (number_of_iterations_cond,
3433 number_of_iterations_special, number_of_iterations_exit):
3434 Move base and step of an iv to a single structure. Add
3435 no_overflow flag, and use it in # of iterations analysis.
3436 * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
3437 folded_casts argument.
3438 (simple_iv): Pass base and step in a structure. Set no_overflow
3439 flag.
3440 (scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
3441 Evaluate expensiveness of computing # of iterations instead of
3442 the final expression.
3443 * tree-scalar-evolution.h (affine_iv): New structure.
3444 (simple_iv): Declaration changed.
3445 * tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
3446 * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
3447 find_givs_in_stmt): Changed due to simple_iv change.
3448
3449 2006-01-06 Jeff Law <law@redhat.com>
3450
3451 PR ada/24994
3452 * tree-cfg.c (bsi_replace): Rename final argument from
3453 PRESERVE_EH_INFO to UPDATE_EH_INFO. Fix typo in last
3454 change (stmt -> orig_stmt).
3455 * tree-eh.c (verify_eh_throw_stmt_node): New function.
3456 (bsi_remove): Add new argument. Remove EH information
3457 if requested.
3458 (verify_eh_throw_table_statements): New function.
3459 (bsi_remove): Add new argument REMOVE_EH_INFO. All callers
3460 updated.
3461 * tree-optimize.c (execute_free_cfg_annotations): Verify
3462 the EH throw statement table after removing annotations.
3463 * except.h (verify_eh_throw_table_statements): Prototype.
3464 * tree-flow.h (bsi_remove): Update prototype.
3465 * tree-vrp.c (remove_range_assertions): Add new argument to
3466 bsi_remove call.
3467 * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
3468 * tree-complex.c (expand_complex_div_wide): Likewise.
3469 * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
3470 * tree-tailcall.c (eliminate_tailcall): Likewise.
3471 * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
3472 * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
3473 * tree-nrv.c (tree_nrv): Likewise.
3474 * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
3475 * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
3476 (combine_blocks): Likewise.
3477 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
3478 * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
3479 (cleanup_control_flow): Likewise.
3480 (remove_forwarder_block): Likewise.
3481 * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
3482 * tree-sra.c (sra_replace): Likewise.
3483 * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
3484 (forward_propagate_single_use_vars): Likewise.
3485 * tree-ssa-dce.c (remove_dead_stmt): Likewise.
3486 * tree-inline.c (expand_call_inline): Likewise.
3487 * tree-vect-transform.c (vect_transform_loop): Likewise.
3488 * tree-outof-ssa.c (rewrite_trees): Likewise.
3489 * tree-cfg.c (make_goto_expr_edges): Likewise.
3490 (cleanup_dead_labels): Likewise.
3491 (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
3492 (bsi_move_before, bsi_move_after): Likewise.
3493 (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
3494 (tree_redirect_edge_and_branch, tree_split_block): Likewise.
3495
3496 2006-01-06 Andrew Pinski <pinskia@physics.uc.edu>
3497
3498 PR tree-opt/25528
3499 * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
3500 and IMAGPART_EXPR.
3501 * tree-flow-inline.h (var_can_have_subvars): Handle complex types
3502 on non gimple variables. Also add checks at the top for decls and
3503 mtags.
3504 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
3505 complex types.
3506 * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
3507 and IMAGPART_EXPR for creating MUST_DEFs.
3508 (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
3509 and NAME_MEMORY_TAG separately from the DECLs.
3510
3511 2006-01-06 Richard Guenther <rguenther@suse.de>
3512
3513 * tree-dfa.c (mark_new_vars_to_rename): Create stmt
3514 annotation, if necessary.
3515 * tree-ssa-pre.c (create_expression_by_pieces): Remove
3516 redundant calls to update_stmt.
3517 * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
3518 Likewise.
3519
3520 2006-01-05 Richard Henderson <rth@redhat.com>
3521
3522 * c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.
3523
3524 2006-01-05 Carlos O'Donell <carlos@codesourcery.com>
3525
3526 * c-typeck.c: Update copyright date.
3527
3528 2006-01-05 Carlos O'Donell <carlos@codesourcery.com>
3529
3530 * c-typeck.c (build_c_cast): Always warn when casting
3531 from a pointer to an integer of different size, even if
3532 the node was constant.
3533
3534 2006-01-05 Richard Guenther <rguenther@suse.de>
3535
3536 PR tree-optimization/22555
3537 * tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
3538 if one structure field is an array.
3539 * tree-ssa-operands.c (get_expr_operands): Continue scanning
3540 operands even if we found a subvar, but ignore VOPs in this
3541 case.
3542 * tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
3543 for renaming.
3544 * tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
3545
3546 2006-01-05 Richard Earnshaw <rearnsha@arm.com>
3547
3548 PR middle-end/24998
3549 * arm/t-netbsd (LIB2FUNCS_EXTRA): Define.
3550
3551 2006-01-05 Richard Guenther <rguenther@suse.de>
3552 Diego Novillo <dnovillo@redhat.com>
3553
3554 * tree-pass.h (TODO_remove_unused_locals): Define.
3555 * gimple-low.c (expand_var_p, remove_useless_vars,
3556 pass_remove_useless_vars): Remove. Update all users.
3557 * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
3558 (remove_unused_locals): New function.
3559 * tree-flow.h (remove_unused_locals): Declare.
3560 * passes.c (execute_todo): Call remove_unused_locals if
3561 TODO_remove_unused_locals is set.
3562 * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
3563 * tree-ssa-dce.c (pass_dce): Likewise.
3564 * tree-outof-ssa.c (pass_del_ssa): Likewise.
3565
3566 2006-01-05 Richard Guenther <rguenther@suse.de>
3567
3568 * tree-flow.h (struct fieldoff): Decompose field to
3569 type, size and decl.
3570 * tree-ssa-alias.c (create_sft): Take type as parameter.
3571 (create_overlap_variables_for): Store type, size and decl
3572 in the fieldoff structure.
3573 * tree-ssa-structalias.c (fieldoff_compare): Adjust users
3574 of struct fieldoff.
3575 (push_fields_onto_fieldstack): Likewise.
3576 (create_variable_info_for): Likewise. Use offset for the
3577 SFT name if the decl is not available.
3578
3579 2006-01-04 Paul Brook <paul@codesourcery.com>
3580
3581 * config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
3582
3583 2006-01-04 Daniel Berlin <dberlin@dberlin.org>
3584
3585 * lambda-code.c (can_put_in_inner_loop): Relax
3586 restrictions.
3587 (can_put_after_inner_loop): New function.
3588 (can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
3589 (perfect_nestify): Change to make copies and modify uses.
3590
3591 2006-01-04 Richard Henderson <rth@redhat.com>
3592
3593 Merge from gomp branch:
3594 * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
3595 via integer constant.
3596 (pragma_lex): Remove.
3597 * c-pch.c (c_common_pch_pragma): Accept the name as an argument,
3598 rather than parsing it.
3599 * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
3600 handle_pragma_extern_prefix): Add %< %> quotes.
3601 (registered_pragmas): New.
3602 (c_register_pragma_1): New.
3603 (c_register_pragma): Use it.
3604 (c_register_pragma_with_expansion): Likewise.
3605 (c_invoke_pragma_handler): New.
3606 (init_pragma): Use cpp_register_deferred_pragma directly for
3607 pch_preprocess.
3608 * c-pragma.h (enum pragma_kind): New.
3609 (pragma_handler): New.
3610 (c_invoke_pragma_handler): Declare.
3611 * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
3612 CPP_PRAGMA_EOL.
3613 * c-common.h (c_common_pch_pragma): Update decl.
3614 * Makefile.in (c-parser.o): Update dependencies.
3615 (GTFILES): Add c-pragma.h.
3616 * c-parser.c (struct c_token): Add pragma_kind.
3617 (struct c_parser): Add in_pragma.
3618 (c_lex_one_token): Always initialize keyword and pragma_kind.
3619 Extract data for CPP_PRAGMA.
3620 (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
3621 (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
3622 Don't allow CPP_PRAGMA_EOL if in_pragma.
3623 (c_parser_consume_pragma): New.
3624 (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
3625 (c_parser_skip_to_end_of_parameter): Likewise.
3626 (c_parser_skip_to_end_of_block_or_statement): Likewise.
3627 (c_parser_skip_to_pragma_eol): New.
3628 (c_parser_external_declaration): Handle CPP_PRAGMA.
3629 (c_parser_compound_statement_nostart): Likewise.
3630 (c_parser_statement_after_labels): Likewise.
3631 (c_parser_pragma): New.
3632 (pragma_lex): Likewise.
3633 (c_parser_pragma_pch_preprocess): New.
3634 (c_parser_new): Merge into ...
3635 (c_parse_file): ... here. Call c_parser_pragma_pch_preprocess.
3636
3637 2006-01-04 Jeff Law <law@redhat.com>
3638
3639 PR ada/24994
3640 * tree-cfg.c (bsi_replace): Remove the original statement
3641 from the EH throw statement table.
3642
3643 2006-01-04 Jakub Jelinek <jakub@redhat.com>
3644
3645 * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
3646 make the prototype extern "C" and add throw ().
3647
3648 PR target/25554
3649 * config/i386/i386.md (testqi_ext_3): Ensure len is positive
3650 and pos non-negative and pos + len <= 32.
3651 (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
3652 drop pos + len < HOST_BITS_PER_WIDE_INT test.
3653 (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
3654
3655 PR c/25559
3656 * c-common.c (handle_vector_size_attribute): Reject zero vector size
3657 as well as sizes not multiple of component size.
3658
3659 PR debug/25562
3660 * function.c (instantiate_expr): New function.
3661 (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
3662 walk its DECL_VALUE_EXPR with instantiate_expr.
3663
3664 * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
3665 DW_OP_deref{,_size} if address isn't going to be added.
3666
3667 2006-01-04 Ben Elliston <bje@au.ibm.com>
3668
3669 * config/fp-bit.h: Use top-of-file comment from libgcc2.c.
3670 * config/fp-bit.c: Likewise.
3671
3672 2006-01-03 Daniel Berlin <dberlin@dberlin.org>
3673
3674 * dominance.c: Add comment about why we use DFS numbering
3675 of dominance tree.
3676
3677 2006-01-03 Jakub Jelinek <jakub@redhat.com>
3678 Richard Henderson <rth@redhat.com>
3679
3680 Merge from gomp-branch:
3681 * varasm.c (assemble_variable): Handle thread-local COMMON data.
3682 * defaults.h (ASM_OUTPUT_TLS_COMMON): Define.
3683
3684 2006-01-03 Paolo Bonzini <bonzini@gnu.org>
3685
3686 PR rtl-optimization/25578
3687 * combine.c (combine_simplify_rtx, force_to_mode): Don't
3688 pass a parameter to simplify_shift_const if changing ASHIFTRT
3689 to LSHIFTRT.
3690
3691 2006-01-03 Adrian Straetling <straetling@de.ibm.com>
3692
3693 * builtins.c (get_builtin_sync_mem): New function.
3694 (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
3695 expand_builtin_lock_test_and_set, expand_builtin_lock_release):
3696 Call get_builtin_sync_mem to generate mem rtx.
3697
3698 2006-01-03 Richard Guenther <rguenther@suse.de>
3699
3700 PR c/25183
3701 * stmt.c (add_case_node): Make sure to clear overflow flags
3702 from ranges.
3703
3704 2006-01-03 Jakub Jelinek <jakub@redhat.com>
3705
3706 Merge from gomp-branch.
3707 * config/sparc/sync.md: New file.
3708 * config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
3709 UNSPECV_LDSTUB): New constants.
3710 * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
3711 * config/sparc/predicates.md (memory_reg_operand): New predicate.
3712 * config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
3713 prototype.
3714
3715 2006-01-03 Roger Sayle <roger@eyesopen.com>
3716
3717 * combine.c (reg_subword_p): New predicate to test whether the
3718 destination of a set refers to a subword/piece of a register.
3719 (try_combine): Generalize the code to merge the setting of a
3720 pseudo to a constant followed by a set of a subword of that
3721 register to a constant.
3722
3723 2006-01-03 Kazu Hirata <kazu@codesourcery.com>
3724
3725 * basic-block.h (control_flow_graph): Change the type of
3726 x_label_to_block_map to VEC(basic_block,gc) *.
3727 * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
3728 set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
3729
3730 * tree-ssa-propagate.c (cfg_blocks): Change the type to
3731 VEC(basic_block,heap) *.
3732 (cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
3733 ssa_prop_fini): Adjust the uses of cfg_blocks.
3734
3735 2006-01-03 Steven Bosscher <stevenb.gcc@gmail.com>
3736
3737 * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
3738 COMPONENT_REFs.
3739 * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
3740 hashing trees instead of a pointer hash.
3741 (mem_attrs_htab_eq): Do a deep compare instead of a pointer
3742 compare for MEM_EXPR.
3743
3744 PR rtl-optimization/25130
3745 * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
3746 when comparing MEMs for GCSE
3747
3748 2006-01-03 Ben Elliston <bje@au.ibm.com>
3749
3750 * targhooks.h (default_decimal_float_supported_p): Declare.
3751 * targhooks.c (default_decimal_float_supported_p): Define.
3752 * target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
3753 `default_decimal_float_supported_p'.
3754 * doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.
3755
3756 2006-01-02 Adam Nemet <anemet@caviumnetworks.com>
3757
3758 * combine.c (apply_distributive_law <SUBREG>): Check
3759 TRULY_NOOP_TRUNCATION.
3760
3761 2006-01-02 Geoffrey Keating <geoffk@apple.com>
3762
3763 * dwarf2out.c (have_switched_text_section): Delete.
3764 (have_multiple_function_sections): New.
3765 (have_location_lists): Make 'bool'.
3766 (add_AT_loc_list): Use 'true' not '1'.
3767 (dwarf2out_switch_text_section): Set have_multiple_function_sections.
3768 (output_loc_list): Use have_multiple_function_sections.
3769 (output_ranges): Likewise.
3770 (dwarf2out_begin_function): Set have_multiple_function_sections if
3771 necessary.
3772 (dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
3773 Check function_section rather than DECL_SECTION_NAME.
3774 (dwarf2out_finish): Use have_multiple_function_sections.
3775 Don't clear have_location_lists.
3776
3777 2006-01-02 Eric Botcazou <ebotcazou@adacore.com>
3778 Jan Hubicka <jh@suse.cz>
3779
3780 * cfglayout.c (fixup_reorder_chain): Remove kludge for the
3781 case of conditional jump jumping to the next instruction.
3782 * cfgrtl.c (force_nonfallthru_and_redirect): Accept all
3783 cases of conditional jump jumping to the next instruction.
3784
3785 2006-01-02 Jan Hubicka <jh@suse.cz>
3786
3787 * i386.c (*_cost): Add COSTS_N_INSNS.
3788 (ix86_rtx_costs): Do not use COSTS_N_INSNS.
3789
3790 2006-01-02 Paolo Bonzini <bonzini@gnu.org>
3791
3792 PR target/25259
3793 * Makefile.in (DECNUMINC): Include libdecnumber's build directory.
3794
3795 2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
3796
3797 * config/arm/arm.c (all_fpus): Fix comment typo.
3798 * config/darwin.c: Likewise.
3799 * config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
3800 * config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
3801 * config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.
3802
3803 2006-01-01 David Edelsohn <edelsohn@gnu.org>
3804
3805 * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
3806 (rs6000_split_compare_and_swapqhi): New.
3807 * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
3808 (sync_compare_and_swapqhi_internal): New.
3809 * config/rs6000/rs6000-protos.h: Declare.