1 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3 * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
4 * config/avr/avr.c (avr_out_compare): Print shorter sequence for
5 EQ/NE comparisons against +/-1 in the case of unused-after,
8 2011-09-26 Jakub Jelinek <jakub@redhat.com>
10 * gimple-fold.c (gimplify_and_update_call_from_tree): Set
11 gctx.into_ssa after push_gimplify_context.
13 * gimple.c (gimple_build_call_valist): New function.
14 * gimple.h (gimple_build_call_valist): New prototype.
15 * tree-ssa-propagate.c (finish_update_gimple_call): New function.
16 (update_gimple_call): Likewise.
17 (update_call_from_tree): Use finish_update_gimple_call.
18 * tree-ssa-propagate.h (update_gimple_call): New prototype.
20 2011-09-26 Richard Guenther <rguenther@suse.de>
22 PR tree-optimization/50472
23 * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
26 2011-09-26 Bingfeng Mei <bmei@broadcom.com>
28 * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
29 * target.def: (addr_space_subset_p): Likewise.
31 2011-09-26 Tom de Vries <tom@codesourcery.com>
33 * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
34 * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
35 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
38 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
41 * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
42 * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
44 (adjust_len): Set default to "no".
45 Remove alternative "yes". Add alternatives: "mov8", "mov16",
46 "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
47 "lshrhi", "ashlsi, "ashrsi", "lshrsi".
48 (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
49 *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
50 *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
51 *lshrsi3_const): Set attribute "adjust_len".
52 * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
53 (output_movsisf): Don't pass insn to output_reload_insisf.
54 (adjust_insn_length): Handle new alternatives to adjust_len.
55 Remove handling of ADJUST_LEN_YES. Clean-up code.
57 2011-09-26 Eric Botcazou <ebotcazou@adacore.com>
59 * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
60 may_trap_p to detect loads that may trap of fault.
62 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
64 * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
65 * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
66 (*reload_inhi): Use it. Adapt call to output_reload_inhi to new
68 (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
69 * config/avr/avr.c: Rename output_reload_insisf_1 to
70 output_reload_in_const.
71 (avr_popcount_each_byte): Handle SFmode, too.
72 (output_reload_in_const): Change so it can handle HI loads, too.
73 Use avr_popcount_each_byte to work out if scratch register must be
75 (output_reload_inhi): Rewrite using output_reload_in_const and...
76 (output_movhi): ...use it to print constants' loads.
77 (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
79 2011-09-25 David S. Miller <davem@davemloft.net>
81 * config/sparc/constraints.md (C, P, Z): New constraints for
82 const_doube, const_int, and const_vector "all ones" values.
83 Make unused constraint letters comment match reality.
84 * config/sparc/predicates.md (const_all_ones_operand,
85 register_or_zero_or_all_ones_operand): New predicates.
86 * config/sparc/sparc.c (sparc_expand_move): Allow all ones
87 as well as zero constants when VIS.
88 (sparc_legitimate_constant_p): Likewise.
89 * config/sparc/sparc.md (movsi_insn): Add fones alternative.
90 (movsf_insn): Likewise
91 (movdi_insn_sp64): Add fone alternative.
92 (movdf_insn_sp32_v9): Likewise.
93 (movdf_insn_sp64): Likewise.
95 * configure.ac: Add feature check to make sure the assembler
96 supports the FMAF, HPC, and VIS 3.0 instructions found on
97 Niagara-3 and later cpus.
99 * config.in: Likewise.
100 * config/sparc/sparc.opt: New option '-mfmaf'.
101 * config/sparc/sparc.md: Add float fused multiply-add patterns.
102 * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
103 (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
104 * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
105 ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
106 * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
107 by default for Niagara-3 and later. Turn it off if TARGET_FPU is
109 (sparc_rtx_costs): Handle 'FMA'.
110 * doc/invoke.texi: Document -mfmaf.
112 2011-09-25 Jakub Jelinek <jakub@redhat.com>
114 * tree-ssa-structalias.c (intra_create_variable_infos): Treat
115 TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
116 DECL_BY_REFERENCE parameters.
118 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
120 * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
121 if there is no outgoing edge.
123 * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
126 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
128 * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
129 of vect_analyze_bb here.
130 (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
132 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
134 * tree-data-ref.c (dr_analyze_innermost): Add new argument.
135 Allow not simple iv if analyzing basic block.
136 (create_data_ref): Update call to dr_analyze_innermost.
137 (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
138 * tree-loop-distribution.c (generate_memset_zero): Likewise.
139 * tree-predcom.c (find_looparound_phi): Likewise.
140 * tree-data-ref.h (dr_analyze_innermost): Add new argument.
142 2011-09-24 David S. Miller <davem@davemloft.net>
144 * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
145 (SPARC_GSR_REG): Define.
146 (FIXED_REGISTERS): Mark GSR as fixed.
147 (CALL_USED_REGISTERS): Mark GSR as call used.
148 (HARD_REGNO_NREGS): GSR is always 1 register.
149 (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
150 (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
151 (REGISTER_NAMES): Add "%gsr".
152 * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL):
154 (UNSPEC_WRGSR): New unspec.
155 (GSR_REG): New constant.
156 (type): Add new insn type 'gsr'.
157 (fpack16_vis, fpackfix_vis, fpack32_vis,
158 faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
159 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
160 rdgsr_v8plus): New expanders and insns.
161 (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
162 using patterns which show that this is a plus in addition to a
163 modification of GSR_REG, instead of an unspec.
164 * config/sparc/ultra1_2.md: Handle 'gsr'.
165 * config/sparc/ultra3.md: Likewise.
166 * config/sparc/niagara.md: Likewise.
167 * config/sparc/niagara2.md: Likewise.
168 * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
170 (sparc_option_override): Make -mvis imply -mv8plus.
171 (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
173 (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
174 __builtin_vis_read_gsr.
175 (sparc_expand_buildin): Handle builtins that take one argument and
177 (sparc_fold_builtin): Never fold writes to %gsr.
178 * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
179 * doc/extend.texi: Document new VIS intrinsics.
181 2011-09-23 Jan Hubicka <jh@suse.cz>
183 * ipa-inline-transform.c (inline_call): Add comment.
184 * ipa-inline.h (inline_param_summary): New structure and vector.
185 (struct inline_edge_summary): Add param field.
186 * ipa-inline-analysis.c (CHANGED): New constant.
187 (add_clause): Handle CHANGED and NOT_CONSTANT.
188 (predicate_probability): New function.
189 (dump_condition): Dump CHANGED predicate.
190 (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
191 of unknown function wide invariant.
192 (evaluate_conditions_for_edge): Handle change probabilities.
193 (inline_edge_duplication_hook): Copy param summaries.
194 (inline_edge_removal_hook): Free param summaries.
195 (dump_inline_edge_summary): Fix dumping of indirect edges and callee sizes;
196 dump param summaries.
197 (will_be_nonconstant_predicate): Use CHANGED predicate.
198 (record_modified_bb_info): New structure.
199 (record_modified): New function.
200 (param_change_prob): New function.
201 (estimate_function_body_sizes): Compute param summaries.
202 (estimate_edge_size_and_time): Add probability argument.
203 (estimate_node_size_and_time): Add inline_param_summary argument;
204 handle predicate probabilities.
205 (remap_predicate): Fix formating.
206 (remap_edge_change_prob): New function.
207 (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
208 (remap_edge_predicates): ... this one.
209 (inline_merge_summary): Remap edge summaries; handle predicate probabilities;
210 remove param summaries after we are done.
211 (do_estimate_edge_time): Update.
212 (do_estimate_edge_growth): Update.
213 (read_inline_edge_summary): Read param info.
214 (inline_read_summary): Fix formating.
215 (write_inline_edge_summary): Write param summaries.
217 2011-09-23 Jakub Jelinek <jakub@redhat.com>
219 * config/i386/i386.c (ix86_print_operand): Handle %~.
220 (ix86_print_operand_punct_valid_p): Return true also for '~'.
221 * config/i386/sse.md (i128): New mode_attr.
222 (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
223 avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
224 *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
225 vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
226 patterns, use "<sseinsnmode>" for "mode" attribute.
227 (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
228 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
229 %~128 in the patterns, use "OI" for "mode" attribute.
231 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
234 * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
236 (*cmpqi_sign_extend): Use s8_operand.
237 (*cmphi, *cmpsi): Rewrite using avr_out_compare.
238 * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
240 (out_tsthi, out_tstsi): Remove prototypes.
241 (avr_out_tsthi, avr_out_tstsi): New prototypes.
242 * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
243 (avr_asm_len): Negative length now sets *plen to -length.
244 (compare_sign_p): Return bool instead of int.
245 (compare_diff_p, compare_eq_p): Ditto and make static.
246 (avr_out_tsthi): New function.
247 (avr_out_tstsi): New function.
248 (avr_out_compare): New function.
249 (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
252 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
255 * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
256 (addsi3): Rewrite using QI scratch register. Adjust text
257 peepholes using plus:SI.
258 (*addsi3_zero_extend.hi): New insn.
259 (*subsi3_zero_extend.hi): New insn.
260 (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
261 (*subsi3_zero_extend): Ditto.
262 (subsi3): Change predicate #2 to register_operand.
263 * config/avr/avr-protos.h (avr_out_plus): New prototype.
264 (avr_out_plus_1): New static function.
265 (avr_out_plus): New function.
266 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
268 2011-09-23 Jakub Jelinek <jakub@redhat.com>
270 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
271 GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
273 2011-09-23 Ian Lance Taylor <iant@google.com>
275 * godump.c (go_define): Treat a single character in single quotes,
276 or a string, as an operand.
278 2011-09-23 Martin Jambor <mjambor@suse.cz>
280 * ipa-prop.h (jump_func_type): Updated comments.
281 (ipa_known_type_data): New type.
282 (ipa_jump_func): Use it to describe known type jump functions.
283 * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
284 reflect the new known type jump function contents.
285 (compute_known_type_jump_func): Likewise.
286 (combine_known_type_and_ancestor_jfs): Likewise.
287 (try_make_edge_direct_virtual_call): Likewise.
288 (ipa_write_jump_function): Likewise.
289 (ipa_read_jump_function): Likewise.
290 * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
291 (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
292 (propagate_accross_jump_function): Likewise.
294 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
297 * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
298 (rotlqi3_4): Turn insn into expander.
299 (*rotlqi3): New insn.
300 (rotlhi3, rotlsi3): Support rotate left/right by 1.
301 (*rotlhi2.1, *rotlhi2.15): New insns.
302 (*rotlsi2.1, *rotlsi2.31): New insns.
303 * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
305 2011-09-23 Bin Cheng <bin.cheng@arm.com>
307 * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch
310 2011-09-22 Maxim Kuvyrkov <maxim@codesourcery.com>
312 * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
314 2011-09-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
316 * reload.c (find_reloads): Set operand_mode to Pmode for address
317 operands consisting of just a CONST_INT.
319 2011-09-22 Uros Bizjak <ubizjak@gmail.com>
322 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
323 blendv, force op_true to register if it doesn't satisfy
324 nonimmediate_operand predicate.
326 2011-09-22 Richard Sandiford <rdsandiford@googlemail.com>
330 * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
331 get the locate.where_pad value for register-only arguments.
332 * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
333 (arm_pad_reg_upward): Handle null types.
335 2011-09-22 Jan Hubicka <jh@suse.cz>
337 * ipa-inline-analysis.c: Fix overly long lines.
339 2011-09-22 Jan Hubicka <jh@suse.cz>
341 * ipa-inline-transform.c (inline_call): Always update jump functions
343 * ipa-inline.c (ipa_inline): Likewise; do not call
344 ipa_create_all_structures_for_iinln.
345 (ipa_inline): Always free jump functions.
346 * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
347 (remap_edge_predicates): Fix pasto.
348 (inline_merge_summary): Remove nlined edge predicate; remove hack.
349 (inline_analyze_function): Always initialize jump functions.
350 (inline_generate_summary): Likewise.
351 (inline_write_summary): Always write jump functions when ipa-cp
353 (inline_read_summary): Always read jump functions when ipa-cp
355 * ipa-prop.c (iinlining_processed_edges): Remove.
356 (update_indirect_edges_after_inlining): Do not use
357 iinlining_processed_edges; instead set param_index to -1.
358 (propagate_info_to_inlined_callees): Only try to indirect inlining
359 when asked to do so; update jump functions of indirect calls, too;
360 remove jump functions of the inlined edge.
361 (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
362 (ipa_create_all_structures_for_iinln): Remove.
363 (ipa_free_all_structures_after_iinln): Do not free
364 iinlining_processed_edges.
365 * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
367 2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
369 * config/arm/predicates.md (expandable_comparison_operator): New
370 predicate, extracted from...
371 (arm_comparison_operator): ...here.
372 * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
373 (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
374 (movdfcc): Use expandable_comparison_operator.
376 2011-09-22 Georg-Johann Lay <avr@gjlay.de>
380 * config/avr/avr-protos.h (avr_out_bitop): New prototype.
381 (avr_popcount_each_byte): New prototype.
382 * config/avr/avr.c (avr_popcount): New static function.
383 (avr_popcount_each_byte): New function.
384 (avr_out_bitop): New function.
385 (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
386 avr_out_bitop. Cleanup code.
387 * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
388 (Ca4, Co4, Cx4): New constraints.
389 * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
391 (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
392 (andsi3, iorsi3, xorsi3): Ditto.
393 (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
395 2011-09-22 Ira Rosen <ira.rosen@linaro.org>
397 PR tree-optimization/50451
398 * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
399 constant operands in reduction.
400 (vect_get_slp_defs): Don't create vector operand for NULL scalar
403 2011-09-22 David S. Miller <davem@davemloft.net>
405 * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
406 fpack16, fpack32, fpackfix as const.
408 * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
409 I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
410 constants. Use them everywhere.
412 2011-09-22 Oleg Endo <oleg.endo@t-online.de>
414 * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
415 Added AND special case. Adapted comments.
416 (sh_rtx_costs): Added XOR and IOR case.
418 2011-09-21 Jan Hubicka <jh@suse.cz>
420 * ipa-inline-analsis.c (compute_inline_parameters): Set
421 cfun and current_function_decl.
423 2011-09-21 Jan Hubicka <jh@suse.cz>
425 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
426 handled components in parameter of builtin_constant_p.
427 (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
429 2011-09-21 Jan Hubicka <jh@suse.cz>
431 * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
432 * ipa-inline.h (estimate_edge_time): Fix pasto.
433 * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
435 2011-09-21 Jakub Jelinek <jakub@redhat.com>
437 * config/i386/i386.c (ix86_expand_sse_movcc): Use
438 blendvps, blendvpd and pblendvb if possible.
440 2011-09-21 Uros Bizjak <ubizjak@gmail.com>
443 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
444 operand 1 predicate to register_operand and operand 2 predicate
445 to nonimmediate_operand.
446 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
447 xop_pcmov, force op_true to register. Also, force op_false to
448 register if it doesn't satisfy nonimmediate_operand predicate.
450 2011-09-21 Kirill Yukhin <kirill.yukhin@intel.com>
452 * config/i386/bmi2intrin.h (_mulx_u64): New.
455 2011-09-21 Jan Hubicka <jh@suse.cz>
457 PR tree-optimization/50433
458 * ipa-inline-analysis.c (eliminated_by_inlining_prob):
459 Use get_base_address.
461 2011-09-21 Jakub Jelinek <jakub@redhat.com>
463 * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
464 nonimmediate_operand instead of register_operand predicate for operands
465 1 and 2, force them into registers if expanding them as comparison.
466 (<code><mode>3 umaxmin:VI124_128 expander): Similarly. For UMAX
467 V8HImode force into register just operand 1.
469 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
472 * config/avr/avr.c (avr_function_arg_advance): Change error to
473 warning if a fixed register is needed as function argument.
475 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
479 * config/avr/avr.md (adjust_len): New insn attribute.
480 (*reload_insi, *reload_insf): Use it.
481 (*movsi, *movsf): Use new interface of output_movsisf.
482 * config/avr/avr-protos.h (output_movsisf): Change prototype.
483 * config/avr/avr.c (output_movsisf): Ditto.
484 (adjust_insn_length): Use insn attribute "adjust_len" to adjust
485 lengths of insns *reload_insi, *reload_insf.
486 (output_reload_insisf_1): New static function.
487 (output_reload_insisf): Use it.
489 2011-09-21 David S. Miller <davem@davemloft.net>
491 * config/sparc/sparc.c (def_builtin): Change from macro into function.
492 (def_builtin_const): New.
493 (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
494 other than alignaddr and falignaddr.
496 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
497 UNSPEC_FCMPEQ): New unspec codes.
498 (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
499 fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
500 * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
501 new pixel compare VIS patterns.
502 * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
503 __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
504 __vis_fcmpeq16, __vis_fcmpeq32): New.
505 * doc/extend.texi: Document new pixel compare VIS intrinsics.
507 2011-09-21 Tom de Vries <tom@codesourcery.com>
509 * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
511 2011-09-20 David S. Miller <davem@davemloft.net>
513 * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
514 (aligneddrl<P:mode>_vis): New pattern.
515 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
516 edge32l_vis): Adjust to take Pmode arguments, and return SImode.
517 * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
518 alignaddrl insn, and adjust edge operations for updated types.
519 * config/sparc/visintrin.h: Likewise.
520 * doc/extend.texi: Make typing in VIS documentation match reality.
522 2011-09-20 Terry Guo <terry.guo@arm.com>
524 * config/arm/arm-arches.def: Add armv6s-m.
525 * config/arm/arm-tables.opt: Regenerate.
527 2011-09-20 Wei Guozhi <carrot@google.com>
529 PR rtl-optimization/49452
530 * postreload.c (reload_combine): Invalidate use information when across
533 2011-09-19 Maxim Kuvyrkov <maxim@codesourcery.com>
535 * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
536 Remove maintenance overhead.
537 (haifa_sched_init, sched_finish): Update.
539 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
541 * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
542 to calculate unit, prefix_rep and prefix_data16 attributes.
543 (*mov<mode>_internal): Ditto for unit attribute.
544 (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
545 (*movv2sf_internal): Ditto.
546 * config/i386/sse.md (VI1248_256): Remove mode iterator.
547 (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
548 (*avx2_eq<mode>3): Ditto.
549 (avx2_gt<mode>3): Ditto.
551 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
553 * config/i386/i386.md (maxmin): New code iterator.
554 * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
555 from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
557 (*avx2_<maxmin:code><mode>3): Macroize isn from
558 *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
559 maxmin code iterator.
560 (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
561 (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
562 <umaxmin:code>v16qi3.
564 2011-09-19 Alan Modra <amodra@gmail.com>
565 Michael Meissner <meissner@linux.vnet.ibm.com>
568 * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
569 split the load of the indirect function's TOC from the call to
570 prevent the compiler from moving the load of the new TOC above
571 code that references the current function's TOC.
572 (call_indirect_aix<ptrsize>_internal): Ditto.
573 (call_indirect_aix<ptrsize>_nor11): Ditto.
574 (call_indirect_aix<ptrsize>_internal2): Ditto.
575 (call_value_indirect_aix<ptrsize>): Ditto.
576 (call_value_indirect_aix<ptrsize>_internal): Ditto.
577 (call_value_indirect_aix<ptrsize>_nor11): Ditto.
578 (call_value_indirect_aix<ptrsize>_internal2): Ditto.
580 2011-09-19 Jakub Jelinek <jakub@redhat.com>
582 * config/i386/sse.md (*sse4_1_extractps): Change into
583 define_insn_and_split, add =x 0 n and =x x n alternatives
584 and split them after reload.
586 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
588 * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
590 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
592 * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
594 2011-09-19 Ira Rosen <ira.rosen@linaro.org>
596 PR tree-optimization/50413
597 * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
598 a basic block if one of its data-refs can't be analyzed.
600 2011-09-19 Paul Brook <paul@codesourcery.com>
602 * config/arm/predicates.md (shift_amount_operand): Check constant
603 shift count is in range.
604 (const_shift_operand): Remove.
606 2011-09-18 Eric Botcazou <ebotcazou@adacore.com>
607 Iain Sandoe <developer@sandoe-acoustics.co.uk>
610 * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
611 * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
613 2011-09-18 H.J. Lu <hongjiu.lu@intel.com>
615 * config/i386/bmiintrin.h: Remove tmp.
616 * config/i386/tbmintrin.h: Likewise.
618 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
620 PR tree-optimization/50414
621 * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
624 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
626 PR tree-optimization/50412
627 * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
628 acceses that require epilogue loop if vectorizing outer loop.
630 2011-09-17 David S. Miller <davem@davemloft.net>
632 * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
633 UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
635 (define_attr type): New type 'edge'.
636 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
637 edge32l_vis): New patterns.
638 * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
639 * config/sparc/ultra3.md: Likewise.
640 * config/sparc/niagara.md: Likewise.
641 * config/sparc/niagara2.md: Likewise.
642 * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
643 builtins for VIS edge instructions.
644 * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
645 (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
647 (__v8qi, __v4qi): Make unsigned.
648 (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
649 __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
650 __vis_fpack32): Fix types.
651 * doc/extend.texi: Document new 'edge' VIS intrinsics.
653 * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
655 (niagara3_costs): New.
656 (sparc_option_override): Use it.
657 * gcc/config/sparc/niagara2.md: Adjust with more accurate
658 Niagara-3 reservations.
660 2011-09-17 Jakub Jelinek <jakub@redhat.com>
662 * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
663 (sse2_avx, sseinsnmode): Add V2TI.
664 (REDUC_SMINMAX_MODE): New mode iterator.
665 (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
666 reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
667 (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
668 (sse2_lshrv1ti3): Rename to...
669 (<sse2_avx2>_lshr<mode>3): ... this. Use VIMAX_AVX2 mode
670 iterator. Move before umaxmin expanders.
671 * config/i386/i386.h (VALID_AVX256_REG_MODE,
672 SSE_REG_MODE_P): Accept V2TImode.
673 * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
674 V16HImode, V8SImode and V4DImode.
676 * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
678 (ix86_build_signbit_mask): Likewise.
679 (ix86_expand_int_vcond): Likewise. Handle V16HImode and V32QImode.
680 (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
681 instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
682 * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
683 (<code><mode>3) ... this.
684 (avx2_<code><mode>3 smaxmin expand): Rename to...
685 (<code><mode>3) ... this.
686 (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
687 (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
688 VI8_AVX2 mode iterator.
689 (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
690 VI8_AVX2 mode iterator.
691 (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
694 2011-09-17 Richard Sandiford <rdsandiford@googlemail.com>
696 * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
699 2011-09-16 David S. Miller <davem@davemloft.net>
701 * config/sparc/visintrin.h: New file.
702 * config.gcc: Add it to extra_headers on sparc.
704 2011-09-16 Jakub Jelinek <jakub@redhat.com>
706 * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
707 (ix86_expand_reduc): ... this. Handle also V8SFmode and V4DFmode.
708 * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
709 reduc_smin_v4sf): Adjust callers.
710 (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
713 * config/i386/sse.md (vec_extract_hi_<mode>,
714 vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
715 vextracti128 instead of vextractf128 for -mavx2 and
716 integer vectors. For V4DFmode fix up mode attribute.
717 (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
718 (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
719 instead of V8SF mode attribute.
720 (avx2_extracti128): Change into define_expand.
721 * config/i386/i386.c (ix86_expand_vector_extract): Handle
722 32-byte vector modes if TARGET_AVX.
724 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
726 * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
727 (umulqi3_highpart, smulqi3_highpart): Ditto.
728 (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
729 (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
730 (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
732 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
735 * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
736 (*maddqi4, *maddqi4.const): New insns.
737 (*msubqi4, *msubqi4.const): New insns.
738 * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
739 PLUS:QI and MINUS:QI. Increase costs of multiply-add/-sub for
740 HImode by 1 in the case of multiplying with a CONST_INT.
741 Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
743 2011-09-15 Jan Hubicka <jh@suse.cz>
746 * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
747 error_mark_node in the DECL_INITIAL of vtable.
749 2011-09-15 Diego Novillo <dnovillo@google.com>
751 * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
752 @SYSROOT_CFLAGS_FOR_TARGET@.
753 * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
754 * configure: Regenerate.
755 (site.exp): Add definition of TEST_ALWAYS_FLAGS.
756 Remove setting of GCC_UNDER_TEST.
758 2011-09-15 Uros Bizjak <ubizjak@gmail.com>
760 * config/i386/i386.c (output_fp_compare): Return %v prefixed
761 instruction mnemonics for TARGET_AVX.
763 * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
764 "type" attribute calculation.
765 (*movdf_internal): Ditto.
766 (*movsf_internal): Ditto.
768 2011-09-15 James Greenhalgh <james.greenhalgh@arm.com>
770 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
772 2011-09-15 Jason Merrill <jason@redhat.com>
775 * expr.c (count_type_elements): Handle NULLPTR_TYPE.
777 2011-09-15 Jan Hubicka <jh@suse.cz>
779 * ipa-inline-analysis.c (add_condition): Add conditions parameter;
780 simplify obviously true clauses.
781 (and_predicates, or_predicates): Add conditions parameter.
782 (inline_duplication_hoook): Update.
783 (mark_modified): New function.
784 (unmodified_parm): New function.
785 (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
786 set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
788 (estimate_function_body_sizes): Update.
789 (remap_predicate): Update.
791 2011-09-15 Ira Rosen <ira.rosen@linaro.org>
793 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
794 read-after-read dependencies in basic block SLP.
796 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
798 * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
801 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
803 * config/sh/sh.md: Use match_test rather than eq/ne symbol_ref
806 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
808 * config/s390/s390.md: Use match_test rather than eq/ne symbol_ref
811 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
813 * config/rs6000/rs6000.md: Use match_test rather than eq/ne symbol_ref
815 * config/rs6000/constraints.md: Likewise.
817 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
819 * config/microblaze/microblaze.md: Use match_test rather than
820 eq/ne symbol_ref throughout file.
822 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
824 * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref
827 2011-09-14 Tom de Vries <tom@codesourcery.com>
830 * explow.c (emit_stack_restore): Set crtl->need_drap if
831 stack_restore is emitted.
833 2011-09-14 Julian Brown <julian@codesourcery.com>
835 * config/arm/arm.c (arm_override_options): Add unaligned_access
837 (arm_file_start): Emit attribute for unaligned access as appropriate.
838 * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
839 (UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
840 (insv, extzv): Add unaligned-access support.
841 (extv): Change to expander. Likewise.
842 (extzv_t1, extv_regsi): Add helpers.
843 (unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
844 (unaligned_storesi, unaligned_storehi): New.
845 (*extv_reg): New (previous extv implementation).
846 * config/arm/arm.opt (munaligned_access): Add option.
847 * config/arm/constraints.md (Uw): New constraint.
848 * expmed.c (store_bit_field_1): Adjust bitfield numbering according
849 to size of access, not size of unit, when BITS_BIG_ENDIAN !=
850 BYTES_BIG_ENDIAN. Don't use bitfield accesses for
851 volatile accesses when -fstrict-volatile-bitfields is in effect.
852 (extract_bit_field_1): Likewise.
854 2011-09-14 Richard Sandiford <richard.sandiford@linaro.org>
856 * simplify-rtx.c (simplify_subreg): Check that the inner mode is
857 a scalar integer before applying integer-only optimisations to
860 2011-09-14 Bernd Schmidt <bernds@codesourcery.com>
862 * config/mips/mips.c (mips_expand_epilogue): Generate a
863 simple_return only if the return address is in r31.
865 2011-09-13 Bernd Schmidt <bernds@codesourcery.com>
867 * cfgcleanup.c (try_head_merge_bb): If get_condition returns
868 NULL for a jump that is a cc0 insn, pick the previous insn for
871 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
873 * config/v850/v850.md: Use match_test rather than eq/ne symbol_ref
876 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
878 * config/pa/pa.md: Use match_test rather than eq/ne symbol_ref
881 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
883 * config/mn10300/mn10300.md: Use match_test rather than eq/ne
884 symbol_ref throughout file.
886 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
888 * config/m68k/m68k.md: Use match_test rather than eq/ne symbol_ref
891 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
893 * config/h8300/h8300.md: Use match_test rather than eq/ne symbol_ref
896 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
898 * config/arm/arm.md: Use match_test rather than eq/ne symbol_ref
900 * config/arm/neon.md: Likewise.
901 * config/arm/vfp.md: Likewise.
902 * config/arm/thumb2.md: Likewise.
903 * config/arm/cortex-m4.md: Likewise.
905 2011-09-13 Sevak Sargsyan <sevak.sargsyan@ispras.ru>
907 * config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
908 define_insn patterns for combine.
910 2011-09-13 Giuseppe Scrivano <gscrivano@gnu.org>
912 * reorg.c: Always define make_return_insns.
914 2011-09-13 Jan Hubicka <jh@suse.cz>
917 * cgraphunit.c (assemble_thunks_and_aliases): Force alias to be output.
919 2011-09-13 Jan Hubicka <jh@suse.cz>
922 * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos.
924 2011-09-13 Paul Brook <paul@codesourcery.com>
926 * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
927 (ARM_TARGET2_DWARF_FORMAT): Provide default definition.
928 * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
929 * config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
930 * config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
931 * config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
932 * config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
933 * config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
934 enabling unwind tables.
935 (c6x_debug_unwind_info): New function.
936 (TARGET_ARM_EABI_UNWINDER): Define.
937 (TARGET_DEBUG_UNWIND_INFO): Define.
938 * config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
939 (TARGET_EXTRA_CFI_SECTION): Remove.
940 * config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
941 * ginclude/unwind-arm-common.h: New file.
943 2011-09-13 Georg-Johann Lay <avr@gjlay.de>
946 * config/avr/predicates.md (const_1_to_6_operand): New predicate.
947 * config/avr/avr.md: (extend_s): New code attribute.
948 (mul_r_d): New code attribute.
949 (*maddqihi4, *umaddqihi4): New insns.
950 (*msubqihi4, *umsubqihi4): New insns.
951 (*usmaddqihi4, *sumaddqihi4): New insns.
952 (*usmsubqihi4, *susubdqihi4): New insns.
953 (*umaddqihi4.uconst, *maddqihi4.sconst): New insn-and-splits.
954 (*umsubqihi4.uconst, *msubqihi4.sconst): New insn-and-splits.
955 (*umsubqihi4.uconst.ashift): New insn-and-split.
956 (*msubqihi4.sconst.ashift): New insn-and-split.
957 (*sumaddqihi4.uconst): New insn-and-split.
958 (*sumsubqihi4.uconst): New insn-and-split.
959 * config/avr/avr.c (avr_rtx_costs): Report costs of above in case
960 PLUS:HI and MINUS:HI.
962 2011-09-13 Revital Eres <revital.eres@linaro.org>
964 modulo-sched.c (remove_node_from_ps): Return void instead of bool.
965 (optimize_sc): Adjust call to remove_node_from_ps.
966 (sms_schedule): Add print info.
968 2011-09-13 Bernd Schmidt <bernds@codesourcery.com>
970 * rtl.c (copy_rtx): Do not handle frame_related, jump or call
973 2011-09-12 Jakub Jelinek <jakub@redhat.com>
976 * dwarf2cfi.c (add_cfis_to_fde): Ignore non-active insns in between
977 NOTE_INSN_CFI notes, with the exception of
978 NOTE_INSN_SWITCH_TEXT_SECTIONS.
980 2011-09-12 Bernd Schmidt <bernds@codesourcery.com>
981 Richard Sandiford <rdsandiford@googlemail.com>
983 * config/mips/mips.c (mips_epilogue): New structure.
984 (mips16e_save_restore_reg): Queue REG_CFA_RESTORE notes when
986 (mips_epilogue_emit_cfa_restores): New function.
987 (mips_epilogue_set_cfa): Likewise.
988 (mips_restore_reg): Queue REG_CFA_RESTORE notes. When restoring
989 the current CFA register from the stack, redefine the CFA in terms
990 of the stack pointer.
991 (mips_expand_epilogue): Set up mips_epilogue. Attach CFA information
992 to the epilogue instructions.
994 2011-09-12 Richard Sandiford <rdsandiford@googlemail.com>
996 * config/mips/mips.c (mips16e_save_restore_reg): Add a reg_parm_p
998 (mips16e_build_save_restore): Update accordingly.
1000 2011-09-12 Jakub Jelinek <jakub@redhat.com>
1002 PR rtl-optimization/50212
1003 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
1004 Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
1007 * calls.c (load_register_parameters): Use use_reg_mode instead
1008 of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
1010 (expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
1011 for stack CALL_INSN_FUNCTION_USAGE uses.
1012 * expr.h (use_reg_mode): New prototype.
1013 (use_reg): Changed into inline around use_reg_mode.
1014 * expr.c (use_reg): Renamed to...
1015 (use_reg_mode): ... this. Added MODE argument, set EXPR_LIST
1016 mode to that mode instead of VOIDmode.
1017 * var-tracking.c (prepare_call_arguments): Don't track parameters
1018 whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
1019 to it using lowpart_subreg. Convert VALUE and REG/MEM to the
1022 2011-09-12 Georg-Johann Lay <avr@gjlay.de>
1025 * config/avr/avr.c (AVR_SECTION_PROGMEM): New Define.
1026 (progmem_section): New Variable.
1027 (avr_asm_init_sections): Initialize it.
1028 (TARGET_ASM_SELECT_SECTION): Define to...
1029 (avr_asm_select_section): ... this new Function.
1030 (avr_replace_prefix): New Function.
1031 (avr_asm_function_rodata_section): Use it.
1032 (avr_insert_attributes): Don't add section attribute for PROGMEM.
1033 (avr_section_type_flags): Use avr_progmem_p instead of section
1034 name to detect if object is in PROGMEM.
1035 (avr_asm_named_section): Set section name prefix for objects in
1038 2011-09-12 Jakub Jelinek <jakub@redhat.com>
1041 * config/arm/arm.md (*push_fp_multi): Add % before %( and %) in the
1042 sprintf format string.
1044 2011-09-12 Richard Guenther <rguenther@suse.de>
1046 PR tree-optimization/50343
1047 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check
1048 that the reduction is over an SSA name before checking its definition.
1050 2011-09-11 Richard Sandiford <rdsandiford@googlemail.com>
1052 * config/cris/cris.md: Use match_test rather than eq/ne symbol_ref
1055 2011-09-11 Richard Sandiford <rdsandiford@googlemail.com>
1057 * config/mips/mips.md: Use match_test rather than eq/ne symbol_ref
1059 * config/mips/sb1.md: Likewise.
1060 * config/mips/predicates.md: Replace (match_test "!...")
1061 with (not (match_test "..."))
1062 * config/mips/constraints.md: Likewise.
1064 2011-09-09 Andrew Stubbs <ams@codesourcery.com>
1066 * config/arm/arm-cores.def (generic-armv7-a): New architecture.
1067 * config/arm/arm-tables.opt: Regenerate.
1068 * config/arm/arm-tune.md: Regenerate.
1069 * config/arm/arm.c (arm_file_start): Output .arch directive when
1070 user passes -mcpu=generic-*.
1071 (arm_issue_rate): Add genericv7a support.
1072 * config/arm/arm.h (EXTRA_SPECS): Add asm_cpu_spec.
1073 (ASM_CPU_SPEC): New define.
1074 * config/arm/elf.h (ASM_SPEC): Use %(asm_cpu_spec).
1075 * config/arm/semi.h (ASM_SPEC): Likewise.
1076 * doc/invoke.texi (ARM Options): Document -mcpu=generic-*
1077 and -mtune=generic-*.
1079 2011-09-09 Richard Guenther <rguenther@suse.de>
1081 PR tree-optimization/50328
1082 * tree-vect-loop.c (vect_is_simple_reduction_1): Allow one
1083 constant or default-def operand.
1085 2011-09-09 Richard Guenther <rguenther@suse.de>
1087 * tree-ssa-pre.c (create_expression_by_pieces): Fold the
1090 2011-09-09 Richard Guenther <rguenther@suse.de>
1092 * gimple.h (fold_stmt_inplace): Adjust to take a gimple_stmt_iterator
1093 instead of a statement.
1094 * gimple-fold.c (fold_stmt_inplace): Likewise.
1095 * sese.c (graphite_copy_stmts_from_block): Adjust.
1096 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1097 * tree-ssa-forwprop.c (forward_propagate_into_comparison): Use
1099 (forward_propagate_addr_into_variable_array_index): Likewise.
1100 (forward_propagate_addr_expr_1): adjust.
1101 (associate_plusminus): Likewise.
1102 (ssa_forward_propagate_and_combine): Likewise.
1103 * tree-ssa-mathopts.c (replace_reciprocal): Adjust.
1104 (execute_cse_reciprocals): Likewise.
1105 * tree-ssa.c (insert_debug_temp_for_var_def): Adjust.
1107 2011-09-09 Nick Clifton <nickc@redhat.com>
1109 * config/mn10300/mn10300.c (mn10300_split_and_operand_count):
1110 Return a positive value to indicate that the bits at the
1111 bottom of the register should be cleared.
1113 2011-09-09 Richard Guenther <rguenther@suse.de>
1115 * tree-ssa-operands.c (swap_tree_operands): Always adjust
1116 existing operand positions.
1118 2011-09-09 Richard Guenther <rguenther@suse.de>
1121 * tree-data-ref.c (split_constant_offset): Do not try to handle
1124 2011-09-08 Andrew Stubbs <ams@codesourcery.com>
1126 PR tree-optimization/50318
1127 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Correct
1128 typo in use of mult_rhs1 and mult_rhs2.
1130 2011-09-08 Uros Bizjak <ubizjak@gmail.com>
1132 * config/i386/i386.c (standard_sse_constant_p): Handle AVX2 modes.
1133 (standard_sse_constant_opcode) <case 2>: Change vpcmpeqd template.
1135 2011-09-08 Bernd Schmidt <bernds@codesourcery.com>
1137 * config/arm/arm.md (push_multi): Emit predicates.
1138 (push_fp_multi): Likewise.
1139 * config/arm/arm.c (vfp_output_fstmd): Likewise.
1141 2011-09-08 Dodji Seketeli <dodji@redhat.com>
1143 PR c++/33255 - Support -Wunused-local-typedefs warning
1144 * c-decl.c (lookup_name): Use the new maybe_record_typedef_use.
1145 (pushdecl): Use the new record_locally_defined_typedef.
1146 (store_parm_decls): Allocate cfun->language.
1147 (finish_function): Use the new maybe_warn_unused_local_typedefs,
1148 and free cfun->language.
1149 (c_push_function_context): Allocate cfun->language here only if needed.
1150 (c_pop_function_context): Likewise, mark cfun->language
1151 for collection only when it should be done.
1152 * c-common.c (handle_used_attribute): Don't ignore TYPE_DECL nodes.
1153 * c-typeck.c (c_expr_sizeof_type, c_cast_expr): Use the new
1154 maybe_record_local_typedef_use.
1155 * doc/invoke.texi: Update documentation for
1156 -Wunused-local-typedefs.
1158 2011-09-08 Enkovich Ilya <ilya.enkovich@intel.com>
1160 * config/i386/i386-protos.h (ix86_lea_outperforms): New.
1161 (ix86_avoid_lea_for_add): Likewise.
1162 (ix86_avoid_lea_for_addr): Likewise.
1163 (ix86_split_lea_for_addr): Likewise.
1165 * config/i386/i386.c (LEA_MAX_STALL): New.
1166 (increase_distance): Likewise.
1167 (insn_defines_reg): Likewise.
1168 (insn_uses_reg_mem): Likewise.
1169 (distance_non_agu_define_in_bb): Likewise.
1170 (distance_agu_use_in_bb): Likewise.
1171 (ix86_lea_outperforms): Likewise.
1172 (ix86_ok_to_clobber_flags): Likewise.
1173 (ix86_avoid_lea_for_add): Likewise.
1174 (ix86_avoid_lea_for_addr): Likewise.
1175 (ix86_split_lea_for_addr): Likewise.
1176 (distance_non_agu_define): Search in pred BBs added.
1177 (distance_agu_use): Search in succ BBs added.
1178 (IX86_LEA_PRIORITY): Value changed from 2 to 0.
1179 (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
1180 (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
1182 * config/i386/i386.md: Split added to transform non destructive
1183 add into move and add.
1184 (lea_1): transformed into insn_and_split to avoid AGU stalls.
1185 (lea<mode>_2): Likewise.
1187 2011-09-08 Martin Jambor <mjambor@suse.cz>
1189 PR tree-optimization/50287
1190 * ipa-split.c (split_function): Do not create SSA names for
1191 non-gimple-registers.
1193 2011-09-08 Richard Guenther <rguenther@suse.de>
1195 PR tree-optimization/19831
1196 * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Also
1197 skip builtins with vdefs that do not really store something.
1198 (propagate_necessity): For calls to free that we can associate
1199 with an allocation function do not mark the freed pointer
1200 definition necessary.
1201 (eliminate_unnecessary_stmts): Remove a call to free if
1202 the associated call to an allocation function is not necessary.
1204 2011-09-08 Richard Guenther <rguenther@suse.de>
1206 PR tree-optimization/19831
1207 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark
1208 allocation functions as necessary.
1210 2011-09-08 Iain Sandoe <iains@gcc.gnu.org>
1212 * config/darwin-driver.c (darwin_find_version_from_kernel): New routine
1214 (darwin_default_min_version): Amended to provide defaults
1215 for the cross directory case.
1216 (darwin_driver_init): call darwin_default_min_version unconditionally.
1217 * config/darwin.h (DEF_MIN_OSX_VERSION): New.
1218 * config/darwin9.h: Likewise.
1219 * config/darwin10.h: Likewise.
1220 * config/rs6000/darwin7.h: Likewise.
1222 2011-09-08 Jakub Jelinek <jakub@redhat.com>
1225 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
1226 code early if TARGET_AVX.
1227 (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
1229 2011-09-07 Jakub Jelinek <jakub@redhat.com>
1231 * config/i386/sse.md (sseinsnmode): Remove 32-byte integer vector
1235 * config/i386/sse.md (*andnot<mode>3, *<code><mode>3): Fix up
1236 "mode" attribute computation.
1238 2011-09-07 Bernd Schmidt <bernds@codesourcery.com>
1240 * regrename.c (struct du_head): Make nregs signed.
1241 (closed_chains): Remove.
1242 (create_new_chain): Return the new chain.
1243 (chain_from_id): New static function.
1244 (dump_def_use_chain): Change argument to be an int, indicating
1245 the first ID to print. All callers changed.
1246 (merge_overlapping_regs): Use chain_from_id. Assert that
1247 chains don't conflict with themselves.
1248 (rename_chains): Take no argument. Iterate over id_to_chain
1249 rather to find chains to rename. Clear tick before the main loop.
1250 (struct incoming_reg_info): New struct.
1251 (struct bb_rename_info): New struct.
1252 (init_rename_info, set_incoming_from_chain, merge_chains): New
1254 (regrename_analyze): New static function, broken out of
1255 regrename_optimize. Record and make use of open chain information
1256 at basic block boundaries, and merge chains where possible.
1257 (scan_rtx_reg): Make this_nregs signed. Don't update
1259 (build_def_use): Return a bool to indicate success. All callers
1260 changed. Don't initialize global data here.
1261 (regrename_optimize): Move most code out of here into
1263 * regs.h (add_range_to_hard_reg_set, remove_range_from_hard_reg_set,
1264 range_overlaps_hard_reg_set_p, range_in_hard_reg_set_p): New
1265 static inline functions.
1266 * vec.h (FOR_EACH_VEC_ELT_FROM): New macro.
1268 * bb-reorder.c (insert_section_boundary_note): Don't check
1269 optimize_function_for_speed_p.
1270 (gate_handle_partition_blocks): Do it here instead.
1271 (gate_handle_reorder_blocks): Move preliminary checks here ...
1272 (rest_of_handle_reorder_blocks): ... from here.
1274 2011-09-07 Martin Jambor <mjambor@suse.cz>
1277 * ipa-cp.c (find_more_values_for_callers_subset): Check jump
1278 function index bounds.
1279 (perhaps_add_new_callers): Likewise.
1281 2011-09-07 Martin Jambor <mjambor@suse.cz>
1283 PR tree-optimization/49911
1284 * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
1285 enumerations to the corresponding plain integer type.
1287 2011-09-07 Richard Guenther <rguenther@suse.de>
1289 PR tree-optimization/50319
1290 * tree-if-conv.c (set_bb_predicate): Assert we only set
1291 canonical predicates.
1292 (add_to_predicate_list): Simplify. Allow TRUTH_NOT_EXPR
1293 around canonical predicates.
1294 (predicate_bbs): Do not re-gimplify already canonical
1295 predicates. Properly unshare them though.
1296 (find_phi_replacement_condition): Simplify.
1298 2011-09-07 Richard Sandiford <richard.sandiford@linaro.org>
1301 * config/arm/arm-protos.h (maybe_get_arm_condition_code): Declare.
1302 * config/arm/arm.c (maybe_get_arm_condition_code): New function,
1303 reusing the old code from get_arm_condition_code. Return ARM_NV
1304 for invalid comparison codes.
1305 (get_arm_condition_code): Redefine in terms of
1306 maybe_get_arm_condition_code.
1307 * config/arm/predicates.md (arm_comparison_operator): Use
1308 maybe_get_arm_condition_code.
1310 2011-09-07 Richard Guenther <rguenther@suse.de>
1312 * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond):
1313 Canonicalize negated predicates by swapping edges.
1314 (forward_propagate_into_cond): Likewise.
1316 2011-09-07 Richard Guenther <rguenther@suse.de>
1318 PR tree-optimization/50213
1319 * tree-flow.h (simple_iv_increment_p): Declare.
1320 * tree-ssa-dom.c (simple_iv_increment_p): Export. Also handle
1322 * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do
1323 not propagate simple IV counter increments.
1325 2011-09-07 Eric Botcazou <ebotcazou@adacore.com>
1326 Iain Sandoe <iains@gcc.gnu.org>
1328 * config/rs6000/rs6000.c (compute_save_world_info): Test
1329 cfun->has_nonlocal_label to determine if the out-of-line save
1330 world call may be used.
1332 2011-09-07 Nick Clifton <nickc@redhat.com>
1334 * config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Set the jump
1335 label on the parallel part of the insn.
1337 2011-09-07 Jakub Jelinek <jakub@redhat.com>
1340 * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
1341 avoid_constant_pool_reference first instead of last.
1343 2011-09-06 Michael Meissner <meissner@linux.vnet.ibm.com>
1345 * doc/configfiles.texi (Configuration Files): Update documentation
1346 about tm_p.h and remove FIXME comment.
1348 2011-09-06 Uros Bizjak <ubizjak@gmail.com>
1350 * config/i386/i386.c (ix86_function_value_regno_p): Use AX_REG.
1351 (function_value_32): Do not check TARGET_MMX, TARGET_SSE or TARGET_AVX.
1353 2011-09-06 Iain Sandoe <iains@gcc.gnu.org>
1355 * config/darwin10.h Remove duplicate LIB_SPEC.
1357 2011-09-06 Enkovich Ilya <ilya.enkovich@intel.com>
1360 * target.def (reassociation_width): New hook.
1362 * doc/tm.texi.in (reassociation_width): Likewise.
1364 * doc/tm.texi (reassociation_width): Likewise.
1366 * doc/invoke.texi (tree-reassoc-width): New param documented.
1368 * hooks.h (hook_int_uint_mode_1): New default hook.
1370 * hooks.c (hook_int_uint_mode_1): Likewise.
1372 * config/i386/i386.h (ix86_tune_indices): Add
1373 X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1375 (TARGET_REASSOC_INT_TO_PARALLEL): New.
1376 (TARGET_REASSOC_FP_TO_PARALLEL): Likewise.
1378 * config/i386/i386.c (initial_ix86_tune_features): Add
1379 X86_TUNE_REASSOC_INT_TO_PARALLEL and X86_TUNE_REASSOC_FP_TO_PARALLEL.
1381 (ix86_reassociation_width): New function.
1383 * params.def (PARAM_TREE_REASSOC_WIDTH): New param added.
1385 * tree-ssa-reassoc.c (get_required_cycles): New function.
1386 (get_reassociation_width): Likewise.
1387 (swap_ops_for_binary_stmt): Likewise.
1388 (rewrite_expr_tree_parallel): Likewise.
1390 (rewrite_expr_tree): Refactored. Part of code moved into
1391 swap_ops_for_binary_stmt.
1393 (reassociate_bb): Now checks reassociation width to be used and
1394 call rewrite_expr_tree_parallel instead of rewrite_expr_tree if needed.
1396 2011-09-06 Richard Guenther <rguenther@suse.de>
1398 PR tree-optimization/47025
1399 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): BUILT_IN_VA_END
1401 (call_may_clobber_ref_p_1): BUILT_IN_VA_END is a barrier like
1403 (stmt_kills_ref_p_1): BUILT_IN_VA_END kills what its argument
1404 definitely points to.
1405 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
1406 BUILT_IN_VA_START doesn't let its va_list argument escape.
1407 * tree-ssa-dce.c (propagate_necessity): BUILT_IN_VA_END does
1408 not make any previous stores necessary.
1410 2011-09-06 Martin Jambor <mjambor@suse.cz>
1412 * ipa-inline.h (struct inline_summary): Move versionable flag...
1413 * cgraph.h (struct cgraph_local_info): ...here
1414 * ipa-cp.c (determine_versionability): Use the new versionable flag.
1415 (determine_versionability): Likewise.
1416 (ipcp_versionable_function_p): Likewise.
1417 (ipcp_generate_summary): Likewise.
1418 * ipa-inline-analysis.c (dump_inline_summary): Do not dump the
1420 (compute_inline_parameters): Do not clear the versionable flag.
1421 (inline_read_section): Do not stream the versionable flag.
1422 (inline_write_summary): Likewise.
1423 * lto-cgraph.c (lto_output_node): Stream the versionable flag.
1424 (input_overwrite_node): Likewise.
1426 2011-09-06 Richard Guenther <rguenther@suse.de>
1428 PR tree-optimization/48149
1429 * tree-ssa-sccvn.c (vn_get_expr_for): Simplify. Fix tuplification bug.
1430 (vn_valueize): Move earlier.
1431 (valueize_expr): Use vn_valueize.
1432 (simplify_binary_expression): Simplify, also combine COMPLEX_EXPR
1434 (simplify_unary_expression): Simplify.
1436 2011-09-06 Richard Guenther <rguenther@suse.de>
1438 PR tree-optimization/48317
1439 * tree-ssa-sccvn.h (struct vn_nary_op_s): Make op a true
1441 (sizeof_vn_nary_op): New inline function.
1442 (vn_nary_op_lookup_pieces): Adjust.
1443 (vn_nary_op_insert_pieces): Likewise.
1444 * tree-ssa-sccvn.c (vn_nary_op_eq): Also compare the length.
1445 (init_vn_nary_op_from_pieces): Adjust signature. Deal with
1446 any number of operands.
1447 (vn_nary_length_from_stmt): New function.
1448 (init_vn_nary_op_from_stmt): Adjust for CONSTRUCTOR handling.
1449 (vn_nary_op_lookup_pieces): Adjust signature and allocate properly
1451 (vn_nary_op_lookup): Likewise.
1452 (vn_nary_op_lookup_stmt): Likewise.
1453 (vn_nary_op_insert_into): Likewise.
1454 (vn_nary_op_insert_stmt): Likewise.
1455 (visit_use): Handle CONSTRUCTOR as nary.
1456 * tree-ssa-pre.c (phi_translate_1): Adjust.
1457 (create_expression_by_pieces): Likewise.
1458 (compute_avail): Likewise.
1460 2011-09-06 Ira Rosen <ira.rosen@linaro.org>
1462 * config/arm/arm.c (arm_preferred_simd_mode): Check
1463 TARGET_NEON_VECTORIZE_DOUBLE instead of
1464 TARGET_NEON_VECTORIZE_QUAD.
1465 (arm_autovectorize_vector_sizes): Likewise.
1466 * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
1467 mask of mvectorize-with-neon-double. Add RejectNegative.
1468 (mvectorize-with-neon-double): New.
1470 2011-09-06 Richard Guenther <rguenther@suse.de>
1472 * tree-ssa-sccvn.c (visit_use): CSE stmt pieces and simplify matching.
1474 2011-09-06 Tom de Vries <tom@codesourcery.com>
1476 * recog.c (asm_labels_ok): New function.
1477 (check_asm_operands): Use asm_labels_ok.
1479 2011-09-05 Richard Sandiford <rdsandiford@googlemail.com>
1482 * config/mips/mips.h (ABI_HAS_64BIT_SYMBOLS): Check Pmode.
1483 (PMODE_INSN): New macro.
1484 * config/mips/mips.c (gen_load_const_gp): Use PMODE_INSN.
1485 (mips_got_load, mips_expand_synci_loop): Likewise.
1486 (mips_save_gp_to_cprestore_slot): Handle SImode and DImode
1488 (mips_emit_loadgp): Use PMODE_INSN. Handle SImode and DImode
1489 copygp_mips16 patterns.
1490 (mips_expand_prologue): Handle SImode and DImode potential_cprestore
1491 and use_cprestore patterns.
1492 (mips_override_options): Check for incompatible -mabi and -mlong
1494 * config/mips/mips.md (unspec_got<mode>): Rename to...
1495 (unspec_got_<mode>): ...this.
1496 (copygp_mips16): Use the Pmode iterator.
1497 (potential_cprestore, cprestore, use_cprestore): Likewise.
1498 (clear_cache, indirect_jump): Use PMODE_INSN.
1499 (indirect_jump<mode>): Rename to...
1500 (indirect_jump_<mode>): ...this.
1501 (tablejump): Use PMODE_INSN.
1502 (tablejump<mode>): Rename to...
1503 (tablejump_<mode>): ...this.
1504 (exception_receiver): Handle restore_gp_si and restore_gp_di.
1505 (restore_gp): Use the Pmode iterator.
1506 * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Use
1509 2011-09-05 Richard Sandiford <rdsandiford@googlemail.com>
1511 * config/mips/mips.c (mips_gimplify_va_arg_expr): Unshare off.
1512 Fix the type of the BIT_AND_EXPR.
1514 2011-09-05 David S. Miller <davem@davemloft.net>
1516 * config.host: Add driver-sparc.o and sparc/x-sparc on
1517 native sparc*-*-linux* builds.
1518 * config/sparc/driver-sparc.c: Correct Linux strings.
1519 * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
1520 * config/sparc/linux64.h: Likewise.
1521 * doc/invoke.texi: Document that Linux also supports
1522 -mcpu=native and -mtune=native on sparc.
1524 * config/sparc/sparc-opts.h (PROCESSOR_NIAGARA3,
1525 PROCESSOR_NIAGARA4): New.
1526 * config/sparc/sparc.opt: Handle new processor types.
1527 * config/sparc/sparc.md: Add to "cpu" attribute.
1528 * config/sparc/sparc.h (TARGET_CPU_niagara3,
1529 TARGET_CPU_niagara4): New, treat as niagara2.
1530 * config/sparc/linux64.h: Handle niagara3 and niagara4 like niagara2.
1531 * config/sparc/sol2.h: Likewise.
1532 * config/sparc/niagara2.md: Schedule niagara3 like niagara2.
1533 * config/sparc/sparc.c (sparc_option_override): Add
1534 niagara3 and niagara4 handling.
1535 (sparc32_initialize_trampoline): Likewise.
1536 (sparc64_initialize_trampoline): Likewise.
1537 (sparc_use_sched_lookahead): Likewise.
1538 (sparc_issue_rate): Likewise.
1539 (sparc_register_move_cost): Likewise.
1540 * config/sparc/driver-sparc.c (cpu_names): Use niagara3
1541 and niagara4 as appropriate.
1542 * doc/invoke.texi: Document new processor types.
1543 * config.gcc: Recognize niagara3 and niagara4 in --with-cpu
1544 and --with-tune options.
1546 * config/sparc/sol2-64.h: Move ...
1547 * config/sparc/default-64.h: ... to here. Update comment.
1548 * config.gcc: Update Solaris sparc to use default-64.h, also
1549 prefix this header into the list on sparc64-*-linux.
1550 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if
1551 TARGET_64BIT_DEFAULT is defined. Remove commented out reference
1554 2011-09-05 Georg-Johann Lay <avr@gjlay.de>
1557 * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
1558 that contain global register variable.
1560 2011-09-05 Richard Guenther <rguenther@suse.de>
1562 * tree-cfg.c (replace_uses_by): Use fold_stmt, not fold_stmt_inplace.
1564 2011-09-05 Richard Guenther <rguenther@suse.de>
1566 * stor-layout.c (layout_type): Use size_binop for array size
1569 2011-09-05 Georg-Johann Lay <avr@gjlay.de>
1571 * config/avr/avr.h (progmem_section): Remove Declaration.
1572 * config/avr/avr.c (progmem_section): Make static and rename to
1573 progmem_swtable_section.
1574 (avr_output_addr_vec_elt): No need to switch sections.
1575 (avr_asm_init_sections): Use output_section_asm_op as section
1576 callback for progmem_swtable_section.
1577 (avr_output_progmem_section_asm_op): Remove Function.
1578 (TARGET_ASM_FUNCTION_RODATA_SECTION): New Define.
1579 (avr_asm_function_rodata_section): New static Function.
1580 * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Output
1581 alignment 2**1 for jump tables.
1583 2011-09-04 Jan Hubicka <jh@suse.cz>
1585 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Check that
1586 parameter is SSA name.
1588 2011-09-04 Richard Guenther <rguenther@suse.de>
1591 2011-08-31 Richard Guenther <rguenther@suse.de>
1593 * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
1596 2011-09-04 Iain Sandoe <iains@gcc.gnu.org>
1599 * config/darwin.h (DEBUG_MACRO_SECTION): New macro.
1601 2011-09-04 Jakub Jelinek <jakub@redhat.com>
1602 Ira Rosen <ira.rosen@linaro.org>
1604 PR tree-optimization/50208
1605 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add an
1606 argument. Check that def_stmt is inside the loop.
1607 (vect_recog_widen_mult_pattern): Update calls to
1608 vect_handle_widen_mult_by_cons.
1609 (vect_operation_fits_smaller_type): Check that def_stmt is
1612 2011-09-04 Ira Rosen <ira.rosen@linaro.org>
1614 * tree-vectorizer.c (vect_print_dump_info): Print line
1615 number when dumping to a file.
1616 (vectorize_loops): Add new messages to dump file.
1618 2011-09-03 Martin Jambor <mjambor@suse.cz>
1620 * ipa-prop.h (ipa_jump_func_t): New typedef.
1621 (struct ipa_edge_args): Removed field argument_count, field
1622 jump_functions turned into a vector.
1623 (ipa_set_cs_argument_count): Removed.
1624 (ipa_get_cs_argument_count): Updated to work on vectors.
1625 (ipa_get_ith_jump_func): Likewise.
1626 * ipa-prop.c (ipa_count_arguments): Removed.
1627 (compute_scalar_jump_functions): Use ipa_get_ith_jump_func to access
1628 jump functions. Update caller.
1629 (compute_pass_through_member_ptrs): Likewise.
1630 (compute_cst_member_ptr_arguments): Likewise.
1631 (ipa_compute_jump_functions_for_edge): Get number of arguments from
1632 the statement, allocate vector.
1633 (ipa_compute_jump_functions): Do not call ipa_count_arguments.
1634 (duplicate_ipa_jump_func_array): Removed.
1635 (ipa_edge_duplication_hook): Use VEC_copy, do not copy argument count.
1636 (ipa_read_node_info): Allocate vector.
1638 2011-09-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
1641 * config/pa/pa.md (return): Define "return" insn pattern.
1642 (epilogue): Use it when no epilogue is needed.
1643 * config/pa/pa.c (pa_can_use_return_insn): New function.
1644 * config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
1646 2011-09-03 Eric Botcazou <ebotcazou@adacore.com>
1648 * cfgexpand.c (add_stack_var): Assert that the alignment is not zero.
1649 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Revert latest change.
1650 Force at least BITS_PER_UNIT alignment on the new variable.
1652 2011-09-02 Gary Funck <gary@intrepid.com>
1654 * opts.c (print_specific_help): Fix off-by-one compare in
1656 * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
1657 CL_TARGET, CL_COMMON, CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED):
1658 Increase by +5 to allow for more languages.
1659 * optc-gen.awk: Generate #if that ensures that the number of
1660 languages is within the implementation-defined limit.
1662 2011-09-02 Michael Matz <matz@suse.de>
1665 * ipa-split.c (split_function): Call add_referenced_var.
1667 * tree-ssa-phiopt.c (cond_store_replacement): Don't call get_var_ann.
1668 (cond_if_else_store_replacement_1): Ditto.
1669 * tree-ssa-pre.c (get_representative_for): Ditto.
1670 (create_expression_by_pieces): Ditto.
1671 (insert_into_preds_of_block): Ditto.
1672 * tree-sra.c (create_access_replacement): Ditto.
1673 (get_replaced_param_substitute): Ditto.
1675 2011-09-02 Bernd Schmidt <bernds@codesourcery.com>
1677 * config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New
1679 (d1, l1, s1, m1, d2, l2, s2, m2): Changed to define_query_cpu_unit.
1680 (l1w, s1w, l2w, s2w): Define in the main automaton.
1681 (fps1, fpl1, adddps1, adddpl1, fps2, fpl2, adddps2, adddpl2): New
1683 * config/c6x/c6x.c (c6x_sched_insn_info): Add unit_mask member.
1684 (c6x_unit_names): Add the new units.
1685 (c6x_unit_codes): New static array.
1686 (UNIT_QID_D1, UNIT_QID_L1, UNIT_QID_S1, UNIT_QID_M1, UNIT_QID_FPS1,
1687 UNIT_QID_FPL1, UNIT_QID_ADDDPS1, UNIT_QID_ADDDPL1,
1688 UNIT_QID_SIDE_OFFSET): New macros.
1689 (RESERVATION_S2): Adjust value.
1690 (c6x_option_override): Compute c6x_unit_codes.
1691 (assign_reservations): Take the unit_mask of the last instruction
1692 into account. Detect floating point reservations by looking for
1693 the new units. Don't assign reservations if the field is already
1695 (struct c6x_sched_context): Add member prev_cycle_state_ctx.
1696 (init_sched_state): Initialize it.
1697 (c6x_clear_sched_context): Free it.
1698 (insn_set_clock): Clear reservation.
1699 (prev_cycle_state): New static variable.
1700 (c6x_init_sched_context): Save it.
1701 (c6x_sched_init): Allocate space for it and clear it.
1702 (c6x_sched_dfa_pre_cycle_insn): New static function.
1703 (c6x_dfa_new_cycle): Save state at the start of a new cycle.
1704 (c6x_variable_issue): Only record units in the unit_mask that
1705 were not set at the start of the cycle.
1706 (c6x_variable_issue): Compute and store the unit_mask from the
1708 (reorg_split_calls): Ensure the new information remains correct.
1709 (TARGET_SCHED_DFA_NEW_CYCLE, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1710 TARGET_SCHED_DFA_PRE_CYCLE_INSN): Define.
1711 * config/c6x/c6x.h (CPU_UNITS_QUERY): Define.
1712 * config/c6x/c6x-sched.md.in (fp4_ls_N__CROSS_, adddp_ls_N__CROSS_):
1713 Add special reservations.
1714 * config/c6x/c6x-sched.md: Regenerate.
1716 2011-09-02 Martin Jambor <mjambor@suse.cz>
1718 * ipa-prop.h (ipa_node_params): Removed fields
1719 called_with_var_arguments and node_versionable.
1720 (ipa_set_called_with_variable_arg): Removed.
1721 (ipa_is_called_with_var_arguments): Likewise.
1722 * ipa-cp.c (ipa_get_lattice): Fixed index check in an assert.
1723 (determine_versionability): Do not check for type attributes and va
1724 builtins. Record versionability into inline summary.
1725 (initialize_node_lattices): Do not check
1726 ipa_is_called_with_var_arguments.
1727 (propagate_constants_accross_call): Likewise, ignore arguments we do
1728 not have PARM_DECLs for, set variable flag for parameters that were
1730 (create_specialized_node): Dump info that we cannot change signature.
1731 * ipa-prop.c (ipa_compute_jump_functions): Do not care about variable
1732 number of arguments.
1733 (ipa_make_edge_direct_to_target): Likewise.
1734 (ipa_update_after_lto_read): Likewise.
1735 (ipa_node_duplication_hook): Do not copy called_with_var_arguments flag.
1736 * tree-inline.c (copy_arguments_for_versioning): Copy PARM_DECLs if
1739 2011-09-02 Richard Guenther <rguenther@suse.de>
1741 PR tree-optimization/27460
1743 * doc/md.texi (vcond): Document.
1744 * genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
1745 optab with two modes.
1746 * optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
1747 (enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
1748 (vcond_optab): Adjust.
1749 (vcondu_optab): Likewise.
1750 (expand_vec_cond_expr_p): Adjust prototype.
1751 * optabs.c (get_vcond_icode): Adjust.
1752 (expand_vec_cond_expr_p): Likewise.
1753 (expand_vec_cond_expr): Likewise.
1754 * tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
1756 (vectorizable_condition): Allow differing types for comparison
1758 * config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
1760 * config/i386/sse.md (vcond<mode>): Split to
1761 vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
1762 vcond<V_128:mode><VI124_128:mode> and
1763 vcondu<V_128:mode><VI124_128:mode>.
1764 (vcondv2di): Change to vcond<VI8F_128:mode>v2di.
1765 (vconduv2di): Likewise.
1766 * config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
1767 (vcondu<mode>): Likewise.
1768 * config/ia64/vect.md (vcond<mode>): Likewise.
1769 (vcondu<mode>): Likewise.
1770 (vcondv2sf): Likewise.
1771 * config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
1772 * config/rs6000/paired.md (vcondv2sf): Likewise.
1773 * config/rs6000/vector.md (vcond<mode>): Likewise.
1774 (vcondu<mode>): Likewise.
1775 * config/spu/spu.md (vcond<mode>): Likewise.
1776 (vcondu<mode>): Likewise.
1778 2011-09-02 Richard Guenther <rguenther@suse.de>
1780 * pretty-print.h (pp_unsigned_wide_integer): New.
1781 * tree-pretty-print.c (dump_generic_node): Print unsigned
1782 host-wide-int fitting INTEGER_CSTs with pp_unsigned_wide_integer.
1784 2011-09-02 Richard Sandiford <richard.sandiford@linaro.org>
1787 * config/rs6000/rs6000.c (paired_expand_vector_init): Check for
1788 valid CONST_VECTOR operands.
1789 (rs6000_expand_vector_init): Likewise.
1791 2011-09-02 Martin Jambor <mjambor@suse.cz>
1793 * cgraph.h (cgraph_indirect_call_info): Removed field thunk_delta.
1794 * gimple-fold.c (gimple_get_virt_method_for_binfo): Rewritten to use
1795 BINFO_VTABLE. Parameter delta removed, all callers updated.
1796 * tree.c (free_lang_data_in_binfo): Clear BINFO_VIRTUALs instead
1798 * cgraph.c (cgraph_make_edge_direct): Removed parameter delta, updated
1800 * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Removed
1801 handling of thunk_delta.
1802 * ipa-cp.c (get_indirect_edge_target): Removed parameter delta.
1803 (devirtualization_time_bonus): Do not handle thunk deltas.
1804 (ipcp_discover_new_direct_edges): Likewise.
1805 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1806 (try_make_edge_direct_simple_call): Likewise.
1807 (try_make_edge_direct_virtual_call): Likewise.
1808 * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise. Mark
1809 parameter set as unused.
1810 (output_edge_opt_summary): Likewise. Mark both parameters as unused.
1811 * lto-cgraph.c (output_cgraph_opt_summary_p): Likewise. Mark
1812 parameter set as unused.
1813 (output_edge_opt_summary): Likewise. Mark both parameters as unused.
1814 (input_edge_opt_summary): Likewise.
1815 * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not stream
1816 BINFO_VIRTUALS at all.
1817 * lto-streamer-in.c (lto_input_ts_binfo_tree_pointers): Likewise.
1819 2011-09-02 Richard Guenther <rguenther@suse.de>
1821 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Do not fold alloca (0).
1822 (ccp_fold_stmt): Continue replacing args when folding alloca fails.
1824 2011-08-31 Richard Guenther <rguenther@suse.de>
1826 * expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
1827 handling here, from ...
1828 (expand_expr_real_1): ... here.
1829 * gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR
1831 * gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR
1832 a GIMPLE_TERNARY_RHS.
1833 * tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR
1834 and VEC_COND_EXPR here ...
1835 (verify_gimple_assign_single): ... not here.
1836 * gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding.
1837 * tree-object-size.c (cond_expr_object_size): Adjust.
1838 (collect_object_sizes_for): Likewise.
1839 * tree-scalar-evolution.c (interpret_expr): Don't handle ternary RHSs.
1840 * tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and simplify.
1841 (ssa_forward_propagate_and_combine): Adjust.
1842 * tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
1844 * tree-ssa-threadedge.c (fold_assignment_stmt): Adjust.
1845 * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
1846 * tree-vect-stmt.c (vectorizable_condition): Likewise.
1847 * tree-vrp.c (extract_range_from_cond_expr): Likewise.
1848 (extract_range_from_assignment): Likewise.
1850 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
1852 * config/i386/i386.md: Use (match_test ...) for attribute tests.
1853 * config/i386/mmx.md: Likewise.
1854 * config/i386/sse.md: Likewise.
1855 * config/i386/predicates.md (call_insn_operand): Use
1856 (not (match_test "...")) instead of (match_test "!...")
1857 * config/i386/constraints.md (w): Likewise.
1859 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
1861 * doc/md.texi: Describe the use of match_tests in attribute tests.
1862 * rtl.def (MATCH_TEST): Update commentary.
1863 * genattrtab.c (attr_copy_rtx, check_attr_test, clear_struct_flag)
1864 (write_test_expr, walk_attr_value): Handle MATCH_TEST.
1866 2011-08-31 Richard Sandiford <rdsandiford@googlemail.com>
1868 * genattrtab.c (attr_rtx_1): Hash SYMBOL_REFs.
1869 (attr_string): Use copy_md_ptr_loc.
1871 2011-08-31 Martin Jambor <mjambor@suse.cz>
1874 * ipa-inline-analysis.c (compute_inline_parameters): Set
1875 can_change_signature of noes with typde attributes.
1876 * ipa-split.c (split_function): Do not skip any arguments if
1877 can_change_signature is set.
1879 2011-08-31 Martin Jambor <mjambor@suse.cz>
1881 * cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Alias
1884 2011-08-31 Richard Guenther <rguenther@suse.de>
1886 * fold-const.c (extract_muldiv_1): Remove bogus TYPE_IS_SIZETYPE
1889 2011-08-31 Marc Glisse <marc.glisse@inria.fr>
1891 * doc/generic.texi (Types for C++): CP_TYPE_QUALS -> cp_type_quals.
1893 2011-08-31 Tom de Vries <tom@codesourcery.com>
1896 * Makefile.in (tree-ssa-ccp.o): Add $(PARAMS_H) to rule.
1897 * tree-ssa-ccp.c (params.h): Include.
1898 (fold_builtin_alloca_for_var): New function.
1899 (ccp_fold_stmt): Use fold_builtin_alloca_for_var.
1901 2011-08-30 Uros Bizjak <ubizjak@gmail.com>
1903 * config/i386/i386.c (ix86_valid_target_attribute_inner_p):
1906 2011-08-30 Andrew Stubbs <ams@codesourcery.com>
1908 * config/arm/arm.c (optimal_immediate_sequence_1): Make b1, b2,
1911 2011-08-30 Andrew Stubbs <ams@codesourcery.com>
1913 * config/arm/arm.c (arm_gen_constant): Set can_negate correctly
1916 2011-08-30 Richard Guenther <rguenther@suse.de>
1919 * gimple.h (maybe_fold_offset_to_address): Remove.
1920 (maybe_fold_offset_to_reference): Likewise.
1921 (maybe_fold_stmt_addition): Likewise.
1922 (may_propagate_address_into_dereference): Likewise.
1923 * tree-inline.c (remap_gimple_op_r): Do not reconstruct
1925 * gimple-fold.c (canonicalize_constructor_val): Likewise.
1926 Canonicalize invariant POINTER_PLUS_EXPRs to invariant MEM_REF
1928 (may_propagate_address_into_dereference): Remove.
1929 (maybe_fold_offset_to_array_ref): Likewise.
1930 (maybe_fold_offset_to_reference): Likewise.
1931 (maybe_fold_offset_to_address): Likewise.
1932 (maybe_fold_stmt_addition): Likewise.
1933 (fold_gimple_assign): Do not reconstruct array references but
1934 instead canonicalize invariant POINTER_PLUS_EXPRs to invariant
1936 (gimple_fold_stmt_to_constant_1): Likewise.
1937 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1938 * gimplify.c (gimplify_conversion): Likewise.
1939 (gimplify_expr): Likewise.
1941 2011-08-30 Ilya Tocar <ilya.tocar@intel.com>
1943 * config/i386/fmaintrin.h: New.
1944 * config.gcc: Add fmaintrin.h.
1945 * config/i386/i386.c
1946 (enum ix86_builtins) <IX86_BUILTIN_VFMADDSS3>: New.
1947 <IX86_BUILTIN_VFMADDSD3>: Likewise.
1948 * config/i386/sse.md (fmai_vmfmadd_<mode>): New.
1949 (*fmai_fmadd_<mode>): Likewise.
1950 (*fmai_fmsub_<mode>): Likewise.
1951 (*fmai_fnmadd_<mode>): Likewise.
1952 (*fmai_fnmsub_<mode>): Likewise.
1953 * config/i386/immintrin.h: Add fmaintrin.h.
1955 2011-08-30 Bernd Schmidt <bernds@codesourcery.com>
1957 * genautomata.c (NO_COMB_OPTION): New macro.
1958 (no_comb_flag): New static variable.
1959 (gen_automata_option): Handle NO_COMB_OPTION.
1960 (comb_vect_p): False if no_comb_flag.
1961 (add_vect): Move computation of min/max values. Return early if
1963 * doc/md.texi (automata_option): Document no-comb-vect.
1965 * config/i386/i386.c (get_pc_thunk_name): Change prefix to
1966 "__x86.get_pc_thunk".
1968 * bb-reorder.c (insert_section_boundary_note): Only do it if
1969 we reordered the blocks; i.e. not if !optimize_function_for_speed_p.
1971 2011-08-30 Christian Bruel <christian.bruel@st.com>
1973 * coverage.c (coverage_init): Check flag_branch_probabilities instead of
1976 2011-08-29 Michael Meissner <meissner@linux.vnet.ibm.com>
1978 * config/rs6000/rs6000.opt (-msave-toc-indirect): Change default
1979 to off. Document switch.
1980 * doc/invoke.texi (-msave-toc-indirect): Ditto.
1982 2011-08-29 Jakub Jelinek <jakub@redhat.com>
1984 * gthr-posix.h (__gthread_active_p): Do not use preprocessor
1985 conditionals and comments inside macro arguments.
1987 2011-08-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
1988 Richard Guenther <rguenther@suse.de>
1990 * tree.h (constant_boolean_node): Adjust prototype.
1991 * fold-const.c (fold_convert_loc): Move aggregate conversion
1993 (constant_boolean_node): Make value parameter boolean, add
1994 vector type handling.
1995 (fold_unary_loc): Use constant_boolean_node.
1996 (fold_binary_loc): Preserve types properly when folding
1997 COMPLEX_EXPR <__real x, __imag x>.
1998 * gimplify.c (gimplify_expr): Handle vector comparison.
1999 * tree.def (EQ_EXPR, ...): Document behavior on vector typed
2001 * tree-cfg.c (verify_gimple_comparison): Verify vector typed
2004 2011-08-29 Jakub Jelinek <jakub@redhat.com>
2007 * emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
2008 reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
2009 (verify_rtl_sharing): Likewise and verify_rtx_sharing
2011 (unshare_all_rtl_in_chain): For CALL_INSNs
2012 copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.
2014 2011-08-29 Richard Guenther <rguenther@suse.de>
2016 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location
2017 on the built ADDR_EXPR.
2019 2011-08-29 Jakub Jelinek <jakub@redhat.com>
2022 * var-tracking.c (create_entry_value): Call cselib_lookup_from_insn
2023 before adding ENTRY_VALUE to val->locs.
2025 2011-08-28 Mikael Pettersson <mikpe@it.uu.se>
2028 * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Initialize
2031 2011-08-27 Bernd Schmidt <bernds@codesourcery.com>
2033 * doc/rtl.texi (simple_return): Document.
2034 (parallel, PATTERN): Here too.
2035 * doc/md.texi (return): Mention it's allowed to expand to simple_return
2037 (simple_return): Document standard pattern.
2038 * gengenrtl.c (special_rtx): SIMPLE_RETURN is special.
2039 * final.c (final_scan_insn): Use ANY_RETURN_P on body.
2040 * reorg.c (function_return_label, function_simple_return_label):
2041 New static variables, replacing...
2042 (end_of_function_label): ... this.
2043 (simplejump_or_return_p): New static function.
2044 (optimize_skip, steal_delay_list_from_fallthrough,
2045 fill_slots_from_thread): Use it.
2046 (relax_delay_slots): Likewise. Use ANY_RETURN_P on body.
2047 (rare_destination, follow_jumps): Use ANY_RETURN_P on body.
2048 (find_end_label): Take a new arg which is one of the two return
2049 rtxs. Depending on which, set either function_return_label or
2050 function_simple_return_label. All callers changed.
2051 (make_return_insns): Make both kinds.
2052 (dbr_schedule): Adjust for two kinds of end labels.
2053 * function.c (emit_return_into_block): Set JUMP_LABEL properly.
2054 * genemit.c (gen_exp): Handle SIMPLE_RETURN.
2055 (gen_expand, gen_split): Use ANY_RETURN_P.
2056 * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
2057 * rtl.def (SIMPLE_RETURN): New code.
2058 * ifcvt.c (find_if_case_1): Be more careful about
2059 redirecting jumps to the EXIT_BLOCK.
2060 * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
2061 returnjump_p_1): Handle SIMPLE_RETURNs.
2062 * print-rtl.c (print_rtx): Likewise.
2063 * rtl.c (copy_rtx): Likewise.
2064 * bt-load.c (compute_defs_uses_and_gen): Use ANY_RETURN_P.
2065 * combine.c (simplify_set): Likewise.
2066 * resource.c (find_dead_or_set_registers, mark_set_resources):
2068 * emit-rtl.c (verify_rtx_sharing, classify_insn, copy_insn_1,
2069 copy_rtx_if_shared_1, mark_used_flags): Handle SIMPLE_RETURNs.
2070 (init_emit_regs): Initialize simple_return_rtx.
2071 * cfglayout.c (fixup_reorder_chain): Pass a JUMP_LABEL to
2072 force_nonfallthru_and_redirect.
2073 * rtl.h (ANY_RETURN_P): Allow SIMPLE_RETURN.
2074 (GR_SIMPLE_RETURN): New enum value.
2075 (simple_return_rtx): New macro.
2076 * basic-block.h (force_nonfallthru_and_redirect): Adjust
2078 * cfgrtl.c (force_nonfallthru_and_redirect): Take a new jump_label
2079 argument. All callers changed. Be careful about what kinds of
2080 returnjumps to generate.
2081 * config/i386/3i86.c (ix86_pad_returns, ix86_count_insn_bb,
2082 ix86_pad_short_function): Likewise.
2083 * config/arm/arm.c (arm_final_prescan_insn): Handle both kinds
2085 * config/mips/mips.md (any_return): New code_iterator.
2086 (optab): Add cases for return and simple_return.
2087 (return): Expand to a simple_return.
2088 (simple_return): New pattern.
2089 (*<optab>, *<optab>_internal for any_return): New patterns.
2090 (return_internal): Remove.
2091 * config/mips/mips.c (mips_expand_epilogue): Make the last insn
2092 a simple_return_internal.
2094 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
2096 * config/i386/sse.md (*absneg<mode>2): Fix split condition.
2097 (vec_extract_lo_<mode>): Prevent both operands in memory.
2098 (vec_extract_lo_v16hi): Ditto.
2099 (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.
2101 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
2103 * config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note.
2104 (*sse2_mulv4si3): Ditto.
2106 * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
2109 2011-08-27 Uros Bizjak <ubizjak@gmail.com>
2112 * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note
2113 when all outputs are unused.
2114 (sse4_2_pcmpistr): Ditto.
2116 2011-08-26 Uros Bizjak <ubizjak@gmail.com>
2118 * config/i386/i386.md (round<mode>2): New expander.
2119 * config/i386/i386.c (enum ix86_builtins): Add
2120 IX86_BUILTIN_ROUND{PS,PD}_AZ{,256}.
2121 (struct builtin_description): Add __builtin_ia32_round{ps,pd}_az{,256}
2123 (ix86_builtin_vectorized_function): Handle BUILT_IN_ROUND{,F} builtins.
2124 (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor.
2126 2011-08-26 Uros Bizjak <ubizjak@gmail.com>
2129 * convert.c (convert_to_integer) <BUIT_IN_ROUND{,F,L}>: Convert
2130 only when TARGET_C99_FUNCTIONS.
2131 <BUILT_IN_NEARBYINT{,F,L}>: Ditto.
2132 <BUILT_IN_RINT{,F,L}>: Ditto.
2134 2011-08-26 Michael Matz <matz@suse.de>
2135 Jakub Jelinek <jakub@redhat.com>
2138 * lto-streamer-in.c (canon_file_name): Initialize new_slot->len;
2139 don't call strlen twice, use memcpy.
2141 2011-08-26 H.J. Lu <hongjiu.lu@intel.com>
2143 * config/i386/bmi2intrin.h: Allow in <immintrin.h>.
2144 * config/i386/bmiintrin.h: Likewise.
2145 * config/i386/lzcntintrin.h: Likewise.
2147 * config/i386/immintrin.h: Include <lzcntintrin.h>,
2148 <bmiintrin.h> and <bmi2intrin.h>.
2150 2011-08-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2153 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main.
2154 * configure: Regenerate.
2156 2011-08-26 Jakub Jelinek <jakub@redhat.com>
2159 * c-typeck.c (c_process_expr_stmt): Skip over nops and
2160 call mark_exp_read even if exprv is ADDR_EXPR.
2162 2011-08-26 Richard Sandiford <richard.sandiford@linaro.org>
2164 * df-problems.c (df_note_bb_compute): Pass uses rather than defs
2165 to df_set_dead_notes_for_mw.
2167 2011-08-26 Richard Guenther <rguenther@suse.de>
2169 * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
2171 2011-08-26 Zdenek Dvorak <ook@ucw.cz>
2172 Tom de Vries <tom@codesourcery.com>
2174 * tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field.
2175 (struct ivopts_data): Add loop_single_exit_p field.
2176 (niter_for_exit): Change parameter desc_p into return value. Return
2177 desc if desc->may_be_zero. Free desc if unused.
2178 (niter_for_single_dom_exit): Change return type.
2179 (find_induction_variables): Handle changed return type of
2180 niter_for_single_dom_exit. Dump may_be_zero.
2181 (add_candidate_1): Keep original base and step type for IP_ORIGINAL.
2182 (set_use_iv_cost): Add and handle comp parameter.
2183 (determine_use_iv_cost_generic, determine_use_iv_cost_address): Add
2184 comp argument to set_use_iv_cost.
2185 (strip_wrap_conserving_type_conversions, expr_equal_p)
2186 (difference_cannot_overflow_p, iv_elimination_compare_lt): New function.
2187 (may_eliminate_iv): Add comp parameter. Handle new return type of
2188 niter_for_exit. Use loop_single_exit_p. Use iv_elimination_compare_lt.
2189 (determine_use_iv_cost_condition): Add comp argument to set_use_iv_cost
2190 and may_eliminate_iv.
2191 (rewrite_use_compare): Move call to iv_elimination_compare to ...
2192 (may_eliminate_iv): Here.
2193 (tree_ssa_iv_optimize_loop): Initialize loop_single_exit_p.
2195 2011-08-26 Tom de Vries <tom@codesourcery.com>
2197 * tree-pretty-print (dump_generic_node): Test for NULL_TREE before
2198 accessing TREE_TYPE.
2200 2011-08-26 Jiangning Liu <jiangning.liu@arm.com>
2202 * config/arm/arm.md (*ior_scc_scc): Enable for Thumb2 as well.
2203 (*ior_scc_scc_cmp): Likewise
2204 (*and_scc_scc): Likewise.
2205 (*and_scc_scc_cmp): Likewise.
2206 (*and_scc_scc_nodom): Likewise.
2207 (*cmp_ite0, *cmp_ite1, *cmp_and, *cmp_ior): Handle Thumb2.
2209 2011-08-26 Jakub Jelinek <jakub@redhat.com>
2211 * rtlanal.c (nonzero_bits1): Handle CLRSB.
2213 2011-08-26 Richard Guenther <rguenther@suse.de>
2215 * expr.c (string_constant): Handle &MEM_REF.
2217 2011-08-26 Andrew Stubbs <ams@codesourcery.com>
2219 * config/arm/arm.c (struct four_ints): New type.
2220 (count_insns_for_constant): Delete function.
2221 (find_best_start): Delete function.
2222 (optimal_immediate_sequence): New function.
2223 (optimal_immediate_sequence_1): New function.
2224 (arm_gen_constant): Move constant splitting code to
2225 optimal_immediate_sequence.
2226 Rewrite constant negation/invertion code.
2228 2011-08-26 Andrew Stubbs <ams@codesourcery.com>
2230 * config/arm/arm-protos.h (const_ok_for_op): Add prototype.
2231 * config/arm/arm.c (const_ok_for_op): Add support for addw/subw.
2232 Remove prototype. Remove static function type.
2233 * config/arm/arm.md (*arm_addsi3): Add addw/subw support.
2235 * config/arm/constraints.md (Pj, PJ): New constraints.
2237 2011-08-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2239 * config/arm/cortex-a9.md ("cortex_a9_mult_long"): New.
2240 ("cortex_a9_multiply_long"): New and use above. Handle all
2241 long multiply cases.
2242 ("cortex_a9_multiply"): Handle smmul and smmulr.
2243 ("cortex_a9_mac"): Handle smmla.
2245 2011-08-25 Richard Henderson <rth@redhat.com>
2249 * cfgcleanup.c (old_insns_match_p): Don't allow cross-jump for
2250 non-constant stack adjutment.
2251 * expr.c (find_args_size_adjust): Break out from ...
2252 (fixup_args_size_notes): ... here.
2253 * rtl.h (find_args_size_adjust): Declare.
2255 2011-08-25 Uros Bizjak <ubizjak@gmail.com>
2257 * config/i386/i386.md (isa): Add sse2, sse2_noavx, sse3,
2258 sse4 and sse4_noavx.
2259 (enabled): Handle sse2, sse2_noavx, sse3, sse4 and sse4_noavx.
2260 (*pushdf_rex64): Change Y2 register constraint to x.
2261 (*movdf_internal_rex64): Ditto.
2262 (*zero_extendsidi2_rex64): Ditto.
2263 (*movdi_internal): Change Y2 register constraint to x
2264 and update "isa" attribute.
2266 (*movdf internal): Ditto.
2267 (zero_extendsidi2_1): Ditto.
2268 (*truncdfdf_mixed): Ditto.
2269 (*truncxfdf2_mixed): Ditto.
2270 * config/i386/mmx.md (*mov<mode>_internal_rex64): Change Y2
2271 register constraint to x.
2272 (*movv2sf_internal_rex64): Ditto.
2273 (*mov<mode>_internal): Change Y2 register constraint to x
2274 and add "isa" attribute.
2275 (*movv2sf_internal): Ditto.
2276 (*vec_extractv2si_1): Ditto.
2277 * config/i386/sse.md ("vec_set<mode>_0): Change Y2 and Y4 register
2278 constraints to x and update "isa" attribute.
2279 (*vec_interleave_highv2df): Change Y3 registerconstraint
2280 to x and update "isa" attribute.
2281 (*vec_interleave_lowv2df): Ditto.
2282 (*vec_concatv2df): Change Y2 register constraint to x and
2283 update "isa" attribute.
2284 (sse2_loadld): Ditto.
2285 (*vec_extractv2di_1): Ditto.
2286 (*vec_dupv4si): Ditto.
2287 (*vec_dupv2di): Ditto.
2288 (*vec_concatv4si): Ditto.
2289 (vec_concatv2di): Ditto.
2290 * config/i386/constraints.md (Y2): Remove.
2294 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
2296 * regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use,
2297 dump_def_use_chain): Don't declare.
2298 (mark_conflict, create_new_chain): Move before users.
2299 (regrename_optimize): Move to near end of file.
2301 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
2303 * config/avr-protos.h (byte_immediate_operand): Remove Prototype.
2304 (secondary_input_reload_class): Remove Prototype.
2305 * config/avr/avr.c (byte_immediate_operand): Remove Function.
2306 * config/avr/avr.md (setmemhi): Use u8_operand.
2307 (strlenhi): Use const0_rtx for comparison.
2308 * config/avr/avr.h (avr_reg_order): Remove Declaration.
2310 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
2312 * config/avr/avr.c (reg_class_tab): Make local to
2313 avr_regno_reg_class. Return smallest register class available.
2315 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
2317 * config/avr/avr.c (STR_PREFIX_P): New Define.
2318 (avr_asm_declare_function_name): Use it.
2319 (avr_asm_named_section): Use it.
2320 (avr_section_type_flags): Use it.
2322 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
2324 * doc/md.texi (automata_option): Document collapse-ndfa.
2325 * genautomata.c (COLLAPSE_OPTION): New macro.
2326 (collapse_flag): New static variable.
2327 (struct description): New member normal_decls_num.
2328 (struct automaton): New members advance_ainsn and collapse_ainsn.
2329 (gen_automata_option): Check for COLLAPSE_OPTION.
2330 (collapse_ndfa_insn_decl): New static variable.
2331 (add_collapse_ndfa_insn_decl, special_decl_p): New functions.
2332 (find_arc): If insn is the collapse-ndfa insn, accept any arc we find.
2333 (transform_insn_regexps): Call add_collapse_ndfa_insn_decl if
2334 necessary. Use normal_decls_num rather than decls_num, remove
2335 test for special decls.
2336 (create_alt_states, form_ainsn_with_same_reservs): Use special_decl_p.
2337 (make_automaton); Likewise. Use the new advance_cycle_insn member
2338 of struct automaton.
2339 (create_composed_state): Disallow advance-cycle arcs if collapse_flag
2341 (NDFA_to_DFA): Don't create composed states for the collapse-ndfa
2342 transition. Create the necessary transitions for it.
2343 (create_ainsns): Return void. Take an automaton_t argument, and
2344 update its ainsn_list, advance_ainsn and collapse_ainsn members. All
2346 (COLLAPSE_NDFA_VALUE_NAME): New macro.
2347 (output_tables): Output code to define it.
2348 (output_internal_insn_code_evaluation): Output code to accept
2349 const0_rtx as collapse-ndfa transition.
2350 (output_default_latencies, output_print_reservation_func,
2351 output_print_description): Reorganize loops to use normal_decls_num
2352 as loop bound; remove special case for advance_cycle_insn_decl.
2353 (initiate_automaton_gen): Handle COLLAPSE_OPTION.
2354 (check_automata_insn_issues): Check for collapse_ainsn.
2355 (expand_automate): Allocate sufficient space. Initialize
2358 2011-08-25 Georg-Johann Lay <avr@gjlay.de>
2360 * config/avr/avr.md: Fix indentation from r177991.
2362 2011-08-25 Bernd Schmidt <bernds@codesourcery.com>
2364 * regrename.c (struct du_head): Remove member terminated.
2365 (create_new_chain): Don't initialize it.
2366 (scan_rtx_reg): Don't set or test it, test the open_chains_set
2368 (tick, this_tick): New global variables, moved out of
2370 (current_id, open_chains, closed_chains, open_chains_set,
2371 live_in_chains, live_hard_regs): Reorder declarations.
2372 (dump_def_use_chain): Move function earlier in the file.
2373 (rename_chains): New static function, broken out of
2375 (regrename_optimize): Use it. Remove #if 0'ed code.
2377 2011-08-25 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2379 * varasm.c: (default_binds_local_p_1): Commentary typo fix.
2381 2011-08-24 H.J. Lu <hongjiu.lu@intel.com>
2384 * config/i386/i386.c (ix86_expand_builtin): Convert to Pmode if needed.
2386 2011-08-24 Richard Guenther <rguenther@suse.de>
2388 * tree-data-ref.c (dr_analyze_indices): Avoid unsharing the
2389 ref in the basic-block case. Move stripping array-refs
2390 to the place we create an access-function for it. Remove
2391 bogus stripping down a MEM_REF to its base.
2393 2011-08-24 Richard Guenther <rguenther@suse.de>
2395 * fold-const.c (fold_comparison): Fold &a < &a + 4 even
2396 with -fno-strict-overflow.
2398 2011-08-24 Richard Guenther <rguenther@suse.de>
2400 * tree-vectorizer.c (vect_print_dump_info): Avoid the
2401 file and location clutter when dumping to dump files.
2403 2011-08-24 Simon Baldwin <simonb@google.com>
2405 * gengtype-state.c (write_state): Remove timestamped header line.
2407 2011-08-24 Joseph Myers <joseph@codesourcery.com>
2409 * Makefile.in (CFLAGS-collect2.o, CFLAGS-c-family/c-opts.o)
2410 (CFLAGS-c-family/c-pch.o, CFLAGS-prefix.o, CFLAGS-version.o)
2411 (CFLAGS-lto-compress.o, CFLAGS-toplev.o, CFLAGS-intl.o)
2412 (CFLAGS-cppbuiltin.o, CFLAGS-cppdefault.o): New.
2413 (collect2.o, c-family/c-cppbuiltin.o, c-family/c-opts.o)
2414 (c-family/c-pch.o, prefix.o, version.o, lto-compress.o, toplev.o)
2415 (intl.o, cppbuiltin.o, cppdefault.o): Remove explicit compilation
2417 (lto-wrapper$(exeext)): Use $(LINKER) not $(COMPILER).
2419 2011-08-24 Joseph Myers <joseph@codesourcery.com>
2421 * Makefile.in (ALL_CXXFLAGS): Include $(CFLAGS-$@).
2423 2011-08-24 Richard Guenther <rguenther@suse.de>
2425 PR tree-optimization/50067
2426 * tree-data-ref.c (dr_analyze_indices): Do not add an access
2427 function for a MEM_REF base that has no evolution in the loop
2428 nest or that is not analyzable.
2430 2011-08-23 Vladimir Makarov <vmakarov@redhat.com>
2432 * ira.c (ira_init_register_move_cost): Check small subclasses
2433 through ira_reg_class_max_nregs and ira_available_class_regs.
2435 2011-08-23 Uros Bizjak <ubizjak@gmail.com>
2437 * config/i386/constraints.md (Yp): New register constraint.
2438 * config/i386/i386.md (*addhi_1): Merge with *addhi_1_lea using
2439 Yp register constraint.
2440 (*addqi_1): Merge with *addqi_1_lea using Yp register constraint.
2441 (*ashlhi3_1): Merge with *ashlhi3_1_lea using Yp register constraint.
2442 (*ashlqi3_1): Merge with *ashlqi3_1_lea using Yp register constraint.
2444 2011-08-23 Kirill Yukhin <kirill.yukhin@intel.com>
2446 * config/i386/sse.md (<s>mul<mode>3_highpart): Update.
2448 2011-08-23 Mark Heffernan <meheff@google.com>
2451 * common.opt (Wfree-nonheap-object): New option.
2452 * doc/invoke.texi (Warning options): Document -Wfree-nonheap-object.
2453 * builtins.c (maybe_emit_free_warning): Add OPT_Wfree_nonheap_object
2455 (expand_builtin): Make warning conditional.
2457 2011-08-23 Uros Bizjak <ubizjak@gmail.com>
2459 * config/i386/i386.md (type): Add imulx, ishiftx and rotatex.
2460 (length_immediate): Handle imulx, ishiftx and rotatex.
2463 (enabled): Handle bmi2.
2464 (*mul<mode><dwi>3): Split from *<u>mul<mode><dwi>3.
2465 (*umul<mode><dwi>3): Ditto. Add imulx BMI2 alternative.
2466 (*bmi2_umulditi3_1): New insn pattern.
2467 (*bmi2_umulsidi3_1): Ditto.
2468 (*umul<mode><dwi>3 splitter): New splitter to avoid flags dependency.
2469 (*bmi2_ashl<mode>3_1): New insn pattern.
2470 (*ashl<mode>3_1): Add ishiftx BMI2 alternative.
2471 (*ashl<mode>3_1 splitter): New splitter to avoid flags dependency.
2472 (*bmi2_ashlsi3_1_zext): New insn pattern.
2473 (*ashlsi3_1_zext): Add ishiftx BMI2 alternative.
2474 (*ashlsi3_1_zext splitter): New splitter to avoid flags dependency.
2475 (*bmi2_<shiftrt_insn><mode>3_1): New insn pattern.
2476 (*<shiftrt_insn><mode>3_1): Add ishiftx BMI2 alternative.
2477 (*<shiftrt_insn><mode>3_1 splitter): New splitter to avoid
2479 (*bmi2_<shiftrt_insn>si3_1_zext): New insn pattern.
2480 (*<shiftrt_insn>si3_1_zext): Add ishiftx BMI2 alternative.
2481 (*<shiftrt_insn>si3_1_zext splitter): New splitter to avoid
2483 (*bmi2_rorx<mode>3_1): New insn pattern.
2484 (*<rotate_insn><mode>3_1): Add rotatex BMI2 alternative.
2485 (*rotate<mode>3_1 splitter): New splitter to avoid flags dependency.
2486 (*rotatert<mode>3_1 splitter): Ditto.
2487 (*bmi2_rorxsi3_1_zext): New insn pattern.
2488 (*<rotate_insn>si3_1_zext): Add rotatex BMI2 alternative.
2489 (*rotatesi3_1_zext splitter): New splitter to avoid flags dependency.
2490 (*rotatertsi3_1_zext splitter): Ditto.
2492 2011-08-23 Kirill Yukhin <kirill.yukhin@intel.com>
2494 * common/config/i386/i386-common.c (OPTION_MASK_ISA_BMI2_SET): New.
2495 (OPTION_MASK_ISA_BMI2_UNSET): Likewise.
2496 (ix86_handle_option): Handle OPT_mbmi2 case.
2497 * config.gcc (i[34567]86-*-*): Add bmi2intrin.h.
2498 (x86_64-*-*): Likewise.
2499 * config/i386/bmi2intrin.h: New file.
2500 * config/i386/cpuid.h (bit_BMI2): New.
2501 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2503 * config/i386/i386-c.c (ix86_target_macros_internal):
2504 Conditionally define __BMI2__.
2505 * config/i386/i386.c (ix86_option_override_internal): Define PTA_BMI2.
2507 (ix86_valid_target_attribute_inner_p): Handle BMI2 option.
2508 (print_reg): New code.
2509 (ix86_print_operand): Likewise.
2510 (ix86_builtins): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
2511 IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
2512 IX86_BUILTIN_PEXT64.
2513 (bdesc_args): Add IX86_BUILTIN_BZHI32, IX86_BUILTIN_BZHI64,
2514 IX86_BUILTIN_PDEP32, IX86_BUILTIN_PDEP64, IX86_BUILTIN_PEXT32,
2515 IX86_BUILTIN_PEXT64.
2516 * config/i386/i386.h (TARGET_BMI2): New.
2517 * config/i386/i386.md (UNSPEC_PDEP): New.
2518 (UNSPEC_PEXT): Likewise.
2519 (*bmi2_bzhi_<mode>3): Likewise.
2520 (*bmi2_pdep_<mode>3): Likewise.
2521 (*bmi2_pext_<mode>3): Likewise.
2522 * config/i386/i386.opt (mbmi2): New.
2523 * config/i386/x86intrin.h: Include bmi2intrin.h when __BMI2__
2525 * doc/extend.texi: Document BMI2 built-in functions.
2526 * doc/invoke.texi: Document -mbmi2.
2528 2011-08-23 Jakub Jelinek <jakub@redhat.com>
2531 * simplify-rtx.c (simplify_const_unary_operation): If
2532 op is CONST_INT, don't look at op_mode, but use instead mode.
2533 * optabs.c (add_equal_note): For FFS, CLZ, CTZ,
2534 CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for
2535 operation and TRUNCATE/ZERO_EXTEND if needed.
2536 * doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap):
2537 Document that operand mode must be same as operation mode,
2539 * config/avr/avr.md (paritysi2, *parityqihi2.libgcc,
2540 *paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc,
2541 *popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2,
2542 *ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops
2543 use the mode of operand for the operation and add truncate
2544 or zero_extend around if needed.
2545 * config/c6x/c6x.md (ctzdi2): Likewise.
2546 * config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise.
2548 2011-08-12 Michael Matz <matz@suse.de>
2550 * cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
2551 (gimple_expand_cfg): Merge alignment info for coalesced pointer
2554 2011-08-23 Richard Guenther <rguenther@suse.de>
2556 * Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
2557 * tree-affine.h (aff_comb_cannot_overlap_p): Declare.
2558 * tree-affine.c (aff_comb_cannot_overlap_p): New function, moved
2560 * tree-ssa-loop-im.c (cannot_overlap_p): ... here.
2561 (mem_refs_may_alias_p): Adjust.
2562 * tree-data-ref.h (dr_may_alias_p): Adjust.
2563 * tree-data-ref.c: Include tree-affine.h.
2564 (dr_analyze_indices): Do nothing for the non-loop case.
2565 (dr_may_alias_p): Distinguish loop and non-loop case. Disambiguate
2566 more cases in the non-loop case.
2567 * graphite-sese-to-poly.c (write_alias_graph_to_ascii_dimacs): Adjust
2568 calls to dr_may_alias_p.
2569 (write_alias_graph_to_ascii_ecc): Likewise.
2570 (write_alias_graph_to_ascii_dot): Likewise.
2571 (build_alias_set_optimal_p): Likewise.
2573 2011-08-23 Richard Guenther <rguenther@suse.de>
2575 PR tree-optimization/50162
2576 * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
2578 2011-08-23 Richard Guenther <rguenther@suse.de>
2580 * tree-data-ref.c (dr_analyze_indices): Add comments, handle
2581 REALPART_EXPR and IMAGPART_EXPR similar to ARRAY_REFs.
2582 (create_data_ref): Also dump access functions for the created data-ref.
2584 2011-08-22 Uros Bizjak <ubizjak@gmail.com>
2585 Kirill Yukhin <kirill.yukhin@intel.com>
2588 * config/i386/sse.md (VI_AVX2): New.
2589 (<plusminus_insn><mode>3): Use VI_AVX2 mode iterator.
2590 (*<plusminus_insn><mode>3): Ditto.
2591 (<sse2_avx2>_andnot<mode>3): Ditto.
2592 (*andnot<mode>3): Fix order of cond operands.
2593 Add asserts for correct TARGET_xxx.
2594 (*<any_logic:code><mode>3): Ditto.
2596 2011-08-22 Anatoly Sokolov <aesok@post.ru>
2598 * config/m32c/m32c.h (CLASS_MAX_NREGS): Remove macro.
2599 * config/m32c/m32c-protos.h (m32c_class_max_nregs): Remove.
2600 * config/m32c/m32c.c (m32c_class_max_nregs): Make static. Change
2601 regclass argument type to reg_class_t. Change 'max' and 'v' vars
2602 and return types to unsigned char. Use reg_class_contents instead
2604 (TARGET_CLASS_MAX_NREGS): Define.
2606 2011-08-22 Bernd Schmidt <bernds@codesourcery.com>
2608 * config/c6x/c6x.md (indirect_jump_shadow): Tweak representation
2609 to make computed_jump_p return true.
2611 2011-08-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2613 * configure.ac (GCC_PICFLAG_FOR_TARGET): Call it.
2614 (PICFLAG_FOR_TARGET): Substitute.
2615 * aclocal.m4: Regenerate.
2616 * configure: Regenerate.
2618 2011-08-22 Dodji Seketeli <dodji@redhat.com>
2620 * c-family/c-pch.c (c_common_read_pch): Re-set line table right
2621 after reading in the pch.
2623 2011-08-22 H.J. Lu <hongjiu.lu@intel.com>
2625 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined.
2626 * configure: Regenerated.
2628 2011-08-22 Jakub Jelinek <jakub@redhat.com>
2630 PR tree-optimization/50133
2631 * tree-vect-stmts.c (vect_finish_stmt_generation): Copy location
2632 from stmt instead of some statement around gsi.
2635 * expr.c (get_bit_range): Only use DECL_THREAD_LOCAL_P if
2636 innerdecl is a VAR_DECL.
2638 2011-08-22 Kirill Yukhin <kirill.yukhin@intel.com>
2640 * config/i386/avx2intrin.h: New file.
2641 * config/i386/i386-builtin-types.def (PCINT, PCINT64, PV4SI,
2642 PV8SI, V32QI_FTYPE_V32QI, V32QI_FTYPE_V16QI, V16HI_FTYPE_V16HI,
2643 V16HI_FTYPE_V8HI, V8SI_FTYPE_V8SI, V16HI_FTYPE_V16QI,
2644 V8SI_FTYPE_V16QI, V4DI_FTYPE_V16QI, V8SI_FTYPE_V8HI,
2645 V4DI_FTYPE_V8HI, V4DI_FTYPE_V4SI, V4DI_FTYPE_PV4DI,
2646 V4DI_FTYPE_V2DI, V2DI_FTYPE_PCV2DI_V2DI, V4SI_FTYPE_PCV4SI_V4SI,
2647 V32QI_FTYPE_V16HI_V16HI, V16HI_FTYPE_V8SI_V8SI,
2648 V32QI_FTYPE_V32QI_V32QI, V16HI_FTYPE_V32QI_V32QI,
2649 V16HI_FTYPE_V16HI_V8HI, V16HI_FTYPE_V16HI_V16HI,
2650 V16HI_FTYPE_V16HI_INT, V16HI_FTYPE_V16HI_SI,
2651 V16HI_FTYPE_V16HI_V16HI_INT, V32QI_FTYPE_V32QI_V32QI_INT,
2652 V8SI_FTYPE_V8SI_V4SI, V8SI_FTYPE_V8SI_V8SI,
2653 V8SI_FTYPE_V16HI_V16HI, V8SI_FTYPE_V8SI_INT, V8SI_FTYPE_V8SI_SI,
2654 V8SI_FTYPE_PCV8SI_V8SI, V4DI_FTYPE_V4DI_V4DI,
2655 V4DI_FTYPE_V8SI_V8SI, V4DI_FTYPE_V4DI_V2DI,
2656 V4DI_FTYPE_PCV4DI_V4DI, V4DI_FTYPE_V4DI_INT,
2657 V2DI_FTYPE_V4DI_INT, V4DI_FTYPE_V4DI_V4DI_INT,
2658 V4DI_FTYPE_V4DI_V2DI_INT, VOID_FTYPE_PV2DI_V2DI_V2DI,
2659 VOID_FTYPE_PV4DI_V4DI_V4DI, VOID_FTYPE_PV4SI_V4SI_V4SI,
2660 VOID_FTYPE_PV8SI_V8SI_V8SI,
2661 V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
2662 V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_V4DF_INT,
2663 V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_V2DF_INT,
2664 V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_V4DF_INT,
2665 V4SF_FTYPE_V4SF_PCFLOAT_V4SI_V4SF_INT,
2666 V8SF_FTYPE_V8SF_PCFLOAT_V8SI_V8SF_INT,
2667 V4SF_FTYPE_V4SF_PCFLOAT_V2DI_V4SF_INT,
2668 V4SF_FTYPE_V4SF_PCFLOAT_V4DI_V4SF_INT,
2669 V2DI_FTYPE_V2DI_PCINT64_V4SI_V2DI_INT,
2670 V4DI_FTYPE_V4DI_PCINT64_V4SI_V4DI_INT,
2671 V2DI_FTYPE_V2DI_PCINT64_V2DI_V2DI_INT,
2672 V4DI_FTYPE_V4DI_PCINT64_V4DI_V4DI_INT,
2673 V4SI_FTYPE_V4SI_PCINT_V4SI_V4SI_INT,
2674 V8SI_FTYPE_V8SI_PCINT_V8SI_V8SI_INT,
2675 V4SI_FTYPE_V4SI_PCINT_V2DI_V4SI_INT,
2676 V4SI_FTYPE_V4SI_PCINT_V4DI_V4SI_INT,
2677 V16HI_FTYPE_V16HI_SI_COUNT, V16HI_FTYPE_V16HI_V8HI_COUNT,
2678 V8SI_FTYPE_V8SI_SI_COUNT, V8SI_FTYPE_V8SI_V4SI_COUNT,
2679 V4DI_FTYPE_V4DI_INT_COUNT, V4DI_FTYPE_V4DI_V2DI_COUNT,
2680 V4DI_FTYPE_V4DI_INT_CONVERT,
2681 V4DI_FTYPE_V4DI_V4DI_INT_CONVERT): New.
2682 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MPSADBW256,
2683 IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
2684 IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
2685 IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
2686 IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
2687 IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
2688 IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
2689 IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
2690 IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
2691 IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
2692 IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
2693 IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
2694 IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
2695 IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
2696 IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
2697 IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
2698 IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
2699 IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
2700 IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
2701 IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
2702 IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
2703 IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
2704 IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
2705 IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
2706 IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
2707 IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
2708 IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
2709 IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
2710 IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
2711 IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
2712 IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
2713 IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
2714 IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
2715 IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
2716 IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
2717 IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
2718 IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
2719 IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
2720 IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
2721 IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
2722 IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
2723 IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
2724 IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
2725 IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
2726 IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
2727 IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
2728 IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
2729 IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
2730 IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
2731 IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
2732 IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
2733 IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
2734 IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
2735 IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
2736 IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
2737 IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
2738 IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
2739 IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
2740 IX86_BUILTIN_MOVNTDQA256, IX86_BUILTIN_VBROADCASTSS_PS,
2741 IX86_BUILTIN_VBROADCASTSS_PS256,
2742 IX86_BUILTIN_VBROADCASTSD_PD256,
2743 IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
2744 IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
2745 IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
2746 IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
2747 IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
2748 IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
2749 IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
2750 IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
2751 IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
2752 IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
2753 IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
2754 IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
2755 IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256,
2756 IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
2757 IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
2758 IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
2759 IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
2760 IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI,
2761 IX86_BUILTIN_GATHERSIV2DF, IX86_BUILTIN_GATHERSIV4DF,
2762 IX86_BUILTIN_GATHERDIV2DF, IX86_BUILTIN_GATHERDIV4DF,
2763 IX86_BUILTIN_GATHERSIV4SF, IX86_BUILTIN_GATHERSIV8SF,
2764 IX86_BUILTIN_GATHERDIV4SF, IX86_BUILTIN_GATHERDIV8SF,
2765 IX86_BUILTIN_GATHERSIV2DI, IX86_BUILTIN_GATHERSIV4DI,
2766 IX86_BUILTIN_GATHERDIV2DI, IX86_BUILTIN_GATHERDIV4DI,
2767 IX86_BUILTIN_GATHERSIV4SI, IX86_BUILTIN_GATHERSIV8SI,
2768 IX86_BUILTIN_GATHERDIV4SI, IX86_BUILTIN_GATHERDIV8SI.
2769 (bdesc_special_args): Add IX86_BUILTIN_MOVNTDQA256,
2770 IX86_BUILTIN_MASKLOADD, IX86_BUILTIN_MASKLOADQ,
2771 IX86_BUILTIN_MASKLOADD256, IX86_BUILTIN_MASKLOADQ256,
2772 IX86_BUILTIN_MASKSTORED, IX86_BUILTIN_MASKSTOREQ,
2773 IX86_BUILTIN_MASKSTORED256, IX86_BUILTIN_MASKSTOREQ256.
2774 (bdesc_args): Add IX86_BUILTIN_MPSADBW256,
2775 IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
2776 IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
2777 IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
2778 IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
2779 IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
2780 IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
2781 IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
2782 IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
2783 IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
2784 IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
2785 IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
2786 IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
2787 IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
2788 IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
2789 IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
2790 IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
2791 IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
2792 IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
2793 IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
2794 IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
2795 IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
2796 IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
2797 IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
2798 IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
2799 IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
2800 IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
2801 IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
2802 IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
2803 IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
2804 IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
2805 IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
2806 IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
2807 IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
2808 IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
2809 IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
2810 IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
2811 IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
2812 IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
2813 IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
2814 IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
2815 IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
2816 IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
2817 IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
2818 IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
2819 IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
2820 IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
2821 IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
2822 IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
2823 IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
2824 IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
2825 IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
2826 IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
2827 IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
2828 IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
2829 IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
2830 IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
2831 IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
2832 IX86_BUILTIN_VBROADCASTSS_PS, IX86_BUILTIN_VBROADCASTSS_PS256,
2833 IX86_BUILTIN_VBROADCASTSD_PD256,
2834 IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
2835 IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
2836 IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
2837 IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
2838 IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
2839 IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
2840 IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
2841 IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
2842 IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
2843 IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
2844 IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
2845 IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
2846 IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
2847 IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI.
2848 (ix86_init_mmx_sse_builtins): Add IX86_BUILTIN_GATHERSIV2DF,
2849 IX86_BUILTIN_GATHERSIV4DF, IX86_BUILTIN_GATHERDIV2DF,
2850 IX86_BUILTIN_GATHERDIV4DF, IX86_BUILTIN_GATHERSIV4SF,
2851 IX86_BUILTIN_GATHERSIV8SF, IX86_BUILTIN_GATHERDIV4SF,
2852 IX86_BUILTIN_GATHERDIV8SF, IX86_BUILTIN_GATHERSIV2DI,
2853 IX86_BUILTIN_GATHERSIV4DI, IX86_BUILTIN_GATHERDIV2DI,
2854 IX86_BUILTIN_GATHERDIV4DI, IX86_BUILTIN_GATHERSIV4SI,
2855 IX86_BUILTIN_GATHERSIV8SI, IX86_BUILTIN_GATHERDIV4SI,
2856 IX86_BUILTIN_GATHERDIV8SI.
2857 (ix86_preferred_simd_mode): Support AVX2 modes.
2858 (ix86_expand_args_builtin): Support AVX2 builtins.
2859 (ix86_expand_special_args_builtin): Likewise.
2860 (ix86_expand_builtin): Likewise.
2861 * config/i386/i386.md (UNSPEC_VPERMSI): New.
2862 (UNSPEC_VPERMDF): Likewise.
2863 (UNSPEC_VPERMSF): Likewise.
2864 (UNSPEC_VPERMDI): Likewise.
2865 (UNSPEC_VPERMTI): Likewise.
2866 (UNSPEC_GATHER): Likewise.
2867 (ssemodesuffix): Extend.
2868 * config/i386/immintrin.h: Include avx2intrin.h when __AVX2__
2870 * config/i386/predicates.md (const1248_operand): New.
2871 * config/i386/sse.md (VI1_AVX2): New mode iterator.
2872 (VI2_AVX2): Likewise.
2873 (VI4_AVX2): Likewise.
2874 (VI8_AVX2): Likewise.
2875 (VIMAX_AVX2): Likewise.
2876 (SSESCALARMODE): Likewise.
2877 (VI12_AVX2): Likewise.
2878 (VI24_AVX2): Likewise.
2879 (VI124_AVX2): Likewise.
2880 (VI248_AVX2): Likewise.
2881 (VI48_AVX2): Likewise.
2882 (VI4SD_AVX2): Likewise.
2883 (V48_AVX2): Likewise.
2884 (AVX256MODE2P): Likewise.
2885 (AVXMODE48P_DI): Likewise.
2886 (sse2_avx2): New mode attribute.
2887 (ssse3_avx2): Likewise.
2888 (sse4_1_avx2): Likewise.
2889 (avx_avx2): Likewise.
2890 (ssebytemode): Likewise.
2891 (AVXTOSSEMODE): Likewise.
2892 (AVXMODE48P_DI): Likewise.
2893 (gthrfirstp): Likewise.
2894 (gthrlastp): Likewise.
2895 (lshift): New code_iterator
2896 (lshift): New code attribute.
2898 (ssescalarmodesuffix): Update.
2899 (sseunpackmode): Likewise.
2900 (ssepackmode): Likewise.
2901 (avx2_vec_dupv4sf): New insn pattern.
2902 (avx2_vec_dupv8sf): Likewise.
2903 (avx2_interleave_highv4di): Likewise.
2904 (avx2_interleave_lowv4di): Likewise.
2905 (avx2_umulv4siv4di3): Likewise
2906 (*avx2_umulv4siv4di3): Likewise
2907 (avx2_pmaddwd): Likewise.
2908 (*avx2_pmaddwd): Likewise.
2909 (avx2_lshrqv4di3): Likewise.
2910 (avx2_lshlqv4di3): Likewise.
2911 (avx2_lshl<mode>3): Likewise.
2912 (avx2_<umaxmin:code><mode>3): Likewise.
2913 (*avx2_<umaxmin:code><mode>3): Likewise.
2914 (avx2_<smaxmin:code><mode>3): Likewise.
2915 (*avx2_<smaxmin:code><mode>3): Likewise.
2916 (avx2_eq<mode>3): Likewise.
2917 (*avx2_eq<mode>3): Likewise.
2918 (avx2_gt<mode>3): Likewise.
2919 (avx2_interleave_highv32qi): New.
2920 (avx2_interleave_lowv32qi): Likewise.
2921 (avx2_interleave_highv16hi): Likewise.
2922 (avx2_interleave_lowv16hi): Likewise.
2923 (avx2_interleave_highv8si): Likewise.
2924 (avx2_interleave_lowv8si): Likewise.
2925 (avx2_pshufd): Likewise.
2926 (avx2_pshufd_1): Likewise.
2927 (avx2_pshuflwv3): Likewise.
2928 (avx2_pshuflw_1): Likewise.
2929 (avx2_pshufhwv3): Likewise.
2930 (avx2_pshufhw_1): Likewise.
2931 (avx2_uavgv32qi3): Likewise.
2932 (*avx2_uavgv32qi3): Likewise.
2933 (avx2_uavgv16hi3): Likewise.
2934 (*avx2_uavgv16hi3): Likewise.
2935 (avx2_pmovmskb): Likewise.
2936 (avx2_phaddwv16hi3): Likewise.
2937 (avx2_phadddv8si3): Likewise.
2938 (avx2_phaddswv16hi3): Likewise.
2939 (avx2_phsubwv16hi3): Likewise.
2940 (avx2_phsubdv8si3): Likewise.
2941 (avx2_phsubswv16hi3): Likewise.
2942 (avx2_pmaddubsw256): Likewise.
2943 (avx2_umulhrswv16hi3): Likewise.
2944 (*avx2_umulhrswv16hi3): Likewise.
2945 (avx2_packusdw): Likewise.
2946 (avx2_pblendd<mode>): Likewise.
2947 (avx2_<code>v16qiv16hi2): Likewise.
2948 (avx2_<code>v8qiv8si2): Likewise.
2949 (avx2_<code>v8hiv8si2): Likewise.
2950 (avx2_<code>v4qiv4di2): Likewise.
2951 (avx2_<code>v4hiv4di2): Likewise.
2952 (avx2_<code>v4siv4di2): Likewise.
2953 (avx2_pbroadcast<mode>): Likewise.
2954 (avx2_permvarv8si): Likewise.
2955 (avx2_permv4df): Likewise.
2956 (avx2_permvarv8sf): Likewise.
2957 (avx2_permv4di): Likewise.
2958 (avx2_permv2ti): Likewise.
2959 (avx2_vec_dupv4df): Likewise.
2960 (avx2_vbroadcasti128_<mode>): Likewise.
2961 (avx2_vec_set_lo_v4di): Likewise.
2962 (avx2_vec_set_hi_v4di): Likewise.
2963 (*avx2_maskmov<avx2modesuffix><avxmodesuffix>): Likewise.
2964 (avx2_extracti128): Likewise.
2965 (avx2_inserti128): Likewise.
2966 (avx2_ashrvv8si): Likewise.
2967 (avx2_ashrvv4si): Likewise.
2968 (avx2_<lshift>vv8si): Likewise.
2969 (avx2_<lshift>v<mode>): Likewise.
2970 (avx2_<lshift>vv2di): Likewise.
2971 (avx2_gathersi<mode>): Likewise.
2972 (*avx2_gathersi<mode>): Likewise.
2973 (avx2_gatherdi<mode>): Likewise.
2974 (*avx2_gatherdi<mode>): Likewise.
2975 (avx2_gatherdi<mode>256): Likewise.
2976 (*avx2_gatherdi<mode>256): Likewise.
2977 (<plusminus_insn><mode>3): Use VI mode iterator.
2978 (*<plusminus_insn><mode>3): Use VI mode iterator.
2979 (<sse2_avx2>_<plusminus_insn><mode>3): Rename from
2980 sse2_<plusminus_insn><mode>3. Use VI12_AVX2 mode iterator.
2981 (*<sse2_avx2>_<plusminus_insn><mode>3): Rename from
2982 *sse2_<plusminus_insn><mode>3. Use VI12_AVX2 mode iterator.
2983 (mul<mode>3): Rename from mulv8hi3. Use VI2_AVX2 mode iterator.
2984 (*mul<mode>3): Rename from *mulv8hi3. Use VI2_AVX2 mode iterator.
2985 (<s>mul<mode>3_highpart): Rename from <s>mulv8hi3_highpart.
2986 Use VI2_AVX2 mode iterator.
2987 (*<s>mul<mode>3_highpart): Rename from *<s>mulv8hi3_highpart.
2988 Use VI2_AVX2 mode iterator.
2989 (mul<mode>3): Rename from mulv4si3. Use VI4_AVX2 mode iterator.
2990 (*mul<mode>3): Rename from *mulv4si3. Use VI4_AVX2 mode iterator.
2991 (*<sse4_1_avx2>_mulv2siv2di3): Rename from *sse4_1_mulv4si3.
2992 Use VI4_AVX2 mode iterator.
2993 (ashr<mode>3): Use VI24_AVX2 mode iterator.
2994 (lshr<mode>3): Use VI248_AVX2 mode iterator.
2995 (<sse2_avx2>_ashl<mode>3): Rename from sse2_ashlv1ti3.
2996 Use VIMAX_AVX2 mode iterator.
2997 (<sse2_avx2>_andnot<mode>3): Rename from sse2_andnot<mode>3.
2998 Use VI mode iterator.
2999 (*andnot<mode>3): Update for AVX2.
3000 (*<any_logic:code><mode>3): Likewise.
3001 (<sse2_avx2>_packsswb): Rename from sse2_packsswb.
3002 Use VI1_AVX mode iterator.
3003 (<sse2_avx2>_packssdw): Rename from sse2_packssdw.
3004 Use VI2_AVX mode iterator.
3005 (<sse2_avx2>_packuswb): Rename from sse2_packsswb.
3006 Use VI1_AVX mode iterator.
3007 (<sse2_avx2>_psadbw): Rename from sse2_psadbw.
3008 Use VI8_AVX2 mode iterator.
3009 (<ssse3_avx2>_pshufb<mode>3): Rename from ssse3_pshufbv16qi3.
3010 Use VI1_AVX2 mode iterator.
3011 (<ssse3_avx2>_psign<mode>3): Rename from ssse3_psign<mode>3.
3012 Use VI124_AVX2 mode iterator.
3013 (<ssse3_avx2>_palignr<mode>): Rename from ssse3_palignrti.
3014 Use SSESCALARMODE mode iterator.
3015 (abs<mode>2): Use VI124_AVX2 mode iterator.
3016 (<sse4_1_avx2>_movntdqa): Rename from sse4_1_movntdqa.
3017 Use VI8_AVX2 mode iterator.
3018 (<sse4_1_avx2>_mpsadbw): Rename from sse4_1_mpsadbw.
3019 Use VI1_AVX2 mode iterator.
3020 (<sse4_1_avx2>_pblendvb): Rename from sse4_1_pblendvb.
3021 Use VI1_AVX2 mode iterator.
3022 (<sse4_1_avx2>_pblendw): Rename from sse4_1_pblendvb.
3023 Use VI2_AVX2 mode iterator.
3024 (<avx_avx2>_maskload<avx2modesuffix><avxmodesuffix>): Rename from
3025 avx_maskload<ssemodesuffix><avxsizesuffix>. Use V48_AVX2 mode iterator.
3026 (<avx_avx2>_maskstore<avx2modesuffix><avxmodesuffix>): Rename from
3027 avx_maskstore<ssemodesuffix><avxsizesuffix>.
3028 Use V48_AVX2 mode iterator.
3029 * doc/extend.texi: Document AVX2 built-in functions.
3030 * doc/invoke.texi: Document -mavx2.
3032 2011-08-22 Matthias Klose <doko@debian.org>
3035 2011-07-11 Arthur Loiret <aloiret@debian.org>
3036 Matthias Klose <doko@debian.org>
3037 * config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if
3038 tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc
3040 * config.gcc (tm_defines): Add MIPS_ABI_DEFAULT=ABI_32.
3042 2011-08-22 Mikael Pettersson <mikpe@it.uu.se>
3045 * ira-color.c (assign_hard_reg): Move saved_nregs declaration
3046 to #ifndef HONOR_REG_ALLOC_ORDER block.
3048 2011-08-21 Richard Henderson <rth@redhat.com>
3050 * rtl.h (INSN_ANNULLED_BRANCH_P): Only allow JUMP_INSN.
3051 * dwarf2cfi.c (scan_trace): Test JUMP_P before INSN_ANNULLED_BRANCH_P.
3052 * resource.c (next_insn_no_annul): Likewise.
3053 (mark_set_resources): Likewise.
3054 * reorg.c (delete_from_delay_slot): Likewise.
3055 (dbr_schedule, redundant_insn, try_merge_delay_insns): Likewise.
3056 (get_branch_condition): Test pc_rtx and LABEL_REF before dereferencing.
3058 2011-08-21 Uros Bizjak <ubizjak@gmail.com>
3060 * config/i386/i386.md (any_div): Remove.
3061 (sgnprefix): Update for removal.
3064 2011-08-20 Vladimir Makarov <vmakarov@redhat.com>
3066 * ira-lives.c (mark_pseudo_regno_subword_live): Use allocno class
3067 for ira_reg_class_max_nregs. Increase pressure by 1.
3068 (mark_pseudo_regno_subword_dead): Use allocno class
3069 for ira_reg_class_max_nregs.
3071 2011-08-20 Richard Henderson <rth@redhat.com>
3073 * config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
3074 config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
3075 config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
3076 config/c6x/ltf.c: Adjust include path for soft-fp.
3078 2011-08-20 H.J. Lu <hongjiu.lu@intel.com>
3081 * config.gcc (tm_file): Add initfini-array.h if
3082 .init_arrary/.fini_array are supported.
3084 * crtstuff.c: Don't generate .ctors nor .dtors sections if
3085 USE_INITFINI_ARRAY is defined.
3087 * output.h (default_elf_init_array_asm_out_constructor): New.
3088 (default_elf_fini_array_asm_out_destructor): Likewise.
3089 * varasm.c (elf_init_array_section): Likewise.
3090 (elf_fini_array_section): Likewise.
3091 (get_elf_initfini_array_priority_section): Likewise.
3092 (default_elf_init_array_asm_out_constructor): Likewise.
3093 (default_elf_fini_array_asm_out_destructor): Likewise.
3095 * config/initfini-array.h: New.
3097 2011-08-20 Richard Sandiford <rdsandiford@googlemail.com>
3099 * config/mips/mips.c (mips_class_max_nregs): Check that the mode is
3100 OK for ST_REGS and FP_REGS before taking those classes into account.
3102 2011-08-20 Richard Sandiford <rdsandiford@googlemail.com>
3104 * config/mips/mips.c (mips_reorg_process_insns): Check for jumps
3105 before checking for annulled branches.
3107 2011-08-20 Uros Bizjak <ubizjak@gmail.com>
3109 * config/i386/i386.c (ix86_binary_operator_ok): Use
3110 satisfies_constraint_L.
3112 2011-08-20 Uros Bizjak <ubizjak@gmail.com>
3113 Michael Matz <matz@suse.de>
3115 * config/i386/i386.c (ix86_expand_round_sse4): Expand as
3116 trunc (a + copysign (nextafter (0.5, 0.0), a)).
3118 2011-08-20 Anatoly Sokolov <aesok@post.ru>
3120 * doc/tm.texi.in (PREFERRED_OUTPUT_RELOAD_CLASS): Remove.
3121 * doc/tm.texi: Regenerate.
3122 * targhooks.c (default_preferred_output_reload_class): Don't use
3123 PREFERRED_OUTPUT_RELOAD_CLASS macro.
3124 * system.h (PREFERRED_OUTPUT_RELOAD_CLASS): Poison.
3126 2011-08-20 Jakub Jelinek <jakub@redhat.com>
3128 PR tree-optimization/48739
3129 * tree-ssa.c: Include cfgloop.h.
3130 (execute_update_addresses_taken): When updating ssa, if in loop closed
3131 SSA form, call rewrite_into_loop_closed_ssa instead of update_ssa.
3132 * Makefile.in (tree-ssa.o): Depend on $(CFGLOOP_H).
3134 2011-08-19 Vladimir Makarov <vmakarov@redhat.com>
3136 PR rtl-optimization/49936
3137 * ira.c (ira_init_register_move_cost): Ignore too small subclasses
3138 for calculation of max register move costs.
3140 2011-08-19 Joseph Myers <joseph@codesourcery.com>
3142 * c-parser.c (c_parser_postfix_expression): Convert operands of
3143 __builtin_complex to their semantic types.
3145 2011-08-19 H.J. Lu <hongjiu.lu@intel.com>
3148 * explow.c (convert_memory_address_addr_space): Also permute the
3149 conversion and addition of constant for zero-extend.
3151 2011-08-19 Joseph Myers <joseph@codesourcery.com>
3153 * c-parser.c (c_parser_postfix_expression): Handle RID_BUILTIN_COMPLEX.
3154 * doc/extend.texi (__builtin_complex): Document.
3156 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3158 * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants
3160 (convert_mult_to_widen): Convert constant inputs to the right type.
3161 (convert_plusminus_to_widen): Don't automatically reject inputs that
3162 are not an SSA_NAME.
3163 Convert constant inputs to the right type.
3165 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3167 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
3168 to the correct type.
3170 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3172 * tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
3173 unsigned inputs of different modes.
3174 (convert_plusminus_to_widen): Likewise.
3176 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3178 * tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument
3180 Use 'type' from caller, not inferred from 'rhs'.
3181 Don't reject non-conversion statements. Do return lhs in this case.
3182 (is_widening_mult_p): Add new argument 'type'.
3183 Use 'type' from caller, not inferred from 'stmt'.
3184 Pass type to is_widening_mult_rhs_p.
3185 (convert_mult_to_widen): Pass type to is_widening_mult_p.
3186 (convert_plusminus_to_widen): Likewise.
3188 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3190 * tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME.
3191 Ensure the the larger type is the first operand.
3193 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3195 * tree-ssa-math-opts.c (convert_mult_to_widen): Convert
3196 unsupported unsigned multiplies to signed.
3197 (convert_plusminus_to_widen): Likewise.
3199 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3201 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single
3202 conversion statement separating multiply-and-accumulate.
3204 2011-08-19 Richard Guenther <rguenther@suse.de>
3206 PR tree-optimization/50067
3207 * tree-data-ref.c (dr_analyze_indices): Simplify, strip MEM_REF
3208 offset only if we accounted for it.
3210 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3212 * config/arm/arm.md (maddhidi4): Remove '*' from name.
3213 * expr.c (expand_expr_real_2): Use find_widening_optab_handler.
3214 * optabs.c (find_widening_optab_handler_and_mode): New function.
3215 (expand_widen_pattern_expr): Use find_widening_optab_handler.
3216 (expand_binop_directly): Likewise.
3217 (expand_binop): Likewise.
3218 * optabs.h (find_widening_optab_handler): New macro define.
3219 (find_widening_optab_handler_and_mode): New prototype.
3220 * tree-cfg.c (verify_gimple_assign_binary): Adjust WIDEN_MULT_EXPR
3221 type precision rules.
3222 (verify_gimple_assign_ternary): Likewise for WIDEN_MULT_PLUS_EXPR.
3223 * tree-ssa-math-opts.c (build_and_insert_cast): New function.
3224 (is_widening_mult_rhs_p): Allow widening by more than one mode.
3225 Explicitly disallow mis-matched input types.
3226 (convert_mult_to_widen): Use find_widening_optab_handler, and cast
3227 input types to fit the new handler.
3228 (convert_plusminus_to_widen): Likewise.
3230 2011-08-19 Andrew Stubbs <ams@codesourcery.com>
3232 * expr.c (expand_expr_real_2): Use widening_optab_handler.
3233 * genopinit.c (optabs): Use set_widening_optab_handler for $N.
3234 (gen_insn): $N now means $a must be wider than $b, not consecutive.
3235 * optabs.c (widened_mode): New function.
3236 (expand_widen_pattern_expr): Use widening_optab_handler.
3237 (expand_binop_directly): Likewise.
3238 (expand_binop): Likewise.
3239 * optabs.h (widening_optab_handlers): New struct.
3240 (optab_d): New member, 'widening'.
3241 (widening_optab_handler): New function.
3242 (set_widening_optab_handler): New function.
3243 * tree-ssa-math-opts.c (convert_mult_to_widen): Use
3244 widening_optab_handler.
3245 (convert_plusminus_to_widen): Likewise.
3247 2011-08-19 Joseph Myers <joseph@codesourcery.com>
3249 * c-decl.c (grokdeclarator): Diagnose _Noreturn for non-C1X if
3251 * c-parser.c (c_parser_declspecs): Include _Noreturn in syntax comment.
3252 * ginclude/stdnoreturn.h (noreturn): Don't define for C++.
3254 2011-08-19 Joseph Myers <joseph@codesourcery.com>
3256 * opth-gen.awk: Do not declare target save/restore structures and
3257 functions if IN_RTS defined.
3259 2011-08-19 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
3262 * config/arm/arm.c (arm_output_epilogue): Properly handle epilogue
3263 when stack was realigned in interrupt handler prologue.
3265 2011-08-18 Joseph Myers <joseph@codesourcery.com>
3267 * c-decl.c (shadow_tag_warned): Check for _Noreturn.
3268 (quals_from_declspecs): Assert _Noreturn not present.
3269 (grokdeclarator): Handle _Noreturn.
3270 (build_null_declspecs): Initialize noreturn_p.
3271 (declspecs_add_scspec): Handle RID_NORETURN.
3272 * c-parser.c (c_token_starts_declspecs, c_parser_declspecs)
3273 (c_parser_attributes): Handle RID_NORETURN.
3274 * c-tree.h (struct c_declspecs): Add noreturn_p.
3275 * ginclude/stdnoreturn.h: New.
3276 * Makefile.in (USER_H): Add stdnoreturn.h.
3278 2011-08-18 Kirill Yukhin <kirill.yukhin@intel.com>
3280 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX2_SET): New.
3281 (OPTION_MASK_ISA_AVX_UNSET): Update.
3282 (OPTION_MASK_ISA_AVX2_UNSET): New.
3283 (ix86_handle_option): Handle OPT_mavx2 case.
3284 * config/i386/cpuid.h (bit_AVX2): New.
3285 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
3287 * config/i386/i386-c.c (ix86_target_macros_internal):
3288 Conditionally define __AVX2__.
3289 * config/i386/i386.c (ix86_option_override_internal): Define PTA_AVX2.
3290 Define "core-avx2" processor alias. Handle avx2 option.
3291 (ix86_valid_target_attribute_inner_p): Handle avx2 option.
3292 * config/i386/i386.h (TARGET_AVX2): New.
3293 * config/i386/i386.opt (mavx2): New.
3294 * doc/invoke.texi: Document -mavx2.
3296 2011-08-18 Vladimir Makarov <vmakarov@redhat.com>
3298 PR rtl-optimization/49890
3299 * ira-costs.c (setup_regno_cost_classes_by_aclass): Don't exclude
3300 subclasses of class which is superset of a pressure class.
3302 2011-08-18 H.J. Lu <hongjiu.lu@intel.com>
3303 Igor Zamyatin <igor.zamyatin@intel.com>
3305 * config/i386/i386-c.c (ix86_target_macros_internal): Replace int
3306 with HOST_WIDE_INT for isa_flag.
3307 (ix86_pragma_target_parse): Replace int with HOST_WIDE_INT for
3310 * config/i386/i386.c (ix86_target_string): Replace int with
3311 HOST_WIDE_INT for isa. Use HOST_WIDE_INT_PRINT to print isa.
3312 (ix86_target_opts): Replace int with HOST_WIDE_INT on mask.
3313 (pta_flags): Removed.
3314 (PTA_XXX): Redefined as (HOST_WIDE_INT_1 << X).
3315 (pta): Use HOST_WIDE_INT on flags.
3316 (builtin_isa): Use HOST_WIDE_INT on isa.
3317 (ix86_add_new_builtins): Likewise.
3318 (def_builtin): Use HOST_WIDE_INT on mask.
3319 (def_builtin_const): Likewise.
3320 (builtin_description): Likewise.
3322 * config/i386/i386.opt (ix86_isa_flags): Replace int with
3324 (ix86_isa_flags_explicit): Likewise.
3325 (x_ix86_isa_flags_explicit): Likewise.
3327 2011-08-17 Vladimir Makarov <vmakarov@redhat.com>
3329 PR rtl-optimization/50107
3330 * ira-int.h (ira_hard_reg_not_in_set_p): Remove.
3331 (ira_hard_reg_in_set_p): New.
3333 * ira-color.c (calculate_saved_nregs): New.
3334 (assign_hard_reg): Use it. Set up allocated_hard_reg_p for all
3336 (allocno_reload_assign, fast_allocation): Use
3337 ira_hard_reg_set_intersection_p instead of
3338 ira_hard_reg_not_in_set_p.
3340 * ira.c (setup_reg_renumber): Use
3341 ira_hard_reg_set_intersection_p instead of
3342 ira_hard_reg_not_in_set_p.
3343 (setup_allocno_assignment_flags, calculate_allocation_cost): Use
3344 ira_hard_reg_in_set_p instead of ira_hard_reg_not_in_set_p.
3346 * ira-costs.c (ira_tune_allocno_costs): Use
3347 ira_hard_reg_set_intersection_p instead of
3348 ira_hard_reg_not_in_set_p.
3350 2011-08-18 H.J. Lu <hongjiu.lu@intel.com>
3351 Igor Zamyatin <igor.zamyatin@intel.com>
3353 * hwint.h (HOST_WIDE_INT_1): New.
3355 * opt-functions.awk (switch_bit_fields): Initialize the
3356 host_wide_int field.
3357 (host_wide_int_var_name): New.
3358 (var_type_struct): Check and return HOST_WIDE_INT.
3360 * opt-read.awk: Handle HOST_WIDE_INT for "Variable".
3362 * optc-save-gen.awk: Support HOST_WIDE_INT on var_target_other.
3364 * opth-gen.awk: Use HOST_WIDE_INT_1 on HOST_WIDE_INT. Properly
3365 check masks for HOST_WIDE_INT.
3367 * opts-common.c (set_option): Support HOST_WIDE_INT flag_var.
3368 (option_enabled): Likewise.
3369 (get_option_state): Likewise.
3371 * opts.h (cl_option): Add cl_host_wide_int. Change var_value
3374 2011-08-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3375 Marc Glisse <marc.glisse@normalesup.org>
3377 PR libstdc++-v3/1773
3378 * target.def (decl_mangling_context): New C++ hook.
3379 * doc/tm.texi: Regenerate.
3380 * config/sol2-cxx.c, config/sol2-stubs.c: New files.
3381 * config/sol2-protos.h: Group by source file.
3382 (solaris_cxx_decl_mangling_context): Declare.
3383 * config/sol2.h (TARGET_CXX_DECL_MANGLING_CONTEXT): Define.
3384 * config/t-sol2 (sol2-cxx.o, sol2-stubs.o): New targets.
3386 * config.gcc (*-*-solaris2*): Add sol2-cxx.o to cxx_target_objs.
3387 Add sol2-stubs.o to extra_objs.
3389 2011-08-18 Jakub Jelinek <jakub@redhat.com>
3392 * stor-layout.c (update_alignment_for_field): Don't ICE on
3393 packed flexible array members if ms_bitfield_layout_p.
3396 * config/i386/i386.c (assign_386_stack_local): Call validize_mem
3397 on the result before returning it.
3400 * tree-vect-stmts.c (vect_finish_stmt_generation): If gsi_stmt (*gsi)
3401 is a debug stmt, use location of the first non-debug stmt after it.
3403 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
3405 * config/arm/arm.c (arm_rtx_costs_1): Don't modify the costs of SET.
3406 (arm_size_rtx_costs): Likewise.
3408 2011-08-18 Richard Guenther <rguenther@suse.de>
3410 * tree.h (tree_int_cst_msb): Remove.
3411 * tree.c (tree_int_cst_msb): Likewise.
3412 (tree_int_cst_sign_bit): Move from ...
3413 * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): ... here.
3415 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
3417 * doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter.
3418 * doc/tm.texi: Regenerate.
3419 * target.def (rtx_costs): Add an opno parameter.
3420 * hooks.h (hook_bool_rtx_int_int_intp_bool_false): Replace with...
3421 (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
3422 * hooks.c (hook_bool_rtx_int_int_intp_bool_false): Replace with...
3423 (hook_bool_rtx_int_int_int_intp_bool_false): ...this.
3424 * cse.c (COST_IN): Add an opno parameter.
3425 (notreg_cost): Likewise. Update call to rtx_cost.
3426 (COST, fold_rtx): Update accordingly.
3427 * dojump.c (prefer_and_bit_test): Update call to rtx_cost.
3428 * expmed.c (emit_store_flag): Likewise.
3429 * optabs.c (avoid_expensive_constant): Add an opno parameter.
3430 Update call to rtx_cost.
3431 (expand_binop_directly, expand_binop): Likewise.
3432 (expand_twoval_binop, prepare_cmp_insn): Likewise.
3433 * rtl.h (rtx_cost, get_full_rtx_cost): Add opno parameters.
3434 (set_src_cost, get_full_set_src_cost): Update accordingly.
3435 * rtlanal.c (rtx_cost): Add an opno parameter. Update call
3437 (get_full_rtx_cost): Add an opno paramter. Update calls to rtx_cost.
3438 (default_adress_cost): Update calls to rtx_cost.
3440 * config/arm/arm.c (arm_rtx_costs_1, arm_size_rtx_costs)
3441 (arm_slowmul_rtx_costs): Adjust calls to rtx_cost.
3442 (arm_rtx_costs): Add an opno parameter.
3443 * config/alpha/alpha.c (alpha_rtx_costs): Add an opno parameter and
3444 adjust any recursive rtx-cost calls.
3445 * config/avr/avr.c (avr_operand_rtx_cost, avr_rtx_costs): Likewise.
3446 * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
3447 * config/c6x/c6x.c (c6x_rtx_costs): Likewise.
3448 * config/cris/cris.c (cris_rtx_costs): Likewise.
3449 * config/frv/frv.c (frv_rtx_costs): Likewise.
3450 * config/h8300/h8300.c (h8300_rtx_costs): Likewise.
3451 * config/i386/i386.c (ix86_rtx_costs): Likewise.
3452 * config/ia64/ia64.c (ia64_rtx_costs): Likewise.
3453 * config/iq2000/iq2000.c (iq2000_rtx_costs): Likewise.
3454 * config/lm32/lm32.c (lm32_rtx_costs): Likewise.
3455 * config/m32c/m32c.c (m32c_rtx_costs): Likewise.
3456 * config/m32r/m32r.c (m32r_rtx_costs): Likewise.
3457 * config/m68k/m68k.c (m68k_rtx_costs): Likewise.
3458 * config/mcore/mcore.c (mcore_rtx_costs): Likewise.
3459 * config/mep/mep.c (mep_rtx_cost): Likewise.
3460 * config/microblaze/microblaze.c (microblaze_rtx_costs): Likewise.
3461 * config/mips/mips.c (mips_binary_cost): Update call to rtx_cost.
3462 (mips_zero_extend_cost): Add an opno parameter.
3463 * config/mmix/mmix.c (mmix_rtx_costs): Likewise.
3464 * config/mn10300/mn10300.c (mn10300_address_cost): Update call
3466 (mn10300_rtx_costs): Add an opno parameter and adjust any recursive
3468 * config/pa/pa.c (hppa_rtx_costs): Likewise.
3469 * config/pdp11/pdp11.c (pdp11_rtx_costs): Likewise.
3470 * config/picochip/picochip.c (picochip_rtx_costs): Likewise.
3471 * config/rs6000/rs6000.c (rs6000_rtx_costs): Likewise.
3472 (rs6000_debug_rtx_costs): Likewise.
3473 * config/s390/s390.c (s390_rtx_costs): Likewise.
3474 * config/score/score-protos.h (score_rtx_costs): Likewise.
3475 * config/score/score.c (score_rtx_costs): Likewise.
3476 * config/sh/sh.c (andcosts): Update call to rtx_cost.
3477 (sh_rtx_costs): Add an opno parameter.
3478 * config/sparc/sparc.c (sparc_rtx_costs): Likewise.
3479 * config/spu/spu.c (spu_rtx_costs): Likewise.
3480 * config/stormy16/stormy16.c (xstormy16_rtx_costs): Likewise.
3481 * config/v850/v850.c (v850_rtx_costs): Likewise.
3482 * config/vax/vax.c (vax_rtx_costs): Likewise.
3483 * config/xtensa/xtensa.c (xtensa_rtx_costs): Likewise.
3485 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
3487 * rtl.h (set_src_cost, get_full_set_src_cost): New functions.
3488 * auto-inc-dec.c (attempt_change): Use set_src_cost instead of
3490 * calls.c (precompute_register_parameters): Likewise.
3491 * combine.c (expand_compound_operation, make_extraction): Likewise.
3492 (force_to_mode, distribute_and_simplify_rtx): Likewise.
3493 * dse.c (find_shift_sequence): Likewise.
3494 * expmed.c (init_expmed, expand_mult, expand_smod_pow2): Likewise.
3495 * expr.c (compress_float_constant): Likewise.
3496 * fwprop.c (should_replace_address, try_fwprop_subst): Likewise.
3497 * gcse.c (want_to_gcse_p): Likewise.
3498 * ifcvt.c (noce_try_sign_mask): Likewise.
3499 * loop-doloop.c (doloop_optimize): Likewise.
3500 * loop-invariant.c (create_new_invariant): Likewise.
3501 * optabs.c (avoid_expensive_constant): Likewise.
3502 * postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands)
3503 (try_replace_in_use, reload_cse_move2add): Likewise.
3504 * reload1.c (calculate_elim_costs_all_insns): Likewise.
3505 (note_reg_elim_costly): Likewise.
3506 * rtlanal.c (insn_rtx_cost): Likewise.
3507 * simplify-rtx.c (simplify_binary_operation_1): Likewise.
3508 * stmt.c (lshift_cheap_p): Likewise.
3509 * tree-ssa-loop-ivopts.c (seq_cost, computation_cost): Likewise.
3510 * config/avr/avr.c (final_prescan_insn): Likewise.
3511 * config/bfin/bfin.c (bfin_rtx_costs): Likewise.
3512 * config/mips/mips.c (mips_binary_cost, mips_rtx_costs): Likewise.
3514 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
3516 * rtl.h (set_rtx_cost, get_full_set_rtx_cost): New functions.
3517 * auto-inc-dec.c (attempt_change): Use set_rtx_cost.
3518 * cfgloopanal.c (seq_cost): Likewise.
3519 * loop-invariant.c (create_new_invariant): Likewise.
3520 * postreload.c (move2add_use_add2_insn, move2add_use_add3_insn)
3521 (reload_cse_move2add): Use get_full_set_rtx_cost.
3523 2011-08-18 Richard Guenther <rguenther@suse.de>
3525 * expr.c (get_inner_reference): Fix typo in last change.
3527 2011-08-18 Paolo Carlini <paolo.carlini@oracle.com>
3528 Joseph Myers <joseph@codesourcery.com>
3530 PR tree-optimization/49963
3531 * hwint.c (absu_hwi): Define.
3532 * hwint.h (absu_hwi): Declare.
3533 * fold-const.c (fold_plusminus_mult_expr): Use absu_hwi instead
3535 * tree-ssa-math-opts.c (gimple_expand_builtin_pow): Likewise.
3536 * tree-ssa-loop-prefetch.c (prune_ref_by_group_reuse): Likewise.
3538 2011-08-18 Richard Guenther <rguenther@suse.de>
3540 * expr.c (get_inner_reference): Sign-extend the constant
3541 twos-complement offset before doing arbitrary precision
3543 * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
3544 (get_constraint_for_1): Pass the offset of a MEM_REF unchanged
3545 to get_constraint_for_ptr_offset.
3547 2011-08-17 Kaz Kojima <kkojima@gcc.gnu.org>
3550 * config/sh/sh.c (sh_output_mi_thunk): Don't call dbr_schedule.
3552 2011-08-17 Richard Guenther <rguenther@suse.de>
3554 * tree.h (convert_to_ptrofftype_loc): New function.
3555 (convert_to_ptrofftype): Define.
3556 * builtins.c (expand_builtin_bzero): Use size_type_node.
3557 (fold_builtin_bzero): Likewise.
3558 (std_gimplify_va_arg_expr): Build the BIT_AND_EXPR on the pointer.
3559 * c-typeck.c (build_unary_op): Use convert_to_ptrofftype_loc.
3560 * cgraphunit.c (thunk_adjust): Use fold_build_pointer_plus_loc.
3561 (cgraph_redirect_edge_call_stmt_to_callee): Use size_int.
3562 * expr.c (expand_expr_addr_expr_1): Use fold_build_pointer_plus.
3563 * fold-const.c (build_range_check): Negate using the original type.
3564 (fold_unary_loc): Use fold_build_pointer_plus_loc.
3565 * gimple-fold.c (gimple_adjust_this_by_delta): Use
3566 convert_to_ptrofftype.
3567 * gimplify.c (gimplify_self_mod_expr): Likewise.
3568 * graphite-clast-to-gimple.c (clast_to_gcc_expression): Likewise.
3569 (graphite_create_new_loop_guard): Likewise.
3570 * graphite-sese-to-poly.c (my_long_long): Remove.
3571 (scop_ivs_can_be_represented): Adjust.
3572 * tree-cfg.c (verify_gimple_assign_unary): Use ptrofftype_p.
3573 * tree-chrec.c (chrec_fold_plus_1): Use fold_build_pointer_plus.
3574 * tree-loop-distribution.c (build_size_arg_loc): Use
3576 (generate_memset_zero): Simplify.
3577 * tree-mudflap.c: Use fold_convert, not convert.
3578 * tree-predcom.c (suitable_reference_p): Expand DR_OFFSET in
3580 (determine_offset): Likewise for DR_STEP.
3581 (valid_initializer_p): Likewise.
3582 * tree-profile.c (prepare_instrumented_value): Convert the pointer
3583 to an integer type of same size.
3584 * tree-scalar-evolution.c (interpret_rhs_expr): Do not refer
3585 to sizetype without need.
3586 * tree-ssa-address.c (tree_mem_ref_addr): Likewise.
3587 * tree-ssa-loop-ivopts.c (find_bivs): Use convert_to_ptrofftype.
3588 * tree-ssa-loop-manip.c (create_iv): Likewise.
3589 (determine_exit_conditions): Adjust comment.
3590 * tree-ssa-pre.c (create_expression_by_pieces): Use
3591 convert_to_ptrofftype.
3592 * tree-ssa-structalias.c (get_constraint_for_1): Likewise.
3593 * varasm.c (array_size_for_constructor): Compute using double_ints.
3595 2011-08-16 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3597 * config/spu/spu.c (spu_emit_branch_or_set): Avoid reverse tests
3598 when generating an integer result where possible. Short-cut
3599 comparison against 0 also for QImode.
3601 2011-08-16 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3603 * config/spu/spu.h (LEGITIMIZE_RELOAD_ADDRESS): New macro.
3604 * config/spu/spu-protos.h (spu_legitimize_reload_address): Add
3606 * config/spu/spu.c (spu_legitimize_reload_address): New function.
3607 (spu_legitimate_address_p): Do not check displacement if the base
3608 is an eliminable stack register.
3610 2011-08-16 Anatoly Sokolov <aesok@post.ru>
3612 * config/m32c/m32c.h (PREFERRED_RELOAD_CLASS,
3613 PREFERRED_OUTPUT_RELOAD_CLASS): Remove macro.
3614 * config/m32c/m32c-protos.h (m32c_preferred_reload_class,
3615 m32c_preferred_output_reload_class): Remove.
3616 * config/m32c/m32c.c (m32c_preferred_reload_class): Make static.
3617 Change rclass argument and return types to reg_class_t. Use
3618 reg_class_subset_p instead of class_sizes.
3619 (m32c_preferred_output_reload_class): Make static. Change rclass
3620 argument and return types to reg_class_t.
3621 (TARGET_PREFERRED_RELOAD_CLASS,
3622 TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Define.
3624 2011-08-16 Kai Tietz <ktietz@redhat.com>
3626 * config/i386/mingw32.h (GOMP_SELF_SPEC): Add -pthread option.
3628 2011-08-16 Richard GUenther <rguenther@suse.de>
3630 PR tree-optimization/50082
3631 * tree-ssa-forwprop.c (combine_cond_expr_cond): Handle overflow
3632 warnings here, instead of ...
3633 (ssa_forward_propagate_and_combine): ... here.
3634 (forward_propagate_into_comparison_1): Adjust.
3635 (forward_propagate_into_comparison): Likewise.
3636 (forward_propagate_into_gimple_cond): Likewise.
3637 (forward_propagate_into_cond): Likewise.
3639 2011-08-16 Andreas Schwab <schwab@redhat.com>
3641 * ggc.h (ggc_alloc_rtvec_sized): Use ggc_alloc_zone_rtvec_def
3642 instead of ggc_alloc_zone_vec_rtvec_def.
3644 2011-08-16 Richard Guenther <rguenther@suse.de>
3646 * tree.h (ptrofftype_p): New helper function.
3647 * tree-cfg.c (verify_expr): Use ptrofftype_p for POINTER_PLUS_EXPR
3648 offset verification.
3649 (verify_gimple_assign_binary): Likewise.
3650 * tree.c (build2_stat): Likewise.
3651 * tree-chrec.c (chrec_fold_plus_poly_poly): Likewise.
3652 (reset_evolution_in_loop): Likewise.
3653 * tree-chrec.h (build_polynomial_chrec): Likewise.
3655 2011-08-16 Liang Wang <lwang1@marvell.com>
3657 * ggc.h (ggc_alloc_rtvec_sized): Change arguments of
3658 ggc_alloc_zone_vec_rtvec_def.
3660 2011-08-16 Richard Guenther <rguenther@suse.de>
3662 * tree-vrp.c (extract_range_from_multiplicative_op_1): New
3663 helper factored out from ...
3664 (extract_range_from_binary_expr_1): ... here. Re-structure
3665 to not glob handling too different tree codes.
3667 2011-08-15 Richard Henderson <rth@redhat.com>
3670 * explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
3671 setting out to include allocate_stack named pattern as well.
3672 * builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
3673 * stmt.c (expand_stack_restore): Likewise.
3675 2011-08-15 Richard Guenther <rguenther@suse.de>
3678 * fold-const.c (maybe_canonicalize_comparison_1): Properly
3679 convert the modified operand to the other operand type.
3680 (fold_comparison): Call maybe_canonicalize_comparison_1 with
3681 useless conversions stripped from comparison operands.
3683 2011-08-15 Richard Guenther <rguenther@suse.de>
3685 * tree-vrp.c (value_range_nonnegative_p): Fix anti-range case.
3686 (extract_range_from_unary_expr_1): Restructure.
3688 2011-08-15 Richard Guenther <rguenther@suse.de>
3690 PR tree-optimization/50058
3691 * tree-ssa-sccvn.c (vn_reference_lookup_3): Relax aggregate
3694 2011-08-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
3697 * config/arm/arm.c (output_move_double): Add 2 parameters
3698 to count the number of insns emitted and whether to emit or not.
3699 Use the flag to decide when to emit and count number of instructions
3700 that will be emitted.
3701 Handle case where output_move_double might be called for calculating
3702 lengths with an invalid constant.
3703 (arm_count_output_move_double_insns): Define.
3704 * config/arm/arm-protos.h (arm_count_output_move_double_insns): Declare.
3705 (output_move_double): Adjust prototype.
3706 * config/arm/vfp.md ("*movdi_vfp"): Adjust call to
3708 ("*movdi_vfp_cortexa8"): Likewise and add attribute
3710 * config/arm/arm.md ("*arm_movdi"): Adjust call to output_move_double.
3711 ("*movdf_soft_insn"): Likewise.
3712 * config/arm/cirrus.md ("*cirrus_arm_movdi"): Likewise.
3713 ("*cirrus_thumb2_movdi"): Likewise.
3714 ("*thumb2_cirrus_movdf_hard_insn"): Likewise.
3715 ("*cirrus_movdf_hard_insn"): Likewise.
3716 * config/arm/neon.md (*neon_mov<mode> VD): Likewise.
3717 * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Likewise.
3718 ("mov<mode>_internal VMMX"): Likewise.
3719 * config/arm/fpa.md (*movdf_fpa, *thumb2_movdf_fpa): Likewise.
3721 2011-08-14 Uros Bizjak <ubizjak@gmail.com>
3723 * config/i386/i386.c (ix86_expand_round_sse4): New function.
3724 * config/i386/i386-protos.h (ix86_expand_round_sse4): New prototype.
3725 * config/i386/i386.md (round<mode>2): Use ix86_expand_round_sse4
3728 (rint<mode>2): Simplify TARGET_ROUND check.
3729 (floor<mode>2): Ditto.
3730 (ceil<mode>2): Ditto.
3731 (btrunc<mode>2): Ditto.
3733 2011-08-14 Anatoly Sokolov <aesok@post.ru>
3735 * config/mmix/mmix.c (TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Redefine
3736 as mmix_preferred_output_reload_class.
3738 2011-08-14 Georg-Johann Lay <avr@gjlay.de>
3741 * config/avr/avr.md (UNSPEC_IDENTITY): New c_enum.
3742 (branch_unspec): New insn.
3743 (branch): Beauty farm.
3744 * config/avr/avr.c (compare_condition): Use JUMP_P. Test SET_SRC
3746 (avr_compare_pattern, avr_reorg_remove_redundant_compare):
3747 New static functions.
3748 (avr_reorg): Use them. Use next_real_insn instead of NEXT_INSN.
3749 Use CONST_INT_P. Beauty.
3751 2011-08-12 Richard Henderson <rth@redhat.com>
3754 * sched-init.h (struct deps_desc): Add sched_before_next_jump.
3755 * sched-deps.c (init_deps): Clear it.
3756 (deps_analyze_insn): Consume it.
3757 (sched_analyze_insn): Fill it.
3759 2011-08-12 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
3762 * config/arm/arm.h (CASE_VECTOR_SHORTEN_MODE): Fix distance
3763 for tbh instructions.
3765 2011-08-12 Diego Novillo <dnovillo@google.com>
3767 * data-streamer.h (streamer_write_zero): Rename from output_zero.
3768 (streamer_write_uhwi): Rename from lto_output_uleb128.
3769 (streamer_write_hwi): Rename from output_sleb128.
3770 (streamer_write_string): Rename from lto_output_string.
3771 (streamer_string_index): Rename from lto_string_index.
3772 (streamer_write_string_with_length): Rename from
3773 lto_output_string_with_length.
3774 (streamer_write_uhwi_stream): Rename from lto_output_uleb128_stream.
3775 (streamer_write_hwi_stream): Rename from lto_output_sleb128_stream.
3776 (streamer_read_string): Rename from lto_input_string.
3777 (streamer_read_indexed_string): Rename from input_string_internal.
3778 (streamer_read_uhwi): Rename from lto_input_uleb128.
3779 (streamer_read_hwi): Rename from lto_input_sleb128.
3780 (streamer_write_hwi_in_range): Rename from lto_output_int_in_range.
3781 (streamer_read_hwi_in_range): Rename from lto_input_int_in_range.
3782 (streamer_write_enum): Rename from lto_output_enum.
3783 (streamer_read_enum): Rename from lto_input_enum.
3784 (streamer_write_record_start): Rename from output_record_start.
3785 (streamer_read_record_start): Rename from input_record_start.
3786 (streamer_write_bitpack): Rename from lto_output_bitpack.
3787 (streamer_read_bitpack): Rename from lto_input_bitpack.
3788 (streamer_write_char_stream): Rename from lto_output_1_stream.
3789 (streamer_read_uchar): Rename from lto_input_1_unsigned.
3790 * tree-streamer.h (streamer_cache_d): Rename from lto_streamer_cache_d.
3791 (streamer_handle_as_builtin_p): Rename from lto_stream_as_builtin_p.
3792 (streamer_read_string_cst): Rename from input_string_cst.
3793 (streamer_read_chain): Rename from lto_input_chain.
3794 (streamer_alloc_tree): Rename from lto_materialize_tree.
3795 (streamer_read_tree_body): Rename from lto_input_tree_pointers.
3796 (streamer_get_pickled_tree): Rename from lto_get_pickled_tree.
3797 (streamer_get_builtin_tree): Rename from lto_get_builtin_tree.
3798 (streamer_read_integer_cst): Rename from lto_input_integer_cst.
3799 (streamer_read_tree_bitfields): Rename from tree_read_bitfields.
3800 (streamer_write_chain): Rename from lto_output_chain.
3801 (streamer_write_tree_header): Rename from lto_output_tree_header.
3802 (streamer_pack_tree_bitfields): Rename from pack_value_fields.
3803 (streamer_write_tree_body): Rename from lto_output_tree_pointers.
3804 (streamer_write_integer_cst): Rename from lto_output_integer_cst.
3805 (streamer_write_builtin): Rename from lto_output_builtin_tree.
3806 (streamer_check_handled_ts_structures): Rename from
3807 check_handled_ts_structures.
3808 (streamer_tree_cache_insert): Rename from lto_streamer_cache_insert.
3809 (streamer_tree_cache_insert_at): Rename from
3810 lto_streamer_cache_insert_at.
3811 (streamer_tree_cache_append): Rename from lto_streamer_cache_append.
3812 (streamer_tree_cache_lookup): Rename from lto_streamer_cache_lookup.
3813 (streamer_tree_cache_get): Rename from lto_streamer_cache_get.
3814 (streamer_tree_cache_create): Rename from lto_streamer_cache_create.
3815 (streamer_tree_cache_delete): Rename from lto_streamer_cache_delete.
3816 * tree-streamer-out.c (write_string_cst): Rename from output_string_cst.
3817 (write_identifier): Rename from output_identifier.
3818 (write_ts_common_tree_pointers): Rename from
3819 lto_output_ts_common_tree_pointers.
3820 (write_ts_vector_tree_pointers): Rename from
3821 lto_output_ts_vector_tree_pointers.
3822 (write_ts_complex_tree_pointers): Rename from
3823 lto_output_ts_complex_tree_pointers.
3824 (write_ts_decl_minimal_tree_pointers): Rename from
3825 lto_output_ts_decl_minimal_tree_pointers.
3826 (write_ts_decl_common_tree_pointers): Rename from
3827 lto_output_ts_decl_common_tree_pointers.
3828 (write_ts_decl_non_common_tree_pointers): Rename from
3829 lto_output_ts_decl_non_common_tree_pointers.
3830 (write_ts_decl_with_vis_tree_pointers): Rename from
3831 lto_output_ts_decl_with_vis_tree_pointers.
3832 (write_ts_field_decl_tree_pointers): Rename from
3833 lto_output_ts_field_decl_tree_pointers.
3834 (write_ts_function_decl_tree_pointers): Rename from
3835 lto_output_ts_function_decl_tree_pointers.
3836 (write_ts_type_common_tree_pointers): Rename from
3837 lto_output_ts_type_common_tree_pointers.
3838 (write_ts_type_non_common_tree_pointers): Rename from
3839 lto_output_ts_type_non_common_tree_pointers.
3840 (write_ts_list_tree_pointers): Rename from
3841 lto_output_ts_list_tree_pointers.
3842 (write_ts_vec_tree_pointers): Rename from
3843 lto_output_ts_vec_tree_pointers.
3844 (write_ts_exp_tree_pointers): Rename from
3845 lto_output_ts_exp_tree_pointers.
3846 (write_ts_block_tree_pointers): Rename from
3847 lto_output_ts_block_tree_pointers.
3848 (write_ts_binfo_tree_pointers): Rename from
3849 lto_output_ts_binfo_tree_pointers.
3850 (write_ts_constructor_tree_pointers): Rename from
3851 lto_output_ts_constructor_tree_pointers.
3852 (write_ts_target_option): Rename from lto_output_ts_target_option.
3853 (write_ts_translation_unit_decl_tree_pointers): Rename from
3854 lto_output_ts_translation_unit_decl_tree_pointers.
3855 * tree-streamer.c (streamer_tree_cache_add_to_node_array):
3856 Rename from lto_streamer_cache_add_to_node_array.
3857 (streamer_tree_cache_insert_1): Rename from lto_streamer_cache_insert_1.
3858 (record_common_node): Rename from lto_record_common_node.
3860 * streamer-hooks.h (bitpack_d, lto_streamer_cache_d): Remove forward
3862 * data-streamer-in.c (lto_input_widest_uint_uleb128): Remove unused
3864 * data-streamer-out.c (lto_output_widest_uint_uleb128_stream): Remove
3866 * Makefile.in (lto-section-out.o): Add dependency on DATA_STREAMER_H.
3867 (ipa-reference.o): Likewise.
3868 * lto-section-out.c: Include data-streamer.h.
3869 * ipa-reference.c: Include data-streamer.h.
3871 2011-08-12 Nick Clifton <nickc@redhat.com>
3873 * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern.
3874 * doc/md.texi (cmpstrn): Note that the comparison stops if both
3875 fetched bytes are zero.
3877 (cmpmem): Note that the comparison does not stop if both of the
3878 fetched bytes are zero.
3880 2011-08-12 Uros Bizjak <ubizjak@gmail.com>
3882 * builtins.def (BUILT_IN_ICEIL{,F,L}, BUILT_IN_IFLOOR{,F,L}
3883 BUILT_IN_IRINT{,F,L}, BUILT_IN_IROUND{,F,L}: New builtin definitions.
3884 * convert.c (convert_to_integer): Convert to BUILT_IN_ICEIL,
3885 BUILT_IN_IFLOOR, BUILT_IN_IRINT or BUILT_INT_IROUND when converting
3886 to integer_type_node.
3887 * fold-const.c (tree_call_nonnegative_warnv_p): Handle BUILT_IN_ICEIL,
3888 BUILT_IN_IFLOOR, BUILT_IN_IRINT and BUILT_INT_IROUND.
3889 * builtins.c (expand_builtin_in): Ditto.
3890 (mathfn_built_in_1): Ditto.
3891 (expand_builtin_int_roundingfn): Handle BUILT_IN_ICEIL and
3893 (expand_builtin_int_roundingfn_2): Handle BUILT_IN_IRINT and
3895 (fold_fixed_mathfn): Canonicalize BUILT_IN_ICEIL, BUILTIN_IN_IFLOOR
3896 BUILT_IN_IRINT and BUILT_IN_IROUND to BUILT_IN_LCEIL,
3897 BUILTIN_IN_LFLOOR, BUILT_IN_LRINT and BUILT_IN_LROUND on ILP32 targets.
3899 2011-08-12 Richard Guenther <rguenther@suse.de>
3901 * tree-vrp.c (extract_range_from_unary_expr_1): Implement -X as 0 - X.
3903 2011-08-12 Romain Geissler <romain.geissler@gmail.com>
3905 * Makefile.in (PLUGIN_HEADERS): Add C_TREE_H.
3907 2011-08-12 Richard Sandiford <rdsandiford@googlemail.com>
3909 * config/arm/arm.c (get_label_padding): New function.
3910 (create_fix_barrier, arm_reorg): Use it.
3912 2011-08-11 Uros Bizjak <ubizjak@gmail.com>
3915 * config/i386/i386.md (*lea_5_zext): New.
3916 (*lea_6_zext): Ditto.
3917 * config/i386/predicates.md (const_32bit_mask): New predicate.
3918 (lea_address_operand): Reject AND.
3919 * config/i386/i386.c (ix86_decompose_address): Allow Dimode AND with
3920 const_32bit_mask immediate.
3921 (ix86_print_operand_address): Handle AND.
3922 (memory_address_length): Ditto.
3924 2011-08-11 Romain Geissler <romain.geissler@gmail.com>
3925 Brian Hackett <bhackett1024@gmail.com>
3927 * plugin.def: Add event for finish_decl.
3928 * plugin.c (register_callback, invoke_plugin_callbacks): Same.
3929 * c-decl.c (finish_decl): Invoke callbacks on above event.
3930 * doc/plugins.texi: Document above event.
3932 2011-08-11 Richard Guenther <rguenther@suse.de>
3934 * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid redundant
3935 lookups, make looking through aggregate copies stronger.
3937 2011-08-11 Richard Henderson <rth@redhat.com>
3940 * expr.c (fixup_args_size_notes): Accept and ignore normal calls.
3942 2011-08-11 Richard Guenther <rguenther@suse.de>
3944 * lto-cgraph.c (input_node): Use DECL_BUILT_IN.
3945 * tree-vrp.c (stmt_interesting_for_vrp): Likewise.
3946 (vrp_visit_stmt): Likewise.
3948 2011-08-11 Richard Guenther <rguenther@suse.de>
3951 * gimplify.c (gimplify_modify_expr_complex_part): Mark the
3952 load of the other piece with TREE_NO_WARNING.
3953 * tree-flow.h (warn_uninit): Adjust prototype.
3954 * tree-ssa.c (warn_uninit): Take uninitialized SSA name,
3955 the base variable and the expression that is used separately.
3956 Properly query all TREE_NO_WARNING flags.
3957 (struct walk_data): Remove.
3958 (warn_uninitialized_var): Likewise.
3959 (warn_uninitialized_vars): Do not walk gimple pieces but simply
3960 look at all SSA uses of the statement. Handle unused memory
3962 * tree-ssa-uninit.c (warn_uninitialized_phi): Adjust.
3964 2011-08-11 Kazuhiro Inaoka <kazuhiro.inaoka.ud@renesas.com>
3966 * config/rx/rx.md (movsicc): Allow register to register transfers.
3967 (*movsicc): Likewise.
3968 (*stcc): Restrict this pattern to EQ and NE compares.
3969 (*stcc_reg): New pattern. Works for any comparison but only for
3972 2011-08-11 Diego Novillo <dnovillo@google.com>
3974 * tree-streamer-out.c (lto_output_ts_decl_with_vis_tree_pointers):
3975 Call stream_write_tree instead of output_record_start.
3976 (lto_output_ts_binfo_tree_pointers): Likewise.
3978 * streamer-hooks.h (stream_write_tree): Move from tree-streamer.h.
3979 Convert it to a macro.
3980 (stream_read_tree): Likewise.
3982 * lto-streamer.h (lto_stream_as_builtin_p): Move ...
3983 * tree-streamer.h (lto_stream_as_builtin_p): ... here.
3985 * lto-streamer-in.c (lto_read_tree): Call lto_streamer_cache_append
3986 and tree_read_bitfields.
3987 * lto-streamer-out.c (lto_is_streamable): Move from lto-streamer.c