1 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
3 * tree.c (type_hash_add): Fix whitespace.
5 2007-12-15 Hans-Peter Nilsson <hp@axis.com>
7 Add CRIS v32 support. Fix -mcc-init.
8 * config.gcc: Make crisv32-* have cpu_type cris. Handle
9 crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
10 but without multilibs and with target_cpu_default=32.
11 (crisv32-*-linux*): Handle as cris-*-linux*. Set
12 target_cpu_default to 32 and 10 accordingly.
13 * config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
14 (cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
15 Change regno_dir and regno only if !TARGET_V32.
16 (cris_conditional_register_usage): If TARGET_V32, set
17 reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
18 CRIS_ACR_REGNUM non-fixed.
19 (cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
20 (cris_print_operand) <case 'Z', case 'u'>: New cases.
21 <case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
22 (cris_reload_address_legitimized): Always return false for
24 (cris_register_move_cost): New function, guts from
25 REGISTER_MOVE_COST adjusted for CRIS v32.
26 (cris_normal_notice_update_cc): New function split out from...
27 (cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
28 TARGET_CCINIT. Call cris_normal_notice_update_cc for CC_REV,
29 CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
30 for CC_NOOV32 and TARGET_V32.
31 (cris_simple_epilogue): Always return false for TARGET_V32 if
32 cris_return_address_on_stack yields true.
33 (cris_cc0_user_requires_cmp): New function.
34 (cris_valid_pic_const): Add argument ANY_OPERAND. All callers
35 changed. Handle CRIS_UNSPEC_PLT_PCREL and CRIS_UNSPEC_PCREL.
36 (cris_asm_output_case_end): New function, guts from
37 ASM_OUTPUT_CASE_END adjusted for CRIS v32.
38 (cris_override_options): Adjust for CRIS v32. Mask out
39 TARGET_SIDE_EFFECT_PREFIXES and TARGET_MUL_BUG if v32.
40 (cris_asm_output_mi_thunk, cris_expand_epilogue)
41 (cris_gen_movem_load, cris_emit_movem_store)
42 (cris_expand_pic_call_address, cris_asm_output_symbol_ref)
43 (cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
45 (cris_split_movdx): Copy re-used MEM.
46 * config/cris/t-elfmulti: Add multilib v32 for -march=v32.
47 * config/cris/predicates.md
48 ("cris_general_operand_or_pic_source"): New predicate.
49 ("cris_general_operand_or_plt_symbol"): Replace by...
50 ("cris_nonmemory_operand_or_callable_symbol"): New predicate.
51 * config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
52 presence and contents.
53 (CRIS_SUBTARGET_DEFAULT_ARCH): New macro, MASK_AVOID_GOTPLT for
55 (CRIS_CPP_SUBTARGET_SPEC, CRIS_CC1_SUBTARGET_SPEC,
56 CRIS_ASM_SUBTARGET_SPEC): Adjust for different
58 (CRIS_SUBTARGET_DEFAULT): Add CRIS_SUBTARGET_DEFAULT_ARCH.
59 * config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
60 (CRIS_DEFAULT_TUNE, CRIS_ARCH_CPP_DEFAULT)
61 (CRIS_DEFAULT_ASM_ARCH_OPTION): New macros.
62 (CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
64 (CRIS_CPP_SUBTARGET_SPEC): Ditto. Add CRIS_ARCH_CPP_DEFAULT.
65 (ASM_SPEC): Add sanity-check erroring out when both -march= and
66 -mcpu= are specified. Pass on either as --march=v32.
67 (CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
68 specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
69 (CRIS_CPU_V32): New macro.
70 [!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
71 [!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
72 TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
73 Define v32-adjusted TARGET_DEFAULT.
74 (CRIS_DEFAULT_CPU_VERSION): Change to TARGET_CPU_DEFAULT from
76 (TARGET_V32): New macro.
77 (REG_ALLOC_ORDER_V32): New macro.
78 (HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
80 (enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS,
81 GENNONACR_REGS and SPEC_GENNONACR_REGS.
82 (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
83 (REGNO_REG_CLASS): Give ACR_REGS for CRIS_ACR_REGNUM.
84 (MODE_CODE_BASE_REG_CLASS): Define, give for OCODE POST_INC
85 GENNONACR_REGS, BASE_REG_CLASS otherwise.
86 (REG_CLASS_FROM_LETTER): 'a' is for ACR_REGS.
87 (REGNO_MODE_CODE_OK_FOR_BASE_P): Define, refusing OCODE POST_INC
89 (PREFERRED_RELOAD_CLASS): Keep ACR_REGS as preferred.
90 (HARD_REGNO_RENAME_OK): Refuse CRIS_ACR_REGNUM as TO.
91 (EXTRA_CONSTRAINT): New constraint 'U'.
92 (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE)
93 (ASM_OUTPUT_ADDR_DIFF_ELT): Adjust for CRIS v32.
94 (BASE_OR_AUTOINCR_P): Refuse POST_INC for CRIS_ACR_REGNUM.
95 (SIMPLE_ADDRESS_P): Remove.
96 (GO_IF_LEGITIMATE_ADDRESS): Use BASE_OR_AUTOINCR_P, not redundant
97 SIMPLE_ADDRESS_P. Make one chained if-else, finishing as
98 non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
99 (REGISTER_MOVE_COST): Just call the new function
100 cris_register_move_cost.
101 (enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
102 cris_rel_symbol. All users changed.
103 (REGISTER_NAMES): Replace "pc" with "acr".
104 (ADDITIONAL_REGISTER_NAMES): Add "pc" for 15.
105 (ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
106 (ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
107 (ASM_OUTPUT_CASE_END): Just call the new function
108 cris_asm_output_case_end.
109 * gcc/config/cris/cris.md: Group related constants together, with
111 (CRIS_UNSPEC_PLT_GOTREL, CRIS_UNSPEC_PLT_PCREL, CRIS_UNSPEC_PCREL)
112 (CRIS_UNSPEC_CASESI): New constants.
113 (CRIS_UNSPEC_PLT): Remove constant.
114 (CRIS_ACR_REGNUM): New constant.
115 ("slottable"): New attr alternatives "has_return_slot" and
117 ("cc"): New attr alternatives "noov32" and "rev".
118 ((eq_attr "slottable" "has_call_slot"))
119 ((eq_attr "slottable" "has_return_slot")): New define_delays.
120 ("movdi", "movsi"): Adjust operands for CRIS v32.
121 ("tstdi", "cmpdi", "adddi3", "subdi3", "uminsi3")
122 ("indirect_jump"): Ditto. Make define_expand.
123 ("*tstdi_non_v32", "*tstdi_v32", "*tst<mode>_cmp")
124 ("*tst<mode>_non_cmp", "*cmpdi_non_v32", "*cmpdi_v32")
125 ("*movdi_v32", "*adddi3_non_v32", "*adddi3_v32")
126 ("*addsi3_non_v32", "*addsi3_v32", "*addhi3_non_v32")
127 ("*addhi3_v32", "*addqi3_non_v32", "*addqi3_v32")
128 ("*subdi3_non_v32", "*subdi3_v32", "*subsi3_non_v32")
129 ("*subsi3_v32", "*sub<mode>3_nonv32", "*sub<mode>3_v32")
130 ("*andqi3_non_v32", "*andqi3_v32", "*iorsi3_non_v32")
131 ("*iorsi3_v32", "*iorhi3_non_v32", "*iorhi3_v32")
132 ("*iorqi3_non_v32", "*iorqi3_v32", "*uminsi3_non_v32")
133 ("*uminsi3_v32", "*indirect_jump_non_v32", "*indirect_jump_v32")
134 ("*expanded_call_v32", "*expanded_call_value_v32"): New patterns,
135 for the corresponding standard name.
136 ("tst<mode>"): Limit to BW and make define_expand.
137 ("tstsi"): Make separate insn, adjusting for CRIS v32.
138 ("*cmp_swapext<mode>"): Adjust for v32. Specify "rev" for attr "cc".
139 ("cmpsi", "cmp<mode>"): Remove special cases for zero. Specify
141 ("*btst"): Don't match for TARGET_CCINIT. Replace test of
142 register with compatible "cmpq 0". Specify attr "cc".
143 ("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
145 (define_split for DI move): Match CRIS v32 only.
146 ("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS
148 ("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
149 ("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
150 ("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
151 ("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
152 ("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns.
153 ("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
154 ("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
155 ("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
156 ("*extopqihi_non_v32"): Replace "*extopqihi".
157 ("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
158 ("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
160 ("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
161 ("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
162 ("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
163 ("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
164 ("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
165 ("*expanded_call_non_v32"): Ditto "*expanded_call". Change from
166 "cris_general_operand_or_plt_symbol" to "general_operand".
167 ("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
168 ("*casesi_adds_w", "mstep_shift", "mstep_mul")
169 ("*expanded_call_side", "*expanded_call_value_side")
170 (op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
171 (op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
172 (op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
173 ("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
174 ("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
175 ("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2", "cris_swap_bits"): Specify "noov32" for
177 ("<su>mulsi3_highpart"): Ditto. Correct operand 0 to
179 ("andqi3"): Make define_expand.
180 ("*return_expanded"): For attr "slottable", change from "has_slot"
181 to "has_return_slot".
182 ("cris_casesi_non_v32"): New pattern, old contents of "casesi".
183 ("casesi"): Divert into "cris_casesi_v32" and
184 "cris_casesi_non_v32".
185 (moversideqi, movemsideqi, mover2side): Require
186 TARGET_SIDE_EFFECT_PREFIXES.
187 (gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
188 to CRIS_UNSPEC_PLT_GOTREL.
189 * config/cris/cris-protos.h (cris_register_move_cost)
190 (cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
192 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
195 * dwarf2out.c (dwarf_tag_name): Synchronize with dwarf2.h.
196 (is_type_die): Cover interface types.
197 (class_or_namespace_scope_p): Cover interface and class types.
198 (record_type_tag): New.
199 (gen_inlined_structure_type_die): Use it.
200 (gen_struct_or_union_type_die): Likewise.
201 (prune_unused_types_walk): Cover interface types.
202 * langhooks.h (classify_record): New enum.
203 (classify_record): New member in struct langhooks_for_types.
204 * langhooks-def.h (LANG_HOOKS_CLASSIFY_RECORD): New.
205 (LANGHOOKS_FOR_TYPES_INITIALIZER): Adjust.
207 2007-12-15 Alexandre Oliva <aoliva@redhat.com>
209 * dwarf2out.c (reference_to_unused): Don't emit strings in
210 initializers just because of debug information.
211 * tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
213 2007-12-15 Sebastian Pop <sebastian.pop@amd.com>
215 * tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
216 print_loop_ir with print_loops.
217 * tree-flow.h (dot_cfg, debug_loops, debug_loop, debug_loop_num,
218 print_loops, print_loops_bb): Declare.
219 * tree-cfg.c (print_loops_bb): New.
220 (print_loop): Print header, latch, bounds, estimation of iterations.
221 (print_loop_and_siblings): New.
222 (print_loop_ir): Renamed print_loops.
223 (debug_loop_ir): Renamed debug_loops.
224 (debug_loop, debug_loop_num): New.
226 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
228 * tree-flow-inline.h.c (next_readonly_imm_use): Fix typo in comment.
230 2007-12-15 Bernhard Fischer <aldot@gcc.gnu.org>
232 * toplev.c (process_options): Fix typo in warning.
234 2007-12-14 Jakub Jelinek <jakub@redhat.com>
237 * config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
238 DImode comparisons against constant with all 1's in the lower word.
240 2007-12-14 Uros Bizjak <ubizjak@gmail.com>
242 * config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
243 constraint for operand2. Use nonimm_not_xmm0_operand constraint
244 for operand 4. Update arguments in the call to
245 gen_sse4_2_pcmpestr_cconly.
246 (sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
247 template accordingly.
248 (sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
249 Use nonimm_not_xmm0_operand constraint for operand 3. Update
250 arguments in the call to gen_sse4_2_pcmpistr_cconly.
251 (sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
253 2007-12-14 Richard Guenther <rguenther@suse.de>
256 * tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
257 parameter to say whether to unlink immediate uses.
258 * tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
259 mark the artificial stmt as modified. Unlink immediate uses
261 * tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
262 * tree-ssa-pre.c (insert_fake_stores): Likewise.
264 2007-12-13 Eric Botcazou <ebotcazou@libertysurf.fr>
267 * gimplify.c (gimplify_modify_expr_complex_part): Add note to comment.
268 * tree-complex.c (init_dont_simulate_again): Return true if there are
269 uninitialized loads generated by gimplify_modify_expr_complex_part.
270 * tree-gimple.c (is_gimple_reg_type): Return false for complex types
272 * tree-ssa.c (ssa_undefined_value_p): New predicate extracted from...
273 (warn_uninit): ...here. Use ssa_undefined_value_p.
274 * tree-ssa-pre.c (is_undefined_value): Delete.
275 (phi_translate_1): Use ssa_undefined_value_p.
276 (add_to_exp_gen): Likewise.
277 (make_values_for_stmt): Likewise.
278 * tree-flow.h (ssa_undefined_value_p): Declare.
280 2007-12-13 Andrew Pinski <pinskia@gmail.com>
281 David Daney <ddaney@avtrex.com>
284 * system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
287 2007-12-13 Jakub Jelinek <jakub@redhat.com>
289 PR rtl-optimization/32636
290 * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
291 regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
293 2007-12-13 Uros Bizjak <ubizjak@gmail.com>
294 Richard Guenther <rguenther@suse.de>
297 * config/i386/emmintrin.h (_mm_shuffle_pd, _mm_extract_epi16,
298 _mm_insert_epi16, _mm_shufflehi_epi16, _mm_shufflelo_epi16,
299 _mm_shuffle_epi32): Cast non-constant input values to either __m64,
300 __m128, __m128i or __m128d in a macro version of the intrinsic.
301 Cast constant input values to int.
302 * config/i386/ammintrin.h (_mm_extracti_si64, _mm_inserti_si64): Ditto.
303 * config/i386/bmmintrin.h (_mm_roti_epi8, _mm_roti_epi16,
304 _mm_roti_epi32, _mm_roti_epi64): Ditto.
305 * config/i386/smmintrin.h (_mm_blend_epi16, _mm_blend_ps, _mm_blend_pd,
306 _mm_dp_ps, _mm_dp_pd, _mm_insert_ps, _mm_extract_ps, _mm_insert_epi8,
307 _mm_insert_epi32, _mm_insert_epi64, _mm_extract_epi8, mm_extract_epi32,
308 _mm_extract_epi64, _mm_mpsadbw_epu8, _mm_cmpistrm, _mm_cmpistri,
309 _mm_cmpestrm, _mm_cmpestri, _mm_cmpistra, _mm_cmpistrc, _mm_cmpistro,
310 _mm_cmpistrs, _mm_cmpistrz, _mm_cmpestra, _mm_cmpestrc, _mm_cmpestro,
311 _mm_cmpestrs, _mm_cmpestrz): Ditto.
312 * config/i386/tmmintrin.h (_mm_alignr_epi8, _mm_alignr_pi8): Ditto.
313 * config/i386/xmmintrin.h (_mm_shuffle_ps, _mm_extract_pi16, _m_pextrw,
314 _mm_insert_pi16, _m_pinsrw, _mm_shuffle_pi16, _m_pshufw): Ditto.
315 * config/i386/mmintrin-common.h (_mm_round_pd, _mm_round_sd,
316 _mm_round_ps, _mm_round_ss): Ditto.
318 2007-12-13 Richard Guenther <rguenther@suse.de>
320 PR tree-optimization/34450
321 * params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
322 * invoke.texi (sccvn-max-scc-size): Document.
323 * Makefile.in (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
324 * tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
326 * tree-ssa-sccvn.c (params.h): Include.
327 (DFS): Return true if all went well, return false as soon as
328 a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
329 (run_scc_vn): Return true if all went well, return false if
330 we aborted during DFS.
331 * tree-ssa-pre.c (execute_pre): Check if SCCVN finished
332 successfully, otherwise bail out.
334 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
336 * ipa-struct-reorg.c (is_candidate): Print information to dump
337 file when the type is initialized.
338 (get_stmt_accesses): Likewise when a structure has bitfields
339 or field access is too complicate.
340 (safe_cond_expr_check): Likewise for unsafe condition expressions.
341 (exclude_cold_structs): Likewise for cold structures.
342 (collect_structures): Suppress redundant print when there are
343 no structures to transform.
344 (do_reorg): Print to dump file a number of structures that
346 (dump_new_types): Print a number of new types to replace
347 an original structure type.
349 2007-12-13 Olga Golovanevsky <olga@il.ibm.com>
351 * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
352 option and struct-reorg-cold-struct-ratio parameter.
354 2007-12-13 Torbjorn Granlund <tege@swox.com>
356 * config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
357 ZERO_EXTEND when computing costs for widening multiplication.
359 2007-12-13 Richard Earnshaw <rearnsha@arm.com>
362 * config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
363 exit when using hard FPA.
364 * config/arm/ieee754-df.S (floatdidf): Likewise.
366 2007-12-12 Jakub Jelinek <jakub@redhat.com>
369 * doc/install.texi: Document that for MinGW only runtime 3.12 and
372 2007-12-12 David Edelsohn <edelsohn@gnu.org>
374 * config/rs6000/rs6000.c (is_mem_ref): Ignore STACK_TIE.
376 2007-12-12 Aldy Hernandez <aldyh@redhat.com>
378 PR tree-optimization/32901
379 * gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
380 are assigning from a constant constructor.
381 Fix wrapping in function comment.
383 2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
385 * config/s390/s390.c (s390_O_constraint_str): Limit the range
386 for 'On' to -4G+1..-1.
387 * config/s390/constraints.md: Adjust comment accordingly.
389 2007-12-11 Nathan Sidwell <nathan@codesourcery.com>
391 * config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
394 2007-12-11 Kai Tietz <kai.tietz@onevision.com>
396 * config/i386/cygming.h (DWARF2_UNWIND_INFO): Handle 64-bit
397 target same as 32-bit.
399 2007-12-10 Jakub Jelinek <jakub@redhat.com>
401 PR tree-optimization/34371
402 * tree-vectorizer.h (struct _loop_vec_info): Add num_iters_unchanged
404 (LOOP_VINFO_NITERS_UNCHANGED): Define to num_iters_unchanged field.
405 * tree-vectorizer.c (set_prologue_iterations,
406 slpeel_tree_peel_loop_to_edge): Call unshare_expr on
407 LOOP_VINFO_NITERS_UNCHANGED before using it.
409 2007-12-10 Eric Botcazou <ebotcazou@libertysurf.fr>
412 * config/i386/i386.c (ix86_expand_movmem): Punt if the count is large.
413 (ix86_expand_setmem): Likewise.
415 2007-12-10 Kenneth Zadeck <zadeck@naturalbridge.com>
417 PR rtl-optimization/34302
418 * auto-inc-dec.c (attempt_change): Change place where move is
421 2007-12-10 Jakub Jelinek <jakub@redhat.com>
423 * dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
424 Fortran multi-dimensional arrays use DW_AT_ordering
427 2007-12-10 Paolo Bonzini <bonzini@gnu.org>
430 * config/i386/i386.c (override_options): Enable -fvect-cost-model.
432 2007-12-10 Uros Bizjak <ubizjak@gmail.com>
434 * config/i386/i386.c (ix86_function_regparm): Do not check global_regs
435 array, registers that are members of global_regs are also members of
436 fixed_regs array. Use REGPARM_MAX to check that no regparm hard
437 register is taken by a fixed register variable. Check up to and
438 including DI_REG when adjusting regparm value due to fixed regs usage.
439 (rep_prefix_usable): Check fixed_regs array, not global_regs array for
440 available hard registers.
441 (ix86_expand_strlen): Ditto.
442 * config/i386/i386.md (strmov): Ditto.
445 2007-12-10 Kaz Kojima <kkojima@gcc.gnu.org>
447 * genopinit.c: Include tm_p.h in generated file.
449 * config/arm/neon.md (vec_set<mode>_internal): Use INTVAL
450 to extract the integer from operands[2].
451 (vec_setv2di_internal): Likewise.
453 * config/arm/arm.c (arm_size_return_regs): Make return type unsigned.
454 (arm_init_neon_builtins): Move code after declarations.
456 2007-12-10 Hans-Peter Nilsson <hp@axis.com>
458 * reload.c (find_reloads_address_1): To properly mark as an
459 autoincdec, pass X for non-NULL OUT in call to push_reload for
460 autoincdec which can't be trivially used as an address.
462 2007-12-10 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
463 Hans-Peter Nilsson <hp@axis.com>
465 * caller-save.c (insert_one_insn): If inserting before a call_insn
466 then the registers containing the arguments of the call are
467 live_throughout in the new insn.
469 2007-12-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
473 * pa.md: Consolidate HImode and QImode move patterns into one pattern
474 each, eliminating floating-point alternatives.
475 * pa-protos.h (pa_cannot_change_mode_class, pa_modes_tieable_p):
477 * pa-64.h (SECONDARY_MEMORY_NEEDED): Define here.
478 * pa.c (pa_secondary_reload): Use an intermediate general register
479 for copies to/from floating-point register classes. Simplify code
480 SHIFT_REGS class. Provide additional comments.
481 (pa_cannot_change_mode_class, pa_modes_tieable_p): New functions.
482 * pa.h (MODES_TIEABLE_P): Use pa_modes_tieable_p.
483 (SECONDARY_MEMORY_NEEDED): Delete define.
484 (INT14_OK_STRICT): Define.
485 (MODE_OK_FOR_SCALED_INDEXING_P): Allow SFmode and DFmode when using
487 (MODE_OK_FOR_UNSCALED_INDEXING_P): Likewise.
488 (GO_IF_LEGITIMATE_ADDRESS): Use INT14_OK_STRICT in REG+D case for
490 (LEGITIMIZE_RELOAD_ADDRESS): Use INT14_OK_STRICT in mask selection.
491 Align DImode offsets when generating 64-bit code.
492 * pa32-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
493 (CANNOT_CHANGE_MODE_CLASS): Define.
494 * pa64-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
495 (CANNOT_CHANGE_MODE_CLASS): Define using pa_cannot_change_mode_class.
497 2007-12-09 Jakub Jelinek <jakub@redhat.com>
500 * langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
501 (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
502 * langhooks.h (struct array_descr_info): Forward declaration.
503 (struct lang_hooks_for_types): Add get_array_descr_info field.
504 * dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
505 (DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
507 * dwarf2out.h (struct array_descr_info): New type.
508 * dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
509 DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
510 (descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
512 (gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
513 and gen_descr_array_type_die.
515 2007-12-08 Richard Guenther <rguenther@suse.de>
517 PR tree-optimization/34391
518 * tree-vect-transform.c (vect_setup_realignment): Mark new
519 symbols for renaming.
521 2007-12-07 Bob Wilson <bob.wilson@acm.org>
523 * config/xtensa/xtensa.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
524 (ASM_OUTPUT_DWARF_PCREL): Define.
526 2007-12-07 Richard Guenther <rguenther@suse.de>
529 * opts.c (common_handle_option): Handle OPT_fforce_addr.
531 2007-12-07 Aldy Hernandez <aldyh@redhat.com>
533 * m32c.h (LEGITIMIZE_ADDRESS): Use WIN instead of win.
534 (LEGITIMIZE_RELOAD_ADDRESS): Same.
536 2007-12-07 Samuel Tardieu <sam@rfc1149.net>
539 * doc/install.texi: Explain how to check for a clean environment when
542 2007-12-07 Richard Guenther <rguenther@suse.de>
544 * tree-profile.c (gcov_type_tmp_var): New global variable.
545 (tree_gen_edge_profiler): Use a single shared variable decl per
546 function for edge counter incrementing.
547 (tree_profiling): Re-set the shared variable.
549 2007-12-06 Bob Wilson <bob.wilson@acm.org>
551 * config/xtensa/xtensa.c (xtensa_va_start): Add prototype.
553 2007-12-06 Tom Tromey <tromey@redhat.com>
556 * c-opts.c (c_common_parse_file): Call cpp_clear_file_cache.
558 2007-12-06 Richard Sandiford <rsandifo@nildram.co.uk>
560 * config/mips/mips.c (mips_function_ok_for_sibcall): Check
561 targetm.binds_local_p as well as DECL_EXTERNAL.
563 2007-12-06 Harsha Jagasia <harsha.jagasia@amd.com>
565 * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
566 (set_prologue_iterations): New. Set the prologue iterations to total
567 number of scalar iterations if the cost model check indicates that
568 scalar code should be generated.
569 (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for
570 generating the cost condition for epilog. Call
571 set_prologue_iterations to generate cost condition for prolog.
572 (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
573 * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
574 (slpeel_tree_peel_loop_to_edge): Update declaration.
575 (set_prologue_iterations): New declaration.
576 * tree-vect-analyze.c (vect_analyze_loop_form): Update
577 LOOP_VINFO_NITERS_UNCHANGED.
578 * tree-vect-transform.c
579 (vect_estimate_min_profitable_iters): Add new parameter and
580 code to check if run time cost model test is needed.
581 Remove code that adds builtin vectorization cost to scalar
582 outside cost for the run time cost model test. If run time
583 cost model test is needed add the appropriate guard cost to
584 the scalar outside cost. The guard cost depends on whether
585 the guard is generated at versioning or at prolog generation
586 or at epilog generation. Change cost model equation to include
588 (conservative_cost_threshold): New. Return the less conservative
589 profitability threshold between the cost model threshold and the
590 user defined vectorization threshold.
591 (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
592 (vect_do_peeling_for_alignment): Same.
593 (vect_loop_versioning): Same.
594 (vect_create_cond_for_align_checks): ANDs the cost model condition
595 with the alignment condition.
596 (vect_transform_loop): Call loop versioning only when there is a
597 misalignment or an aliasing problem.
599 2007-12-06 Jakub Jelinek <jakub@redhat.com>
602 * tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
603 (execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
604 BUILT_IN_VA_COPY and BUILT_IN_VA_END.
606 * target.h (struct ggc_target): Add expand_builtin_va_start hook.
607 * target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
608 (TARGET_INITIALIZER): Add it.
609 * builtins.c (expand_builtin_va_start): Use
610 targetm.expand_builtin_va_start hook instead of
611 EXPAND_BUILTIN_VA_START macro.
612 * alpha/alpha.c (alpha_va_start): Made static.
613 (override_options): Clear targetm.expand_builtin_va_start if
615 (TARGET_EXPAND_BUILTIN_VA_START): Define.
616 * alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
617 * alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
618 * alpha/alpha-protos.h (alpha_va_start): Remove prototype.
619 * xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
620 * xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
621 (xtensa_va_start): Made static.
622 * xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
623 * pa/pa-protos.h (hppa_va_start): Remove prototype.
624 * pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
625 * pa/pa.c (hppa_va_start): Made static, add prototype.
626 (TARGET_EXPAND_BUILTIN_VA_START): Define.
627 * frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
628 (TARGET_EXPAND_BUILTIN_VA_START): Define.
629 * frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
630 * frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
631 * i386/i386.c (override_options): Clear
632 targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
633 (ix86_va_start): Made static.
634 (TARGET_EXPAND_BUILTIN_VA_START): Define.
635 * i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
636 * i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
637 * iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
638 * iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
639 * iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
640 (TARGET_EXPAND_BUILTIN_VA_START): Define.
641 * rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
642 * rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
643 (TARGET_EXPAND_BUILTIN_VA_START): Define.
644 (rs6000_override_options): Clear targetm.expand_builtin_va_start if
645 DEFAULT_ABI != ABI_V4.
646 * rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
647 * spu/spu.c (spu_va_start): Made static, add prototype.
648 (TARGET_EXPAND_BUILTIN_VA_START): Define.
649 * spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
650 * spu/spu-protos.h spu_va_start): Remove prototype.
651 * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
652 * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
654 * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made static.
655 (TARGET_EXPAND_BUILTIN_VA_START): Define.
656 * s390/s390-protos.h (s390_va_start): Remove prototype.
657 * s390/s390.c (s390_va_start): Made static.
658 (TARGET_EXPAND_BUILTIN_VA_START): Define.
659 * s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
660 * mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
661 * mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
662 * mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
663 (TARGET_EXPAND_BUILTIN_VA_START): Define.
664 * arc/arc.c (arc_va_start): Made static, add prototype.
665 (TARGET_EXPAND_BUILTIN_VA_START): Define.
666 * arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
667 * arc/arc-protos.h (arc_va_start): Remove prototype.
668 * mt/mt-protos.h (mt_va_start): Remove prototype.
669 * sparc/sparc.c (sparc_va_start): Made static, add prototype.
670 (TARGET_EXPAND_BUILTIN_VA_START): Define.
671 * sparc/sparc-protos.h (sparc_va_start): Remove prototype.
672 * sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
673 * sh/sh.c (sh_va_start): Made static, add prototype.
674 (TARGET_EXPAND_BUILTIN_VA_START): Define.
675 * sh/sh-protos.h (sh_va_start): Remove prototype.
676 * sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
677 * mips/mips-protos.h (mips_va_start): Remove prototype.
678 * mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
679 * mips/mips.c (mips_va_start): Made static.
680 (TARGET_EXPAND_BUILTIN_VA_START): Define.
682 2007-12-06 Uros Bizjak <ubizjak@gmail.com>
684 * tree-ssa-loop.c (gate_tree_parallelize_loops): Return true when
685 "flag_tree_parallelize_loops > 1".
687 2007-12-06 Zdenek Dvorak <ook@ucw.cz>
688 Dorit Nuzman <dorit@il.ibm.com>
689 Jakub Jelinek <jakub@redhat.com>
691 PR tree-optimization/34005
692 * tree-gimple.c (is_gimple_formal_tmp_rhs): Add a case for COND_EXPR.
693 * gimplify.c (gimplify_ctx): Add a new member allow_rhs_cond_expr.
694 (gimplify_pure_cond_expr): New function.
695 (generic_expr_could_trap_p): New function.
696 (gimplify_cond_expr): Call gimplify_pure_cond_expr.
697 (force_gimple_operand): Initialize new field allow_rhs_cond_expr.
699 2007-12-06 Andreas Krebbel <krebbel1@de.ibm.com>
701 * config/s390/s390.c (s390_emit_stack_tie): New function.
702 (s390_emit_prologue): Emit a stack tie when writing to the
704 * config/s390/s390.md ("stack_tie"): New insn definition.
706 2007-12-06 Ben Elliston <bje@au.ibm.com>
709 * doc/sourcebuild.texi (Miscellaneous Docs): Remove SERVICE item.
711 2007-12-05 Jakub Jelinek <jakub@redhat.com>
714 * fold-const.c (fold_binary) <case BIT_IOR_EXPR>: Don't minimize
715 number of bits set in C1 if a mode mask for some mode can be used
718 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
720 * varasm.c (merge_weak, weak_finish, assemble_alias): Commentary typo
723 2007-12-05 Richard Guenther <rguenther@suse.de>
725 PR tree-optimization/34138
726 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
727 Do not forward propagate addresses if that changes volatileness of
730 2007-12-05 Uros Bizjak <ubizjak@gmail.com>
733 * config/i386/i386.c (ix86_function_regparm): Also check for fixed
734 registers when checking that regparm registers are available.
735 Lower regparm value due to fixed registers usage in addition to
738 2007-12-05 Bernhard Fischer <aldot@gcc.gnu.org>
740 * sparseset.c: Include config.h and system.h before sparseset.h.
741 * sparseset.h: Remove inclusion of system.h.
743 2007-12-05 Jakub Jelinek <jakub@redhat.com>
744 Richard Sandiford <rsandifo@nildram.co.uk>
746 * optabs.c (init_insn_codes): New function.
748 (init_optab, init_optabv): Don't call new_optab.
749 (init_convert_optab): Don't clear the insn codes.
750 (init_optabs): Call init_insn_codes.
752 2007-12-04 Jakub Jelinek <jakub@redhat.com>
754 * omp-low.c (optimize_omp_library_calls): New function.
755 (expand_omp_parallel): Call it if optimizing.
758 * stmt.c (expand_stack_restore): Call expand_normal on var to get
759 rtx for it instead of assuming it will be a VAR_DECL.
761 2007-12-04 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
763 * c-parser (c_parser_statement_after_labels): Move error from here...
764 (c_parser_label): ... to here. Check that the declaration is not
765 actually just another label.
767 2007-12-04 Richard Guenther <rguenther@suse.de>
771 * tree-ssa-operands.c (get_addr_dereference_operands): If we
772 fall back to using the SMTs aliases, make sure to add virtual
773 operands for the SMT itself.
774 (create_ssa_artificial_load_stmt): Fix typo. Make sure to also
775 clear the loaded and stored symbols bitmaps.
777 2007-12-04 Ben Elliston <bje@au.ibm.com>
779 * config/spu/spu.h (ASM_FORMAT_PRIVATE_NAME): Remove; use default.
781 2007-12-04 Ben Elliston <bje@au.ibm.com>
783 * doc/tm.texi (Exception Handling): Mention unwind-dw2-xtensa.c.
785 2007-12-03 Steven Bosscher <stevenb.gcc@gmail.com>
788 * doc/invoke.texi: Remove -fforce-addr documentation.
789 * expr.c (emit_move_insn): Remove use of flag_force_addr.
790 (expand_expr_real_1): Same.
791 (do_tablejump): Same.
792 Call memory_address instead of memory_address_noforce.
793 * expr.h (memory_address_noforce): Remove prototype.
794 * explow.c (memory_address): Remove support for flag_force_addr.
795 (validize_mem): Same.
796 (memory_address_noforce): Remove.
797 * common.opt: Add dummy documentation for -fforce-addr.
798 * combine.c (can_combine_p): Remove -fforce-addr comment.
799 * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
801 * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
802 relating to memory_address_noforce.
803 * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
804 * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
806 2007-12-03 Jakub Jelinek <jakub@redhat.com>
808 * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
809 with !ctx->is_nested.
810 (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
811 even if !ctx->is_nested.
812 (lower_copyprivate_clauses, lower_send_clauses,
813 lower_send_shared_vars): Call lookup_decl_in_outer_ctx
817 * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
818 (X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
819 and (X >> C1) & C2 into (X >> C1) & (C2 | ~((type) -1 >> C1)).
820 (fold_binary) <case LSHIFT_EXPR, case RSHIFT_EXPR>: Optimize
821 (X & C2) << C1 into (X << C1) & (C2 << C1) and
822 (X & C2) >> C1 into (X >> C1) & (C2 >> C1) if that allows further
825 PR tree-optimization/33453
826 * tree-data-ref.c (split_constant_offset): Use POINTER_PLUS_EXPR
827 for pointer addition.
828 * tree-parloops.c (canonicalize_loop_ivs): Likewise.
829 (separate_decls_in_loop_name): Copy DECL_GIMPLE_REG_P from var to
832 2007-12-03 Bernd Schmidt <bernd.schmidt@analog.com>
834 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__ as
837 2007-12-03 Razya Ladelsky <razya@il.ibm.com>
839 * doc/invoke.texi (fipa-cp, fipa-matrix-reorg): Add documentation.
841 2007-12-03 Jakub Jelinek <jakub@redhat.com>
844 * opts.c (common_handle_option): Handle OPT_ftree_store_copy_prop.
845 * common.opt (ftree-store-copy-prop): Use the same help text as for
848 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
849 Revital Eres <eres@il.ibm.com>
851 * modulo-sched.c (calculate_must_precede_follow,
852 try_scheduling_node_in_cycle): New functions.
853 (sms_schedule_by_order): Call the new functions.
854 (ps_insn_find_column): Use must_follow and must_precede only if
856 (ps_insn_advance_column): Likewise.
858 2007-12-02 Ayal Zaks <zaks@il.ibm.com>
859 Revital Eres <eres@il.ibm.com>
861 * modulo-sched.c (get_sched_window): Fix the direction of the
862 scheduling window and add dump info.
864 2007-12-02 Samuel Tardieu <sam@rfc1149.net>
866 * config/sh/sh.md (cmpgeusi_t): Fix condition.
868 2007-11-30 Jan Hubicka <jh@suse.cz>
870 * ggc-common.c (dump_ggc_loc_statistics): Reset ggc_force_collect flag.
872 2007-11-30 Seongbae Park <seongbae.park@gmail.com>
874 PR rtl-optimization/34171
875 * cfgrtl.c (update_bb_for_insn_chain): New function,
876 refactored from update_bb_for_insn.
877 (update_bb_for_insn): Call update_bb_for_insn.
878 (rtl_merge_blocks, try_redirect_by_replacing_jump):
879 Replace a loop with update_bb_for_insn_chain call.
880 (cfg_layout_merge_blocks): Add a call to
881 update_bb_for_insn_chain. Replace the for loop
882 with a call to update_bb_for_insn_chain.
884 2007-11-30 Ben Elliston <bje@au.ibm.com>
886 * config/vax/vax.h (ASM_FORMAT_PRIVATE_NAME): Remove. Use default.
888 2007-11-29 Zdenek Dvorak <ook@ucw.cz>
890 PR tree-optimization/34244
891 * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
892 (record_numbers_of_iterations): New function.
893 (execute_vrp): Cache the numbers of iterations of loops.
894 * tree-scalar-evolution.c (scev_reset_except_niters): New function.
895 (scev_reset): Use scev_reset_except_niters.
896 * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
898 2007-11-29 Jan Hubicka <jh@suse.cz>
899 Jakub Jelinek <jakub@redhat.com>
901 PR tree-optimization/33434
902 * tree-inline.c (setup_one_parameter): If the value passed to
903 a parameter is never used, don't set it up.
905 2007-11-29 Jakub Jelinek <jakub@redhat.com>
908 * config/rs6000/eabi-cn.asm (__DTOR_END__): Make it weak.
909 * config/rs6000/sol-cn.asm (__DTOR_END__): Likewise.
911 2007-11-29 Andris Pavenis <andris.pavenis@iki.fi>
913 * Makefile.in: Use separate vpath lines for each path.
915 2007-11-29 Ben Elliston <bje@au.ibm.com>
917 * SERVICE: Update URL.
919 2007-11-28 Jakub Jelinek <jakub@redhat.com>
921 PR tree-optimization/34140
922 * tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
923 loop->header has virtual phi nodes.
925 2007-11-28 Richard Sandiford <rsandifo@nildram.co.uk>
928 * builtins.c (expand_builtin_nonlocal_goto): Also emit a use
929 of GP register, if valid and fixed.
932 2007-06-21 David Daney <ddaney@avtrex.com>
935 * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
936 to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
937 (exception_receiver): Renamed to ...
938 (nonlocal_goto_receiver): ... this.
940 2007-11-27 H.J. Lu <hongjiu.lu@intel.com>
941 Joey Ye <joey.ye@intel.com>
944 * config/i386/i386.c (function_arg_32): Don't pass aggregate
945 arguments in ECX/EDX for fastcall.
947 2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk>
949 * config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
951 * config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise.
952 * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise.
954 2007-11-28 Ben Elliston <bje@au.ibm.com>
956 * config/rs6000/aix64.opt (maix64): Add Negative(maix32).
957 (maix32): Add Negative(maix64).
959 2007-11-27 Jakub Jelinek <jakub@redhat.com>
961 PR tree-optimization/34016
962 * tree-ssa-loop.c (pass_linear_transform): Add
963 TODO_update_ssa_only_virtuals to todo_flags_finish.
965 2007-11-27 Eric B. Weddington <eric.weddington@atmel.com>
967 * config/avr/avr.c (avr_mcu_types): Add atmega32hvb.
968 * config/avr/avr.h (LINK_SPEC): Likewise.
969 (CRT_BINUTILS_SPECS): Likewsie.
970 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
972 2007-11-27 Jakub Jelinek <jakub@redhat.com>
975 * config/rs6000/rs6000.c (adjacent_mem_locations): Don't assume
976 MEM_SIZE is set on all MEMs.
978 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
980 * config/s390/s390.opt (mhard-float): Add the option to be
981 overridden. That was missing in my last patch.
983 2007-11-27 Richard Guenther <rguenther@suse.de>
985 PR tree-optimization/34241
986 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Make sure
987 to only delete real conversion chains.
989 2007-11-27 Andreas Krebbel <krebbel1@de.ibm.com>
991 * config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
992 mhard-float, mlong-double-64, mlong-double-128): Add the
993 option to be overridden.
995 2007-11-27 Richard Guenther <rguenther@suse.de>
997 * builtins.c (fold_builtin_1): Verify the argument types
998 of BUILT_IN_ISNORMAL.
999 (fold_builtin_n): Verify the number of arguments to variadic
1002 2007-11-27 Bernd Schmidt <bernd.schmidt@analog.com>
1004 * config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
1005 * doc/invoke.texi (Blackfin Options): Document the effects.
1007 2007-11-27 Ben Elliston <bje@au.ibm.com>
1009 * config/rs6000/sysv4.opt (m32): Add Negative(m64).
1010 (m64): Add Negative(m32).
1011 * config/rs6000/darwin.opt (m32): Add Negative(m64).
1012 (m64): Add Negative(m32).
1014 2007-11-26 Eric Botcazou <ebotcazou@adacore.com>
1016 * tree-ssa-propagate.c (set_rhs) <GIMPLE_MODIFY_STMT>: Fix typo.
1018 2007-11-26 Michael Meissner <michael.meissner@amd.com>
1021 * config/i386/i386.c (ix86_expand_movmem): If the copy size is a
1022 constant, avoid calling emit_cmp_and_jump_insns. Use counter_mode
1023 to get the mode for loading a pseudo register with a count rather
1024 than duplicating code.
1026 2007-11-25 Eric B. Weddington <eric.weddington@atmel.com>
1028 * config/avr/avr.c (avr_mcu_types): Add atmega1284p.
1029 * config/avr/avr.h (LINK_SPEC): Likewise.
1030 (CRT_BINUTILS_SPECS): Likewsie.
1031 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1033 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1035 * c-common.c (conversion_warning): Use get_unwidened instead of
1038 2007-11-26 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
1041 * c-parser.c (struct c_parser): New bit in_if_block.
1042 (c_parser_compound_statement_nostart): Handle unexpected 'else'
1044 (c_parser_statement_after_labels): Set in_if_block to false while
1046 (c_parser_if_body): Don't call c_parser_statement_after_labels if
1047 a semicolon is found, just consume it. Don't call
1048 c_parser_statement_after_labels if an open brace is found, call
1049 c_parser_compound_statement instead.
1050 (c_parser_else_body): New.
1051 (c_parser_if_statement): Set in_if_block to true when parsing the
1052 body of the 'if' statement. Use c_parser_else_body.
1054 2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
1057 * c-decl.c (store_parm_decls): Pass 'false' for the new
1058 allocate_struct_function parameter.
1059 * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
1060 * tree-parloops.c (create_loop_fn): Likewise.
1061 * function.c (push_function_context_to, push_struct_function,
1062 init_function_start): Likewise.
1063 (allocate_struct_function): Add boolean parameter.
1064 * tree.h (allocate_struct_function): Add boolean parameter.
1065 * function.h (struct function): Move returns_struct and
1066 returns_pcc_struct to the end of the structure definiton.
1068 2007-11-26 Uros Bizjak <ubizjak@gmail.com>
1071 * config/i386/i386.md (truncdfsf2): Select SLOT_TEMP stack slot if
1072 virtual registers are already instantiated.
1073 (truncxf<mode>2): Ditto.
1074 (floatsi<mode>2): Ditto.
1075 (floatdisf2): Ditto.
1076 (floatdidf2): Ditto.
1078 2007-11-26 Rask Ingemann Lambertsen <rask@sygehus.dk>
1081 * config/fr30/fr30.c (fr30_move_double): Sanitize mem->reg case. Copy
1082 the address before it is clobbered.
1084 2007-11-26 Nick Clifton <nickc@redhat.com>
1086 * config/mn10300/mn10300.md: (call_internal): Remove mode on
1087 operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
1088 (call_value_internal): Remove mode on operands 0 and 1 in order to
1089 match UNPSEC'ed calls generated in PIC mode.
1090 (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
1093 2007-11-26 Richard Guenther <rguenther@suse.de>
1096 * builtins.c (expand_builtin_pow): Use expand_expr to expand
1097 the result of build_call_expr.
1099 2007-11-26 Steven Bosscher <stevenb.gcc@gmail.com>
1100 Revital Eres <eres@il.ibm.com>
1103 * bb-reorder.c (insert_section_boundary_note): Clear
1104 BLOCK_FOR_INSN in NOTE_INSN_SWITCH_TEXT_SECTIONS.
1106 2007-11-26 Richard Sandiford <rsandifo@nildram.co.uk>
1108 * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add missing comma.
1110 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1112 * dwarf2asm.c (splay_tree_compare_strings): New function.
1113 (dw2_force_const_mem): Use it.
1115 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1117 * tree.c (type_hash_add): Don't violate strict aliasing rules.
1119 2007-11-26 Alexandre Oliva <aoliva@redhat.com>
1122 * c-typeck.c (tagged_types_tu_compatible_p): Enable exact
1123 matches between anonymous union fields.
1125 2007-11-26 Alexandre Oliva <aoliva@redhat.com>, Jan Hubicka <jh@suse.cz>
1127 * tree-ssa-live.c (remove_unused_scope_block_p): Drop
1128 declarations and blocks only after inlining. Check that
1129 non-empty blocks are not dropped.
1130 * tree-inline.c (expand_call_inline): Check that functions are
1131 not inlined too late.
1133 2007-11-26 Ben Elliston <bje@au.ibm.com>
1135 * unwind-dw2-fde.c: Fix comment typo.
1136 * unwind-generic.h: Likewise, fix comment typos.
1138 2007-11-25 Richard Sandiford <rsandifo@nildram.co.uk>
1140 * tree-sra.c (scalarize_use): Adjust the vpos argument to
1141 sra_explode_bitfield_assignment in cases where the type is
1142 wider than the bitfield.
1144 2007-11-25 Richard Guenther <rguenther@suse.de>
1146 * tree.h (struct tree_block): Move locus member next to flags.
1147 * c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
1148 (SCOPE_LIST_CONCAT): Likewise.
1149 (pop_scope): Likewise.
1150 * function.c (instantiate_decls_1): Likewise.
1151 (setjmp_vars_warning): Likewise.
1152 * emit-rtl.c (set_used_decls): Likewise.
1153 * tree-inline.c (add_lexical_block): Likewise.
1155 2007-11-24 Hans-Peter Nilsson <hp@axis.com>
1157 * rtlanal.c (label_is_jump_target_p): Return true for a matching
1159 * reorg.c (fill_slots_from_thread): Correct last change to use
1160 NULL_RTX, not NULL. Outside of REG_NOTES loop, increase and
1161 decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
1162 * jump.c (mark_jump_label_1): Add comment for last change
1163 regarding JUMP_LABEL setting.
1164 * gcse.c (add_label_notes): Remove conditional that the label is
1165 mentioned in insn before adding regnote.
1166 * sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
1167 single_set insn only feeding a label to a jump through a
1168 register that dies there.
1170 2007-11-23 Dirk Mueller <dmueller@suse.de>
1171 Richard Guenther <rguenther@suse.de>
1174 * tree-vrp.c (check_array_ref): Move check for valid location..
1175 (check_array_bounds) here. Use EXPR_HAS_LOCATION().
1177 2007-11-23 Hans-Peter Nilsson <hp@axis.com>
1179 * reload.c (find_reloads_address_1) <autoincdec cases>:
1180 Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
1182 2007-11-23 Richard Guenther <rguenther@suse.de>
1183 Michael Matz <matz@suse.de>
1185 PR tree-optimization/34176
1186 * alloc-pool.h (empty_alloc_pool): Declare.
1187 * alloc-pool.c (empty_alloc_pool): New function.
1188 * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
1189 valid table if a lookup from the optimistic table failed.
1190 (vn_unary_op_lookup): Likewise.
1191 (vn_binary_op_lookup): Likewise.
1192 (vn_phi_lookup): Likewise.
1193 (process_scc): Clear optimistic tables before every iteration.
1195 2007-11-23 Richard Guenther <rguenther@suse.de>
1197 * tree-ssa-copy.c (may_propagate_copy): Remove redundant checks.
1198 (merge_alias_info): Do verification only if checking is
1199 enabled. Merge flow-sensitive alias information in simple cases.
1200 * tree-ssa-operands.c (get_addr_dereference_operands): Also
1201 complain about missing NMTs.
1203 2007-11-23 Jakub Jelinek <jakub@redhat.com>
1206 * c-common.c (conversion_warning): For INTEGER_TYPE to
1207 INTEGER_TYPE conversions call get_narrower on expr to avoid
1208 spurious warnings from binop shortening or when the implicit
1209 conversion can't change the value.
1211 2007-11-22 Joseph Myers <joseph@codesourcery.com>
1214 * c-decl.c (set_array_declarator_inner): Don't give error for
1215 static or type qualifiers in abstract declarator. Remove
1216 abstract_p parameter.
1217 * c-tree.h (set_array_declarator_inner): Update prototype.
1218 * c-parser.c (c_parser_direct_declarator_inner): Update call to
1219 set_array_declarator_inner.
1220 * doc/standards.texi: Update for C99 TC3.
1222 2007-11-22 Hans-Peter Nilsson <hp@bitrange.com>
1224 * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
1225 line in my edit of the last change.
1227 2007-11-22 Jakub Jelinek <jakub@redhat.com>
1230 * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
1231 and TREE_READONLY on the fn decl rather than passing a chain
1234 2007-11-22 Kaz Kojima <kkojima@gcc.gnu.org>
1236 * config/sh/sh.md (divsi_inv_m3): Handle zero dividend specially.
1238 2007-11-22 Uros Bizjak <ubizjak@gmail.com>
1240 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
1241 of ix86_arch and ix86_tune into a switch statement.
1242 (enum processor_type): Default PROCESSOR_I386 to 0.
1243 * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
1244 of "ix86_tune == PROCESSOR_K6".
1245 (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
1248 2007-11-22 Tom Tromey <tromey@redhat.com>
1250 * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
1251 avoid writing into string allocated by ggc_alloc_string.
1253 2007-11-21 Kaz Kojima <kkojima@gcc.gnu.org>
1256 * config/sh/sh.md (binary_sf_op): Remove.
1257 (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
1258 * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
1259 and gen_binary_sf_op1.
1261 2007-11-21 Hans-Peter Nilsson <hp@axis.com>
1263 * regclass.c (init_reg_autoinc): Fix typo preventing test of
1264 secondary output reload when setting forbidden_inc_dec_class.
1266 2007-11-21 Richard Guenther <rguenther@suse.de>
1268 PR tree-optimization/34148
1269 * tree-ssa-structalias.c (create_variable_info_for): Do not use
1270 field-sensitive PTA for single-element structures.
1271 * tree-ssa-alias.c (create_overlap_variables_for): Do not create
1272 SFTs for single-element structures.
1274 2007-11-20 Richard Guenther <rguenther@suse.de>
1277 * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
1278 of the signed INT_CST_LT.
1279 * stmt.c (expand_case): Likewise.
1280 (estimate_case_costs): Likewise.
1282 2007-11-20 Rask Ingemann Lambertsen <rask@sygehus.dk>
1284 * read-rtl.c (fatal_expected_char): Print EOF as text rather that
1285 its binary representation.
1287 2007-11-20 Richard Guenther <rguenther@suse.de>
1289 * tree-ssa-operands.c (add_virtual_operand): Consistently prune
1292 2007-11-20 Thiemo Seufer <ths@mips.com>
1294 * config/mips/mips.c (mips_file_start): Add support for
1295 flagging 32-bit code with -mfp64 floating-point.
1297 2007-11-20 Jakub Jelinek <jakub@redhat.com>
1300 * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
1301 (c_gimplify_expr): Use it.
1303 2007-11-20 Ben Elliston <bje@au.ibm.com>
1305 * config/spu/spu_mfcio.h: Fix typo.
1307 2007-11-20 Ben Elliston <bje@au.ibm.com>
1309 * unwind.inc: Comment that unwind-sjlj.c includes this file.
1311 2007-11-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1312 Ben Elliston <bje@au.ibm.com>
1314 * config/spu/mfc_tag_release.c: New file.
1315 * config/spu/mfc_multi_tag_release.c: Likewise.
1316 * config/spu/mfc_multi_tag_reserve.c: Likewise.
1317 * config/spu/mfc_tag_release.c: Likewise.
1318 * config/spu/mfc_tag_reserve.c: Likewise.
1319 * config/spu/mfc_tag_table.c: Likewise.
1320 * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
1321 (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
1322 * config/spu/spu_mfcio.h: Avoid <stdint.h>.
1323 (uint64_t): Typedef if __IN_LIBGCC2 is defined.
1324 (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
1325 (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
1326 mfc_multi_tag_release): Likewise.
1327 (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
1328 __mfc_multi_tag_release): Declare.
1330 2007-11-19 Jason Merrill <jason@redhat.com>
1332 PR debug/28834, debug/29436, c/32326
1333 * tree.c (build_type_attribute_qual_variant): Refuse to make
1334 a distinct copy of a struct/enum type. Use build_distinct_type_copy.
1335 * doc/extend.texi (Type Attributes): Don't encourage people to add
1336 attributes to struct/enum types in a typedef. Fix
1337 transparent_union example.
1339 * tree-inline.c (remap_type_1): Remove code that's redundant with
1341 (build_duplicate_type): Set id.copy_decl.
1342 * c-common.c (handle_transparent_union_attribute): Simplify logic.
1344 2007-11-19 Peter Bergner <bergner@vnet.ibm.com>
1346 * config/rs6000/rs6000.c (invalid_e500_subreg,
1347 rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
1348 rs6000_legitimize_address, rs6000_legitimize_reload_address,
1349 rs6000_legitimate_address, function_arg_advance,
1350 spe_build_register_parallel, rs6000_spe_function_arg,
1351 rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
1352 emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
1353 rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
1354 TDmode similarly to DFmode and TFmode.
1355 * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
1356 DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
1358 2007-11-19 Eric Botcazou <ebotcazou@adacore.com>
1360 * stor-layout.c (lang_adjust_rli): Delete.
1361 (set_lang_adjust_rli): Likewise.
1362 (layout_type): Do not call lang_adjust_rli hook.
1363 * tree.h (set_lang_adjust_rli): Delete.
1365 2007-11-19 Bernd Schmidt <bernd.schmidt@analog.com>
1367 * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
1368 n_dregs_to_save and n_pregs_to_save.
1369 (n_pregs_to_save, n_dregs_to_save): Use it. New argument CONSECUTIVE;
1370 all callers changed.
1371 (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
1372 able to save single D/P registers that aren't saved by the push/pop
1375 2007-11-19 Richard Guenther <rguenther@suse.de>
1377 PR tree-optimization/34099
1378 * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
1379 MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
1380 if only one operand is undefined.
1382 2007-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
1384 PR tree-optimization/34036
1385 * opts.c (set_fast_math_flags): Do not set flags in common
1386 with set_unsafe_math_optimizations_flags, invoke it directly.
1387 (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
1388 and flag_signed_zeros.
1389 * toplev.c (process_options): Force flag_associative_math to 0 and
1390 warn, if it is set and either flag_trapping_math or flag_signed_zeros
1392 * doc/invoke.texi (Optimize Options): Document the new behavior
1393 of -funsafe-math-optimizations, that -fassociative-math requires
1394 both -fno-signed-zeros and -fno-trapping-math and make it clear
1395 that -fno-trapping-math requires -fno-signaling-nans. Refactor
1396 documentation of -ffast-math.
1398 2007-11-18 Jakub Jelinek <jakub@redhat.com>
1400 PR rtl-optimization/34132
1401 * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
1405 * optabs.h (optab_table): Change type to struct optab from optab.
1406 (convert_optab_table): Similarly.
1407 Adjust all _optab macros to expand to addresses of optab_table
1408 resp. convert_optab_table elements rather than the values of the
1410 * optabs.c (optab_table): Change typype to struct optab from optab.
1411 If compiled by recent GCC, initialize all the insn_code fields in
1412 the array using designated range initializers.
1413 (convert_optab_table): Similarly.
1414 (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
1415 set_conv_libfunc): Into libfunc_entry's optab field store index within
1416 optab_table resp. convert_optab_table array instead of difference
1417 between two separately malloced addresses.
1418 (new_optab): Add op argument, don't return anything. Initialize
1419 just the insn_code field in handlers array and only when needed.
1420 (init_optab, init_optabv): Add op argument, don't return anything.
1421 Adjust new_optab caller.
1422 (new_convert_optab): Removed.
1423 (init_convert_optab): Add op argument, don't return anything, don't
1424 call new_convert_optab. If needed, initialize insn_code field in
1426 (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
1428 (debug_optab_libfuncs): Adjust uses of optab_table and
1429 convert_optab_table arrays.
1431 2007-11-18 Richard Guenther <rguenther@suse.de>
1433 PR tree-optimization/34127
1434 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1435 Make code match up the comments, require compatibility of the
1438 2007-11-17 Richard Guenther <rguenther@suse.de>
1441 * fold-const.c (extract_muldiv_1): Do not move negative
1442 constants inside ABS_EXPR.
1444 2007-11-16 Ian Lance Taylor <iant@google.com>
1446 * collect2.c (dump_file): If a demangled symbol is followed by a
1447 space, make sure we output at least one space.
1449 2007-11-16 Richard Guenther <rguenther@suse.de>
1452 * fold-const.c (fold_binary): Use correct types for folding
1453 1 << X & Y to Y >> X & 1.
1455 2007-11-16 Richard Guenther <rguenther@suse.de>
1457 PR tree-optimization/33870
1458 * tree.h (struct tree_memory_tag): Add base_for_components flag.
1459 (struct tree_struct_field_tag): Remove nesting_level field.
1460 (SFT_NESTING_LEVEL): Remove.
1461 (SFT_BASE_FOR_COMPONENTS_P): Add.
1462 * tree-flow.h (struct fieldoff): Remove nesting_level field. Add
1463 base_for_components flag.
1464 (push_fields_onto_fieldstack): Remove nesting_level parameter.
1465 * tree-ssa-alias.c (create_sft): Likewise. Add base_for_components
1467 (create_overlap_variables_for): Deal with it.
1468 * tree-dfa.c (dump_subvars_for): Likewise.
1469 (dump_variable): Likewise.
1470 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
1471 Set base_for_components for first elements of sub-structures.
1472 (create_variable_info_for): Handle base_for_components.
1473 (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
1474 pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
1475 * tree-ssa-operands.c (ref_nesting_level): Remove.
1476 (add_vars_for_offset): Remove full_ref parameter, always add
1477 the offset of the pointed-to SFT.
1478 (add_virtual_operand): Adjust for changed signature of
1479 add_vars_for_offset.
1481 2007-11-16 Sa Liu <saliu@de.ibm.com>
1483 * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined
1484 floatunssidf2 and floatunsdidf2.
1486 2007-11-16 Richard Guenther <rguenther@suse.de>
1488 PR tree-optimization/34113
1489 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1490 Use correct conversion direction for checking type compatibility.
1492 2007-11-16 Richard Guenther <rguenther@suse.de>
1494 PR tree-optimization/34099
1495 * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
1496 that produce UNDEFINED result if at least one of its operands
1497 is UNDEFINED. By default the result is only UNDEFINED if all
1498 operands are UNDEFINED.
1500 2007-11-16 Jakub Jelinek <jakub@redhat.com>
1503 * gcc.c (init_spec): Don't initialize asm_debug here...
1504 (main): ... but here.
1506 2007-11-07 Tom Tromey <tromey@redhat.com>
1508 * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'.
1509 * tree-parloops.c (create_loop_fn): Use set_cfun.
1510 * gengtype.c (open_base_files): Emit #undef cfun.
1511 * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
1512 * function.h (cfun): New define.
1513 * function.c: Undefine cfun.
1515 2007-11-07 Eric B. Weddington <eweddington@cso.atmel.com>
1517 * config/avr/avr.c (avr_mcu_types): Add attiny88.
1518 * config/avr/avr.h (LINK_SPEC): Likewise.
1519 (CRT_BINUTILS_SPECS): Likewsie.
1520 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1522 2007-11-15 Jakub Jelinek <jakub@redhat.com>
1525 * tree-ssa-ccp.c (optimize_stack_restore): New function.
1526 (execute_fold_all_builtins): Call optimize_stack_restore for
1527 BUILT_IN_STACK_RESTORE.
1529 2007-11-15 Paolo Bonzini <bonzini@gnu.org>
1531 * fwprop.c (try_fwprop_subst): Skip profitability check for forward
1532 propagation into an address; that's done in should_replace_address.
1534 2007-11-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1536 * config/spu/spu-protos.h (legitimate_const): Remove prototype.
1537 * config/spu/spu.c (legitimate_const): Remove.
1538 (classify_immediate): Inline call to legitimate_const.
1539 (spu_legitimate_address): Likewise. Allow SYMBOL_REF + CONST_INT
1540 for any constant, not just -512 .. 511.
1542 2007-11-15 Sa Liu <saliu@de.ibm.com>
1544 * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
1545 condition from HONOR_NANS test.
1546 * config/spu/spu.md (ceq_df): Always generate comparison code
1547 inline, including checks for NaNs and infinities.
1549 (cgt_v2df): Likewise.
1550 (cmpdf): Make this expander unconditional.
1552 2007-11-15 Richard Guenther <rguenther@suse.de>
1554 * tree-ssa-alias.c (create_overlap_variables_for): Make sure
1555 to only create SFTs if we also create variable infos for PTA.
1556 * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping SFTs.
1558 2007-11-15 Richard Guenther <rguenther@suse.de>
1560 * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
1561 type for TBAA pruning.
1562 (find_what_p_points_to): Call set_uids_in_ptset with the original
1563 pointer, not the decl of the solution we collapsed to.
1565 2007-11-14 David Daney <ddaney@avtrex.com>
1567 * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
1570 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1573 * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
1574 for registers in BR_REGS class.
1576 2007-11-14 Jakub Jelinek <jakub@redhat.com>
1579 * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
1580 init_ssa_operands has not been called for cfun.
1582 2007-11-14 Eric Botcazou <ebotcazou@libertysurf.fr>
1584 PR tree-optimization/34046
1585 * cfg.c (update_bb_profile_for_threading): Avoid the division for the
1586 scaling if the old probability is greater than the new base.
1588 2007-11-14 Sebastian Pop <sebastian.pop@amd.com>
1590 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
1591 unused edges after loop duplication.
1593 2007-11-14 Uros Bizjak <ubizjak@gmail.com>
1595 * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
1596 (enum target_cpu_default): ... this enum.
1597 (TARGET_CPU_DEFAULT_NAMES): Remove macro. Move initializer to ...
1598 * config/i386/i386.c (override_options): ... here.
1599 * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
1600 TARGET_CPU_DEFAULT_i486.
1602 2007-11-14 Rask Ingemann Lambertsen <rask@sygehus.dk>
1604 * global.c (rest_of_handle_global_alloc): Fix comment typos.
1605 * config/sh/sh.c (sh_rtx_costs): Likewise.
1606 * ChangeLog: Likewise.
1608 2007-11-13 Sebastian Pop <sebastian.pop@amd.com>
1610 * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
1611 should not be of pointer type.
1613 2007-11-13 Michael Meissner <michael.meissner@amd.com>
1615 * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate line.
1617 2007-11-13 Sterling Augustine <sterling@tensilica.com>
1618 Bob Wilson <bob.wilson@acm.org>
1620 * config/xtensa/unwind-dw2-xtensa.c: New.
1621 * config/xtensa/unwind-dw2-xtensa.h: New.
1622 * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
1623 (DWARF2_UNWIND_INFO): Remove.
1624 (DWARF_FRAME_REGISTERS): Define.
1625 (EH_RETURN_DATA_REGNO): Define.
1626 * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
1628 * config/xtensa/t-xtensa (LIB2ADDEH): Define.
1630 2007-11-13 Jakub Jelinek <jakub@redhat.com>
1632 * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
1633 -fsched-stalled-insns.
1635 PR tree-optimization/34063
1636 * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
1637 as first chrec_fold_plus operand rather than second.
1639 2007-11-13 Diego Novillo <dnovillo@google.com>
1641 PR tree-optimization/33870
1642 * tree.h (strcut tree_memory_tag): Add field unpartitionable.
1643 Remove field in_nested_struct.
1644 (struct tree_struct_field_tag): Add field nesting_level.
1645 (sft_in_nested_struct): Remove.
1646 (sft_nesting_level): Define.
1647 (sft_unpartitionable_p): Define.
1648 * tree-ssa-alias.c (mem_sym_score): If mp->var is not
1649 partitionable, return long_max.
1650 (compute_memory_partitions): Do not partition sfts marked
1652 (create_sft): Add argument nesting_level. Set
1653 sft_nesting_level with it. Update all users.
1654 (create_overlap_variables_for): Show nesting level.
1655 * tree-dfa.c (dump_subvars_for): Likewise.
1656 (dump_variable): Likewise. Show whether the sft is
1657 partitionable or not.
1658 * tree-flow.h (struct fieldoff): Remove field in_nested_struct.
1659 Add field nesting_level.
1660 * tree-ssa-structalias.c (struct variable_info): Remove
1661 field in_nested_struct.
1662 (push_fields_onto_fieldstack): Add argument nesting_level.
1663 Update all users. Update documentation. Update pair->nesting_level
1664 with nesting_level. Make recursive calls with nesting_level + 1.
1665 (set_uids_in_ptset): If an sft is added to the points-to set,
1666 mark it as unpartitionable.
1667 * tree-ssa-operands.c (ref_nesting_level): New.
1668 (add_vars_for_offset): Call it. Add argument full_ref. Update
1669 callers. If var is inside a nested structure and the nesting level
1670 of full_ref is lower than the nesting level of var,
1671 adjust offset by the offset of var.
1673 2007-11-13 Victor Kaplansky <victork@il.ibm.com>
1675 PR tree-optimization/32582
1676 * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
1678 2007-11-12 Danny Smith <dannysmith@users.sourceforge.net>
1680 * doc/extend.texi (dllimport): Document that pointers to dllimport'd
1681 functions can be used as constant.
1683 2007-11-12 Eric Botcazou <ebotcazou@libertysurf.fr>
1685 PR rtl-optimization/34035
1686 * cse.c (cse_cfg_altered): New global variable.
1687 (cse_jumps_altered): Make boolean.
1688 (recorded_label_ref): Likewise.
1689 (cse_insn): Adjust for above changes.
1690 (cse_extended_basic_block): Likewise. Set cse_cfg_altered
1691 if dead edges have been purged.
1692 (cse_main): Change return value specification and adjust code.
1693 (rest_of_handle_cse): Adjust for above change.
1694 (rest_of_handle_cse2): Likewise.
1695 * gcse.c (rest_of_handle_gcse): Likewise.
1697 2007-11-12 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
1698 Michael Meissner <michael.meissner@amd.com>
1700 * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
1701 get the appropriate suffix for the coms* instruction.
1702 (sse5_pcmov_<mode>): Restrict operands of pcmov
1703 for scalar case to be only xmm registers and not memory.
1705 * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
1706 constraints to follow the mnemonics for the pcmov instruction
1708 2007-11-12 Richard Sandiford <rsandifo@nildram.co.uk>
1711 * config/mips/mips.c (mips_return_fpr_single): New function.
1712 (mips_function_value): Use it when returning single-field
1714 (mips_expand_call): Handle the PARALLELs created by
1715 mips_return_fpr_single.
1717 2007-11-12 Richard Guenther <rguenther@suse.de>
1720 * fold-const.c (fold_binary): If testing for non-negative
1721 operands with tree_expr_nonnegative_warnv_p make sure to
1722 use op0 which has all (sign) conversions retained.
1724 2007-11-12 Richard Guenther <rguenther@suse.de>
1727 * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
1728 (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
1730 2007-11-12 Ira Rosen <irar@il.ibm.com>
1732 PR tree-optimization/33953
1733 * tree-vect-transform.c (vectorizable_operation): In case of SLP,
1734 allocate vec_oprnds1 according to the number of created vector
1735 statements. In case of shift with scalar argument, store scalar
1736 operand for every vector statement to be created for the SLP node.
1739 2007-11-10 Steven Bosscher <stevenb.gcc@gmail.com>
1741 * gcse.c (CUID_INSN): Remove.
1743 (alloc_gcse_mem): Don't allocate cuid_insn.
1744 (free_gcse_mem): Don't free cuid_insn.
1746 2007-11-10 Jakub Jelinek <jakub@redhat.com>
1749 * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
1753 * tree-inline.h (copy_body_data): Add regimplify field.
1754 * tree-inline.c (copy_body_r): Set id->regimplify to true
1755 if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
1757 (copy_bb): Clear id->regimplify before walk_tree, if it is
1758 set afterwards, regimplify the whole statement.
1760 PR tree-optimization/33680
1761 * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
1762 if the added cast involves variable length types.
1764 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
1765 Maxim Kuvyrkov <maxim@codesourcery.com>
1767 * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
1768 instead of TRUE_BARRIER for jumps. Add register dependencies
1769 even when reg_pending_barrier is set.
1771 2007-11-09 Alexander Monakov <amonakov@ispras.ru>
1773 * haifa-sched.c (haifa_classify_insn): Rename to ...
1774 (haifa_classify_rtx): ... this. Improve handling of COND_EXECs,
1775 handle PARALLELs by recursing. Use it ...
1776 (haifa_classify_insn): ... here. Reimplement.
1778 2007-11-09 Richard Guenther <rguenther@suse.de>
1780 * bitmap.h (bitmap_single_bit_set_p): Declare.
1781 * bitmap.c (bitmap_single_bit_set_p): New function.
1782 * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
1783 (maybe_create_global_var): Use bitmap_empty_p.
1785 2007-11-09 Paolo Bonzini <bonzini@gnu.org>
1786 Jakub Jelinek <jakub@redhat.com>
1788 PR rtl-optimization/34012
1789 * fwprop.c (try_fwprop_subst): Do not replace if the new
1790 SET_SRC has a higher cost than the old one.
1792 2007-11-09 Eric Botcazou <ebotcazou@libertysurf.fr>
1794 PR rtl-optimization/33732
1795 * reload.c (push_reload): Check that the REG_DEAD note was referring
1796 to a hardreg or to a pseudo that has been assigned exactly one hardreg
1797 before considering it in order to select the reload register.
1798 (combine_reloads): Likewise.
1799 (find_dummy_reload): Likewise.
1801 2007-11-09 Richard Guenther <rguenther@suse.de>
1803 * tree-flow.h (struct ptr_info_def): Make escape_mask a ENUM_BITFIELD.
1804 (struct ptr_info_def): Likewise.
1805 (enum escape_type): Also use bit zero.
1807 2007-11-09 Richard Guenther <rguenther@suse.de>
1809 PR tree-optimization/33604
1810 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1811 Disregard changes in CV qualifiers of pointed to types for
1812 forward propagating ADDR_EXPRs.
1813 * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
1816 2007-11-09 Richard Sandiford <rsandifo@nildram.co.uk>
1818 * dse.c (find_shift_sequence): Always choose an integer mode for
1820 (replace_read): Require both the read and store mode to be
1821 integer ones. Remove a then-redundant FLOAT_P check.
1823 2007-11-08 Richard Guenther <rguenther@suse.de>
1825 * tree-dfa.c (remove_referenced_var): If removing a
1826 variable which has subvars, also remove those from
1827 the referenced vars. Do not create a variable annotation.
1829 2007-11-08 Bob Wilson <bob.wilson@acm.org>
1831 * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
1832 argument for gen_entry calls.
1833 * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
1834 (entry): Use the new attribute value. Remove unused first operand.
1836 2007-11-08 Tom Tromey <tromey@redhat.com>
1838 * c-parser.c (c_parser_translation_unit): Use location in error.
1839 (c_parser_external_declaration): Likewise.
1840 (c_parser_declaration_or_fndef): Likewise.
1841 (c_parser_enum_specifier): Likewise.
1842 (c_parser_struct_or_union_specifier): Likewise.
1843 (c_parser_struct_declaration): Likewise.
1844 (c_parser_typeof_specifier): Likewise.
1845 (c_parser_parms_list_declarator): Likewise.
1846 (c_parser_asm_string_literal): Likewise.
1847 (c_parser_braced_init): Likewise.
1848 (c_parser_initelt): Likewise.
1849 (c_parser_compound_statement_nostart): Likewise.
1850 (c_parser_statement_after_labels): Likewise.
1851 (c_parser_do_statement): Likewise.
1852 (c_parser_asm_statement): Likewise.
1853 (c_parser_conditional_expression): Likewise.
1854 (c_parser_unary_expression): Likewise.
1855 (c_parser_sizeof_expression): Likewise.
1856 (c_parser_postfix_expression): Likewise.
1857 (c_parser_postfix_expression_after_paren_type): Likewise.
1858 (c_parser_objc_class_instance_variables): Likewise.
1859 (c_parser_objc_method_definition): Likewise.
1860 (c_parser_objc_methodprotolist): Likewise.
1861 (c_parser_pragma): Likewise.
1862 (c_parser_omp_clause_num_threads): Likewise.
1863 (c_parser_omp_clause_schedule): Likewise.
1864 (c_parser_omp_all_clauses): Likewise.
1865 (c_parser_omp_sections_scope): Likewise.
1866 (c_parser_label): Use location of label, not colon.
1868 2007-11-08 Danny Smith <dannysmith@users.sourceforge.net>
1871 * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
1874 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1877 * ipa-pure-const.c (static_execute): Added code to keep recursive
1878 functions from being marked as pure or const.
1879 * ipa-utils.c (searchc): Fixed comment.
1881 2007-11-08 Tom Tromey <tromey@redhat.com>
1883 * common.opt (fshow-column): Default to 0.
1884 * configure: Rebuilt.
1885 * configure.ac (--enable-mapped-location): Default to 'yes'.
1887 2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
1889 * common.opt: Add pointer to doc/options.texi.
1890 * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
1891 -fipa-reference): Add or correct doc. Sorted options list for -Os
1894 2007-11-07 Bernhard Fischer <aldot@gcc.gnu.org>
1897 * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
1898 * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
1899 TARGET_BIG_ENDIAN_DEFAULT. Use for MULTILIB_DEFAULTS.
1900 (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
1901 (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
1902 * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
1903 to TARGET_BIG_ENDIAN_DEFAULT.
1904 (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
1905 * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
1906 to TARGET_BIG_ENDIAN_DEFAULT.
1908 2007-11-07 Diego Novillo <dnovillo@google.com>
1910 * tree.h (struct tree_struct_field_tag): Move field
1911 in_nested_struct ...
1912 (struct tree_memory_tag): ... here.
1914 2007-11-07 Diego Novillo <dnovillo@google.com>
1917 * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
1918 (SFT_IN_NESTED_STRUCT): Define.
1919 * tree-dfa.c (dump_subvars_for): Show offset of each sub-var.
1920 * tree-flow.h (struct fieldoff): Add field in_nested_struct.
1921 * tree-ssa-structalias.c (struct variable_info): Likewise.
1922 (push_fields_onto_fieldstack): If OFFSET is positive,
1923 set in_nested_struct.
1924 (create_variable_info_for): Copy setting of
1925 in_nested_struct from the field offset object.
1926 (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
1927 variable info object.
1928 * tree-ssa-operands.c (add_vars_for_offset): If VAR
1929 belongs to a nested structure, adjust OFFSET by SFT_OFFSET(VAR).
1931 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
1933 PR rtl-optimization/33737
1934 * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
1935 target block after computing the probabilities of outgoing edges.
1936 Cap the frequency to BB_FREQ_MAX.
1937 * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
1938 frequency of the basic block if it has been reused.
1940 2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
1942 PR rtl-optimization/33822
1943 * rtl.h (REG_OFFSET): Fix comment.
1944 * var-tracking.c (INT_MEM_OFFSET): New macro.
1945 (var_mem_set): Use it.
1946 (var_mem_delete_and_set): Likewise.
1947 (var_mem_delete): Likewise.
1948 (same_variable_part_p): Likewise.
1949 (vt_get_decl_and_offset): Likewise.
1950 (offset_valid_for_tracked_p): New predicate.
1951 (count_uses): Do not track locations with invalid offsets.
1952 (add_uses): Likewise.
1953 (add_stores): Likewise.
1955 2007-11-07 Tom Tromey <tromey@redhat.com>
1957 * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
1958 (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
1960 2007-11-07 Dmitry Zhurikhin <zhur@ispras.ru>
1961 Andrey Belevantsev <abel@ispras.ru>
1963 * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
1964 generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
1965 (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
1966 Save calculated max_asap in it.
1967 (sms_schedule): Calculate maxii using max_asap.
1969 2007-11-07 Andreas Krebbel <krebbel1@de.ibm.com>
1971 * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
1972 with -mhard-dfp/-mno-hard-dfp.
1974 2007-11-07 Maxim Kuvyrkov <maxim@codesourcery.com>
1975 Jakub Jelinek <jakub@redhat.com>
1978 * haifa-sched.c (check_sched_flags): Remove.
1979 (sched_init): Don't call it.
1981 2007-11-06 Diego Novillo <dnovillo@google.com>
1983 * tree-flow.h (struct fieldoff): Reformat comment. Document fields.
1984 * tree-ssa-operands.c: Tidy top-level comments.
1985 (add_vop): Likewise.
1986 (add_vars_for_offset): Tidy parameter formatting..
1987 (get_addr_dereference_operands): Likewise.
1988 (get_indirect_ref_operands): Likewise.
1989 (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
1990 <OMP_ATOMIC_STORE>: Likewise.
1992 2007-11-06 Rask Ingemann Lambertsen <rask@sygehus.dk>
1995 * config/i386/driver-i386.c: Test for __GNUC__ instead of
1996 GCC_VERSION which is always defined.
1998 2007-11-06 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
2001 * reload1.c (find_reloads): Also check in_reg when handling a
2002 simple move with an input reload and a destination of a hard register.
2004 2007-11-06 Maxim Kuvyrkov <maxim@codesourcery.com>
2006 * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
2007 (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
2008 TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
2009 TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
2010 TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
2011 (m68k_sched_attr_type2): New function.
2012 (sched_adjust_cost_state): New static variable.
2013 (m68k_sched_adjust_cost): New static function implementing
2015 (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
2016 New static variables.
2017 (m68k_sched_variable_issue): New static function implementing
2019 (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
2020 (sched_dump_split_class): New static function.
2021 (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
2023 (sched_dump_dfa_class, m68k_sched_dump): New static function.
2024 (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2025 m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
2026 m68k_sched_dfa_post_advance_cycle): New static functions implementing
2029 * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
2030 (CPU_UNITS_QUERY): Define.
2032 * config/m68k/cf.md: New file.
2033 * config/m68k/m68.md (cf.md): New include.
2035 2007-11-06 Tom Tromey <tromey@redhat.com>
2037 PR c++/32256, PR c++/32368:
2038 * function.c (saved_in_system_header): New global.
2039 (push_cfun): Save in_system_header.
2040 (pop_cfun): Restore in_system_header.
2041 (push_struct_function): Save in_system_header.
2043 2007-11-06 Douglas Gregor <doug.gregor@gmail.com>
2047 * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
2048 (complete_array_type): Set canonical type appropriately.
2049 * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
2050 C and C++ front ends now have different versions of this function,
2051 because the C++ version needs to maintain canonical types here.
2053 2007-11-04 Razya Ladelsky <razya@il.ibm.com>
2055 * tree-parloops.c (reduction_info): Remove reduction_init field.
2056 (initialize_reductions): Remove creation of the reduction_init variable.
2057 (struct data_arg): Remove.
2058 (add_field_for_reduction, create_stores_for_reduction): New functions.
2059 (add_field_for_name): Remove reduction handling.
2060 (separate_decls_in_loop): Call add_field_for_reduction,
2061 create_stores_for_reduction.
2063 2007-11-06 Jakub Jelinek <jakub@redhat.com>
2065 PR tree-optimization/33458
2066 * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
2067 !is_gimple_val PHI argument, gimplify it and insert it on edge.
2069 PR tree-optimization/33993
2070 * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
2071 rather than build_constructor_from_list if all list values are
2073 (get_initial_def_for_induction): Use build_vector instead of
2074 build_constructor_from_list.
2076 2007-11-05 Mark Mitchell <mark@codesourcery.com>
2079 * tree.h (DECL_INIT_PRIORITY): Do not require DECL_HAS_INIT_PRIORITY_P.
2080 (DECL_FINI_PRIORITY): Likewise.
2081 * tree.c (decl_init_priority_lookup): Remove assert.
2082 (decl_fini_priority_insert): Likewise.
2083 * cgraphunit.c (static_ctors): Make it a VEC.
2084 (static_dtors): Likewise.
2085 (record_cdtor_fn): Adjust accordingly.
2086 (build_cdtor): Generate multiple functions for each initialization
2088 (compare_ctor): New function.
2089 (compare_dtor): Likewise.
2090 (cgraph_build_cdtor_fns): Sort the functions by priority before
2091 calling build_cdtor.
2092 (cgraph_build_static_cdtor): Put the priority in the function's name.
2094 2007-11-05 H.J. Lu <hongjiu.lu@intel.com>
2097 * common.opt: Add shared and pie.
2099 2007-11-05 Bob Wilson <bob.wilson@acm.org>
2101 * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
2102 replace references to virtual_stack_vars_rtx in goto_handler.
2104 2007-11-05 Paul Brook <paul@codesourcery.com>
2106 * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
2107 * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
2108 (arm_file_start): Don't set Tag_ABI_PCS_wchar_t. Call
2109 arm_lang_output_object_attributes_hook.
2110 * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
2111 (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
2112 * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
2114 * config/arm/t-arm.c (arm.o): New rule.
2115 * config/arm/arm-c.c: New file.
2117 2007-11-05 Nick Clifton <nickc@redhat.com>
2118 Sebastian Pop <sebastian.pop@amd.com>
2120 PR tree-optimization/32540
2121 PR tree-optimization/33922
2122 * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
2123 * tree-ssa-pre.c: Include params.h.
2124 (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
2125 to limit the maximum length of the PA set for a given block.
2126 * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
2127 * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
2129 2007-11-05 Nathan Sidwell <nathan@codesourcery.com>
2131 * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2132 __fixunssfDI): Make return type unsigned.
2133 * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
2134 __fixunssfDI): Make return type unsigned.
2136 2007-11-05 Jakub Jelinek <jakub@redhat.com>
2138 PR tree-optimization/33856
2139 * tree-data-ref.c (get_references_in_stmt): Don't add
2140 REFERENCE_CLASS_P trees to references vector if get_base_address
2141 returns NULL on them.
2143 2007-11-05 Alexandre Oliva <aoliva@redhat.com>
2145 * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
2147 2007-11-04 Andrew Pinski <pinskia@gmail.com>
2150 * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
2151 for TRUTH_NOT_EXPR to type.
2153 2007-11-04 Gerald Pfeifer <gerald@pfeifer.com>
2155 * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
2157 2007-11-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2160 * dwarf2out.c (add_calling_convention_attribute): Change
2161 second argument. Set calling convention to DW_CC_program for
2162 Fortran main program.
2163 (gen_subprogram_die): Adjust to new prototype for
2164 add_calling_convention_attribute.
2166 2007-11-03 Dorit Nuzman <dorit@il.ibm.com>
2168 PR tree-optimization/33987
2169 * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
2171 (vectorizable_reduction): Add type check.
2173 2007-11-03 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
2176 * c-parser.c (c_parser_statement_after_labels): Error if a
2177 declaration is parsed after a label.
2179 2007-11-03 Daniel Jacobowitz <dan@codesourcery.com>
2182 * reorg.c (emit_delay_sequence): Do not clear the locator on
2183 the jump instruction.
2185 2007-11-03 Jakub Jelinek <jakub@redhat.com>
2188 * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
2189 current sched region.
2191 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2193 * config/ia64/ia64.c (struct reg_write_state): Change into
2194 unsigned short bitfields rather than unsigned int, decrease
2195 first_pred to just 10 bits.
2196 (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
2197 into two char array.
2198 (rws_insn_set, rws_insn_test): New functions.
2199 (in_safe_group_barrier): New variable.
2200 (rws_update): Remove first argument, always set rws_sum array.
2201 (rws_access_regno): Use rws_insn_set macro. Only call rws_update
2202 or update rws_sum if !in_safe_group_barrier, adjust rws_update args.
2203 (rtx_needs_barrier): Use rws_insn_test macro.
2204 (safe_group_barrier_needed): Don't save/restore rws_sum array,
2205 instead set/clear in_safe_group_barrier flag.
2207 2007-11-02 Bob Wilson <bob.wilson@acm.org>
2209 * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
2210 REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
2211 pointer or frame pointer.
2212 * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
2213 (MUST_USE_SJLJ_EXCEPTIONS): Define.
2214 (DWARF2_UNWIND_INFO): Define.
2215 (INCOMING_RETURN_ADDR_RTX): Define.
2216 (DWARF_FRAME_RETURN_COLUMN): Define.
2218 2007-11-02 Tom Tromey <tromey@redhat.com>
2220 * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
2223 2007-11-02 Diego Novillo <dnovillo@google.com>
2225 * langhooks.h (struct lang_hooks_for_callgraph): Remove third
2226 argument from function pointer ANALYZE_EXPR. Update all users.
2227 * cgraph.c (debug_cgraph_node): New.
2228 (debug_cgraph): New.
2230 2007-11-02 Jakub Jelinek <jakub@redhat.com>
2232 PR rtl-optimization/33648
2233 * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
2234 the newly created basic block.
2236 2007-11-01 Richard Guenther <rguenther@suse.de>
2238 * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
2240 2007-11-01 Steven Bosscher <stevenb.gcc@gmail.com>
2242 PR rtl-optimization/33828
2243 * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
2244 of VBEIN and VBEOUT.
2246 2007-11-01 Eric Botcazou <ebotcazou@libertysurf.fr>
2248 * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
2249 * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
2250 * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
2252 2007-11-01 Nathan Sidwell <nathan@codesourcery.com>
2254 * gcc.c (getenv_spec_function): Escape the environment variable's
2257 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2259 * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
2260 show that CSE means common subexpression elimination. Change wording
2261 for -fsee and define LCM. Remove capitalization of optimizations
2262 for -ftree-reassoc, -ftree-pre, and -ftree-fre.
2264 2007-11-01 Janis Johnson <janis187@us.ibm.com>
2267 * doc/sourcebuild.texi (Test Directives): Document that xfail
2268 has no effect for dg-do except when dg-do-what is "run".
2270 2007-11-01 Tom Tromey <tromey@redhat.com>
2272 * c-decl.c (grokdeclarator): Set decl source locations.
2273 * c-parser.c (c_parser_enum_specifier): Set location.
2274 (c_parser_struct_or_union_specifier): Likewise.
2276 2007-11-01 Tom Tromey <tromey@redhat.com>
2278 * print-tree.c (print_node): Print column number.
2280 2007-11-01 Jakub Jelinek <jakub@redhat.com>
2283 * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
2284 gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
2285 rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
2287 PR rtl-optimization/33673
2288 * gcse.c (cprop_jump): If a conditional jump has been optimized
2289 into unconditional jump, make the remaining normal edge fallthru
2290 and delete the jump insn.
2292 2007-11-01 Ben Elliston <bje@au.ibm.com>
2294 * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
2295 (set_mem_attrs_from_reg): Likewise.
2297 2007-11-01 Michael Matz <matz@suse.de>
2299 PR tree-optimization/33961
2300 * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
2301 (name_to_bb_hash, name_to_bb_eq): Consider and check it.
2302 (add_or_mark_expr): New argument 'store', using it to search
2304 (nt_init_block): Adjust calls to add_or_mark_expr.
2306 2007-10-31 Jakub Jelinek <jakub@redhat.com>
2309 * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
2310 for the first push_operand.
2312 2007-10-31 Revital Eres <eres@il.ibm.com>
2314 * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
2315 reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
2316 vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
2317 movmisalignv2sf, vcondv2sf): New.
2318 (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
2319 UNSPEC_EXTODD_V2SF): Define new constants.
2320 * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
2321 paired_emit_vector_cond_expr): New.
2322 * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
2323 * config/rs6000/rs6000.c (paired_expand_vector_move,
2324 paired_emit_vector_cond_expr, paired_emit_vector_compare):
2326 * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
2328 2007-10-31 Sebastian Pop <sebastian.pop@amd.com>
2330 PR tree-optimization/32377
2331 * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
2332 work also for unknown number of iterations.
2333 (analyze_subscript_affine_affine): Clean up. Don't fail when the
2334 number of iterations is not known.
2336 2007-10-31 Richard Guenther <rguenther@suse.de>
2339 * fold-const.c (extract_muldiv_1): Make sure to not introduce
2340 new undefined integer overflow.
2341 (fold_binary): Avoid useless conversion.
2343 2007-10-31 Richard Sandiford <rsandifo@nildram.co.uk>
2346 * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P check.
2348 2007-10-31 Andreas Krebbel <krebbel1@de.ibm.com>
2350 * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
2352 * config/s390/s390.c: (override_options): Replace
2353 -mhard-dfp/-msoft-dfp with -mhard-dfp/-mno-hard-dfp.
2354 * config/s390/s390.opt: Likewise.
2355 * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
2358 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2360 * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
2362 2007-10-30 Janis Johnson <janis187@us.ibm.com>
2364 * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
2365 optimization options.
2366 (Optimize Options): Add -fdce and -fdse to the list of optimizations
2367 enabled by -O. Document -fdce and -fdse.
2369 2007-10-30 Jakub Jelinek <jakub@redhat.com>
2372 * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
2373 convert second operand of COMPOUND_EXPR to the original type of
2376 2007-10-30 Richard Guenther <rguenther@suse.de>
2378 * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
2379 of loop adding SFTs as virtual operands.
2381 2007-10-30 Richard Guenther <rguenther@suse.de>
2383 * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
2385 2007-10-29 Dorit Nuzman <dorit@il.ibm.com>
2387 PR tree-optimization/32893
2388 * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
2389 STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
2391 2007-10-29 Rask Ingemann Lambertsen <rask@sygehus.dk>
2393 * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
2395 (sub_ddmmss): Likewise.
2396 (umul_ppmm): Likewise.
2397 (udiv_qrnnd): Likewise.
2399 2007-10-29 Janis Johnson <janis187@us.ibm.com>
2402 * doc/sourcebuild.texi (Test Directives): Document that dg-require
2403 directives must come before dg-additional-sources.
2405 2007-10-29 Jakub Jelinek <jakub@redhat.com>
2407 PR tree-optimization/33723
2408 * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
2409 MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
2411 2007-10-29 Richard Sandiford <rsandifo@nildram.co.uk>
2413 PR tree-optimization/33614
2414 * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
2415 if they can't be reduced to VECTOR_CSTs and aren't legitimate
2416 initializer constants.
2418 2007-10-29 Richard Guenther <rguenther@suse.de>
2420 PR tree-optimization/33870
2421 * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
2422 (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
2425 2007-10-29 Richard Guenther <rguenther@suse.de>
2427 * passes.c (init_optimization_passes): Exchange store_copy_prop
2429 * tree-pass.h (pass_store_copy_prop): Remove.
2430 * tree-ssa-copy.c (do_store_copy_prop): Remove.
2431 (stmt_may_generate-copy): Do not handle store_copy_prop.
2432 (get_copy_of_val): Likewise.
2433 (set_copy_of_val): Likewise.
2434 (copy_prop_visit_assignment): Likewise.
2435 (copy_prop_visit_stmt): Likewise.
2436 (copy_prop_visit_phi_node): Likewise.
2437 (init_copy_prop): Likewise.
2438 (execute_copy_prop): Likewise.
2439 (do_copy_prop): Remove.
2440 (gate_store_copy_prop): Likewise.
2441 (store_copy_prop): Likewise.
2442 (pass_store_copy_prop): Likewise.
2443 (pass_copy_prop): Call execute_copy_prop.
2444 * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
2445 * common.opt (ftree-store-copy-prop): Mark obsolete.
2446 * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
2448 2007-10-29 Ian Lance Taylor <iant@google.com>
2450 * ifcvt.c (noce_can_store_speculate_p): New static function.
2451 (noce_process_if_block): Call it.
2452 (if_convert): Remove recompute_dominance parameter. Change all
2455 2007-10-29 Richard Guenther <rguenther@suse.de>
2457 * tree-flow-inline.h (get_subvar_at): Use binary search.
2458 (get_first_overlapping_subvar): New function to binary search
2459 for the first overlapping subvar.
2460 * tree-ssa-operands.c (add_vars_for_offset): Strip down to
2461 just handle adding subvars for a pointed-to subvar. Optimize
2462 and use get_first_overlapping_subvar.
2463 (add_vars_for_bitmap): Fold into single caller.
2464 (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
2465 and non pointed-to bits of add_vars_for_offset.
2467 2007-10-29 Revital Eres <eres@il.ibm.com>
2469 * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
2471 2007-10-29 Razya Ladelsky <razya@il.ibm.com>
2472 Zdenek Dvorak <ook@ucw.cz>
2475 reduction support for automatic parallelization.
2477 * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
2479 * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
2480 * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
2481 and OMP_ATOMIC_STORE.
2482 * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2483 * gimple-low.c (lower_stmt): Same.
2484 * gimplify.c (gimplify_expr): Same.
2485 (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
2486 gimplify_omp_atomic_mutex): Remove.
2487 (gimplify_omp_atomic): Change it to simply gimplify the
2488 statement instead of expanding it.
2489 * omp-low.c: Add includes to optabs.h, cfgloop.h.
2490 (expand_omp_atomic, expand_omp_atomic_pipeline,
2491 goa_stabilize_expr, expand_omp_atomic_mutex,
2492 expand_omp_atomic_fetch_op): New functions to implement
2493 expansion of OMP_ATOMIC.
2494 (expand_omp, build_omp_regions_1): Add support for
2495 OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
2496 * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
2498 * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
2500 * tree-parloops.c: add include to tree-vectorizer.h.
2501 (reduction_info): New structure for reduction.
2502 (reduction_list): New list to represent list of reductions per loop.
2503 (struct data_arg): New helper structure for reduction.
2504 (reduction_info_hash, reduction_info_eq, reduction_phi,
2505 initialize_reductions, create_call_for_reduction,
2506 create_phi_for_local_result, create_call_for_reduction_1,
2507 create_loads_for_reductions, create_final_loads_for_reduction):
2509 (loop_parallel_p): Identify reductions, add reduction_list parameter.
2510 (separate_decls_in_loop_name): Support reduction variables.
2511 (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
2512 call create_loads_for_reduction for each reduction.
2513 (canonicalize_loop_ivs): Identify reductions, add reduction_list
2515 (transform_to_exit_first_loop): Add reduction support, add
2516 reduction_list parameter.
2517 (gen_parallel_loop): Add reduction_list parameter. Add call
2518 separate_decls_in_loop with
2519 the new argument. Traverse reductions and call
2520 initialize_reductions, create_call_for_reduction.
2521 (parallelize_loops): Create and delete the reduction list.
2522 (add_field_for_name): Change use of data parameter. Add fields for
2524 * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
2525 * tree-vect-analyze.c (vect_analyze_loop_form): export it.
2526 * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2527 * tree-inline.c (estimate_num_insns_1): add cases for
2528 OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2529 * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2530 * tree-ssa-operands.c (get_addr_dereference_operands):
2531 New function. Subroutine of get_indirect_ref_operands.
2532 (get_indirect_ref_operands): Call get_addr_dereference_operands.
2533 (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2536 2007-10-29 Hans-Peter Nilsson <hp@axis.com>
2538 * config/cris/cris.c: Include df.h.
2539 (cris_address_cost): Add gcc_assert for canonicalization
2540 assumptions. For PLUS with MULT or register, correct
2541 test for register in other arm. Tweak comments.
2543 2007-10-28 Richard Guenther <rguenther@suse.de>
2545 * tree-ssa-operands.c (add_vars_for_offset): Add parameter
2546 telling if the var is to be treated as points-to location.
2547 (add_vars_for_bitmap): Pass true to add_vars_for_offset.
2548 (add_virtual_operand): Only recurse into MPTs if aliases
2551 2007-10-28 Richard Guenther <rguenther@suse.de>
2553 * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
2554 (add_vars_for_bitmap): Do not recurse further. Only add vars
2555 for pointed-to SFTs.
2556 (add_virtual_operand): Re-instantiate loop to add operands for
2557 aliases. Recurse into MPTs.
2558 (get_indirect_ref_operands): If we fall back to use a pointers
2559 SMT, make sure to not prune based on the access offset and size.
2561 2007-10-28 Andrew Pinski <pinskia@gmail.com>
2564 * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
2565 the eh information on the statement.
2567 2007-10-28 Richard Guenther <rguenther@suse.de>
2569 * tree-flow.h (subvar_t): Make it a VEC.
2570 (struct subvar): Remove.
2571 (struct var_ann_d): Use VEC(tree,gc) to store subvars.
2572 * tree-flow-inline.h (get_subvar_at): Adjust iterators over
2574 * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
2575 * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
2576 * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
2577 (set_initial_properties): Likewise.
2578 (setup_pointers_and_addressables): Likewise.
2579 (new_type_alias): Likewise.
2580 (create_overlap_variables_for): Likewise.
2581 * tree-dfa.c (dump_subvars_for): Likewise.
2582 * tree-ssa-operands.c (add_vars_for_offset): Likewise.
2583 (get_expr_operands): Likewise.
2584 (add_to_addressable_set): Likewise.
2585 * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2587 2007-10-28 Uros Bizjak <ubizjak@gmail.com>
2589 PR tree-optimization/33920
2590 * tree-if-conv.c (tree_if_conversion): Force predicate of single
2591 successor bb to true when predecessor bb has NULL predicate.
2592 (find_phi_replacement_condition): Assert that tmp_cond is non-null.
2594 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
2596 * config/mips/mips.md: Add combiner patterns for DImode extensions
2597 of HImode and QImode truncations. Reformat HImode <- QImode pattern
2600 2007-10-28 Richard Sandiford <rsandifo@nildram.co.uk>
2603 * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
2605 2007-10-28 Andreas Krebbel <krebbel1@de.ibm.com>
2607 * dce.c (delete_unmarked_insns): Just delete the RETVAL and
2608 LIBCALL notes if they are about to be moved to the same insn.
2610 2007-10-27 Richard Guenther <rguenther@suse.de>
2612 PR tree-optimization/33870
2613 * tree-ssa-operands.c (add_vars_for_offset): Reduce code
2614 duplication. Remove redundant call to access_can_touch_variable.
2615 (add_vars_for_bitmap): New helper for recursing over MPT contents.
2616 (add_virtual_operand): Use it.
2618 2007-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2621 * pa.h (ASM_PN_FORMAT): Delete define.
2623 2007-10-26 Janis Johnson <janis187@us.ibm.com>
2625 * doc/invoke.texi (Option Summary, optimizations): Remove
2626 -fbounds-check. Add -fassociative-math, -freciprocal-math,
2627 -ftree-vrp and -funit-at-a-time. Change -fno-split-wide-types to
2628 -fsplit-wide-types to match later entry. Break up a long line.
2629 (Option Summary, code gen options) Add -fno-stack-limit. Add
2630 missing @gol to the end of a line.
2631 (Optimization Options): Remove -fbounds-check, which is also
2632 documented under Code Generation Options. Remove =n from
2633 index entry for -ftree-parallelize-loops. Change -fno-cprop-registers
2634 to -fcprop-registers to match other options, and say when it is
2635 enabled rather than disabled. Remove extra index entry for
2636 -fno-cx-limited-range. Add index entries for -fstack-protector
2637 and -fstack-protector-all.
2638 (Code Gen Options): Add index entry for -ftls-model.
2640 2007-10-26 Anatoly Sokolov <aesok@post.ru>
2642 * config/avr/avr.c (avr_OS_task_function_p): Add new function.
2643 (avr_regs_to_save): Handle functions with 'OS_task' attribute.
2644 (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
2645 expand_epilogue, output_movhi): Don't handle 'main' function.
2646 (avr_attribute_table): Add 'OS_task' function attribute.
2647 * config/avr/avr.h (machine_function): Remove 'is_main' field, add
2649 * config/avr/avr.md (return_from_main_epilogue): Remove insn.
2650 (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
2652 * config/avr/avr.opt (minit-stack): Remove.
2654 2007-10-26 Eric Botcazou <ebotcazou@adacore.com>
2656 * tree-nested.c (get_trampoline_type): Fix thinko.
2658 2007-10-26 Douglas Gregor <doug.gregor@gmail.com>
2661 * tree.c (build_offset_type): Build canonical type based on the
2662 TYPE_MAIN_VARIANT of the base type.
2664 2007-10-26 Daniel Jacobowitz <dan@codesourcery.com>
2666 * reorg.c (emit_delay_sequence): Move insn locator from the
2667 first insn to the sequence.
2669 2007-10-26 Samuel Tardieu <sam@rfc1149.net>
2671 * ipa-pure-const.c (check_decl): Return immediately when
2672 pure_const_state has been set to IPA_NEITHER.
2674 2007-10-25 Ira Rosen <irar@il.ibm.com>
2676 PR tree-optimization/33833
2677 * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
2678 and convert init to sizetype in inner_base construction.
2680 2007-10-25 Richard Guenther <rguenther@suse.de>
2682 * tree-flow.h (mem_sym_stats): Remove.
2683 (dump_mem_sym_stats_for_var): Declare.
2684 * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
2685 (mem_sym_stats): Move ...
2686 * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
2687 (mem_sym_score): Rename from ...
2688 (pscore): ... this. Remove.
2689 (dump_mem_sym_stats_for_var): New function. Dump the score, but
2690 not the frequencies.
2691 (compare_mp_info_entries): Make sort stable by disambiguating
2694 2007-10-25 Ira Rosen <irar@il.ibm.com>
2696 PR tree-optimization/33866
2697 * tree-vect-transform.c (vectorizable_store): Check operands of all
2698 the stmts in the group of strided accesses. Get def stmt type for each
2699 store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
2701 2007-10-25 Uros Bizjak <ubizjak@gmail.com>
2703 * config/i386/constraints.md (Y0): Rename register constraint to Yz.
2704 (Yt): Rename register constraint to Y2.
2705 * config/i386/sse.md: Use renamed register constraints.
2706 * config/i386/mmx.md: Ditto.
2707 * config/i386/i386.md: Ditto.
2709 2007-10-25 Rask Ingemann Lambertsen <rask@sygehus.dk>
2711 * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
2713 2007-10-24 Chao-ying Fu <fu@mips.com>
2715 * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
2716 DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
2718 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
2719 Olga Golovanevsky <olga@il.ibm.com>
2721 * ipa-struct-reorg.c (replace_field_acc): Make it clear to
2722 the compiler that wr.wrap and wr.domain are initialized in
2725 2007-10-24 Samuel Tardieu <sam@rfc1149.net>
2727 * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
2728 to print gcov_type values.
2730 2007-10-24 Eric B. Weddington <eweddington@cso.atmel.com>
2732 * config/avr/avr.h: Do not include progmem_section definition when
2733 building with IN_TARGET_LIBS.
2735 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
2738 * config/mips/mips.c (mips_lo_sum_offset): New structure.
2739 (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
2740 (mips_lo_sum_offset_lookup, mips_record_lo_sum)
2741 (mips_orphaned_high_part_p: New functions.
2742 (mips_avoid_hazard): Don't check INSN_P here.
2743 (mips_avoid_hazards): Rename to...
2744 (mips_reorg_process_insns): ...this. Cope with
2745 !TARGET_EXPLICIT_RELOCS. Delete orphaned high-part relocations,
2746 or turn them into nops.
2747 (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
2748 dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
2749 (mips_set_mips16_mode): Don't set flag_delayed_branch here.
2750 (mips_override_options): Set flag_delayed_branch to 0.
2752 2007-10-24 Richard Sandiford <rsandifo@nildram.co.uk>
2754 * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
2755 MIPS-specific implementation details.
2756 (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
2757 (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
2758 (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
2759 for targets with movmemsi.
2760 (MOVE_BY_PIECES_P): Define.
2761 * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
2762 (mips_block_move_loop): Add a bytes_per_iter argument.
2763 (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
2764 Update call to mips_block_move_loop.
2766 2007-10-24 Michael Matz <matz@suse.de>
2769 * var-tracking.c (variable_union): Don't break after one loop
2770 iteration but only when a difference is found.
2771 (dump_variable): Also print DECL_UID.
2773 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
2775 * ipa-type-escape.h: Expose function
2776 is_array_access_through_pointer_and_index.
2778 (is_array_access_through_pointer_and_index):
2779 Add three new parameters. Add support of
2780 POINTER_PLUS_EXPR tree code.
2782 2007-10-24 Olga Golovanevsky <olga@il.ibm.com>
2784 * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
2785 * tree-pass.h: Add pass_ipa_struct_reorg.
2786 * common.opt: Add ipa-struct-reorg flag.
2787 * Makefile.in: Add ipa-strcut-reorg.o compilation.
2788 * passes.c: Add pass pass_ipa_struct_reorg.
2789 * params.h: Add STRUCT_REORG_COLD_STRUCT_RATIO.
2790 * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
2792 2007-10-24 Ira Rosen <irar@il.ibm.com>
2794 PR tree-optimization/33804
2795 * tree-vect-transform.c (vectorizable_operation): Remove the
2796 checks that the vectorization is worthwhile from the transformation
2799 2007-10-24 Ira Rosen <irar@il.ibm.com>
2801 * tree-vect-analyze.c (vect_build_slp_tree): Return false if
2802 vectype cannot be determined for the scalar type.
2803 (vect_analyze_slp_instance): Likewise.
2804 * tree-vect-transform.c (vect_model_reduction_cost): Change the
2805 return type to bool. Return false if vectype cannot be determined
2806 for the scalar type.
2807 (vect_get_constant_vectors): Return false if vectype cannot be
2808 determined for the scalar type.
2809 (get_initial_def_for_induction, vect_get_vec_def_for_operand,
2810 get_initial_def_for_reduction, vect_create_epilog_for_reduction,
2811 vectorizable_reduction): Likewise.
2813 2007-10-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
2815 * config.gcc: For a FreeBSD target, parse the value of ${target}
2816 to determine the value of FBSD_MAJOR, instead of adding an
2817 explicit check for every possible FreeBSD major version.
2819 2007-10-23 Uros Bizjak <ubizjak@gmail.com>
2821 PR rtl-optimization/33846
2822 * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
2824 2007-10-23 Dorit Nuzman <dorit@il.ibm.com>
2826 PR tree-optimization/33860
2827 * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
2828 interleaved accesses in case the dr is inside the inner-loop during
2829 outer-loop vectorization.
2831 2007-10-23 Eric Botcazou <ebotcazou@libertysurf.fr>
2833 * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
2834 Document MEM_POINTER. Replace mentions of "integrated"
2835 field with "return_val". Delete outdated stuff.
2837 2007-10-23 David Edelsohn <edelsohn@gnu.org>
2839 * config/rs6000/rs6000.c (rs6000_override_options): Set
2840 rs6000_altivec_abi on AIX.
2841 (conditional_register_usage): Set VR20:31 fixed on AIX.
2843 2007-10-23 Richard Guenther <rguenther@suse.de>
2845 * alias.c (get_alias_set): For INDIRECT_REFs, deal with
2848 2007-10-22 Seongbae Park <seongbae.park@gmail.com>
2849 David S. Miller <davem@davemloft.net>
2851 * df-scan.c (df_get_call_refs): Mark global registers as both a
2852 DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
2854 2007-10-22 Dorit Nuzman <dorit@il.ibm.com>
2856 PR tree-optimization/33834
2857 PR tree-optimization/33835
2858 * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
2859 stmts need to be checked for success seperately.
2860 * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
2861 Remove the check that stmt is not LIVE.
2862 (vectorizable_assignment, vectorizable_induction): Likewise.
2863 (vectorizable_operation, vectorizable_type_demotion): Likewise.
2864 (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
2866 (vectorizable_live_operation): Check that op is not NULL.
2868 2007-10-22 Janis Johnson <janis187@us.ibm.com>
2870 * doc/invoke.texi (Optimization Options): In the summary, show
2871 that the value for options -falign-jumps, -falign-labels,
2872 -falign-loops, -falign-functions, -fsched-stalled-insns, and
2873 -fsched-stalled-insns-dep is optional. In the summary, show that
2874 -fsched-stalled-insns takes an optional argument and that
2875 -fparallelize-loops takes an argument. Add opindex for several
2876 optimization options, and fix typos in the opindex commands for
2877 several others. In the descriptions for -fsched-stalled-insns
2878 and -fsched-stalled-insns-dep, show the options with and without
2881 2007-10-22 Eric B. Weddington <eweddington@cso.atmel.com>
2883 * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
2885 * config/avr/avr.h (LINK_SPEC): Likewise.
2886 (CRT_BINUTILS_SPECS): Likewsie.
2887 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2889 2007-10-22 Eric Botcazou <ebotcazou@libertysurf.fr>
2891 PR rtl-optimization/33644
2892 * cfgcleanup.c: Do not include dce.h.
2893 * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
2894 * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
2895 * dce.c (something_changed): Delete.
2896 (libcall_dead_p): New predicate.
2897 (delete_unmarked_insns): Use it to delete dead libcalls.
2898 Deal with REG_LIBCALL and REG_RETVAL notes.
2899 (prescan_libcall_for_dce): New function.
2900 (prescan_insns_for_dce): Use it to deal with libcalls.
2901 (mark_reg_dependencies): Do nothing special for libcalls.
2902 (dce_process_block): Likewise.
2903 (fast_dce): Delete unused local variable.
2904 (run_fast_dce): Do not return a value.
2905 * dce.h (struct df): Delete.
2906 (run_fast_dce): Adjust prototype.
2907 * optabs.c (libcall_id): Delete.
2908 (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
2909 (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
2910 * reload1.c (reload): Delete REG_LIBCALL_ID case.
2911 * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
2912 * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
2913 notes instead of REG_LIBCALL_ID notes.
2914 * reg-notes.def (LIBCALL_ID): Delete.
2915 * Makefile.in (see.o): Add dce.h dependency.
2916 (cfgcleanup.o): Remove dce.h dependency.
2918 2007-10-22 Michael Matz <matz@suse.de>
2920 PR tree-optimization/33855
2921 * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
2924 2007-10-22 Ira Rosen <irar@il.ibm.com>
2926 PR tree-optimization/33854
2927 * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
2928 FLOAT_EXPR to the list of promotion operations.
2930 2007-10-22 Rask Ingemann Lambertsen <rask@sygehus.dk>
2934 * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
2935 (print_reg): Print register prefix only with AT&T asm syntax.
2936 Support pc_rtx for RIP register.
2937 (print_operand_address): Use print_reg()'s pc_rtx support for RIP
2938 relative addressing. Always print segment register prefix with AT&T
2939 asm syntax and never with Intel asm syntax.
2940 (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands.
2941 Fix prefix for 16-byte XFmode operands.
2942 (output_addr_const_extra): Support Intel asm syntax.
2943 (x86_file_start): Don't use register prefix with Intel asm syntax.
2944 * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
2945 ("return_internal_long"): Fix Intel asm syntax output.
2946 ("set_got_rex64"): Support Intel asm syntax.
2947 ("set_rip_rex64"): Likewise.
2948 ("set_got_offset_rex64"): Likewise.
2949 ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
2951 ("*tls_global_dynamic_64"): Likewise.
2952 ("*tls_local_dynamic_base_64"): Likewise.
2953 ("*load_tp_si")("*load_tp_di"): Likewise.
2954 ("*add_tp_si")("*add_tp_di"): Likewise.
2955 ("*tls_dynamic_lea_64"): Likewise.
2956 ("*sibcall_value_1_rex64_v"): Likewise.
2957 ("stack_tls_protect_set_si"): Likewise.
2958 ("stack_tls_protect_set_di"): Likewise.
2959 ("stack_tls_protect_test_si"): Likewise.
2960 ("stack_tls_protect_test_di"): Likewise.
2961 * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
2963 ("*movv2sf_internal_rex64"): Likewise.
2964 * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
2965 (__get_cpuid_max): Likewise.
2967 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
2969 * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
2970 the STRICT_P argument type "bool" rather than "int".
2971 (mips_legitimate_address_p): Likewise.
2972 (fp_register_operand, lo_operand): Delete.
2973 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
2974 (mips_emit_scc): Rename to...
2975 (mips_expand_scc): ...this.
2976 (gen_conditional_branch): Rename to...
2977 (mips_expand_conditional_branch): ...this.
2978 (gen_conditional_move): Rename to...
2979 (mips_expand_conditional_move): ...this.
2980 (mips_gen_conditional_trap): Rename to...
2981 (mips_expand_conditional_trap): ...this and take an rtx code instead
2982 of an operands array.
2983 (mips_expand_call): Give the SIBCALL_P argument type "bool"
2985 (mips_emit_fcc_reload): Rename to...
2986 (mips_expand_fcc_reload): ...this.
2987 (init_cumulative_args): Rename to...
2988 (mips_init_cumulative_args): ...this and remove the libname argument.
2989 (function_arg_advance): Rename to...
2990 (mips_function_arg_advance): ...this.
2991 (function_arg): Rename to...
2992 (mips_function_arg): ...this and use "rtx" instead of
2994 (function_arg_boundary): Rename to...
2995 (mips_function_arg_boundary): ...this.
2996 (mips_expand_unaligned_load): Rename to...
2997 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
2998 and BITPOS arguments type "HOST_WIDE_INT".
2999 (mips_expand_unaligned_store): Rename to...
3000 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3001 and BITPOS arguments type "HOST_WIDE_INT".
3002 (override_options): Rename to...
3003 (mips_override_options): ...this.
3004 (print_operand): Rename to...
3005 (mips_print_operand): ...this.
3006 (print_operand_address): Rename to...
3007 (mips_print_operand_address): ...this.
3008 (mips_output_ascii): Remove the PREFIX argument.
3009 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3011 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3012 (mips_function_value): Remove the FUNC argument. Use "rtx" instead
3013 of "struct rtx_def *".
3014 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3016 (build_mips16_call_stub): Delete.
3017 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3018 (mips_use_ins_ext_p): Give the second and third arguments type
3019 "HOST_WIDE_INT" rather than "rtx".
3020 * config/mips/mips.h: Update after the above changes. Tweak comments
3022 (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
3023 (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3024 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3025 element type from "char" to "bool".
3026 (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
3027 (mips_cpu_info_table): Delete.
3028 * config/mips/mips.md: Update after the above changes. Tweak some
3030 * config/mips/mips-ps-3d.md: Likewise.
3031 * config/mips/mips.c: Tweak comments and formatting.
3032 Use NULL-like macros rather than 0 in various places.
3033 (mips_section_threshold): Rename to...
3034 (mips_small_data_threshold): ...this and give it an unsigned type.
3035 (num_source_filenames): Remove explicit initialization.
3036 (sdb_label_count): Likewise.
3037 (sym_lineno): Delete.
3038 (set_noat): Make static.
3039 (mips_branch_likely): Likewise, and give it type "bool".
3040 (mips_isa_info): Rename to...
3041 (mips_isa_option_info): ...this.
3042 (mips_flag_delayed_branch): Rename to...
3043 (mips_base_delayed_branch): ...this.
3044 (mips_split_addresses): Delete.
3045 (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
3046 element type from "char" to "bool".
3047 (mips_regno_to_class): Add an explicit array size.
3048 (mips16_flipper): Change from type "int" to type "bool".
3049 (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
3050 (mips_tls_operand_p): Rename to...
3051 (mips_tls_symbol_p): ...this.
3052 (mips_global_symbol_p): Remove redundant "const".
3053 (mips_offset_within_alignment_p): Simplify.
3054 (mips_regno_mode_ok_for_base_p): Change the name of the last argument
3055 to STRICT_P and give it type bool.
3056 (mips_valid_base_register_p): Likewise.
3057 (mips_classify_address): Likewise.
3058 (mips_legitimate_address_p): Likewise.
3059 (mips16_unextended_reference_p): Take the offset as an
3060 "unsigned HOST_WIDE_INT" rather than an "rtx". Simplify.
3061 (mips_const_insns): Use IN_RANGE.
3062 (mips_force_temporary): Remove an unnecessary copy_rtx.
3063 (mips16_gp_pseudo_reg): Simplify.
3064 (mips_split_symbol): Remove an unnecessary copy_rtx.
3065 (mips_legitimize_tls_address): Only create registers if we need them.
3066 (mips_legitimize_address): Use mips_split_plus.
3067 (mips_move_integer): Swap DEST and TEMP arguments. Rename local
3068 variable COST to NUM_OPS.
3069 (mips_legitimize_move): Use gen_lowpart.
3070 (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
3071 (m16_check_op): Use IN_RANGE.
3072 (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
3073 (mips_split_doubleword_move): Pass booleans to mips_subword.
3074 (mips_output_move): Store the mode in a local variable.
3075 Explicitly assert that this function does not deal with
3076 MFLO and MFHI. Use SMALL_OPERAND_UNSIGNED. Make order of
3077 cases more consistent.
3078 (mips_relational_operand_ok_p): Rename to...
3079 (mips_int_order_operand_ok_p): ...this.
3080 (mips_canonicalize_comparison): Rename to...
3081 (mips_canonicalize_int_order_test): ...this.
3082 (mips_emit_int_relational): Rename to...
3083 (mips_emit_int_order_test): ...this. Store the mode in a local
3085 (mips_reverse_fp_cond_p): Rename to...
3086 (mips_reversed_fp_cond): ...this.
3087 (mips_emit_compare): Make the order of the statements more consistent.
3088 (mips_emit_scc): Rename to...
3089 (mips_expand_scc): ...this.
3090 (gen_conditional_branch): Rename to...
3091 (mips_expand_conditional_branch): ...this.
3092 (gen_conditional_move): Rename to...
3093 (mips_expand_conditional_move): ...this. Build the condition
3094 separately from the main pattern.
3095 (mips_gen_conditional_trap): Rename to...
3096 (mips_expand_conditional_trap): ...this and take an rtx code instead
3097 of an operands array. Simplify.
3098 (init_cumulative_args): Rename to...
3099 (mips_init_cumulative_args): ...this. Use memset rather than a
3100 copy from a zeroed static. Use prototype_p and stdarg_p.
3101 (mips_arg_info): Rename to...
3102 (mips_get_arg_info): ...this and put the INFO argument first.
3103 (function_arg): Rename to...
3104 (mips_function_arg): ...this and use "rtx" instead of
3105 "struct rtx_def *". Only split structures into chunks if
3106 TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
3107 a chunk-by-chunk basis. Use SCALAR_FLOAT_TYPE_P instead of a
3108 comparison with REAL_TYPE. Rename local variable REG to REGNO
3109 and make it unsigned.
3110 (function_arg_advance): Rename to...
3111 (mips_function_arg_advance): ...this.
3112 (function_arg_boundary): Rename to...
3113 (mips_function_arg_boundary): ...this.
3114 (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
3116 (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
3117 comparison with REAL_TYPE.
3118 (mips_function_value): Remove the FUNC argument. Rename local
3119 variable UNSIGNEDP to UNSIGNED_P.
3120 (mips_return_in_memory): Use IN_RANGE.
3121 (mips_setup_incoming_varargs): Pass a boolean rather than an int
3122 to FUNCTION_ARG_ADVANCE.
3123 (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
3124 to INDIRECT_P. Remove a redundant mips_abi check. Only calculate
3125 SIZE and RSIZE if needed.
3126 (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
3128 (build_mips16_function_stub): Rename to...
3129 (mips16_build_function_stub): ...this.
3130 (build_mips16_call_stub): Rename to...
3131 (mips16_build_call_stub): ...this. Make static, and return a
3132 "bool" rather than an "int". Rename the ARG_SIZE argument to
3133 ARGS_SIZE. Rename the local variable FPRET to FP_RET_P and give
3134 it type "bool". Use "jr" rather than "j". Use XNEW. Simplify.
3135 (mips_load_call_address): Give the SIBCALL_P argument type "bool"
3137 (mips_expand_call): Likewise. Assert that MIPS16 calls via stubs
3138 are not sibling ones.
3139 (mips_emit_fcc_reload): Rename to...
3140 (mips_expand_fcc_reload): ...this.
3141 (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
3143 (mips_expand_unaligned_load): Rename to...
3144 (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
3145 and BITPOS arguments type "HOST_WIDE_INT". Remove redundant
3147 (mips_expand_unaligned_store): Rename to...
3148 (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
3149 and BITPOS arguments type "HOST_WIDE_INT".
3150 (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
3151 and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
3153 (mips_init_split_addresses): Replace with...
3154 (mips_split_addresses_p): ...this new function.
3155 (mips_init_relocs): Check mips_split_addresses_p () rather than
3156 mips_split_addresses. Always initialize mips_split_p with booleans.
3157 (print_operand_reloc): Rename to...
3158 (mips_print_operand_reloc): ...this. Use a gcc_assert rather than
3160 (print_operand): Rename to...
3161 (mips_print_operand): ...this.
3162 (print_operand_address): Rename to...
3163 (mips_print_operand_address): ...this. Use GP_REG_FIRST.
3164 (mips_in_small_data_p): Simplify.
3165 (mips_output_ascii): Remove the PREFIX argument and "register"
3166 keywords. Use the STRING parameter directly and cast to
3168 (mips16e_collect_argument_save_p): Use IN_RANGE.
3169 (mips_function_has_gp_insn): Simplify.
3170 (mips_set_return_address): Use BITSET_P.
3171 (mips_restore_gp): Use a separate statement to pick the base
3173 (mips_output_function_prologue): Use a local FRAME variable.
3174 (mips_save_reg): Pass booleans to mips_subword.
3175 (mips_expand_prologue): Use a local FRAME variable. Use
3176 cprestore_size to detect when .cprestore is needed.
3177 (mips_restore_reg): Use GP_REG_FIRST.
3178 (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
3179 rather than "int". Use local FRAME and REGNO variables.
3180 (mips_can_use_return_insn): Return a "bool" rather than an "int".
3181 (mips_secondary_reload_class): Give the IN_P argument type "bool"
3183 (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
3184 (mips_store_data_bypass_p): Return a "bool" rather than an "int".
3185 (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
3186 (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
3187 (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
3188 (builtin_description): Rename to...
3189 (mips_builtin_description): ...this.
3190 (mips_bdesc): Rename to...
3191 (mips_ps_bdesc): ...this.
3192 (sb1_bdesc): Rename to...
3193 (mips_sb1_bdesc): ...this.
3194 (dsp_bdesc): Rename to...
3195 (mips_dsp_bdesc): ...this.
3196 (dsp_32only_bdesc): Rename to...
3197 (mips_dsp_32only_bdesc): ...this.
3198 (bdesc_map): Rename to...
3199 (mips_bdesc_map): ...this.
3200 (bdesc_arrays): Rename to...
3201 (mips_bdesc_arrays): ...this.
3202 (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
3203 Tweak error message.
3204 (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
3205 Rename local variables I and J to OPNO and ARGNO respectively.
3206 Assert that the number of arguments is no more than the number of
3208 (mips_expand_builtin_compare): Use an array of arguments rather
3209 than an array of operands. Assert that the number of operands is
3211 (add_constant): Rename to...
3212 (mips16_add_constant): ...this. Use XNEW.
3213 (dump_constants_1): Rename to...
3214 (mips16_emit_constants_1): ...this. Use ALL_SCALAR_FIXED_POINT_MODE_P.
3215 (dump_constants): Rename to...
3216 (mips16_emit_constants): ...this.
3217 (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
3218 (mips_set_mips16_mode): Don't call mips_init_split_addresses.
3219 Assign mips16_p to was_mips16_p.
3220 (mips_parse_cpu): Tweak warning message.
3221 (override_options): Rename to...
3222 (mips_override_options): ...this. Move the mips_cost initialization
3223 out of the "shared with GAS" block. Quote option names in error
3225 (mips_conditional_register_usage): Make local variable REGNO unsigned.
3226 (mips_order_regs_for_local_alloc): Remove register keyword.
3228 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3230 * system.h (IN_RANGE): Cast each argument individually.
3232 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3234 * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
3235 MIPS16 code unless using o32 or o64.
3237 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3239 * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
3240 for modes smaller than 4 bytes.
3241 * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
3244 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3246 * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
3247 * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
3248 (ASM_OUTPUT_ALIGNED_BSS): Delete.
3249 * config/mips/mips.c (mips_output_aligned_bss): Delete.
3251 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3253 * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
3254 sibling calls to "mips16" functions if the function satisfies
3255 const_call_insn_operand.
3257 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3259 * config/mips/mips.c (mips_va_start): Fix types in calls
3262 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3264 * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
3267 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3269 * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
3270 * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
3271 instead of checking mips_isa.
3273 2007-10-21 Richard Sandiford <rsandifo@nildram.co.uk>
3275 * doc/invoke.texi (-mpaired-single): Don't say that the option
3276 requires 64-bit code.
3277 * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
3278 * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
3279 (ISA_HAS_NMADD_NMSUB): Add a mode argument. Return true for
3280 V2SF if ISA_MIPS32R2.
3281 (MODES_TIEABLE_P): Use mips_modes_tieable_p.
3282 * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
3283 to ISA_HAS_NMADD_NMSUB.
3284 (mips_split_doubleword_move): Handle V2SF.
3285 (mips_modes_tieable_p): New function.
3286 (override_options): Report a warning rather than an error when
3287 -mpaired-single is used on ISAs that don't support it; use
3288 ISA_HAS_PAIRED_SINGLE to check that case.
3289 * config/mips/mips.md (MOVE64): New mode iterator. Replace DI
3290 and DF move splitters with a single MOVE64 splitter, thereby adding
3291 a V2SF splitter too.
3292 (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
3293 Add a TARGET_FLOAT64 condition to TF. Add V2SF to the iterator.
3294 (HALFMODE): Add V2SF.
3295 (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
3296 (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
3297 (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
3298 (movv2sf_hardfloat_32bit): New pattern.
3299 (load_low<mode>, load_high<mode>, store_word<mode>): Remove
3300 TARGET_DOUBLE_FLOAT conditions.
3302 2007-10-20 Jakub Jelinek <jakub@redhat.com>
3304 * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
3305 saved CR2 offset to low 32 bits of regs->ccr rather than the whole
3306 64-bit register in 64-bit libgcc.
3308 2007-10-20 Eric B. Weddington <eweddington@cso.atmel.com>
3310 * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
3311 * config/avr/avr.h (LINK_SPEC): Likewise.
3312 (CRT_BINUTILS_SPECS): Likewsie.
3313 * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3315 2007-10-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
3317 * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
3318 and -Wfatal-errors together.
3320 2007-10-20 Alan Modra <amodra@bigpond.net.au>
3323 * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
3324 change for vrsave, ie restore after frame pop.
3326 2007-10-19 David S. Miller <davem@davemloft.net>
3328 * config/sparc/niagara2.md: Fix copyright notice.
3330 2007-10-19 Sebastian Pop <sebastian.pop@amd.com>
3332 PR tree-optimization/23820
3333 PR tree-optimization/24309
3334 PR tree-optimization/33766
3335 * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
3336 * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
3337 * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
3338 * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
3339 * tree-loop-linear.c (perfect_loop_nest_depth): New.
3340 (linear_transform_loops): Use perfect_loop_nest_depth.
3341 * lambda-code.c (perfect_nest_p): Outer loops in perfect nests
3342 should have a single condition: their exit.
3344 2007-10-19 Richard Guenther <rguenther@suse.de>
3348 * stor-layout.c (layout_type): Assert that aggregates do not
3349 have their alias sets set.
3350 * alias.c (get_alias_set): Return alias set zero for incomplete
3351 types, return the alias set of the element for incomplete array
3352 types, but do not remember these.
3354 2007-10-19 Richard Guenther <rguenther@suse.de>
3357 2007-10-19 Richard Guenther <rguenther@suse.de>
3360 * tree.c (build_array_type): Do not re-layout unbound array
3363 2007-10-19 Richard Guenther <rguenther@suse.de>
3366 * tree.c (build_array_type): Do not re-layout unbound array types.
3368 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3370 * config/mips/mips.c (mips_canonicalize_comparison): Check
3371 mips_relational_operand_ok_p before trying to rewrite the test.
3372 Only calculate PLUS_ONE if needed.
3373 (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
3376 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3378 * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
3381 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3383 * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
3384 the call uses the incoming value of $2.
3386 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3388 * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
3389 rather then gen_rtx_MEM.
3390 (mips_setup_incoming_varargs): Use gen_frame_mem rather than
3392 (mips_set_return_address): Likewise.
3393 (mips_restore_gp): Likewise.
3395 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
3397 * config/mips/mips.c (gpr_mode): Delete.
3398 (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
3399 instead of gpr_mode.
3400 (mips_for_each_saved_reg): Likewise.
3401 (mips_expand_prologue, mips_expand_epilogue): Likewise.
3402 (override_options): Don't initialize gpr_mode.
3403 * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
3405 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>