1 2011-10-15 Alan Modra <amodra@gmail.com>
4 * ifcvt.c (dead_or_predicable): Revert accidental commit with
5 HAVE_simple_return test.
7 2011-10-15 Alan Modra <amodra@gmail.com>
9 * ifcvt.c (dead_or_predicable): Disable if-conversion when
10 doing so is likely to kill a shrink-wrapping opportunity.
12 PR rtl-optimization/49941
13 * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
15 * rtl.h (set_return_jump_label): Declare.
16 * function.c (set_return_jump_label): New function, extracted..
17 (thread_prologue_and_epilogue_insns): ..from here. Use it in
18 another instance to set return jump_label.
19 * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
20 * reorg.c (find_end_label): Likewise.
22 2011-10-14 David S. Miller <davem@davemloft.net>
24 * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
25 with a more complete cpp test.
26 * config/sparc/linux64.h: Likewise.
27 * config/sparc/linux.h: Likewise.
28 * config/sparc/sparc.opt (sparc_debug): New target variable.
29 (mdebug): New target option.
30 * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
31 TARGET_DEBUG_OPTIONS): New defines.
32 * config/sparc/sparc.c (debug_target_flag_bits,
33 debug_target_flags): New functions.
34 (sparc_option_override): Add name strings back to cpu_table[].
35 Parse -mdebug string. When TARGET_DEBUG_OPTIONS is true, print
36 out the target flags before and after override processing as well
37 as the selected cpu. If MASK_V8PLUS, make sure that the selected
40 2011-10-15 Oleg Endo <oleg.endo@t-online.de>
43 * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
44 * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
45 * config/sh/sh.md (tstsi_t): Name existing insn. Make inner
46 and instruction commutative.
47 (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
48 tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
49 tstsi_t_zero_extract_subreg_xor_little,
50 tstsi_t_zero_extract_subreg_xor_big): New insns.
51 (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
53 (*andsi_compact): Reorder alternatives so that K08 is considered first.
55 2011-10-14 Eric Botcazou <ebotcazou@adacore.com>
58 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
59 processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
61 2011-10-14 Gerald Pfeifer <gerald@pfeifer.com>
63 * invoke.texi (AVR Options): Avoid \leq{}.
65 2011-10-14 Kai Tietz <ktietz@redhat.com>
67 * gimplify.c (gimplify_expr): Take care that for bitwise-binary
68 transformation the operands have compatible types.
70 2011-10-14 Jakub Jelinek <jakub@redhat.com>
72 * config/i386/sse.md (vec_widen_smult_hi_v8hi,
73 vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
74 vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
75 mode iterator and any_extend code iterator.
76 (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
77 (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
78 also for TARGET_SSE4_1 using pmuldq insn.
79 (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
80 (sse2_sse4_1): New code attr.
81 (udot_prodv4si): Macroize using any_extend code iterator.
82 (<s>dot_prodv8si): New expander.
84 2011-10-14 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
86 * config/i386/i386.c (atom_cost): Changed cost for loading
89 2011-10-14 Michael Meissner <meissner@linux.vnet.ibm.com>
91 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
92 change on October 11th, 2011.
94 2011-10-14 Jakub Jelinek <jakub@redhat.com>
96 * config/i386/sse.md (vec_interleave_high<mode>,
97 vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
98 * config/i386/i386.c (expand_vec_perm_interleave3): New function.
99 (ix86_expand_vec_perm_builtin_1): Call it.
101 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
103 Fix thinko from r179765
104 * config/avr/avr.c (avr_option_override): Don't override
105 flag_omit_frame_pointer if not actually needed.
107 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
110 * doc/invoke.texi (AVR Options): Document -mstrict-X.
112 * config/avr/avr.opt (-mstrict-X): New option.
113 (avr_strict_X): New variable reflecting -mstrict-X.
114 * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
115 outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
116 (avr_legitimate_address_p): Pass outer_code to
117 avr_reg_ok_for_addr_p and use that function in case PLUS.
118 (avr_mode_code_base_reg_class): Depend on avr_strict_X.
119 (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
120 (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
122 2011-10-14 Jakub Jelinek <jakub@redhat.com>
124 * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
127 * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
128 (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
129 Use <sseinsnmode> instead of TI in mode attr.
131 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
133 * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
134 * config/arm/linux-atomic.c: Change comment to point to 64bit version.
135 (SYNC_LOCK_RELEASE): Instantiate 64bit version.
136 * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
138 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
140 * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
141 (arm_output_strex): Support strexd.
142 (arm_output_it): New helper to output it in Thumb2 mode only.
143 (arm_output_sync_loop): Support DI mode. Change comment to
144 not support const_int.
145 (arm_expand_sync): Support DI mode.
146 * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
148 * config/arm/iterators.md (NARROW): move from sync.md.
149 (QHSD): New iterator for all current ARM integer modes.
150 (SIDI): New iterator for SI and DI modes only.
151 * config/arm/sync.md (sync_predtab): New mode_attr.
152 (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
153 (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
154 (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
155 (sync_nandsi): Fold into sync_nand<mode>.
156 (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
157 (sync_new_nandsi): Fold into sync_new_nand<mode>.
158 (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
159 (sync_old_nandsi): Fold into sync_old_nand<mode>.
160 (sync_compare_and_swap<mode>): Support SI & DI.
161 (sync_lock_test_and_set<mode>): Likewise.
162 (sync_<sync_optab><mode>): Likewise.
163 (sync_nand<mode>): Likewise.
164 (sync_new_<sync_optab><mode>): Likewise.
165 (sync_new_nand<mode>): Likewise.
166 (sync_old_<sync_optab><mode>): Likewise.
167 (sync_old_nand<mode>): Likewise.
168 (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
169 (arm_sync_lock_test_and_setsi): Likewise.
170 (arm_sync_new_<sync_optab>si): Likewise.
171 (arm_sync_new_nandsi): Likewise.
172 (arm_sync_old_<sync_optab>si): Likewise.
173 (arm_sync_old_nandsi): Likewise.
174 (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
175 (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
176 (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
177 (arm_sync_new_nand<mode> NARROW): Likewise.
178 (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
179 (arm_sync_old_nand<mode> NARROW): Likewise.
181 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
184 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
186 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
188 * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
190 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
192 * doc/invoke.texi ([Wformat-zero-length]): Tidy.
194 2011-10-14 Jakub Jelinek <jakub@redhat.com>
196 * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
197 on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
199 2011-10-14 Richard Guenther <rguenther@suse.de>
201 PR tree-optimization/50723
202 * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
204 2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
206 * gengtype.c (files_rules): Added rules for objc/objc-map.h and
209 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
212 * c-family/c.opt ([Wformat-zero-length]): Add C++ and Objective-C++.
213 * doc/invoke.texi: Update.
215 2011-10-14 Iain Sandoe <iains@gcc.gnu.org>
218 * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
219 build for powerpc targets. (darwin_patch_builtins): Only build for
222 2011-10-14 Jakub Jelinek <jakub@redhat.com>
224 * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
225 (avx_cvtdq2pd256_2): ... this.
226 (sseunpackfltmode): New mode attr.
227 (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
228 vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
229 using VI2_AVX2 iterator.
230 (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
232 2011-10-13 David S. Miller <davem@davemloft.net>
234 * config/sparc/sparc.md (plusminus): New code iterator.
235 (plusminus_insn): New code attr.
236 (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
237 using plusminus and plusminus_insn.
238 (fpadd64_vis, fpsub64_vis): Likewise.
240 2011-10-13 Richard Henderson <rth@redhat.com>
242 * doc/md.texi (vec_perm): Document fallback to byte permutation.
243 * genopinit.c (optabs): Add vec_perm_const.
244 * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
245 Reject non-vector modes. Allow fallback to byte permutation.
246 (expand_vec_perm_expr_1): Split out from ...
247 (expand_vec_perm_expr): ... here. Allow fallback to byte permutation.
248 * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
249 * tree-vect-generic.c (lower_vec_perm): Update for name change.
251 2011-10-13 Richard Henderson <rth@redhat.com>
253 * config/rs6000/altivec.md (vec_permv16qi): New pattern.
255 * config/rs6000/spu.md (vec_permv16qi): New pattern.
257 * config/i386/i386.c (ix86_expand_vec_perm_const): New.
258 * config/i386/i386-protos.h: Update.
259 * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
260 (vec_perm_const<VEC_PERM_CONST>): New expander.
262 * optabs.c (expand_vector_broadcast): New.
263 (expand_binop): Expand scalar shifts of vectors to vector shifts
264 of vectors, if the former isn't supported.
265 * tree-vect-generic.c (expand_vector_operations_1): Don't do that
266 here; always simplify to scalar shift of vector if possible.
268 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
269 test for vector splat.
271 2011-10-13 Jakub Jelinek <jakub@redhat.com>
273 * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
275 2011-10-13 Jakub Jelinek <jakub@redhat.com>
276 Richard Guenther <rguenther@suse.de>
278 * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
279 or complex vars even if their DECL_UID is in not_reg_needs bitmap.
281 2011-10-13 Jakub Jelinek <jakub@redhat.com>
283 * config/i386/sse.md (reduc_umin_v8hi): New pattern.
284 * config/i386/i386.c (ix86_build_const_vector): Handle
285 also V32QI, V16QI, V16HI and V8HI modes.
286 (emit_reduc_half): New function.
287 (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
288 Use emit_reduc_half helper function.
290 2011-10-13 Lawrence Crowl <crowl@google.com>
291 Diego Novillo <dnovillo@google.com>
293 * lto-streamer-in.c (input_struct_function_base): Factor out of ...
294 (input_function): ... here.
295 * lto-streamer-out.c (output_struct_function_base): Factor out of ...
296 (output_function): ... here.
298 2011-10-13 Gabriel Charette <gchare@google.com>
299 Diego Novillo <dnovillo@google.com>
301 * streamer-hooks.h (struct streamer_hooks): Add hooks
302 input_location and output_location.
303 * lto-streamer-in.c (lto_input_location): Use
304 streamer_hooks.input_location, if set.
305 * lto-streamer-out.c (lto_output_location): Use
306 streamer_hooks.output_location, if set.
308 2011-10-13 Eric Botcazou <ebotcazou@adacore.com>
310 * doc/invoke.texi (SPARC options): Document -mfix-at697f.
311 * config/sparc/sparc.opt (mfix-at697f): New option.
312 * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
313 (sparc_reorg): New function.
315 2011-10-13 Richard Guenther <rguenther@suse.de>
317 PR tree-optimization/50712
318 * ipa-split.c (split_function): Always re-gimplify parameters
319 when they are not gimple vals before passing them. Properly
320 check for type compatibility.
322 2011-10-13 Tom de Vries <tom@codesourcery.com>
324 * function.c (gimplify_parameters): Set number of arguments of call to
325 BUILT_IN_ALLOCA_WITH_ALIGN to 2.
327 2011-10-13 Tom de Vries <tom@codesourcery.com>
329 * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
330 for static const strings.
331 * varasm.c (build_constant_desc): Generate the memory location of the
332 constant using gen_const_mem.
334 2011-10-13 Richard Guenther <rguenther@suse.de>
336 PR tree-optimization/50698
337 * tree-data-ref.c (split_constant_offset_1): Also process
340 2011-10-12 David S. Miller <davem@davemloft.net>
342 * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
343 (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
345 (fpmerge_vis): Remove inaccurate comment, represent using vec_select
347 (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
348 (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
349 Reimplement as unspecs and remove inaccurate comments.
350 (vis3_shift_patname): New code attr.
351 (<vis3_shift_insn><vbits>_vis): Rename to
352 "v<vis3_shift_patname><mode>3".
353 (vis3_addsub_ss_patname): New code attr.
354 (<vis3_addsub_ss_insn><vbits>_vis): Rename to
355 "<vis3_addsub_ss_patname><mode>3".
356 * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
357 accommodate pattern name changes.
359 * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
360 to zero when assembler lacks support for such instructions.
361 * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
362 and MASK_FMAF in defaults when assembler lacks necessary support.
364 2011-10-12 Jakub Jelinek <jakub@redhat.com>
366 * config/i386/sse.md (vec_unpacks_lo_<mode>,
367 vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
368 vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
369 * config/i386/i386.c (ix86_expand_sse_unpack): Handle
370 V32QImode, V16HImode and V8SImode for TARGET_AVX2.
372 * config/i386/sse.md (vec_avx2): New mode_attr.
373 (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
374 (mul<mode>3): ... this.
376 * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
377 * config/i386/i386.c (ix86_expand_vec_perm): Handle
378 V16QImode and V32QImode for TARGET_AVX2.
379 (MAX_VECT_LEN): Increase to 32.
380 (expand_vec_perm_blend): Add support for 32-byte integer
381 vectors with TARGET_AVX2.
382 (valid_perm_using_mode_p): New function.
383 (expand_vec_perm_pshufb): Add support for 32-byte integer
384 vectors with TARGET_AVX2.
385 (expand_vec_perm_vpshufb2_vpermq): New function.
386 (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
387 (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
389 (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
390 and expand_vec_perm_vpshufb2_vpermq_even_odd.
391 * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
392 32-byte integer vector modes.
393 (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
394 (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
395 (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
397 (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
398 match_dup, instead add 4 new operands and require they have
399 right cross-lane values.
400 (avx2_permv4di): Change into define_expand.
401 (avx2_permv4di_1): New instruction.
402 (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
403 for "xm" constrained operand.
404 (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
406 * config/i386/sse.md (avx2_gathersi<mode>,
407 avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
408 match_scratch, change memory_operand to register_operand,
409 add (mem:BLK (scratch)) use.
410 (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
411 *avx2_gatherdi<mode>256): Add clobber of match_scratch,
412 add earlyclobber to the output operand and match_scratch,
413 add (mem:BLK (scratch)) use, change the other mem to match_operand.
414 Use %p6 instead of %c6 in the pattern.
415 * config/i386/i386.c (ix86_expand_builtin): Adjust for
416 operand 2 being a Pmode register_operand instead of memory_operand.
418 2011-10-12 Kai Tietz <ktietz@redhat.com>
420 * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
422 2011-10-12 Steve Ellcey <sje@cup.hp.com>
424 * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
426 2011-10-12 Richard Guenther <rguenther@suse.de>
428 * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
429 of the first store we visit in a basic-block.
430 (get_continuation_for_phi): Search for a candidate VUSE that
431 might dominates all others. Do pairwise disambiguation against
434 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
436 PR tree-optimization/50189
437 * tree-vrp.c (extract_range_from_assert): Use the type of
438 the variable, not the limit.
440 2011-10-12 Richard Guenther <rguenther@suse.de>
442 PR tree-optimization/50700
443 * tree-object-size.c (addr_object_size): Simplify and treat
444 MEM_REF bases consistently.
446 2011-10-12 Bernd Schmidt <bernds@codesourcery.com>
448 * function.c (prepare_shrink_wrap, bb_active_p): New function.
449 (thread_prologue_and_epilogue_insns): Use bb_active_p.
450 Call prepare_shrink_wrap, then recompute bb_active_p for the
453 2011-10-12 Joseph Myers <joseph@codesourcery.com>
456 * convert.c (convert_to_integer): Do not narrow operands of
459 2011-10-12 Nick Clifton <nickc@redhat.com>
461 * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro. Used to
462 emit a .eabi_attribute assembler directive, possibly with a
464 * config/arm/arm.c (arm_file_start): Use the new macro.
465 * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
467 2011-10-12 Georg-Johann Lay <avr@gjlay.de>
470 * config/avr/avr.md (*movqi): Rename to movqi_insn.
471 (*call_insn): Rename to call_insn.
472 (*call_value_insn): Rename to call_value_insn.
473 * config/avr/avr.c (avr_2word_insn_p): New static function.
474 (jump_over_one_insn_p): Use it.
476 2011-10-12 Richard Sandiford <richard.sandiford@linaro.org>
478 * expr.h (copy_blkmode_to_reg): Declare.
479 * expr.c (copy_blkmode_to_reg): New function.
480 (expand_assignment): Don't expand register RESULT_DECLs before
481 the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
482 RESULT_DECL register.
483 (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
484 * stmt.c (expand_return): Move BLKmode-to-register code into
487 2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
490 * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
491 (mov<F:mode>cc): Likewise.
493 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
495 * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
497 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
499 * tree.h (built_in_decls): Delete old interface with two parallel
500 arrays to hold standard builtin declarations, and replace it with
501 a function based interface that can support creating builtins on
502 the fly in the future. Change all uses, and poison the old
503 names. Make sure 0 is not a legitimate builtin index.
504 (implicit_built_in_decls): Ditto.
505 (built_in_info): Ditto.
506 (BUILTIN_VALID_P): Ditto.
507 (builtin_decl_explicit): Ditto.
508 (builtin_decl_implicit): Ditto.
509 (set_builtin_decl): Ditto.
510 (set_builtin_decl_implicit_p): Ditto.
511 (builtin_decl_explicit_p): Ditto.
512 (builtin_decl_implicit_p): Ditto.
513 * tree-complex.c (expand_complex_libcall): Ditto.
514 * tree-loop-distribution.c (generate_memset_zero): Ditto.
515 * tree-ssa-strlen.c (get_string_length): Ditto.
516 (handle_builtin_strcpy): Ditto.
517 (handle_builtin_strcat): Ditto.
518 * tree.c (iterative_hash_expr): Ditto.
519 (local_define_builtin): Ditto.
520 (build_common_builtin_nodes): Ditto.
521 * builtins.c (built_in_decls): Ditto.
522 (implicit_built_in_decls): Ditto.
523 (built_in_info): Ditto
524 (expand_builtin_classify_type): Ditto.
525 (mathfn_built_in_1): Ditto.
526 (expand_builtin_cexpi): Ditto.
527 (expand_builtin_mempcpy_args): Ditto.
528 (expand_builtin_stpcpy): Ditto.
529 (gimplify_va_arg_expr): Ditto.
530 (expand_builtin_sync_operation): Ditto.
531 (build_builtin_expect_predicate): Ditto.
532 (fold_builtin_memory_op): Ditto.
533 (fold_builtin_strcpy): Ditto.
534 (fold_builtin_stpcpy): Ditto.
535 (fold_builtin_strncpy): Ditto.
536 (fold_builtin_interclass_mathfn): Ditto.
537 (fold_builtin_classify): Ditto.
538 (fold_builtin_2): Ditto.
539 (fold_builtin_strstr): Ditto.
540 (fold_builtin_strrchr): Ditto.
541 (fold_builtin_strpbrk): Ditto.
542 (fold_builtin_strcat): Ditto.
543 (fold_builtin_strncat): Ditto.
544 (fold_builtin_strcspn): Ditto.
545 (fold_builtin_fputs): Ditto.
546 (fold_builtin_sprintf): Ditto.
547 (fold_builtin_snprintf): Ditto.
548 (expand_builtin_memory_chk): Ditto.
549 (fold_builtin_memory_chk): Ditto.
550 (fold_builtin_stxcpy_chk): Ditto.
551 (fold_builtin_strncpy_chk): Ditto.
552 (fold_builtin_strcat_chk): Ditto.
553 (fold_builtin_strncat_chk): Ditto.
554 (fold_builtin_sprintf_chk_1): Ditto.
555 (fold_builtin_snprintf_chk_1): Ditto.
556 (fold_builtin_printf): Ditto.
557 (fold_builtin_fprintf): Ditto.
558 (fold_call_stmt): Ditto.
559 (set_builtin_user_assembler_name): Ditto.
560 * tree-emutls.c (emutls_common_1): Ditto.
561 * omp-low.c (scan_omp): Ditto.
562 (lower_rec_input_clauses): Ditto.
563 (lower_reduction_clauses): Ditto.
564 (expand_parallel_call): Ditto.
565 (expand_task_call): Ditto.
566 (maybe_catch_exception): Ditto.
567 (optimize_omp_library_calls): Ditto.
568 (expand_omp_for_generic): Ditto.
569 (expand_omp_for_static_nochunk): Ditto.
570 (expand_omp_for_static_chunk): Ditto.
571 (expand_omp_sections): Ditto.
572 (expand_omp_atomic_fetch_op): Ditto.
573 (expand_omp_atomic_pipeline): Ditto.
574 (expand_omp_atomic_mutex): Ditto.
575 (lower_omp_single_simple): Ditto.
576 (lower_omp_single_copy): Ditto.
577 (lower_omp_master): Ditto.
578 (lower_omp_ordered): Ditto.
579 (lower_omp_critical): Ditto.
580 * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
581 * builtins.c (DEF_BUILTIN_STUB): Ditto.
582 (BUILT_IN_NONE): Ditto.
583 * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
584 * gimple-low.c (lower_function_body): Ditto.
585 (lower_builtin_setjmp): Ditto.
586 * c-decl.c (merge_decls): Ditto.
587 * tree-eh.c (lower_resx): Ditto.
589 (lower_eh_dispatch): Ditto.
590 * function (gimplify_parameters): Ditto.
591 * c-typeck.c (build_function_call_vec): Ditto.
592 * gimplify.c (build_stack_save_restore): Ditto.
593 (gimplify_vla_decl): Ditto.
594 (gimplify_modify_expr_to_memcpy): Ditto.
595 (gimplify_modify_expr_to_memset): Ditto.
596 (gimplify_variable_sized_compare): Ditto.
597 (gimplify_function_tree): Ditto.
598 * calls.c (emit_call_1): Ditto.
599 * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
600 * tree-nested.c (convert_nl_goto_reference): Ditto.
601 (convert_tramp_reference_op): Ditto.
602 (finalize_nesting_tree_1): Ditto.
603 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
604 (tree_ssa_prefetch_arrays): Ditto.
605 * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
606 * system.h (built_in_decls): Ditto.
607 (implicit_built_in_decls): Ditto.
608 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
609 * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
610 * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
611 (ix86_veclibabi_svml): Ditto.
612 (ix86_veclibabi_acml): Ditto.
613 * config/vms/vms.c (vms_patch_builtins): Ditto.
614 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
615 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
616 (rs6000_builtin_vectorized_libmass): Ditto.
617 (rs6000_init_builtins): Ditto.
618 * config/darwin.c (darwin_override_options): Ditto.
619 (darwin_patch_builtin): Ditto.
620 (darwin_rename_builtins): Ditto.
621 * config/pa/pa.c (pa_init_builtins): Ditto.
623 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
625 * tree.h (copy_ref_info): Expose existing function.
626 * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
627 * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
629 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
631 * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
633 (avr_regno_mode_code_ok_for_base_p): New prototype.
634 * config/avr/avr.h (BASE_REG_CLASS): Remove.
635 (REGNO_OK_FOR_BASE_P): Remove.
636 (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
637 (REG_OK_FOR_BASE_STRICT_P): Remove.
638 (MODE_CODE_BASE_REG_CLASS): New define.
639 (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
640 * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
641 (avr_regno_mode_code_ok_for_base_p): New function.
642 (avr_reg_ok_for_addr_p): New static function.
643 (avr_legitimate_address_p): Use it. Beautify.
645 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
648 * config/avr/avr.md (cc): Add out_plus attribute alternative.
649 (addsi3): Use it. Adapt avr_out_plus to new prototype. Use
650 avr_out_plus for all CONST_INT addends.
651 * config/avr/avr-protos.h (avr_out_plus): Change prototype.
652 * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
654 (avr_out_plus_1): Change prototype and report effect on cc0.
655 (avr_out_plus): Ditto.
656 (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
658 2011-10-11 H.J. Lu <hongjiu.lu@intel.com>
660 * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
663 2011-10-11 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
665 * doc/invoke.texi: Document new warning.
666 * common.opt (Wvector-operation-performance): Define new warning.
667 * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
669 (exapnd_vector_parallel): Warn about expanded vector operation.
670 (lower_vec_shuffle): Warn about expanded vector operation.
671 * c-typeck.c (c_build_vec_perm_expr): Store correct location
672 when creating VEC_PERM_EXPR.
674 2011-10-11 Richard Guenther <rguenther@suse.de>
676 PR tree-optimization/50204
677 * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
678 two argument handling from ...
679 (get_continuation_for_phi): ... here. Handle arbitrary number
682 2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
685 * c-family/c-pretty-print.c (pp_c_floating_constant): Output
686 max_digits10 (in the ISO C++ WG N1822 sense) decimal digits.
688 2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
690 * modulo-sched.c: Fix comment typo. Mention the possibility
691 of using scheduling windows of II+1 cycles.
693 2011-10-11 Tristan Gingold <gingold@adacore.com>
695 * doc/invoke.texi (C Dialect Options): Document
696 -fallow-parameterless-variadic-functions.
697 * c-parser.c (c_parser_parms_list_declarator): Handle it.
699 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
701 * config/avr/avr.c (avr_option_override): Set
702 flag_omit_frame_pointer to 0 if frame pointer is needed for unwinding.
704 2011-10-10 Uros Bizjak <ubizjak@gmail.com>
707 * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm. Move from enum
708 optab_index to enum direct_optab_index.
709 (vec_perm_optab): Update.
711 2011-10-10 Anatoly Sokolov <aesok@post.ru>
713 * config/cris/cris.c (cris_preferred_reload_class): New function.
714 (TARGET_PREFERRED_RELOAD_CLASS): Define.
715 * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
717 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
719 * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
721 (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
722 (*tablejump_enh, *tablejump): Remove insns.
723 * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
724 EIJMP for indirect jump. Use LPM Z+ where available.
726 2011-10-10 Richard Henderson <rth@redhat.com>
728 * doc/md.texi (vec_perm_const): Fix typo in cindex.
730 2011-10-10 Kirill Yukhin <kirill.yukhin@intel.com>
731 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
733 * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
735 2011-10-10 Richard Guenther <rguenther@suse.de>
738 * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
739 mark symbols for renaming. Append the VUSE to all statements
740 that possibly can have one.
742 2011-10-10 Richard Guenther <rguenther@suse.de>
744 * ipa-split.c (pass_split_functions): Add verification TODOs.
745 (pass_feedback_split_functions): Likewise.
747 2011-10-10 Richard Guenther <rguenther@suse.de>
750 * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
751 only when optimizing.
753 2011-10-10 Nick Clifton <nickc@redhat.com>
756 * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
757 df_get_live_out instead of accessing the bitmaps directly.
758 (execute_compare_elim_after_reload): Remove calls to df_set_flags,
759 df_live_add_problem and df_analyze.
761 2011-10-10 Michael Matz <matz@suse.de>
764 * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
766 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
768 * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
769 (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
770 (node_sched_params): Remove first_reg_move and nreg_moves.
771 (ps_num_consecutive_stages, extend_node_sched_params): New functions.
772 (update_node_sched_params): Move up file.
773 (print_node_sched_params): Print the stage. Don't dump info related
774 to first_reg_move and nreg_moves.
775 (set_columns_for_row): New function.
776 (set_columns_for_ps): Move up file and use set_columns_for_row.
777 (schedule_reg_move): New function.
778 (schedule_reg_moves): Call extend_node_sched_params and
779 schedule_reg_move. Extend size of uses bitmap. Initialize
780 num_consecutive_stages. Return false if a move could not be
782 (apply_reg_moves): Don't emit moves here.
783 (permute_partial_schedule): Handle register moves.
784 (duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
785 to the same stage-count test as ddg nodes.
786 (generate_prolog_epilog): Update calls accordingly.
787 (sms_schedule): Allow move-scheduling to add a new first stage.
789 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
791 * modulo-sched.c (ps_insn): Adjust comment.
792 (ps_reg_move_info): New structure.
793 (partial_schedule): Add reg_moves field.
794 (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
795 (node_sched_params): Turn first_reg_move into an identifier.
796 (ps_reg_move): New function.
797 (ps_rtl_insn): Cope with register moves.
798 (ps_first_note): Adjust comment and assert that the instruction
799 isn't a register move.
800 (node_sched_params): Replace with...
801 (node_sched_param_vec): ...this vector.
802 (set_node_sched_params): Adjust accordingly.
803 (print_node_sched_params): Take a partial schedule instead of a ddg.
804 Use ps_rtl_insn and ps_reg_move.
805 (generate_reg_moves): Rename to...
806 (schedule_reg_moves): ...this. Remove rescan parameter. Record each
807 move in the partial schedule, but don't emit it here. Don't perform
808 register substitutions here either.
809 (apply_reg_moves): New function.
810 (duplicate_insns_of_cycles): Use register indices directly,
811 rather than finding instructions using PREV_INSN. Use ps_reg_move.
812 (sms_schedule): Call schedule_reg_moves before committing to
813 a partial schedule. Try the next ii if the schedule fails.
814 Use apply_reg_moves instead of generate_reg_moves. Adjust
815 call to print_node_sched_params. Free node_sched_param_vec
816 instead of node_sched_params.
817 (create_partial_schedule): Initialize reg_moves.
818 (free_partial_schedule): Free reg_moves.
820 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
822 * modulo-sched.c (ps_insn): Replace node field with an identifier.
823 (SCHED_ASAP): Replace with..
824 (NODE_ASAP): ...this macro.
825 (SCHED_PARAMS): New macro.
826 (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
827 (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
828 (node_sched_params): Remove asap.
829 (ps_rtl_insn, ps_first_note): New functions.
830 (set_node_sched_params): Use XCNEWVEC. Don't copy across the
832 (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
833 (generate_reg_moves): Pass ids to the SCHED_* macros.
834 (update_node_sched_params): Take a ps insn identifier rather than
835 a node as parameter. Use ps_rtl_insn.
836 (set_columns_for_ps): Update for above field and SCHED_* macro changes.
837 (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
838 (optimize_sc): Update for above field and SCHED_* macro changes.
839 Update calls to try_scheduling_node_in_cycle and
840 update_node_sched_params.
841 (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
842 macro changes. Use ps_rtl_insn and ps_first_note.
843 (sms_schedule): Pass ids to the SCHED_* macros.
844 (get_sched_window): Adjust for above field and SCHED_* macro changes.
845 Use NODE_ASAP instead of SCHED_ASAP.
846 (try_scheduling_node_in_cycle): Remove node parameter. Update
847 call to ps_add_node_check_conflicts. Pass ids to the SCHED_* macros.
848 (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
849 (ps_insert_empty_row): Adjust for above field changes.
850 (compute_split_row): Use ids rather than nodes.
851 (verify_partial_schedule): Adjust for above field changes.
852 (print_partial_schedule): Use ps_rtl_insn.
853 (create_ps_insn): Take an id rather than a node.
854 (ps_insn_find_column): Adjust for above field changes.
856 (ps_insn_advance_column): Adjust for above field changes.
857 (add_node_to_ps): Remove node parameter. Update call to
859 (ps_has_conflicts): Use ps_rtl_insn.
860 (ps_add_node_check_conflicts): Replace node parameter than an id.
862 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
864 * modulo-sched.c (undo_replace_buff_elem): Delete.
865 (generate_reg_moves): Don't build and return an undo list.
866 (free_undo_replace_buff): Delete.
867 (sms_schedule): Adjust call to generate_reg_moves.
868 Don't call free_undo_replace_buff.
870 2011-10-10 Matthias Klose <doko@ubuntu.com>
872 * common/config/m32c: Remove empty directory.
874 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
876 * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
878 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
881 * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
884 2011-10-09 Eric Botcazou <ebotcazou@adacore.com>
886 * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
887 the replacement if the conversion to the LHS type is not useless.
889 2011-10-09 Ira Rosen <ira.rosen@linaro.org>
891 PR tree-optimization/50635
892 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
893 DEF_STMT to the list of statements to be replaced by the
895 (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
897 2011-10-09 Anatoly Sokolov <aesok@post.ru>
899 * system.h: Commit forgotten hunk in previous patch.
900 (OUTPUT_ADDR_CONST_EXTRA): Poison.
902 2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
905 * doc/objc.texi (Garbage Collection): Updated example to protect
906 +initialize against execution in subclasses.
908 2011-10-07 Richard Henderson <rth@redhat.com>
910 * doc/extend.texi (__builtin_shuffle): Improve the description to
911 include the modulus of the selector. Mention OpenCL.
912 * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
914 * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
915 * genopinit.c (optabs): Rename vshuffle to vec_perm.
916 * c-typeck.c (c_build_vec_perm_expr): Rename from
917 c_build_vec_shuffle_expr. Update for name changes.
918 * optabs.c (expand_vec_perm_expr_p): Rename from
919 expand_vec_shuffle_expr_p.
920 (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
921 * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
922 (vec_perm_optab): Rename from vshuffle_optab.
923 * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
924 c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
925 tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
927 * config/i386/i386.c (ix86_expand_vec_perm): Rename from
928 ix86_expand_vshuffle.
929 * config/i386/i386-protos.h: Update.
930 * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
931 (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
933 2011-10-07 Richard Henderson <rth@redhat.com>
935 * config/i386/predicates.md (avx2_pblendw_operand): New.
936 * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
937 (avx2_pblendw, *avx2_pblendw): New expander and insn.
939 2011-10-07 Richard Henderson <rth@redhat.com>
941 * config/i386/i386.c (bdesc_args): Update code for
942 __builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
943 and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
944 (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
945 * config/i386/sse.md (mode iterator V16): Add V2TI.
946 (mode iterator SSESCALARMODE): Use V2TI not V4DI.
947 (mode attr ssse3_avx2): Add V2TI.
948 (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
950 2011-10-07 David S. Miller <davem@davemloft.net>
953 * configure.ac: Add .register directives to VIS3 test.
954 * configure: Regenerate.
956 2011-10-07 Richard Henderson <rth@redhat.com>
958 * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
960 2011-10-07 Richard Henderson <rth@redhat.com>
963 * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
965 2011-10-07 Andrew Stubbs <ams@codesourcery.com>
967 * config/arm/predicates.md (shift_amount_operand): Remove constant
969 (shift_operator): Check range of constants for all shift operators.
971 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
973 * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
974 Load GOT pointer for non-pic builds.
975 (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
976 (s390_emit_call): Likewise.
978 2011-10-07 Tom de Vries <tom@codesourcery.com>
981 * tree.c (build_common_builtin_nodes): Add local_define_builtin for
982 BUILT_IN_ALLOCA_WITH_ALIGN. Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
984 * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
985 arglist. Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
986 (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
987 (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
988 * tree-ssa-ccp.c (evaluate_stmt): Set align for
989 BUILT_IN_ALLOCA_WITH_ALIGN.
990 (fold_builtin_alloca_for_var): Rename to ...
991 (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
992 BUILT_IN_ALLOCA_WITH_ALIGN argument.
993 (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
994 fold_builtin_alloca_with_align.
995 (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
996 * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
998 * ipa-pure-const.c (special_builtin_state): Handle
999 BUILT_IN_ALLOCA_WITH_ALIGN.
1000 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
1001 (call_may_clobber_ref_p_1): Same.
1002 * function.c (gimplify_parameters): Lower vla to
1003 BUILT_IN_ALLOCA_WITH_ALIGN.
1004 * gimplify.c (gimplify_vla_decl): Same.
1005 * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1006 * tree-mudflap.c (mf_xform_statements): Same.
1007 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
1008 (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
1009 * varasm.c (incorporeal_function_p): Same.
1010 * tree-object-size.c (alloc_object_size): Same.
1011 * gimple.c (gimple_build_call_from_tree): Same.
1013 2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
1015 * function.c (frame_required_for_rtx): Remove function.
1016 (requires_stack_frame_p): New arg set_up_by_prologue. All callers
1017 changed. Compute a set of mentioned registers and compare against
1018 the new arg rather than calling frame_required_for_rtx.
1019 (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
1020 reg set. Convert the unconverted_simple_returns mechanism to store
1021 jump insns rather than their basic blocks. Also check the
1022 orig_entry_edge destination for new blocks.
1024 2011-10-07 Jakub Jelinek <jakub@redhat.com>
1026 PR tree-optimization/50650
1027 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
1028 call vect_is_simple_cond here, instead fail if cond_expr isn't
1029 COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
1030 for cond_expr's first operand.
1031 * tree-vect-stmts.c (vect_is_simple_cond): Static again.
1032 * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
1034 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1036 * config/s390/s390.md (DWH, dwh): New mode macros.
1037 ("umulsidi3"): Extend to support "umulditi3" as well.
1039 2011-10-07 Uros Bizjak <ubizjak@gmail.com>
1040 H.J. Lu <hongjiu.lu@intel.com>
1043 * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1044 integer PLUS RTX to a register to improve address combine.
1046 2011-10-06 Richard Henderson <rth@redhat.com>
1048 * combine-stack-adjust.c (maybe_move_args_size_note): Add after
1049 parameter; use it to decide whether to merge two notes.
1050 (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
1051 for the deallocation case as well.
1053 2011-10-06 Anatoly Sokolov <aesok@post.ru>
1055 * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
1056 * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
1057 * doc/tm.texi: Regenerate.
1058 * target.def (output_addr_const_extra): Use
1059 hook_bool_FILEptr_rtx_false.
1060 * targhooks.c (default_asm_output_addr_const_extra): Remove.
1061 * targhooks.h (default_asm_output_addr_const_extra): Remove.
1062 * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
1063 * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
1065 2011-10-06 David S. Miller <davem@davemloft.net>
1067 * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
1068 (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
1069 SI mode 64-bit code gen case explicitly zero-extend and truncate.
1070 (*popcount<mode>_sp64): Split up into...
1071 (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
1072 SImode case use truncate.
1073 (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
1074 subtract so the compiler can optimize it.
1075 (SIDI): Remove unused mode iterator.
1077 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
1079 * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
1080 on the orig_entry_edge. Don't account for it in prologue_clobbered.
1082 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1084 PR tree-optimization/50596
1085 * tree-vectorizer.h (vect_is_simple_cond): New prototype.
1086 (NUM_PATTERNS): Change to 6.
1087 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
1089 (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
1090 (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
1091 if it already has one, and don't set STMT_VINFO_VECTYPE in it
1092 if it is already set.
1093 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
1094 COND_EXPR in pattern stmts.
1095 (vect_is_simple_cond): No longer static.
1097 2001-10-06 Richard Henderson <rth@redhat.com>
1099 * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
1100 * config/i386/sse.md (sseshuffint): Remove.
1101 (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
1102 (VSHUFFLE_AVX2): New mode iterator.
1103 (vshuffle<mode>): Use it.
1104 (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
1106 * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
1107 for vector_all_ones_operand.
1108 (ix86_expand_int_vcond): Distinguish between comparison mode
1109 and data mode. Allow them to differ.
1110 (ix86_expand_vshuffle): Don't force data mode to match maskmode.
1112 2001-10-06 Richard Henderson <rth@redhat.com>
1114 * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1115 mask operand. Tidy the code.
1117 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1119 * tree-vect-patterns.c (vect_pattern_recog_1): Use
1120 vect_recog_func_ptr typedef for the first argument.
1121 (vect_pattern_recog): Rename vect_recog_func_ptr variable
1122 to vect_recog_func, use vect_recog_func_ptr typedef for it.
1124 PR tree-optimization/49279
1125 * tree-ssa-structalias.c (find_func_aliases): Don't handle
1127 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
1128 restrict propagation.
1129 * tree-ssa.c (useless_type_conversion_p): Don't return false
1130 if TYPE_RESTRICT differs.
1132 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
1134 * function.c (thread_prologue_and_epilogue_insns): Build a vector
1135 of unconverted simple return blocks rather than trying to
1136 recompute them later based on bb_flags bitmap tests.
1138 2011-10-06 Michael Matz <matz@suse.de>
1140 * tree-flow.h (get_var_ann): Don't declare.
1141 * tree-flow-inline.h (get_var_ann): Remove.
1142 (set_is_used): Use var_ann, not get_var_ann.
1143 * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
1144 * tree-profile.c (gimple_gen_edge_profiler): Call
1145 find_referenced_var_in.
1146 (gimple_gen_interval_profiler): Ditto.
1147 (gimple_gen_pow2_profiler): Ditto.
1148 (gimple_gen_one_value_profiler): Ditto.
1149 (gimple_gen_average_profiler): Ditto.
1150 (gimple_gen_ior_profiler): Ditto.
1151 (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
1152 (gimple_gen_ic_func_profiler): Call add_referenced_var.
1153 * tree-mudflap.c (execute_mudflap_function_ops): Call
1156 2011-10-06 Jakub Jelinek <jakub@redhat.com>
1158 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
1159 don't set SSA_NAME_DEF_STMT that has been already set by
1160 gimple_build_assign_with_ops.
1161 (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
1162 vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
1165 * tree.h (avoid_folding_inline_builtin): New prototype.
1166 * builtins.c (avoid_folding_inline_builtin): No longer static.
1167 * gimple-fold.c (gimple_fold_builtin): Give up if
1168 avoid_folding_inline_builtin returns true.
1170 2011-10-06 Richard Guenther <rguenther@suse.de>
1172 * tree-vect-generic.c (vector_element): Look at previous
1175 2011-10-06 David Edelsohn <dje.gcc@gmail.com>
1178 * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
1179 __powerpc__, __PPC__, __unix__.
1181 2011-10-06 Michael Matz <matz@suse.de>
1183 * i386/i386.opt (recip_mask, recip_mask_explicit,
1184 x_recip_mask_explicit): New variables and cl_target member.
1185 (mrecip=): New option.
1186 * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
1187 RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
1188 (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
1189 TARGET_RECIP_VEC_SQRT): New tests.
1190 * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
1191 (sqrt<mode>2): Check TARGET_RECIP_SQRT.
1192 * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
1193 (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
1194 * i386/i386.c (ix86_option_override_internal): Set recip_mask
1195 for -mrecip and -mrecip=options.
1196 (ix86_function_specific_save): Save recip_mask_explicit.
1197 (ix86_function_specific_restore): Restore recip_mask_explicit.
1199 * doc/invoke.texi (ix86 Options): Document the new option.
1201 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
1204 * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
1206 2011-10-06 Ulrich Weigand <ulrich.weigand@linaro.org>
1209 * config/arm/arm.c (arm_legitimize_reload_address): Recognize
1210 output of a previous pass through legitimize_reload_address.
1211 Do not attempt to optimize addresses if the base register is
1212 equivalent to a constant.
1214 2011-10-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1216 * function.c (thread_prologue_and_epilogue_insns): Mark
1217 last_bb_active as possibly unused. It is unused for targets which
1218 do neither have "return" nor "simple_return" expanders.
1220 2011-10-06 Richard Guenther <rguenther@suse.de>
1222 * fold-const.c (fold_ternary_loc): Also fold non-constant
1223 vector CONSTRUCTORs. Make more efficient.
1224 * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
1225 (cprop_into_stmt): Don't propagate into virtual operands.
1226 (optimize_stmt): Really dump original statement.
1228 2011-10-06 Nick Clifton <nickc@redhat.com>
1230 * config/rx/rx.md (smin3): Revert previous delta.
1232 2011-10-06 Richard Guenther <rguenther@suse.de>
1234 PR tree-optimization/38884
1235 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
1236 reads from aggregate SSA names.
1238 2011-10-05 Jakub Jelinek <jakub@redhat.com>
1240 * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
1241 argument, truncate it at the beginning instead of allocating there
1242 and freeing at the end.
1243 (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
1244 pass its address to vect_pattern_recog_1.
1246 2011-10-05 David S. Miller <davem@davemloft.net>
1248 * config/sparc/sparc.opt (POPC): New option.
1249 * doc/invoke.texi: Document it.
1250 * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
1251 default on Niagara-2 and later.
1252 * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
1253 * config/sparc/sparc.md (SIDI): New mode iterator.
1254 (ffsdi2): Delete commented out pattern and comments.
1255 (popcount<mode>2, clz<mode>2): New expanders.
1256 (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
1257 *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
1259 2011-10-06 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
1262 * c-tree.h (c_expr_t): New typedef for struct c_expr.
1263 (C_EXPR_APPEND): New macro.
1264 * c-parser.c (c_parser_get_builtin_args): Preserve
1265 original_tree_code of c_expr structure.
1266 (c_parser_postfix_expression): Adjust to the new function.
1268 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
1270 * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
1271 if profiling after the prologue.
1273 2011-10-05 Jakub Jelinek <jakub@redhat.com>
1275 PR tree-optimization/50613
1276 * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
1277 operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
1278 and if it is neither that not SSA_NAME, give up.
1280 2011-10-05 Richard Henderson <rth@redhat.com>
1282 * tree-vect-generic.c (vector_element): Never fail. Use
1283 build_zero_cst. Tidy up type references.
1284 (lower_vec_shuffle): Never fail. Mask shuffle indicies. Reduce
1285 code duplication. Do update_stmt here ...
1286 (expand_vector_operations_1): ... not here.
1288 * config/i386/i386.c (ix86_expand_vshuffle): Never fail. Handle
1289 TARGET_XOP. Fix pshufb constant vector creation. Reduce code
1290 duplication. Handle V2DI without SSE4.1.
1291 * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
1292 * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
1294 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
1296 * config/i386/i386.c (distance_non_agu_define): Simplify calculation
1297 of "found". Simplify return value calculation.
1298 (distance_agu_use): Ditto.
1300 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
1303 * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
1304 if the function was not shrink-wrapped.
1305 (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
1307 * function.c (thread_prologue_and_epilogue_insns): Make sure the
1308 shrink_wrapped flag is set even if there is no dump file.
1310 2011-10-05 DJ Delorie <dj@redhat.com>
1311 Nick Clifton <nickc@redhat.com>
1313 * config/rx/rx.opt (mpid): Define.
1314 * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
1315 (MULTILIB_DIRNAMES): Add pid.
1316 * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
1317 (rx_num_interrupt_regs): New variable.
1318 (rx_gp_base_regnum): New function. Returns the number of the
1319 small data area register.
1320 (rx_pid_base_regnum): New function. Returns the number of the pid
1322 (rx_decl_for_addr): New function. Returns the symbolic part of a MEM.
1323 (rx_pid_data_operand): New function. Returns whether an object is
1324 in the position independent data area.
1325 (rx_legitimize_address): New function. Puts undecided PID
1326 objects in the PID data area.
1327 (rx_is_legitimate_address): Add support for PID operands.
1328 (rx_print_operand_address): Likewise.
1329 (rx_print_operand): Likewise.
1330 (rx_maybe_pidify_operand): New function. Determine if an operand
1331 is suitable for PID addressing.
1332 (rx_gen_move_template): Add PID support.
1333 (rx_conditional_register_usage): Likewise.
1334 (rx_option_override): Initialise rx_num_interrupt_regs.
1335 (rx_is_legitimate_constant): Add support for PID constants.
1336 (TARGET_LEGITIMIZE_ADDRESS): Define.
1337 * config/rx/constraints.md (Rpid): Define.
1339 * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
1340 (tablejump): Add PID support.
1342 (mov<>_internal): Likewise.
1343 (addsi3): Convert to an expander. Add PID support.
1344 (pid_addr): New pattern.
1345 * config/rx/rx.h (CPP_SPEC): Define.
1346 (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
1347 (CASE_VECTOR_PC_RELATIVE): Define.
1348 (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
1349 * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
1350 * doc/invoke.texi (RX Options): Document -mpid command line option.
1352 2011-10-05 Richard Guenther <rguenther@suse.de>
1354 PR tree-optimization/38885
1355 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
1358 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
1360 * doc/invoke.texi (-fshrink-wrap): Document.
1361 * opts.c (default_options_table): Add it.
1362 * common.opt (fshrink-wrap): Add.
1363 * function.c (emit_return_into_block): Remove useless declaration.
1364 (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
1365 requires_stack_frame_p, gen_return_pattern): New static functions.
1366 (emit_return_into_block): New arg simple_p. All callers changed.
1367 Use gen_return_pattern.
1368 (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
1369 * config/i386/i386.md (return): Expand into a simple_return.
1370 (simple_return): New expander):
1371 (simple_return_internal, simple_return_internal_long,
1372 simple_return_pop_internal_long, simple_return_indirect_internal):
1373 Renamed from return_internal, return_internal_long,
1374 return_pop_internal_long and return_indirect_internal; changed to use
1376 * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
1378 (ix86_pad_returns): Likewise.
1379 * function.h (struct rtl_data): Add member shrink_wrapped.
1380 * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
1381 are not jumps or sibcalls can't be compared.
1383 2011-10-05 Richard Guenther <rguenther@suse.de>
1385 * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
1387 (simplify_unary_expression): Handle BIT_FIELD_REFs.
1388 (try_to_simplify): Handle BIT_FIELD_REFs.
1390 2011-10-05 Georg-Johann Lay <avr@gjlay.de>
1392 * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
1393 * config/avr/avr.c (avr_out_addto_sp): New function.
1394 (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
1395 * config/avr/avr.md (adjust_len): Add "addto_sp".
1396 (*movhi_sp): Remove insn.
1397 (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
1399 2011-10-05 Richard Guenther <rguenther@suse.de>
1401 * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
1402 with an embedded expression valueize and fold that as well.
1403 * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
1404 results from gimple_fold_stmt_to_constant_1.
1406 2011-10-05 Nick Clifton <nickc@redhat.com>
1408 * config/rx/rx.md (tablejump): Add missing label.
1409 (adddi3_internal): Mark operand 0 as early-clobbered.
1410 (smaxsi3): Revert previous delta.
1411 (adc_internal): Fix whitespace in generated asm.
1412 (adc_flags): Likewise.
1414 2011-10-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1416 * expmed.c (expand_mult_highpart_optab): Replace optab_handler
1417 with the new widening_optab_handler.
1419 2011-10-05 Richard Guenther <rguenther@suse.de>
1421 PR tree-optimization/50609
1422 * gimple-fold.c (fold_array_ctor_reference): Also handle
1423 vector typed constructors.
1424 (fold_ctor_reference): Dispatch to fold_array_ctor_reference
1425 for vector typed constructors.
1427 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
1429 * config/i386/i386.c (ix86_emit_binop): New static function.
1430 (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
1432 (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
1434 2011-10-04 David S. Miller <davem@davemloft.net>
1436 * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
1437 UNSPEC_XMUL): New unspecs.
1438 (muldi3_v8plus): Use output_v8plus_mult.
1439 (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
1440 New VIS 3.0 combiner patterns.
1441 (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
1442 fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
1443 umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
1444 xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
1446 * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
1447 (output_v8plus_mult): New function.
1448 * config/sparc/sparc-protos.h: Declare it.
1449 * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
1450 __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
1451 __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
1452 * doc/extend.texi: Document new builtins.
1454 2011-10-04 Richard Henderson <rth@redhat.com>
1456 * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
1457 Avoid save_expr unless two_arguments.
1459 2011-10-04 Ozkan Sezer <sezeroz@gmail.com>
1461 * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
1462 * config/i386/mingw32.h (CPP_SPEC): Likewise.
1464 2011-10-04 David S. Miller <davem@davemloft.net>
1466 * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
1469 2011-10-04 Jakub Jelinek <jakub@redhat.com>
1471 PR tree-optimization/50604
1472 * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
1473 fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
1474 last argument to memcpy has size_type_node type instead of ssizetype.
1475 * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
1476 instead of TREE_TYPE (len) as type for newlen.
1478 PR tree-optimization/50522
1479 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
1481 (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
1484 * fold-const.c (fold_unary_loc): Don't optimize
1485 POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
1486 casting the inner pointer if it isn't TYPE_RESTRICT.
1487 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
1488 casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
1490 2011-10-04 Joseph Myers <joseph@codesourcery.com>
1492 * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
1494 2011-10-04 Jan Hubicka <jh@suse.cz>
1496 * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
1497 * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
1498 * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
1499 * lto-cgraph.c (order_base): New static var.
1500 (lto_output_node): Stream in order.
1501 (lto_output_varpool_node): Stream out order.
1502 (input_node): Stream in order.
1503 (input_varpool_node): Stream out order.
1504 (input_cgraph_1): Initialize order base; update call of
1505 lto_input_toplevel_asms.
1507 2011-10-04 Georg-Johann Lay <avr@gjlay.de>
1510 * config/avr/avr-protos.h (avr_legitimize_reload_address): New
1512 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
1514 * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
1515 function. Log if avr_log.legitimize_reload_address.
1517 2011-10-04 Eric Botcazou <ebotcazou@adacore.com>
1519 * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
1521 2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1523 * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
1524 variables. Fix second operand of DR. Swap inputs for sdiv_qrnnd.
1526 2011-10-03 David S. Miller <davem@davemloft.net>
1528 * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
1529 GSR_REG an input operand to UNSPEC instead of a parallel USE.
1530 (faligndata<V64I:mode>_vis): Likewise and use DI mode.
1531 (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
1532 Reference GSR_REG in DI mode, simplify convoluted expressions by using
1534 (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
1536 2011-10-03 Maxim Kuvyrkov <maxim@codesourcery.com>
1538 * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
1540 2011-10-03 Jakub Jelinek <jakub@redhat.com>
1541 Ian Lance Taylor <iant@google.com>
1543 * godump.c (go_output_typedef): Support printing enum values that
1544 don't fit in a signed HOST_WIDE_INT.
1546 2011-10-03 Anatoly Sokolov <aesok@post.ru>
1548 * config/cris/cris.c (cris_output_addr_const_extra): Make static.
1549 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1550 * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1551 * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
1553 2011-10-03 Anatoly Sokolov <aesok@post.ru>
1555 * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
1556 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1557 * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1558 * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
1560 2011-10-03 Steve Ellcey <sje@cup.hp.com>
1563 * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
1564 (gcc_cv_ld_static_option): Ditto.
1565 (gcc_cv_ld_dynamic_option): Ditto.
1566 * configure: Regenerate.
1568 2011-10-03 David S. Miller <davem@davemloft.net>
1570 * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
1571 and 'si' patterns which describe the GSR changes explicitly in the
1572 RTL using zero_extract.
1573 (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
1575 * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
1576 GSR_REG in a USE, since it's now a true arg to the UNSPEC.
1578 2011-10-03 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
1580 * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
1581 if given expression can be expanded by the target.
1582 (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
1583 using target vector instructions.
1584 * optabs.h: New optab vshuffle.
1585 (expand_vec_shuffle_expr_p): New prototype.
1586 (expand_vec_shuffle_expr): New prototype.
1587 (vshuffle_optab): New optab.
1588 * genopinit.c: Adjust to support vecshuffle.
1589 * c-tree.h (c_build_vec_shuffle_expr): New prototype.
1590 * expr.c (expand_expr_real_2): Adjust.
1591 * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
1592 recognizing the cases of two and three arguments.
1593 (convert_arguments) (build_binary_op)
1594 (scalar_to_vector) (build_array_ref): Spurious whitespace.
1595 * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
1596 * tree.def: New tree code VEC_SHUFFLE_EXPR.
1597 * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
1598 * tree-vect-generic.c (vector_element): New function. Returns an
1599 element of the vector at the given position.
1600 (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
1601 by the backend or expand an expression piecewise.
1602 (expand_vector_operations_1): Adjusted.
1603 (gate_expand_vector_operations_noop): New gate function.
1604 * Makefile.in (tree-vect-generic.o): New include.
1605 * gimple.c (get_gimple_rhs_num_ops): Adjust.
1606 * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
1607 * passes.c: Move veclower down.
1608 * tree-pretty-print.c (dump_generic_node): Recognize
1609 VEC_SHUFFLE_EXPR as valid expression.
1610 * c-parser.c (c_parser_get_builtin_args): Helper function for the
1611 builtins with variable number of arguments.
1612 (c_parser_postfix_expression): Use a new helper function for
1613 RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
1614 * tree-ssa-operands: Adjust.
1615 * c-family/c-common.c: New __builtin_shuffle keyword.
1616 * c-family/c-common.h: New __builtin_shuffle keyword.
1617 * gcc/doc/extend.texi: Adjust.
1619 * gcc/config/i386/sse.md: (sseshuffint) New mode_attr. Correspondence
1620 between the vector and the type of the mask when shuffling.
1621 (vecshuffle<mode>): New expansion.
1622 * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
1623 * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
1624 (ix86_vectorize_builtin_vec_perm_ok): Adjust.
1626 2011-10-03 Jakub Jelinek <jakub@redhat.com>
1628 PR tree-optimization/50587
1629 * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
1630 arg0 is not a SSA_NAME.
1632 2011-10-03 Richard Sandiford <rdsandiford@googlemail.com>
1634 * ipa-inline-analysis.c (MAX_TIME): Update comment.
1636 2011-10-02 Richard Henderson <rth@redhat.com>
1637 David S. Miller <davem@davemloft.net>
1639 * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
1640 conditional insn type setting, we always emit a shift.
1641 (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
1642 (*lshrsi3_extend): Rename to *lshrsi3_extend1.
1643 * config/sparc/predicates.md (const_one_operand): Delete.
1645 2011-10-02 Gerald Pfeifer <gerald@pfeifer.com>
1647 * invoke.texi (SPARC Options): Refer to GNU/Linux.
1649 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
1651 * config/mips/mips.c (mips_frame_barrier): New function.
1652 (mips_expand_prologue): Call it after allocating stack space.
1653 (mips_deallocate_stack): New function.
1654 (mips_expand_epilogue): Call mips_frame_barrier and
1655 mips_deallocate_stack.
1657 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
1660 * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
1661 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
1662 (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
1664 2011-10-02 Jan Hubicka <jh@suse.cz>
1666 * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
1668 * cgraphunit.c (ipa_passes): Remove unrechable nodes.
1669 * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
1670 * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
1671 functions are reachable when address is taken.
1672 * tree-sra.c (modify_function): Free dominance info.
1674 2011-10-02 Jan Hubicka <jh@suse.cz>
1676 * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
1678 * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
1679 (reset_inline_summary): New function.
1680 (compute_inline_parameters, inline_node_removal_hook,
1681 inline_edge_removal_hook): Use it.
1682 (inline_free_summary): Reset holders correctly.
1683 (inline_generate_summary): Free summary before computing it.
1685 2011-10-02 Paolo Carlini <paolo.carlini@oracle.com>
1687 PR preprocessor/36819
1688 * incpath.c (merge_include_chains): Call free_path on
1689 heads[QUOTE] and tails[QUOTE].
1691 2011-10-02 Jan Hubicka <jh@suse.cz>
1694 * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
1695 when resolution is already availbale from plugin.
1696 (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
1697 * cgraph.c (ld_plugin_symbol_resolution): Add
1698 prevailing_def_ironly_exp.
1699 * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
1700 * ipa.c (varpool_externally_visible_p): IRONLY variables are never
1702 * varasm.c (resolution_to_local_definition_p): Add
1703 LDPR_PREVAILING_DEF_IRONLY_EXP.
1704 (resolution_local_p): Likewise.
1706 2011-10-01 David S. Miller <davem@davemloft.net>
1708 * config/sparc/sparc.opt (VIS3): New option.
1709 * doc/invoke.texi: Document it.
1710 * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
1711 not capable of such instructions.
1712 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
1713 to 0x300 when TARGET_VIS3.
1714 * config/sparc/sparc-modes.def: Create 16-byte vector modes.
1715 * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
1716 UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
1717 (V64N8, VASS): New mode iterators.
1718 (vis3_shift, vis3_addsub_ss): New code iterators.
1719 (vbits, vconstr): New mode attributes.
1720 (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
1721 (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
1722 fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
1723 fmean16_vis, fpadd64_vis, fpsub64_vis,
1724 <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
1725 VIS 3.0 instruction patterns.
1726 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
1727 default when targetting capable cpus. TARGET_VIS3 implies
1728 TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
1729 (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
1730 (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
1732 * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
1733 __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
1734 __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
1735 __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
1736 __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
1737 __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
1738 __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
1739 __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
1740 * doc/extend.texi: Document new VIS 3.0 builtins.
1742 2011-10-01 Eric Botcazou <ebotcazou@adacore.com>
1744 * ira-color.c (assign_hard_reg): Fix typo.
1746 2011-09-30 H.J. Lu <hongjiu.lu@intel.com>
1748 * doc/extend.texi: Add missing ','.
1750 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
1752 * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
1753 Enable -fmodulo-sched at -O2 and above.
1754 * config/c6x/c6x.md (doloop_end): New expander.
1755 (mvilc, sploop, spkernel, loop_end): New patterns.
1756 (loop_end with memory destination splitter): New.
1757 * config/c6x/c6x.c: Include "hw-doloop.h".
1758 (enum unitreqs): New.
1759 (unit_req_table): New typedef.
1760 (unit_reqs): New static variable.
1761 (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
1762 res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
1763 hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
1764 hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
1765 (struct c6x_sched_context): New member last_scheduled_iter0.
1766 (init_sched_state): Initialize it.
1767 (c6x_variable_issue): Update it.
1768 (sploop_max_uid_iter0): New static variable.
1769 (c6x_sched_reorder_1): Be careful about issuing sploop.
1770 (c6x_reorg): Call c6x_hwlooops before the final schedule.
1772 2011-09-30 Georg-Johann Lay <avr@gjlay.de>
1775 * config/avr/avr-protos.h (avr_log_t): New field address_cost.
1776 * config/avr/avr.c (avr_address_cost): Use it.
1777 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
1778 (avr_log_vadump): Unknown %-codes finish printing.
1780 2011-09-30 Jakub Jelinek <jakub@redhat.com>
1783 * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
1784 input constraints allow mem and not reg, pass true instead of
1785 false as second argument to maybe_fold_reference.
1787 PR tree-optimization/46309
1788 * fold-const.c (make_range, merge_ranges): Remove prototypes.
1789 (make_range_step): New function.
1790 (make_range): Use it.
1791 * tree.h (make_range_step): New prototypes.
1792 * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
1793 * tree-ssa-reassoc.c: Include diagnostic-core.h.
1794 (struct range_entry): New type.
1795 (init_range_entry, range_entry_cmp, update_range_test,
1796 optimize_range_tests): New functions.
1797 (reassociate_bb): Call optimize_range_tests.
1799 2011-09-30 Jakub Jelinek <jakub@redhat.com>
1800 Richard Guenther <rguenther@suse.de>
1802 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
1803 BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
1804 * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. Fix
1805 handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
1806 (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
1807 BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
1809 2011-09-30 Jan Beulich <jbeulich@suse.com>
1811 * lto-cgraph.c (output_cgraph): Remove processing of
1812 'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
1813 (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
1814 lto_input_toplevel_asms() instead.
1815 * lto-section-in.c (lto_section_name): Add "asm" entry.
1816 * lto-streamer-in.c (lto_input_toplevel_asms): New.
1817 * lto-streamer-out.c (lto_output_toplevel_asms): New.
1818 * lto-streamer.h (LTO_minor_version): Bump.
1819 (enum lto_section_type): Add LTO_section_asm.
1820 (struct lto_asm_header): New.
1821 (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
1822 * tree-streamer.h (streamer_write_string_cst): Declare.
1823 * tree-streamer-out.c (write_string_cst): Rename to
1824 streamer_write_string_cst and make global. Handle incoming string
1826 (streamer_write_tree_header): Adjust call to renamed function.
1828 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
1830 * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
1831 modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
1832 modulo_last_stage): New static variables.
1833 (set_modulo_params, discard_delay_pairs_above): New functions.
1834 (struct delay_pair): New member stages.
1835 (htab_i2_traverse, htab_i1_traverse): New static functions.
1836 (record_delay_slot_pair): New arg stages. All callers changed.
1838 (pair_delay): Take stages into account.
1839 (add_delay_dependencies): Don't do so for stage pairs.
1840 (struct sched_block_state): New member modulo_epilogue.
1841 (save_backtrack_point): Don't set SHADOW_P for stage pairs.
1842 (unschedule_insns_until): Decrease modulo_insns_scheduled.
1843 Set HARD_DEP without using or.
1844 (resolve_dependencies): New static function.
1845 (prune_ready_list): New arg modulo_epilogue_p. All callers changed.
1846 If it is true, allow only insns with INSN_EXACT_TICK set.
1847 (schedule_block): Return bool, always true for normal scheduling,
1848 true or false depending on modulo scheduling success otherwise.
1849 Add bookkeeping for modulo scheduling, and call resolve_dependencies
1850 on everything left over after a modulo schedule.
1851 (haifa_sched_init): Remove check_cfg call. Clear modulo_ii.
1852 * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
1854 (set_modulo_params, discard_delay_pairs_above): Declare.
1855 * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
1856 * doc/invoke.texi (--param): Document it.
1858 * sched-ebb.c (schedule_ebb): No longer static. Remove declaration.
1859 New arg modulo_scheduling. All callers changed. Move note handling
1860 code here from schedule_ebbs.
1861 (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
1862 out of schedule_ebbs.
1863 (schedule_ebbs): Call them. Remove note handling code moved to
1865 * sched-int.h (schedule_ebb, schedule_ebbs_init,
1866 schedule_ebbs_finish): Declare.
1868 2011-09-30 Richard Guenther <rguenther@suse.de>
1871 * tree-cfg.c (verify_gimple_comparison): Compare component
1872 mode sizes for vector comparisons.
1874 2011-09-30 Revital Eres <revital.eres@linaro.org>
1876 * ddg.c (autoinc_var_is_used_p): New function.
1877 (create_ddg_dep_from_intra_loop_link,
1878 add_cross_iteration_register_deps): Call it.
1879 * ddg.h (autoinc_var_is_used_p): Declare.
1880 * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
1881 (sms_schedule): Handle instructions with REG_INC.
1883 2011-09-30 Revital Eres <revital.eres@linaro.org>
1885 * modulo-sched.c (generate_reg_moves): Skip instructions that
1886 do not set a register and verify no regmoves are created for
1887 !single_set instructions.
1889 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
1891 * hw-doloop.c (scan_loop): Compute register usage only for non-debug
1894 2011-09-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
1897 * config/arm/iterators.md (qhs_zextenddi_cstr): New.
1898 (qhs_zextenddi_op): New.
1899 * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
1900 * config/arm/predicates.md ("arm_extendqisi_mem_op"):
1901 Distinguish between ARM and Thumb2 states.
1903 2011-09-30 David S. Miller <davem@davemloft.net>
1905 * config/sparc/sparc.opt (VIS2): New option.
1906 * doc/invoke.texi: Document it.
1907 * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
1908 UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
1909 UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
1910 (define_attr type): New insn type 'edgen'.
1911 (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
1912 edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
1913 edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
1915 * niagara.md: Handle edgen.
1916 * niagara2.md: Likewise.
1917 * ultra1_2.md: Likewise.
1918 * ultra3.md: Likewise.
1919 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
1920 to 0x200 when TARGET_VIS2.
1921 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
1922 default when targetting capable cpus. TARGET_VIS2 implies
1923 TARGET_VIS, clear and it when TARGET_FPU is disabled.
1924 (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
1925 (sparc_expand_builtin): Fix predicate indexing when builtin returns
1927 (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
1928 * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
1929 __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
1930 __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
1931 __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
1932 * doc/extend.texi: Document new VIS 2.0 builtins.
1934 2011-09-29 Nick Clifton <nickc@redhat.com>
1935 Bernd Schmidt <bernds@codesourcery.com>
1937 * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
1938 * config/frv/frvend.c: Likewise.
1939 * config/frv/frv.c (frv_function_prologue): Move misplaced
1940 CALL_ARG_LOCATION notes back to their proper locations.
1942 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
1945 * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
1946 * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
1948 (avr_legitimate_address_p): Use avr_edump to print log information
1949 filtered by avr_log.
1950 (extra_constraint_Q): Ditto.
1951 (avr_legitimize_address): Ditto.
1952 (avr_rtx_costs): Ditto. Rewrite as wrapper for avr_rtx_costs_1.
1953 (final_prescan_insn): Use avr_log.rtx_costs as filter.
1955 2011-09-29 Richard Sandiford <richard.sandiford@linaro.org>
1957 * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
1958 * config/arm/arm.h (MODES_TIEABLE_P): Use it.
1959 * config/arm/arm.c (arm_modes_tieable_p): New function. Allow
1960 NEON vector and structure modes to be tied.
1962 2011-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
1964 * graphite-scop-detection.c (make_close_phi_nodes_unique): New
1965 forward declaration.
1966 (remove_duplicate_close_phi): Detect and repair creation of
1967 duplicate close-phis for a containing loop.
1969 2011-09-27 Andi Kleen <ak@linux.intel.com>
1971 * gcc.c (get_local_tick). Rename to get_random_number. Read from
1972 /dev/urandom. Add getpid call.
1973 (compare_debug_dump_opt_spec_function): Drop getpid call.
1975 2011-09-26 Andi Kleen <ak@linux.intel.com>
1977 * toplev.c (init_local_tick): Try reading random seed
1980 2011-09-26 Andi Kleen <ak@linux.intel.com>
1982 * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
1983 * lto-streamer.c (lto_get_section_name): Remove crc32_string.
1984 Handle numerical random seed.
1985 * lto-streamer.h (lto_file_decl_data): Change id to
1986 unsigned HOST_WIDE_INT.
1987 * toplev.c (random_seed): Add.
1988 (init_random_seed): Change for numerical random seed.
1989 (get_random_seed): Return as HOST_WIDE_INT.
1990 (set_random_seed): Crc32 existing string.
1991 * toplev.h (get_random_seed): Change to numercal return.
1992 * tree.c (get_file_function_name): Remove CRC. Handle
1993 numerical random seed.
1995 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
1998 * config.gcc (extra_objs): Add avr-log.o for $target in:
1999 avr-*-rtems*, avr-*-*.
2000 * config/avr/t-avr (avr-log.o): New rule to compile...
2001 * config/avr/avr-log.c: ...this new file.
2002 * config/avr/avr.opt (mlog=): New option.
2003 * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
2004 (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
2005 (avr_log_set_avr_log): New prototype.
2006 (avr_log_t): New typedef.
2007 (avr_log): New declaration.
2008 * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
2010 2011-09-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2012 * expr.c (do_store_flag): Expand vector comparison by
2013 building an appropriate VEC_COND_EXPR.
2014 * c-typeck.c (build_binary_op): Typecheck vector comparisons.
2015 (c_objc_common_truthvalue_conversion): Adjust.
2016 * tree-vect-generic.c (do_compare): Helper function.
2017 (expand_vector_comparison): Check if hardware supports
2018 vector comparison of the given type or expand vector piecewise.
2019 (expand_vector_operation): Treat comparison as binary
2020 operation of vector type.
2021 (expand_vector_operations_1): Adjust.
2023 2011-09-29 Richard Guenther <rguenther@suse.de>
2025 * tree.c (build_opaque_vector_type): Make opaque vectors
2026 variant types of the corresponding non-opaque type. Make
2027 sure to share opaque vector types properly.
2029 2011-09-29 David S. Miller <davem@davemloft.net>
2031 * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
2032 UNSPEC_ARRAY32): New unspec.
2033 (define_attr type): New type 'array'.
2034 (array{8,16,32}<P:mode>_vis): New patterns.
2035 * config/sparc/ultra1_2.md: Add reservations for 'array'.
2036 * config/sparc/ultra3.md: Likewise.
2037 * config/sparc/niagara.md: Likewise.
2038 * config/sparc/niagara2.md: Likewise.
2039 * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
2041 * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2042 __vis_array32): New.
2043 * doc/extend.texi: Document new VIS builtins.
2045 * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2046 (VIS pixel-compare insn): Just use <gcond:name>.
2048 * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
2049 code iterator used, so just use <code>. There are two mode iterators
2050 so explicitly use <GCM:gcm_name>.
2052 2011-09-29 Iain Sandoe <iains@gcc.gnu.org>
2054 * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2057 2011-09-28 David S. Miller <davem@davemloft.net>
2059 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
2060 UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
2061 (UNSPEC_FCMP): New unspec.
2062 (gcond): New code iterator.
2063 (gcond_name): New code attr.
2064 (GCM): New mode iterator.
2065 (gcm_name): New mode attr.
2066 (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
2068 2011-09-28 Oleg Endo <oleg.endo@t-online.de>
2071 * config/sh/sh.md (negdi2): Move expansion into split to
2072 allow more combination options. Add T_REG clobber.
2073 (abssi2): New expander.
2074 (*negdi2, *abssi2, *negabssi2): New insns.
2075 (cneg): Change from insn to insn_and_split. Rename to
2076 negsi_cond. Add alternative for non-SH4.
2078 2011-09-28 Richard Sandiford <richard.sandiford@linaro.org>
2080 * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
2081 (neon_move_hi_quad_<mode>): Likewise.
2082 (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
2084 2011-09-28 Nick Clifton <nickc@redhat.com>
2086 * config/rx/predicates.md (rx_minmax_operand): New predicate.
2087 Accepts immediates and a restricted subset of MEMs.
2088 * config/rx/rx.md (int_modes): New iterator.
2089 (smaxsi3, sminsi3): Delete and replace with...
2090 (smax<int_mode>3, smin<int_mode>3): New patterns.
2091 (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
2093 2011-09-28 Richard Guenther <rguenther@suse.de>
2096 * fold-const.c (try_move_mult_to_index): Handle &a.array the
2097 same as &a.array[0].
2099 2011-09-28 Kai Tietz <ktietz@redhat.com>
2101 * configure.ac: Add test for new section attribute
2102 specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
2103 * config.in: Regenerated.
2104 * configure: Regenerated.
2105 * config/i386/winnt.c (i386_pe_asm_named_section): Emit
2106 new section flag "e" for excluded sections, if supported.
2107 Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
2109 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
2111 * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2114 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
2116 * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2119 2011-09-27 Sriraman Tallam <tmsriram@google.com>
2121 * output.h (SECTION_EXCLUDE): New macro.
2122 * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2124 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
2126 * fwprop.c (forward_propagate_and_simplify): After checking
2127 reg/subreg combinations, check whether the modes are the same.
2129 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
2130 Richard Sandiford <rdsandiford@googlemail.com>
2132 * config/mips/mips.c (mips_add_cfa_restore): New function.
2133 (mips16e_save_restore_reg): Use it.
2134 (mips_restore_reg): Likewise. Split double FPRs for
2135 REG_CFA_RESTORE notes.
2137 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
2141 * tree-sra.c (build_ref_for_model): Use the type of the field as
2142 the type of the COMPONENT_REF.
2144 2011-09-27 Jeff Law <law@redhat.com>
2146 * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument. Scale
2147 non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
2148 (find_if_case_1): Use the probability of the THEN clause when
2149 determining if speculation is profitable.
2150 (find_if_case_2): Similarly for the ELSE clause.
2152 2011-09-27 Jakub Jelinek <jakub@redhat.com>
2154 * common.opt: Add -foptimize-strlen option.
2155 * Makefile.in (OBJS): Add tree-ssa-strlen.o.
2156 (tree-sssa-strlen.o): Add dependencies.
2157 * opts.c (default_options_table): Enable -foptimize-strlen
2158 by default at -O2 if not -Os.
2159 * passes.c (init_optimization_passes): Add pass_strlen
2160 after pass_object_sizes.
2161 * timevar.def (TV_TREE_STRLEN): New timevar.
2162 * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
2163 * tree-pass.h (pass_strlen): Declare.
2164 * tree-ssa-strlen.c: New file.
2165 * c-decl.c (merge_decls): If compatible stpcpy prototype
2166 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
2168 2011-09-27 Tom de Vries <tom@codesourcery.com>
2171 * tree-ssa-tail-merge.c: New file.
2172 (struct same_succ_def): Define.
2173 (same_succ, const_same_succ): New typedef.
2174 (struct bb_cluster_def): Define.
2175 (bb_cluster, const_bb_cluster): New typedef.
2176 (struct aux_bb_info): Define.
2177 (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
2178 (gvn_uses_equal): New function.
2179 (same_succ_print, same_succ_print_traverse, update_dep_bb)
2180 (stmt_update_dep_bb, local_def, same_succ_hash)
2181 (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
2182 (same_succ_reset): New function.
2183 (same_succ_htab, same_succ_edge_flags)
2184 (deleted_bbs, deleted_bb_preds): New var.
2185 (debug_same_succ): New function.
2186 (worklist): New var.
2187 (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
2188 (init_worklist, delete_worklist, delete_basic_block_same_succ)
2189 (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
2190 (print_cluster, debug_cluster, update_rep_bb)
2191 (add_bb_to_cluster, new_cluster, delete_cluster): New function.
2192 (all_clusters): New var.
2193 (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
2194 (merge_clusters, set_cluster): New function.
2195 (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
2196 (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
2197 (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
2198 (find_clusters_1, find_clusters): New function.
2199 (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
2200 (update_bbs): New var.
2201 (apply_clusters): New function.
2202 (update_debug_stmt, update_debug_stmts): New function.
2203 (tail_merge_optimize): New function.
2204 tree-pass.h (tail_merge_optimize): Declare.
2205 * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
2206 * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
2207 (tree-ssa-tail-merge.o): New rule.
2208 * opts.c (default_options_table): Set OPT_ftree_tail_merge by
2209 default at OPT_LEVELS_2_PLUS.
2210 * tree-ssa-sccvn.c (vn_valueize): Move to ...
2211 * tree-ssa-sccvn.h (vn_valueize): Here.
2212 * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
2213 * common.opt (ftree-tail-merge): New switch.
2214 * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
2215 (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
2216 * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
2217 (-ftree-tail-merge, max-tail-merge-comparisons)
2218 (max-tail-merge-iterations): New item.
2220 2011-09-27 Jan Hubicka <jh@suse.cz>
2222 * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
2224 2011-09-27 Jan Hubicka <jh@suse.cz>
2226 * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
2227 parameters passed by reference; handle loads from non-SSA scalars
2228 and update comments.
2230 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
2232 PR rtl-optimization/50249
2233 * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
2234 instead of opnum and type. All callers changed. Remove useless
2236 Search forward for other reloads of the same type for the same operand
2237 using the same register; if any are found, return false.
2238 (reload_regs_reach_end_p): Same argument changes; all callers changed.
2240 2011-09-27 Andi Kleen <ak@linux.intel.com>
2241 Jan Hubicka <jh@suse.cz>
2243 * doc/invoke.texi (ffat-lto-objects): Document.
2244 * toplev.c (compile_file): Do not output assembly when doing slim lto;
2245 Output __gnu_slim_lto when doing slim lto.
2246 * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
2247 (cgraph_optimize): Return early when doing slim lto.
2248 * opts.c (finish_options): Complain about lack of linker plugin
2249 when doing slim lto.
2250 * common.opt (ffat-lto-objects): New.
2252 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
2254 * ipa-inline-analysis.c (predicate_probability): Avoid comparison
2255 between signed and unsigned.
2257 2011-09-27 Ira Rosen <ira.rosen@linaro.org>
2259 * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
2261 (vectorizable_type_promotion): Likewise.
2262 (vect_analyze_stmt): Call vectorizable_type_demotion and
2263 vectorizable_type_promotion for basic blocks.
2264 (supportable_widening_operation): Don't assume loop vectorization.
2265 * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
2266 basic blocks. Update vectorization factor for basic block
2268 (vect_analyze_slp_instance): Allow multiple types for basic block
2269 vectorization. Recheck unrolling factor after construction of SLP
2272 2011-09-27 Richard Guenther <rguenther@suse.de>
2274 * tree-object-size.c (compute_object_sizes): Fix dumping of
2277 2011-09-27 Richard Guenther <rguenther@suse.de>
2279 PR tree-optimization/50363
2280 * tree-ssa-pre.c (create_expression_by_pieces): Handle
2281 pointer conversions in POINTER_PLUS_EXPRs properly.
2283 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
2285 * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
2286 (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
2287 (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
2288 (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
2289 that produce subreg moves. Define using VQX iterators.
2291 2011-09-27 Georg-Johann Lay <avr@gjlay.de>
2293 * config/avr/avr.md (ashrqi3): Split alternative "n"
2294 into its remaining parts C03, C04, C05, C06, C07 and describe
2295 impact in CC by attribute "cc" appropriately.
2296 * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
2299 2011-09-27 Jakub Jelinek <jakub@redhat.com>
2301 * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
2302 from 3 x MAX_MACHINE_MODE.
2303 (CONSTM1_RTX): Define.
2304 * emit-rtl.c (const_tiny_rtx): Change into array of
2305 4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
2306 (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
2308 (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
2309 MODE_VECTOR_INT modes.
2310 * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
2311 Optimize if one operand is CONSTM1_RTX.
2312 * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
2315 2011-09-26 David S. Miller <davem@davemloft.net>
2317 * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
2318 (fcmp{le,ne,gt,eq}{16,32}): Likewise.
2319 * config/sparc/visintrin.h: Update edge and pixel-compare
2320 intrinsics to return 'long' instead of 'int'.
2321 * doc/extend.texi: Update documentation to match.
2322 * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
2323 flat, allow any instruction. Otherwise, when V9 allow parallels
2324 which consist only of sets to registers outside of %o0 to %o5.
2325 (sparc_vis_init_builtins): Update VIS builtin types for edge
2328 * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
2329 is enabled, mark %gsr as global.
2330 * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
2331 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
2333 * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
2334 which will now define __VIS and __VIS__ when -mvis is enabled.
2335 * config/sparc/t-sparc: Likewise.
2336 * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
2337 and add t-sparc to tmake_file for all sparc targets.
2338 * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
2339 * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
2341 * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
2342 builtins for VIS vector addition and subtraction.
2343 * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
2344 __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
2345 __vis_fpsub32, __vis_fpsub32s): New.
2346 * doc/extend.texi: Document new VIS intrinsics.
2348 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
2350 * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
2351 * config/avr/avr.c (avr_out_compare): Print shorter sequence for
2352 EQ/NE comparisons against +/-1 in the case of unused-after,
2355 2011-09-26 Jakub Jelinek <jakub@redhat.com>
2357 * gimple-fold.c (gimplify_and_update_call_from_tree): Set
2358 gctx.into_ssa after push_gimplify_context.
2360 * gimple.c (gimple_build_call_valist): New function.
2361 * gimple.h (gimple_build_call_valist): New prototype.
2362 * tree-ssa-propagate.c (finish_update_gimple_call): New function.
2363 (update_gimple_call): Likewise.
2364 (update_call_from_tree): Use finish_update_gimple_call.
2365 * tree-ssa-propagate.h (update_gimple_call): New prototype.
2367 2011-09-26 Richard Guenther <rguenther@suse.de>
2369 PR tree-optimization/50472
2370 * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
2371 volatile references.
2373 2011-09-26 Bingfeng Mei <bmei@broadcom.com>
2375 * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
2376 * target.def: (addr_space_subset_p): Likewise.
2378 2011-09-26 Tom de Vries <tom@codesourcery.com>
2380 * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
2381 * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
2382 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
2385 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
2388 * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
2389 * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
2390 output_reload_insisf.
2391 (adjust_len): Set default to "no".
2392 Remove alternative "yes". Add alternatives: "mov8", "mov16",
2393 "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
2394 "lshrhi", "ashlsi, "ashrsi", "lshrsi".
2395 (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
2396 *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
2397 *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
2398 *lshrsi3_const): Set attribute "adjust_len".
2399 * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
2400 (output_movsisf): Don't pass insn to output_reload_insisf.
2401 (adjust_insn_length): Handle new alternatives to adjust_len.
2402 Remove handling of ADJUST_LEN_YES. Clean-up code.
2404 2011-09-26 Eric Botcazou <ebotcazou@adacore.com>
2406 * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
2407 may_trap_p to detect loads that may trap of fault.
2409 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
2411 * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
2412 * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
2413 (*reload_inhi): Use it. Adapt call to output_reload_inhi to new
2415 (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
2416 * config/avr/avr.c: Rename output_reload_insisf_1 to
2417 output_reload_in_const.
2418 (avr_popcount_each_byte): Handle SFmode, too.
2419 (output_reload_in_const): Change so it can handle HI loads, too.
2420 Use avr_popcount_each_byte to work out if scratch register must be
2422 (output_reload_inhi): Rewrite using output_reload_in_const and...
2423 (output_movhi): ...use it to print constants' loads.
2424 (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
2426 2011-09-25 David S. Miller <davem@davemloft.net>
2428 * config/sparc/constraints.md (C, P, Z): New constraints for
2429 const_doube, const_int, and const_vector "all ones" values.
2430 Make unused constraint letters comment match reality.
2431 * config/sparc/predicates.md (const_all_ones_operand,
2432 register_or_zero_or_all_ones_operand): New predicates.
2433 * config/sparc/sparc.c (sparc_expand_move): Allow all ones
2434 as well as zero constants when VIS.
2435 (sparc_legitimate_constant_p): Likewise.
2436 * config/sparc/sparc.md (movsi_insn): Add fones alternative.
2437 (movsf_insn): Likewise
2438 (movdi_insn_sp64): Add fone alternative.
2439 (movdf_insn_sp32_v9): Likewise.
2440 (movdf_insn_sp64): Likewise.
2442 * configure.ac: Add feature check to make sure the assembler
2443 supports the FMAF, HPC, and VIS 3.0 instructions found on
2444 Niagara-3 and later cpus.
2445 * configure: Rebuild.
2446 * config.in: Likewise.
2447 * config/sparc/sparc.opt: New option '-mfmaf'.
2448 * config/sparc/sparc.md: Add float fused multiply-add patterns.
2449 * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
2450 (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
2451 * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
2452 ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
2453 * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
2454 by default for Niagara-3 and later. Turn it off if TARGET_FPU is
2456 (sparc_rtx_costs): Handle 'FMA'.
2457 * doc/invoke.texi: Document -mfmaf.
2459 2011-09-25 Jakub Jelinek <jakub@redhat.com>
2461 * tree-ssa-structalias.c (intra_create_variable_infos): Treat
2462 TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
2463 DECL_BY_REFERENCE parameters.
2465 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
2467 * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
2468 if there is no outgoing edge.
2470 * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
2473 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
2475 * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
2476 of vect_analyze_bb here.
2477 (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
2479 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
2481 * tree-data-ref.c (dr_analyze_innermost): Add new argument.
2482 Allow not simple iv if analyzing basic block.
2483 (create_data_ref): Update call to dr_analyze_innermost.
2484 (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
2485 * tree-loop-distribution.c (generate_memset_zero): Likewise.
2486 * tree-predcom.c (find_looparound_phi): Likewise.
2487 * tree-data-ref.h (dr_analyze_innermost): Add new argument.
2489 2011-09-24 David S. Miller <davem@davemloft.net>
2491 * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
2492 (SPARC_GSR_REG): Define.
2493 (FIXED_REGISTERS): Mark GSR as fixed.
2494 (CALL_USED_REGISTERS): Mark GSR as call used.
2495 (HARD_REGNO_NREGS): GSR is always 1 register.
2496 (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
2497 (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
2498 (REGISTER_NAMES): Add "%gsr".
2499 * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
2500 (UNSPEC_WRGSR): New unspec.
2501 (GSR_REG): New constant.
2502 (type): Add new insn type 'gsr'.
2503 (fpack16_vis, fpackfix_vis, fpack32_vis,
2504 faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
2505 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
2506 rdgsr_v8plus): New expanders and insns.
2507 (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
2508 using patterns which show that this is a plus in addition to a
2509 modification of GSR_REG, instead of an unspec.
2510 * config/sparc/ultra1_2.md: Handle 'gsr'.
2511 * config/sparc/ultra3.md: Likewise.
2512 * config/sparc/niagara.md: Likewise.
2513 * config/sparc/niagara2.md: Likewise.
2514 * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
2516 (sparc_option_override): Make -mvis imply -mv8plus.
2517 (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
2519 (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
2520 __builtin_vis_read_gsr.
2521 (sparc_expand_buildin): Handle builtins that take one argument and
2523 (sparc_fold_builtin): Never fold writes to %gsr.
2524 * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
2525 * doc/extend.texi: Document new VIS intrinsics.
2527 2011-09-23 Jan Hubicka <jh@suse.cz>
2529 * ipa-inline-transform.c (inline_call): Add comment.
2530 * ipa-inline.h (inline_param_summary): New structure and vector.
2531 (struct inline_edge_summary): Add param field.
2532 * ipa-inline-analysis.c (CHANGED): New constant.
2533 (add_clause): Handle CHANGED and NOT_CONSTANT.
2534 (predicate_probability): New function.
2535 (dump_condition): Dump CHANGED predicate.
2536 (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
2537 of unknown function wide invariant.
2538 (evaluate_conditions_for_edge): Handle change probabilities.
2539 (inline_edge_duplication_hook): Copy param summaries.
2540 (inline_edge_removal_hook): Free param summaries.
2541 (dump_inline_edge_summary): Fix dumping of indirect edges and callee
2542 sizes; dump param summaries.
2543 (will_be_nonconstant_predicate): Use CHANGED predicate.
2544 (record_modified_bb_info): New structure.
2545 (record_modified): New function.
2546 (param_change_prob): New function.
2547 (estimate_function_body_sizes): Compute param summaries.
2548 (estimate_edge_size_and_time): Add probability argument.
2549 (estimate_node_size_and_time): Add inline_param_summary argument;
2550 handle predicate probabilities.
2551 (remap_predicate): Fix formating.
2552 (remap_edge_change_prob): New function.
2553 (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
2554 (remap_edge_predicates): ... this one.
2555 (inline_merge_summary): Remap edge summaries; handle predicate
2556 probabilities; remove param summaries after we are done.
2557 (do_estimate_edge_time): Update.
2558 (do_estimate_edge_growth): Update.
2559 (read_inline_edge_summary): Read param info.
2560 (inline_read_summary): Fix formating.
2561 (write_inline_edge_summary): Write param summaries.
2563 2011-09-23 Jakub Jelinek <jakub@redhat.com>
2565 * config/i386/i386.c (ix86_print_operand): Handle %~.
2566 (ix86_print_operand_punct_valid_p): Return true also for '~'.
2567 * config/i386/sse.md (i128): New mode_attr.
2568 (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
2569 avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
2570 *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
2571 vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
2572 patterns, use "<sseinsnmode>" for "mode" attribute.
2573 (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
2574 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
2575 %~128 in the patterns, use "OI" for "mode" attribute.
2577 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
2580 * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
2582 (*cmpqi_sign_extend): Use s8_operand.
2583 (*cmphi, *cmpsi): Rewrite using avr_out_compare.
2584 * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
2586 (out_tsthi, out_tstsi): Remove prototypes.
2587 (avr_out_tsthi, avr_out_tstsi): New prototypes.
2588 * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
2589 (avr_asm_len): Negative length now sets *plen to -length.
2590 (compare_sign_p): Return bool instead of int.
2591 (compare_diff_p, compare_eq_p): Ditto and make static.
2592 (avr_out_tsthi): New function.
2593 (avr_out_tstsi): New function.
2594 (avr_out_compare): New function.
2595 (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
2598 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
2601 * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
2602 (addsi3): Rewrite using QI scratch register. Adjust text
2603 peepholes using plus:SI.
2604 (*addsi3_zero_extend.hi): New insn.
2605 (*subsi3_zero_extend.hi): New insn.
2606 (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
2607 (*subsi3_zero_extend): Ditto.
2608 (subsi3): Change predicate #2 to register_operand.
2609 * config/avr/avr-protos.h (avr_out_plus): New prototype.
2610 (avr_out_plus_1): New static function.
2611 (avr_out_plus): New function.
2612 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
2614 2011-09-23 Jakub Jelinek <jakub@redhat.com>
2616 * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
2617 GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
2619 2011-09-23 Ian Lance Taylor <iant@google.com>
2621 * godump.c (go_define): Treat a single character in single quotes,
2622 or a string, as an operand.
2624 2011-09-23 Martin Jambor <mjambor@suse.cz>
2626 * ipa-prop.h (jump_func_type): Updated comments.
2627 (ipa_known_type_data): New type.
2628 (ipa_jump_func): Use it to describe known type jump functions.
2629 * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
2630 reflect the new known type jump function contents.
2631 (compute_known_type_jump_func): Likewise.
2632 (combine_known_type_and_ancestor_jfs): Likewise.
2633 (try_make_edge_direct_virtual_call): Likewise.
2634 (ipa_write_jump_function): Likewise.
2635 (ipa_read_jump_function): Likewise.
2636 * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
2637 (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
2638 (propagate_accross_jump_function): Likewise.
2640 2011-09-23 Georg-Johann Lay <avr@gjlay.de>
2643 * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
2644 (rotlqi3_4): Turn insn into expander.
2645 (*rotlqi3): New insn.
2646 (rotlhi3, rotlsi3): Support rotate left/right by 1.
2647 (*rotlhi2.1, *rotlhi2.15): New insns.
2648 (*rotlsi2.1, *rotlsi2.31): New insns.
2649 * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
2651 2011-09-23 Bin Cheng <bin.cheng@arm.com>
2653 * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
2655 2011-09-22 Maxim Kuvyrkov <maxim@codesourcery.com>
2657 * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
2659 2011-09-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2661 * reload.c (find_reloads): Set operand_mode to Pmode for address
2662 operands consisting of just a CONST_INT.
2664 2011-09-22 Uros Bizjak <ubizjak@gmail.com>
2667 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
2668 blendv, force op_true to register if it doesn't satisfy
2669 nonimmediate_operand predicate.
2671 2011-09-22 Richard Sandiford <rdsandiford@googlemail.com>
2675 * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
2676 get the locate.where_pad value for register-only arguments.
2677 * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
2678 (arm_pad_reg_upward): Handle null types.
2680 2011-09-22 Jan Hubicka <jh@suse.cz>
2682 * ipa-inline-analysis.c: Fix overly long lines.
2684 2011-09-22 Jan Hubicka <jh@suse.cz>
2686 * ipa-inline-transform.c (inline_call): Always update jump functions
2688 * ipa-inline.c (ipa_inline): Likewise; do not call
2689 ipa_create_all_structures_for_iinln.
2690 (ipa_inline): Always free jump functions.
2691 * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
2692 (remap_edge_predicates): Fix pasto.
2693 (inline_merge_summary): Remove nlined edge predicate; remove hack.
2694 (inline_analyze_function): Always initialize jump functions.
2695 (inline_generate_summary): Likewise.
2696 (inline_write_summary): Always write jump functions when ipa-cp
2698 (inline_read_summary): Always read jump functions when ipa-cp
2700 * ipa-prop.c (iinlining_processed_edges): Remove.
2701 (update_indirect_edges_after_inlining): Do not use
2702 iinlining_processed_edges; instead set param_index to -1.
2703 (propagate_info_to_inlined_callees): Only try to indirect inlining
2704 when asked to do so; update jump functions of indirect calls, too;
2705 remove jump functions of the inlined edge.
2706 (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
2707 (ipa_create_all_structures_for_iinln): Remove.
2708 (ipa_free_all_structures_after_iinln): Do not free
2709 iinlining_processed_edges.
2710 * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
2712 2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
2714 * config/arm/predicates.md (expandable_comparison_operator): New
2715 predicate, extracted from...
2716 (arm_comparison_operator): ...here.
2717 * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
2718 (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
2719 (movdfcc): Use expandable_comparison_operator.
2721 2011-09-22 Georg-Johann Lay <avr@gjlay.de>
2725 * config/avr/avr-protos.h (avr_out_bitop): New prototype.
2726 (avr_popcount_each_byte): New prototype.
2727 * config/avr/avr.c (avr_popcount): New static function.
2728 (avr_popcount_each_byte): New function.
2729 (avr_out_bitop): New function.
2730 (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
2731 avr_out_bitop. Cleanup code.
2732 * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
2733 (Ca4, Co4, Cx4): New constraints.
2734 * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
2736 (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
2737 (andsi3, iorsi3, xorsi3): Ditto.
2738 (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
2740 2011-09-22 Ira Rosen <ira.rosen@linaro.org>
2742 PR tree-optimization/50451
2743 * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
2744 constant operands in reduction.
2745 (vect_get_slp_defs): Don't create vector operand for NULL scalar
2748 2011-09-22 David S. Miller <davem@davemloft.net>
2750 * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
2751 fpack16, fpack32, fpackfix as const.
2753 * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
2754 I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
2755 constants. Use them everywhere.
2757 2011-09-22 Oleg Endo <oleg.endo@t-online.de>
2759 * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
2760 Added AND special case. Adapted comments.
2761 (sh_rtx_costs): Added XOR and IOR case.
2763 2011-09-21 Jan Hubicka <jh@suse.cz>
2765 * ipa-inline-analsis.c (compute_inline_parameters): Set
2766 cfun and current_function_decl.
2768 2011-09-21 Jan Hubicka <jh@suse.cz>
2770 * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
2771 handled components in parameter of builtin_constant_p.
2772 (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
2774 2011-09-21 Jan Hubicka <jh@suse.cz>
2776 * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
2777 * ipa-inline.h (estimate_edge_time): Fix pasto.
2778 * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
2780 2011-09-21 Jakub Jelinek <jakub@redhat.com>
2782 * config/i386/i386.c (ix86_expand_sse_movcc): Use
2783 blendvps, blendvpd and pblendvb if possible.
2785 2011-09-21 Uros Bizjak <ubizjak@gmail.com>
2788 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
2789 operand 1 predicate to register_operand and operand 2 predicate
2790 to nonimmediate_operand.
2791 * config/i386/i386.c (ix86_expand_sse_movcc): When generating
2792 xop_pcmov, force op_true to register. Also, force op_false to
2793 register if it doesn't satisfy nonimmediate_operand predicate.
2795 2011-09-21 Kirill Yukhin <kirill.yukhin@intel.com>
2797 * config/i386/bmi2intrin.h (_mulx_u64): New.
2800 2011-09-21 Jan Hubicka <jh@suse.cz>
2802 PR tree-optimization/50433
2803 * ipa-inline-analysis.c (eliminated_by_inlining_prob):
2804 Use get_base_address.
2806 2011-09-21 Jakub Jelinek <jakub@redhat.com>
2808 * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
2809 nonimmediate_operand instead of register_operand predicate for operands
2810 1 and 2, force them into registers if expanding them as comparison.
2811 (<code><mode>3 umaxmin:VI124_128 expander): Similarly. For UMAX
2812 V8HImode force into register just operand 1.
2814 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
2817 * config/avr/avr.c (avr_function_arg_advance): Change error to
2818 warning if a fixed register is needed as function argument.
2820 2011-09-21 Georg-Johann Lay <avr@gjlay.de>
2824 * config/avr/avr.md (adjust_len): New insn attribute.
2825 (*reload_insi, *reload_insf): Use it.
2826 (*movsi, *movsf): Use new interface of output_movsisf.
2827 * config/avr/avr-protos.h (output_movsisf): Change prototype.
2828 * config/avr/avr.c (output_movsisf): Ditto.
2829 (adjust_insn_length): Use insn attribute "adjust_len" to adjust
2830 lengths of insns *reload_insi, *reload_insf.
2831 (output_reload_insisf_1): New static function.
2832 (output_reload_insisf): Use it.
2834 2011-09-21 David S. Miller <davem@davemloft.net>
2836 * config/sparc/sparc.c (def_builtin): Change from macro into function.
2837 (def_builtin_const): New.
2838 (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
2839 other than alignaddr and falignaddr.
2841 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
2842 UNSPEC_FCMPEQ): New unspec codes.
2843 (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
2844 fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
2845 * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
2846 new pixel compare VIS patterns.
2847 * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
2848 __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
2849 __vis_fcmpeq16, __vis_fcmpeq32): New.
2850 * doc/extend.texi: Document new pixel compare VIS intrinsics.
2852 2011-09-21 Tom de Vries <tom@codesourcery.com>
2854 * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
2856 2011-09-20 David S. Miller <davem@davemloft.net>
2858 * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
2859 (aligneddrl<P:mode>_vis): New pattern.
2860 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
2861 edge32l_vis): Adjust to take Pmode arguments, and return SImode.
2862 * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
2863 alignaddrl insn, and adjust edge operations for updated types.
2864 * config/sparc/visintrin.h: Likewise.
2865 * doc/extend.texi: Make typing in VIS documentation match reality.
2867 2011-09-20 Terry Guo <terry.guo@arm.com>
2869 * config/arm/arm-arches.def: Add armv6s-m.
2870 * config/arm/arm-tables.opt: Regenerate.
2872 2011-09-20 Wei Guozhi <carrot@google.com>
2874 PR rtl-optimization/49452
2875 * postreload.c (reload_combine): Invalidate use information when across
2878 2011-09-19 Maxim Kuvyrkov <maxim@codesourcery.com>
2880 * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
2881 Remove maintenance overhead.
2882 (haifa_sched_init, sched_finish): Update.
2884 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
2886 * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
2887 to calculate unit, prefix_rep and prefix_data16 attributes.
2888 (*mov<mode>_internal): Ditto for unit attribute.
2889 (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
2890 (*movv2sf_internal): Ditto.
2891 * config/i386/sse.md (VI1248_256): Remove mode iterator.
2892 (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
2893 (*avx2_eq<mode>3): Ditto.
2894 (avx2_gt<mode>3): Ditto.
2896 2011-09-19 Uros Bizjak <ubizjak@gmail.com>
2898 * config/i386/i386.md (maxmin): New code iterator.
2899 * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
2900 from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
2902 (*avx2_<maxmin:code><mode>3): Macroize isn from
2903 *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
2904 maxmin code iterator.
2905 (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
2906 (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
2907 <umaxmin:code>v16qi3.
2909 2011-09-19 Alan Modra <amodra@gmail.com>
2910 Michael Meissner <meissner@linux.vnet.ibm.com>
2913 * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
2914 split the load of the indirect function's TOC from the call to
2915 prevent the compiler from moving the load of the new TOC above
2916 code that references the current function's TOC.
2917 (call_indirect_aix<ptrsize>_internal): Ditto.
2918 (call_indirect_aix<ptrsize>_nor11): Ditto.
2919 (call_indirect_aix<ptrsize>_internal2): Ditto.
2920 (call_value_indirect_aix<ptrsize>): Ditto.
2921 (call_value_indirect_aix<ptrsize>_internal): Ditto.
2922 (call_value_indirect_aix<ptrsize>_nor11): Ditto.
2923 (call_value_indirect_aix<ptrsize>_internal2): Ditto.
2925 2011-09-19 Jakub Jelinek <jakub@redhat.com>
2927 * config/i386/sse.md (*sse4_1_extractps): Change into
2928 define_insn_and_split, add =x 0 n and =x x n alternatives
2929 and split them after reload.
2931 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
2933 * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
2935 2011-09-19 Alexandre Oliva <aoliva@redhat.com>
2937 * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
2939 2011-09-19 Ira Rosen <ira.rosen@linaro.org>
2941 PR tree-optimization/50413
2942 * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
2943 a basic block if one of its data-refs can't be analyzed.
2945 2011-09-19 Paul Brook <paul@codesourcery.com>
2947 * config/arm/predicates.md (shift_amount_operand): Check constant
2948 shift count is in range.
2949 (const_shift_operand): Remove.
2951 2011-09-18 Eric Botcazou <ebotcazou@adacore.com>
2952 Iain Sandoe <developer@sandoe-acoustics.co.uk>
2955 * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
2956 * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
2958 2011-09-18 H.J. Lu <hongjiu.lu@intel.com>
2960 * config/i386/bmiintrin.h: Remove tmp.
2961 * config/i386/tbmintrin.h: Likewise.
2963 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
2965 PR tree-optimization/50414
2966 * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
2969 2011-09-18 Ira Rosen <ira.rosen@linaro.org>
2971 PR tree-optimization/50412
2972 * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
2973 acceses that require epilogue loop if vectorizing outer loop.
2975 2011-09-17 David S. Miller <davem@davemloft.net>
2977 * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
2978 UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
2980 (define_attr type): New type 'edge'.
2981 (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
2982 edge32l_vis): New patterns.
2983 * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
2984 * config/sparc/ultra3.md: Likewise.
2985 * config/sparc/niagara.md: Likewise.
2986 * config/sparc/niagara2.md: Likewise.
2987 * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
2988 builtins for VIS edge instructions.
2989 * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
2990 (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
2992 (__v8qi, __v4qi): Make unsigned.
2993 (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
2994 __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
2995 __vis_fpack32): Fix types.
2996 * doc/extend.texi: Document new 'edge' VIS intrinsics.
2998 * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
3000 (niagara3_costs): New.
3001 (sparc_option_override): Use it.
3002 * gcc/config/sparc/niagara2.md: Adjust with more accurate
3003 Niagara-3 reservations.
3005 2011-09-17 Jakub Jelinek <jakub@redhat.com>
3007 * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
3008 (sse2_avx, sseinsnmode): Add V2TI.
3009 (REDUC_SMINMAX_MODE): New mode iterator.
3010 (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
3011 reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
3012 (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
3013 (sse2_lshrv1ti3): Rename to...
3014 (<sse2_avx2>_lshr<mode>3): ... this. Use VIMAX_AVX2 mode
3015 iterator. Move before umaxmin expanders.
3016 * config/i386/i386.h (VALID_AVX256_REG_MODE,
3017 SSE_REG_MODE_P): Accept V2TImode.
3018 * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
3019 V16HImode, V8SImode and V4DImode.
3021 * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
3023 (ix86_build_signbit_mask): Likewise.
3024 (ix86_expand_int_vcond): Likewise. Handle V16HImode and V32QImode.
3025 (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
3026 instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
3027 * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
3028 (<code><mode>3) ... this.
3029 (avx2_<code><mode>3 smaxmin expand): Rename to...
3030 (<code><mode>3) ... this.
3031 (smax<mode>3, smin<mode>3): Macroize using smaxmin code iterator.
3032 (smaxv2di3, sminv2di3): Macroize using smaxmin code iterator and
3033 VI8_AVX2 mode iterator.
3034 (umaxv2di3, uminv2di3): Macroize using umaxmin code iterator and
3035 VI8_AVX2 mode iterator.
3036 (vcond<V_256:mode><VI_256:mode>, vcondu<V_256:mode><VI_256:mode>):
3039 2011-09-17 Richard Sandiford <rdsandiford@googlemail.com>
3041 * config/ia64/itanium2.md: Use match_test rather than eq/ne symbol_ref
3044 2011-09-16 David S. Miller <davem@davemloft.net>
3046 * config/sparc/visintrin.h: New file.
3047 * config.gcc: Add it to extra_headers on sparc.
3049 2011-09-16 Jakub Jelinek <jakub@redhat.com>
3051 * config/i386/i386.c (ix86_expand_reduc_v4sf): Rename to ...
3052 (ix86_expand_reduc): ... this. Handle also V8SFmode and V4DFmode.
3053 * config/i386/sse.md (reduc_splus_v4sf, reduc_smax_v4sf,
3054 reduc_smin_v4sf): Adjust callers.
3055 (reduc_smax_v8sf, reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df):
3058 * config/i386/sse.md (vec_extract_hi_<mode>,
3059 vec_extract_hi_v16hi, vec_extract_hi_v32qi): Use
3060 vextracti128 instead of vextractf128 for -mavx2 and
3061 integer vectors. For V4DFmode fix up mode attribute.
3062 (VEC_EXTRACT_MODE): For TARGET_AVX add 32-byte vectors.
3063 (vec_set_lo_<mode>, vec_set_hi_<mode>): For VI8F_256 modes use V4DF
3064 instead of V8SF mode attribute.
3065 (avx2_extracti128): Change into define_expand.
3066 * config/i386/i386.c (ix86_expand_vector_extract): Handle
3067 32-byte vector modes if TARGET_AVX.
3069 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
3071 * config/avr/avr.md: (umulqihi3, mulqihi3): Write as one pattern.
3072 (umulqi3_highpart, smulqi3_highpart): Ditto.
3073 (*maddqihi4.const, *umaddqihi4.uconst): Ditto.
3074 (*msubqihi4.const, *umsubqihi4.uconst): Ditto.
3075 (*muluqihi3.uconst, *mulsqihi3.sconst): Ditto.
3077 2011-09-16 Georg-Johann Lay <avr@gjlay.de>
3080 * config/avr/avr.md (*ashiftqihi2.signx.1): New insn.
3081 (*maddqi4, *maddqi4.const): New insns.
3082 (*msubqi4, *msubqi4.const): New insns.
3083 * config/avr/avr.c (avr_rtx_costs): Record costs of above in cases
3084 PLUS:QI and MINUS:QI. Increase costs of multiply-add/-sub for
3085 HImode by 1 in the case of multiplying with a CONST_INT.
3086 Record cost of *ashiftqihi2.signx.1 in case ASHIFT:QI.
3088 2011-09-15 Jan Hubicka <jh@suse.cz>
3091 * gimple-fold.c (gimple_get_virt_method_for_binfo): Do not ICE on
3092 error_mark_node in the DECL_INITIAL of vtable.
3094 2011-09-15 Diego Novillo <dnovillo@google.com>
3096 * Makefile.in (SYSROOT_CFLAGS_FOR_TARGET): Define from
3097 @SYSROOT_CFLAGS_FOR_TARGET@.
3098 * configure.ac (SYSROOT_CFLAGS_FOR_TARGET): Set from build-sysroot.
3099 * configure: Regenerate.
3100 (site.exp): Add definition of TEST_ALWAYS_FLAGS.
3101 Remove setting of GCC_UNDER_TEST.
3103 2011-09-15 Uros Bizjak <ubizjak@gmail.com>
3105 * config/i386/i386.c (output_fp_compare): Return %v prefixed
3106 instruction mnemonics for TARGET_AVX.
3108 * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in
3109 "type" attribute calculation.
3110 (*movdf_internal): Ditto.
3111 (*movsf_internal): Ditto.
3113 2011-09-15 James Greenhalgh <james.greenhalgh@arm.com>
3115 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): New builtin macro.
3117 2011-09-15 Jason Merrill <jason@redhat.com>
3120 * expr.c (count_type_elements): Handle NULLPTR_TYPE.
3122 2011-09-15 Jan Hubicka <jh@suse.cz>
3124 * ipa-inline-analysis.c (add_condition): Add conditions parameter;
3125 simplify obviously true clauses.
3126 (and_predicates, or_predicates): Add conditions parameter.
3127 (inline_duplication_hoook): Update.
3128 (mark_modified): New function.
3129 (unmodified_parm): New function.
3130 (eliminated_by_inlining_prob, (set_cond_stmt_execution_predicate,
3131 set_switch_stmt_execution_predicate, will_be_nonconstant_predicate):
3132 Use unmodified_parm.
3133 (estimate_function_body_sizes): Update.
3134 (remap_predicate): Update.
3136 2011-09-15 Ira Rosen <ira.rosen@linaro.org>
3138 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Allow
3139 read-after-read dependencies in basic block SLP.
3141 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3143 * config/sparc/sparc.md: Use match_test rather than eq/ne symbol_ref
3146 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3148 * config/sh/sh.md: Use match_test rather than eq/ne symbol_ref
3151 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3153 * config/s390/s390.md: Use match_test rather than eq/ne symbol_ref
3156 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3158 * config/rs6000/rs6000.md: Use match_test rather than eq/ne symbol_ref
3160 * config/rs6000/constraints.md: Likewise.
3162 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3164 * config/microblaze/microblaze.md: Use match_test rather than
3165 eq/ne symbol_ref throughout file.
3167 2011-09-14 Richard Sandiford <rdsandiford@googlemail.com>
3169 * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref
3172 2011-09-14 Tom de Vries <tom@codesourcery.com>
3175 * explow.c (emit_stack_restore): Set crtl->need_drap if
3176 stack_restore is emitted.
3178 2011-09-14 Julian Brown <julian@codesourcery.com>
3180 * config/arm/arm.c (arm_override_options): Add unaligned_access
3182 (arm_file_start): Emit attribute for unaligned access as appropriate.
3183 * config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
3184 (UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
3185 (insv, extzv): Add unaligned-access support.
3186 (extv): Change to expander. Likewise.
3187 (extzv_t1, extv_regsi): Add helpers.
3188 (unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
3189 (unaligned_storesi, unaligned_storehi): New.
3190 (*extv_reg): New (previous extv implementation).
3191 * config/arm/arm.opt (munaligned_access): Add option.
3192 * config/arm/constraints.md (Uw): New constraint.
3193 * expmed.c (store_bit_field_1): Adjust bitfield numbering according
3194 to size of access, not size of unit, when BITS_BIG_ENDIAN !=
3195 BYTES_BIG_ENDIAN. Don't use bitfield accesses for
3196 volatile accesses when -fstrict-volatile-bitfields is in effect.
3197 (extract_bit_field_1): Likewise.
3199 2011-09-14 Richard Sandiford <richard.sandiford@linaro.org>
3201 * simplify-rtx.c (simplify_subreg): Check that the inner mode is
3202 a scalar integer before applying integer-only optimisations to
3205 2011-09-14 Bernd Schmidt <bernds@codesourcery.com>
3207 * config/mips/mips.c (mips_expand_epilogue): Generate a
3208 simple_return only if the return address is in r31.
3210 2011-09-13 Bernd Schmidt <bernds@codesourcery.com>
3212 * cfgcleanup.c (try_head_merge_bb): If get_condition returns
3213 NULL for a jump that is a cc0 insn, pick the previous insn for
3216 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3218 * config/v850/v850.md: Use match_test rather than eq/ne symbol_ref
3221 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3223 * config/pa/pa.md: Use match_test rather than eq/ne symbol_ref
3226 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3228 * config/mn10300/mn10300.md: Use match_test rather than eq/ne
3229 symbol_ref throughout file.
3231 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3233 * config/m68k/m68k.md: Use match_test rather than eq/ne symbol_ref
3236 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3238 * config/h8300/h8300.md: Use match_test rather than eq/ne symbol_ref
3241 2011-09-13 Richard Sandiford <rdsandiford@googlemail.com>
3243 * config/arm/arm.md: Use match_test rather than eq/ne symbol_ref
3245 * config/arm/neon.md: Likewise.
3246 * config/arm/vfp.md: Likewise.
3247 * config/arm/thumb2.md: Likewise.
3248 * config/arm/cortex-m4.md: Likewise.
3250 2011-09-13 Sevak Sargsyan <sevak.sargsyan@ispras.ru>
3252 * config/arm/neon.md (neon_vabd<mode>_2, neon_vabd<mode>_3): New
3253 define_insn patterns for combine.
3255 2011-09-13 Giuseppe Scrivano <gscrivano@gnu.org>
3257 * reorg.c: Always define make_return_insns.
3259 2011-09-13 Jan Hubicka <jh@suse.cz>
3262 * cgraphunit.c (assemble_thunks_and_aliases): Force alias to be output.
3264 2011-09-13 Jan Hubicka <jh@suse.cz>
3267 * ipa-inline-transform.c (can_remove_node_now_p): Fix thunkos.
3269 2011-09-13 Paul Brook <paul@codesourcery.com>
3271 * config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
3272 (ARM_TARGET2_DWARF_FORMAT): Provide default definition.
3273 * config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
3274 * config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
3275 * config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
3276 * config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
3277 * config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
3278 * config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
3279 enabling unwind tables.
3280 (c6x_debug_unwind_info): New function.
3281 (TARGET_ARM_EABI_UNWINDER): Define.
3282 (TARGET_DEBUG_UNWIND_INFO): Define.
3283 * config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
3284 (TARGET_EXTRA_CFI_SECTION): Remove.
3285 * config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
3286 * ginclude/unwind-arm-common.h: New file.
3288 2011-09-13 Georg-Johann Lay <avr@gjlay.de>
3291 * config/avr/predicates.md (const_1_to_6_operand): New predicate.
3292 * config/avr/avr.md: (extend_s): New code attribute.
3293 (mul_r_d): New code attribute.
3294 (*maddqihi4, *umaddqihi4): New insns.
3295 (*msubqihi4, *umsubqihi4): New insns.
3296 (*usmaddqihi4, *sumaddqihi4): New insns.
3297 (*usmsubqihi4, *susubdqihi4): New insns.
3298 (*umaddqihi4.uconst, *maddqihi4.sconst): New insn-and-splits.
3299 (*umsubqihi4.uconst, *msubqihi4.sconst): New insn-and-splits.
3300 (*umsubqihi4.uconst.ashift): New insn-and-split.
3301 (*msubqihi4.sconst.ashift): New insn-and-split.
3302 (*sumaddqihi4.uconst): New insn-and-split.
3303 (*sumsubqihi4.uconst): New insn-and-split.
3304 * config/avr/avr.c (avr_rtx_costs): Report costs of above in case
3305 PLUS:HI and MINUS:HI.
3307 2011-09-13 Revital Eres <revital.eres@linaro.org>
3309 modulo-sched.c (remove_node_from_ps): Return void instead of bool.
3310 (optimize_sc): Adjust call to remove_node_from_ps.
3311 (sms_schedule): Add print info.
3313 2011-09-13 Bernd Schmidt <bernds@codesourcery.com>
3315 * rtl.c (copy_rtx): Do not handle frame_related, jump or call
3318 2011-09-12 Jakub Jelinek <jakub@redhat.com>
3321 * dwarf2cfi.c (add_cfis_to_fde): Ignore non-active insns in between
3322 NOTE_INSN_CFI notes, with the exception of
3323 NOTE_INSN_SWITCH_TEXT_SECTIONS.
3325 2011-09-12 Bernd Schmidt <bernds@codesourcery.com>
3326 Richard Sandiford <rdsandiford@googlemail.com>
3328 * config/mips/mips.c (mips_epilogue): New structure.
3329 (mips16e_save_restore_reg): Queue REG_CFA_RESTORE notes when
3330 restoring registers.
3331 (mips_epilogue_emit_cfa_restores): New function.
3332 (mips_epilogue_set_cfa): Likewise.
3333 (mips_restore_reg): Queue REG_CFA_RESTORE notes. When restoring
3334 the current CFA register from the stack, redefine the CFA in terms
3335 of the stack pointer.
3336 (mips_expand_epilogue): Set up mips_epilogue. Attach CFA information
3337 to the epilogue instructions.
3339 2011-09-12 Richard Sandiford <rdsandiford@googlemail.com>
3341 * config/mips/mips.c (mips16e_save_restore_reg): Add a reg_parm_p
3343 (mips16e_build_save_restore): Update accordingly.
3345 2011-09-12 Jakub Jelinek <jakub@redhat.com>
3347 PR rtl-optimization/50212
3348 * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
3349 Skip also lps with NULL landing_pad or non-LABEL_P landing_pad.
3352 * calls.c (load_register_parameters): Use use_reg_mode instead
3353 of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
3355 (expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
3356 for stack CALL_INSN_FUNCTION_USAGE uses.
3357 * expr.h (use_reg_mode): New prototype.
3358 (use_reg): Changed into inline around use_reg_mode.
3359 * expr.c (use_reg): Renamed to...
3360 (use_reg_mode): ... this. Added MODE argument, set EXPR_LIST
3361 mode to that mode instead of VOIDmode.
3362 * var-tracking.c (prepare_call_arguments): Don't track parameters
3363 whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
3364 to it using lowpart_subreg. Convert VALUE and REG/MEM to the
3367 2011-09-12 Georg-Johann Lay <avr@gjlay.de>
3370 * config/avr/avr.c (AVR_SECTION_PROGMEM): New Define.
3371 (progmem_section): New Variable.
3372 (avr_asm_init_sections): Initialize it.
3373 (TARGET_ASM_SELECT_SECTION): Define to...
3374 (avr_asm_select_section): ... this new Function.
3375 (avr_replace_prefix): New Function.
3376 (avr_asm_function_rodata_section): Use it.
3377 (avr_insert_attributes): Don't add section attribute for PROGMEM.
3378 (avr_section_type_flags): Use avr_progmem_p instead of section
3379 name to detect if object is in PROGMEM.
3380 (avr_asm_named_section): Set section name prefix for objects in
3383 2011-09-12 Jakub Jelinek <jakub@redhat.com>
3386 * config/arm/arm.md (*push_fp_multi): Add % before %( and %) in the
3387 sprintf format string.
3389 2011-09-12 Richard Guenther <rguenther@suse.de>
3391 PR tree-optimization/50343
3392 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check
3393 that the reduction is over an SSA name before checking its definition.
3395 2011-09-11 Richard Sandiford <rdsandiford@googlemail.com>
3397 * config/cris/cris.md: Use match_test rather than eq/ne symbol_ref
3400 2011-09-11 Richard Sandiford <rdsandiford@googlemail.com>
3402 * config/mips/mips.md: Use match_test rather than eq/ne symbol_ref
3404 * config/mips/sb1.md: Likewise.
3405 * config/mips/predicates.md: Replace (match_test "!...")
3406 with (not (match_test "..."))
3407 * config/mips/constraints.md: Likewise.
3409 2011-09-09 Andrew Stubbs <ams@codesourcery.com>