OSDN Git Service

4f61c9464b92c4055467987b02ed43f3bdca385d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-07  Paul Brook  <paul@codesourcery.com>
2
3         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
4
5 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
6
7         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
8         New.
9         (phase1_vrs): Use them.
10         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
11         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
12         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
13         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
14         __gnu_Unwind_Restore_WMMXC if required.
15         (_Unwind_VRS_Pop): Implement iWMMXt support.
16         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
17         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
18         gnu_Unwind_Save_WMMXC): Define.
19
20 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
21
22         * config/vxworks.h (vxworks_override_options): Declare.
23         (VXWORKS_OVERRIDE_OPTIONS): Use it.
24         * config/vxworks.c: Include target.h and toplev.h.
25         (vxworks_override_options): New function.
26         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
27
28 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
29
30         * config/s390/s390.c (override_options): Don't emit an error when
31         -mstack-size is used without providing -mstack-guard.
32         (s390_emit_prologue): Choose stack_guard value automatically if not
33         provided via command line.
34         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
35
36 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
37
38         * config/i386/i386.c (output_set_got): Add a GOT initialization
39         sequence for VxWorks PIC.
40         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
41         around labels as well as symbols.  Use gotoff_operand instead
42         of local_symbolic_operand.
43         (legitimize_pic_address): Use gotoff_operand instead of
44         local_symbolic_operand.  Use @GOT accesses for labels as
45         well as symbols.
46         (ix86_output_addr_diff_elt): Use PC-relative rather than
47         GP-relative offsets for VxWorks PIC.
48         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
49         no_new_pseudos.  Check whether the returned register is op0.
50         * config/i386/i386.md (tablejump): Use PC-relative rather than
51         GP-relative offsets for VxWorks PIC.
52         * config/i386/predicates.md (gotoff_operand): New predicate.
53
54 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
55
56         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
57         before defining.
58         * config/vxworks-dummy.h: New file.
59         * config/i386/i386.h: Include it.
60
61 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
62
63         * dwarf2out.c (is_inlined_entry_point): New
64         (add_high_low_attributes): Emit DW_AT_entry_pc along with
65         DW_AT_ranges if the first subblock is the entry point.
66
67 2007-03-06  David Daney  <ddaney@avtrex.com>
68
69         * doc/install.texi (mips-*-*): Change recommended binutils
70         version.
71
72 2007-03-06  Anatoly Sokolov <aesok@post.ru>
73
74         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
75         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
76         devices.
77         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
78         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
79
80 2007-03-06  Jan Hubicka  <jh@suse.cz>
81
82         * errors.h (warning, error, fatal, internal_error): Mark as cold.
83         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
84         are hot.
85         (probably_cold_bb_p): Cold functions are cold.
86         (probably_never_executed_bb_p): Cold functions are cold.
87         (tree_bb_level_predictions): Predict calls to cold functions as not
88         taken.
89         (compute_function_frequency): Check hot/cold attributes.
90         * function.h (function_frequency): Update comments.
91         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
92         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
93         (c_common_att): Add cold and hot.
94
95         * doc/extend.texi (hot,cold attributes): Document.
96
97 2007-03-06  Andrew Haley  <aph@redhat.com>
98
99         * function.c (expand_function_end): Move blockage to just after we
100         emit the label for the naked return from the function.
101
102 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
103
104         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
105         before redefining.
106
107 2007-03-06  Jan Hubicka  <jh@suse.cz>
108
109         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
110         loaded for constant large models.  Non-large 64bit PIC can do.
111         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
112         * cmodel.h: Add LARGE PIC.
113         * i386.md (UNSPEC_PLTOFF): New.
114         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
115         needed.
116         (*call_1_rex64): Disable for large models.
117         (*call_1_rex64_large): New.
118         (*call_value_1_rex64): Disable for large models.
119         (*call_value_1_rex64_large): New.
120         (set_rip_rex4): New.
121         (set_got_offset_rex64): New.
122         * predicates.md (constant_call_address_operand): For large model
123         constant calls are not possible.
124         * i386-protos.h (construct_plt_address): Declare.
125         * i386.c (override_options): Accept large models.
126         (ix86_expand_prologue): Expand large PIC GOT pointer load.
127         (legitimate_constant_p): Add new UNSPECs.
128         (legitimate_pic_operand_p): Likewise.
129         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
130         (legitimize_pic_address): Do easy RIP relative way for TLS only for
131         non-large model.
132         (output_pic_addr_const): Add PLTOFF.
133         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
134         (ix86_expand_move): Legitimize pic address when in PIC mode.
135         (construct_plt_address): New function.
136         (ix86_expand_call): Offload the address to register and use GOT pointer
137         for large model.
138         * invoke.texi (mcmodel=large): Update documentation.
139
140 2007-03-06  Richard Henderson  <rth@redhat.com>
141
142         * config/i386/i386.c (x86_use_leave, x86_push_memory,
143         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
144         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
145         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
146         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
147         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
148         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
149         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
150         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
151         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
152         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
153         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
154         x86_sse_partial_reg_dependency, x86_sse_split_regs, 
155         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
156         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
157         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
158         x86_schedule, x86_use_bt, x86_pad_returns): Merge into ...
159         (ix86_tune_features): ... here.  New array.
160         (x86_cmove, x86_use_xchgb, x86_cmpxchg, x86_cmpxchg8b,  
161         x86_xadd, x86_bswap): Merge into ...
162         (ix86_arch_features): ... here.  New array.
163         (x86_3dnow_a): Remove.
164         (x86_accumulate_outgoing_args): Make static.
165         (x86_arch_always_fancy_math_387): Make static.
166         (ix86_tune_mask, ix86_arch_mask): Move ...
167         (override_options): ... to local variables here.  Apply the
168         appropriate mask to each element of ix86_arch_features and
169         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
170         as were done in the old macros.
171         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
172         * config/i386/i386.h (x86_use_leave, x86_push_memory,
173         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
174         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
175         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
176         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
177         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
178         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
179         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
180         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
181         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
182         x86_partial_reg_dependency, x86_memory_mismatch_stall,
183         x86_accumulate_outgoing_args, x86_prologue_using_move,
184         x86_epilogue_using_move, x86_decompose_lea,
185         x86_arch_always_fancy_math_387, x86_shift1,
186         x86_sse_partial_reg_dependency, x86_sse_split_regs,
187         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,        
188         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
189         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
190         x86_use_incdec, x86_pad_returns, x86_bswap,
191         x86_partial_flag_reg_stall): Remove.
192         (enum ix86_tune_indices): New.
193         (ix86_tune_features): New.
194         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
195         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
196         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
197         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
198         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
199         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
200         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
201         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
202         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
203         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
204         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
205         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
206         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
207         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
208         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
209         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
210         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
211         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
212         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
213         TARGET_EXT_80387_CONSTANTS): Use it.
214         (enum ix86_arch_indices): New.
215         (ix86_arch_features): New.
216         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
217         TARGET_BSWAP): Use it.
218         (ix86_tune_mask, ix86_arch_mask): Remove.
219
220 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
221
222         PR bootstrap/31020
223         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
224         Define using $${sysroot_headers_suffix}.
225         * configure: Regenerate.
226         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
227         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
228         defined.
229         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
230         * gcc.c (print_sysroot_headers_suffix): New.
231         (option_map): Include --print-sysroot-headers-suffix.
232         (display_help): Mention -print-sysroot-headers-suffix.
233         (process_command): Handle -print-sysroot-headers-suffix.
234         (do_spec_1): Append multilib directory to include-fixed path if
235         sysroot suffixes in use.
236         (main): Handle -print-sysroot-headers-suffix.
237         * Makefile.in (start.encap): Don't depend on xlimits.h
238         (xlimits.h): Remove.
239         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
240         limits.h for each multilib in fixinc_list.
241         (fixinc_list, s-fixinc_list): New.
242         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
243         generate them for each multilib in fixinc_list.
244         (stmp-fixproto): Use include-fixed.  Run fixproto for each
245         multilib in fixinc_list.
246         (mostlyclean): Don't remove xlimits.h.
247         (clean): Remove include-fixed.
248         (real-install-headers-tar, real-install-headers-cpio,
249         real-install-headers-cp): Don't copy include, only include-fixed.
250         (install-mkheaders): Depend on fixinc_list.  Don't depend on
251         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
252         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
253         SYSTEM_HEADER_DIR setting in mkheaders.conf.
254
255 2007-03-06  Jan Hubicka  <jh@suse.cz>
256
257         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
258         NANs easilly.
259
260 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
261
262         * configure.ac: Allow tm_file to contain build-directory files.
263         * configure: Regenerate.
264         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
265         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
266         * config/m68k/print-sysroot-suffix.sh: New file.
267
268 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
269
270         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
271         of pic_offset_table_rtx if reload_completed.
272         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
273         PIC_OFFSET_TABLE_REGNUM.
274         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
275         return true.
276         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
277         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
278
279 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
280
281         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
282         functions that call eh_return.
283
284 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
285
286         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
287         functions that need a constant pool.
288
289 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
290
291         PR target/28181
292         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
293         (m68k_preferred_reload_class): Likewise.
294         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
295         (SECONDARY_RELOAD_CLASS): Define.
296         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
297         (LIMIT_RELOAD_CLASS): Delete.
298         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
299         registers from storing bytes.
300         (m68k_secondary_reload_class): New function.
301         (m68k_preferred_reload_class): Likewise.
302
303 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
304
305         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
306         leaf functions.
307         (m68k_expand_prologue): Likewise.
308
309 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
310
311         * config/m68k/m68k-protos.h (output_sibcall): Declare.
312         (mips_expand_epilogue): Add a bool parameter.
313         (m68k_legitimize_sibcall_address): Declare.
314         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
315         (m68k_expand_epilogue): Add a parameter to select between sibling
316         and normal epilogues.  Only generate a return for the latter.
317         (m68k_ok_for_sibcall_p): New function.
318         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
319         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
320         (sibcall_value, *sibcall_value): Likewise.
321         (*call, *call_value): Require !SIBLING_CALL_P.
322         (epilogue): Update call to m68k_expand_epilogue.
323         (sibcall_epilogue): New pattern.
324         * config/m68k/predicates.md (const_call_operand): Say that this
325         predicate applies to sibling calls too.
326         (sibcall_operand): New predicate.
327
328 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
329
330         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
331         alternatives as movsi_cf.
332         (movsf_cf_hard): Add commentary.
333
334 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
335             Richard Sandiford  <richard@codesourcery.com>
336
337         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
338         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
339         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
340         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
341         as being live on exit from an interrupt function.
342         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
343         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
344         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
345         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
346         (m68k_interrupt_function_p): Globalize.
347         (m68k_compute_frame_layout): Remove reverse mask code.
348         (m68k_emit_movem, m68k_set_frame_related): New functions.
349         (m68k_output_function_prologue): Delete in favor of...
350         (m68k_expand_prologue): ...this new function.
351         (m68k_output_function_epilogue): Delete in favor of...
352         (m68k_expand_epilogue): ...this new function.
353         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
354         functions.
355         (print_operand): Handle %?.
356         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
357         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
358         (prologue, epilogue): New patterns.
359         (return): Turn into a define_expand.
360         (*return): New pattern, derived from old "return" pattern.  Use rte
361         rather than rts for interrupt functions.  Only use rtd if the pop
362         count is nonzero.
363         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
364         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
365         (link, *link, unlink, *unlink, load_got): Likewise.
366
367 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
368
369         PR target/23482
370         PR target/17114
371         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
372         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
373         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
374         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
375         and m68k_matches_u_p.
376         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
377         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
378         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
379         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
380         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
381         (REG_STRICT_P): New macro.
382         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
383         PCREL_GENERAL_OPERAND_OK.
384         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
385         m68k_legitimate_base_reg_p.
386         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
387         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
388         (PIC_CASE_VECTOR_ADDRESS): Update comment.
389         * config/m68k/m68k.c (m68k_address): New structure.
390         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
391         (m68k_decompose_index, m68k_legitimate_constant_address_p)
392         (m68k_jump_table_ref_p, m68k_decompose_address)
393         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
394         (m68k_matches_u_p): New functions.
395         (print_operand_address): Rewrite to use m68k_decompose_index.
396
397 2007/03/05  David Taylor  <dtaylor@emc.com>
398
399         * gcc.c: Correct copyright date in --version output.
400
401 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
402
403         * pa.md: In unamed move patterns, disparge copies between general
404         and floating point registers using '?' modifier.  Don't include 'f'
405         constraint for register preferences in DImode, SImode, HImode and
406         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
407         Remove constraints for copies between general and floating registers
408         in soft-float DFmode pattern.
409         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
410         floating register.
411         (movsf): Likewise. 
412
413 2007-03-05  Mike Stump  <mrs@apple.com>
414
415         * c-common.c (targetcm): Add.   
416         * c-opts.c (c_common_handle_option): Handle language specific
417         target options.
418         * opts.c (handle_option): Verify language for target options, if
419         any are given.
420         * opth-gen.awk: Add CL_LANG_ALL.
421         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
422         (TARGETCM_INITIALIZER): Add.
423         * target.h (struct gcc_targetcm): Add.
424         (targetcm): Add.
425         * targhooks.c (default_handle_c_option): Add.
426         * targhooks.h (default_handle_c_option): Add.
427         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
428
429         * config/darwin.opt (iframework): Add.
430         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
431         * config/darwin-c.c (handle_c_option): Add.
432         (TARGET_HANDLE_C_OPTION): Add.
433         (targetcm): Add.
434         * doc/invoke.texi (Darwin Options): Add -iframework.
435
436 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
437
438         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
439         conversion.
440
441 2007-03-05  Ian Lance Taylor  <iant@google.com>
442
443         * c.opt (fgnu89-inline): New option.
444         * c-opts.c (c_common_post_options): Set default value for
445         flag_gnu89_inline.
446         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
447         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
448         inline functions.
449         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
450         (grokdeclarator, start_function): Likewise.
451         * c-cppbuiltin.c (c_cpp_builtins): Define either
452         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
453         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
454         (C Dialect Options): Document -fgnu89-inline.
455         * doc/extend.texi (Function Attributes): Explain what the
456         gnu_inline attribute does.
457         * doc/cpp.texi (Common Predefined Macros): Document
458         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
459
460 2007-03-05  Ian Lance Taylor  <iant@google.com>
461
462         PR tree-optimization/31034
463         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
464         half-range if the other side is an overflow infinity.
465
466 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
467
468         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
469         (bfin*-linux-uclibc*): New configuration.
470         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
471         defining.
472         * config/bfin/linux.h: New file.
473         * config/bfin/libgcc-bfin.ver: New file.
474         * config/bfin/t-bfin-uclinux: New file.
475         * config/bfin/t-bfin-linux: New file.
476         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
477         (TARGET_OS_CPP_BUILTINS): New macro.
478
479 2007-03-05  Richard Guenther  <rguenther@suse.de>
480
481         * fold-const.c (fold_binary): Remove duplicate folding
482         of comparison of non-null ADDR_EXPR against null.
483
484 2007-03-05  Richard Guenther  <rguenther@suse.de>
485         Dorit Nuzman  <dorit@il.ibm.com>
486
487         PR tree-optimization/26420
488         * tree-vectorizer.c (vectorize_loops): Bail out early if there
489         are no loops in the function.  Only print the number of
490         vectorized loops if it is greater than zero or we are supposed
491         to print information about unvectorized loops.
492
493 2007-03-05  Revital Eres  <eres@il.ibm.com>
494
495       * gcc.dg/var-expand1.c: New test.
496       * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
497       when an accumulator is expanded.
498
499 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
500
501         PR other/30465
502         * c-common.c (convert_and_check): Don't give warnings for
503         conversion if 'expr' already overflowed.
504         
505 2007-03-04  Roger Sayle  <roger@eyesopen.com>
506
507         PR middle-end/30744
508         * fold-const.c (fold_comparison): Enforce type consistency when
509         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
510
511 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
512
513         * tree-ssa-address.c (create_mem_ref): Do not put an expression
514         containing a cast to the base of TARGET_MEM_REF.
515
516 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
517
518         * tree.c (tree_contains_struct_check_failed): Remove spurious
519         whitespace from error message.
520
521 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
522
523         PR target/30406
524         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
525         instead of precision.
526
527 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
528             Nathan Sidwell  <nathan@codesourcery.com>
529
530         * emit-rtl.c (find_auto_inc): New.
531         (try_split): recreate REG_INC notes,
532         Use regular for loops rather than whiles.
533
534 2007-03-03  Andreas Schwab  <schwab@suse.de>
535
536         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
537         * configure: Regenerate.
538
539 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
540
541         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
542         flag_rounding_math, not flag_unsafe_math_optimizations.
543
544         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
545         fold_build2.
546         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
547         alpha_fold_vector_minmax): Likewise.
548         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
549         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
550
551 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
552
553         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
554         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
555         if the lhs has side-effects.
556         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
557
558 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
559
560         * config/i386/i386.h (TUNEMASK): Remove define.
561         (ARCHMASK): Remove define.
562         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
563          Use ix86_arch_mask variable instead of ARCHMASK.
564         * config/i386/i386.c (override_options): Ditto.
565         (standard_80387_constant_p): Ditto.
566
567 2007-03-02  Ian Lance Taylor  <iant@google.com>
568
569         Used signed infinities in VRP.
570         * tree-vrp.c (uses_overflow_infinity): New static function.
571         (supports_overflow_infinity): New static function.
572         (make_overflow_infinity): New static function.
573         (negative_overflow_infinity): New static function.
574         (positive_overflow_infinity): New static function.
575         (is_negative_overflow_infinity): New static function.
576         (is_positive_overflow_infinity): New static function.
577         (is_overflow_infinity): New static function.
578         (overflow_infinity_range_p): New static function.
579         (compare_values_warnv): New function split out of compare_values.
580         (compare_value): Call it.
581         (set_value_range_to_nonnegative): Add overflow_infinity
582         parameter.  Change caller.
583         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
584         Change callers.
585         (vrp_expr_computes_nonzero): Likewise.
586         (compare_ranges, compare_range_with_value): Likewise.
587         (compare_name_with_value, compare_names): Likewise.
588         (vrp_evaluate_conditional): Likewise.
589         (set_value_range): Handle infinity
590         (vrp_operand_equal_p, operand_less_p): Likewise.
591         (extract_range_from_assert): Likewise.
592         (vrp_int_const_binop): Likewise.
593         (extract_range_from_binary_expr): Likewise.
594         (extract_range_from_unary_expr): Likewise.
595         (extract_range_from_comparison): Likewise.
596         (extract_range_from_expr): Likewise.
597         (dump_value_range): Likewise.
598         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
599         (test_for_singularity): Likewise.
600         (vrp_int_const_binop): Remove inline qualifier.
601         (adjust_range_with_scev): Add comment.
602         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
603
604 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
605
606         * tree-ssa-structalias.c (could_have_pointers): Tidy.
607         (get_constraint_for): Likewise.
608         (do_structure_copy): Likewise.
609         (find_func_aliases): Fix references to MODIFY_EXPR.
610         (intra_create_variable_infos): Tidy.
611         * tree-ssa-operands.c (add_virtual_operand): Add argument
612         IS_CALL_SITE.
613         When adding members of alias sets, if IS_CALL_SITE is true and
614         the symbol is not call-clobbered, skip it.
615         Adjust all callers.
616
617 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
618
619         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
620         entry by means of emit_insn_at_entry.
621
622 2007-03-02  Richard Henderson  <rth@redhat.com>
623
624         * expr.h (promoted_input_arg): Remove decl.
625         * function.c (promoted_input_arg): Merge into ...
626         * combine.c (setup_incoming_promotions): ... only caller.
627         Rearrange to avoid double loop.
628
629 2007-03-02  Ben Elliston  <bje@au.ibm.com>
630             Peter Bergner  <bergner@vnet.ibm.com>
631             Janis Johnson  <janis187@us.ibm.com>
632
633         * config/rs6000/dfp.md: New file.
634         * config/rs6000/rs6000.md: Include dfp.md.
635         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
636         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
637         and TDmode decimal float modes in FP registers.
638         (num_insns_constant): Likewise.
639         (rs6000_legitimate_offset_address_p): Likewise.
640         (rs6000_legitimize_address): Likewise.
641         (rs6000_legitimize_reload_address): Likewise.
642         (rs6000_legitimate_address): Likewise.
643         (rs6000_emit_move): Likewise.
644         (function_arg_boundary): Likewise.
645         (function_arg_advance): Likewise.
646         (rs6000_darwin64_record_arg_recurse): Likewise.
647         (function_arg): Likewise.
648         (rs6000_gimplify_va_arg): Likewise.
649         (rs6000_split_multireg_move): Likewise.
650         (rs6000_output_function_epilogue): Likewise.
651         (rs6000_output_function_epilogue): Likewise.
652         (rs6000_register_move_cost): Likewise.
653         (rs6000_function_value): Likewise.
654         (rs6000_libcall_value): Likewise.
655
656 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
657
658         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
659
660 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
661
662         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
663         Use $MULTIDIR to choose between the kernel and RTP headers,
664         and use $WIND_BASE and $WIND_USR to locate them.
665
666 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
667
668         * config/i386/i386.c (override_options): Put initialization of
669         ix86_tune_mask and ix86_arch_mask to the correct place.
670
671 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
672             Michael Meissner  <michael.meissner@amd.com>
673
674         PR target/31019
675         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
676         (ARCHMASK): Define.
677         (TARGET_CMOVE): Use ARCHMASK.
678         (TARGET_CMPXCHG): Ditto.
679         (TARGET_CMPXCHG8B): Ditto.
680         (TARGET_XADD): Ditto.
681         (TARGET_BSWAP): Ditto.
682         * config/i386/i386.c (ix86_tune_mask): New global variable.
683         (ix86_arch_mask): Ditto.
684         (override_options): Initialize ix86_tune_mask and
685         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
686         target_flags.
687
688 2007-03-02  Ben Elliston  <bje@au.ibm.com>
689
690         PR 30992
691         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
692
693 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
694
695         * target.h (init_dwarf_reg_sizes_extra): New target hook.
696         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
697         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
698         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
699         hook.
700         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
701         rs6000_init_dwarf_reg_sizes_extra): New.
702         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
703         SPE register high parts.
704
705 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
706
707         * Makefile.in: Add install-pdf target as
708         copied from automake v1.10 rules.
709         * configure.ac: Add install-pdf to target list.
710         * configure: Regenerate.
711
712 2007-03-01  Paul Brook  <paul@codesourcery.com>
713
714         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
715         modes to LDRD for DImode.
716         (output_move_double): Fixup out of range ldrd/strd.
717         (vfp_secondary_reload_class): Rename...
718         (coproc_secondary_reload_class): ... to this.  Add wb argument.
719         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
720         coproc_secondary_reload_class for CLASS_IWMMXT.
721         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
722         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
723
724 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
725
726         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
727         factor by the estimated number of iterations.
728         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
729         prefetch latency.
730
731         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
732         decode_caches_intel, detect_caches_intel): New functions.
733         (host_detect_local_cpu): Use detect_caches_amd and
734         detect_caches_intel.
735
736 2007-03-01  Richard Henderson  <rth@redhat.com>
737
738         * expr.c (emit_move_complex_push): Export.
739         (emit_move_complex_parts): Split out from ...
740         (emit_move_complex): ... here.
741         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
742         * config/i386/i386.md (movcdi): New.
743
744 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
745
746         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
747         size of mode1 to check for tieable modes in MMX case.
748
749 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
750
751         * Makefile.in (rtlanal.o): Depend on tree.h.
752         * rtl.h (offset_within_section_p, split_const): Declare.
753         * rtlanal.c: Include tree.h.
754         (offset_within_block_p): New function, taken from
755         mips_offset_within_object_p.
756         (split_const): New function, taken from mips_split_const.
757         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
758         Declare.
759         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
760         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
761         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
762         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
763         (m68k_illegitimate_symbolic_constant_p): New function.
764         * config/m68k/m68k.md (movsi): Remove misleading predicates.
765         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
766         symbolic constant that might be outside the symbol's section,
767         move the symbol first and then add the offset.
768         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
769         Override.
770         * config/mips/mips.c (mips_split_const): Delete.
771         (mips_offset_within_object_p): Delete.
772         (mips_symbolic_constant_p): Use offset_within_section_p and
773         split_const instead of mips_offset_within_object_p and
774         mips_split_const.
775         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
776         (mips_legitimize_const_move, print_operand_reloc)
777         (mips_dangerous_for_la25_p): Use split_const instead of
778         mips_split_const.
779
780 2007-02-28  Eric Christopher  <echristo@apple.com>
781
782         * Makefile.in (install-include-dir): Don't rm -rf include.
783
784 2007-02-28  Richard Guenther  <rguenther@suse.de>
785
786         PR middle-end/30364
787         * fold-const.c (fold_binary): Do not associate expressions
788         with more than one variable for integer types that do not wrap.
789
790 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
791
792         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
793         Delete, and replace with...
794         (fold_builtin_call_array): This.  Update callers to use it.
795         * fold-const.c (fold_build_call_list): Delete, and replace with...
796         (fold_build_call_array): This.
797         (fold_build_call_list_initializer): Delete, and replace with...
798         (fold_build_call_array_initializer): This.
799         * tree.h: Update declarations to reflect above changes.
800
801         * c-typeck.c (build_function_call): Store converted arguments
802         in a stack-allocated array instead of building a list.
803         (convert_arguments): Store arguments in the array passed in as an
804         argument, and return the actual number of arguments.
805         * c-format.c: (check_function_format): Pass arguments in an
806         array instead of a list.
807         * c-common.c (check_function_nonnull): Likewise.
808         (check_function_sentinel): Likewise.
809         (check_function_arguments): Likewise.
810         * c-common.h: Update declarations to reflect above changes.
811
812 2007-02-28  Jan Hubicka  <jh@suse.cz>
813
814         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
815         PRED_NEGATIVE_RETURN): Update outcomes.
816
817 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
818
819         * calls.c (emit_library_call_value_1): Handle partial registers
820         correctly when building up CALL_INSN_FUNCTION_USAGE.
821
822 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
823
824         * pa/predicates.md (move_src_operand): Allow zero for mode.
825         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
826         move pattern.
827
828 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
829
830         PR target/30970
831         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
832         *movv2df_internal): Enable pattern only for valid operand
833         combinations.
834         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
835         tie only 128bit modes. For MMX registers, tie only 64bit modes.
836
837 2007-02-27  Mike Stump  <mrs@apple.com>
838
839         * config/darwin-crt3.c: Avoid compilation when compiling for a
840         kext multilib.
841
842 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
843
844         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
845         FIXED_INCLUDE_DIR.
846         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
847         for fixed headers and limits.h.
848         (install-include-dir, install-headers-tar, install-headers-cpio,
849         install-headers-cp, real-install-headers-tar,
850         real-install-headers-cpio, real-install-headers-cp): Handle
851         include-fixed as well as include.
852         (install-mkheaders): Don't install files that go only in include
853         not include-fixed.
854         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
855         from GCC_INCLUDE_DIR.
856         * gcc.c (process_command): Remove special -BstageN/ handling.
857         (do_spec_1): Add include-fixed directories.
858
859 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
860
861         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
862         _smulsi3_highpart.
863         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
864         New functions.
865         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
866         patterns.
867
868 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
869
870         * c-common.c (get_priority): Add check for
871         SUPPORTS_INIT_PRIORITY.
872
873 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
874
875         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
876
877         * config/bfin/bfin.c: Include "cfglayout.h".
878         (MAX_LSETUP_DISTANCE): New macro.
879         (struct loop_info): New members incoming, incoming_src and
880         incoming_dest.  Delete member predecessor.
881         (length_for_loop): New function.
882         (bfin_optimize_loop): Handle more different loop structures.
883         (bfin_discover_loop): Rework detection of predecessor blocks by
884         examining incoming edges.
885         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
886         bfin_reorg_loops.
887         (bfin_reorder_loops): New function.
888         (bfin_reorg_loops): Use these three new functions.
889
890         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
891         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
892         (CONSTRAINT_LEN): Add entry for 'q'.
893         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
894         Add 'q' constraints.
895         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
896         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
897
898         * config/bfin/bfin.md (add_with_carry): New pattern.
899         (s_or_u, su_optab, su_modifier): New code macros/attrs.
900         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
901         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
902         support unsigned multiplies too.  Removed incorrect commutativity from
903         operand 1 constraint where appropriate.
904         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
905         patterns.
906         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
907         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
908         New patterns.
909         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
910         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
911         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
912         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
913         usmulhisi_hh_huh): New patterns.
914
915         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
916         lshifthi3): Fix output template to use half reg for operand 2.
917
918         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
919         instead of R2.
920
921         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
922
923 2007-02-27  Andreas Schwab  <schwab@suse.de>
924
925         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
926
927 2007-02-27  Jan Hubicka  <jh@suse.cz>
928
929         * predict.c (last_basic_block_p): Remove.
930         (tree_estimate_probability): Update return heuristic for commonized
931         return blocks.
932
933 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
934
935         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
936
937 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
938
939         * doc/include/gcc-common.texi (versionsubtitle): New macro.
940         * doc/cpp.texi: Standardize title page.
941         * doc/cppinternals.texi: Likewise.
942         * doc/gcc.texi: Standardize title page, remove version number
943         from copyright page.
944         * doc/gccint.texi: Likewise.
945         * doc/install.texi: Standardize title page, add table of
946         contents.
947
948 2007-02-26  Jan Hubicka  <jh@suse.cz>
949
950         * predict.def: Set outcomes according to more recent results.
951         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
952         Remove dead predictors.
953         * predict.c (return_prediction): Fix pasto.
954
955 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
956
957         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
958         change; avoid a memory leak when returning early.
959
960 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
961
962         * c-decl.c (static_ctors): Move to c-common.c.
963         (static_dtors): Likewise.
964         (finish_function): Use c_record_cdtor_fn.
965         (build_cdtor): Move to c-common.c.
966         (c_write_global_declarations): Use c_build_cdtor_fns.
967         * c-common.h (static_ctors): Declare.
968         (static_dtors): Likewise.
969         (c_record_cdtor_fn): Likewise.
970         (c_build_cdtor_fns): Likewise.
971         * c-common.c (static_ctors): New variable.
972         (static_dtors): Likewise.
973         (c_record_cdtor_fn): New function.
974         (build_cdtor): Move from c-decl.c
975         (c_build_cdtor_fns): New function.
976
977         * output.h (assemble_addr_to_section): Declare.
978         (get_cdtor_priority_section): Likewise.
979         * varasm.c (assemble_addr_to_section): New function.
980         (get_cdtor_priority_section): Likewise.
981         (default_named_section_asm_out_destructor): Use them.
982         (destor_dtor_section_asm_out_destructor): Likewise.
983         (default_named_section_asm_out_constructor): Likewise.
984         (default_ctor_section_asm_out_constructor): Likewise.
985         * config.gcc (*-*-vxworks*): Include vxworks.o.
986         * config/t-vxworks (vxworks.o): New target.
987         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
988         (TARGET_ASM_CONSTRUCTOR): Define.
989         (TARGET_ASM_DESTRUCTOR): Likewise.
990         (vxworks_asm_out_constructor): Declare.
991         (vxworks_asm_out_destructor): Likewise.
992
993         * c-common.c (get_priority): Check that we have not just an
994         INTEGER_CST, but an integer constant with integeral type.
995
996 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
997
998         PR tree-optimization/30938
999         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
1000         use &dt[nargs-1] instead of &dt[nargs] in the call to
1001         vect_is_simple_use().
1002
1003 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
1004
1005         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
1006         from register elimination as PRE_MODIFY / POST_MODIFY increments.
1007         Do not attempt to handle MEM inside auto-inc expressions.
1008         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
1009         of a register modified by an auto-inc expression.  However, do handle
1010         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
1011         (elimination_effects): Prohibit elimination of a register modified
1012         by an auto-inc expression.  Disable register elimination rules whose
1013         target register is modified by an auto-inc expression with variable
1014         increment.
1015
1016 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
1017
1018         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
1019         off-by-one error.
1020         (array_at_struct_end_p): New function.
1021         (idx_infer_loop_bounds): Use it.
1022         (estimate_numbers_of_iterations_loop): Export.
1023         * predict.c (predict_loops): Use estimated_loop_iterations_int.
1024         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
1025         (tree_estimate_probability): Call record_loop_exits.
1026         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
1027         (estimated_loop_iterations, estimated_loop_iterations_int,
1028         estimated_loop_iterations_tree): New functions.
1029         (analyze_siv_subscript_cst_affine,
1030         compute_overlap_steps_for_affine_1_2,
1031         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
1032         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
1033         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
1034         (PRED_LOOP_ITERATIONS_GUESSED): New.
1035         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
1036         * cfgloop.h (estimate_numbers_of_iterations_loop,
1037         estimated_loop_iterations_int): Declare.
1038
1039 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
1040
1041         * doc/extend.texi: Document optional priority argument to
1042         constructors and destructors.
1043         * tree.c (init_priority_for_decl): Adjust GTY markers.
1044         (init_ttree): Use priority-info hash functions for
1045         init_priority_for_decl.
1046         (tree_map_eq): Rename to ...
1047         (tree_map_base_eq): ... this.
1048         (tree_map_marked_p): Rename to ...
1049         (tree_map_base_marked_p): ... this.
1050         (tree_map_base_hash): New function.
1051         (decl_init_priority_lookup): Rework.
1052         (decl_fini_priority_lookup): New function.
1053         (decl_priority_info): New function.
1054         (decl_init_priority_insert): Use it.
1055         (decl_fini_priority_insert): Likewise.
1056         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
1057         hierarchy.
1058         (decl_restrict_base_insert): Likewise.
1059         (decl_debug_expr_insert): Likewise.
1060         (decl_value_expr_lookup): Likewise.
1061         (decl_value_expr_insert): Likewise.
1062         * tree.h (priority_type): New type.
1063         (decl_init_priority_lookup): Use priority_type.
1064         (decl_fini_priority_lookup): New function.
1065         (decl_init_priority_insert): Use priority_type.
1066         (decl_fini_priority_insert): New function.
1067         (DECL_HAS_INIT_PRIORITY): Tweak comments.
1068         (DECL_INIT_PRIORITY): Likewise.
1069         (SET_DECL_INIT_PRIORITY): Add comment.
1070         (DECL_FINI_PRIORITY): New macro.
1071         (SET_DECL_FINI_PRIORITY): Likewise.
1072         (DEFAULT_INIT_PRIORITY): Document.
1073         (MAX_INIT_PRIORITY): Likewise.
1074         (MAX_RESERVED_INIT_PRIORITY): Likewise.
1075         (tree_map_base): New type.
1076         (tree_map_base_eq): New function.
1077         (tree_map_base_hash): Likewise.
1078         (tree_map_base_marked_p): Likewise.
1079         (tree_map): Inherit from tree_map_base.
1080         (tree_map_eq): Make it a macro.
1081         (tree_map_marked_p): Likewise.
1082         (tree_int_map): Inherit from tree_map_base.
1083         (tree_int_map_eq): Make it a macro.
1084         (tree_int_map_hash): Likewise.
1085         (tree_int_map_marked_p): Likewise.
1086         (tree_priority_map): New type.
1087         (tree_priority_map_eq): New macro.
1088         (tree_priority_map_hash): Likewise.
1089         (tree_priority_map_marked_p): Likewise.
1090         * varasm.c (emults_decl): Adjust for refactoring of tree_map
1091         hierarchy.
1092         (emutls_common_1): Likewise.
1093         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
1094         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
1095         of tree_map hierarchy.
1096         * tree-cfg.c (move_stmt_r): Likewise.
1097         (new_label_mapper): Likewise.
1098         * c-tree.h (c_expand_body): Move to ...
1099         * c-common.h (c_expand_body): ... here.
1100         * c-decl.c (c_expand_body): Move to ...
1101         * c-common.c (c_expand_body): ... here.
1102         (c_common_attribute_table): Allow 1 argument for the constructor
1103         and destructor attributes.
1104         (get_priority): New function.
1105         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
1106         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
1107
1108 2007-02-24  Jan Hubicka  <jh@suse.cz>
1109
1110         PR middle-end/30509
1111         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
1112
1113 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1114             Jan Hubicka  <jh@suse.cz>
1115
1116         PR target/30778
1117         * i386.c (counter_mode): New function.
1118         (expand_set_or_movmem_via_loop): Use it.
1119         (expand_movmem_epilogue): Likewise; fix pasto.
1120         (ix86_expand_movmem): Do emit guard even for constant counts.
1121         (ix86_expand_setmem): Likewise.
1122
1123 2007-02-25  Nick Clifton  <nickc@redhat.com>
1124
1125         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
1126         (JUMP_TABLES_IN_TEXT_SECTION): Define.
1127
1128 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1129
1130         PR target/30770
1131         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
1132         count argument with 0x10, not with 0x16.
1133         (expand_setmem_epilogue): Ditto.
1134
1135 2007-02-24  Mike Stump  <mrs@apple.com>
1136
1137         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
1138         symbols.
1139
1140 2007-02-24  Richard Guenther  <rguenther@suse.de>
1141
1142         PR middle-end/30951
1143         * fold-const.c (fold_binary): Fold x +- CST op x for
1144         EQ_EXPR and NE_EXPR.
1145
1146 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1147
1148         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
1149
1150 2007-02-24  Jan Hubicka  <jh@suse.cz>
1151
1152         * cgraphunit.c (decide_is_function_needed): Honor
1153         -fkeep-inline-functions.
1154
1155 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1156
1157         * builtins.c (fold_builtin_modf): New.
1158         (fold_builtin_2): Use it.
1159
1160 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
1161
1162         * loop-iv.c (implies_p): Detect additional cases where A implies B.
1163         (determine_max_iter): Take additional LOOP arg; all callers changed.
1164         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
1165         one using simplifications.
1166         (simplify_using_initial_values): Return if the expression becomes
1167         invalid due to altered regs.
1168
1169 2007-02-23  DJ Delorie  <dj@redhat.com>
1170
1171         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
1172
1173 2007-02-23  Mike Stump  <mrs@apple.com>
1174
1175         * tlink.c (scan_linker_output): Parse linker messages from
1176         darwin9's linker better.
1177
1178 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
1179
1180         PR debug/29614
1181         * varpool.c (varpool_assemble_pending_decls):  Set
1182         varpool_last_needed_node to null.
1183
1184 2007-02-23  DJ Delorie  <dj@redhat.com>
1185
1186         * config/i386/i386.c (ix86_data_alignment): Don't specify an
1187         alignment bigger than the object file can handle.
1188
1189 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
1190
1191         PR target/30825
1192         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
1193         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
1194         (*movsf_1): Penalize MMX moves.
1195
1196 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1197
1198         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
1199         2^32-1 or more times unless flag_unsafe_loop_optimizations.
1200
1201         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
1202
1203 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1204
1205         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
1206         (fold_builtin_1): Use them.
1207         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
1208         BUILT_IN_SIGNIFICAND.
1209
1210 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
1211
1212         * config/i386/i386.c (bdesc_1arg): Initialize
1213         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
1214         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
1215         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
1216         and IX86_BUILTIN_MOVSLDUP.
1217
1218 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
1219
1220         PR rtl-optimization/30841
1221         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
1222
1223 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1224
1225         * builtins.c (fold_builtin_frexp): New.
1226         (fold_builtin_2): Use it.
1227
1228 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
1229
1230         * doc/invoke.texi (Spec Files): Document getenv spec function.
1231
1232         * gcc.c (getenv_spec_function): New function.
1233         (static_spec_functions): Add it.
1234         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
1235         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
1236         header files.
1237
1238 2007-02-22  Michael Matz  <matz@suse.de
1239
1240         PR c++/29433
1241         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
1242         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
1243
1244 2007-02-22  Ian Lance Taylor  <iant@google.com>
1245
1246         PR debug/30898
1247         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
1248         (mem_loc_descriptor): Call it.
1249
1250 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
1251             Ira Rosen  <irar@il.ibm.com>
1252
1253         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
1254
1255 2007-02-22  Ira Rosen  <irar@il.ibm.com>
1256
1257         PR tree-optimization/30843
1258         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
1259         stores only after all the group is vectorized.
1260
1261 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
1262
1263         PR tree-optimization/30858
1264         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
1265         in the reduction cycle have a single use in the loop.
1266         * tree-vectorizer.h (relevant): Add documentation.
1267
1268 2007-02-20  Mike Stump  <mrs@apple.com>
1269
1270         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
1271         * configure: Regenerate.
1272
1273 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1274
1275         Change the defaults of some parameters and options.
1276         * config/spu/spu-protos.h (spu_optimization_options): Declare.
1277         * config/spu/spu.c (spu_optimization_options): Add.
1278         (spu_override_options): Change params in spu_optimization_options.
1279         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
1280
1281         Register 127 is only 16 byte aligned when used as a frame pointer.
1282         * config/spu/spu-protos.h (spu_init_expanders): Declare.
1283         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
1284         HARD_FRAME_POINTER_REGNUM.
1285         (spu_legitimate_address):  Use regno_aligned_for_reload.
1286         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
1287         aligned when frame_pointer_needed is true.
1288         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
1289         to 8 bits.
1290         * config/spu/spu.h (INIT_EXPANDERS): Define.
1291
1292         Make sure shift and rotate instructions have valid immediate operands.
1293         * config/spu/predicates.md (spu_shift_operand): Remove.
1294         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
1295         * config/spu/constraints.md (W, O): Extend range.
1296         * config/spu/spu.md (umask, nmask): Define.
1297         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
1298         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
1299         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
1300         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
1301         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
1302         (lshr<mode>3_reg):  Fix rtl description.
1303
1304         Make sure mulhisi immediate operands are valid.
1305         * config/spu/predicates.md (imm_K_operand): Add.
1306         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
1307
1308         Generate constants using fsmbi and andi.
1309         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
1310         (print_operand, spu_split_immediate, classify_immediate,
1311         fsmbi_const_p): Handle IC_FSMBI2.
1312
1313         Correctly handle a CONST_VECTOR containing symbols.
1314         * config/spu/spu.c (print_operand): Handle HIGH correctly.
1315         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
1316         (immediate_load_p): Allow symbols that use 2 instructions to create.
1317         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
1318         with symbols when flag_pic is set.
1319         (const_vector_immediate_p): New.
1320         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
1321         accept a CONST_VECTOR with symbols.
1322         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
1323         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
1324         correctly.
1325         * config/spu/spu.md (high, low): Delete.
1326         (low_<mode>): Define.
1327
1328         Remove INTRmode and INTR_REGNUM, which didn't work.
1329         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
1330         of INTR_REGNUM.
1331         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
1332         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
1333         peephole2 pattern): Don't use INTR or 131.
1334         (movintrcc): Delete.
1335         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
1336         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
1337         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
1338         (UNSPEC_SET_INTR): Add.
1339         * config/spu/spu-modes.def (INTR): Remove.
1340
1341         More accurate warnings about run-time relocations.
1342         * config/spu/spu.c (reloc_diagnostic): Test in_section.
1343
1344         Correctly warn about immediate arguments to specific intrinsics.
1345         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
1346         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
1347         the instruction predicate.
1348
1349         Fix tree check errors with latest update.
1350         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
1351         CALL_EXPR_ARG.
1352         (spu_expand_builtin): Use CALL_EXPR_FN.
1353
1354         Add missing specific intrinsics.
1355         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
1356         si_bislede.
1357         * config/spu/spu_internals.h: Ditto.
1358
1359         Fix incorrect operand modifiers.
1360         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
1361         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
1362
1363         Optimize one case of zero_extend of a vec_select.
1364         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
1365
1366         Accept any immediate for hbr.
1367         * config/spu/spu.md (hbr):  Change s constraints to i.
1368
1369 2007-02-21  Paul Brook  <paul@codesourcery.com>
1370
1371         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
1372         condexec_count when skipping USE and CLOBBER.
1373
1374 2007-02-21  Nick Clifton  <nickc@redhat.com>
1375
1376         * common.opt (Warray-bounds): Add Warning attribute.
1377         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
1378         Likewise.
1379         (fsized-zeroes): Add Optimization attribute.
1380         (fsplit-wide-types, ftree-scev-cprop): Likewise.
1381         * c.opt (Wc++0x-compat): Add Warning attribute.
1382
1383 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
1384
1385         PR middle-end/30761
1386         * reload1.c (eliminate_regs_in_insn): In the single_set special
1387         case, attempt to re-recognize the insn before falling back to
1388         having reload fix it up.
1389
1390 2007-02-20  Eric Christopher  <echristo@gmail.com>
1391
1392         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
1393         Rewrite accordingly.
1394         (frv_read_iacc_argument): Ditto.
1395         (frv_expand_set_builtin): Take a call instead of arglist, update for
1396         above changes.
1397         (frv_expand_unop_builtin): Ditto.
1398         (frv_expand_binop_builtin): Ditto.
1399         (frv_expand_cut_builtin): Ditto.
1400         (frv_expand_binopimm_builtin): Ditto.
1401         (frv_expand_voidbinop_builtin): Ditto.
1402         (frv_expand_int_void2arg): Ditto.
1403         (frv_expand_prefetches): Ditto.
1404         (frv_expand_voidtriop_builtin): Ditto.
1405         (frv_expand_voidaccop_builtin): Ditto.
1406         (frv_expand_load_builtin): Ditto.
1407         (frv_expand_store_builtin): Ditto.
1408         (frv_expand_mdpackh_builtin): Ditto.
1409         (frv_expand_mclracc_builtin): Ditto.
1410         (frv_expand_mrdacc_builtin): Ditto.
1411         (frv_expand_mwtacc_builtin): Ditto.
1412         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
1413         calls for above.
1414
1415 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
1416
1417         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
1418         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
1419         cmpb instruction.
1420         (HAVE_GAS_DFP): Check for assembler support of decimal floating
1421         point instructions.
1422         * configure: Regenerate.
1423         * config.in: Regenerate.
1424         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
1425         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
1426         masks to power6 and power6x and to POWERPC_MASKS.
1427         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
1428         _ARCH_PWR6.
1429         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
1430         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
1431         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
1432         Access PROTOTYPE as variable, not mask.
1433
1434 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1435
1436         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
1437         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
1438         * combine.c (adjust_for_new_dest): Use it.
1439         * postreload.c (reload_combine): Likewise.
1440
1441 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
1442
1443         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
1444         notes on an insn with multiple sets, even if single_set returns
1445         non-NULL for that insn.
1446
1447 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1448
1449         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
1450         scalbn and scalbln.
1451
1452 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
1453
1454         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
1455         if user didn't pass it.
1456         * config/i386/darwin.h (CC1_SPEC): Likewise.
1457         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
1458         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
1459         -mmacosx-version-min.
1460
1461 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1462             Uros Bizjak  <ubizjak@gmail.com>
1463
1464         * optabs.h (enum optab_index): Add new OTI_scalb.
1465         (scalb_optab): Define corresponding macro.
1466         * optabs.c (init_optabs): Initialize scalb_optab.
1467         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
1468         patterns.
1469         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
1470         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
1471         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
1472         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
1473         flag_unsafe_math_optimizations is set.
1474
1475         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
1476         to implement scalbf, scalb and scalbl built-ins as inline x87
1477         intrinsics.
1478
1479 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1480             DJ Delorie <dj@redhat.com>
1481
1482         PR other/30824
1483         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
1484         (diagnostic_report_diagnostic): ... here, and turn them into real
1485         errors. If warnings are inhibited, no need to do anything.
1486
1487 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
1488
1489         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
1490         better code generation.
1491
1492 2007-02-20  Ben Elliston  <bje@au.ibm.com>
1493
1494         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
1495
1496 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
1497
1498         * config/alpha/alpha.c, config/alpha/alpha.md,
1499         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
1500         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
1501         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
1502         config/arm/lib1funcs.asm: Follow spelling conventions.
1503
1504         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
1505         config/fr30/fr30.md, config/i386/i386.h,
1506         config/iq2000/iq2000.h, config/iq2000/predicates.md,
1507         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
1508         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
1509         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
1510         config/rs6000/altivec.md, config/rs6000/rs6000.c,
1511         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
1512         config/sparc/sparc.c, config/sparc/sparc.h,
1513         config/sparc/sparc.md, config/spu/constraints.md,
1514         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
1515         conventions.
1516
1517 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
1518
1519         PR target/29943
1520         * varasm.c (use_blocks_for_decl_p): Return false for decls with
1521         alias attribute.
1522
1523 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
1524
1525         * doc/invoke.texi (-ftree-lrs): Remove.
1526
1527 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
1528
1529         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
1530         NULL.
1531
1532 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
1533
1534         * config/ia64/ia64.c (ia64_expand_builtin): Use the
1535         new CALL_EXPR_FN macro for retrieving the function
1536         declaration of the input expression.
1537
1538 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1539
1540         * c.opt (Waddress): New.
1541         * common.opt (Walways-true): Delete.
1542         (Wstring-literal-comparison): Delete.
1543         * doc/invoke.texi (Warning Options): Delete -Walways-true and
1544         -Wstring-literal-comparison. Add -Waddress.
1545         (Waddress): New.
1546         (Walways-true): Delete.
1547         (Wstring-literal-comparison): Delete.
1548         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
1549         consistently instead of -Walways-true in example.
1550         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
1551         * c-typeck.c (parser_build_binary_op): Replace
1552         -Wstring-literal-comparison and -Walways-true with -Waddress.
1553         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
1554         with -Waddress.
1555
1556 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
1557
1558         * tree-cfg.c (dump_function_to_file): Be prepared for functions
1559         without DECL_STRUCT_FUNCTION initialized.
1560
1561 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
1562
1563         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
1564         due to calls to functions taking pointers as parameters.
1565
1566 2007-02-19  Richard Henderson  <rth@redhat.com>
1567
1568         PR debug/29558
1569         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
1570         in memory.
1571
1572 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1573
1574         * config/s390/s390.c (s390_call_saved_register_used,
1575         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
1576         accessed to the new scheme.
1577
1578 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1579
1580         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
1581         (cris_print_index, cris_print_operand, cris_print_operand_address)
1582         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
1583         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
1584         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
1585         GET_CODE () == xxx.
1586         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
1587         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
1588         GO_IF_LEGITIMATE_ADDRESS): Ditto.
1589         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
1590         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
1591         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
1592         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
1593         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
1594         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
1595         (uminsi3, call, call_value): Ditto.
1596         (define_split: indir_to_reg_split, unnamed): Ditto.
1597
1598 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
1599
1600         PR tree-optimization/30975
1601         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
1602         wrong assert.
1603
1604 2007-02-18  Eric Christopher  <echristo@gmail.com>
1605
1606         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
1607         Remove use of arglist.
1608         (mips_expand_builtin): Remove use of arglist, pass in expr.
1609         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
1610         (mips_expand_builtin_movtf): Ditto.
1611         (mips_expand_builtin_compare): Ditto.
1612
1613 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
1614
1615         * tree-sra.c (sra_build_assignment): Replace assertion
1616         checking with a comment explaining why it can't be done.
1617
1618 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
1619
1620         PR middle-end/30833
1621         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
1622         during CALL_EXPR representation conversion.
1623         * tree-ssa-propagate.c (set_rhs): Likewise.
1624
1625 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
1626
1627         * tree-sra.c (sra_build_assignment): Disable assertion checking
1628         for now.
1629
1630 2007-02-18  Roger Sayle  <roger@eyesopen.com>
1631
1632         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
1633         instead of calling build2 with a GIMPLE_MODIFY_STMT.
1634         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
1635         Likewise.
1636         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
1637         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
1638         gimplify_init_ctor_eval_range, gimple_push_cleanup,
1639         gimplify_omp_for, gimplify_omp_atomic_pipeline,
1640         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
1641         force_gimple_operand): Likewise.
1642         * ipa-cp.c (constant_val_insert): Likewise.
1643         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
1644         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
1645         perfect_nestify): Likewise.
1646         * langhooks.c (lhd_omp_assignment): Likewise.
1647         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
1648         lower_copyprivate_clauses, lower_send_clauses,
1649         lower_send_shared_vars, expand_parallel_call,
1650         expand_omp_for_generic, expand_omp_for_static_nochunk,
1651         expand_omp_for_static_chunk, expand_omp_sections,
1652         lower_omp_single_copy, lower_omp_for_lastprivate,
1653         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
1654         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
1655         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
1656         Likewise.
1657
1658 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
1659
1660         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
1661         config/sh/sh.md: Follow spelling conventions.
1662
1663         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
1664         config/frv/predicates.md: Follow spelling conventions.
1665
1666         * config/m68k/linux-unwind.h: Fix a comment typo.
1667         * target.h: Follow spelling conventions.
1668
1669 2007-02-18  Roger Sayle  <roger@eyesopen.com>
1670
1671         PR rtl-optimization/28173
1672         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
1673         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
1674         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
1675         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
1676         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
1677
1678 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1679
1680         * builtins.c (fold_builtin_load_exponent): New.
1681         (fold_builtin_2): Use it.
1682
1683 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
1684
1685         PR rtl-optimization/30773
1686         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
1687         if we fail to attach a REG_EQUIV note.
1688
1689 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
1690             Roger Sayle  <roger@eyesopen.com>
1691
1692         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
1693
1694 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
1695
1696         * calls.c (initialize_argument_information): Pass original EXP
1697         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
1698         code to split complex arguments here, as part of initializing the
1699         ARGS array.
1700         (expand_call): Remove code that builds a list of arguments and
1701         inserts implicit arguments into it.  Instead, just count how many
1702         implicit arguments there will be so we can determine the size of
1703         the ARGS array, and let initialize_argument_information do the work.
1704         (split_complex_values): Delete unused function.
1705
1706 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
1707
1708         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
1709
1710 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
1711
1712         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
1713         for arg pointer based indexed addressing.
1714
1715 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
1716
1717         * config/ia64/ia64.h, config/ia64/ia64.md,
1718         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
1719         spelling conventions.
1720
1721 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1722
1723         * config/m68k/m68k.c (split_di): New.
1724         * config/m68k/m68k-protos.h: Declare split_di.
1725         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
1726           Improve predicate handling and split constant shifts.
1727
1728 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1729
1730         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
1731         parameter for register bitfield operations, general predicates
1732         cleanup
1733
1734 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
1735
1736         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
1737         * config/m68k/linux-unwind.h: New file.
1738
1739 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
1740
1741         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
1742         config/i386/athlon.md, config/ia64/ia64.md,
1743         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
1744         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
1745         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
1746         tree-ssa-loop-niter.c, tree-vect-analyze.c,
1747         tree-vect-transform.c: Fix comment typos.
1748
1749 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
1750
1751         * sched-deps.c (find_insn_list): Remove.
1752         * sched-int.h: Remove the prototype for find_insn_list.
1753
1754 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
1755
1756         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
1757         to linker.
1758         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
1759         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
1760         darwin_rs6000_override_options.
1761         (C_COMMON_OVERRIDE_OPTIONS): Expect
1762         darwin_macosx_version_min to be non-NULL always.
1763         (TARGET_C99_FUNCTIONS): Likewise.
1764         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
1765         (DARWIN_MINVERSION_SPEC): New.
1766         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
1767         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
1768         to cc1*.
1769         (DARWIN_MINVERSION_SPEC): New.
1770         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
1771         value.
1772         * config/darwin-c.c (darwin_cpp_builtins): Expect
1773         darwin_macosx_version_min to be non-NULL always.
1774
1775         * config/rs6000/rs6000.c: Clean up trailing whitespace.
1776
1777 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
1778
1779         * config/i386/i386.h (x86_use_xchgb): New.
1780         (TARGET_USE_XCHGB): New macro.
1781         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
1782         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
1783         Split after reload into bswaphi for shifts of 8.
1784         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
1785         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
1786         or when optimizing for size.
1787
1788 2007-02-16  Richard Guenther  <rguenther@suse.de>
1789             Christian Bruel  <christian.bruel@st.com>
1790
1791         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
1792         DECLs but prefer SSA_NAMEs over DECLs.
1793
1794 2007-02-16  Richard Guenther  <rguenther@suse.de>
1795
1796         * tree-flow-inline.h (single_imm_use_p): Remove.
1797         (zero_imm_uses_p): Likewise.
1798         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
1799         instead of single_imm_use_p.
1800         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
1801         zero_imm_uses_p.
1802
1803 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1804
1805         PR other/27843
1806         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
1807         nested double- and backquotes.
1808
1809 2007-02-15  Roger Sayle  <roger@eyesopen.com>
1810
1811         PR middle-end/30391
1812         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
1813         should be unreachable.
1814         (build2_stat): Allow construction of MODIFY_EXPR at any time.
1815         For the time being redirect GIMPLE_MODIFY_STMT to the new
1816         (renamed) build_gimple_modify_stmt_stat.
1817         (build2_gimple_stat): Rename to...
1818         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
1819         Always build a GIMPLE_MODIFY_STMT node.
1820         * tree.h (build2_gimple, build2_gimple_stat): Delete.
1821         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
1822         declarations.
1823
1824         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
1825         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
1826         * tree-complex.c (set_component_ssa_name, expand_complex_move,
1827         expand_complex_div_wide): Likewise.
1828         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
1829         * tree-ssa-loop-im.c (schedule_sm): Likewise.
1830         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
1831         * tree-ssa-loop-manip.c (create_iv): Likewise.
1832         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
1833         abs_replacement): Likewise.
1834         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
1835         realify_fake_stores): Likewise.
1836
1837         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
1838         node rather than a GIMPLE_MODIFY_STMT node.
1839         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
1840         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
1841         Likewise.
1842         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
1843         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
1844         GIMPLE_MODIFY_STMT.
1845
1846 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1847
1848         PR middle-end/30433
1849         * fold-const.c (fold_comparison): Add back the
1850         folding of constant complex comparisions.
1851
1852 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1853
1854         PR middle-end/30729
1855         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
1856         effects unknown to this function, return early.
1857
1858 2007-02-15  Ian Lance Taylor  <iant@google.com>
1859
1860         * lower-subreg.c (move_eh_region_note): New static function.
1861         (resolve_simple_move): Call it.
1862         (decompose_multiword_subregs): Track blocks for which we resolve a
1863         simple move which is also a control flow insn.  Pass them to
1864         find_many_sub_basic_blocks.
1865         (pass_lower_subreg): Add TODO_verify_flow.
1866         (pass_lower_subreg2): Likewise.
1867
1868 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1869             Brooks Moses  <brooks.moses@codesourcery.com>
1870             Lee Millward  <lee.millward@codesourcery.com>
1871
1872         * tree.h (enum tree_code_class): Add tcc_vl_exp.
1873         (VL_EXP_CLASS_P): New.
1874         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
1875         TREE_CODE_LENGTH.
1876         (TREE_OPERAND_CHECK_CODE): Likewise.
1877         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
1878         (TREE_RTL_OPERAND_CHECK): Likewise.
1879         (tree_operand_check_failed): Make second parameter the whole tree
1880         instead of its code.  Fixed callers.
1881         (VL_EXP_CHECK): New.
1882         (TREE_OPERAND_LENGTH): New.
1883         (VL_EXP_OPERAND_LENGTH): New.
1884         (CALL_EXPR_FN): New.
1885         (CALL_EXPR_STATIC_CHAIN): New.
1886         (CALL_EXPR_ARGS): New.
1887         (CALL_EXPR_ARG): New.
1888         (call_expr_nargs): New.
1889         (CALL_EXPR_ARGP): New.
1890         (build_nt_call_list): Declare.
1891         (build_vl_exp_stat): Declare.
1892         (build_vl_exp): New.
1893         (build_call_list): Declare.
1894         (build_call_nary): Declare.
1895         (build_call_valist): Declare.
1896         (build_call_array): Declare.
1897         (call_expr_arg): Declare.
1898         (call_expr_argp): Declare.
1899         (call_expr_arglist): Declare.
1900         (fold_build_call_list): Declare.
1901         (fold_build_call_list_initializer): Declare.
1902         (fold_call_expr): Declare to replace fold_builtin.
1903         (fold_builtin_fputs): Update to agree with modified definition.
1904         (fold_builtin_strcpy): Likewise.
1905         (fold_builtin_strncpy): Likewise.
1906         (fold_builtin_memory_chk): Likewise.
1907         (fold_builtin_stxcpy_chk): Likewise.
1908         (fold_builtin_strncpy_chk): Likewise.
1909         (fold_builtin_next_arg): Likewise.
1910         (fold_build_call_expr): Declare.
1911         (fold_builtin_call_list): Declare.
1912         (fold_builtin_call_valist): Declare.
1913         (build_call_expr): Declare.
1914         (validate_arglist): Update to agree with modified definition.
1915         (tree_operand_length): New.
1916         (call_expr_arg_iterator): New.
1917         (init_call_expr_arg_iterator): New.
1918         (next_call_expr_arg): New.
1919         (first_call_expr_arg): New.
1920         (more_call_expr_args_p): New.
1921         (FOR_EACH_CALL_EXPR_ARG): New.
1922
1923         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
1924         and tcc_gimple_stmt.
1925         (tree_code_size): Update documentation.  Use sizeof (tree) rather
1926         than sizeof (char *).
1927         (tree_size): Likewise.  Add case for tcc_vl_exp.
1928         (tree_node_structure): Add case for tcc_vl_exp.
1929         (contains_placeholder_p): Likewise.
1930         (substitute_in_expr): Likewise.
1931         (substitute_placeholder_in_expr): Likewise.
1932         (stabilize_reference_1): Likewise.
1933         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
1934         to diagnose breakage of this interface for constructing CALL_EXPRs.
1935         (build_nt): Add similar assertion here.
1936         (build_nt_call_list): New.
1937         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
1938         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
1939         TREE_CODE_LENGTH.
1940         (get_callee_fndecl): Use new CALL_EXPR accessors.
1941         (tree_operand_check_failed): Change parameters to pass entire node
1942         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
1943         (process_call_operands): New.
1944         (build_vl_exp_stat): New.
1945         (build_call_list): New.
1946         (build_call_nary): New.
1947         (build_call_valist): New.
1948         (build_call_array): New.
1949         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
1950         (call_expr_arglist): New.
1951
1952         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
1953         tcc_vl_exp instead of a fixed-size tcc_expression.
1954
1955         * doc/c-tree.texi (CALL_EXPR): Document new representation and
1956         accessors for CALL_EXPRs.
1957         (AGGR_INIT_EXPR): Likewise.
1958
1959 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
1960             Brooks Moses  <brooks.moses@codesourcery.com>
1961             Lee Millward  <lee.millward@codesourcery.com>
1962
1963         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
1964         (expand_builtin_nonlocal_goto): Change parameter to be entire
1965         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
1966         (expand_builtin_prefetch): Likewise.
1967         (expand_builtin_classify_type): Likewise.
1968         (mathfn_built_in): Return NULL_TREE instead of 0.
1969         (expand_errno_check): Use new CALL_EXPR accessors.
1970         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
1971         Return NULL_RTX instead of 0.
1972         (expand_builtin_mathfn_2): Likewise.
1973         (expand_builtin_mathfn_3): Likewise.
1974         (expand_builtin_interclass_mathfn): Likewise.
1975         (expand_builtin_sincos): Likewise.
1976         (expand_builtin_cexpi): Likewise.
1977         (expand_builtin_int_roundingfn): Likewise.
1978         (expand_builtin_int_roundingfn_2): Likewise.
1979         (expand_builtin_pow): Likewise.
1980         (expand_builtin_powi): Likewise.
1981         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
1982         of arglist, fixing callers appropriately.  Use new CALL_EXPR
1983         accessors and constructors.  Return NULL_RTX instead of 0.
1984         (expand_builtin_strstr): Likewise.
1985         (expand_builtin_strchr): Likewise.
1986         (expand_builtin_strrchr): Likewise.
1987         (expand_builtin_strpbrk): Likewise.
1988         (expand_builtin_memcpy): Likewise.
1989         (expand_builtin_mempcpy): Likewise.
1990         (expand_builtin_mempcpy_args): New.
1991         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
1992         (expand_builtin_memmove_args): New.
1993         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
1994         (expand_movstr): Likewise.
1995         (expand_builtin_strcpy): Likewise.
1996         (expand_builtin_strcpy_args): New.
1997         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
1998         (expand_builtin_strncpy): Likewise.
1999         (expand_builtin_memset): Likewise.
2000         (expand_builtin_memset_args): New.
2001         (expand_builtin_bzero): Similarly to expand_builtin_memset.
2002         (expand_builtin_memcmp): Likewise.
2003         (expand_builtin_strcmp): Likewise.
2004         (expand_builtin_strncmp): Likewise.
2005         (expand_builtin_strcat): Likewise.
2006         (expand_builtin_strncat): Likewise.
2007         (expand_builtin_strspn): Likewise.
2008         (expand_builtin_strcspn): Likewise.
2009         (expand_builtin_args_info): Likewise.
2010         (expand_builtin_va_start): Likewise.
2011         (gimplify_va_arg_expr): Likewise.
2012         (expand_builtin_va_end): Likewise.
2013         (expand_builtin_va_copy): Likewise.
2014         (expand_builtin_frame_address): Likewise.
2015         (expand_builtin_alloca): Likewise.
2016         (expand_builtin_bswap): Likewise.
2017         (expand_builtin_unop): Likewise.
2018         (expand_builtin_fputs): Likewise.
2019         (expand_builtin_expect): Likewise.
2020         (expand_builtin_fabs): Likewise.
2021         (expand_builtin_copysign): Likewise.
2022         (expand_builtin_printf): Likewise.
2023         (expand_builtin_fprintf): Likewise.
2024         (expand_builtin_sprintf): Likewise.
2025         (expand_builtin_init_trampoline): Likewise.
2026         (expand_builtin_signbit): Likewise.
2027         (expand_builtin_fork_or_exec): Likewise.
2028         (expand_builtin_sync_operation): Likewise.
2029         (expand_builtin_compare_and_swap): Likewise.
2030         (expand_builtin_lock_test_and_set): Likewise.
2031         (expand_builtin_lock_release): Likewise.
2032         (expand_builtin): Likewise.
2033         (builtin_mathfn_code): Likewise.
2034
2035         (fold_builtin_constant_p): Pass call arguments individually instead
2036         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2037         accessors and constructors.  Return NULL_TREE instead of 0.
2038         (fold_builtin_expect): Likewise.
2039         (fold_builtin_classify_type): Likewise.
2040         (fold_builtin_strlen): Likewise.
2041         (fold_builtin_nan): Likewise.
2042         (integer_valued_real_p): Likewise.
2043         (fold_trunc_transparent_mathfn): Likewise.
2044         (fold_fixed_mathfn): Likewise.
2045         (fold_builtin_cabs): Likewise.
2046         (fold_builtin_sqrt): Likewise.
2047         (fold_builtin_cbrt): Likewise.
2048         (fold_builtin_cos): Likewise.
2049         (fold_builtin_cosh): Likewise.
2050         (fold_builtin_tan): Likewise.
2051         (fold_builtin_sincos): Likewise.
2052         (fold_builtin_cexp): Likewise.
2053         (fold_builtin_trunc): Likewise.
2054         (fold_builtin_floor): Likewise.
2055         (fold_builtin_ceil): Likewise.
2056         (fold_builtin_round): Likewise.
2057         (fold_builtin_int_roundingfn): Likewise.
2058         (fold_builtin_bitop): Likewise.
2059         (fold_builtin_bswap): Likewise.
2060         (fold_builtin_logarithm): Likewise.
2061         (fold_builtin_hypot): Likewise.
2062         (fold_builtin_pow): Likewise.
2063         (fold_builtin_powi): Likewise.
2064         (fold_builtin_exponent): Likewise.
2065         (fold_builtin_memset): Likewise.
2066         (fold_builtin_bzero): Likewise.
2067         (fold_builtin_memory_op): Likewise.
2068         (fold_builtin_bcopy): Deleted; call site changed to invoke
2069         fold_builtin_memory_op directly.
2070         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
2071         (fold_builtin_strncpy): Likewise.
2072         (fold_builtin_memcmp): Likewise.
2073         (fold_builtin_strcmp): Likewise.
2074         (fold_builtin_strncmp): Likewise.
2075         (fold_builtin_signbit): Likewise.
2076         (fold_builtin_copysign): Likewise.
2077         (fold_builtin_isascii): Likewise.
2078         (fold_builtin_toascii): Likewise.
2079         (fold_builtin_isdigit): Likewise.
2080         (fold_builtin_fabs): Likewise.
2081         (fold_builtin_abs): Likewise.
2082         (fold_builtin_fmin_fmax): Likewise.
2083         (fold_builtin_carg): Likewise.
2084         (fold_builtin_classify): Likewise.
2085         (fold_builtin_unordered_cmp): Likewise.
2086
2087         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
2088         New functions split out from fold_builtin_1.
2089         (fold_builtin_n): New.
2090         (fold_builtin_varargs): New.
2091         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
2092         instead.
2093         (fold_call_expr): New.
2094         (build_function_call_expr): Rewrite to use new helper function.
2095         (fold_builtin_call_list): New.
2096         (build_call_expr): New.
2097         (fold_builtin_call_valist): New.
2098         (rewrite_call_expr): New.
2099         (validate_arg): New.
2100         (validate_arglist): Change parameter to be entire CALL_EXPR instead
2101         of an arglist.  Change return type to bool.  Use new CALL_EXPR
2102         accessors.
2103
2104         (fold_builtin_strstr):  Pass call arguments individually instead
2105         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2106         accessors and constructors.  Return NULL_TREE instead of 0.
2107         (fold_builtin_strchr): Likewise.
2108         (fold_builtin_strrchr): Likewise.
2109         (fold_builtin_strpbrk): Likewise.
2110         (fold_builtin_strcat): Likewise.
2111         (fold_builtin_strncat): Likewise.
2112         (fold_builtin_strspn): Likewise.
2113         (fold_builtin_strcspn): Likewise.
2114         (fold_builtin_fputs): Likewise.
2115         (fold_builtin_next_arg): Likewise.
2116         (fold_builtin_sprintf): Likewise.
2117
2118         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
2119         NULL_RTX instead of 0.
2120         (expand_builtin_memory_chk): Likewise.
2121         (maybe_emit_chk_warning): Likewise.
2122         (maybe_emit_sprintf_chk_warning): Likewise.
2123
2124         (fold_builtin_object_size): Pass call arguments individually instead
2125         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2126         accessors and constructors.  Return NULL_TREE instead of 0.
2127         (fold_builtin_memory_chk): Likewise.
2128         (fold_builtin_stxcpy_chk): Likewise.
2129         (fold_builtin_strncpy_chk): Likewise.
2130         (fold_builtin_strcat_chk): Likewise.
2131         (fold_builtin_strcat_chk): Likewise.
2132         (fold_builtin_strncat_chk): Likewise.
2133         (fold_builtin_sprintf_chk): Likewise.
2134         (fold_builtin_snprintf_chk): Likewise.
2135         (fold_builtin_printf): Likewise.
2136         (fold_builtin_vprintf): Likewise.
2137
2138         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
2139         constructors.
2140         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
2141         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2142         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
2143         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
2144         (fold_unary): Likewise.
2145         (fold_binary): Likewise.
2146         (fold_ternary): Remove CALL_EXPR case, since they are no longer
2147         ternary expressions.
2148         (fold): Add logic for tcc_vl_exp.
2149         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
2150         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2151         (fold_build3_stat): Add assertion to flag broken interface for
2152         constructing CALL_EXPRs.
2153         (fold_build_call_list): New.
2154         (fold_build_call_list_initializer): New.
2155         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
2156         constructors.
2157         (fold_strip_sign_ops): Likewise.
2158
2159 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2160             Brooks Moses  <brooks.moses@codesourcery.com>
2161             Lee Millward  <lee.millward@codesourcery.com>
2162
2163         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
2164         accessors and dump arguments explicitly.
2165
2166         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
2167         TREE_CODE_LENGTH.
2168         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
2169         explicitly.
2170         (print_call_name): Use new CALL_EXPR accessors.
2171
2172         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
2173         CALL_EXPR arguments explicitly instead of as a list.  Use
2174         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2175
2176         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
2177         (vrp_visit_stmt): Likewise.
2178
2179         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
2180         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
2181         TREE_CODE_LENGTH.
2182         (force_move_till_expr): Likewise.
2183
2184         * targhooks.c (default_external_stack_protect_fail): Use
2185         build_call_expr instead of build_function_call_expr.
2186         (default_hidden_stack_protect_fail): Likewise.
2187
2188         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
2189         build the call.
2190
2191         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
2192         and walk arguments explicitly.
2193
2194         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
2195         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2196         (expand_simple_operations): Likewise.
2197         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
2198
2199         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
2200         of TREE_CODE_LENGTH.
2201         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
2202
2203         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
2204         instead of TREE_CODE_LENGTH.
2205
2206         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
2207         (tree_ic_transform): Likewise.
2208         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
2209         parameter instead of arglist.  Fix callers.
2210         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
2211         (tree_stringops_transform): Likewise.
2212         (tree_indirect_call_to_profile): Likewise.
2213         (tree_stringops_values_to_profile): Likewise.
2214
2215         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
2216         (eliminate_tail_call): Likewise.
2217
2218         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
2219
2220         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
2221         Use TREE_OPERAND_LENGTH and generalize to handle any number of
2222         operands.
2223         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
2224
2225         * omp-low.c (build_omp_barrier): Use build_call_expr.
2226         (lower_rec_input_clauses): Likewise.
2227         (lower_reduction_clauses): Likewise.
2228         (expand_parallel_call): Likewise.
2229         (maybe_catch_exception): Likewise.
2230         (expand_omp_for_generic): Likewise.
2231         (expand_omp_for_static_nochunk): Likewise.
2232         (expand_omp_sections): Likewise.
2233         (lower_omp_single_simple): Likewise.
2234         (lower_omp_single_copy): Likewise.
2235         (lower_omp_master): Likewise.
2236         (lower_omp_ordered): Likewise.
2237         (lower_omp_critical): Likewise.
2238
2239         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
2240         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
2241
2242         * tree-gimple.c (is_gimple_call_addr): Fix doc.
2243         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
2244         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
2245
2246         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
2247         and generalize to handle any number of operands.
2248         (chrec_contains_undetermined): Likewise.
2249         (tree_contains_chrecs): Likewise.
2250         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
2251
2252         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
2253
2254         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
2255         fold_call_expr instead of fold_builtin.
2256         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
2257         match declarations there.
2258         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
2259         updates.
2260
2261         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
2262         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2263
2264         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
2265         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
2266
2267         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
2268         accessors.
2269
2270         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
2271         (execute_cse_sincos): Use new CALL_EXPR accessors.
2272
2273         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
2274
2275         * gimple-low.c (lower_function_body): Use build_call_expr.
2276         (lower_builtin_setjmp): Likewise.
2277
2278         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
2279         (set_storage_via_libcall): Likewise.
2280         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
2281         instead of TREE_CODE_LENGTH.
2282         (expand_expr_real_1): Use new CALL_EXPR accessors.
2283
2284         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
2285         generalize to handle any number of operands.
2286         (TB_parent_eq): Likewise.
2287
2288         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
2289         (strip_builtin_expect): Likewise.
2290
2291         * function.c (gimplify_parameters): Use build_call_expr.
2292
2293         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
2294         instead of TREE_CODE_LENGTH.
2295
2296         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
2297         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
2298
2299         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
2300         iterators.
2301
2302         * gimplify.c (build_stack_save_restore): Use build_call_expr.
2303         (gimplify_decl_expr): Likewise.
2304         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
2305         Use new CALL_EXPR iterators.
2306         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
2307         (gimplify_modify_expr_to_memset): Likewise.
2308         (gimplify_variable_sized_compare): Likewise.
2309         (gimplify_omp_atomic_fetch_op): Likewise.
2310         (gimplify_omp_atomic_pipeline): Likewise.
2311         (gimplify_omp_atomic_mutex): Likewise.
2312         (gimplify_function_tree): Likewise.
2313
2314         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
2315         (call_expr_flags): Likewise.
2316         (expand_call): Likewise.
2317
2318         * except.c (expand_builtin_eh_return_data_regno): Pass entire
2319         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2320         accessors.
2321
2322         * coverage.c (create_coverage): Use build_call_expr.
2323
2324         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
2325         (temp_call_expr_obstack): New.
2326         (pool_copy_list): Delete.
2327         (temp_copy_call_expr): New.
2328         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
2329         CALL_EXPR accessors.  Get rid of special goo for copying argument
2330         lists and use temp_copy_call_expr instead.
2331         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
2332         CALL_EXPR accessors.
2333         (create_expression_by_pieces): Likewise.  Use build_call_array
2334         to construct the result instead of fold_build3.
2335         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
2336         dealing with argument lists.
2337         (init_pre): Remove references to expression_node_pool and
2338         list_node_pool.  Init temp_call_expr_obstack instead.
2339         (fini_pre): Remove references to expression_node_pool and
2340         list_node_pool.
2341
2342         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
2343         and walk arguments explicitly instead of as a list.
2344
2345         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
2346         (mx_register_decls): Likewise.
2347         (mudflap_register_call): Likewise.
2348         (mudflap_finish_file): Likewise.
2349
2350         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
2351         (ipa_callsite_compute_param): Likewise.
2352
2353         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
2354         accessors and constructor.
2355
2356         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
2357         accessors and constructor.
2358         (convert_tramp_reference): Likewise.
2359         (convert_call_expr): Likewise.
2360         (finalize_nesting_tree_1): Likewise.
2361
2362         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
2363         accessors.
2364
2365         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
2366
2367         * tree-inline.c (initialize_inlined_parameters): Pass entire
2368         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2369         accessors.
2370         (estimate_num_insns_1): Use new CALL_EXPR accessors.
2371         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
2372
2373         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
2374         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2375         (vectorizable_reduction): Likewise.
2376         (vectorizable_call): Use new CALL_EXPR iterators.
2377         (vectorizable_conversion): Use build_call_expr.
2378         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
2379         (vect_gen_widened_results_half): Use build_call_expr.
2380         (vect_setup_realignment): Likewise.
2381         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
2382
2383         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
2384         (pass_through_call): Likewise.
2385         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
2386         fold_builtin.
2387
2388         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
2389         (tree_gen_pow2_profiler): Likewise.
2390         (tree_gen_one_value_profiler): Likewise.
2391         (tree_gen_ic_func_profiler): Likewise.
2392         (tree_gen_average_profiler): Likewise.
2393         (tree_gen_ior_profiler): Likewise.
2394
2395         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
2396         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
2397         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2398
2399         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
2400         of TREE_CODE_LENGTH.
2401
2402         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
2403         of TREE_CODE_LENGTH.
2404
2405         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
2406         constructor.
2407         (convert_to_integer): Likewise.
2408
2409         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
2410         accessors.
2411
2412 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2413             Brooks Moses  <brooks.moses@codesourcery.com>
2414             Lee Millward  <lee.millward@codesourcery.com>
2415
2416         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
2417         accessors.
2418         * config/frv/frv.c (frv_expand_builtin): Likewise.
2419         * config/s390/s390.c (s390_expand_builtin): Likewise.
2420
2421         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
2422         (sparc_expand_builtin): Use new CALL_EXPR accessors.
2423
2424         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
2425         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
2426         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
2427         (ix86_expand_store_builtin): Likewise.
2428         (ix86_expand_unop_builtin): Likewise.
2429         (ix86_expand_unop1_builtin): Likewise.
2430         (ix86_expand_sse_compare): Likewise.
2431         (ix86_expand_sse_comi): Likewise.
2432         (ix86_expand_vec_init_builtin): Likewise.
2433         (ix86_expand_vec_ext_builtin): Likewise.
2434         (ix86_expand_vec_set_builtin): Likewise.
2435         (ix86_expand_builtin): Use new CALL_EXPR accessors.
2436
2437         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
2438         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
2439
2440         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
2441         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2442         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
2443
2444         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
2445         build_call_expr.
2446         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
2447         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
2448         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2449         (altivec_expand_abs_builtin): Likewise.
2450         (rs6000_expand_binop_builtin): Likewise.
2451         (altivec_expand_predicate_builtin): Likewise.
2452         (altivec_expand_lv_builtin): Likewise.
2453         (spe_expand_stv_builtin): Likewise.
2454         (altivec_expand_stv_builtin): Likewise.
2455         (rs6000_expand_ternop_builtin): Likewise.
2456         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
2457         (altivec_expand_st_builtin): Likewise.
2458         (altivec_expand_dst_builtin): Likewise.
2459         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
2460         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2461         (altivec_expand_vec_set_builtin): Likewise.
2462         (altivec_expand_vec_ext_builtin): Likewise.
2463         (altivec_expand_builtin): Use new CALL_EXPR accessors.
2464         (spe_expand_builtin): Likewise.
2465         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
2466         arglist.  Use new CALL_EXPR accessors.  Fix callers.
2467         (spe_expand_evsel_builtin): Likewise.
2468         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
2469         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
2470
2471         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
2472         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2473         (arm_expand_unop_builtin): Likewise.
2474         (arm_expand_builtin): Use new CALL_EXPR accessors.
2475
2476         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
2477         accessors.
2478
2479         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
2480         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
2481         (bfin_expand_unop_builtin): Likewise.
2482         (bfin_expand_builtin): Use new CALL_EXPR accessors.
2483
2484 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2485             Brooks Moses  <brooks.moses@codesourcery.com>
2486             Lee Millward  <lee.millward@codesourcery.com>
2487
2488         * c-semantics.c (build_stmt): Add internal diagnostic check.
2489
2490         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
2491         accessors.  Print arguments explicitly instead of as a list.
2492
2493         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
2494
2495         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
2496         (c_finish_omp_flish): Likewise.
2497
2498         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
2499         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
2500         instead of TREE_CODE_LENGTH.
2501         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
2502         (c_warn_unused_result): Likewise.
2503
2504 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2505
2506         PR c/26494
2507         * doc/invoke.texi (Warning Options): Remove
2508         -Werror-implicit-function-declaration.
2509         (Wimplicit-function-declaration): Update description.
2510         * opts.c (common_handle_option): Move handling of -Werror=* to...
2511         (enable_warning_as_error): ...here.
2512         * opts.h (enable_warning_as_error): Declare.
2513         * c-decl.c (implicit_decl_warning): Unless
2514         -Wno-implicit-function-declaration is given, emit a pedwarn if
2515         -std=c99 or emit a warning if -Wimplicit-function-declaration.
2516         * c.opt (Wimplicit-function-declaration): Replace
2517         mesg_implicit_function_declaration with
2518         warn_implicit_function_declaration.
2519         * c-opts.c (c_common_handle_option):
2520         -Werror-implicit-function-declaration is exactly equal as
2521         -Werror=implicit-function-declaration.
2522         (set_Wimplicit): Replace mesg_implicit_function_declaration with
2523         warn_implicit_function_declaration.
2524         (c_common_post_options): -Wimplict-function-declaration is enabled
2525         by default by -std=c99, otherwise is disabled by default.
2526         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
2527
2528 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2529
2530         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
2531         DECL on the rhs to a DECL on the lhs for debug info purposes if the
2532         former is ignored but not the latter.
2533
2534 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
2535
2536         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
2537         is made and the reference doesn't use the alias set of its type,
2538         do not create the temporary using that type.
2539
2540 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
2541
2542         * jump.c: Remove prototypes for delete_computation and
2543         delete_prior_computation.
2544
2545 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
2546
2547         * jump.c (get_label_after): Delete.
2548         (get_label_before, delete_computation, delete_jump,
2549         delete_prior_computation, follow_jumps): Move...
2550         * reorg.c (delete_computation, delete_prior_computation): ... here...
2551         (get_label_before, delete_jump): ... making these static ...
2552         (follow_jumps): ... and simplifying this since it only runs after
2553         reload.
2554         * rtl.h (get_label_after, get_label_before, delete_jump,
2555         follow_jumps): Delete prototypes.
2556
2557 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
2558
2559         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
2560
2561 2007-02-15  Nick Clifton  <nickc@redhat.com>
2562
2563         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
2564         order to prevent it from being munged by the target.
2565
2566 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
2567
2568         * config/i386/i386.md: Remove misleading comment.
2569
2570 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2571
2572         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
2573         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
2574         invalid patterns.
2575
2576 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2577
2578         * tree-sra.c (instantiate_missing_elements): Canonicalize
2579         bit-field types.
2580         (sra_build_assignment): New.
2581         (generate_copy_inout, generate_element_copy,
2582         generate_element_zero, generate_one_element_init): Use it.
2583
2584 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2585
2586         * tree-sra.c (instantiate_missing_elements): Canonicalize
2587         bit-field types.
2588         (sra_build_assignment): New.
2589         (generate_copy_inout, generate_element_copy,
2590         generate_element_zero, generate_one_element_init): Use it.
2591
2592 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
2593
2594         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
2595         limbo die nodes.
2596
2597 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
2598
2599         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
2600         types as aggregates not scalars.
2601         * function.c (assign_stack_temp_for_type): Likewise.
2602
2603 2007-02-14  Roger Sayle  <roger@eyesopen.com>
2604             Zdenek Dvorak  <dvorakz@suse.cz>
2605
2606         * tree-dump.c (dump_switch_p_1): Require exact match of the option
2607         name.
2608
2609 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
2610
2611         * passes.c (next_pass_1): Clear the next field of the copied
2612         pass structure.
2613
2614 2007-02-14  Richard Henderson  <rth@redhat.com>
2615
2616         * tree-sra.c (early_sra): New.
2617         (decl_can_be_decomposed_p): Deny va_list if early_sra.
2618         (tree_sra_early, pass_sra_early): New.
2619         * tree-pass.h (pass_sra_early): Declare.
2620         * passes.c (init_optimization_passes): Use it.
2621
2622 2007-02-14  Richard Guenther  <rguenther@suse.de>
2623
2624         * flags.h (issue_strict_overflow_warning): Convert to a macro.
2625
2626 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
2627
2628          PR tree-optimization/30771
2629         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
2630         also phi nodes.
2631         (vect_analyze_operations): Induction phis can now be marked as
2632         used_in_loop.
2633         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
2634         Update documentation accordingly.
2635
2636 2007-02-14  Nick Clifton  <nickc@redhat.com>
2637
2638         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
2639         most 3 arguments are supported.
2640         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
2641
2642 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
2643
2644         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
2645         Ensure dst->current is valid.
2646
2647 2007-02-13  Paul Brook  <paul@codesourcery.com>
2648
2649         * config.gcc: Add arm*-*-uclinux-*eabi.
2650         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
2651         (SUBTARGET_EXTRA_LINK_SPEC): Define.
2652         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
2653         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
2654         (LINK_SPEC): Define.
2655         (LIB_SPEC): Define.
2656         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
2657         register.
2658         * config/arm/uclinux-eabi.h: New file.
2659         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
2660         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
2661         based targets.
2662
2663 2007-02-13  Ian Lance Taylor  <iant@google.com>
2664
2665         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
2666         * flags.h (warn_strict_overflow): Declare.
2667         (enum warn_strict_overflow_code): Define.
2668         (issue_strict_overflow_warning): New static inline function.
2669         * opts.c (warn_strict_overflow): New variable.
2670         (common_handle_option): Handle OPT_Wstrict_overflow and
2671         OPT_Wstrict_overflow_.
2672         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
2673         OPT_Wall.
2674         * fold-const.c: Include intl.h.
2675         (fold_deferring_overflow_warnings): New static variable.
2676         (fold_deferred_overflow_warning): New static variable.
2677         (fold_deferred_overflow_code): New static variable.
2678         (fold_defer_overflow_warnings): New function.
2679         (fold_undefer_overflow_warnings): New function.
2680         (fold_undefer_and_ignore_overflow_warnings): New function.
2681         (fold_deferring_overflow_warnings_p): New function.
2682         (fold_overflow_warning): New static function.
2683         (make_range): Add strict_overflow_p parameter.  Change all
2684         callers.
2685         (extract_muldiv, extract_muldiv_1): Likewise.
2686         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
2687         tree_expr_nonnegative_p.
2688         (fold_negate_expr): Call fold_overflow_warning.
2689         (fold_range_test): Likewise.
2690         (fold_comparison): Likewise.
2691         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
2692         instead of tree_expr_nonnegative_p.
2693         (tree_expr_nonnegative_warnv_p): Rename from
2694         tree_expr_nonnegative_p, add strict_overflow_p parameter.
2695         (tree_expr_nonnegative_p): New function.
2696         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
2697         strict_overflow_p parameter.
2698         (tree_expr_nonzero_p): New function.
2699         * passes.c (verify_interpass_invariants): New static function.
2700         (execute_one_pass): Call it.
2701         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
2702         warnings.
2703         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
2704         (estimate_numbers_of_iterations): Likewise.
2705         (scev_probably_wraps_p): Likewise.
2706         * tree-ssa-ccp.c: Include "toplev.h".
2707         (evaluate_stmt): Defer fold overflow warnings until we know we are
2708         going to optimize.
2709         (struct fold_stmt_r_data): Add stmt field.
2710         (fold_stmt_r): Defer fold overflow warnings until we know we
2711         optimized.
2712         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
2713         (fold_stmt_inplace): Likewise.
2714         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
2715         (cleanup_control_expr_graph): Defer fold overflow warnings until
2716         we know we are going to optimize.
2717         * tree-cfg.c (fold_cond_expr_cond): Likewise.
2718         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
2719         Likewise.
2720         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
2721         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
2722         * tree-ssa-loop-manip.c (create_iv): Likewise.
2723         * c-typeck.c (build_conditional_expr): Likewise.
2724         (build_binary_op): Likewise.
2725         * tree-vrp.c (vrp_expr_computes_nonzero): Call
2726         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
2727         (extract_range_from_unary_expr): Likewise.
2728         * simplify-rtx.c (simplify_const_relational_operation): Warn when
2729         assuming that signed overflow does not occur.
2730         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
2731         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
2732         (fold_defer_overflow_warnings): Declare.
2733         (fold_undefer_overflow_warnings): Declare.
2734         (fold_undefer_and_ignore_overflow_warnings): Declare.
2735         (fold_deferring_overflow_warnings_p): Declare.
2736         (tree_expr_nonzero_warnv_p): Declare.
2737         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
2738         of warning options.
2739         (Warning Options): Document -Wstrict-overflow.
2740         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
2741         (tree-ssa-ccp.o): Likewise.
2742         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
2743         (fold-const.o): Depend on intl.h.
2744
2745 2007-02-13  Ian Lance Taylor  <iant@google.com>
2746
2747         PR middle-end/30751
2748         * lower-subreg.c (resolve_simple_move): Decompose subregs in
2749         addresses.
2750
2751 2007-02-13  Stuart Hastings  <stuart@apple.com>
2752
2753         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
2754
2755 2007-02-13  Richard Henderson  <rth@redhat.com>
2756
2757         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
2758         handled_component_p before looking for the indirect_ref.
2759
2760 2007-02-13  Richard Henderson  <rth@redhat.com>
2761
2762         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
2763         remove flags clobber.
2764         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
2765         (bswaphi_lowpart): New.
2766         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
2767         remove TARGET_BSWAP test.  Delete expander of the same name.
2768
2769         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
2770         (expand_unop): Use them.
2771
2772 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
2773
2774         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
2775         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
2776         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
2777         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
2778         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
2779         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
2780         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
2781         assembler dialect choice from asm templates.
2782
2783 2007-02-12  Richard Henderson  <rth@redhat.com>
2784
2785         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
2786         (fixuns_trunc<SSEMODEF>si2): Use it.
2787         * config/i386/sse.md (vec_setv4sf_0): Export.
2788         * config/i386/i386.c (ix86_build_const_vector): Export.
2789         (ix86_split_convert_uns_si_sse): Rename from
2790         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
2791         * config/i386/i386-protos.h: Update.
2792
2793 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2794
2795         PR c/29521
2796         * c-typeck.c (c_finish_return): Improve warning message.
2797
2798 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2799
2800         * alias.c (find_symbolic_term): Delete unused function.
2801
2802 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
2803
2804         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
2805         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
2806         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
2807
2808 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2809
2810         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
2811         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
2812         the function, temporarily point the debug interface to the null one.
2813
2814 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
2815
2816         * dwarf2out.c (round_up_to_align): New static function.
2817         (field_byte_offset): Use it to round the offset.
2818
2819 2007-02-12  Richard Henderson  <rth@redhat.com>
2820
2821         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
2822         (inswl_const): Export.
2823
2824 2007-02-12  Richard Henderson  <rth@redhat.com>
2825
2826         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
2827         result mode of the libcall, convert back to outmode.
2828
2829 2007-02-12  Roger Sayle  <roger@eyesopen.com>
2830
2831         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
2832         (bswapdi2): New define_expand to implement 32-bit implementation.
2833
2834 2007-02-12  Nick Clifton  <nickc@redhat.com>
2835
2836         * doc/invoke.texi (Overall Options): Document --help=.
2837         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
2838         (cc1_options): Pass --help= on to cc1.
2839         (display_help): Add description of --help=.
2840         (process_command): Add code to handle --help=.  Allow translated
2841         --help and --target-help switches to be passed on to compiler
2842         sub-process.
2843         (main): Remove unused if statement.
2844         * opts.c (columns): Remove.
2845         (LEFT_COLUMN): Define.
2846         (wrap_help): Add columns argument.
2847         (print_filtered_help): Change parameters to be an include bitmask,
2848         an exclude bitmask, an any bitmask and the column width.  Move the
2849         code to display the params list here.  Add code to display the
2850         status of options rather than their descriptions if the quiet flag
2851         is not active.
2852         (print_specific_help): Change parameters to be an include bitmask,
2853         an exclude bitmask and an any bitmask.  Move code to look up the
2854         column width here.  Decide upon the title for an options listing.
2855         (common_handle_options): Add code to handle --help=.  Adapt code
2856         for --help and --target-help to use the revised form of the
2857         print_specific_help function.
2858         (print_help): Delete.
2859         (print_param_help): Delete.
2860         (print_switch): Delete.
2861         * opts.h (cl_lang_count): Add prototype.
2862         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
2863         CL_MAX_OPTION_CLASS): New defines.
2864         * optc-gen.awk: Add construction of cl_lang_count.
2865         * c.opt: Add Warning attribute to warning options and Optimization
2866         attribute to optimization options.
2867         * common.opt: Likewise.
2868         Add --help=.
2869         Add -fhelp and -ftarget-help as aliases for the transformed --help
2870         and --target-help options.
2871         * opt-functions.awk: Add code to handle Warning and Optimization
2872         attributes.
2873
2874 2007-02-12  Richard Henderson  <rth@redhat.com>
2875
2876         * config/alpha/constraints.md: New file.
2877         * config/alpha/alpha.c: Include tm-constrs.h.
2878         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
2879         alpha_extra_constraint): Remove.
2880         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
2881         * config/alpha/alpha-protos.h: Update.
2882         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
2883         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
2884         (EXTRA_CONSTRAINT): Remove.
2885         * config/alpha/alpha.md: Include constraints.md.
2886         (adddi splitter): Use satisfies_constraint_*.
2887         * config/alpha/predicates.md (add_operand): Likewise.
2888         (sext_add_operand, addition_operation): Likewise.
2889
2890 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
2891
2892         PR tree-optimization/29145
2893         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
2894         in our handling of restrict qualified pointers.
2895
2896 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2897
2898         PR middle-end/7651
2899         * doc/invoke.texi (Wunused-value): Update description.
2900         (Wextra): Delete item.
2901         * opts.c (set_Wextra): Don't use the value of Wextra to set the
2902         value of Wunused-value.
2903         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
2904         (c_finish_stmt_expr): Don't check extra_warnings.
2905         (emit_side_effect_warnings): The caller is responsible to check
2906         warn_unused_value.
2907
2908 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2909             Matt Thomas  <matt@3am-software.com>
2910
2911         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
2912
2913 2007-02-11  Roger Sayle  <roger@eyesopen.com>
2914
2915         * simplify-rtx.c (simplify_relational_operation_1): Optimize
2916         comparisons of POPCOUNT against zero.
2917         (simplify_const_relational_operation): Likewise.
2918
2919 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2920
2921         * doc/invoke.texi (Wextra): Delete outdated paragraph.
2922
2923 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2924
2925         * dwarf2out.c (root_type): Delete unused function.
2926
2927 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2928
2929         * genattrtab.c (contained_in_p): Delete unused function.
2930         (write_expr_attr_cache): Likewise.
2931
2932 2007-02-11  Jan Hubicka  <jh@suse.cz>
2933
2934         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
2935         previous patch.
2936
2937 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
2938
2939         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
2940         to add the REG_EQ* note.
2941         * see.c (see_merge_one_use_extension): Likewise.
2942         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
2943         turn REG_EQUAL notes into REG_EQUIV notes if the target
2944         register may have more than one set.
2945         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
2946         * gcse.c (try_replace_reg): Likewise.
2947         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
2948         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
2949         more than one REG_EQUIV note.
2950         * reload1.c (gen_reload): Use set_unique_reg_note.
2951
2952 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
2953
2954         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
2955         (ix86_builtin_conversion): New function.
2956
2957 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
2958
2959         PR target/29487
2960         * tree.h (DECL_REPLACEABLE_P): New macro.
2961         * except.c (set_nothrow_function_flags): Likewise.
2962
2963 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
2964             Ira Rosen  <irar@il.ibm.com>
2965             Dorit Nuzman  <dorit@il.ibm.com>
2966
2967         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
2968         * targhooks.c (default_builtin_vectorized_conversion): New.
2969         * targhooks.h (default_builtin_vectorized_function): New declaration.
2970         * target.h (struct vectorize): Add builtin_conversion field.
2971         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
2972         stmt_vec_info_type value.
2973         (vectorizable_conversion): New declaration.
2974         * tree-vect-analyze.c (vect_analyze_operations): Add
2975         vectorizable_conversion call.
2976         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
2977         * tree-vect-transform.c (vectorizable_conversion): New function.
2978         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
2979         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
2980         mode.
2981         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
2982         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
2983         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
2984         or ALTIVEC_BUILTIN_VCFSX.
2985
2986 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2987
2988         PR target/30634
2989         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
2990         CONST_DOUBLE and operand 0 is a hard register.
2991         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
2992         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
2993         is a hard floating-point register.
2994
2995 2007-02-10  Richard Henderson  <rth@redhat.com>
2996             Jakub Jelinek  <jakub@redhat.com>
2997             Alexandre Oliva  <aoliva@redhat.com>
2998
2999         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
3000         * builtin-types.def (BT_WORD): Make unsigned.
3001         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
3002         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
3003         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
3004         * c-decl.c (grokdeclarator): Don't error if !have_tls.
3005         * c-parser.c (c_parser_omp_threadprivate): Likewise.
3006         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
3007         emulated tls.
3008         * expr.c (emutls_var_address): New.
3009         (expand_expr_real_1): Expand emulated tls.
3010         (expand_expr_addr_expr_1): Likewise.
3011         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
3012         * output.h (emutls_finish): Declare.
3013         * toplev.c (compile_file): Call it.
3014         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
3015         address before wrapping in CONST.
3016         * varasm.c (emutls_htab, emutls_object_type): New.
3017         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
3018         (get_emutls_object_name, get_emutls_object_type): New.
3019         (get_emutls_init_templ_addr, emutls_decl): New.
3020         (emutls_common_1, emutls_finish): New.
3021         (assemble_variable): When emulating tls, swap decls; generate
3022         constructor for the emutls objects.
3023         (do_assemble_alias): When emulating tls, swap decl and target name.
3024         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
3025         for emulated tls.
3026         * varpool.c (decide_is_variable_needed): Look at force_output.
3027         Recurse for emulated tls.
3028         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
3029         with decide_is_variable_needed.
3030         * emutls.c: New file.
3031         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
3032         tls_object for real tls.
3033
3034 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3035
3036         PR rtl-optimization/29599
3037         * reload1.c (eliminate_regs_in_insn): Take the destination
3038         mode into account when computing the offset.
3039
3040 2007-02-09  Stuart Hastings  <stuart@apple.com>
3041             Richard Henderson  <rth@redhat.com>
3042
3043         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
3044         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
3045         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
3046         fixuns_truncdfhi2): New.
3047         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
3048         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
3049         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
3050         (floatunssidf2): Allow nonimmediate source.
3051         * gcc/config/i386/sse.md (movdi_to_sse): New.
3052         (vec_concatv2di): Drop '*'.
3053         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
3054         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
3055         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
3056         New.
3057         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
3058         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
3059         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
3060         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
3061         (ix86_build_signbit_mask): Fix decl of v, refactor to call
3062         ix86_build_const_vector.
3063         (x86_emit_floatuns): Rewrite.
3064
3065 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3066
3067         * genautomata.c (longest_path_length): Delete unused function.
3068         (struct state): Delete unused longest_path_length.
3069         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
3070         (get_free_state): Delete unused.
3071
3072 2007-02-09  Jan Hubicka  <jh@suse.cz>
3073
3074         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
3075         * doc/invoke.texi (inline-unit-growth): Update default value.
3076
3077         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
3078         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
3079         (rebuild_cgraph_edges): Likewise.
3080         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
3081         (dump_cgraph_node): Dump frequencies.
3082         (cgraph_clone_edge): Add frequency scales.
3083         (cgraph_clone_node): Add freuqnecy.
3084         * cgraph.h (cgraph_edge): Add freuqnecy argument.
3085         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
3086         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
3087         * tree-pass.h (TODO_rebuild_frequencies): New constant.
3088         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
3089         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
3090         (save_inline_function_body): Likewise.
3091         * ipa-inline.c: inluce rtl.h
3092         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
3093         (cgraph_edge_badness): Use frequencies.
3094         (cgraph_decide_recursive_inlining): Update clonning.
3095         (cgraph_decide_inlining_of_small_function): Dump frequency.
3096         * predict.c (estimate_bb_frequencies): Export.
3097         * predict.h (estimate_bb_frequencies): Declare.
3098         * tree-inline.c (copy_bb): Watch overflows.
3099         (expand_call_inline): Update call of cgraph_create_edge.
3100         (optimize_inline_calls): Use TODO flags to update frequnecies.
3101         * passes.h: Include predict.h
3102         (init_optimization_passes): Move profile ahead.
3103         (execute_function_todo): Handle TODO_rebuild_frequencies.
3104
3105 2007-02-09  Roger Sayle  <roger@eyesopen.com>
3106
3107         * config/alpha/alpha.c (emit_insxl): Force the first operand of
3108         the insbl or inswl pattern into a register.
3109
3110 2007-02-09  Roger Sayle  <roger@eyesopen.com>
3111
3112         * config/ia64/ia64.md (bswapdi2): New define_insn.
3113
3114 2007-02-09  Richard Henderson  <rth@redhat.com>
3115
3116         * config/i386/constraints.md (Ym): New constraint.
3117         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
3118         (movdi_1_rex64): Split sse and xmm general register moves from
3119         memory move alternatives.  Use conditional register constraints.
3120         (movsf_1, movdf_integer): Likewise.
3121         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
3122         (movdf_integer_rex64): New.
3123         (pushsf_rex64): Fix output constraints.
3124         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
3125         (sse2_stored): Likewise.
3126         (sse2_storeq_rex64): New.
3127         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
3128         amd and not generic.
3129         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
3130         for optimize_size.  Remove SF/DFmode hack.
3131
3132 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3133
3134         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
3135         (bit_SSE4a): New.
3136
3137 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
3138             Richard Sandiford  <richard@codesourcery.com>
3139
3140         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
3141         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
3142         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
3143         m68k/t-mlib to tmake_file.
3144         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
3145         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
3146         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
3147         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
3148         variable is not empty, add t-$m68k_arch_family to tmake_file.
3149         Add t-mlibs to tmake_file.
3150         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
3151         * config/m68k/t-cf: New file.
3152         * config/m68k/t-m68k: Likewise.
3153         * config/m68k/t-mlibs: Likewise.
3154         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
3155         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
3156         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
3157         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
3158         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
3159         Delete.
3160         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
3161         (INSTALL_LIBGCC): Delete.
3162         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
3163         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
3164         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
3165         (M68K_MLIB_CPU): Define.
3166         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
3167         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
3168         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
3169
3170 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
3171             Richard Guenther  <rguenther@suse.de>
3172
3173         PR middle-end/23361
3174         * fold-const.c (fold_comparison): Handle obfuscated comparisons
3175         against INT_MIN/INT_MAX.
3176         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
3177         file if a loop is removed.
3178
3179 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
3180
3181         * calls.c (store_one_arg): Pass correct alignment to
3182         emit_push_insn for non-BLKmode values.
3183         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
3184         unaligned stack slot via a suitably aligned slot.
3185
3186 2007-02-08  DJ Delorie  <dj@redhat.com>
3187
3188         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
3189         warnings.
3190         (legal_subregs): Use unsigned char, make const.
3191         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
3192
3193 2007-02-08  Paul Brook  <paul@codesourcery.com>
3194
3195         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
3196         special interworking needed.
3197
3198 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
3199
3200         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
3201         conditional to __SSE2__.
3202         (Entries below should have been added to first ChangeLog
3203         entry for amdfam10 dated 2007-02-05)
3204         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
3205         defined.
3206         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
3207         defined.
3208         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
3209         defined.
3210
3211 2007-02-08  DJ Delorie  <dj@redhat.com>
3212
3213         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
3214         * config/m32c/m32c.c (legal_subregs): New.
3215         (m32c_illegal_subreg_p): New.
3216         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
3217         unsupported subregs of hard regs.
3218
3219 2007-02-08  Jan Hubicka  <jh@suse.cz>
3220
3221         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
3222         the same one; always update histograms.
3223
3224 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
3225
3226         * passes.c (init_optimization_passes): Tidy comment.
3227
3228 2007-02-08  Roger Sayle  <roger@eyesopen.com>
3229
3230         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
3231         strip zero_extend, bswap and rotates from POCOUNT's argument.
3232         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
3233         zero_extend and rotates from PARITY's argument.
3234         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
3235         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
3236         of an integer constant at compile-time.
3237
3238 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
3239
3240         PR 30562
3241         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
3242         Update all users.
3243         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
3244         users.
3245         (init_alias_info):
3246         * tree-ssa-live.c (remove_unused_locals): Do not remove
3247         TREE_ADDRESSABLE variables.
3248         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
3249         * tree-ssa-operands.c (add_virtual_operand): Remove argument
3250         FOR_CLOBBER.  Update all users.
3251         If VAR has an associated alias set, add a virtual operand for
3252         it if no alias is found to conflict with the memory reference.
3253
3254 2007-02-07  Jan Hubicka  <jh@suse.cz>
3255             Robert Kidd <rkidd@crhc.uiuc.edu>
3256
3257         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
3258
3259 2007-02-07  Ian Lance Taylor  <iant@google.com>
3260
3261         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
3262
3263 2007-02-07  Roger Sayle  <roger@eyesopen.com>
3264
3265         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
3266         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
3267         tablejumpdi, movsi_to_cr_one): Remove constraints from
3268         define_expand's match_operands.
3269
3270 2007-02-07  Roger Sayle  <roger@eyesopen.com>
3271
3272         * global.c (compute_regsets): Move declatation of "i" inside of
3273         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
3274
3275 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
3276
3277         PR c++/30703
3278         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
3279         of INDIRECT_REF <RESULT_DECL>.
3280
3281         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
3282
3283 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
3284             Kaz Kojima  <kkojima@gcc.gnu.org>
3285
3286         PR target/29746
3287         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
3288         properly.
3289         (sh_initialize_trampoline): Add parentheses to avoid a warning.
3290
3291 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
3292
3293         * doc/loop.texi: Document possibility not to perform disambiguation
3294         of loops with multiple latches.
3295         * cfgloopmanip.c (alp_enum_p): Removed.
3296         (add_loop): Handle subloops.  Use get_loop_body_with_size.
3297         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
3298         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
3299         the new forwarder block.
3300         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
3301         Handle the case latch is NULL.
3302         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
3303         when marking loop exits.
3304         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
3305         be modified.
3306         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
3307         disambiguate_loops_with_multiple_latches.
3308         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
3309         before fix_loop_structure.
3310         * cfgloop.c: Include pointer-set.h and output.h.
3311         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
3312         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
3313         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
3314         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
3315         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
3316         disambiguate_multiple_latches, get_loop_body_with_size,
3317         disambiguate_loops_with_multiple_latches): New functions.
3318         (flow_loop_dump): Dump multiple latch edges.
3319         (flow_loop_nodes_find): Handle loops with multiple latches.
3320         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
3321         (glb_enum_p): Modified.
3322         (get_loop_body): Use get_loop_body_with_size.
3323         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
3324         (AVOID_CFG_MODIFICATIONS): New constant.
3325         (disambiguate_loops_with_multiple_latches, add_loop,
3326         get_loop_body_with_size): Declare.
3327         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
3328
3329 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
3330
3331         PR inline-asm/28686
3332         * global.c (compute_regsets): New function.
3333         (global_alloc): Refactored ELIMINABLE_REGSET
3334         and NO_GLOBAL_ALLOC_REGS computation out.
3335         (rest_of_handle_global_alloc): Call compute_regsets()
3336         for non-optimizing case.
3337
3338 2007-02-06  Richard Henderson  <rth@redhat.com>
3339
3340         * config/i386/constraints.md (Y2): Rename from Y.
3341         (Yi): New constraint.
3342         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
3343         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
3344         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
3345         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
3346         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
3347         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
3348         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
3349         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
3350         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
3351         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
3352         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
3353         vec_extractv2si_1): Change Y constraints to Y2.
3354         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
3355         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
3356         Change Y constraints to Y2.
3357         (sse2_loadld): Change Y constraints to x.
3358
3359 2007-02-06  Roger Sayle  <roger@eyesopen.com>
3360
3361         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
3362         (parity<mode>2): New define_expand using rs6000_emit_parity.
3363         * config/rs6000/rs6000.c (rs6000_emit_popcount,
3364         rs6000_emit_parity): New functions.
3365         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
3366         rs6000_emit_parity): Prototype here.
3367
3368 2007-02-06  Ian Lance Taylor  <iant@google.com>
3369
3370         * lower-subreg.c (simple_move_operand): Reject CONST.
3371         (resolve_clobber): Call validate_change rather than directly
3372         assigning to XEXP (pat, 0).
3373
3374 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
3375
3376         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
3377         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
3378         (tree-cfg.o): Remove hashtab.h dependency.
3379
3380         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
3381         (struct ivopts_data): Change niters to pointer_map_t.
3382         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
3383         (niter_for_exit): Create pointer_map on demand.  Change for
3384         pointer_map API.
3385         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
3386         (free_loop_data): Destroy data->niters if created and reset field.
3387         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
3388         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
3389
3390         * tree-ssa-reassoc.c: Include pointer-set.h.
3391         (bb_rank): Change to long *.
3392         (operand_rank): Change to pointer_map_t.
3393         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
3394         (insert_operand_rank): Accept long.
3395         (operand_entry_hash, operand_entry_eq): Remove.
3396         (get_rank): Return long.  Adjust for changes above.
3397         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
3398         and operand_rank.
3399         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
3400
3401         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
3402         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
3403         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
3404         is not NULL.
3405         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
3406         directly since it cannot be NULL.
3407         (get_vi_for_tree): Rewrite for pointer_map API.
3408         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
3409         (init_alias_vars): Create vi_for_tree as pointer_map.
3410         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
3411
3412         * tree-cfg.c: Don't include hashtab.h.
3413         (edge_to_cases): Declare as pointer_map.
3414         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
3415         Delete.
3416         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
3417         (start_recording_case_labels): Create edge_to_cases as pointer_map.
3418         (end_recoding_case_labels): Cleanup edge_to_cases manually before
3419         destroying it.
3420         (record_switch_edge): Delete.
3421         (get_cases_for_edge): Adjust for pointer_map API, inline
3422         record_switch_edge (rewritten for new API), remove goto.
3423
3424 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
3425
3426         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
3427         * tree-nested.c: Include pointer-set.h.
3428         (var_map_elt, var_map_eq, var_map_hash): Delete.
3429         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
3430         to pointer_map_t's.
3431         (nesting_info_bitmap_obstack): New.
3432         (lookup_field_for_decl): Adjust for pointer_map API.
3433         (lookup_tramp_for_decl): Adjust for pointer_map API.
3434         (get_nonlocal_debug_decl): Adjust for pointer_map API.
3435         (get_local_debug_decl): Adjust for pointer_map API.
3436         (convert_nl_goto_reference): Adjust for pointer_map API.
3437         (convert_nl_goto_receiver): Adjust for pointer_map API.
3438         (create_nesting_tree): Create outside GGC space.  Create bitmap on
3439         the new obstack.  Create field_map and var_map as pointer_maps.
3440         (free_nesting_tree): Adjust for changes to create_nesting_tree.
3441         (root): Delete.
3442         (lower_nested_functions): Move root here, no need to NULL it.
3443         Initialize and release the obstack.
3444
3445 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
3446
3447         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
3448         Remove prototypes and make them non-static.
3449         (struct tree_int_map): Remove.
3450         * tree.h (struct tree_int_map): Move here, turning TO into an
3451         unsigned int.
3452         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
3453
3454         * tree.h (TREE_COMPLEXITY): Remove.
3455         (struct tree_exp): Remove complexity field.
3456         * tree.c (build1_stat): Don't set it.
3457
3458 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
3459             Victor Kaplansky  <victork@il.ibm.com>
3460
3461         * tree-vectorizer.c (vect_is_simple_use): Support induction.
3462         (vect_is_simple_reduction): Support reduction with induction as
3463         one of the operands.
3464         (vect_is_simple_iv_evolution): Fix formatting.
3465         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
3466         formatting.  Don't mark induction phis for vectorization.
3467         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
3468         * tree-vect-transform.c (get_initial_def_for_induction): New function.
3469         (vect_get_vec_def_for_operand): Support induction.
3470         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
3471         induction case.
3472         (vectorizable_reduction): Support reduction with induction as one of
3473         the operands.
3474         (vectorizable_type_demotion): Use def-type of stmt argument rather
3475         than dummy def-type.
3476
3477         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
3478         flag_tree_scev_cprop.
3479         * common.opt (tree-scev-cprop): New flag.
3480
3481         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
3482         call to vect_get_new_vect_var.
3483
3484 2007-02-06  Ira Rosen  <irar@il.ibm.com>
3485
3486         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
3487         vectype is not NULL.
3488         (vect_pattern_recog_1): Likewise.
3489
3490 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3491
3492         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
3493         (fold_negate_expr): Likewise.
3494
3495 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
3496
3497         PR debug/30189
3498         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
3499         even if cv-qualification is the same.
3500
3501 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
3502
3503         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
3504         __enable_execute_stack on completion.
3505
3506 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3507
3508         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
3509         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
3510         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
3511         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
3512         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
3513         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
3514         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
3515         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
3516
3517 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3518
3519         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
3520         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
3521         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
3522         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
3523         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
3524         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
3525         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
3526         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
3527         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
3528         umuldi3_highpart_rex64, umulsi3_highpart_insn,
3529         umulsi3_highpart_zext, smuldi3_highpart_rex64,
3530         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
3531         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
3532         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
3533         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
3534         sqrtextenddfxf2_i387): Added amdfam10_decode.
3535
3536         * config/i386/athlon.md (athlon_idirect_amdfam10,
3537         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
3538         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
3539         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
3540         athlon_ivector_store_amdfam10): New define_insn_reservation.
3541         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
3542         amdfam10.
3543
3544 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3545
3546         * config/i386/athlon.md (athlon_call_amdfam10,
3547         athlon_pop_amdfam10, athlon_lea_amdfam10): New
3548         define_insn_reservation.
3549         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
3550         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
3551         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
3552
3553 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3554
3555         * config/i386/athlon.md (athlon_sseld_amdfam10,
3556         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
3557         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
3558
3559 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3560
3561         * config/i386/athlon.md (athlon_sseins_amdfam10): New
3562         define_insn_reservation.
3563         * config/i386/i386.md (sseins): Added sseins to define_attr type
3564         and define_attr unit.
3565         * config/i386/sse.md: Set type attribute to sseins for insertq
3566         and insertqi.
3567
3568 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3569
3570         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
3571         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
3572         ssecomi_load_amdfam10, ssecomi_amdfam10,
3573         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
3574         define_insn_reservation.
3575         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
3576
3577 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3578
3579         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
3580         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
3581         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
3582         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
3583         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
3584         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
3585         define_insn_reservation.
3586
3587         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
3588         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
3589         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
3590         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
3591         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
3592
3593 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3594
3595         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
3596         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
3597         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
3598         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
3599         athlon_ssemul_load_k8): Added amdfam10.
3600
3601 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3602
3603         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
3604         (x86_sse_unaligned_move_optimal): New variable.
3605
3606         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
3607         m_AMDFAM10.
3608         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
3609         for unaligned vector SSE double/single precision loads for AMDFAM10.
3610
3611 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3612
3613         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
3614         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
3615         Define TARGET_CPU_DEFAULT_amdfam10.
3616         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
3617         (processor_type): Add PROCESSOR_AMDFAM10.
3618
3619         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
3620         processor_type in config/i386/i386.h.
3621         Enable imul peepholes for TARGET_AMDFAM10.
3622
3623         * config.gcc: Add support for --with-cpu option for amdfam10.
3624
3625         * config/i386/i386.c (amdfam10_cost): New variable.
3626         (m_AMDFAM10): New macro.
3627         (m_ATHLON_K8_AMDFAM10): New macro.
3628         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
3629         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
3630         x86_promote_QImode, x86_integer_DFmode_moves,
3631         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3632         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
3633         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
3634         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
3635         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
3636         Enable/disable for amdfam10.
3637         (override_options): Add amdfam10_cost to processor_target_table.
3638         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
3639         processor_alias_table.
3640         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
3641         (ix86_adjust_cost): Add code for amdfam10.
3642
3643 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
3644
3645         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
3646         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
3647         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
3648         * config/i386/i386.h: Add builtin definition for SSE4A.
3649         * config/i386/i386.md: Add support for ABM instructions
3650         (popcnt and lzcnt).
3651         * config/i386/sse.md: Add support for SSE4A instructions
3652         (movntss, movntsd, extrq, insertq).
3653         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
3654         Add -march=amdfam10 flag.
3655         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
3656         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
3657         and amdfam10.
3658         * doc/extend.texi: Add documentation for SSE4A builtins.
3659
3660 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
3661
3662         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
3663
3664 2007-02-05  Richard Guenther  <rguenther@suse.de>
3665
3666         * tree-vectorizer.h (vectorizable_function): Add argument type
3667         argument, change return type.
3668         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
3669         * tree-vect-transform.c (vectorizable_function): Handle extra
3670         argument, return vectorized function decl.
3671         (build_vectorized_function_call): Remove.
3672         (vectorizable_call): Handle calls with result and argument types
3673         differing.  Handle loop vectorization factor correctly.
3674         * targhooks.c (default_builtin_vectorized_function): Adjust for
3675         extra argument.
3676         * targhooks.h (default_builtin_vectorized_function): Likewise.
3677         * target.h (builtin_vectorized_function): Add argument type
3678         argument.
3679         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
3680         extra argument, allow vectorizing of lrintf.
3681         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
3682         documentation of target hook.
3683
3684 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
3685
3686         PR target/30665
3687         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
3688         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
3689         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
3690
3691 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3692
3693         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
3694         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
3695         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
3696         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
3697         before canonicalizing sincos to cexpi.
3698         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
3699
3700 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3701
3702         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
3703         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
3704         (alpha_init_builtins): Use alpha_add_builtins to process tables.
3705
3706 2007-02-05  Roger Sayle  <roger@eyesopen.com>
3707
3708         * mips-tfile.c (initialize_init_file): Correct endianness test.
3709
3710 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
3711
3712         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
3713         the 'y' constraint.
3714
3715 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
3716
3717         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
3718         saves in a PARALLEL before the register assignments.
3719
3720 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
3721
3722         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
3723         DWARF_FRAME_RETURN_COLUMN to be a general register.
3724         * dwarf2out.c (init_return_column_size): New function, split from...
3725         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
3726         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
3727         to be nongeneral registers.
3728         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
3729         integer registers.
3730         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
3731         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
3732
3733 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
3734
3735         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
3736
3737 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
3738
3739         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
3740         (remove_path): Use can_remove_branch_p and remove_branch instead
3741         of loop_delete_branch_edge.
3742         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
3743         (tree_transform_and_unroll_loop): Remove dead branches immediately.
3744         Update profile using scale_dominated_blocks_in_loop.
3745         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
3746         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
3747         (can_remove_branch_p, remove_branch): Declare.
3748         * tree-cfg.c (tree_can_remove_branch_p): New function.
3749         (tree_cfg_hooks): Add tree_can_remove_branch_p.
3750         * cfgrtl.c (rtl_can_remove_branch_p): New function.
3751         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
3752
3753 2007-02-05  Jan Hubicka  <jh@suse.cz>
3754
3755         PR middle-end/30696
3756         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
3757         nodes in cgraph, don't remove offline copy of the function.
3758
3759 2007-02-04  Jan Hubicka  <jh@suse.cz>
3760
3761         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
3762         vectors might cause maybe_lookup_element_for_expr to be called
3763         on non-sra-candidate.
3764
3765 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3766
3767         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
3768         config/bfin/bfin.md, config/bfin/predicates.md: Follow
3769         spelling conventions.
3770
3771 2007-02-04  Richard Guenther  <rguenther@suse.de>
3772
3773         PR middle-end/30636
3774         * fold-const.c (try_move_mult_to_index): Make sure to not
3775         overflow one dimension of a multi-dimensional array access.
3776
3777 2007-02-04  Jan Hubicka  <jh@suse.cz>
3778
3779         * passes.c (init_optimization_passes): Reindent.
3780
3781 2007-02-04  Jan Hubicka  <jh@suse.cz>
3782             Eric Botcazou  <ebotcazou@adacore.com>
3783
3784         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
3785         (execute_fixup_cfg): Break out the abnormal goto code.
3786         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
3787         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
3788         (optimize_inline_calls): Call make_nonlocal_label_edges.
3789
3790 2007-02-04  Jan Hubicka  <jh@suse.cz>
3791
3792         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
3793         true when something was changed.
3794         (rename_ssa_copies): When something was changed, do
3795         TODO_remove_unused_locals.
3796         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
3797         add TODO_remove_unused_locals when instruction was removed.
3798
3799 2007-02-04  Jan Hubicka  <jh@suse.cz>
3800
3801         * ipa-inline.c (try_inline): Improve debug output; work on already
3802         inline edges too.
3803         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
3804         call try_inline for already inlined edges too when flattening;
3805         inline also functions that make callee growth but overall unit size
3806         reduce.
3807
3808 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3809
3810         * config/m32c/bitops.md, config/m32c/jump.md,
3811         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
3812         config/m32r/m32r.h, config/m32r/m32r.md,
3813         config/m32r/predicates.md, config/m68hc11/larith.asm,
3814         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
3815         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
3816         config/mips/mips-protos.h, config/mips/mips.c,
3817         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
3818         config/mn10300/mn10300.h, config/mn10300/predicates.md,
3819         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
3820         spelling conventions.
3821
3822         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
3823         Follow spelling conventions.
3824
3825 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
3826
3827         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
3828         warn about C++0x compatibility.
3829
3830 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3831
3832         * config/h8300/h8300.c, config/h8300/h8300.h,
3833         config/h8300/h8300.md: Follow spelling conventions.
3834
3835 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
3836
3837         PR middle-end/30667
3838         * combine.c (try_combine): Do not substitute source operand
3839         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
3840
3841 2007-02-03  Jan Hubicka  <jh@suse.cz>
3842
3843         PR gcov-profile/30650
3844         * value-prof.c (stringop_block_profile): Fix handling of size counter;
3845         do not divide by zero for never executed counters.
3846         (tree_find_values_to_profile): Fix counters.
3847         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
3848
3849 2007-02-03  Ian Lance Taylor  <iant@google.com>
3850
3851         * lower-subreg.c (simple_move_operand): New static function,
3852         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
3853         operands.
3854         (simple_move): Call simple_move_operand.
3855         (find_decomposable_subregs): Add special handling of MEMs.
3856         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
3857         meaning of return value.  If we see a hard register, test whether
3858         it can store a word_mode value.  Change all callers.
3859
3860 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3861
3862         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
3863         ftrapv insns and expanders.
3864         (subdi3): Change define_expand operand 1 to arith11_operand, and
3865         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
3866         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
3867         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
3868         respectively.
3869
3870         PR middle-end/30174
3871         * varasm.c (notice_global_symbol): Treat global objects as weak when
3872         flag_shlib is true.
3873
3874 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3875
3876         * emit-rtl.c (dconstpi): Delete.
3877         (dconstsqrt2): New.
3878         (init_emit_once): Delete dconstpi and init dconstsqrt2.
3879         * real.h (dconstpi): Delete.
3880         (dconstsqrt2): New.
3881         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
3882         (fold_builtin_hypot): Likewise.
3883
3884 2007-02-03  Tom Tromey  <tromey@redhat.com>
3885
3886         PR driver/30246
3887         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
3888         -gcoff3, -gxcoff3, -gvms3 implies -dD.
3889
3890 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
3891
3892         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
3893         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
3894         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
3895         config/rs6000/cell.md, config/rs6000/darwin.h,
3896         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
3897         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
3898         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
3899         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
3900         typos.  Follow spelling conventions.
3901         * doc/invoke.texi: Follow spelling conventions.
3902
3903 2007-02-03  Roger Sayle  <roger@eyesopen.com>
3904
3905         * simplify-rtx.c (simplify_relational_operation_1): Implement some
3906         canonicalization transformations that attempt to simplify integer
3907         constant comparisons to become comparisons against zero.
3908
3909 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3910
3911         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
3912         fabs(x)*sqrt(2).
3913         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
3914         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
3915
3916 2007-02-02  Mike Stump  <mrs@apple.com>
3917
3918         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
3919         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
3920         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
3921         generate a branch island.
3922
3923 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
3924
3925         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
3926         (xtensa_legitimate_address_p): New.
3927         (xtensa_legitimize_address): New.
3928         (xtensa_output_addr_const_extra): New.
3929         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
3930         (BASE_REG_P): New.
3931         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
3932         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
3933         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
3934         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
3935         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
3936         (xtensa_legitimize_address): New.
3937         (xtensa_output_addr_const_extra): New.
3938
3939 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
3940
3941         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
3942
3943 2007-02-02  Ian Lance Taylor  <iant@google.com>
3944
3945         * expmed.c (expand_divmod): Add comment.
3946
3947 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
3948
3949         * emit-rtl.c (renumber_insns): Remove.
3950         * flags.h: Remove the extern for flag_renumber_insns.
3951         * rtl.h: Remove the prototype for renumber_insns.
3952         * toplev.c (flag_renumber_insns): Remove.
3953
3954 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
3955
3956         Revert for x86 darwin:
3957         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
3958
3959         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
3960         code before the following patch under TARGET_MACHO.
3961         (ix86_function_value_regno_p): Likewise.
3962
3963 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3964
3965         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
3966         COMPLEX_EXPR.
3967
3968 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3969
3970         PR target/29682
3971         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
3972         general or fp registers.  Add comments.
3973         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
3974
3975 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
3976
3977         * pointer-set.c (insert_aux): Only return insertion slot.
3978         (pointer_set_insert): Adjust.
3979         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
3980         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
3981         pointer_map_traverse): New.
3982         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
3983         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
3984         pointer_map_contains, pointer_map_traverse): Declare.
3985
3986 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3987
3988         PR middle-end/30473
3989         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
3990         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
3991
3992 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3993
3994         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
3995
3996         (struct _dep): New type.
3997         (dep_t): New typedef.
3998         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
3999         (DEP_STATUS): New access macro.  The macro with the same name was
4000         renamed to DEP_LINK_STATUS.
4001         (dep_init): Declare function
4002
4003         (struct _dep_link): New type.
4004         (dep_link_t): New typedef.
4005         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
4006         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
4007         (DEP_LINK_STATUS): New macro.
4008         (debug_dep_links): New debug function.
4009
4010         (struct _deps_list): New type.
4011         (deps_list_t): New typedef.
4012         (DEPS_LIST_FIRST): New access macro.
4013         (FOR_EACH_DEP_LINK): New cycle macro.
4014         (create_deps_list, free_deps_list, delete_deps_list): Declare
4015         functions.
4016         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
4017         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
4018         (copy_deps_list_change_con): Ditto.
4019
4020         (move_dep_link): Declare function.
4021
4022         (struct _dep_node): New type.
4023         (dep_node_t): New typedef.
4024         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
4025
4026         (struct haifa_insn_data.back_deps): New field to hold backward
4027         dependencies of the insn.
4028         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
4029         to deps_list_t.
4030         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
4031         Change its type to deps_list_t.
4032         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
4033         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
4034         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
4035
4036         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
4037
4038         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
4039
4040         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
4041         all callers.
4042         (dep_cost): Declare.
4043
4044         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
4045         (ds_to_dk, dk_to_ds): New functions.
4046
4047         (init_dep_1): New static function.
4048         (init_dep): New function.
4049         (copy_dep): New static function.
4050
4051         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
4052         functions.
4053         (detach_dep_link): New static function.
4054         (move_dep_link): New function.
4055
4056         (dep_links_consistent_p, dump_dep_links): New static functions.
4057         (debug_dep_links): New debugging function.
4058
4059         (deps_obstack, dl_obstack, dn_obstack): New static variables.
4060
4061         (alloc_deps_list, init_deps_list): New static functions.
4062         (create_deps_list): New function.
4063         (clear_deps_list): New static function.
4064         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
4065         (deps_list_consistent_p, dump_deps_list): New static functions.
4066         (debug_deps_list): New function.
4067         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
4068         functions.
4069         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
4070
4071         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
4072         use new scheduler dependencies lists.
4073         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
4074         (sched_analyze): Ditto.  Initialize dependencies lists.
4075         (add_forw_dep, compute_forward_dependences): Update to use new
4076         scheduler dependencies lists.
4077
4078         (init_dependency_caches): Init deps_obstack.
4079         (free_dependency_caches): Free deps_obstack.
4080
4081         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
4082         new scheduler dependencies lists.
4083         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
4084         (add_back_forw_dep, delete_back_forw_dep): Ditto.
4085
4086         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
4087         Update to use new scheduler dependencies lists.
4088         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
4089         (debug_dependencies): Ditto.
4090         (schedule_region): Update comments.
4091
4092         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
4093         scheduler dependencies lists.
4094         (schedule_ebb): Update comments.
4095
4096         * rtl.def (DEPS_LIST): Remove.
4097
4098         * lists.c (unused_deps_list): Remove.
4099         (free_list): Update assertions.
4100
4101         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
4102         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
4103
4104         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
4105         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
4106
4107         * haifa-sched.c (comments): Update.
4108         (insn_cost1): Remove.  Inline the code into insn_cost ().
4109         (insn_cost): Update to use new scheduler dependencies lists.  Move
4110         processing of the dependency cost to dep_cost ().
4111         (dep_cost): New function.  Use it instead of insn_cost () when
4112         evaluating cost of the dependency.  Use compatible interface to
4113         interact with the target.
4114         (priority): Update to use new scheduler dependencies lists.
4115         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
4116         with greater number of insns that depend on the insn.
4117         (schedule_insn): Update to use new scheduler dependencies lists.  Add
4118         code to free backward dependencies lists.  Inline and optimize code
4119         from resolve_dep () - see PR28071.
4120         (ok_for_early_queue_removal): Update to use new scheduler dependencies
4121         lists.  Update call to targetm.sched.is_costly_dependence hook.
4122
4123         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
4124         scheduler dependencies lists.
4125
4126         (resolve_dep): Remove.  Move the logic to schedule_insn ().
4127         (init_h_i_d): Initialize dependencies lists.
4128
4129         (process_insn_depend_be_in_spec): Rename to
4130         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
4131         dependencies lists.
4132         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
4133         Update to use new scheduler dependencies lists.
4134         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
4135
4136         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
4137         new scheduler dependencies lists.
4138         (build_intra_loop_deps): Ditto.
4139
4140         * target.h (struct _dep): Declare to use in
4141         gcc_target.sched.is_costly_dependence.
4142         (struct gcc_target.sched.adjust_cost): Fix typo.
4143         (struct gcc_target.sched.is_costly_dependence): Change signature to use
4144         single dep_t parameter instead of an equivalent triad.
4145         (struct gcc_target.sched.adjust_cost_2): Remove.
4146
4147         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
4148
4149         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
4150
4151         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
4152         documentation.
4153         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
4154
4155         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
4156         (REG_DEP_TRUE): Document.
4157
4158         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
4159         Change signature to correspond to the targetm.sched.adjust_cost hook.
4160         Update use in TARGET_SCHED_ADJUST_COST_2.
4161         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
4162         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
4163         new scheduler dependencies lists.
4164         (ia64_gen_check): Ditto.
4165
4166         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
4167         dependencies lists.
4168
4169         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
4170         signature to correspond to the targetm.sched.is_costly_dependence hook.
4171         (is_costly_group): Update to use new scheduler dependencies lists.
4172
4173         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
4174         instead of INSN_COST () macro.
4175
4176 2007-02-01  Ian Lance Taylor  <iant@google.com>
4177
4178         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
4179
4180 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
4181
4182         * pa.md (tp_load): Correct mfctl instruction syntax.
4183
4184 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
4185
4186         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
4187         altivec_padding_size calculation on AIX.  Improve comment, add
4188         assert to verify that it's right.
4189
4190         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
4191         64-bit.
4192
4193 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
4194
4195         PR inline-asm/28686
4196         * global.c (global_alloc): Add mising initialization of
4197         ELIMINABLE_REGSET.
4198
4199 2007-02-01  Roger Sayle  <roger@eyesopen.com>
4200
4201         * alias.c (init_alias_analysis): Correct whitespace.
4202         * bb-reorder.c (fix_edges_for_rarely_executed_code,
4203         partition_hot_cold_basic_blocks): Likewise.
4204         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
4205         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
4206         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
4207         fold_builtin_snprintf_chk, fold_builtin_printf,
4208         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
4209         do_mpfr_arg3, do_mpfr_sincos): Likewise.
4210         * cfgcleanup.c (cleanup_cfg): Likewise.
4211         * cfgexpand.c (tree_expand_cfg): Likewise.
4212         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
4213         * function.c (get_next_funcdef_no): Likewise.
4214         * gengtype.c (main): Likewise.
4215         * genmodes.c (main): Likewise.
4216         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
4217         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
4218         * ifcvt.c (noce_emit_move_insn): Likewise.
4219         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
4220         Likewise.
4221         * stor-layout.c (get_best_mode): Likewise.
4222         * tree-ssa-loop-niter.c (get_val_for): Likewise.
4223         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
4224         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
4225         perform_var_substitution, solve_graph): Likewise.
4226         * tree-vrp.c (vrp_finalize): Likewise.
4227
4228 2007-02-01  Ian Lance Taylor  <iant@google.com>
4229
4230         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
4231         high part of a paradoxical subreg, return a constant zero.
4232
4233 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
4234
4235         * toplev.c (lang_dependent_init): Call init_set_costs.
4236         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
4237
4238 2007-02-01  Richard Guenther  <rguenther@suse.de>
4239
4240         PR middle-end/30656
4241         * fold-const.c (fold_negate_expr): Allow negating a
4242         constant if overflow does not change.
4243
4244 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4245
4246         * doc/c-tree.texi (Expression trees): Improve markup.
4247         * doc/tm.texi (Register Classes, Addressing Modes)
4248         (Floating Point): Fix spacing after abbreviations.  Fix some
4249         typos.
4250
4251 2007-02-01  Ben Elliston  <bje@au.ibm.com>
4252
4253         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
4254         * doc/contrib.texi: Likewise.
4255         * doc/install.texi: Likewise.
4256
4257 2007-01-31  Richard Henderson  <rth@redhat.com>
4258             Ian Lance Taylor  <iant@google.com>
4259
4260         * lower-subreg.c: New file.
4261         * rtl.def (CONCATN): Define.
4262         * passes.c (init_optimization_passes): Add pass_lower_subreg and
4263         pass_lower_subreg2.
4264         * emit-rtl.c (update_reg_offset): New static function, broken out
4265         of gen_rtx_REG_offset.
4266         (gen_rtx_REG_offset): Call update_reg_offset.
4267         (gen_reg_rtx_offset): New function.
4268         * regclass.c: Revert patch of 2006-03-05, restoring
4269         reg_scan_update.
4270         (clear_reg_info_regno): New function.
4271         * dwarf2out.c (concatn_loc_descriptor): New static function.
4272         (loc_descriptor): Handle CONCATN.
4273         * common.opt (fsplit_wide_types): New option.
4274         * opts.c (decode_options): Set flag_split_wide_types when
4275         optimizing.
4276         * timevar.def (TV_LOWER_SUBREG): Define.
4277         * rtl.h (gen_reg_rtx_offset): Declare.
4278         (reg_scan_update): Declare.
4279         * regs.h (clear_reg_info_regno): Declare.
4280         * tree-pass.h (pass_lower_subreg): Declare.
4281         (pass_lower_subreg2): Declare.
4282         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
4283         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
4284         -fsplit-wide-types.
4285         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
4286         * Makefile.in (OBJS-common): Add lower-subreg.o.
4287         (lower-subreg.o): New target.
4288
4289 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
4290
4291         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
4292
4293 2007-01-31  Anatoly Sokolov <aesok@post.ru>
4294
4295         PR target/19087
4296         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
4297
4298 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4299
4300         PR middle-end/29335
4301         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
4302
4303 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
4304
4305         * cfgloop.h: Include vec-prim.h.
4306         (enum li_flags): Remove LI_ONLY_OLD.
4307         (loop_iterator): Changed.
4308         (fel_next, fel_init): Iterate over loop tree.
4309         (FOR_EACH_LOOP_BREAK): New macro.
4310         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
4311         FOR_EACH_LOOP.
4312         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
4313         * modulo-sched.c (sms_schedule): Ditto.
4314         * tree-vectorizer.c (vectorize_loops): Ditto.
4315         * doc/loop.texi: Update information on loop numbering and behavior of
4316         FOR_EACH_LOOP wrto new loops.
4317         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
4318         add_to_evolution_1): Test nestedness of loops instead of comparing
4319         their numbers.
4320         * tree-chrec.c (chrec_fold_plus_poly_poly,
4321         chrec_fold_multiply_poly_poly, chrec_evaluate,
4322         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
4323         reset_evolution_in_loop): Ditto.
4324         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
4325
4326 2007-01-31  Dirk Mueller  <dmueller@suse.de>
4327
4328         * c-common.c (warn_about_parentheses): Separate warning about
4329         un-parenthized sequence of comparison operators from the one
4330         which is supposed to warn about x <= y <= z.
4331
4332 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
4333
4334         * optabs.h (enum optab_index): Add new OTI_isinf.
4335         (isinf_optab): Define corresponding macro.
4336         * optabs.c (init_optabs): Initialize isinf_optab.
4337         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
4338         patterns.
4339         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
4340         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
4341         using isinf_optab.
4342         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
4343         expand_builtin_interclass_mathfn.
4344         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
4345         * config/i386/i386.md (UNSPEC_FXAM): New constant.
4346         (fxam<mode>2_i387): New insn pattern.
4347         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
4348         built-in functions as x87 inline asm.
4349
4350 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
4351
4352         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
4353
4354 2007-01-30  Eric Christopher  <echristo@apple.com>
4355
4356         * config.gcc: Add geode.
4357
4358 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
4359
4360         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
4361         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
4362         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
4363         value-prof.c: Fix comment typos.
4364
4365 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4366
4367         PR c++/24745
4368         * doc/invoke.texi (Wpointer-arith): Document warning.
4369
4370 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
4371
4372         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
4373         the list of discrepancies from the draft TR.
4374
4375 2007-01-30  Dirk Mueller  <dmueller@suse.de>
4376
4377         PR c++/30601
4378         * doc/invoke.texi (-Wreturn-type): Update description to
4379         match new behavior.
4380
4381 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
4382
4383         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
4384
4385 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
4386
4387         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
4388         to handle optabs that operate on floating point input argument and
4389         output to integer output.
4390         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
4391         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
4392         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
4393         expand_builtin_interclass_mathfn ().
4394         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
4395         (ilogbsi2): Remove.
4396         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
4397         ilogbl built-in functions as x87 intrinsics.
4398
4399 2007-01-30  Richard Guenther  <rguenther@suse.de>
4400
4401         PR middle-end/27657
4402         * dwarf2out.c (reference_to_unused): Query varpool if the
4403         variable was output.
4404
4405 2007-01-30  Richard Guenther  <rguenther@suse.de>
4406
4407         PR middle-end/30313
4408         * passes.c (execute_one_pass): Reset in_gimple_form to not
4409         confuse non-unit-at-a-time mode.
4410
4411 2007-01-29  Roger Sayle  <roger@eyesopen.com>
4412             Richard Guenther  <rguenther@suse.de>
4413
4414         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
4415         avoid undefined behaviour on overflow.  Use force_fit_type_double
4416         to construct the constant with the specified TREE_OVERFLOW.
4417
4418 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
4419
4420         * config/dfp-bit.c: Add parameterized support for fp exceptions.
4421         * config/dfp-bit.h: Ditto.
4422
4423 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4424
4425         * c-decl.c (pop_scope): Replace warnings with call to
4426         warn_for_unused_label.
4427         * c-common.h (warn_for_unused_label): Declare.
4428         * c-common.c (warn_for_unused_label): Define.
4429
4430 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4431
4432         * tree-optimize.c (update_inlined_to_pointers): Delete unused
4433         function.
4434
4435 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
4436
4437         * Makefile.in (USER_H): Remove decfloat.h.
4438         * ginclude/decfloat.h: Delete, moving contents to ...
4439         * ginclude/float.h: Add support for decimal floating point,
4440         guarded by __STDC_WANT_DEC_FP__.
4441
4442 2007-01-29  Mike Stump  <mrs@apple.com>
4443
4444         * doc/gccint.texi (Top): Rename Loop Representation to Loop
4445         Analysis and Representation to resolve case insensitive conflict.
4446         * doc/loop.texi (Loop Analysis and Representation): Likewise.
4447
4448 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
4449
4450         * tree.h (struct tree_memory_tag): Add aliases member.
4451         (MTAG_ALIASES): New macro.
4452         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
4453         (add_may_alias): Remove pointer-set. Update for may_aliases being
4454         a bitmap.
4455         (mark_aliases_call_clobbered): Update for may_aliases being a
4456         bitmap.
4457         (compute_tag_properties): Ditto.
4458         (create_partition_for): Ditto.
4459         (compute_memory_partitions): Ditto.
4460         (dump_may_aliases_for): Ditto.
4461         (is_aliased_with): Ditto.
4462         (add_may_alias_for_new_tag): Ditto.
4463         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
4464         (compute_is_aliased): New function.
4465         (compute_may_aliases): Call compute_is_aliased).
4466         (init_alias_info): Initialize alias_bitmap_obstack.
4467         (union_alias_set_into): New function.
4468         (compute_flow_sensitive_aliasing): Use union_aliases_into.
4469         (have_common_aliases_p): Rewrite to take two bitmaps and use
4470         intersection.
4471         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
4472         Update for bitmaps.
4473         (finalize_ref_all_pointers): Update for add_may_alias changes.
4474         (new_type_alias): Ditto.
4475         * tree-flow-inline.h (may_aliases): Return a bitmap.
4476         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
4477         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
4478         may_aliases being a bitmap.
4479         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
4480         may_aliases now returns a bitmap.
4481         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
4482         being a bitmap.
4483         * tree-ssa-operands.c (add_virtual_operand): Update for
4484         may_aliases being a bitmap.
4485
4486 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
4487
4488         PR tree-optimization/30630
4489         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
4490         variable as changed.
4491
4492 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
4493
4494         PR c++/28266
4495         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
4496         expanded only once even if an error occurs.
4497
4498 2007-01-29  Ben Elliston  <bje@au.ibm.com>
4499
4500         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
4501         (__gcov_average_profiler): Likewise.
4502         (__gcov_ior_profiler): Likewise.
4503         (__gcov_merge_ior): Likewise.
4504
4505 2007-01-28  Jan Hubicka  <jh@suse.cz>
4506
4507         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
4508         * value-prof.c (stringop_block_profile): Likewise.
4509
4510 2007-01-28  Jan Hubicka  <jh@suse.cz>
4511
4512         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
4513         variant handling histograms; add wrapper.
4514         (clear_storage_via_libcall): Export.
4515         (emit_block_move_hints): Break out from ...; add histograms.
4516         (emit_block_move): ... this one.
4517         (clear_storage_hints): Break out from ...; add histograms.
4518         (clear_storage): ... this one.
4519         (set_storage_via_memset): Handle histogram.
4520         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
4521         (clear_storage_hints, clear_storage_via_libcall): Declare.
4522         (set_storage_via_setmem): Update prototype.
4523         * doc/md.texi (movmem, setmem): Document new arguments.
4524
4525         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
4526         new histograms.
4527         (stringop_block_profile): New global function.
4528         (tree_stringops_values_to_profile): Profile block size and alignment.
4529         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
4530         HIST_TYPE_IOR.
4531         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
4532         (stringop_block_profile): Declare.
4533         * builtins.c: Include value-prof.h.
4534         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
4535         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
4536         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
4537         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
4538         * profile.c (instrument_values): Add new counters.
4539         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
4540         calls.
4541         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
4542         (tree_init_edge_profiler): Build new profilers.
4543         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
4544         (pass_tree_profile): Add dump.
4545         (tree_profile_hooks): Update.
4546         * Makefile.in (LIBGCOV): Add new constants.
4547         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
4548         __gcov_ior_profiler): New.
4549         * i386.md (movmem/setmem expanders): Add new optional arguments.
4550
4551 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
4552
4553         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
4554
4555 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
4556
4557         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
4558         (tree_unswitch_single_loop): Pass eni_size_weights to
4559         tree_num_loop_insns.
4560         * tree-ssa-loop-manip.c: Include tree-inline.h.
4561         (can_unroll_loop_p): Pass eni_size_weights to
4562         tree_num_loop_insns.
4563         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
4564         Pass eni_size_weights to estimate_num_insns.
4565         * tree.h (init_inline_once): Export.
4566         * toplev.c (backend_init): Call init_inline_once.
4567         * cgraphunit.c (cgraph_process_new_functions,
4568         cgraph_analyze_function): Pass eni_inlining_weights to
4569         estimate_num_insns.
4570         * ipa-inline.c (compute_inline_parameters): Ditto.
4571         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
4572         to estimate_num_insns.
4573         (try_unroll_loop_completely): Pass eni_size_weights to
4574         tree_num_loop_insns.
4575         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
4576         ot estimate_num_insns.
4577         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
4578         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
4579         * tree-inline.c (eni_inlining_weights, eni_size_weights,
4580         eni_time_weights): New variables.
4581         (init_inline_once): Initialize them.
4582         (struct eni_data): Mew.
4583         (estimate_num_insns_1, estimate_num_insns): Use weights.
4584         * tree-inline.h (struct eni_weights_d): New.
4585         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
4586         (estimate_num_insns): Declaration changed.
4587         * cfgloop.h (tree_num_loop_insns): Declaration changed.
4588         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
4589         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
4590
4591 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
4592
4593         * tree-data-ref.c (conflict_fn): Assert that the number of affine
4594         relations in the conflict function is valid.
4595
4596 2007-01-27  Ian Lance Taylor  <iant@google.com>
4597
4598         * common.opt: Add fstrict-overflow.
4599         * opts.c (decode_options): Set flag_strict_overflow if -O2.
4600         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
4601         (TYPE_OVERFLOW_UNDEFINED): Define.
4602         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
4603         Replace all uses.
4604         * tree.h (TYPE_TRAP_SIGNED): Don't define.
4605         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
4606         (fold_negate_expr): Likewise.
4607         (make_range): Likewise.
4608         (extract_muldiv_1): Likewise.
4609         (maybe_canonicalize_comparison): Likewise.
4610         (fold_comparison): Likewise.
4611         (fold_binary): Likewise.
4612         (tree_expr_nonnegative_p): Likewise.
4613         (tree_expr_nonzero_p): Likewise.
4614         * tree-vrp.c (compare_values): Likewise.
4615         (extract_range_from_binary_expr): Likewise.
4616         (extract_range_from_unary_expr): Likewise.
4617         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
4618         Likewise.
4619         (nowrap_type_p): Likewise.
4620         * tree-scalar-evolution.c (simple_iv): Likewise.
4621         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
4622         (build_range_check): Likewise.
4623         (extract_muldiv_1): Likewise.
4624         (fold_comparison): Likewise.
4625         * tree-vrp.c (vrp_int_const_binop): Likewise.
4626         (extract_range_from_unary_expr): Likewise.
4627         * convert.c (convert_to_integer): Likewise.
4628         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
4629         (fold_comparison): Likewise.
4630         (fold_binary): Likewise.
4631         * optabs.c (optab_for_tree_code): Likewise.
4632         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
4633         * simplify-rtx.c (simplify_const_relational_operation): Check
4634         flag_strict_overflow and flag_trapv.
4635         (simplify_const_relational_operation): Likewise.
4636         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
4637         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
4638         -fstrict-overflow.
4639
4640 2007-01-27  Roger Sayle  <roger@eyesopen.com>
4641
4642         * tree.c (tree_fold_gcd): Delete.
4643         * tree.h (tree_fold_gcd): Remove prototype.
4644         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
4645         test whether one constant integer is a multiple of another.  Instead
4646         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
4647         * fold-const.c (multiple_of_p):  We've determined both TOP and
4648         BOTTOM are integer constants so we can call int_const_binop directly
4649         instead of the more generic const_binop.
4650
4651 2007-01-27  Roger Sayle  <roger@eyesopen.com>
4652
4653         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
4654         1*X check that the constant hasn't overflowed, to preserve the
4655         TREE_OVERFLOW bit.
4656         (round_up): Provide an efficient implementation when rouding-up an
4657         INTEGER_CST to a power-of-two.
4658
4659 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4660
4661         * doc/sourcebuild.texi: Add comma for clarity.
4662         * doc/extend.texi: Fix some typos.
4663         * doc/passes.texi: Likewise.
4664         * doc/cppinternals.texi: Likewise.
4665         * doc/c-tree.texi: Likewise.
4666         * doc/tree-ssa.texi: Likewise.
4667         * doc/install.texi: Likewise.
4668
4669 2007-01-27  Jan Hubicka  <jh@suse.cz>
4670
4671         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
4672         (pass_sra): Do not require alias information.
4673         * passes.c (init_optimization_passes): Add SRA
4674
4675 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
4676
4677         * tracer.c (rest_of_handle_tracer): We already cleaned
4678         up the CFG in tracer() so don't do it here again.
4679         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
4680         cleanup_cfg here, either.  And don't call renumber_insns.
4681
4682         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
4683         and BB_HEAD are in the insn stream here.  Instead make sure
4684         that BB_INSN is valid on all insns.  Also, do check here that
4685         there are no pending branch predictions...
4686         (rtl_verify_flow_info): ...instead of doing it here.  Checks
4687         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
4688         here.
4689
4690 2007-01-26  Roger Sayle  <roger@eyesopen.com>
4691
4692         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
4693         function to simplify/factorize operand order canonicalization.
4694         (ix86_fixup_binary_operands): Reorganize using the above function.
4695         (ix86_binary_operator_ok): Likewise.
4696
4697 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
4698
4699         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
4700         file scope from optimize_attrs.
4701         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
4702         up search.
4703         (optimize_attrs): Clear insn_code_values after freeing it.
4704
4705 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
4706
4707         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
4708         a parts.base assignment.
4709
4710 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
4711
4712         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
4713         (compute_subscript_distance, initialize_data_dependence_relation,
4714         finalize_ddr_dependent, analyze_ziv_subscript,
4715         analyze_siv_subscript_cst_affine,
4716         compute_overlap_steps_for_affine_univar,
4717         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
4718         analyze_siv_subscript, analyze_miv_subscript,
4719         analyze_overlapping_iterations, subscript_dependence_tester_1,
4720         compute_self_dependence, free_dependence_relation): Work
4721         with affine_fn instead of chrecs.
4722         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
4723         common_affine_function, affine_function_base,
4724         affine_function_constant_p, affine_fn_op, affine_fn_plus,
4725         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
4726         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
4727         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
4728         (all_chrecs_equal_p): Removed.
4729         * tree-data-ref.h (affine_fn, conflict_function): New types.
4730         (struct subscript): Change type of conflicting_iterations_in_a
4731         and conflicting_iterations_in_b.
4732
4733 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
4734
4735         PR other/30182
4736         * config/pa/pa.h (TARGET_HPUX_11): New.
4737         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
4738         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
4739
4740 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
4741         Richard Guenther  <rguenther@suse.de>
4742
4743         * tree-ssa-structalias.c (solve_graph): Handle case
4744         we merged the variable to another.
4745
4746 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4747
4748         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
4749         functions.
4750
4751         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
4752         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
4753
4754 2007-01-25  DJ Delorie  <dj@redhat.com>
4755
4756         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
4757         allow changes to modes which don't fit in those registers.
4758
4759         * reload1.c (choose_reload_regs): Check for invalid subregs before
4760         computing their locations, not after.
4761
4762 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
4763
4764         PR 25127
4765         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
4766         save Altivec registers in an eh_return function.
4767         (compute_vrsave_mask): Likewise.
4768         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
4769         for saving Altivec registers.
4770         (rs6000_emit_prologue): Don't allocate stack twice in
4771         eh_return function.  Correct expected value of altivec_save_offset
4772         when using save_world.  Describe save of R0 to stack when using
4773         save_world.  Describe stack pointer adjustment when using
4774         save_world.  Remove duplicated eh_return parameter register saving.
4775         Update sp_offset variable after save_world.
4776         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
4777         darwin-world.asm.
4778         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
4779         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
4780         implies Altivec.
4781
4782 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
4783
4784         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
4785
4786 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
4787
4788         PR other/30182
4789         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
4790         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
4791
4792 2007-01-25  Richard Guenther  <rguenther@suse.de>
4793
4794         * doc/invoke.texi (-Wcoverage-mismatch): Document.
4795         * common.opt (-Wcoverage-mismatch): New warning option.
4796         * coverage.c (get_coverage_counts): Ignore coverage mismatch
4797         if -Wcoverage-mismatch is given.
4798
4799 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
4800
4801         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
4802         (ipcp_driver): Change to static definition.
4803         Add dumping of the ifunctions.
4804         (constant_val_insert): Remove unused parameter. Support for SSA.
4805         (ipcp_propagate_const): Support for SSA.
4806         (ipcp_profile_bb_print): Print only analyzed nodes.
4807         (ipcp_replace_map_create): Remove support for Fortran constant
4808         for now.
4809         * ipa-prop.c (ipa_method_modify_stmt,
4810         ipa_callsite_compute_param): Support for SSA.
4811         * ipa-prop.h (ipcp_driver): Remove declaration.
4812         (IS_VALID_TREE_MAP_INDEX): Add define.
4813
4814 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
4815
4816         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
4817
4818 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4819
4820         PR middle-end/30447
4821         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
4822         constant argument to cabs and do it without checking for
4823         -funsafe-math-optimizations.
4824
4825 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
4826
4827         * c-common.h (RID_FIRST_CXX0X): New.
4828         (RID_LAST_CXX0X): New.
4829         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
4830         by -Wall.
4831         * c.opt (Wc++0x-compat): New.
4832         * doc/invoke.texi (-Wc++0x-compat): Document.
4833
4834 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4835
4836         * builtins.c (fold_builtin_carg): New.
4837         (fold_builtin_1): Use it.
4838
4839 2007-01-24  Jan Hubicka  <jh@suse.cz>
4840
4841         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
4842
4843         * ipa-inline.c (initial_insns, max_insns): Delete.
4844         (compute_max_insns): New function.
4845         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
4846         of insns as base for code growth.
4847         (cgraph_decide_inlining): Make initial_insns local; do not compute
4848         max_insns.
4849         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
4850         * doc/invoke.texi (inline-unit-growth): Update docs.
4851
4852 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
4853
4854         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
4855         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
4856         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
4857         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
4858         for CPUs that have PTA_CX16 set.
4859
4860         PR middle-end/27416
4861         * gimplify.c (omp_check_private): New function.
4862         (gimplify_scan_omp_clauses): Use it for
4863         firstprivate/lastprivate/reduction.
4864
4865         PR middle-end/30494
4866         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
4867         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
4868
4869         PR middle-end/30421
4870         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
4871         If lower_lastprivate_clauses emits some statements, append them
4872         to dlist rather than body_p and to body_p append an initializer.
4873         (lower_omp_for): Adjust caller.
4874
4875 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
4876
4877         * target.h (globalize_decl_name): New.
4878         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
4879         * output.h (default_globalize_decl_name): New.
4880         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
4881         globalize_label.
4882         (globalize_decl): Ditto.
4883         (default_globalize_decl_name): New.
4884         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
4885         (ia64_handle_version_id_attribute): New.
4886         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
4887         (ia64_asm_output_external): Use globalize_decl_name instead
4888         of globalize_label.
4889         * doc/extend.texi (version_id): New pragma.
4890         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
4891
4892 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4893
4894         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
4895         _uleb128_t and _Unwind_SWord with _sleb128_t.
4896         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
4897         uw_frame_state_for, uw_update_context_1): Likewise.
4898         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
4899         * unwind-pe.h (read_uleb128, read_sleb128,
4900         read_encoded_value_with_base): Likewise.
4901         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
4902
4903 2007-01-24  Richard Guenther  <rguenther@suse.de>
4904
4905         * builtins.c (expand_builtin_cexpi): Get the fndecl
4906         for cexp in the correct way.
4907
4908 2007-01-24  Jan Hubicka  <jh@suse.cz>
4909
4910         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
4911
4912 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
4913
4914         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
4915         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
4916         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
4917         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
4918         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
4919         __SIZEOF_PTRDIFF_T__.
4920         * doc/cpp.texi: Documentation for the new builtin macros added.
4921
4922 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
4923
4924         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
4925         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
4926         instead of operands[2] to avoid access past the end of array.
4927
4928 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
4929
4930         * reload1.c (emit_reload_insns): Pass the reload register
4931         for a non-spill output reload through forget_old_reloads_1.
4932
4933 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
4934
4935         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4936         _SOFT_DOUBLE if doubles use software floating-point.
4937         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
4938         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
4939         * config/rs6000/darwin-ldouble.c: Also compile functions for
4940         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
4941         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
4942         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
4943         commented-out long double override.
4944         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
4945         * config/rs6000/eabispe.h: Likewise.
4946         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
4947         long double for non-SPE.
4948         (rs6000_handle_option): Likewise.
4949         (invalid_e500_subreg): Disallow more subregs involding DImode,
4950         DFmode, TImode or TFmode.
4951         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
4952         E500 double.
4953         (legitimate_lo_sum_address_p): Also check for TFmode for E500
4954         double.
4955         (rs6000_legitimize_address): Also handle TFmode for E500 double.
4956         (rs6000_legitimize_reload_address): Also handle TFmode for E500
4957         double.
4958         (rs6000_legitimate_address): Also check for TFmode for E500
4959         double.
4960         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
4961         (spe_build_register_parallel): Handle TFmode and TCmode.
4962         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
4963         double.
4964         (function_arg): Handle TFmode and TCmode for E500 double.
4965         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
4966         in general.
4967         (print_operand): Handle TFmode and TImode for %y.
4968         (rs6000_generate_compare): Handle TFmode comparisons for E500
4969         double.
4970         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
4971         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
4972         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
4973         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
4974         TFmode for E500 double.
4975         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
4976         (floatsidf2): Enable for E500 double.
4977         (movtf_softfloat): Use rs6000_nonimmediate_operand.
4978         (extenddftf2): Change to extenddftf2_fprs.
4979         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
4980         depending on TARGET_E500_DOUBLE.
4981         (extendsftf2): Enable for E500 double.
4982         (trunctfdf2): Enable for E500 double.
4983         (trunctfsf2): Change to trunctfsf2_fprs.
4984         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
4985         depending on TARGET_E500_DOUBLE.
4986         (floatsitf2): Enable for E500 double.
4987         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
4988         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
4989         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
4990         (negtf2): Change to negtf2_internal.
4991         (negtf2): New expander.
4992         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
4993         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
4994         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
4995         (movdi_internal32): Use rs6000_nonimmediate_operand.
4996         (unnamed splitter): Likewise.
4997         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
4998         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
4999         (SPE64TF, DITI): New mode macros.
5000         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
5001         modes.
5002         (frob_tf_ti): New.
5003         (frob_<mode>_di_2): New.
5004         (frob_tf_di_8_2): New.
5005         (frob_di_df): Change to frob_di_<mode>; allow more modes.
5006         (frob_ti_tf): New.
5007         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
5008         more modes.
5009         (frob_ti_<mode>_8_2): New.
5010         (frob_ti_tf_2): New.
5011         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
5012         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
5013         TFmode.
5014         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
5015         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
5016         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
5017         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
5018         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
5019         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
5020         tsttflt_gp): New.
5021
5022 2007-01-23  Ian Lance Taylor  <iant@google.com>
5023
5024         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
5025         insn-*.o first.
5026         (OBJS-archive): Reformat, alphabetize.
5027         (OBJS): Change out_object_file to OBJS-md.
5028
5029 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
5030
5031         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
5032         JUMP_P and CALL_P predicates where applicable.
5033         * config/i386/i386.c: Ditto.
5034         * config/i386/i386.md: Ditto.
5035         * config/i386/mmx.md: Ditto.
5036         * config/i386/predicates.md: Ditto.
5037
5038 2007-01-22  Andreas Schwab  <schwab@suse.de>
5039
5040         * config/m68k/m68k.h: Fix comment.
5041
5042 2007-01-22  Jan Hubicka  <jh@suse.cz>
5043
5044         * passes.c (init_optimization_passes): Do not rerun
5045         pass_early_warn_uninitialized.
5046
5047 2007-01-22  Richard Guenther  <rguenther@suse.de>
5048
5049         PR tree-optimization/30038
5050         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
5051         function.
5052         (execute_cse_sincos_1): Likewise.
5053         (execute_cse_sincos): Likewise.
5054         (gate_cse_sincos): Likewise.
5055         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
5056         the cexpi() canonicalization of sincos().
5057         * tree-pass.h (pass_cse_sincos): Declare.
5058         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
5059
5060 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
5061
5062         PR rtl-optimization/29329
5063         * combine.c (replaced_rhs_insn): Rename to i2mod.
5064         (replaced_rhs_value): Rename to i2mod_new_rhs.
5065         (i2mod_old_rhs): New global variable.
5066         (combine_instructions): Adjust for above change.  Save a copy of
5067         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
5068         note are substituted in the second instruction.
5069         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
5070         ditch the note if it pertains to the second eliminated register
5071         and this register is mentioned in i2mod_old_rhs.
5072
5073         Revert:
5074         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
5075
5076         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
5077         the insn to which the note was originally attached.
5078
5079 2007-01-21  Jan Hubicka  <jh@suse.cz>
5080
5081         * ipa-inline.c (inlining_mode): Comment, move up.
5082         (cgraph_decide_inlining_incrementally): Do not perform inlining
5083         itself; fix handling of flattening of self recursive functions.
5084         (cgraph_find_cycles): Remove.
5085         (cgraph_flatten_node): Remove.
5086         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
5087         (try_inline): New function.
5088         (cgraph_early_inlining): Update call of
5089         cgraph_decide_inlining_incrementally.  Apply inlining here.
5090         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
5091
5092 2007-01-21  Dirk Mueller  <dmueller@suse.de>
5093
5094         PR bootstrap/30511
5095         * tree-vrp.c (check_array_bounds): do not warn
5096         about ADDR_EXPR's of ARRAY_REF's which are immediately
5097         used in binary expressions.
5098
5099 2007-01-21  Ira Rosen  <irar@il.ibm.com>
5100
5101         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
5102         read_write_dep and macros for its access.
5103         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
5104         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
5105         argument, call vect_check_interleaving for every independent pair of
5106         data-refs. Mark loads that access the same memory location as a store
5107         in the loop.
5108         (vect_check_dependences): Remove.
5109         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
5110         call, fix the call to vect_analyze_data_ref_dependence.
5111         (vect_analyze_data_ref_access): For statements that access the same
5112         data-ref, check that they are not stores; for loads, check that there
5113         is no store that access the same location.
5114
5115 2007-01-20  Roger Sayle  <roger@eyesopen.com>
5116             Joseph Myers  <joseph@codesourcery.com>
5117
5118         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
5119         (-fdump-rtl-stack): Likewise.
5120         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
5121         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
5122         (-mpt-fixed): Use @minus{} for minus sign.
5123         (Using Precompiled Headers): Fix under/overfull hbox.
5124
5125 2007-01-20  Jan Hubicka  <jh@suse.cz>
5126
5127         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
5128         place within annotation.
5129
5130 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5131
5132         * pa.c (output_move_double): Change array size of xoperands to 4.
5133
5134 2007-01-20  Jan Hubicka  <jh@suse.cz>
5135
5136         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
5137         as temporary.
5138
5139 2007-01-19  Ian Lance Taylor  <iant@google.com>
5140
5141         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
5142         constant to unsigned HOST_WIDE_INT before negating.
5143
5144 2007-01-19  Ian Lance Taylor  <iant@google.com>
5145
5146         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
5147         to unsigned.
5148         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
5149         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
5150         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
5151         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
5152         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
5153         (realloc_vdef, realloc_vuse): Change second parameter to
5154         unsigned.
5155         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
5156         fields to unsigned.
5157         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
5158         unsigned. Change x and lim locals to unsigned.
5159         (realloc_vdef, realloc_vuse): Change num_elem parameter to
5160         unsigned.
5161         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
5162         (copy_virtual_operands): Change i and n locals to unsigned.
5163
5164 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5165
5166         PR middle-end/29335
5167         * builtins.c (fold_builtin_1): Handle builtin fdim.
5168
5169 2007-01-20  Jan Hubicka  <jh@suse.cz>
5170
5171         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
5172         * tree-ssa-structalias.c (compute_points_to_sets): Do call
5173         init_alias_heapvars.
5174         (init_alias_heapvars): Initialize only when not already initialized.
5175         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
5176
5177 2007-01-19  Roger Sayle  <roger@eyesopen.com>
5178
5179         * common.opt (fsigned-zeros): New command line option.
5180         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
5181         of flag_unsafe_math_optimizations.
5182         * opts.c (set_fast_math_flags): The -ffast-math command line option
5183         implies -fno-signed-zeros.
5184         (fast_math_flags_set_p): Likewise.
5185
5186         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
5187         the documentation of -ffast-math appropriately.  Wrap long lines.
5188
5189 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
5190
5191         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
5192         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
5193
5194 2007-01-19  Tomas Bily  <tbily@suse.cz>
5195
5196         * cgraphunit.c (cgraph_finalize_function): Updating of pid
5197         * tree-profile.c:
5198         (tree_init_ic_make_global_vars): New function
5199         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
5200         (tree_gen_ic_profiler): New function
5201         (tree_gen_ic_func_profiler): New function
5202         (tree_profiling): Added calling of tree_gen_ic_func_profiler
5203         (tree_profile_hooks): Added hook for indirec/virtual calls
5204         * value-prof.c (tree_find_values_to_profile): New case for
5205         indirect calls
5206         (tree_values_to_profile): Call for determining indirect/virtual
5207         counters
5208         (tree_indirect_call_to_profile): New function
5209         (tree_ic_transform): New function
5210         (tree_ic): New function
5211         (find_func_by_pid): New function
5212         (init_pid_map): New function
5213         (tree_value_profile_transformations): Added check for
5214         indirect/virtual call transformation
5215         * value-prof.h (enum hist_type): New counter type for
5216         indirect/virtual calls
5217         (profile_hooks): Added new hook for profiling indirect/virtual
5218         calls
5219         * profile.c (instrument_values): New case for indirect/virtual
5220         call added
5221         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
5222         (GCOV_COUNTER_V_INDIR): New counter type
5223         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
5224         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
5225         call added
5226         * cgraph.c: Definition of cgraph_max_pid
5227         (cgraph_create_node): Default init of pid attribute
5228         * cgraph.h: Declaration of cgraph_max_pid
5229         (struct cgraph_node): Added pid attribute
5230         * libgcov.c (__gcov_indirect_call_profiler): New function
5231         (__gcov_one_value_profiler_body): New function
5232         (__gcov_one_value_profiler): Body was moved to
5233         __gcov_one_value_profiler_body and calls it
5234
5235 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
5236
5237         * doc/gty.texi (Options): Document the mark_hook option to GTY.
5238         * gengtype.c (write_types_data, write_func_for_structure,
5239         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
5240         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
5241         (walk_type, write_func_for_structure): Generate the mark_hook if
5242         needed.
5243
5244 2007-01-19  Jan Hubicka  <jh@suse.cz>
5245
5246         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
5247         'early' argument take inlining mode argument specifying whether to
5248         inline for size/speeed or all functions; add support for flattening;
5249         improve dumpting.
5250         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
5251
5252 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5253
5254         PR c++/17947
5255         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
5256         the name of the declared identifier.
5257
5258 2007-01-19  Dirk Mueller  <dmueller@suse.de>
5259
5260         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
5261         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
5262         duplicate evaluation.
5263
5264 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
5265
5266         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
5267         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
5268         to XFMode, use acosxf2 and truncate result to requested mode.
5269         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
5270         (asin<mode>2): Similarly, with asin expanders.
5271         (*fscalexf4_i387): Rename from *fscalexf4.
5272         (expNcorexf3): New expander.
5273         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
5274         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
5275         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
5276         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
5277         patterns for SSE math.
5278         (exp10<mode>2): Similarly, with exp10 expanders.
5279         (exp2<mode>2): Similarly, with exp2 expanders.
5280         (expm1<mode>2): Similarly, with expm1 expanders.
5281         (ldexp<mode>3): Similarly, with ldexp expanders.
5282         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
5283         Use gen_truncxf<mode>2_i387_noop to truncate result.
5284
5285 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5286
5287         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
5288         for ColdFire targets.
5289
5290 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5291             Richard Sandiford  <richard@codesourcery.com>
5292
5293         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
5294         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
5295         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
5296         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
5297         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
5298         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
5299
5300 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5301
5302         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
5303         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
5304         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
5305         (*adddi_dilshr32_cf): New pattern.
5306         (adddi3, subdi3): Remove first alternatives.
5307
5308 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5309
5310         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
5311         implemented using move.l, do not use its cc result for floating-point
5312         comparisons.
5313
5314 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5315
5316         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
5317         from accepting 's' constraints if flag_pic.
5318
5319 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5320
5321         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
5322         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
5323         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
5324         condition from TARGET_68881 to TARGET_HARD_FLOAT.
5325
5326 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
5327
5328         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
5329         ColdFire alternatives.
5330         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
5331         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
5332         architectures that support ff1 instruction.
5333
5334 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5335             Julian Brown  <julian@codesourcery.com>
5336
5337         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
5338         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
5339         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
5340         Add commentary.
5341
5342 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
5343
5344         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
5345         and return a bool.
5346         (output_move_const_into_data_reg, output_move_simode_const): Delete.
5347         * config/m68k/m68k.c (const_method, const_int_cost): Take a
5348         HOST_WIDE_INT instead of an rtx.
5349         (m68k_rtx_costs): Update call accordingly.
5350         (output_move_const_into_data_reg): Likewise.  Fix formatting.
5351         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
5352         Return a bool.
5353         (output_move_simode_const): Update calls after above changes.
5354         Rework to use automatic variables and predicates like MEM_P.
5355         * config/m68k/m68k.md (pushexthisi_const): Update call to
5356         valid_mov3q_const.
5357
5358 2007-01-19  Dirk Mueller  <dmueller@suse.de>
5359
5360         * tree-ssa-alias.c (perform_var_substitution): Fix typo
5361         in dump_flags test.
5362
5363 2007-01-19  Richard Guenther  <rguenther@suse.de>
5364
5365         * builtins.c (expand_builtin_cexpi): Fall back to expanding
5366         via cexp in case sincos is not available.
5367
5368 2007-01-19  Richard Guenther  <rguenther@suse.de>
5369
5370         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
5371         * defaults.h (TARGET_HAS_SINCOS): Default to off.
5372         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
5373         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
5374         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
5375         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
5376         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
5377         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
5378
5379 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
5380
5381         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
5382         New insn patterns.
5383         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
5384         (atan2xf3): Directly generate RTL pattern.
5385         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
5386         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
5387         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5388         disable patterns for SSE math.
5389         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
5390         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
5391         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5392         disable patterns for SSE math.
5393
5394 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
5395
5396         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
5397
5398 2007-01-18  Roger Sayle  <roger@eyesopen.com>
5399
5400         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
5401         VIEW_CONVERT_EXPR to the same type as it's operand.
5402
5403 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
5404
5405         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
5406         configured for long double 128.
5407
5408 2007-01-18  Mike Stump  <mrs@apple.com>
5409
5410         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
5411         error.
5412
5413 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
5414
5415         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
5416         type correct.
5417
5418 2007-01-18  Jan Hubicka  <jh@suse.cz>
5419
5420         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
5421         greater than NUM_VOP_FREE_BUCKETS.
5422
5423 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
5424
5425         * tree-ssa-structalias.c: Update comments.
5426         (ptabitmap_obstack): Removed.
5427         (pta_obstack): New.
5428         (oldpta_obstack): Ditto.
5429         (stats): Add a few members.
5430         (struct variable_info): Remove node, complex, address_taken, and
5431         indirect_target members. Add oldsolution member.
5432         (new_var_info): Do not initialize removed members.
5433         (constraint_expr_type): Remove INCLUDES.
5434         (constraint_graph): Add size, implicit_preds, rep,
5435         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
5436         (FIRST_REF_NODE): New macro.
5437         (LAST_REF_NODE): Ditto.
5438         (FIRST_ADDR_NODE): Ditto.
5439         (find): New function.
5440         (unite): Ditto.
5441         (dump_constraint): Do not handle INCLUDES.
5442         (insert_into_complex): Do not insert duplicate constraints.
5443         (condense_varmap_nodes): Renamed and rewritten into ...
5444         (merge_node_constraints): This. Also fix bug in handling of
5445         offseted copy constraints.
5446         (clear_edges_for_node): No longer need to deal with preds at all,
5447         or removing associated preds/succs.
5448         (merge_graph_nodes): Deal with indirect_cycles.
5449         Don't deal with predecessors.
5450         (add_implicit_graph_edge): New function.
5451         (add_pred_graph_edge): Ditto.
5452         (add_graph_edge): Don't deal with predecessors.
5453         (build_constraint_graph): Removed.
5454         (build_pred_graph): New function.
5455         (build_succ_graph): Ditto.
5456         (struct scc_info): Removed in_component. Added roots, dfs, and
5457         node_mapping. Remove visited_index, unification_queue.
5458         (scc_visit): Deal with union-find we do now.
5459         Deal with cycles with REF nodes.
5460         (collapse_nodes): Renamed and rewritten to ...
5461         (unify_nodes): This.
5462         (process_unification_queue): Removed.
5463         (topo_visit): Cleanup
5464         (do_da_constraint): Use find.
5465         (do_sd_constraint): Ditto.
5466         (do_ds_constraint): Ditto.
5467         (do_complex_constraint): Ditto.
5468         (init_scc_info): Update for removed and added members.
5469         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
5470         (find_indirect_cycles): This.
5471         (equivalence_class): New variable.
5472         (label_visit): New function.
5473         (perform_variable_substitution): Rewritten.
5474         (free_var_substitution_info): New function.
5475         (find_equivalent_node): Ditto.
5476         (move_complex_constraints): Ditto.
5477         (eliminate_indirect_cycles): Ditto.
5478         (solve_graph): Only propagate changed bits.
5479         Use indirect cycle elimination.
5480         Use find.
5481         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
5482         (tree_id_eq): Renamed to ...
5483         (tree_vi_eq): This. Update for member change
5484         (insert_id_for_tree): Renamed and rewritten to ...
5485         (insert_vi_for_tree): This.
5486         (lookup_id_for_tree): Renamed and rewritten to ...
5487         (lookup_vi_for_tree): This.
5488         (get_id_for_tree): Renamed and rewritten to ...
5489         (get_vi_for_tree): Ditto.
5490         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
5491         (process_constraint): Don't handle INCLUDES.
5492         Remove special ADDRESSOF case.
5493         (find_func_aliases): Rewrite to use vi functions instead of id
5494         ones.
5495         (create_function_info_for): Ditto.
5496         (create_variable_info_for): Ditto.
5497         (intra_create_variable_infos): Ditto.
5498         (merge_smts_into): Ditto.
5499         (find_what_p_points_to): Ditto.
5500         (init_base_vars): Ditto.
5501         (init_alias_vars): Ditto.
5502         (remove_preds_and_fake_succs): New function.
5503         (dump_sa_points_to_info): Dump new stats.
5504         (dump_solution_for_var): Use find.
5505         (set_used_smts): Fix formatting.
5506         (compute_points_to_sets): Updated for new functions.
5507         (ipa_pta_execute): Ditto.
5508
5509 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5510             Richard Sandiford  <richard@codesourcery.com>
5511
5512         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
5513         parallels.
5514         * calls.c (expand_call): If the return value is a PARALLEL,
5515         extract its first member.
5516         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
5517         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
5518         use FUNCTION_EXTRA_EPILOGUE.
5519         (m68k_function_value): Return a PARALLEL if the return value
5520         is of a pointer type.
5521         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
5522         (FUNCTION_EXTRA_EPILOGUE): Remove.
5523         * config/m68k/m68k.md (D0_REG): New constant.
5524
5525 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5526
5527         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
5528         output a NOP for empty epilogues.
5529
5530 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5531
5532         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
5533         before function.  Extend register save check to include all
5534         registers, not just integer ones.
5535
5536 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5537
5538         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
5539         (m68k_use_return_insn): ...this.
5540         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
5541         * config/m68k/m68k.c (use_return_insn): Rename to...
5542         (m68k_use_return_insn): ...this.
5543         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
5544         of USE_RETURN_INSN.
5545
5546 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5547
5548         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
5549         nearest even, fix denormal rounding overflow.
5550
5551 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5552
5553         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
5554         f%$smove and f%$move.
5555         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
5556         (extendsfdf2_cf): Use fdmove instead of f%&move.
5557         (truncdfsf2_cf): Use fsmove instead of f%$smove.
5558         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
5559
5560 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5561
5562         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
5563         GPR<-GPR moves.
5564
5565 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5566
5567         * real.h (real_format): Add a canonical_nan_lsbs_set field.
5568         (coldfire_single_format): Declare.
5569         (coldfire_double_format): Likewise.
5570         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
5571         of qnan_msb_set to determine the lower bits of a canonical
5572         NaN significand.
5573         (encode_ieee_double): Likewise.
5574         (encode_ieee_quad): Likewise.
5575         (ieee_single_format): Initialize canonical_nan_lsbs_set.
5576         (mips_single_format): Likewise.
5577         (ieee_double_format): Likewise.
5578         (mips_double_format): Likewise.
5579         (ieee_extended_motorola_format): Likewise.
5580         (ieee_extended_intel_96_format): Likewise.
5581         (ieee_extended_intel_128_format): Likewise.
5582         (ieee_extended_intel_96_round_53_format): Likewise.
5583         (ibm_extended_format): Likewise.
5584         (mips_extended_format): Likewise.
5585         (ieee_quad_format): Likewise.
5586         (mips_quad_format): Likewise.
5587         (vax_f_format): Likewise.
5588         (vax_d_format): Likewise.
5589         (vax_g_format): Likewise.
5590         (i370_single_format): Likewise.
5591         (i370_double_format): Likewise.
5592         (decimal_single_format): Likewise.
5593         (decimal_double_format): Likewise.
5594         (decimal_quad_format): Likewise.
5595         (c4x_single_format): Likewise.
5596         (c4x_extended_format): Likewise.
5597         (real_internal_format): Likewise.
5598         (coldfire_single_format): New real_format.
5599         (coldfire_double_format): Likewise.
5600         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
5601         canonical_nan_lsbs_set.
5602         (pdp11_d_format): Likewise.
5603         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
5604         if TARGET_COLDFIRE_CPU.
5605
5606 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5607
5608         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
5609         (output_call, m68k_legitimize_call_address): Declare.
5610         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
5611         parenthesees.  Add support for a 'W' constraint.
5612         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
5613         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
5614         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
5615         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
5616         variables.
5617         (override_options): Initialize them.  Do not set flag_no_function_cse
5618         for TARGET_ID_SHARED_LIBRARY.
5619         (m68k_output_pic_call): Delete.
5620         (m68k_legitimize_call_address): New function.
5621         (print_operand): Remove the %o prefix.  Handle the %p prefix.
5622         (output_call): New function.
5623         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
5624         target address from the GOT if symbolic jumps are not allowed.
5625         * config/m68k/m68k.md (call, general_operand): Do not set
5626         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
5627         Merge separate flag_pic and !flag_pic define_insns into...
5628         (*call, *call_value): ...these new patterns.  Match the address
5629         rather than the containing MEM and require it to be a call_operand.
5630         Use output_call to generate the asm template.
5631         * config/m68k/predicates.md (const_call_operand): New predicate.
5632         (call_operand): Likewise.
5633
5634 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5635
5636         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
5637         (STACK_GROWS_DOWNWARD): Define to 1.
5638         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
5639         comments, emphasizing that these values are only defaults.
5640         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
5641         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
5642
5643 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5644
5645         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
5646
5647 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
5648             Richard Sandiford  <richard@codesourcery.com>
5649
5650         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
5651         (FP_REGNO_P): New macros.
5652         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
5653         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
5654         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
5655         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
5656
5657 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5658
5659         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
5660         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
5661         to $tmake_file.
5662         * config/m68k/t-floatlib: New file, extracting common code from...
5663         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
5664         * config/m68k/t-uclinux: Here.
5665         * config/m68k/fpgnulib.c: Do not compile extendeed precision
5666         routines on ColdFire targets.
5667
5668 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5669
5670         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
5671         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
5672         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
5673         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
5674         explicitly set MOTOROLA to 1.
5675         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
5676
5677 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5678             Nathan Sidwell  <nathan@codesourcery.com>
5679
5680         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
5681         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
5682         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
5683         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
5684         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
5685         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
5686         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
5687         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
5688         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
5689         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
5690         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
5691         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
5692         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
5693         (DBX_REGISTER_NUMBER): Delete.
5694         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
5695         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
5696         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
5697
5698 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5699
5700         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
5701         * config/flat.h: New file.
5702         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
5703         OBJECT_FORMAT_FLAT.
5704         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
5705         indirect references for -msep-data or -mid-shared-library.
5706         Do not use PC-relative code addresses either.
5707         * config/m68k/m68k.c (override_options): Restrict -fPIC error
5708         to -mpcrel.
5709         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
5710         for shared libraries and crt1.o for executables.  Use crti.o and
5711         crtbegin.o.
5712         (ENDFILE_SPEC): Use crtend.o and crtn.o.
5713         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
5714         Do not add -elf2flt or -shared-lib-id options here.
5715         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
5716         Pass -shared-lib-id if -mid-shared-library, taking the library
5717         identifier from -mshared-library-id if given, otherwise
5718         defaulting to 0.
5719         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
5720         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
5721         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
5722         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
5723         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
5724         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
5725         and crtend.o.
5726         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
5727         jump sequence for ISA A and ISA A+.
5728         (PICJUMP): Likewise.
5729
5730 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5731
5732         * config.gcc (m68k-*-uclinux*): Base the port on the common
5733         and m68k GNU/Linux files rather than on the generic ELF ones.
5734         * config/m68k/uclinux.h (TARGET_VERSION): Override.
5735         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
5736
5737 2007-01-18  Julian Brown  <julian@codesourcery.com>
5738             Richard Sandiford  <richard@codesourcery.com>
5739
5740         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
5741         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5742         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
5743         before redefining.
5744         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
5745         80 unconditionally.
5746         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
5747
5748 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
5749
5750         * doc/install.texi: Document m68k-uclinuxoldabi.
5751         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
5752         * config/m68k/uclinux-oldabi.h: New file, copied from
5753         config/m68k/uclinux.h.
5754
5755 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5756
5757         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
5758         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
5759         (m32r_compute_frame_size): Use unsigned for regno.
5760         (m32r_reload_lr): Use gen_frame_mem.
5761         (pop): New.
5762         (m32r_output_function_epilogue): Don't output the function epilogue
5763         textually here.
5764         (m32r_expand_epilogue): New.
5765         (direct_return): Return false if the function has the interrupt
5766         attribute.
5767         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
5768         * config/m32r/m32r.md (epilogue): New expander.
5769         (return_lr, return_rte): New insns.
5770         (return): Make it expander.
5771         (return_normal): New expander.
5772
5773 2007-01-18  Josh Conner  <jconner@apple.com>
5774
5775         PR target/30485
5776         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
5777         support for UNLE, UNLT, UNGE, and UNGT.
5778
5779 2007-01-18  Jan Hubicka  <jh@suse.cz>
5780
5781         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
5782         * tree-tailcall (add_virtual_phis): Likewise.
5783         (optimize_tail_call): Return TODOs.
5784         (execute_tail_calls): Return TODOs.
5785         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
5786         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
5787         changed.
5788         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
5789         Cleanup cfg using TODO.
5790         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
5791         * passes.c (execute_function_todo): When cleanup did something, remove
5792         unused locals.
5793         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
5794         (make_edges): Don't cleanup_cfg.
5795
5796 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
5797
5798         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
5799         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
5800         operate on the top of stack.
5801         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
5802         register handling of instructions that output to the second
5803         stack slot.
5804         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
5805         (move_for_stack_reg): Special-case check for dead destination
5806         stack slot for constant load of 1.0 inside UNSPEC_TAN.
5807
5808         * config/i386/i386.md (UNSPEC_TAN): New constant.
5809         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
5810         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
5811         to correctly model move of constant 1.0 to top stack slot.
5812         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
5813         (unnamed peephole2 pattern): Remove corresponding peephole2
5814         pattern that optimizes tan insn and loading of constant 1.0.
5815         (tanxf2): Use fptanxf4_i387.
5816         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
5817         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
5818         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
5819         disable patterns for SSE math.
5820         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
5821         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
5822
5823 2007-01-18  Dirk Mueller  <dmueller@suse.de>
5824             Richard Guenther <rguenther@suse.de>
5825
5826         PR diagnostic/8268
5827         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
5828         * common.opt (Warray-bounds): Add new warning option.
5829         * c-opts.c (c_common_handle_option): Define -Warray-bounds
5830         if -Wall is given.
5831         * Makefile.in: make tree-vrp.o depend on toplev.h
5832         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
5833         is enabled.
5834         (check_array_refs, check_array_bounds, check_array_ref): New.
5835
5836 2007-01-18  Jan Hubicka  <jh@suse.cz>
5837
5838         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
5839         (execute_ssa_ccp): Return flags conditionally.
5840         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
5841         changed.
5842         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
5843
5844 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
5845
5846         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
5847         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
5848
5849         * Makefile.c (GTFILES): Add cfglayout.h.
5850         * gengtype.c (open_base_files): Likewise.
5851         * cfglayout.c (cfg_layout_function_footer,
5852         cfg_layout_function_header) Reindent to make gengtype happy.
5853         * cfglayout.h (cfg_layout_function_footer,
5854         cfg_layout_function_header): Add GTY(()) marker.
5855
5856         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
5857
5858 2007-01-18  Ben Elliston  <bje@au.ibm.com>
5859
5860         * genautomata.c (write_automata): Include xstrerror output in the
5861         error message if writing the DFA description file fails.
5862
5863 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
5864
5865         * config/mips/mips-protos.h (mips_output_external): Make it
5866         return void.
5867         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
5868         * config/mips/mips.c (irix_output_external_libcall): Likewise.
5869         (extern_list): Likewise.
5870         (extern_head): Likewise.
5871         (TARGET_ASM_FILE_END): Likewise.
5872         (mips_file_end): Likewise.
5873         (mips_output_external): Rewritten.
5874
5875 2007-01-18  Ben Elliston  <bje@au.ibm.com>
5876
5877         * genpreds.c (write_insn_preds_c): Only write out the function
5878         body for regclass_for_constraint if we have register constraints.
5879
5880 2007-01-17  Tom Tromey  <tromey@redhat.com>
5881
5882         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
5883         * doc/install.texi (Testing): Use sourceware.org.
5884         (Binaries): Likewise.
5885         (Specific): Likewise.
5886         * doc/contrib.texi (Contributors): Use sourceware.org.
5887
5888 2007-01-17  Anatoly Sokolov <aesok@post.ru>
5889
5890         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
5891         (AVR_ENHANCED): Rename to ...
5892         (AVR_HAVE_MUL): ... new.
5893         (avr_enhanced_p): Rename to ...
5894         (avr_have_mul_p): ... new.
5895         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
5896         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
5897         * config/avr/avr.c (avr_enhanced_p): Rename to ...
5898         (avr_have_mul_p): ... new.
5899         (base_arch_s): Rename 'enhanced' to 'have_mul'.
5900         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
5901         'avr_enhanced_p' and 'enhanced'.
5902         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
5903         AVR_HAVE_MUL instead of AVR_ENHANCED.
5904         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
5905         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
5906         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
5907         instead of AVR_ENHANCED.
5908         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
5909         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
5910         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
5911
5912 2007-01-17  Ian Lance Taylor  <iant@google.com>
5913
5914         * vec.h (VEC_reserve_exact): Define.
5915         (vec_gc_p_reserve_exact): Declare.
5916         (vec_gc_o_reserve_exact): Declare.
5917         (vec_heap_p_reserve_exact): Declare.
5918         (vec_heap_o_reserve_exact): Declare.
5919         (VEC_OP (T,A,reserve_exact)): New static inline function, three
5920         versions.
5921         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
5922         negative parameter.
5923         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
5924         (VEC_OP (T,A,copy)) [all versions]: Likewise.
5925         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
5926         * vec.c (calculate_allocation): Add exact parameter.  Change all
5927         callers.
5928         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
5929         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
5930         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
5931         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
5932         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
5933         (vec_heap_p_reserve_exact): New function.
5934         (vec_heap_o_reserve_exact): New function.
5935
5936 2007-01-17  Jan Hubicka  <jh@suse.cz>
5937
5938         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
5939
5940 2007-01-17  Eric Christopher  <echristo@apple.com>
5941
5942         * config.gcc: Support core2 processor.
5943
5944 2007-01-16  Jan Hubicka  <jh@suse.cz>
5945
5946         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
5947         the names, just unlink the chain so we don't crash on dangling pointers
5948         to dead SSA names.
5949
5950 2007-01-16  Jan Hubicka  <jh@suse.cz>
5951
5952         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
5953         * tree-pass.h: Reorder to make IPA passes appear toegher.
5954         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
5955         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
5956         parameters, do not call early inliner.
5957         * ipa-inline.c: Update comments.  Include tree-flow.h
5958         (cgraph_decide_inlining): Do not compute inlining parameters.
5959         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
5960         be called with function context set up.
5961         (pass_ipa_inline): Remove unreachable functions before pass.
5962         (cgraph_early_inlining): Simplify assuming to be called from the
5963         PM as local pass.
5964         (pass_early_inline): New pass.
5965         (cgraph_gate_ipa_early_inlining): New gate.
5966         (pass_ipa_early_inline): Turn into simple wrapper.
5967         (compute_inline_parameters): New function.
5968         (gate_inline_passes): New gate.
5969         (pass_inline_parameters): New pass.
5970         (apply_inline): Move here from tree-optimize.c
5971         (pass_apply_inline): New pass.
5972         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
5973         transforming.
5974         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
5975         doing them by hand.
5976         (tree_function_versioning): Do not allocate dummy struct function.
5977         * tree-inline.h (optimize_inline_calls): Update prototype.
5978         * tree-optimize.c (execute_fixup_cfg): Export.
5979         (pass_fixup_cfg): Remove
5980         (tree_rest_of_compilation): Do not apply inlines.
5981         * tree-flow.h (execute_fixup_cfg): Declare.
5982         * Makefile.in (gt-passes.c): New.
5983         * passes.c: Include gt-passes.h
5984         (init_optimization_passes): New passes.
5985         (nnodes, order): New static vars.
5986         (do_per_function_toporder): New function.
5987         (execute_one_pass): Dump current pass here.
5988         (execute_ipa_pass_list): Don't dump current pass here.
5989
5990 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
5991
5992         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
5993         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
5994
5995 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
5996
5997         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
5998         (strong_alias): Define.
5999         (__gcc_qmul): Provide non-FMA for soft-float.
6000         (__gcc_qdiv): Same.
6001         (__gcc_qneg): New.
6002         (__gcc_qeq): New.
6003         (__gcc_qle): New.
6004         (__gcc_qge): New.
6005         (__gcc_qunord): New.
6006         (__gcc_stoq): New.
6007         (__gcc_dtoq): New.
6008         (__gcc_qtos): New.
6009         (__gcc_qtod): New.
6010         (__gcc_qtoi): New.
6011         (__gcc_qtou): New.
6012         (__gcc_itoq): New.
6013         (__gcc_utoq): New.
6014         (fmsub): New.
6015         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
6016         soft-float functions.
6017         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
6018         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
6019         about long double soft float.
6020
6021 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
6022             Tehila Meyzels  <tehila@il.ibm.com>
6023
6024         * tree-vectorizer.h (is_pattern_stmt_p): New.
6025         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
6026         formatting (tabs instead of spaces). Cleanup and clarify setting
6027         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
6028         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
6029         (vectorizable_type_demotion): Check that types are integral.
6030         (vectorizable_type_promotion): Likewise.
6031         (vectorizable_store): Fix typo.  Eliminate new-line at end of
6032         comments.
6033
6034 2007-01-16  Jan Hubicka  <jh@suse.cz>
6035
6036         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
6037         cgraph edges too.
6038
6039 2007-01-15  Eric Christopher  <echristo@apple.com>
6040
6041         * ifcvt.c: Include vec.h, vecprim.h.
6042         (check_cond_move_block): New argument regs.
6043         Reorganize. Add registers used to regs.
6044         (cond_move_process_if_block): Use regs set above as
6045         loop bounds.
6046
6047 2007-01-15  Eric Christopher  <echristo@apple.com>
6048
6049         * config/darwin.h: Update copyright.
6050         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
6051         (LINK_COMMAND_SPEC): Add -u.
6052         (LINK_SPEC): Fix umbrella for above.
6053
6054 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
6055
6056         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
6057         glibc CVS.
6058
6059 2007-01-15  Tom Tromey  <tromey@redhat.com>
6060
6061         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
6062         * doc/install.texi (Testing): Don't mention jacks.
6063         (Configuration): Document --enable-java-maintainer-mode.  Move
6064         --with-java-home to libgcj-specific section.  Document
6065         --with-ecj-jar.
6066         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
6067
6068 2007-01-15  Jan Hubicka  <jh@suse.cz>
6069
6070         * tree-ssa-dce.c (DCE_TODOs): New.
6071         (propagate_necessity): Return if something changed.
6072         (eliminate_unnecessary_stmts): Likewise.
6073         (perform_tree_ssa_dce): Return TODO flags when needed.
6074         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
6075
6076 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
6077
6078         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
6079         (fyl2x_extend<mode>xf3_i387): New insn pattern.
6080         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
6081         patterns using X87MODEF12 mode macro.  Extend operand 1
6082         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
6083         (log10<mode>2): Ditto.
6084         (log2<mode>2): Ditto.
6085         (log1p<mode>2): Ditto.
6086         (logb<mode>2): Ditto.
6087         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
6088         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
6089         (*fxtractxf3_i387): Rename from *fxtractxf3.
6090         (fxtract_extend<mode>xf3_i387): New insn pattern.
6091         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
6092         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
6093         and gen_fyl2xxf3_i387().
6094
6095 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
6096
6097         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
6098         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
6099         get_loop_exit_edges.  Changed return type to bool.
6100         * cfgloop.h (fix_loop_placement): Declaration removed.
6101
6102 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
6103
6104         * param.h (MIN_VECT_LOOP_BOUND): New.
6105         * params.def (MIN_VECT_LOOP_BOUND): New.
6106         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
6107         argument - minimum threshold for number of iterations.
6108         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
6109         argument to declaration.
6110         * tree-vect-analyze.c (vect_analyze_operations): Check value of
6111         MIN_VECT_LOOP_BOUND.
6112         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
6113         slpeel_tree_peel_loop_to_edge with additional argument.
6114         (vect_do_peeling_for_alignment): Likewise.
6115         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
6116
6117 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
6118
6119         PR target/30413
6120         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
6121         operands of size 1.
6122
6123 2007-01-14  Jan Hubicka  <jh@suse.cz>
6124
6125         * tree-dfa.c (remove_referenced_var): New function.
6126         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
6127         prune referenced vars list too.
6128         * tree-flow.h (remove_referenced_var): Declare.
6129
6130 2007-01-14  Jan Hubicka  <jh@suse.cz>
6131
6132         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
6133         separately.
6134         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
6135         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
6136         * except.h (verify_eh_throw_table_statements): Kill prototype.
6137         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
6138         into call exrepssions.
6139         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
6140         eh trhow verifier.
6141         * tree-cfg.c: Include pointer-set.h.
6142         (verify_node_sharing): Work on pointer set.
6143         (verify_eh_throw_stmt_node): New.
6144         (verify_stmts): Use pointers sets, verify throw_stmt.
6145
6146 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
6147
6148         * ipa-reference.c (analyze_function): Consider also addresses taken
6149         in phi nodes.
6150
6151 2007-01-12  Roger Sayle  <roger@eyesopen.com>
6152
6153         * c-typeck.c (null_pointer_constant_p): Replace use of
6154         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
6155         (build_c_cast): Likewise.
6156
6157 2007-01-12  Roger Sayle  <roger@eyesopen.com>
6158
6159         * tree.h (force_fit_type_double): Remove unused final argument.
6160         * c-common.c (constant_expression_warning): Replace use of
6161         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
6162         (convert_and_check): Likewise.
6163         (shorten_compare): Update call to force_fit_type_double.
6164         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
6165         * convert.c (convert_to_pointer): Update call to
6166         force_fit_type_double.
6167         * fold-const.c (force_fit_type_double): Remove overflowed_const
6168         argument.
6169         (int_const_binop, fold_convert_const_int_from_int,
6170         fold_convert_const_int_from_real, fold_div_compare,
6171         fold_sign_changed_comparison, fold_unary, fold_negate_const,
6172         fold_abs_const, fold_not_const): Remove the final argument from
6173         calls to force_fit_type_double.
6174
6175 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6176
6177         * configure.ac: Set insn to "nop" for spu-*-* also.
6178         * configure: Regenerate.
6179
6180 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
6181
6182         * builtins.def : Add BUILT_IN_FREE.
6183
6184 2007-01-12  Jan Hubicka  <jh@suse.cz>
6185
6186         PR tree-optimization/30443
6187         * tree-inline.c (tree_function_versioning): Do not optimize when
6188         cloning for inlining.
6189
6190 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
6191
6192         * doc/loop.texi: Document recording of loop exits.
6193         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
6194         (update_single_exits_after_duplication,
6195         update_single_exit_for_duplicated_loop,
6196         update_single_exit_for_duplicated_loops): Removed.
6197         (duplicate_loop_to_header_edge): Do not call
6198         update_single_exits_after_duplication and
6199         update_single_exit_for_duplicated_loops.
6200         (loop_version): Do not update single_exit information.
6201         (fix_loop_structure): Use record_loop_exits instead of
6202         mark_single_exit_loops.
6203         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
6204         the lists of loop exits.
6205         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
6206         split_edge, merge_blocks): Update the lists of loop exits.
6207         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
6208         loop_optimizer_init.
6209         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
6210         of mark_single_exit_loops.
6211         (loop_optimizer_finalize): Call release_recorded_exits.
6212         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
6213         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
6214         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
6215         update single exit information.
6216         * lambda-code.c (perfect_nestify): Ditto.
6217         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
6218         (mark_single_exit_loops): Removed.
6219         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
6220         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
6221         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
6222         functions.
6223         (get_loop_exit_edges, single_exit): Use recorded exit lists.
6224         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
6225         (verify_loop_structure): Verify consistency of the exit lists.
6226         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
6227         (set_single_exit): Removed.
6228         * cfgloop.h (struct loop_exit): New function.
6229         (struct loop): single_exit_ field replaced by exits field.
6230         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
6231         (struct loops): Added exits hash.
6232         (mark_single_exit_loops, set_single_exit): Declaration removed.
6233         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
6234
6235 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6236
6237         * doc/invoke.texi: Avoid use of @headitem.
6238
6239 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6240
6241         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
6242
6243 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6244
6245         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
6246         list of targets.
6247
6248 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
6249             Richard Sandiford  <richard@codesourcery.com>
6250
6251         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
6252         * config/m68k/m68k.opt: Resort options.
6253         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
6254
6255 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
6256             Richard Sandiford  <richard@codesourcery.com>
6257
6258         * doc/invoke.texi: Document the macros that are defined by
6259         m68k's -mtune and -mhard-float options.
6260         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
6261         (m68k_cpp_cpu_family): Likewise.
6262         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
6263         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
6264         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
6265         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
6266         (m68k_cpp_cpu_family): Likewise.
6267
6268 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6269
6270         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
6271         macros besides mc68000 as tuning macros.  Use a switch statement
6272         to set them and mcpu32.
6273
6274 2007-01-12  Julian Brown  <julian@codesourcery.com>
6275
6276         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
6277         (TARGET_68040_ONLY): Rename to...
6278         (TARGET_68040): ...this.
6279         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
6280         * config/m68k/m68k.md: Likewise.
6281
6282 2007-01-12  Julian Brown  <julian@codesourcery.com>
6283             Nathan Sidwell  <nathan@codesourcery.com>
6284             Richard Sandiford  <richard@codesourcery.com>
6285
6286         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
6287         the -mcpu= argument associated with the --with-cpu setting.
6288         Define M68K_DEFAULT_TUNE to the default -mtune= option,
6289         if different from the one implied by the -mcpu setting.
6290         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
6291         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
6292         * doc/invoke.texi: Mention ColdFire in the introduction to the
6293         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
6294         -mno-div and -mhard-float options.  Make -m68881 a synonym for
6295         -mhard-float.  Document the previously-undocumented -m5206e,
6296         -m528x, -m5307 and -m5407 options.  Tweak the existing option
6297         documentation for consistency.
6298         * doc/install.texi: Mention new --with-cpu arguments.
6299         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
6300         default CPU if neither -mcpu nor -march are specified.
6301         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
6302         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
6303         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
6304         using m68k_tune to decide between families that implement the
6305         same ISA.  Use m68k_tune to set __mcfv4e__.
6306         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
6307         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
6308         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
6309         (FL_ISA_C, FL_ISA_MMU): New macros.
6310         (MASK_COLDFIRE): Delete.
6311         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
6312         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
6313         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
6314         (TARGET_HARD_FLOAT): Do not define here.
6315         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
6316         (TUNE_68000): New macro.
6317         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
6318         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
6319         (TUNE_CFV2): Redefine in terms of m68k_tune.
6320         (uarch_type, target_device, fpu_type): New enums.
6321         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
6322         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
6323         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
6324         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
6325         (FL_FOR_isa_c): New macros.
6326         (m68k_isa): New enum.
6327         (m68k_target_selection): New structure.
6328         (all_devices, all_isas, all_microarchs): New tables.
6329         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
6330         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
6331         (MASK_ALL_CPU_BITS): Delete.
6332         (m68k_find_selection): New function.
6333         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
6334         Map the legacy target options to a combination of the new ones.
6335         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
6336         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
6337         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
6338         settings.
6339         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
6340         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
6341         properties.
6342         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
6343         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
6344         * config/m68k/m68k-devices.def: New file.
6345
6346 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6347             Nathan Sidwell  <nathan@codesourcery.com>
6348
6349         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
6350         (SUBTARGET_EXTRA_SPECS): New macros.
6351         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
6352         use %(asm_cpu_spec) instead.
6353         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
6354         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
6355         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
6356         (EXTRA_SPECS): Rename to...
6357         (SUBTARGET_EXTRA_SPECS): ...this.
6358
6359 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
6360             Richard Sandiford  <richard@codesourcery.com>
6361             Julian Brown  <julian@codesourcery.com>
6362
6363         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
6364         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
6365         to the configuration's default CPU.
6366         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
6367         Remove default masks.
6368         (m680[012]0-*-*): Set the default with_cpu to the first part of
6369         the target name.
6370         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
6371         (m68k*-*-linux): Extend the --with-cpu handling to...
6372         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
6373         and m68010.  Don't set target_cpu_default2.
6374         * doc/install.texi: Document --with-cpu for m68k.
6375         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
6376         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
6377         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
6378         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
6379         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
6380         (ASM_SPEC): Remove use of %(asm_cpu_default).
6381         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
6382         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
6383         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
6384         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
6385         __HAVE_FPU__ if TARGET_HARD_FLOAT.
6386         (TARGET_DEFAULT): Delete.
6387         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
6388         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
6389         (CPP_CPU_SPEC): Delete.
6390         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
6391         the appropriate string.
6392         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
6393         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
6394         (ASM_SPEC): Don't use %(asm_default_spec).
6395         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
6396         TARGET_DEFAULT and add MASK_68881.
6397         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
6398
6399 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6400
6401         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
6402         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
6403         MASK_68010 alongside MASK_68020.
6404         * doc/invoke.texi: Document -m68010.
6405         * config/m68k/m68k.opt (m68010): New.
6406         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
6407         if TUNE_68010.
6408         (TUNE_68010): New macro.
6409         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
6410         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
6411         (M68K_CPU_m68332): Add MASK_68010.
6412         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
6413         fallback definition.
6414         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
6415         defines.
6416         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
6417         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
6418         to all entries that use MASK_68020.
6419         (output_move_simode_const, output_move_himode, output_move_qimode)
6420         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
6421         instead of TARGET_68020 to select clr behavior.  Remove comment
6422         about there being no TARGET_68010.
6423         * config/m68k/m68k.md: Likewise throughout.
6424
6425 2007-01-12  Julian Brown  <julian@codesourcery.com>
6426
6427         * config/m68k/m68k.h (TARGET_ISAB): New macro.
6428         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
6429         * config/m68k/m68k.md: Likewise.
6430
6431 2007-01-12  Julian Brown  <julian@codesourcery.com>
6432
6433         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
6434         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
6435
6436 2007-01-12  Julian Brown  <julian@codesourcery.com>
6437
6438         * config/m68k/m68k.h (TUNE_68040_60): New macro.
6439         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
6440         * config/m68k/m68k.md: Likewise.
6441
6442 2007-01-12  Julian Brown  <julian@codesourcery.com>
6443             Richard Sandiford  <richard@codesourcery.com>
6444
6445         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
6446         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
6447         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
6448         TARGET_CPU32.
6449         (TARGET_CPU32): Rename to...
6450         (TUNE_CPU32): ...this.
6451         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
6452         (TUNE_CFV2): New macros.
6453         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
6454         remove conditions that are implied by TARGET_68020.
6455         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
6456         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
6457         (m68k_output_function_epilogue): Likewise.
6458         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
6459         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
6460         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
6461         non-68000 timings.  Refactor multiplication and division costs.
6462         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
6463         TUNE_CPU32 instead of TARGET_CPU32.
6464         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
6465         and TUNE_68060 instead of TARGET_68060.
6466         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
6467         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
6468         TARGET_CPU32.
6469         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
6470         && !TARGET_COLDFIRE" to choose between moveq and clr.
6471         Likewise in the unnamed movsf pattern.
6472         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
6473         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
6474         ashiftrt pattern.
6475
6476 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
6477
6478         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
6479         of tabbing before backslashes.
6480
6481 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6482
6483         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
6484         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
6485         (ASM_OUTPUT_INTERNAL_LABEL): Define.
6486
6487 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
6488
6489         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
6490         find_interesting_uses_cond.
6491         (find_interesting_uses_cond): Use extract_cond_operands.
6492         (rewrite_use_compare): Use extract_cond_operands and
6493         force_gimple_operand_bsi.  Do not call update_stmt.
6494         (determine_use_iv_cost_condition): Use extract_cond_operands.
6495         Return cheaper of using original bound and changing the exit bound.
6496
6497 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
6498
6499         PR tree-optimization/29516
6500         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
6501         most_expensive_mult_to_index, addr_to_parts,
6502         create_mem_ref, maybe_fold_tmr): Make the type of
6503         fields of TARGET_MEM_REF sizetype.
6504         (move_fixed_address_to_symbol, move_pointer_to_base):
6505         New functions.
6506         * tree.def (TARGET_MEM_REF): Add comment on types of
6507         the operands.
6508
6509 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
6510
6511         * c-common.c (vector_types_convertible_p): Treat opaque types as
6512         always convertible if they have the same size, but not otherwise.
6513
6514 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
6515
6516         * ifcvt.c (struct noce_if_info): Add comments to the fields.
6517         Remove the b_unconditional field.
6518         (noce_try_sign_mask): Do not look at b_unconditional.
6519         (noce_process_if_block): Do not use merge_if_blocks.  Update
6520         the CFG here.  Do not set b_unconditional.
6521         (cond_move_process_if_block): Likewise.
6522         (find_cond_trap): Likewise.
6523         (check_cond_move_block): Require simple jump insns at the end
6524         of the basic block.
6525
6526 2007-01-11  Jan Hubicka  <jh@suse.cz>
6527
6528         PR tree-optimization/1046
6529         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
6530         when alias info is not ready.
6531         (pass_tail_recursion): Do not require aliasing.
6532         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
6533         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
6534         * tree-ssa-copy.c (pass_copy_prop): Likewise.
6535         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
6536         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
6537         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
6538         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
6539         before inlining.
6540         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
6541         When aliasing is not build, mark statement as volatile.
6542
6543 2007-01-11  Tom Tromey  <tromey@redhat.com>
6544
6545         PR preprocessor/15185, PR preprocessor/20989:
6546         * doc/cppopts.texi <-MT>: Update description of algorithm for
6547         computing default target.
6548         <-M, -MD>: Reword "basename" text.
6549
6550 2007-01-11  Roger Sayle  <roger@eyesopen.com>
6551
6552         * builtins.c (expand_builtin_pow, expand_builtin_powi,
6553         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
6554         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
6555         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
6556         fold_builtin_bswap, real_constp, fold_builtin_pow,
6557         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
6558         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
6559         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
6560         * convert.c (convert_to_pointer): Likewise.
6561         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
6562         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
6563         const_binop, fold_convert_const_int_from_int,
6564         fold_convert_const_int_from_real,
6565         fold_convert_const_real_from_real, sign_bit_p,
6566         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
6567         fold_sign_changed_comparison, fold_unary, fold_comparison,
6568         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
6569         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
6570         * print-tree.c (print_node_brief, print_node): Likewise.
6571         * stor-layout.c (place_field, layout_type): Likewise.
6572         * tree-chrec.c (keep_cast): Likewise.
6573         * tree.c (build_vector, build_real, build_real_from_int_cst,
6574         build_complex): Likewise.
6575
6576 2007-01-11  Roger Sayle  <roger@eyesopen.com>
6577
6578         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
6579         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
6580
6581 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
6582
6583         * configure.ac (strict1_warn): Rename to strict_warn.
6584         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
6585         cc_set_by_configure, quoted_cc_set_by_configure,
6586         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
6587         all_boot_languages, all_stagestuff): Remove.
6588         (target_list): Remove bootstrap targets.
6589         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
6590         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
6591         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
6592         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
6593         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
6594         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
6595         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
6596         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
6597         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
6598         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
6599         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
6600         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
6601         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
6602         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
6603         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
6604         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
6605         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
6606         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
6607         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
6608         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
6609         (mostlyclean): Adjust.
6610         (clean, distclean): Don't mention bootstrap stuff.
6611         * configure: Regenerate.
6612         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
6613         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
6614         treelang/config-lang.in (stagestuff): Remove.
6615         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
6616         stageprofile, stagefeedback, stagestuff): Remove mention.
6617
6618 2007-01-11  Nick Clifton  <nickc@redhat.com>
6619
6620         * config/mcore/predicates.md (mcore_general_movesrc_operand):
6621         Accept CONSTs.
6622         (mcore_general_movdst_operand): Do not accept CONST_INTs.
6623         (mcore_arith_K_S_operand): Run the test for the S constraint not
6624         the test for the M constraint.
6625         (mcore_addsub_operand): Do not accept integer values that are
6626         larger than 32 bits.
6627         * config/mcore/mcore.md: Remove unused constraints from split.
6628         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
6629         (addsi3): Likewise.
6630         (allocate_stack): Likewise.
6631         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
6632         operands to 32 bits.
6633         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
6634         INTVAL.
6635         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
6636         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
6637         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
6638         mcore_output_bclri, mcore_output_andn, output_inline_const,
6639         mcore_output_move, mcore_output_movedouble): Likewise.
6640         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
6641         (output_inline_const): Likewise.
6642         (output_inline_const): Fix format strings used in sprintf
6643         statements.
6644         * config/mcore/mcore-protos.h: Update prototypes for changed
6645         functions in mcore.c.
6646         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
6647         HOST_WIDE_INT and not int.
6648         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
6649         CONST_OK_FOR_N): Likewise.
6650         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
6651         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
6652         an INTVAL.
6653
6654 2007-01-10  Jan Hubicka  <jh@suse.cz>
6655
6656         * tree-vrp.c (remove_range_assertions): Release defs.
6657         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
6658         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
6659
6660 2007-01-10  Paul Brook  <paul@codesourcery.com>
6661
6662         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
6663         * config/arm/arm.md (mulsi3subsi): New insn.
6664
6665 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
6666
6667         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
6668         (tree_transform_and_unroll_loop): New.
6669         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
6670         Declare.
6671
6672 2007-01-10  Robert Kennedy <jimbob@google.com>
6673
6674         * fold-const.c (fold_comparison): Fold comparisons like (x *
6675         1000 < 0) to (x < 0).
6676
6677 2007-01-10  Ian Lance Taylor  <iant@google.com>
6678
6679         * tree-pretty-print.c (dump_generic_node): Print parentheses when
6680         operands have the same priority.
6681
6682 2007-01-10  Tom Tromey  <tromey@redhat.com>
6683
6684         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
6685         (fold_binary): Likewise.
6686         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
6687         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
6688         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
6689         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
6690         * langhooks.h (struct lang_hooks): Removed field
6691         'can_use_bit_fields_p'.
6692
6693 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
6694
6695         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
6696
6697 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
6698
6699         * function.c (get_last_funcdef_no): New function.
6700         * function.h (get_last_funcdef_no): Declare.
6701         * tree-inline.c (initialize_cfun): Add initialization.
6702         (tree_function_versioning): Cleanup.
6703
6704 2007-01-10  Jan Hubicka  <jh@suse.cz>
6705
6706         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
6707         PHIs.
6708
6709 2007-01-10  Sa Liu  <saliu@de.ibm.com>
6710             Ben Elliston  <bje@au.ibm.com>
6711
6712         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
6713         for SAVE_NONLOCAL and Pmode for any other save level.
6714         * spu-protos.h (spu_restore_stack_block): Declare.
6715         * spu.md (save_stack_block): Remove.
6716         (restore_stack_block): Call spu_restore_stack_block.
6717         * spu.c (spu_restore_stack_block): New function.
6718         (spu_expand_epilogue): Remove old comment.
6719
6720 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
6721
6722         PR tree-optimization/30322
6723         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
6724         (cand_value_at): Return the value as aff_tree.
6725         (may_eliminate_iv): Convert the bound from aff_tree to tree.
6726         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
6727         aff_combination_mult): New functions.
6728         (aff_combination_add): Use aff_combination_add_cst.
6729         (aff_combination_convert): Allow conversions to a wider type.
6730         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
6731         * tree-affine.h (aff_combination_mult): Declare.
6732
6733 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
6734
6735         * doc/tm.texi: Update documentation to reflect reality of exec
6736         and start file search behaviours. Update copyright year.
6737         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
6738         header file directories.
6739
6740 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
6741
6742         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
6743         (*cosxf2): Rename to cosxf2_i387.
6744         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
6745         using X87MODEF12 mode macro. Rename patterns to
6746         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
6747         for SSE math.
6748         (*cosdf2, *cossf2): Ditto.
6749         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
6750         to match extended input operands.
6751         (sincos<mode>3): New expander.
6752         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
6753         insn patterns and corresponding splitters.
6754
6755 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
6756
6757         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
6758         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
6759
6760 2007-01-09  Nicolas Pitre  <nico@cam.org>
6761
6762         PR target/30173
6763         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
6764
6765 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
6766
6767         * target.h (struct gcc_target): New field library_rtti_comdat.
6768         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
6769         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
6770         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
6771         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
6772
6773 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
6774
6775         * doc/invoke.texi (Optimize Options): Correct description of -O0.
6776
6777 2007-01-08  Richard Guenther  <rguenther@suse.de>
6778
6779         * tree.h (force_fit_type_double): Export.
6780         (force_fit_type): Remove.
6781         * fold-const.c (force_fit_type_double): New function.
6782         (force_fit_type): Remove.
6783         (int_const_binop): Use it.
6784         (fold_convert_const_int_from_int): Likewise.
6785         (fold_convert_const_int_from_real): Likewise.
6786         (fold_div_compare): Likewise.
6787         (fold_sign_changed_comparison): Likewise.
6788         (fold_unary): Likewise.
6789         (fold_negate_const): Likewise.
6790         (fold_abs_const): Likewise.
6791         (fold_not_const): Likewise.
6792         * c-common.c (shorten_compare): Use force_fit_type_double.
6793         * convert.c (convert_to_pointer): Likewise.
6794
6795 2007-01-08  Richard Guenther  <rguenther@suse.de>
6796
6797         * tree.h (build_int_cst_wide_type): Export.
6798         * tree.c (build_int_cst_wide_type): New function.
6799         (build_int_cst_wide): Fix comment.
6800         * builtins.c (fold_builtin_object_size): Use build_int_cst
6801         to build -1 or 0 of the correct type.  Use fit_double_type
6802         to check for overflow.
6803         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
6804         to build the mask.
6805         (decode_field_reference): Likewise.
6806         (all_ones_mask_p): Likewise.
6807         (native_interpret_int): Use build_int_cst_wide_type.
6808         (fold_binary): Use build_int_cst_type to build an all-ones
6809         value.
6810         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
6811
6812 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
6813
6814         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
6815
6816 2007-01-09  Ben Elliston  <bje@au.ibm.com>
6817
6818         * genautomata.c (STATS_OPTION): New option.
6819         (stats_flag): New flag.
6820         (gen_automata_option): Handle it.
6821         (initiate_automaton_gen): Ditto.
6822         (write_automata): Output statistics only if stats_flag is
6823         set. Likewise, output time statistics only if time_flag is set.
6824         * doc/md.texi (Processor pipeline description): Document new flag.
6825
6826 2007-01-08  Richard Guenther  <rguenther@suse.de>
6827
6828         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
6829         * tree.c (build_int_cst_type): Likewise.
6830         (size_in_bytes): Don't call force_fit_type on the result.
6831         (int_fits_type_p): Use fit_double_type.
6832         * fold-const.c (fit_double_type): New function.
6833         (force_fit_type): Use it.
6834         * tree.h (fit_double_type): Export.
6835
6836 2007-01-08  Jan Hubicka  <jh@suse.cz>
6837
6838         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
6839         * ipa.c (function_and_variable_visibility): Fix return type.
6840
6841 2007-01-08  Richard Guenther  <rguenther@suse.de>
6842
6843         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
6844         of offset to build the index.
6845         * tree-pretty-print.c (dump_generic_node): Don't build negated
6846         const just for printing.
6847         * c-pretty-print.c (pp_c_integer_constant): Likewise.
6848         * builtins.c (fold_builtin_int_roundingfn): Check if result
6849         fits the type by using force_fit_type and comparing the result.
6850         * predict.c (predict_loops): Use compare_tree_int for comparison.
6851         * tree.c (build_int_cst): Fall back to integer_type_node for
6852         NULL_TREE type.
6853         (build_int_cst_wide): Assert type is non-null.
6854
6855 2007-01-08  Roberto Costa  <roberto.costa@st.com>
6856
6857         * tree-vrp.c (extract_range_from_cond_expr): New.
6858         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
6859         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
6860         as expressions.
6861         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
6862         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
6863         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
6864         used as expressions.
6865         * tree-object-size.c (cond_expr_object_size): New.
6866         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
6867
6868 2007-01-08  Jan Hubicka  <jh@suse.cz>
6869
6870         * tree-ssa-forwprop.c (forward_propagate_into_cond,
6871         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
6872         statement.
6873
6874 2007-01-08  Richard Guenther  <rguenther@suse.de>
6875
6876         PR tree-optimization/23603
6877         * tree-vrp.c (set_value_range_to_truthvalue): New function.
6878         (extract_range_from_binary): Fall back to truthvalue instead of
6879         varying for TRUTH_*_EXPR.
6880         (extract_range_from_comparison): Fall back to truthvalue instead of
6881         varying.
6882         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
6883         if all visited PHI values were constant.
6884
6885 2007-01-08  Jan Hubicka  <jh@suse.cz>
6886
6887         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
6888         (cgraph_analyze_function): break out from ...
6889         (cgraph_finalize_compilation_unit): ... here.
6890         (cgraph_expand_function): Remove forgoten commented out line.
6891         (cgraph_optimize): Analyze functions.
6892
6893 2007-01-08  Jan Hubicka  <jh@suse.cz>
6894
6895         * tree-pas.h (TODO_remove_function): New flag.
6896         (TODO_update*): Renumber.
6897         (pass_ipa_increase_alignment,
6898         pass_ipa_function_and_variable_visibility): New passes.
6899         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
6900         (cgraph_function_and_variable_visibility): Move to ipa.c
6901         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
6902         cgraph_increase_alignment.
6903         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
6904         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
6905         calling tree-inline.
6906         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
6907         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
6908         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
6909         (gate_increase_alignment): New function.
6910         (pass_ipa_increase_alignment): New pass.
6911         * ipa.c: Inline tree-pass.h and timevar.h
6912         (function_and_variable_visibility): Move here from cgraphunit.c
6913         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
6914         * passes.c (init_optimization_passes): Add the two new passes.
6915         (execute_todo): Handle cgraph_remove_functions.
6916
6917 2007-01-08  Nick Clifton  <nickc@redhat.com>
6918
6919         * config/frv/predicates.md (reg_or_0_operand): Accept
6920         CONST_DOUBLEs.
6921
6922 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
6923
6924         * config/bfin/rtems.h, config/bfin/t-rtems: New.
6925         * config.gcc: Add bfin*-rtems*.
6926
6927 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
6928
6929         * c.opt: Add -flax-vector-conversions.
6930         * c-typeck.c (convert_for_assignment): Pass flag to
6931         vector_types_convertible_p to allow emission of note.
6932         (digest_init): Likewise.
6933         * c-opts.c: Handle -flax-vector-conversions.
6934         * c-common.c (flag_lax_vector_conversions): New.
6935         (vector_types_convertible_p): Unless -flax-vector conversions
6936         has been passed, disallow conversions between vectors with
6937         differing numbers of subparts and/or element types.  If such
6938         a conversion is disallowed, possibly emit a note on the first
6939         occasion only to inform the user of -flax-vector-conversions.
6940         The new last argument specifies this.
6941         * c-common.h (flag_lax_vector_conversions): New.
6942         (vector_types_convertible_p): Add extra argument.
6943         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
6944         char_type_node for V*QI type vectors.
6945         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
6946         Update to satisfy new typechecking rules.
6947         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
6948         C and C++ variants.
6949         * doc/invoke.texi (C Dialect Options): Document
6950         -flax-vector-conversions.
6951
6952 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
6953
6954         PR tree-optimization/29877
6955         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
6956         a register variable on the RHS to not be replaceable.
6957
6958 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
6959         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
6960         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
6961         const_simm15, const_pow2, const_npow2): Added.
6962         * config/score/misc.md (insv, extv, extzv, movmemsi,
6963         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
6964         * config/score/score.c (score_address_cost, score_select_cc_mode):
6965         Added.
6966         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
6967         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
6968         Update score_print_operand.
6969         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
6970         Adjust register allocate order and update some macro define.
6971         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
6972         mdx_block_move_straight, mdx_block_move_loop_head,
6973         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
6974         mdx_block_move): Added.
6975         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
6976         mdp_limm): Updated and fix some bug and typo.
6977         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
6978         (movsf, movdf, doloop_end): Added.
6979
6980 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
6981
6982         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
6983         config/arm/thumb2.md: Fix comment typos.
6984         * doc/extend.texi: Fix a typo.
6985
6986 2007-01-07  Eric Christopher  <echristo@apple.com>
6987
6988         * configure.ac: Check for __stack_chk_fail for darwin.
6989         * configure: Regenerate.
6990
6991 2007-01-07  Richard Guenther  <rguenther@suse.de>
6992
6993         * tree-vrp.c (extract_range_from_assert): CSE calls to
6994         compare_values where possible.
6995         (extract_range_from_unary_expr): Likewise.
6996
6997 2007-01-07  Anatoly Sokolov <aesok@post.ru>
6998
6999         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
7000         * config/avr/avr.c (call_insn_operand): Delete function.
7001         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
7002         instead of register number. Use predicates.
7003         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
7004         call_insn_operand): Add.
7005
7006 2007-01-06  Jan Hubicka  <jh@suse.cz>
7007
7008         * tree-pass.h (pass_build_cgraph_edges): Declare.
7009         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
7010         (visited_nodes): Remove.
7011         (cgraph_create_edges): Move to cgraphbuild.c; rename to
7012         build_cgrpah_edges; make visited_nodes local.
7013         (cgraph_process_new_functions): DO not call initialize_inline_failed.
7014         (record_references_in_initializer): Move to cgraphbuild.c
7015         (initialize_inline_failed, rebuild_cgraph_edges,
7016         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
7017         (verify_cgraph_node): Make visited_nodes local.
7018         (cgraph_analyze_function): Do not call cgraph_create_edges and
7019         initialize_inline_failed.
7020         (cgraph_expand_function): Do not call cgraph_lower_function;
7021         assert that function is already lowered.
7022         * Makefile.in (cgraphbuild.o): New.
7023         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
7024         at the end of lowering passes.
7025
7026 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
7027
7028         * ifcvt.c (cond_move_convert_if_block): New function, code
7029         factored out from...
7030         (cond_move_process_if_block): ...here.  Call the new function
7031         on the THEN and ELSE blocks.
7032         (merge_if_block): Do not copy global_live_at_end, merge_blocks
7033         already takes care of this.
7034
7035 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7036
7037         PR c/19978
7038         * tree.h (TREE_OVERFLOW_P): New.
7039         * c-typeck.c (parser_build_unary_op): Warn only if result
7040         overflowed and operands did not.
7041         (parser_build_binary_op): Likewise.
7042         (convert_for_assignment): Remove redundant overflow_warning.
7043         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
7044
7045 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7046
7047         * c-typeck.c (store_init_value): Split over two lines to follow
7048         the GNU coding style.
7049
7050 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
7051
7052         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
7053         __GXX_EXPERIMENTAL_CXX0X__.
7054         * doc/cpp.texi: Same.
7055
7056 2007-01-05  Richard Guenther  <rguenther@suse.de>
7057
7058         PR middle-end/27826
7059         * tree.c (get_narrower): Do not construct COMPONENT_REFs
7060         with mismatched types.  Instead explicitly build a
7061         conversion NOP_EXPR.
7062
7063 2007-01-05  Ian Lance Taylor  <iant@google.com>
7064
7065         * c-common.c (decl_with_nonnull_addr_p): New function.
7066         (c_common_truthvalue_conversion): Call it.
7067         * c-typeck.c (build_binary_op): Likewise.
7068         * c-common.h (decl_with_nonnull_addr_p): Declare.
7069
7070 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
7071
7072         PR c/30360
7073         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
7074         denom against 0.0.
7075
7076 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
7077
7078         * doc/install.texi (Final install): Document the fact that
7079         the GNAT runtime should not be stripped.
7080
7081 2007-01-04  Jan Hubicka  <jh@suse.cz>
7082
7083         * tree-inline.c (fold_marked_statements): Update operand caches
7084         and EH after folding
7085
7086 2007-01-04  Ian Lance Taylor  <iant@google.com>
7087
7088         * c-common.c (check_function_nonnull): Whitespace fix.
7089
7090 2007-01-04  Jan Hubicka  <jh@suse.cz>
7091
7092         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
7093         comitted older version of patch.
7094         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
7095         function, celanup cfg and collect garbage.
7096
7097 2007-01-04  Mike Stump  <mrs@apple.com>
7098
7099         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
7100         (clean): Likewise.
7101
7102 2007-01-04  Eric Christopher  <echristo@apple.com>
7103
7104         * libgcc2.c (__bswapsi2): Use SItype.
7105         (__bswapdi2): Use DItype.
7106         * libgcc2.h: Update for above.
7107
7108 2007-01-04  Paul Brook  <paul@codesourcery.com>
7109
7110         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
7111         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
7112         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
7113         umulsidi3, umulsidi3adddi, smulsi3_highpart,
7114         umulsi3_highpart): Make conditional on !arm_arch6.
7115         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
7116         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
7117         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
7118         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
7119         umulsi3_highpart_v6): New insns.
7120
7121 2007-01-04  Roger Sayle  <roger@eyesopen.com>
7122
7123         * fold-const.c (fold_convert): When casting an expression to void,
7124         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
7125         have a type.  Instead of attempting to build a NOP_EXPR, return
7126         these "special" trees directly.
7127
7128 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
7129
7130         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
7131         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
7132         rs6000_cost->fp not 0 as adjustment for outer NEG.
7133
7134 2007-01-04  Jan Hubicka  <jh@suse.cz>
7135
7136         * cgraph.c (cgraph_release_function_body): New function.
7137         (cgraph_remove_node): Use it.
7138         * cgraph.h (cgraph_release_function_body): Declare.
7139         * cgraphunit.c (cgraph_expand_function): Use it.
7140         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
7141         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
7142         is initialized and while compilation of other function is running.
7143         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
7144         statement CFG annotations from here to ...
7145         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
7146
7147 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
7148
7149         * cfgloop.h (enum li_flags): Make the constants powers of two.
7150
7151 2007-01-04  Jan Hubicka  <jh@suse.cz>
7152
7153         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
7154         set.
7155         (fold_marked_statements): New function.
7156         (optimize_inline_calls, tree_function_versioning): Fold new statements.
7157         * tree-inline.h (copy_body_data): Add statements_to_fold.
7158
7159 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
7160
7161         * config.gcc: Mention libgcc/config.host.
7162         * Makefile.in: Update comments mentioning libgcc.
7163         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
7164         (all.cross, start.encap, rest.encap, rest.cross): Update
7165         dependencies for libgcc move.
7166         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
7167         (clean-target, clean-target-libgcc): Delete.
7168         (srcdirify, GCC_EXTRA_PARTS): New macros.
7169         (libgcc-support, libgcc.mvars): New rules.
7170         (distclean): Remove mention of mklibgcc.
7171         (install): Don't reference INSTALL_LIBGCC.
7172         (install-common): Don't reference EXTRA_PARTS.
7173         (install-libgcc, install-multilib): Delete rules.
7174         * mklibgcc.in: Delete file.
7175         * doc/configfiles.texi: Don't mention mklibgcc.
7176
7177         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
7178         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
7179         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
7180         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
7181         (mklibgcc, ldblspecs): Likewise.
7182
7183         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
7184         (posixpre.def): Use $(T).
7185         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
7186         (SHLIB_SRC, SHLIB_INSTALL): Delete.
7187         (SHLIB_LINK): Make dummy.
7188         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
7189
7190         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
7191
7192         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
7193         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
7194         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
7195         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
7196
7197         * configure.ac (all_outputs): Remove mklibgcc.
7198         * configure: Regenerated.
7199
7200 2007-01-03  Josh Conner  <jconner@apple.com>
7201
7202         PR middle-end/29683
7203         * calls.c (compute_argument_addresses): Set stack and stack_slot
7204         for partial args, too.
7205         (store_one_arg): Use locate.size.constant for the size when
7206         generating a save_area.
7207
7208 2007-01-03  Robert Kennedy <jimbob@google.com>
7209
7210         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
7211         whose definitions are deleted due to basic block merging.
7212
7213 2007-01-03  Paul Brook  <paul@codesourcery.com>
7214
7215         PR target/16634
7216         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
7217         functions.
7218         (use_return_insn): Return 0 for Thumb interrupt functions.
7219         (print_multi_reg): Add rfe argument for IRQ returns.
7220         (arm_output_epilogue): Pop interrupt return address directly into PC.
7221         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
7222
7223 2007-01-03  Paul Brook  <paul@codesourcery.com>
7224
7225         Merge from sourcerygxx-4_1.
7226         * config/arm/thumb2.md: New file.
7227         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
7228         Thumb-2.
7229         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
7230         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
7231         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
7232         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
7233         tables.
7234         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
7235         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
7236         comptibility.
7237         * config/arm/ieee754-sf.S: Ditto.
7238         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
7239         (thumb1_base_register_rtx_p): ... to this.
7240         (thumb_index_register_rtx_p): Rename...
7241         (thumb1_index_register_rtx_p): ... to this.
7242         (thumb_output_function_prologue): Rename...
7243         (thumb1_output_function_prologue): ... to this.
7244         (thumb_legitimate_address_p): Rename...
7245         (thumb1_legitimate_address_p): ... to this.
7246         (thumb_rtx_costs): Rename...
7247         (thumb1_rtx_costs): ... to this.
7248         (thumb_compute_save_reg_mask): Rename...
7249         (thumb1_compute_save_reg_mask): ... to this.
7250         (thumb_final_prescan_insn): Rename...
7251         (thumb1_final_prescan_insn): ... to this.
7252         (thumb_expand_epilogue): Rename...
7253         (thumb1_expand_epilogue): ... to this.
7254         (arm_unwind_emit_stm): Rename...
7255         (arm_unwind_emit_sequence): ... to this.
7256         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
7257         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
7258         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
7259         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
7260         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
7261         thumb2_output_casesi): New functions.
7262         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
7263         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
7264         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
7265         THUMB2_WORK_REGS): Define.
7266         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
7267         arm_condexec_mask, arm_condexec_masklen)): New variables.
7268         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
7269         (arm_override_options): Check new CPU capabilities.
7270         Set new architecture flag variables.
7271         (arm_isr_value): Handle v7m interrupt functions.
7272         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
7273         Thumb-2.
7274         (const_ok_for_arm): Handle Thumb-2 constants.
7275         (arm_gen_constant): Ditto.  Use movw when available.
7276         (arm_function_ok_for_sibcall): Return false for v7m interrupt
7277         functions.
7278         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
7279         (thumb_find_work_register, arm_load_pic_register,
7280         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
7281         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
7282         print_multi_reg, output_mov_long_double_fpa_from_arm,
7283         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
7284         output_mov_double_fpa_from_arm, output_move_double,
7285         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
7286         output_return_instruction, arm_output_function_prologue,
7287         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
7288         arm_output_mi_thunk, thumb_set_return_address): Ditto.
7289         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
7290         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
7291         (arithmetic_instr, shift_op): Use arm_shift_nmem.
7292         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
7293         '!' and 'L'.
7294         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
7295         (thumb_expand_prologue): Use thumb_set_frame_pointer.
7296         (arm_file_start): Output directive for unified syntax.
7297         (arm_unwind_emit_set): Handle stack alignment instruction.
7298         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
7299         Add v6t2, v7, v7a, v7r and v7m.
7300         (RETLDM): Add Thumb-2 code.
7301         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
7302         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
7303         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
7304         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
7305         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
7306         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
7307         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
7308         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
7309         ADJUST_INSN_LENGTH): Define.
7310         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
7311         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
7312         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
7313         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
7314         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
7315         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
7316         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
7317         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
7318         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
7319         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
7320         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
7321         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
7322         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
7323         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
7324         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
7325         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
7326         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
7327         cortex-m3.
7328         * config/arm/arm-tune.md: Regenerate.
7329         * config/arm/arm-protos.h: Update prototypes.
7330         * config/arm/vfp.md: Enable patterns for Thumb-2.
7331         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
7332         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
7333         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
7334         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
7335         * config/arm/libunwind.S: Add Thumb-2 code.
7336         * config/arm/constraints.md: Update include Thumb-2.
7337         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
7338         * config/arm/ieee754-df.S: Ditto.
7339         * config/arm/bpabi.S: Ditto.
7340         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
7341         * config/arm/predicates.md (low_register_operand,
7342         low_reg_or_int_operand, thumb_16bit_operator): New.
7343         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
7344         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
7345         * config/arm/t-arm-elf: Add armv7 multilib.
7346         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
7347         Include thumb2.md.
7348         (UNSPEC_STACK_ALIGN, ce_count): New.
7349         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
7350         arm_zero_extendsidi2, arm_zero_extendqidi2): New
7351         insns/expanders.
7352         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
7353         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
7354         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
7355         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
7356         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
7357         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
7358         insns.
7359         * doc/extend.texi: Document ARMv7-M interrupt functions.
7360         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
7361
7362 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
7363
7364         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
7365         (struct _Unwind_Context): Rename args_size to flags, remove
7366         signal_frame field, add a new args_size field and version field.
7367         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
7368         _Unwind_IsExtendedContext): New inline functions.
7369         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
7370         Assume by_value array is only present if _Unwind_IsExtendedContext.
7371         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
7372         _Unwind_IsSignalFrame.
7373         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
7374         (uw_update_context_1): Use _Unwind_SetSignalFrame.
7375         (uw_init_context_1): Initialize context->flags to
7376         EXTENDED_CONTEXT_BIT.
7377         * config/rs6000/linux-unwind.h (frob_update_context): Use
7378         _Unwind_SetSignalFrame.
7379
7380 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7381
7382         PR middle-end/30353
7383         * gimplify.c (gimplify_modify_expr_complex_part): Move below
7384         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
7385         the value.
7386
7387 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
7388
7389         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
7390         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
7391         RET, AT_SP): Remove.
7392         * config/i386/i386.md (*sse_prologue_save_insn): Use return
7393         instead of RET.
7394
7395         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7396         * cfgbuild.c (find_basic_blocks): Likewise.
7397         * cfgrtl.c (rtl_create_basic_block): Likewise.
7398         * function.c (temp_slots_at_level): Likewise.
7399         * reg-stack.c (stack_regs_mentioned): Likewise.
7400         * regclass.c (allocate_reg_info): Likewise.
7401         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7402         set_bb_for_stmt, move_block_to_fn): Likewise.
7403         * tree-complex.c (tree_lower_complex): Likewise.
7404         * vec.h (VEC_safe_grow_cleared): New.
7405
7406         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
7407
7408 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
7409
7410         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
7411         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
7412         to loop_version.
7413         * cfgloopmanip.c (scale_loop_frequencies): Export.
7414         (loopify): Scale the frequencies by prescribed coefficients.
7415         (set_zero_probability): New function.
7416         (duplicate_loop_to_header_edge): Improve updating of frequencies.
7417         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
7418         and frequencies according to arguments.
7419         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
7420         correctly.
7421         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
7422         * modulo-sched.c (sms_schedule): Set probabilities for entering
7423         versioned loop correctly.
7424         * tree-vect-transform.c (vect_transform_loop): Ditto.
7425         * cfgloop.h (loopify, loop_version): Declaration changed.
7426         (scale_loop_frequencies): Declared.
7427
7428 2007-01-02  Jan Hubicka  <jh@suse.cz>
7429
7430         * cgraph.c: Include tree-flow.h
7431         (cgraph_add_new-function): Handle IPA_SSA mode; execute
7432         early_local_passes.
7433         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
7434         * tree-pass.h (pass_all_early_optimizations): Declare.
7435         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
7436         early_local_passes.
7437         (cgraph_analyze_function): Do early_local_passes.
7438         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
7439         Do not add referenced vars.
7440         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
7441         SSA form.
7442         (gate_all_early_local_passes): New gate.
7443         (pass_early_local_passes): Use new gate.
7444         (execute_early_local_optimizations): New functions.
7445         (gate_all_early_optimizations): New gate.
7446         (pass_all_early_optimizations): New pass.
7447         (execute_free_datastructures): Free SSA only when initialized.
7448         (gate_init_datastructures): Init only when optimizing.
7449         (tree_lowering_passes): Do early local passes when called late.
7450         * tree-profile.c (do_tree_profiling): Don't profile functions added
7451         late.
7452         (do_early_tree_profiling, pass_early_tree_profile): Kill.
7453         * tree-cfg.c (update_modified_stmts): Do not update when operands are
7454         not active.
7455         * passes.c (init_optimizations_passes): Reorder so we go into SSA
7456         during early_local_passes.
7457         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
7458
7459
7460 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
7461
7462         * Makefile.in: Update copyright year.
7463
7464 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
7465
7466         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
7467         in $(lang_checks) and check-consistency targets.
7468
7469 2007-01-02  Jan Hubicka  <jh@suse.cz>
7470
7471         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
7472         Do not add referenced vars.
7473         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
7474         are not active.
7475         * passes.c (init_optimization_passes): Put mudflap_2 after
7476         free_datastructures.
7477
7478 2007-01-02  Jan Hubicka  <jh@suse.cz>
7479
7480         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
7481         Set NOTHROW flag on call statements proved to be nothrow.
7482         Update statement of local calls so new pure/const functions are
7483         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
7484         goto receivers.
7485         (tree_rest_of_compilation): Register hooks and initialize bitmap
7486         early. Do not set after_inlining flag.
7487
7488 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
7489
7490         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
7491         HOST_BITS_PER_LONGLONG
7492
7493 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
7494
7495         PR c/19977
7496         * c-typeck.c (store_init_value): Don't emit pedantic overflow
7497         warning for non-static initializers.
7498
7499 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
7500
7501         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
7502         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
7503         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
7504         Always use set_unique_reg_note to add REG_EQUAL notes.
7505
7506 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7507
7508         Revert:
7509         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7510
7511         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7512         * cfgbuild.c (find_basic_blocks): Likewise.
7513         * cfgrtl.c (rtl_create_basic_block): Likewise.
7514         * function.c (temp_slots_at_level): Likewise.
7515         * reg-stack.c (stack_regs_mentioned): Likewise.
7516         * regclass.c (allocate_reg_info): Likewise.
7517         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7518         set_bb_for_stmt, move_block_to_fn): Likewise.
7519         * tree-complex.c (tree_lower_complex): Likewise.
7520         * vec.h (VEC_safe_grow_cleared): New.
7521
7522 2007-01-02  Ian Lance Taylor  <iant@google.com>
7523
7524         * c-common.c (c_common_truthvalue_conversion): When warning about
7525         using an assignment as a truth value, set TREE_NO_WARNING.
7526
7527 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7528
7529         PR middle-end/7651
7530         * c.opt (Wold-style-declaration): New.
7531         * doc/invoke.texi (C-only Warning Options): New.
7532         (Wold-style-declaration): Document it.
7533         (Wextra): Enabled by -Wextra.
7534         * c-opts.c (c_common_post_options): Enabled by -Wextra.
7535         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
7536         -Wold-style-declaration.
7537
7538 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
7539
7540         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
7541         * cfgbuild.c (find_basic_blocks): Likewise.
7542         * cfgrtl.c (rtl_create_basic_block): Likewise.
7543         * function.c (temp_slots_at_level): Likewise.
7544         * reg-stack.c (stack_regs_mentioned): Likewise.
7545         * regclass.c (allocate_reg_info): Likewise.
7546         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
7547         set_bb_for_stmt, move_block_to_fn): Likewise.
7548         * tree-complex.c (tree_lower_complex): Likewise.
7549         * vec.h (VEC_safe_grow_cleared): New.
7550
7551 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
7552
7553         * c-common.c (c_common_nodes_and_builtins): Since variants of
7554         void_type_node get built before it is given a name, we need to
7555         give those variants the name, too.
7556         (complete_array_type): We need to work with the canonical main
7557         type of the array, from which we will build the qualified version.
7558         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
7559         * print-tree.c (print_node): Display canonical type information
7560         for each type.
7561         * stor-layout.c (layout_type): When we don't know the
7562         alignment of a type for which we're building an array, we end up
7563         guessing wrong, so make the type require structural equality.
7564         * tree.c (make_node_stat): When we build a new type, it is its
7565         own canonical type.
7566         (build_type_attribute_qual_variant): When building an attribute
7567         variant, its canonical type is the non-attribute variant. However,
7568         if the attributes are target-dependent and they differ, we need to
7569         use structural equality checks for this type.
7570         (build_qualified_type): A qualified type is not equivalent to its
7571         unqualified variant; set the canonical type appropriately.
7572         (build_distinct_type_copy): When building a distinct type from
7573         another type, the new type is its own canonical type.
7574         (build_variant_type_copy): When building a new type variant, we
7575         assume that it is equivalent to the original type.
7576         (build_pointer_type_for_mode): When building a pointer type, also
7577         build a canonical type pointer.
7578         (build_reference_type_for_mode): When building a reference type,
7579         also build a canonical type reference.
7580         (build_index_type): When we can't hash an index type (e.g.,
7581         because its maximum value is negative), the index type requires
7582         structural equality tests.
7583         (build_array_type): Build the canonical form of an array type.
7584         (build_function_type): Function types require structural equality,
7585         because they contain default arguments, attributes, etc.
7586         (build_method_type_directly): Ditto for method types.
7587         (build_offset_type): Build the canonical offset type.
7588         (build_complex_type): Build the canonical vector type.
7589         (make_vector_type): Build the canonical vector type.
7590         * tree.h (TYPE_CANONICAL): New.
7591         (TYPE_STRUCTURAL_EQUALITY_P): New.
7592         (SET_TYPE_STRUCTURAL_EQUALITY): New.
7593         (struct tree_type): Added "canonical" field.
7594         * params.h (VERIFY_CANONICAL_TYPES): New.
7595         * doc/c-tree.texi (TYPE_CANONICAL): Document.
7596         (TYPE_STRUCTURAL_EQUALITY_P): Document.
7597         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
7598         * doc/invoke.texi (verify-canonical-types): Document --param
7599         parameter for verifying canonical types.
7600
7601 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7602
7603         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
7604         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
7605         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
7606         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
7607         tm_file.
7608         * config/rs6000/e500.h: New.
7609         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
7610         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
7611         Remove.
7612         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
7613         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
7614         TARGET_E500_DOUBLE): Remove.
7615         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
7616         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
7617         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
7618         * config/rs6000/rs6000.c (rs6000_override_options): Use
7619         CHECK_E500_OPTIONS.
7620
7621 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7622
7623         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
7624         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
7625         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
7626         rs6000_emit_cmove): Don't check TARGET_E500.
7627         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
7628         sordered): Don't check TARGET_E500.
7629
7630 2007-01-01  Eric Christopher  <echristo@apple.com>
7631
7632         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
7633         HARD_REGISTER_NUM_P.
7634
7635 2007-01-01  Roger Sayle  <roger@eyesopen.com>
7636
7637         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
7638         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
7639         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
7640         eq/ne Y".
7641
7642 2007-01-01  Mike Stump  <mrs@apple.com>
7643
7644         * configure.ac: Remove support for building with Apple's gcc-3.1.
7645
7646 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
7647
7648         PR middle-end/30311
7649         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
7650         REG is a hard register.  Do not modify REG before calling
7651         subreg_nregs.
7652         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
7653         multiple of the size of YMODE for certain lowpart cases.
7654
7655 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7656
7657         PR middle-end/30253
7658         * gimplify (voidify_wrapper_expr): Update for
7659         GIMPLE_MODIFY_STMT.
7660
7661 2007-01-01  Andreas Schwab  <schwab@suse.de>
7662
7663         PR target/29166
7664         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
7665         save of BR0 in extra_spill_size instead of spill_size.
7666         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
7667         area.
7668         (ia64_expand_epilogue): Restore BR0 from its new location.
7669
7670 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7671
7672         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
7673         Use a temporary variable if the left hand side is not a gimple
7674         register.
7675
7676 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
7677
7678         * gimplify.c (gimplify_return_expr): Make the temporary variable
7679         for the return expression, a gimple register variable.
7680
7681 2007-01-01  Jan Hubicka  <jh@suse.cz>
7682
7683         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
7684         INSN_LIST.
7685
7686 2007-01-01  Mike Stump  <mrs@apple.com>
7687
7688         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
7689         .literal16.
7690         * config/darwin.c (machopic_select_rtx_section): Use
7691         HAVE_GAS_LITERAL16.
7692         (darwin_mergeable_constant_section): Likewise.
7693         * configure: Regenerate.
7694         * config.in: Regenerate.
7695
7696 2007-01-01  Jan Hubicka  <jh@suse.cz>
7697             Andrew Pinski  <pinskia@gmail.com>
7698
7699         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
7700         before starting IPA passes.