1 2011-10-25 H.J. Lu <hongjiu.lu@intel.com>
3 * config/i386/mmx.md (*mmx_maskmovq): Replace :SI with :P and
4 remove "&& !TARGET_64BIT"
5 (*mmx_maskmovq_rex): Removed.
7 2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
9 PR rtl-optimization/46603
10 * reload.c (push_reload): In the out case, reload the subreg as well
11 as the reg if it has word mode.
13 2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
15 * dwarf2out.c (add_gnat_descriptive_type_attribute): Temporarily
16 suppress debug info for the parent type.
18 2011-10-25 Eric Botcazou <ebotcazou@adacore.com>
20 * config/ia64/ia64.c (ia64_profile_hook): Fix thinko.
22 2011-10-25 Richard Henderson <rth@redhat.com>
24 * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Remove.
25 (vec_extract_even<mode>, vec_extract_odd<mode>): Remove.
27 * config/rs6000/altivec.md (vec_extract_evenv8hi,
28 vec_extract_evenv16qi, vec_extract_oddv4si,
29 vec_extract_oddv4sf): Remove.
31 * config/spu/spu.md (vec_extract_evenv4si, vec_extract_evenv4sf,
32 vec_extract_evenv8hi, vec_extract_evenv16qi, vec_extract_oddv4si,
33 vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
34 vec_interleave_highv4sf, vec_interleave_lowv4sf,
35 vec_interleave_highv4si, vec_interleave_lowv4si,
36 vec_interleave_highv8hi, vec_interleave_lowv8hi,
37 vec_interleave_highv16qi, vec_interleave_lowv16qi): Remove.
39 * expr.c (expand_expr_real_2) [VEC_EXTRACT_EVEN_EXPR]: Use binop.
40 [VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR]: Likewise.
41 [VEC_INTERLEAVE_LOW_EXPR]: Likewise.
42 * optabs.c (expand_binop): Implement vec_interleave_high_optab,
43 vec_interleave_low_optab, vec_extract_even_optab,
44 vec_extract_odd_optab with expand_vec_perm.
45 (can_vec_perm_for_code_p): New.
47 * tree-vect-data-refs.c (vect_strided_store_supported): Allow for
48 fallback via can_vec_perm_for_code_p.
49 (vect_strided_load_supported): Likewise.
50 * tree-vect-generic.c (expand_vector_operations_1): Never lower
51 VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR,
52 VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR.
54 * target.def (vec_perm_const_ok): Change parameters to mode and
56 * doc/tm.texi: Rebuild.
57 * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
58 parameters to mode and array of indicies.
59 * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Expand operands here.
60 * optabs.c (can_vec_perm_p): Rename from can_vec_perm_expr_p.
61 Change parameters to mode and array of indicies.
62 (expand_vec_perm_1): Rename from expand_vec_perm_expr_1.
63 (expand_vec_perm): Rename from expand_vec_perm_expr. Change
64 parameters to mode and rtx inputs. Try lowering to QImode
65 vec_perm_const before trying fully variable permutation.
66 * optabs.h: Update decls.
67 * tree-vect-generic.c (lower_vec_perm): Extract array of indices from
68 VECTOR_CST to pass to can_vec_perm_p.
69 * tree-vect-slp.c (vect_get_mask_element): Change mask parameter type
70 from int pointer to unsigned char pointer.
71 (vect_transform_slp_perm_load): Update for change to can_vec_perm_p.
72 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
74 * tree.def (VEC_EXTRACT_EVEN_EXPR): Fix typo in text name.
75 (VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
76 VEC_INTERLEAVE_LOW_EXPR): Likewise.
78 2011-10-25 Mike Stump <mikestump@comcast.net>
80 * reload.c (regno_clobbered_p): Fix typo.
82 2011-10-25 Dodji Seketeli <dodji@redhat.com>
84 * input.c (expand_location): Rewrite using
85 linemap_resolve_location and linemap_expand_location. Add a
88 2011-10-25 Jakub Jelinek <jakub@redhat.com>
90 PR tree-optimization/50596
91 * tree-vect-stmts.c (vect_mark_relevant): Only use
92 FOR_EACH_IMM_USE_FAST if lhs is SSA_NAME.
93 (vectorizable_store): If is_pattern_stmt_p look through
94 VIEW_CONVERT_EXPR on lhs.
95 * tree-vect-patterns.c (check_bool_pattern, adjust_bool_pattern):
96 Use unsigned type instead of signed.
97 (vect_recog_bool_pattern): Optimize also stores into bool memory in
98 addition to casts from bool to integral types.
99 (vect_mark_pattern_stmts): If pattern_stmt already has vinfo
100 created, don't create it again.
102 2011-10-25 Kai Tietz <ktietz@redhat.com>
104 * config/i386/i386.c (ix86_frame_pointer_required): Require
105 frame-pointer, if setjmp is used for 32-bit ms-abi.
107 2011-10-24 Michael Meissner <meissner@linux.vnet.ibm.com>
109 * builtins.c (set_builtin_user_assembler_name): Remove extra
110 newline added in October 11th, 2011 change.
112 2011-10-24 David S. Miller <davem@davemloft.net>
114 * config/sparc/little-endian.opt: Delete.
115 * config.gcc: Remove references to config/sparc/little-endian.opt
116 * doc/invoke.texi: Remove documentation of -mlittl-endian on sparc.
117 * config/sparc/linux64.h: Delete references to -mlittle-endian.
118 * config/sparc/netbsd-elf.h: Likewise.
119 * config/sparc/openbsd64.h: Likewise.
120 * config/sparc/sparc.h: Likewise.
121 * config/sparc/sp64-elf.h: Likewise and delete overrides for
122 BYTES_BIG_ENDIAN and WORDS_BIG_ENDIAN.
123 * config/sparc/sparc.c (dump_target_flag_bits): Remove reference
124 to MASK_LITTLE_ENDIAN.
125 * config/sparc/sparc.opt (Mask(LITTLE_ENDIAN)): Delete.
127 * config/sparc/sparc.md: Only use F, G, and C constraints in FP
128 insns. Only use D, Y, and Z constraints in vector insns.
130 * config/sparc/sparc.md (cpu_feature, enabled): New attributes.
131 (*movsi_insn_novis3, *movsi_insn_vis3): Consolidate into one pattern
133 (*movdi_insn_sp32_v9_novis3, *movdi_insn_sp32_v9_vis3): Consolidate
134 into *movdi_insn_sp32.
135 (*movdi_insn_sp64_novis3, *movdi_insn_sp64_vis3): Consolidate into
136 one pattern called *movdi_insn_sp64.
137 (*movsf_insn_novis3, *movsf_insn_vis3, *movsf_insn_no_fpu):
138 Consolidate into one pattern called *movsf_insn.
139 (*movdf_insn_sp32_no_fpu, *movdf_insn_sp32_v9_novis3,
140 *movdf_insn_sp32_v9_vis3, *movdf_insn_sp32_v9_no_fpu): Consolidate
141 into *movdf_insn_sp32.
142 (*movdf_insn_sp64_novis3, *movdf_insn_sp64_vis3,
143 *movdf_insn_sp64_no_fpu): Consolidate into one pattern called
145 (*zero_extendsidi2_insn_sp64_novis3,
146 *zero_extendsidi2_insn_sp64_vis3): Consolidate into one pattern
147 called *zero_extendsidi2_insn_sp64.
148 (*sign_extendsidi2_insn_novis3, *sign_extendsidi2_insn_vis3):
149 Consolidate into one pattern named *sign_extendsidi2_insn.
150 (*mov<VM32:mode>_insn_novis3, *mov<VM32:mode>_insn_vis3):
151 Consolidate into one pattern named *mov<VM32:mode>_insn.
152 (*mov<VM64:mode>_insn_sp64_novis3,
153 *mov<VM64:mode>_insn_sp64_novis3): Consolidate into one pattern
154 named *mov<VM64:mode>_insn_sp64.
155 (*mov<VM64:mode>_insn_sp32_novis3,
156 *mov<VM64:mode>_insn_sp32_vis3): Consolidate into one pattern
157 named *mov<VM64:mode>_insn_sp32.
159 2011-10-24 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
161 * tree-ssa-strlen.c (get_string_length): Change assertion to STPCPY.
162 (zero_length_string): Change assertion to accept strinfo without
163 length but with stmt instead.
164 Set the endptr pointer also if starting a new chain.
165 (adjust_related_strinfos): Ignore strinfos marked for delayed
167 (handle_builtin_strcpy): Mark earlier strinfo elements also for
168 delayed length computation.
170 2011-10-24 Georg-Johann Lay <avr@gjlay.de>
173 Port from 4.6 branch r180379
174 * doc/invoke.texi (AVR Options): New subsubsection to explain EIND
175 handling and indirect jump/calls on devices > 128k.
177 2011-10-24 Anatoly Sokolov <aesok@post.ru>
178 Georg-Johann Lay <avr@gjlay.de>
181 * doc/extend.texi (Declaring Attributes of Functions):
182 Document OS_main and OS_task attributes.
183 (Specifying Attributes of Variables): Move up
184 subsection "AVR Variable Attributes" as of alphabetical order.
186 2011-10-24 Richard Guenther <rguenther@suse.de>
188 * tree-vect-stmts.c (vect_get_vec_def_for_operand): Convert constants
189 to vector element type.
190 (vectorizable_assignment): Bail out for non-mode-precision operations.
191 (vectorizable_shift): Likewise.
192 (vectorizable_operation): Likewise.
193 (vectorizable_type_demotion): Likewise.
194 (vectorizable_type_promotion): Likewise.
195 (vectorizable_store): Handle non-mode-precision stores.
196 (vectorizable_load): Handle non-mode-precision loads.
197 (get_vectype_for_scalar_type_and_size): Return a vector type
198 for non-mode-precision integers.
199 * tree-vect-loop.c (vectorizable_reduction): Bail out for
200 non-mode-precision reductions.
202 2011-10-24 Julian Brown <julian@codesourcery.com>
204 * config/m68k/m68k.c (notice_update_cc): Tighten condition for
205 setting CC_REVERSED for FP comparisons.
207 2011-10-24 Richard Guenther <rguenther@suse.de>
209 PR tree-optimization/50838
210 * tree-data-ref.c (dr_analyze_indices): Properly canonicalize
211 a MEM_REF base if we change it.
213 2011-10-24 Bernd Schmidt <bernds@codesourcery.com>
216 * rtlanal.c: Swap includes of "hard-reg-set.h" and "rtl.h".
218 PR rtl-optimization/50833
219 * function.c (thread_prologue_and_epilogue_insns): Expect the
220 return insn optimization only if optimize.
222 2011-10-24 Georg-Johann Lay <avr@gjlay.de>
224 * config/avr/avr.c: Break long lines.
225 Define target hooks on the fly if applicable.
226 (TARGET_ASM_FUNCTION_RODATA_SECTION): Remove first definition
228 (targetm): Move definition to end of file.
229 (avr_can_eliminate): Make static on the fly.
230 (avr_frame_pointer_required_p): Ditto.
231 (avr_hard_regno_scratch_ok): Ditto.
232 (avr_builtin_setjmp_frame_value): Make static on the fly.
233 Indent according to coding rules.
234 (avr_case_values_threshold): Ditto.
235 (avr_attribute_table): Move down.
237 2011-10-24 Ira Rosen <ira.rosen@linaro.org>
239 PR tree-optimization/50730
240 * tree-vect-data-refs.c (vect_analyze_data_refs): Stop basic block
241 analysis if encountered unsupported data-ref.
243 2011-10-23 David S. Miller <davem@davemloft.net>
245 * config/sparc/sparc.c (sparc_option_override): Remove -mv8plus
247 * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit,
248 append -mcpu=v9 when -mv8plus is given.
250 * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): We can move
251 between float and non-float regs when VIS3.
252 * config/sparc/sparc.c (eligible_for_restore_insn): We can't
253 use a restore when the source is a float register.
254 (sparc_split_regreg_legitimate): When VIS3 allow moves between
255 float and integer regs.
256 (sparc_register_move_cost): Adjust to account for VIS3 moves.
257 (sparc_preferred_reload_class): On 32-bit with VIS3 when moving an
258 integer reg to a class containing EXTRA_FP_REGS, constrain to
260 (sparc_secondary_reload): On 32-bit with VIS3 when moving between
261 float and integer regs we sometimes need a FP_REGS class
262 intermediate move to satisfy the reload. When this happens
263 specify an extra cost of 2.
264 (*movsi_insn): Rename to have "_novis3" suffix and add !VIS3
266 (*movdi_insn_sp32_v9): Likewise.
267 (*movdi_insn_sp64): Likewise.
268 (*movsf_insn): Likewise.
269 (*movdf_insn_sp32_v9): Likewise.
270 (*movdf_insn_sp64): Likewise.
271 (*zero_extendsidi2_insn_sp64): Likewise.
272 (*sign_extendsidi2_insn): Likewise.
273 (*movsi_insn_vis3): New insn.
274 (*movdi_insn_sp32_v9_vis3): New insn.
275 (*movdi_insn_sp64_vis3): New insn.
276 (*movsf_insn_vis3): New insn.
277 (*movdf_insn_sp32_v9_vis3): New insn.
278 (*movdf_insn_sp64_vis3): New insn.
279 (*zero_extendsidi2_insn_sp64_vis3): New insn.
280 (*sign_extendsidi2_insn_vis3): New insn.
281 (TFmode reg/reg split): Make sure both REG operands are float.
282 (*mov<VM32:mode>_insn): Add "_novis3" suffix and !VIS3 guard. Remove
283 easy constant to integer reg alternatives.
284 (*mov<VM64:mode>_insn_sp64): Likewise.
285 (*mov<VM64:mode>_insn_sp32_novis3): Likewise.
286 (*mov<VM32:mode>_insn_vis3): New insn.
287 (*mov<VM64:mode>_insn_sp64_vis3): New insn.
288 (*mov<VM64:mode>_insn_sp32_vis3): New insn.
289 (VM64 reg<-->reg split): New spliiter for 32-bit.
291 * config/sparc/sparc.c (sparc_split_regreg_legitimate): New
293 * config/sparc/sparc-protos.h (sparc_split_regreg_legitimate):
295 * config/sparc/sparc.md (DImode reg/reg split): Use it.
296 (DFmode reg/reg split): Likewise.
298 * config/sparc/sparc.md (*movdi_insn_sp32_v9): Add alternatives for
299 generating fzero and fone instructions.
300 (DImode const_int --> reg splitter): Only trigger for integer regs.
302 * config/sparc/predicates.md (input_operand): Disallow vector
303 constants other than 0 and -1.
304 * config/sparc/sparc.c (sparc_preferred_reload_class): Return
305 NO_REGS for vector constants other than 0 and -1.
307 * config/sparc/sparc.h (SPARC_FIRST_INT_REG, SPARC_LAST_INT_REG,
308 SPARC_INT_REG_P): Define.
309 (HARD_REGNO_NREGS): Use SPARC_INT_REG_P.
310 (REGNO_OK_FOR_INDEX_P): Likewise.
311 * config/sparc/sparc.c (gen_df_reg): Likewise.
312 (eligible_for_return_delay): Likewise.
313 (eligible_for_sibcall_delay): Likewise.
314 (sparc_legitimate_address_p): Likewise.
315 (emit_save_or_restore_regs): Likewise.
316 (registers_ok_for_ldd_peep): Likewise.
317 * config/spac/sparc.md (DI mode splitters): Likewise.
318 (SF mode const splitters): Likewise.
319 (DF mode splitters): Likewise.
320 (32-bit DI mode logical op splitters): Likewise.
322 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
326 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
329 * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
331 2011-10-23 Uros Bizjak <ubizjak@gmail.com>
333 * config/i386/sse.md (avx2_lshl<mode>3): Remove insn pattern.
334 (VI248_256): Remove mode iterator.
335 * config/i386/i386.c (ix86_expand_vec_perm): Use gen_ashlv4di3
336 instead of gen_avx2_lshlv4di3.
337 (bdesc_args): Use CODE_FOR_ashl{v16hi,v8si,v4di}3 instead of
338 CODE_FOR_avx2_lshl{v16hi,v8si,v4di}3.
340 2011-10-23 Uros Bizjak <ubizjak@gmail.com>
342 * config/i386/sse.md (sseintprefix): Rename from gthrfirstp.
343 (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Delete expander.
344 (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>) Merge insn
345 pattern from *avx2_maskload<ssemodesuffix><avxsizesuffix> and
346 *avx_maskload<ssemodesuffix><avxsizesuffix> using V48_AVX mode
347 iterator. Use sseintprefix mode attribute.
348 (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Delete expander.
349 (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>) Merge insn
350 pattern from *avx2_maskstore<ssemodesuffix><avxsizesuffix> and
351 *avx_maskstore<ssemodesuffix><avxsizesuffix> using V48_AVX mode
352 iterator. Use sseintprefix mode attribute.
353 (*avx2_gathersi<mode>) Use sseintprefix and ssemodesuffix mode
355 (*avx2_gatherdi<mode>): Ditto.
356 (*avx2_gatherdi<mode>256): Ditto.
357 (VI48_AVX2): Remove mode iterator.
358 (gthrlastfp): Remove mode attribute.
360 2011-10-23 Paolo Carlini <paolo.carlini@oracle.com>
363 * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
365 2011-10-23 Tom de Vries <tom@codesourcery.com>
367 PR tree-optimization/50763
368 * tree-ssa-tail-merge.c (same_succ_flush_bb): New function, factored out
370 (same_succ_flush_bbs): Use same_succ_flush_bb.
371 (purge_bbs): Remove argument. Remove calls to same_succ_flush_bbs,
372 release_last_vdef and delete_basic_block.
373 (unlink_virtual_phi): New function.
374 (update_vuses): Add and use vuse1_phi_args argument. Set var to
375 SSA_NAME_VAR of vuse1 or vuse2, and use var. Handle case that def_stmt2
376 is NULL. Use phi result as phi arg in case vuse1 or vuse2 is NULL_TREE.
377 Replace uses of vuse1 if vuse2 is NULL_TREE. Fix code to limit
378 replacement of uses. Propagate phi argument for phis with a single
380 (replace_block_by): Update vops if phi_vuse1 or phi_vuse2 is NULL_TREE.
381 Set vuse1_phi_args if vuse1 is a phi defined in bb1. Add vuse1_phi_args
382 as argument to call to update_vuses. Call release_last_vdef,
383 same_succ_flush_bb, delete_basic_block. Update CDI_DOMINATORS info.
384 (tail_merge_optimize): Remove argument in call to purge_bbs. Remove
385 call to free_dominance_info. Only call calculate_dominance_info once.
387 2011-10-23 Eric Botcazou <ebotcazou@adacore.com>
389 * fold-const.c (invert_tree_comparison): Always invert EQ_EXPR/NE_EXPR.
391 PR tree-optimization/44683
392 * tree-ssa-dom.c (record_edge_info): Record simple equivalences only if
393 we can be sure that there are no signed zeros involved.
395 2011-10-23 Jan Hubicka <jh@suse.cz>
397 * ipa-inline.c (estimate_badness): Scale up and handle overflows.
399 2011-10-23 Uros Bizjak <ubizjak@gmail.com>
402 * config/i386/sse.md (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>):
403 Remove (match_dup 0).
404 (*avx2_maskload<ssemodesuffix><avxsizesuffix>): New insn pattern.
405 (*avx_maskload<ssemodesuffix><avxsizesuffix>): Ditto.
406 (*avx2_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
407 (*avx_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
408 (*avx2_maskmov<ssemodesuffix><avxsizesuffix>): Remove insn pattern.
409 (*avx_maskmov<ssemodesuffix><avxsizesuffix>): Ditto.
411 2011-10-23 Ira Rosen <ira.rosen@linaro.org>
413 PR tree-optimization/50819
414 * tree-vectorizer.h (vect_analyze_data_ref_dependences): Remove
416 * tree-vect-loop.c (vect_analyze_loop_2): Update call to
417 vect_analyze_data_ref_dependences.
418 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Remove
419 the last argument. Check load-after-store dependence for unknown
420 dependencies in basic blocks.
421 (vect_analyze_data_ref_dependences): Update call to
422 vect_analyze_data_ref_dependences.
423 * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo.
424 * tree-vect-slp.c (vect_bb_vectorizable_with_dependencies): Remove.
425 (vect_slp_analyze_bb_1): Update call to
426 vect_analyze_data_ref_dependences. Don't call
427 vect_bb_vectorizable_with_dependencies.
429 2011-10-22 David S. Miller <davem@davemloft.net>
431 * config/sparc/sparc.h (SECONDARY_INPUT_RELOAD_CLASS,
432 SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
433 * config/sparc/sparc.c (TARGET_SECONDARY_RELOAD): Redefine.
434 (sparc_secondary_reload): New function.
436 * config/sparc/sparc.h (sparc_costs): Remove extern decl.
437 (struct processor_costs): Move from here..
438 * config/sparc/sparc.c (struct processor_costs): To here.
439 (sparc_costs): Mark static.
441 * config/sparc/sparc.c (short_branch, reg_unused_after): Delete.
442 * config/sparc/sparc-protos.h (short_branch, reg_unused_after):
443 Get rid of declarations.
445 2011-10-21 Paul Brook <paul@codesourcery.com>
447 * config/c6x/c6x.c (c6x_asm_emit_except_personality,
448 c6x_asm_init_sections): New functions.
449 (TARGET_ASM_EMIT_EXCEPT_PERSONALITY, TARGET_ASM_INIT_SECTIONS): Define.
451 2011-10-21 Jakub Jelinek <jakub@redhat.com>
454 * config/i386/i386.c (expand_vec_perm_even_odd_1): Handle
455 V4DImode and V8SImode for !TARGET_AVX2.
457 2011-10-21 Bernd Schmidt <bernds@codesourcery.com>
460 * sched-deps.c (add_dependence): If not doing predication, promote
461 REG_DEP_CONTROL to REG_DEP_ANTI.
463 2011-10-21 Georg-Johann Lay <avr@gjlay.de>
465 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X
466 instead of X to avr_legitimize_reload_address.
467 * config/avr/avr-protos.h (avr_legitimize_reload_address): Change
468 first argument's type from rtx to rtx*.
469 * config/avr/avr.c (avr_legitimize_reload_address): Ditto.
470 Pass PX to push_reload instead of &X. Change log messages for
473 2011-10-21 Roland Stigge <stigge@antcom.de>
476 * params.def: Fix typo "compilatoin" -> "compilation".
478 2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
479 Kirill Yukhin <kirill.yukhin@intel.com>
482 * config/i386/driver-i386.c (host_detect_local_cpu): Do cpuid 7 only
483 if max_level allows that.
485 2011-10-21 Bernd Schmidt <bernds@codesourcery.com>
487 * reg-notes.def (DEP_CONTROL): New.
488 * sched-ebb.c (add_deps_for_risky_insns): Add a REG_DEP_CONTROL when
489 not doing speculation.
490 * rtlanal.c (record_hard_reg_sets, find_all_hard_reg_sets,
491 record_hard_reg_uses_1, record_hard_reg_uses): New functions.
492 * function.c (record_hard_reg_sets, record_hard_reg_uses,
493 record_hard_reg_uses_1): Remove; move to rtlanal.c.
494 * lists.c (copy_INSN_LIST, concat_INSN_LIST): New functions.
495 * haifa-sched.c: Swap includes of "rtl.h" and "hard-reg-set.h".
496 (MUST_RECOMPUTE_SPEC_P): New macro.
497 (real_insn_for_shadow): New function.
498 (cond_clobbered_p, recompute_todo_spec, check_clobbered_conditions,
499 toggle_cancelled_flags): New static functions.
500 (schedule_insn): Relax an assert to only check for empty hard back
501 dependencies. Skip cancelled dependencies. Call
502 check_clobbered_conditions.
503 (copy_insn_list): Remove function, renamed moved to lists.c.
504 (save_backtrack_point): Use new spelling copy_INSN_LIST.
505 (unschedule_insns_until): Ensure TODO_SPEC is reset properly.
506 (restore_last_backtrack_point): Likewise. Call toggle_cancelled_flags.
507 (estimate_insn_tick): Ignore cancelled dependencies.
508 (haifa_speculate_insn): Move declaration.
509 (try_ready): Move code into recompute_todo_spec and call it. Tweak
510 some asserts. Ensure predicated patterns are restored if necessary.
511 Dump DEP_CONTROL flag.
512 (haifa_change_pattern): Merge with sched_change_pattern.
513 (sched_change_pattern): Remove function.
514 * sched-deps.c (NON_FLUSH_JUMP_KIND, NON_FLUSH_JUMP): Remove. All
515 uses changed to simply not test NON_FLUSH_JUMP_P.
516 (ds_to_dk, dk_to_ds, dump_dep, ds_to_dt, dump_ds, check_dep): Handle
518 (dep_spec_p): If DO_PREDICATION, REG_DEP_CONTROL is speculative.
519 (reg_pending_control_uses, control_dependency_cache): New static
521 (sched_get_reverse_condition_uncached): New function.
522 (sd_find_dep_between): Remove pointless assert. Look in
523 control_dependency_cache.
524 (ask_dependency_caches, set_dependency_caches, sd_delete_dep,
525 extend_dependency_caches, sched_deps_finish): Handle REG_DEP_CONTROL
526 and control_dependency_cache.
527 (sd_unresolve_dep): Use dep_spec_p.
528 (add_dependence): Now a wrapper around add_dependence_1, handling
529 REG_DEP_CONTROL specially.
530 (flush_pending_lists): Clear pending_jump_insns.
531 (sched_analyze_1): Handle pending_jump_insns like a memory flush.
532 (sched_analyze_2): Unconditionally add to pending memory flushes,
533 keep previous behaviour but apply it to pending_jump_insns instead.
534 (sched_analyze_insn): Defer adding jump reg dependencies using
535 reg_pending_control_uses; add them to the control_uses list. Handle
536 pending_jump_insns and control_uses when adding dependence lists.
537 (deps_analyze_insn): Update INSN_COND_DEPS.
538 (deps_analyze_insn): Add jumps to pending_jump_insns rather than
539 last_pending_memory_flush.
540 (init_deps): Initialize pending_jump_insns.
541 (free_deps): Free control_uses.
542 (remove_from_deps): Remove from pending_jump_insns.
543 (init_deps_global): Allocate reg_pending_control_uses).
544 (finish_deps_global): Free it.
545 (add_dependence_1): Renamed from add_dependence. Handle
547 * rtl.h (record_hard_reg_uses, find_all_hard_reg_sets): Declare.
548 (copy_INSN_LIST, concat_INSN_LIST): Declare.
549 * sched-int.h (struct deps_reg): Add control_uses.
550 (struct deps_desc): Add pending_jump_insns.
551 (struct _haifa_deps_insn_data): Add cond_deps.
552 (struct _haifa_insn_data): Add must_recompute_spec and predicated_pat.
553 (INSN_COND_DEPS, PREDICATED_PAT): New macros.
554 (BITS_PER_DEP_WEAK): Adjust for two extra bits in the word.
555 (DEP_CONTROL): New macro.
556 (DEP_TYPES): Include it.
557 (HARD_DEP): Adjust definition.
558 (DEP_CANCELLED): New macro.
559 (enum SCHED_FLAGS): Add DO_PREDICATION.
560 (sched_get_reverse_condition_uncached, real_insn_for_shadow): Declare.
561 * sched-rgn.c (concat_INSN_LIST): Remove function.
562 (deps_join): Handle pending_jump_insns.
563 (free_pending_lists): Likewise.
564 * config/c6x/c6x.c (c6x_set_sched_flags): Set DO_PREDICATION for final
567 2011-10-21 Georg-Johann Lay <avr@gjlay.de>
570 * config/avr/libgcc.S (__EIND__): New define to 0x3C.
571 (__tablejump__): Consistently use EIND for indirect jump/call.
572 (__tablejump_elpm__): Ditto.
574 2011-10-21 Bernd Schmidt <bernds@codesourcery.com>
576 * config/c6x/c6x.md (attr "op_pattern"): New.
577 (load_sdata_pic, mov<mode>_insn for QIHIM and SISFVM): Set it.
578 * config/c6x/c6x-mult.md.in (mulhi3_VARIANT_, mulhisi3_insn_VARIANT_):
580 * config/c6x/c6x-mult.md: Regenerate.
581 * config/c6x/c6x.c: Include "regrename.h".
582 (unit_req_table): New typedef.
583 (unit_reqs): Use it for the declaration.
584 (unit_req_factor, get_unit_reqs, merge_unit_reqs, unit_req_imbalance,
585 get_unit_operand_masks, try_rename_operands, reshuffle_units): New
587 (count_unit_reqs): New arg reqs. All callers changed. Use
588 get_unit_reqs, and don't merge here.
589 (res_mii): New arg reqs. All callers changed. Rewrite to use a loop
590 using unit_req_factor.
591 (hwloop_optimize): Call reshuffle_units. Call merge_unit_reqs after
593 (c6x_reorg): Add reg notes problem, and call df_analyze.
594 * Makefile.in ($(out_object_file)): Depend on regrename.h.
596 2011-10-21 Kai Tietz <ktietz@redhat.com>
598 * fold-const.c (simple_operand_p_2): Handle integral
599 casts from boolean-operands.
601 2011-10-21 Jan Hubicka <jh@suse.cz>
603 * cgraph.c (dump_cgraph_node): Dump alias flag.
604 * cgraphunit.c (handle_alias_pairs): Handle weakrefs with
606 (get_alias_symbol): New function.
607 (output_weakrefs): Output also weakrefs with no destinatoin.
608 (lto_output_node): Output weakref alias flag when at function boundary.
610 2011-10-21 Andrew Stubbs <ams@codesourcery.com>
613 * config/arm/driver-arm.c (vendors): Make static.
615 2011-10-21 Uros Bizjak <ubizjak@gmail.com>
617 * config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
618 (ix86_emit_swsqrtsf): Force a into register.
620 2011-10-20 Mike Stump <mikestump@comcast.net>
622 * regcprop.c (copyprop_hardreg_forward_1): Update recog_data
623 after validate_change wipes it out.
625 2011-10-20 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
627 * config/spu/spu.md ("vec_permv16qi"): Reduce selector modulo 32
628 before using the shufb instruction.
630 2011-10-20 Kirill Yukhin <kirill.yukhin@intel.com>
633 * config/i386/i386.md (bmi_bextr_<mode>): Update register/
634 memory operand order.
635 (bmi2_bzhi_<mode>3): Ditto.
636 (bmi2_pdep_<mode>3): Ditto.
637 (bmi2_pext_<mode>3): Ditto.
639 2011-10-20 Richard Henderson <rth@redhat.com>
641 * target.def (vec_perm_const_ok): Rename from builtin_vec_perm_ok.
642 * optabs.c (can_vec_perm_expr_p): Update to match.
643 (expand_vec_perm_expr): Likewise.
644 * config/i386/i386.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Rename
645 from TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK.
646 * doc/tm.texi.in: Likewise.
648 2011-10-20 Sergey Ostanevich <sergos.gnu@gmail.com>
651 * config/i386/i386.c (processor_target_table): Change Atom
652 align_loops_max_skip to 15.
654 2011-10-20 Richard Henderson <rth@redhat.com>
656 * target.def (builtin_vec_perm): Remove.
657 * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
659 * config/i386/i386.c (ix86_expand_vec_perm_builtin): Remove.
660 (IX86_BUILTIN_VEC_PERM_*): Remove.
661 (bdesc_args): Remove vec_perm builtins
662 (ix86_expand_builtin): Likewise.
663 (ix86_expand_vec_perm_const_1): Rename from
664 ix86_expand_vec_perm_builtin_1.
665 (extract_vec_perm_cst): Merge into...
666 (ix86_vectorize_vec_perm_const_ok): ... here. Rename from
667 ix86_vectorize_builtin_vec_perm_ok.
668 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
670 * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): Remove.
671 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
673 * config/spu/spu.c (spu_builtin_vec_perm): Remove.
674 (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
676 2011-10-20 Uros Bizjak <ubizjak@gmail.com>
679 * config/i386/i386.h (RECIP_MASK_DEFAULT): New define.
680 * config/i386/i386.op (recip_mask): Initialize with RECIP_MASK_DEFAULT.
681 * doc/invoke.texi (ix86 Options, -mrecip): Document that GCC
682 implements vectorized single float division and vectorized sqrtf(x)
683 with reciprocal sequence with additional Newton-Raphson step with
686 2011-10-20 Dodji Seketeli <dodji@redhat.com>
688 * ggc-zone.c (ggc_internal_alloc_zone_stat): Rename
689 ggc_alloced_size_order_for_request into ggc_round_alloc_size like
690 it was done in ggc-page.c.
693 * doc/cppopts.texi: Use @smallexample/@end smallexample in
694 documentation for -fdebug-cpp instead of @quotation/@end quotation
695 that is not supported by contrib/texi2pod.pl.
697 2011-10-19 Jan Hubicka <jh@suse.cz>
699 * ipa-inline.c (inline_small_functions): Always update all calles after
702 2011-10-19 Jan Hubicka <jh@suse.cz>
705 * ipa-inline.c (inline_small_functions): Fix checking code to not make
706 effect on fibheap stability.
708 2011-10-20 Maxim Kuvyrkov <maxim@codesourcery.com>
710 * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
712 2011-10-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
715 * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
718 2011-10-20 Richard Guenther <rguenther@suse.de>
720 * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
721 and rotates to the set of expensive operations.
723 2011-10-19 David S. Miller <davem@davemloft.net>
725 * config/sparc/sparc.c (sparc_expand_move): Use can_create_pseudo_p.
726 (sparc_emit_set_const32): Likewise.
727 (sparc_emit_set_const64_longway): Likewise.
728 (sparc_emit_set_const64): Likewise.
729 (sparc_legitimize_pic_address): Likewise.
730 (memory_ok_for_ldd): Likewise.
732 2011-10-20 Dehao Chen <dehao@google.com>
734 * profile.c (compute_branch_probabilities): Compute and dump the
735 overlap between the static estimation and the instrumentation profile.
736 (OVERLAP_BASE): New macro.
737 (compute_frequency_overlap): New function
739 2011-10-19 Jakub Jelinek <jakub@redhat.com>
741 * config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
742 d->op1 instead of d->op0 for the second vpshufb.
743 (expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
744 (ix86_expand_vec_perm_const): If mask indicates two operands are
745 needed, but both are the same and expanding them as d.op0 == d.op1
746 failed, retry with d.op0 != d.op1.
747 (ix86_expand_vec_perm_builtin): Likewise. Handle sorry printing
748 also for d.nelt == 32.
751 * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
754 2011-10-19 Bernd Schmidt <bernds@codesourcery.com>
756 * regrename.h: New file.
757 * regrename.c: Include it. Also include "emit-rtl.h".
758 (struct du_head, struct du_chain, du_head_p DEF_VEC and
759 DEF_VEC_ALLOC_P): Move to regrename.h.
760 (do_replace): Remove declaration.
761 (insn_rr): New variable.
762 (cur_operand): New static variable.
763 (regrename_chain_from_id): Renamed from chain_from_id and no longer
764 static. All callers changed.
765 (record_operand_use): New static function.
766 (scan_rtx_reg): Use it.
767 (find_best_rename_reg): New function, broken out of rename_chains.
768 (rename_chains): Use it. Don't update chain regno and nregs here, ...
769 (regrename_do_replace): ... do it here instead. Renamed from
770 do_replace, and no longer static. All callers changed.
771 (regrename_analyze): No longer static. New arg bb_mask.
772 All callers changed. If bb_mask is nonzero, use it to limit the
773 number of basic blocks we analyze. If we failed to analyze a block,
774 clear insn operand data.
775 (record_out_operands): New arg insn_info. Update cur_operand if it is
777 (build_def_use): If insn_rr is nonnull, pass an insn_info to
778 record_out_operands, and update cur_operand here as well.
779 (regrename_init, regrename_finish): New functions.
780 (regrename_optimize): Use them.
781 * Makefile.in (regrename.o): Adjust dependencies.
783 2011-10-19 Tom de Vries <tom@codesourcery.com>
785 PR tree-optimization/50769
786 * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
787 unconditionally. Handle case that phi_vuse2 is not an SSA_NAME. Add
788 dummy argument .MEM to phi when increasing number of arguments of phi by
789 redirecting edges to the block with phi.
791 2011-10-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
794 * configure.ac: Save and restore CXXFLAGS around
795 gcc_AC_CHECK_DECLS uses.
796 Check for madvise() declaration with g++ if --enable-build-with-cxx.
797 * configure: Regenerate.
798 * config.in: Regenerate.
799 * ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.
801 2011-10-19 Alexandre Oliva <aoliva@redhat.com>
804 * var-tracking.c (loc_exp_dep, onepart_aux): New structs.
805 (variable_part): Replace offset with union.
806 (enum onepart_enum, onepart_enum_t): New.
807 (variable_def): Drop cur_loc_changed, add onepart.
808 (value_chain_def, const_value_chain): Remove.
809 (VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
810 (VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
811 (VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
812 (value_chain_pool, value_chains): Remove.
813 (dropped_values): New.
814 (struct parm_reg): Only if HAVE_window_save.
815 (vt_stack_adjustments): Don't record register arguments.
817 (dv_onepart_p): Return a onepart_enum_t.
821 (variable_htab_free): Release onepart aux data. Reset flags.
822 (value_chain_htab_hash, value_chain_htab_eq): Remove.
823 (unshare_variable): Use onepart field. Propagate onepart aux
824 data or offset. Drop cur_loc_changed.
825 (val_store): Cope with NULL insn. Rephrase dump output. Check
826 for unsuitable locs. Add FIXME on using cselib locs.
827 (val_reset): Remove FIXME of unfounded concerns.
828 (val_resolve): Check for unsuitable locs. Add FIXME on using
830 (variable_union): Use onepart field, adjust access to offset.
832 (VALUE_CHANGED, DECL_CHANGED): Update doc.
833 (set_dv_changed): Clear NO_LOC_P when changed.
834 (find_loc_in_1pdv): Use onepart field.
835 (intersect_loc_chains): Likewise.
836 (unsuitable_loc): New.
837 (loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
838 (add_value_chain, add_value_chains): Remove.
839 (add_cselib_value_chains, remove_value_chain): Likewise.
840 (remove_value_chains, remove_cselib_value_chains): Likewise.
841 (canonicalize_loc_order_check): Use onepart. Drop cur_loc_changed.
842 (canonicalize_values_star, canonicalize_vars_star): Use onepart.
843 (variable_merge_over_cur): Likewise. Adjust access to offset.
844 Drop cur_loc_changed.
845 (variable_merge_over_src): Use onepart field.
846 (remove_duplicate_values): Likewise.
847 (variable_post_merge_new_vals): Likewise.
848 (find_mem_expr_in_1pdv): Likewise.
849 (dataflow_set_preserve_mem_locs): Likewise. Drop cur_loc_changed
851 (dataflow_set_remove_mem_locs): Likewise. Use VAR_LOC_FROM.
852 (variable_different_p): Use onepart field. Move onepart test out
854 (argument_reg_set): Drop.
855 (add_uses, add_stores): Preserve but do not record in dynamic
856 tables equivalences for ENTRY_VALUEs and CFA_based addresses.
857 Avoid unsuitable address expressions.
858 (EXPR_DEPTH): Unlimit.
859 (EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
860 (prepare_call_arguments): Use DECL_RTL_IF_SET.
861 (dump_var): Adjust access to offset.
862 (variable_from_dropped, recover_dropped_1paux): New.
863 (variable_was_changed): Drop cur_loc_changed. Use onepart.
864 Preserve onepart aux in empty_var. Recover empty_var and onepart
865 aux from dropped_values.
866 (find_variable_location_part): Special-case onepart. Adjust
868 (set_slot_part): Use onepart. Drop cur_loc_changed. Adjust
869 access to offset. Initialize onepaux. Drop value chains.
870 (delete_slot_part): Drop value chains. Use VAR_LOC_FROM.
871 (VEC (variable, heap), VEC (rtx, stack)): Define.
872 (expand_loc_callback_data): Drop dummy, cur_loc_changed,
873 ignore_cur_loc. Add expanding, pending, depth.
874 (loc_exp_dep_alloc, loc_exp_dep_clear): New.
875 (loc_exp_dep_insert, loc_exp_dep_set): New.
876 (notify_dependents_of_resolved_value): New.
877 (update_depth, vt_expand_var_loc_chain): New.
878 (vt_expand_loc_callback): Revamped.
879 (resolve_expansions_pending_recursion): New.
880 (INIT_ELCD, FINI_ELCD): New.
881 (vt_expand_loc): Use the new macros above. Drop ignore_cur_loc
882 parameter, adjust all callers.
883 (vt_expand_loc_dummy): Drop.
884 (vt_expand_1pvar): New.
885 (emit_note_insn_var_location): Operate on non-debug decls only.
886 Revamp multi-part cur_loc recomputation and one-part expansion.
887 Drop cur_loc_changed. Adjust access to offset.
888 (VEC (variable, heap)): Drop.
889 (changed_variables_stack, changed_values_stack): Drop.
890 (check_changed_vars_0, check_changed_vars_1): Remove.
891 (check_changed_vars_2, check_changed_vars_3): Remove.
892 (values_to_stack, remove_value_from_changed_variables): New.
893 (notify_dependents_of_changed_value, process_changed_values): New.
894 (emit_notes_for_changes): Revamp onepart updates.
895 (emit_notes_for_differences_1): Use onepart. Drop cur_loc_changed
896 and value chains. Propagate onepaux. Recover empty_var and onepaux
898 (emit_notes_for_differences_2): Drop value chains.
899 (emit_notes_in_bb): Adjust.
900 (vt_emit_notes): Drop value chains, changed_variables_stack.
901 Initialize and release dropped_values.
902 (create_entry_value): Revamp.
903 (vt_add_function_parameter): Use new interface.
904 (note_register_arguments): Remove.
905 (vt_initialize): Drop value chains and register arguments.
906 (vt_finalize): Drop value chains. Release windowed_parm_regs only
908 * rtl.h: Document various pass-local uses of RTL flags.
909 * tree.h (DECL_RTL_KNOWN_SET): New.
910 * doc/invoke.texi (param max-vartrack-expr-depth): Update
911 description and default.
913 2011-10-19 Georg-Johann Lay <avr@gjlay.de>
916 * config/avr/avr.md (cc): New alternative out_plus_noclobber.
918 (addhi3): Don't pipe through short; use gen_int_mode instead.
919 Prior to reload, expand to gen_addhi3_clobber.
920 (*addhi3): Use avr_out_plus_noclobber if applicable, use
921 out_plus_noclobber in cc and adjust_len attribute.
922 (addhi3_clobber): 2 new RTL peepholes.
923 (addhi3_clobber): New insn.
924 * config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
925 * config/avr/avr.c (avr_out_plus_noclobber): New function.
926 (notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
927 (avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
928 Set cc0 to set_zn for adiw on 16-bit values.
929 (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
930 (expand_epilogue): No need to add 0 to frame_pointer_rtx.
932 2011-10-19 Richard Guenther <rguenther@suse.de>
935 * tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
936 the condition is properly gimple before using it.
937 * tree-eh (stmt_could_throw_1_p): Properly extract the
938 operation type from comparisons.
940 2011-10-19 Roland Stigge <stigge@antcom.de>
943 * plugin.c (add_new_plugin): Fix typo in fatal_error message.
945 2011-10-19 Roland Stigge <stigge@antcom.de>
948 * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
950 2011-10-19 Richard Guenther <rguenther@suse.de>
953 * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
955 2011-10-19 Andrey Belevantsev <abel@ispras.ru>
957 PR rtl-optimization/50340
958 * sel-sched-ir.c (update_target_availability): LHS register
959 availability is not known if the unavailable LHS of the other
960 expression is a different register.
962 2011-10-19 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
965 * config/spu/spu.c (spu_emit_vector_compare): Support unordered
966 floating-point comparisons.
968 2011-10-19 Jan Hubicka <jh@suse.cz>
970 * cgraphunit.c (handle_alias_pairs): Also handle wekref with
971 destination declared.
972 (output_weakrefs): New function.
973 * varpool.c (varpool_create_variable_alias): Handle external aliases.
975 2011-10-19 Jakub Jelinek <jakub@redhat.com>
977 * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
978 second argument instead of mode.
980 2011-10-18 Jakub Jelinek <jakub@redhat.com>
982 * config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
983 mode SUBREG of operands[0] as target.
984 (valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
985 (expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
986 (expand_vec_perm_1): Handle identity and some broadcast
988 (expand_vec_perm_interleave2): Handle also 32-byte modes, using
989 vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
990 For d->testing_p return true earlier to avoid creating more GC
992 (expand_vec_perm_vpermq_perm_1): New function.
993 (expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
994 earlier to avoid creating more GC garbage. Fix handling of
995 V16HImode. Avoid some SUBREGs in SET_DEST.
996 (expand_vec_perm_broadcast_1): Return false for 32-byte integer
998 (expand_vec_perm_vpshufb4_vpermq2): New function.
999 (ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
1000 and expand_vec_perm_vpshufb4_vpermq2.
1002 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
1004 * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
1007 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
1009 PR tree-optimization/50717
1010 * tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
1011 parameter. Calculate 'type' from stmt.
1012 (convert_mult_to_widen): Update call the is_widening_mult_p.
1013 (convert_plusminus_to_widen): Likewise.
1015 2011-10-18 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
1017 * config/spu/spu.c (struct machine_function): New data structure.
1018 (spu_init_machine_status): New function.
1019 (spu_option_override): Install it.
1020 (get_pic_reg): Set and use cfun->machine->pic_reg.
1021 (spu_split_immediate): Do not set crtl->uses_pic_offset_table.
1022 (need_to_save_reg): Use cfun->machine->pic_reg instead of
1023 checking crtl->uses_pic_offset_table.
1024 (spu_expand_prologue): Likewise.
1026 2011-10-18 Jakub Jelinek <jakub@redhat.com>
1028 PR tree-optimization/50735
1029 * function.c (gimplify_parameters): Use create_tmp_var instead of
1030 create_tmp_reg. If parm is not TREE_ADDRESSABLE and type is complex
1031 or vector type, set DECL_GIMPLE_REG_P.
1033 2011-10-18 Andrew Stubbs <ams@codesourcery.com>
1035 * config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
1036 * config/arm/arm.opt: Add 'native' processor_type and
1037 arm_arch enum values.
1038 * config/arm/arm.h (host_detect_local_cpu): New prototype.
1039 (EXTRA_SPEC_FUNCTIONS): New define.
1040 (MCPU_MTUNE_NATIVE_SPECS): New define.
1041 (DRIVER_SELF_SPECS): New define.
1042 * config/arm/driver-arm.c: New file.
1043 * config/arm/x-arm: New file.
1044 * doc/invoke.texi (ARM Options): Document -mcpu=native,
1045 -mtune=native and -march=native.
1047 2011-10-18 Alexander Monakov <amonakov@ispras.ru>
1049 PR rtl-optimization/50205
1050 * sel-sched.c (count_occurrences_1): Simplify on the assumption that
1051 p->x is a register. Forbid substitution when the same register is
1052 found in a different mode.
1053 (count_occurrences_equiv): Assert that 'what' is a register.
1055 2011-10-18 Richard Guenther <rguenther@suse.de>
1057 PR tree-optimization/50767
1058 * tree-ssa-pre.c (create_expression_by_pieces): Update the
1061 2011-10-18 Julian Brown <julian@codesourcery.com>
1063 * config/arm/arm.c (arm_block_move_unaligned_straight)
1064 (arm_adjust_block_mem, arm_block_move_unaligned_loop)
1065 (arm_movmemqi_unaligned): New.
1066 (arm_gen_movmemqi): Support unaligned block copies.
1068 2011-10-18 Ira Rosen <ira.rosen@linaro.org>
1070 * doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
1071 vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
1072 * tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
1073 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1074 (op_code_prio): Likewise.
1075 (op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
1076 * optabs.c (optab_for_tree_code): Handle
1077 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1078 (init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
1079 * optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
1080 * genopinit.c (optabs): Initialize the new optabs.
1081 * expr.c (expand_expr_real_2): Handle
1082 VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1083 * gimple-pretty-print.c (dump_binary_rhs): Likewise.
1084 * tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
1085 * tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
1086 VEC_WIDEN_LSHIFT_LO_EXPR): New.
1087 * cfgexpand.c (expand_debug_expr): Handle new tree codes.
1088 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
1089 vect_recog_widen_shift_pattern.
1090 (vect_handle_widen_mult_by_const): Rename...
1091 (vect_handle_widen_op_by_const): ...to this. Handle shifts.
1092 Add a new argument, update documentation.
1093 (vect_recog_widen_mult_pattern): Assume that only second
1094 operand can be constant. Update call to
1095 vect_handle_widen_op_by_const.
1096 (vect_recog_over_widening_pattern): Fix typo.
1097 (vect_recog_widen_shift_pattern): New.
1098 * tree-vect-stmts.c (vectorizable_type_promotion): Handle
1100 (supportable_widening_operation): Likewise.
1101 * tree-inline.c (estimate_operator_cost): Handle new tree codes.
1102 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1103 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
1104 * config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
1105 (vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
1106 vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
1108 * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
1110 * config/arm/iterators.md (V_innermode): New.
1111 * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
1114 2011-10-18 Richard Guenther <rguenther@suse.de>
1116 * tree-ssa-alias.h (struct pt_solution): Remove
1117 vars_contains_restrict member.
1118 (pt_solutions_same_restrict_base): Remove.
1119 (pt_solution_set): Adjust.
1120 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
1121 vars_contains_restrict handling.
1122 (dump_points_to_solution): Likewise.
1123 (ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
1124 * tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
1126 (new_var_info): Do not initialize it.
1127 (ipa_escaped_pt): Adjust.
1128 (make_constraint_from_restrict): Make the tag global.
1129 (make_constraint_from_global_restrict): New function.
1130 (make_constraint_from_heapvar): Remove.
1131 (create_variable_info_for): Do not make restrict vars point
1133 (intra_create_variable_infos): Likewise.
1134 (find_what_var_points_to): Remove vars_contains_restrict handling.
1135 (pt_solution_set): Adjust.
1136 (pt_solution_ior_into): Likewise.
1137 (pt_solutions_same_restrict_base): Remove.
1138 (compute_points_to_sets): Do not test is_restrict_var.
1139 * cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
1140 * gimple-pretty-print.c (pp_points_to_solution): Likewise.
1142 2011-10-18 Tom de Vries <tom@codesourcery.com>
1144 PR tree-optimization/50672
1145 * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
1147 (mark_virtual_phi_result_for_renaming): Use
1148 mark_virtual_operand_for_renaming.
1149 * tree-flow.h (mark_virtual_operand_for_renaming): Declare.
1150 * tree-ssa-tail-merge.c (release_last_vdef): New function.
1151 (purge_bbs): Add update_vops parameter. Call release_last_vdef for each
1152 deleted basic block.
1153 (tail_merge_optimize): Add argument to call to purge_bbs.
1155 2011-10-18 Richard Guenther <rguenther@suse.de>
1158 * expr.c (get_object_or_type_alignment): New function.
1159 (expand_assignment): Use it.
1160 (expand_expr_real_1): Likewise.
1162 2011-10-18 Dodji Seketeli <dodji@redhat.com>
1165 * input.c (dump_line_table_statistics): Use long, not size_t.
1167 2011-10-17 Eric Botcazou <ebotcazou@adacore.com>
1169 * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
1171 2011-10-17 Simon Baldwin <simonb@google.com>
1172 Ian Lance Taylor <iant@google.com>
1174 * configure.ac: Add --with-native-system-header-dir. Set and
1175 substitute NATIVE_SYSTEM_HEADER_DIR. Use native_system_header
1176 when setting target_header_dir.
1177 * config.gcc: Always set native_system_header_dir.
1178 (*-*-gnu*): Set native_system_header_dir. Don't use t-gnu.
1179 (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir. Don't
1181 (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
1182 native_system_header_dir.
1183 (spu-*-elf*): Set native_system_header_dir.
1184 * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
1185 @NATIVE_SYSTEM_HEADER_DIR@.
1186 (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
1187 * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
1188 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
1189 STANDARD_INCLUDE_COMPONENT.
1190 (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR. Rename
1191 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
1192 * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
1193 STANDARD_INCLUDE_COMPONENT.
1194 * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
1195 * config/i386/t-mingw-w32: Likewise.
1196 * config/i386/t-mingw-w64: Likewise.
1197 * config/spu/t-spu-elf: Likewise.
1198 * config/i386/t-djgpp: Remove.
1199 * config/t-gnu: Remove.
1200 * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
1201 (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
1202 STANDARD_INCLUDE_COMPONENT.
1203 * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
1204 * config/spu/spu-elf.h: Likewise.
1205 * config/vms/xm-vms.h: Likewise.
1206 * config/gnu.h: Likewise.
1207 * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
1208 and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
1209 NATIVE_SYSTME_HEADER_COMPONENT.
1210 * doc/install.texi (Configuration): Document
1211 --with-native-system-header-dir. Mention it in the documentation
1212 for --with-sysroot and --with-build-sysroot.
1213 * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
1214 STANDARD_INCLUDE_DIR. Rename STANDARD_INCLUDE_COMPONENT to
1215 NATIVE_SYSTEM_HEADER_COMPONENT. Rename uses of
1216 STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
1217 * doc/fragments.texi (Target Fragment): Don't document
1218 NATIVE_SYSTEM_HEADER_DIR.
1219 * configure, doc/tm.texi: Rebuild.
1221 2011-10-17 Richard Henderson <rth@redhat.com>
1223 * config/sparc/sparc.md: Use register_or_zero_operand where rJ
1226 * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
1228 * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
1229 * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
1231 2011-10-17 David S. Miller <davem@davemloft.net>
1233 * config/sparc/sparc-modes.def: Add single entry vector modes for
1235 * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
1237 (mov<V32:mode>): Revert back to plain SFmode pattern.
1238 (*movsf_insn): Likewise.
1239 (mov<V64:mode>): Revert back to plain DFmode pattern.
1240 (*movdf_insn_sp32): Likewise.
1241 (*movdf_insn_sp32_v9): Likewise.
1242 (*movdf_insn_sp64): Likewise.
1243 (V64 mode splitters) Likewise.
1244 (addsi3): Remove VIS alternatives.
1246 (and<V64I:mode>3): Revert to DImode only pattern.
1247 (and<V64I:mode>3_sp32): Likewise.
1248 (*and<V64I:mode>3_sp64): Likewise.
1249 (and<V32I:mode>3): Likewise.
1250 (*and_not_<V64I:mode>_sp32): Likewise.
1251 (*and_not_<V64I:mode>_sp64): Likewise.
1252 (*and_not_<V32I:mode>): Likewise.
1253 (ior<V64I:mode>3): Likewise.
1254 (*ior<V64I:mode>3_sp32): Likewise.
1255 (*ior<V64I:mode>3_sp64): Likewise.
1256 (ior<V32I:mode>3): Likewise.
1257 (*or_not_<V64I:mode>_sp32): Likewise.
1258 (*or_not_<V64I:mode>_sp64): Likewise.
1259 (*or_not_<V32I:mode>): Likewise.
1260 (xor<V64I:mode>3): Likewise.
1261 (*xor<V64I:mode>3_sp32): Likewise.
1262 (*xor<V64I:mode>3_sp64): Likewise.
1263 (xor<V32I:mode>3): Likewise.
1264 (V64I mode splitters): Likewise.
1265 (*xor_not_<V64I:mode>_sp32): Likewise.
1266 (*xor_not_<V64I:mode>_sp64): Likewise.
1267 (*xor_not_<V32I:mode>): Likewise.
1268 (one_cmpl<V64I:mode>2): Likewise.
1269 (*one_cmpl<V64I:mode>2_sp32): Likewise.
1270 (*one_cmpl<V64I:mode>2_sp64): Likewise.
1271 (one_cmpl<V32I:mode>2): Likewise.
1272 (VM32, VM64, VMALL): New mode iterators.
1273 (vbits, vconstr, vfptype): New mode attributes.
1274 (mov<VMALL:mode>): New expander.
1275 (*mov<VM32:mode>_insn): New insn.
1276 (*mov<VM64:mode>_insn_sp64): New insn.
1277 (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
1278 specifically for the register to memory case.
1279 (vec_init<mode>): New expander.
1280 (VADDSUB): New mode iterator.
1281 (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
1283 (<plusminus_insn><mode>3): New consolidated pattern.
1284 (VL): New mode iterator for logical operations.
1285 (vlsuf): New more attribute.
1286 (vlop): New code iterator.
1287 (vlinsn, vlninsn): New code attributes.
1288 (<code><mode>3): New insn to non-negated vector logical ops.
1289 (*not_<code><mode>3): Likewise for negated variants.
1290 (*nand<mode>_vis): New insn.
1291 (vlnotop): New code iterator.
1292 (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
1293 (one_cmpl<mode>2): New insn.
1294 (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
1295 (bshuffle<VM64:mode>_vis): Likewise.
1296 (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
1297 (fp<plusminus_insn>64_vis): Use V1DI mode.
1298 (VASS mode iterator): Use V1SI not SI mode.
1299 * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
1300 single-entry vector mode changes.
1301 (sparc_expand_builtin): Likewise.
1302 (sparc_expand_vector_init): New function.
1303 * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
1305 2011-10-17 Kai Tietz <ktietz@redhat.com>
1307 * fold-const.c (simple_operand_p_2): New function.
1308 (fold_truthop): Rename to
1309 (fold_truth_andor_1): function name.
1310 Additionally remove branching creation for logical and/or.
1311 (fold_truth_andor): Handle branching creation for logical and/or here.
1313 2011-10-17 Andi Kleen <ak@linux.intel.com>
1315 * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
1317 2011-10-17 Georg-Johann Lay <avr@gjlay.de>
1319 * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
1320 * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
1321 (adjust_len): Add alternative "call".
1322 (isa, enabled): New insn attributes.
1323 (length): Use match_test with AVR_HAVE_JMP_CALL instead of
1325 (*sbrx_branch<mode>): Ditto.
1326 (*sbrx_and_branch<mode>): Ditto.
1327 (*sbix_branch): Ditto.
1328 (*sbix_branch_bit7): Ditto.
1329 (*sbix_branch_tmp): Ditto.
1330 (*sbix_branch_tmp_bit7): Ditto.
1332 (negsi2): Use attribute "isa" instead of assembler dialect.
1333 (extendhisi2): Ditto.
1334 (call_insn, call_value_insn): Set adjust_len attribute.
1335 (indirect_jump): Indent to coding rules.
1336 (call_prologue_saves): Use isa attribute instead of mcu_mega.
1337 (epilogue_restores): Ditto. Fix setting of SP as described in the
1339 (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
1340 and *indirect_jump_avr6.
1341 (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
1342 (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
1343 (*tablejump_rjmp, *tablejump_lib): Remove.
1344 * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
1346 2011-10-17 Paolo Carlini <paolo.carlini@oracle.com>
1349 * doc/invoke.texi ([Wnonnull]): Update.
1351 2011-10-17 Richard Henderson <rth@redhat.com>
1354 * optabs.c (expand_vec_perm_expr): Fix indexing error.
1356 2011-10-17 Sergio Durigan Junior <sergiodj@redhat.com>
1358 * configure.ac: Display `yes' if the SystemTap header has been found.
1359 * configure: Regenerate.
1361 2011-10-08 Andi Kleen <ak@linux.intel.com>
1364 * config.in, configure: Regenerate.
1365 * configure.ac (madvise): Add to AC_CHECK_FUNCS.
1366 * ggc-page.c (USING_MADVISE): Add.
1367 (page_entry): Add discarded field.
1368 (alloc_page): Check for discarded pages.
1369 (release_pages): Add USING_MADVISE branch.
1371 2011-10-17 Richard Guenther <rguenther@suse.de>
1373 PR tree-optimization/50729
1374 * tree-vrp.c (extract_range_from_unary_expr_1): Remove redundant test.
1375 (simplify_conversion_using_ranges): Properly test the
1376 intermediate result.
1378 2011-10-15 Tom Tromey <tromey@redhat.com>
1379 Dodji Seketeli <dodji@redhat.com>
1381 * ggc.h (ggc_round_alloc_size): Declare new public entry point.
1382 * ggc-none.c (ggc_round_alloc_size): New public stub function.
1383 * ggc-page.c (ggc_alloced_size_order_for_request): New static
1384 function. Factorized from ggc_internal_alloc_stat.
1385 (ggc_round_alloc_size): New public function. Uses
1386 ggc_alloced_size_order_for_request.
1387 (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
1388 * ggc-zone.c (ggc_round_alloc_size): New public function extracted
1389 from ggc_internal_alloc_zone_stat.
1390 (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
1391 * toplev.c (general_init): Initialize
1392 line_table->alloced_size_for_request.
1394 2011-10-15 Tom Tromey <tromey@redhat.com>
1395 Dodji Seketeli <dodji@redhat.com>
1397 * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New macros.
1398 (num_expanded_macros_counter, num_macro_tokens_counter): Declare
1400 (dump_line_table_statistics): Define new function.
1401 * input.h (dump_line_table_statistics): Declare new function.
1402 * toplev.c (dump_memory_report): Call dump_line_table_statistics.
1404 2011-10-15 Tom Tromey <tromey@redhat.com>
1405 Dodji Seketeli <dodji@redhat.com>
1407 * doc/cppopts.texi: Document -fdebug-cpp.
1408 * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor options.
1410 2011-10-15 Tom Tromey <tromey@redhat.com>
1411 Dodji Seketeli <dodji@redhat.com>
1413 * gcc/diagnostic.h (diagnostic_report_current_module): Add a
1415 * diagnostic.c (diagnostic_report_current_module): Add a location
1416 parameter to the function definition. Use it instead of
1417 input_location. Resolve the virtual location rather than just
1418 looking up its map and risking to touch a resulting macro map.
1419 (default_diagnostic_starter): Pass the relevant diagnostic
1420 location to diagnostic_report_current_module.
1421 * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
1422 (virt_loc_aware_diagnostic_finalizer): Likewise.
1423 (diagnostic_report_current_function): Pass the
1424 relevant location to diagnostic_report_current_module.
1425 * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
1427 * toplev.c (general_init): By default, use the new
1428 virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
1429 * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
1431 2011-10-15 Tom Tromey <tromey@redhat.com>
1432 Dodji Seketeli <dodji@redhat.com>
1434 * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
1435 * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
1436 preprocessor related options.
1438 2011-10-15 Tom Tromey <tromey@redhat>
1439 Dodji Seketeli <dodji@redhat.com>
1441 * input.h (struct expanded_location): Move to libcpp/line-map.h.
1442 (LOCATION_COLUMN): New accessor
1443 (in_system_header_at): Use linemap_location_in_system_header_p.
1444 * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
1445 touching the internals of struct line_map. Use the public API instead.
1446 (diagnostic_report_diagnostic): Don't use relational operator '<'
1447 on virtual locations. Use linemap_location_before_p instead.
1448 * input.c (expand_location): Adjust to expand to the tokens'
1449 spelling location when macro location tracking is on.
1452 2011-10-08 Andi Kleen <ak@linux.intel.com>
1454 * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
1456 2011-10-13 Andi Kleen <ak@linux.intel.com>
1458 * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
1460 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
1462 PR tree-optimization/50727
1463 * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
1464 DEF_STMT to the list of statements to be replaced by the
1467 2011-10-16 Eric Botcazou <ebotcazou@adacore.com>
1469 PR rtl-optimization/50615
1470 * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
1472 2011-10-16 Jakub Jelinek <jakub@redhat.com>
1474 PR tree-optimization/50596
1475 * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
1476 * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
1477 vect_recog_bool_pattern.
1478 (check_bool_pattern, adjust_bool_pattern_cast,
1479 adjust_bool_pattern, vect_recog_bool_pattern): New functions.
1481 2011-10-16 Ira Rosen <ira.rosen@linaro.org>
1483 * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
1484 treat the first load of the node as the first element in its
1486 * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
1487 necessary and possible.
1488 (vect_build_slp_tree): Add new argument. Allow load groups of any size
1489 in basic blocks. Keep all the loads for further permutation check.
1490 Use the new argument to determine if there is a permutation. Update
1491 the recursive calls.
1492 (vect_supported_load_permutation_p): Allow subchains of interleaving
1493 chains in basic block vectorization.
1494 (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
1495 Check load permutation based on the new parameter.
1496 (vect_schedule_slp_instance): Don't start from the first element in
1497 interleaving chain unless the loads are permuted.
1499 2011-10-15 Jan Hubicka <jh@suse.cz>
1503 * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
1504 after function body.
1506 2011-10-15 Richard Henderson <rth@redhat.com>
1508 * tree-vect-slp.c: Include langhooks.h.
1509 (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
1510 (vect_transform_slp_perm_load): Use can_vec_perm_expr_p. Simplify
1511 mask creation for VEC_PERM_EXPR.
1512 * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
1514 (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
1515 * Makefile.in (tree-vect-slp.o): Update dependency.
1516 * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
1518 2011-10-15 Alan Modra <amodra@gmail.com>
1521 * ifcvt.c (dead_or_predicable): Revert accidental commit with
1522 HAVE_simple_return test.
1524 2011-10-15 Alan Modra <amodra@gmail.com>
1526 * ifcvt.c (dead_or_predicable): Disable if-conversion when
1527 doing so is likely to kill a shrink-wrapping opportunity.
1529 PR rtl-optimization/49941
1530 * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
1532 * rtl.h (set_return_jump_label): Declare.
1533 * function.c (set_return_jump_label): New function, extracted..
1534 (thread_prologue_and_epilogue_insns): ..from here. Use it in
1535 another instance to set return jump_label.
1536 * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
1537 * reorg.c (find_end_label): Likewise.
1539 2011-10-14 David S. Miller <davem@davemloft.net>
1541 * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
1542 with a more complete cpp test.
1543 * config/sparc/linux64.h: Likewise.
1544 * config/sparc/linux.h: Likewise.
1545 * config/sparc/sparc.opt (sparc_debug): New target variable.
1546 (mdebug): New target option.
1547 * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
1548 TARGET_DEBUG_OPTIONS): New defines.
1549 * config/sparc/sparc.c (debug_target_flag_bits,
1550 debug_target_flags): New functions.
1551 (sparc_option_override): Add name strings back to cpu_table[].
1552 Parse -mdebug string. When TARGET_DEBUG_OPTIONS is true, print
1553 out the target flags before and after override processing as well
1554 as the selected cpu. If MASK_V8PLUS, make sure that the selected
1557 2011-10-15 Oleg Endo <oleg.endo@t-online.de>
1560 * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
1561 * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
1562 * config/sh/sh.md (tstsi_t): Name existing insn. Make inner
1563 and instruction commutative.
1564 (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
1565 tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
1566 tstsi_t_zero_extract_subreg_xor_little,
1567 tstsi_t_zero_extract_subreg_xor_big): New insns.
1568 (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
1570 (*andsi_compact): Reorder alternatives so that K08 is considered first.
1572 2011-10-14 Eric Botcazou <ebotcazou@adacore.com>
1575 * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
1576 processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
1578 2011-10-14 Gerald Pfeifer <gerald@pfeifer.com>
1580 * invoke.texi (AVR Options): Avoid \leq{}.
1582 2011-10-14 Kai Tietz <ktietz@redhat.com>
1584 * gimplify.c (gimplify_expr): Take care that for bitwise-binary
1585 transformation the operands have compatible types.
1587 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1589 * config/i386/sse.md (vec_widen_smult_hi_v8hi,
1590 vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
1591 vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
1592 mode iterator and any_extend code iterator.
1593 (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
1594 (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
1595 also for TARGET_SSE4_1 using pmuldq insn.
1596 (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
1597 (sse2_sse4_1): New code attr.
1598 (udot_prodv4si): Macroize using any_extend code iterator.
1599 (<s>dot_prodv8si): New expander.
1601 2011-10-14 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
1603 * config/i386/i386.c (atom_cost): Changed cost for loading
1604 QImode using movzbl.
1606 2011-10-14 Michael Meissner <meissner@linux.vnet.ibm.com>
1608 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
1609 change on October 11th, 2011.
1611 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1613 * config/i386/sse.md (vec_interleave_high<mode>,
1614 vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
1615 * config/i386/i386.c (expand_vec_perm_interleave3): New function.
1616 (ix86_expand_vec_perm_builtin_1): Call it.
1618 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
1620 Fix thinko from r179765
1621 * config/avr/avr.c (avr_option_override): Don't override
1622 flag_omit_frame_pointer if not actually needed.
1624 2011-10-14 Georg-Johann Lay <avr@gjlay.de>
1627 * doc/invoke.texi (AVR Options): Document -mstrict-X.
1629 * config/avr/avr.opt (-mstrict-X): New option.
1630 (avr_strict_X): New variable reflecting -mstrict-X.
1631 * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
1632 outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
1633 (avr_legitimate_address_p): Pass outer_code to
1634 avr_reg_ok_for_addr_p and use that function in case PLUS.
1635 (avr_mode_code_base_reg_class): Depend on avr_strict_X.
1636 (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
1637 (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
1639 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1641 * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
1644 * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
1645 (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
1646 Use <sseinsnmode> instead of TI in mode attr.
1648 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1650 * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
1651 * config/arm/linux-atomic.c: Change comment to point to 64bit version.
1652 (SYNC_LOCK_RELEASE): Instantiate 64bit version.
1653 * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
1655 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1657 * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
1658 (arm_output_strex): Support strexd.
1659 (arm_output_it): New helper to output it in Thumb2 mode only.
1660 (arm_output_sync_loop): Support DI mode. Change comment to
1661 not support const_int.
1662 (arm_expand_sync): Support DI mode.
1663 * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
1665 * config/arm/iterators.md (NARROW): move from sync.md.
1666 (QHSD): New iterator for all current ARM integer modes.
1667 (SIDI): New iterator for SI and DI modes only.
1668 * config/arm/sync.md (sync_predtab): New mode_attr.
1669 (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
1670 (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
1671 (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
1672 (sync_nandsi): Fold into sync_nand<mode>.
1673 (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
1674 (sync_new_nandsi): Fold into sync_new_nand<mode>.
1675 (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
1676 (sync_old_nandsi): Fold into sync_old_nand<mode>.
1677 (sync_compare_and_swap<mode>): Support SI & DI.
1678 (sync_lock_test_and_set<mode>): Likewise.
1679 (sync_<sync_optab><mode>): Likewise.
1680 (sync_nand<mode>): Likewise.
1681 (sync_new_<sync_optab><mode>): Likewise.
1682 (sync_new_nand<mode>): Likewise.
1683 (sync_old_<sync_optab><mode>): Likewise.
1684 (sync_old_nand<mode>): Likewise.
1685 (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
1686 (arm_sync_lock_test_and_setsi): Likewise.
1687 (arm_sync_new_<sync_optab>si): Likewise.
1688 (arm_sync_new_nandsi): Likewise.
1689 (arm_sync_old_<sync_optab>si): Likewise.
1690 (arm_sync_old_nandsi): Likewise.
1691 (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
1692 (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
1693 (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
1694 (arm_sync_new_nand<mode> NARROW): Likewise.
1695 (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
1696 (arm_sync_old_nand<mode> NARROW): Likewise.
1698 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1701 * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1703 2011-10-14 David Alan Gilbert <david.gilbert@linaro.org>
1705 * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1707 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1709 * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1711 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1713 * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
1714 on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
1716 2011-10-14 Richard Guenther <rguenther@suse.de>
1718 PR tree-optimization/50723
1719 * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1721 2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
1723 * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1726 2011-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1729 * doc/invoke.texi ([Wformat-zero-length]): Update.
1731 2011-10-14 Iain Sandoe <iains@gcc.gnu.org>
1734 * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1735 build for powerpc targets. (darwin_patch_builtins): Only build for
1738 2011-10-14 Jakub Jelinek <jakub@redhat.com>
1740 * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
1741 (avx_cvtdq2pd256_2): ... this.
1742 (sseunpackfltmode): New mode attr.
1743 (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
1744 vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
1745 using VI2_AVX2 iterator.
1746 (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
1748 2011-10-13 David S. Miller <davem@davemloft.net>
1750 * config/sparc/sparc.md (plusminus): New code iterator.
1751 (plusminus_insn): New code attr.
1752 (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
1753 using plusminus and plusminus_insn.
1754 (fpadd64_vis, fpsub64_vis): Likewise.
1756 2011-10-13 Richard Henderson <rth@redhat.com>
1758 * doc/md.texi (vec_perm): Document fallback to byte permutation.
1759 * genopinit.c (optabs): Add vec_perm_const.
1760 * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
1761 Reject non-vector modes. Allow fallback to byte permutation.
1762 (expand_vec_perm_expr_1): Split out from ...
1763 (expand_vec_perm_expr): ... here. Allow fallback to byte permutation.
1764 * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
1765 * tree-vect-generic.c (lower_vec_perm): Update for name change.
1767 2011-10-13 Richard Henderson <rth@redhat.com>
1769 * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1771 * config/rs6000/spu.md (vec_permv16qi): New pattern.
1773 * config/i386/i386.c (ix86_expand_vec_perm_const): New.
1774 * config/i386/i386-protos.h: Update.
1775 * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
1776 (vec_perm_const<VEC_PERM_CONST>): New expander.
1778 * optabs.c (expand_vector_broadcast): New.
1779 (expand_binop): Expand scalar shifts of vectors to vector shifts
1780 of vectors, if the former isn't supported.
1781 * tree-vect-generic.c (expand_vector_operations_1): Don't do that
1782 here; always simplify to scalar shift of vector if possible.
1784 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1785 test for vector splat.
1787 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1789 * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1791 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1792 Richard Guenther <rguenther@suse.de>
1794 * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
1795 or complex vars even if their DECL_UID is in not_reg_needs bitmap.
1797 2011-10-13 Jakub Jelinek <jakub@redhat.com>
1799 * config/i386/sse.md (reduc_umin_v8hi): New pattern.
1800 * config/i386/i386.c (ix86_build_const_vector): Handle
1801 also V32QI, V16QI, V16HI and V8HI modes.
1802 (emit_reduc_half): New function.
1803 (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
1804 Use emit_reduc_half helper function.
1806 2011-10-13 Lawrence Crowl <crowl@google.com>
1807 Diego Novillo <dnovillo@google.com>
1809 * lto-streamer-in.c (input_struct_function_base): Factor out of ...
1810 (input_function): ... here.
1811 * lto-streamer-out.c (output_struct_function_base): Factor out of ...
1812 (output_function): ... here.
1814 2011-10-13 Gabriel Charette <gchare@google.com>
1815 Diego Novillo <dnovillo@google.com>
1817 * streamer-hooks.h (struct streamer_hooks): Add hooks
1818 input_location and output_location.
1819 * lto-streamer-in.c (lto_input_location): Use
1820 streamer_hooks.input_location, if set.
1821 * lto-streamer-out.c (lto_output_location): Use
1822 streamer_hooks.output_location, if set.
1824 2011-10-13 Eric Botcazou <ebotcazou@adacore.com>
1826 * doc/invoke.texi (SPARC options): Document -mfix-at697f.
1827 * config/sparc/sparc.opt (mfix-at697f): New option.
1828 * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
1829 (sparc_reorg): New function.
1831 2011-10-13 Richard Guenther <rguenther@suse.de>
1833 PR tree-optimization/50712
1834 * ipa-split.c (split_function): Always re-gimplify parameters
1835 when they are not gimple vals before passing them. Properly
1836 check for type compatibility.
1838 2011-10-13 Tom de Vries <tom@codesourcery.com>
1840 * function.c (gimplify_parameters): Set number of arguments of call to
1841 BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1843 2011-10-13 Tom de Vries <tom@codesourcery.com>
1845 * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
1846 for static const strings.
1847 * varasm.c (build_constant_desc): Generate the memory location of the
1848 constant using gen_const_mem.
1850 2011-10-13 Richard Guenther <rguenther@suse.de>
1852 PR tree-optimization/50698
1853 * tree-data-ref.c (split_constant_offset_1): Also process
1856 2011-10-12 David S. Miller <davem@davemloft.net>
1858 * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1859 (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1861 (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1863 (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
1864 (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
1865 Reimplement as unspecs and remove inaccurate comments.
1866 (vis3_shift_patname): New code attr.
1867 (<vis3_shift_insn><vbits>_vis): Rename to
1868 "v<vis3_shift_patname><mode>3".
1869 (vis3_addsub_ss_patname): New code attr.
1870 (<vis3_addsub_ss_insn><vbits>_vis): Rename to
1871 "<vis3_addsub_ss_patname><mode>3".
1872 * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
1873 accommodate pattern name changes.
1875 * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
1876 to zero when assembler lacks support for such instructions.
1877 * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
1878 and MASK_FMAF in defaults when assembler lacks necessary support.
1880 2011-10-12 Jakub Jelinek <jakub@redhat.com>
1882 * config/i386/sse.md (vec_unpacks_lo_<mode>,
1883 vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
1884 vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
1885 * config/i386/i386.c (ix86_expand_sse_unpack): Handle
1886 V32QImode, V16HImode and V8SImode for TARGET_AVX2.
1888 * config/i386/sse.md (vec_avx2): New mode_attr.
1889 (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
1890 (mul<mode>3): ... this.
1892 * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
1893 * config/i386/i386.c (ix86_expand_vec_perm): Handle
1894 V16QImode and V32QImode for TARGET_AVX2.
1895 (MAX_VECT_LEN): Increase to 32.
1896 (expand_vec_perm_blend): Add support for 32-byte integer
1897 vectors with TARGET_AVX2.
1898 (valid_perm_using_mode_p): New function.
1899 (expand_vec_perm_pshufb): Add support for 32-byte integer
1900 vectors with TARGET_AVX2.
1901 (expand_vec_perm_vpshufb2_vpermq): New function.
1902 (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
1903 (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
1905 (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
1906 and expand_vec_perm_vpshufb2_vpermq_even_odd.
1907 * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
1908 32-byte integer vector modes.
1909 (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
1910 (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
1911 (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
1913 (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
1914 match_dup, instead add 4 new operands and require they have
1915 right cross-lane values.
1916 (avx2_permv4di): Change into define_expand.
1917 (avx2_permv4di_1): New instruction.
1918 (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
1919 for "xm" constrained operand.
1920 (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
1922 * config/i386/sse.md (avx2_gathersi<mode>,
1923 avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
1924 match_scratch, change memory_operand to register_operand,
1925 add (mem:BLK (scratch)) use.
1926 (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
1927 *avx2_gatherdi<mode>256): Add clobber of match_scratch,
1928 add earlyclobber to the output operand and match_scratch,
1929 add (mem:BLK (scratch)) use, change the other mem to match_operand.
1930 Use %p6 instead of %c6 in the pattern.
1931 * config/i386/i386.c (ix86_expand_builtin): Adjust for
1932 operand 2 being a Pmode register_operand instead of memory_operand.
1934 2011-10-12 Kai Tietz <ktietz@redhat.com>
1936 * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1938 2011-10-12 Steve Ellcey <sje@cup.hp.com>
1940 * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1942 2011-10-12 Richard Guenther <rguenther@suse.de>
1944 * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
1945 of the first store we visit in a basic-block.
1946 (get_continuation_for_phi): Search for a candidate VUSE that
1947 might dominates all others. Do pairwise disambiguation against
1950 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
1952 PR tree-optimization/50189
1953 * tree-vrp.c (extract_range_from_assert): Use the type of
1954 the variable, not the limit.
1956 2011-10-12 Richard Guenther <rguenther@suse.de>
1958 PR tree-optimization/50700
1959 * tree-object-size.c (addr_object_size): Simplify and treat
1960 MEM_REF bases consistently.
1962 2011-10-12 Bernd Schmidt <bernds@codesourcery.com>
1964 * function.c (prepare_shrink_wrap, bb_active_p): New function.
1965 (thread_prologue_and_epilogue_insns): Use bb_active_p. Call
1966 prepare_shrink_wrap, then recompute bb_active_p for the last block.
1968 2011-10-12 Joseph Myers <joseph@codesourcery.com>
1971 * convert.c (convert_to_integer): Do not narrow operands of
1972 pointer subtraction.
1974 2011-10-12 Nick Clifton <nickc@redhat.com>
1976 * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro. Used to
1977 emit a .eabi_attribute assembler directive, possibly with a
1979 * config/arm/arm.c (arm_file_start): Use the new macro.
1980 * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1982 2011-10-12 Georg-Johann Lay <avr@gjlay.de>
1985 * config/avr/avr.md (*movqi): Rename to movqi_insn.
1986 (*call_insn): Rename to call_insn.
1987 (*call_value_insn): Rename to call_value_insn.
1988 * config/avr/avr.c (avr_2word_insn_p): New static function.
1989 (jump_over_one_insn_p): Use it.
1991 2011-10-12 Richard Sandiford <richard.sandiford@linaro.org>
1993 * expr.h (copy_blkmode_to_reg): Declare.
1994 * expr.c (copy_blkmode_to_reg): New function.
1995 (expand_assignment): Don't expand register RESULT_DECLs before
1996 the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
1997 RESULT_DECL register.
1998 (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
1999 * stmt.c (expand_return): Move BLKmode-to-register code into
2000 copy_blkmode_to_reg.
2002 2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
2005 * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
2006 (mov<F:mode>cc): Likewise.
2008 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2010 * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
2012 2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
2014 * tree.h (built_in_decls): Delete old interface with two parallel
2015 arrays to hold standard builtin declarations, and replace it with
2016 a function based interface that can support creating builtins on
2017 the fly in the future. Change all uses, and poison the old
2018 names. Make sure 0 is not a legitimate builtin index.
2019 (implicit_built_in_decls): Ditto.
2020 (built_in_info): Ditto.
2021 (BUILTIN_VALID_P): Ditto.
2022 (builtin_decl_explicit): Ditto.
2023 (builtin_decl_implicit): Ditto.
2024 (set_builtin_decl): Ditto.
2025 (set_builtin_decl_implicit_p): Ditto.
2026 (builtin_decl_explicit_p): Ditto.
2027 (builtin_decl_implicit_p): Ditto.
2028 * tree-complex.c (expand_complex_libcall): Ditto.
2029 * tree-loop-distribution.c (generate_memset_zero): Ditto.
2030 * tree-ssa-strlen.c (get_string_length): Ditto.
2031 (handle_builtin_strcpy): Ditto.
2032 (handle_builtin_strcat): Ditto.
2033 * tree.c (iterative_hash_expr): Ditto.
2034 (local_define_builtin): Ditto.
2035 (build_common_builtin_nodes): Ditto.
2036 * builtins.c (built_in_decls): Ditto.
2037 (implicit_built_in_decls): Ditto.
2038 (built_in_info): Ditto
2039 (expand_builtin_classify_type): Ditto.
2040 (mathfn_built_in_1): Ditto.
2041 (expand_builtin_cexpi): Ditto.
2042 (expand_builtin_mempcpy_args): Ditto.
2043 (expand_builtin_stpcpy): Ditto.
2044 (gimplify_va_arg_expr): Ditto.
2045 (expand_builtin_sync_operation): Ditto.
2046 (build_builtin_expect_predicate): Ditto.
2047 (fold_builtin_memory_op): Ditto.
2048 (fold_builtin_strcpy): Ditto.
2049 (fold_builtin_stpcpy): Ditto.
2050 (fold_builtin_strncpy): Ditto.
2051 (fold_builtin_interclass_mathfn): Ditto.
2052 (fold_builtin_classify): Ditto.
2053 (fold_builtin_2): Ditto.
2054 (fold_builtin_strstr): Ditto.
2055 (fold_builtin_strrchr): Ditto.
2056 (fold_builtin_strpbrk): Ditto.
2057 (fold_builtin_strcat): Ditto.
2058 (fold_builtin_strncat): Ditto.
2059 (fold_builtin_strcspn): Ditto.
2060 (fold_builtin_fputs): Ditto.
2061 (fold_builtin_sprintf): Ditto.
2062 (fold_builtin_snprintf): Ditto.
2063 (expand_builtin_memory_chk): Ditto.
2064 (fold_builtin_memory_chk): Ditto.
2065 (fold_builtin_stxcpy_chk): Ditto.
2066 (fold_builtin_strncpy_chk): Ditto.
2067 (fold_builtin_strcat_chk): Ditto.
2068 (fold_builtin_strncat_chk): Ditto.
2069 (fold_builtin_sprintf_chk_1): Ditto.
2070 (fold_builtin_snprintf_chk_1): Ditto.
2071 (fold_builtin_printf): Ditto.
2072 (fold_builtin_fprintf): Ditto.
2073 (fold_call_stmt): Ditto.
2074 (set_builtin_user_assembler_name): Ditto.
2075 * tree-emutls.c (emutls_common_1): Ditto.
2076 * omp-low.c (scan_omp): Ditto.
2077 (lower_rec_input_clauses): Ditto.
2078 (lower_reduction_clauses): Ditto.
2079 (expand_parallel_call): Ditto.
2080 (expand_task_call): Ditto.
2081 (maybe_catch_exception): Ditto.
2082 (optimize_omp_library_calls): Ditto.
2083 (expand_omp_for_generic): Ditto.
2084 (expand_omp_for_static_nochunk): Ditto.
2085 (expand_omp_for_static_chunk): Ditto.
2086 (expand_omp_sections): Ditto.
2087 (expand_omp_atomic_fetch_op): Ditto.
2088 (expand_omp_atomic_pipeline): Ditto.
2089 (expand_omp_atomic_mutex): Ditto.
2090 (lower_omp_single_simple): Ditto.
2091 (lower_omp_single_copy): Ditto.
2092 (lower_omp_master): Ditto.
2093 (lower_omp_ordered): Ditto.
2094 (lower_omp_critical): Ditto.
2095 * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
2096 * builtins.c (DEF_BUILTIN_STUB): Ditto.
2097 (BUILT_IN_NONE): Ditto.
2098 * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
2099 * gimple-low.c (lower_function_body): Ditto.
2100 (lower_builtin_setjmp): Ditto.
2101 * c-decl.c (merge_decls): Ditto.
2102 * tree-eh.c (lower_resx): Ditto.
2103 (lower_resx): Ditto.
2104 (lower_eh_dispatch): Ditto.
2105 * function (gimplify_parameters): Ditto.
2106 * c-typeck.c (build_function_call_vec): Ditto.
2107 * gimplify.c (build_stack_save_restore): Ditto.
2108 (gimplify_vla_decl): Ditto.
2109 (gimplify_modify_expr_to_memcpy): Ditto.
2110 (gimplify_modify_expr_to_memset): Ditto.
2111 (gimplify_variable_sized_compare): Ditto.
2112 (gimplify_function_tree): Ditto.
2113 * calls.c (emit_call_1): Ditto.
2114 * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
2115 * tree-nested.c (convert_nl_goto_reference): Ditto.
2116 (convert_tramp_reference_op): Ditto.
2117 (finalize_nesting_tree_1): Ditto.
2118 * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
2119 (tree_ssa_prefetch_arrays): Ditto.
2120 * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
2121 * system.h (built_in_decls): Ditto.
2122 (implicit_built_in_decls): Ditto.
2123 * tree-vect-generic.c (expand_vector_operations_1): Ditto.
2124 * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
2125 * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
2126 (ix86_veclibabi_svml): Ditto.
2127 (ix86_veclibabi_acml): Ditto.
2128 * config/vms/vms.c (vms_patch_builtins): Ditto.
2129 * config/ia64/ia64.c (ia64_init_builtins): Ditto.
2130 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
2131 (rs6000_builtin_vectorized_libmass): Ditto.
2132 (rs6000_init_builtins): Ditto.
2133 * config/darwin.c (darwin_override_options): Ditto.
2134 (darwin_patch_builtin): Ditto.
2135 (darwin_rename_builtins): Ditto.
2136 * config/pa/pa.c (pa_init_builtins): Ditto.
2138 2011-10-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
2140 * tree.h (copy_ref_info): Expose existing function.
2141 * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
2142 * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
2144 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
2146 * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
2148 (avr_regno_mode_code_ok_for_base_p): New prototype.
2149 * config/avr/avr.h (BASE_REG_CLASS): Remove.
2150 (REGNO_OK_FOR_BASE_P): Remove.
2151 (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
2152 (REG_OK_FOR_BASE_STRICT_P): Remove.
2153 (MODE_CODE_BASE_REG_CLASS): New define.
2154 (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
2155 * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
2156 (avr_regno_mode_code_ok_for_base_p): New function.
2157 (avr_reg_ok_for_addr_p): New static function.
2158 (avr_legitimate_address_p): Use it. Beautify.
2160 2011-10-11 Georg-Johann Lay <avr@gjlay.de>
2163 * config/avr/avr.md (cc): Add out_plus attribute alternative.
2164 (addsi3): Use it. Adapt avr_out_plus to new prototype. Use
2165 avr_out_plus for all CONST_INT addends.
2166 * config/avr/avr-protos.h (avr_out_plus): Change prototype.
2167 * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
2169 (avr_out_plus_1): Change prototype and report effect on cc0.
2170 (avr_out_plus): Ditto.
2171 (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
2173 2011-10-11 H.J. Lu <hongjiu.lu@intel.com>
2175 * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
2178 2011-10-11 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2180 * doc/invoke.texi: Document new warning.
2181 * common.opt (Wvector-operation-performance): Define new warning.
2182 * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
2184 (exapnd_vector_parallel): Warn about expanded vector operation.
2185 (lower_vec_shuffle): Warn about expanded vector operation.
2186 * c-typeck.c (c_build_vec_perm_expr): Store correct location
2187 when creating VEC_PERM_EXPR.
2189 2011-10-11 Richard Guenther <rguenther@suse.de>
2191 PR tree-optimization/50204
2192 * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
2193 two argument handling from ...
2194 (get_continuation_for_phi): ... here. Handle arbitrary number
2197 2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
2199 * modulo-sched.c: Fix comment typo. Mention the possibility
2200 of using scheduling windows of II+1 cycles.
2202 2011-10-11 Tristan Gingold <gingold@adacore.com>
2204 * doc/invoke.texi (C Dialect Options): Document
2205 -fallow-parameterless-variadic-functions.
2206 * c-parser.c (c_parser_parms_list_declarator): Handle it.
2208 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
2210 * config/avr/avr.c (avr_option_override): Set flag_omit_frame_pointer
2211 to 0 if frame pointer is needed for unwinding.
2213 2011-10-10 Uros Bizjak <ubizjak@gmail.com>
2216 * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm. Move from enum
2217 optab_index to enum direct_optab_index.
2218 (vec_perm_optab): Update.
2220 2011-10-10 Anatoly Sokolov <aesok@post.ru>
2222 * config/cris/cris.c (cris_preferred_reload_class): New function.
2223 (TARGET_PREFERRED_RELOAD_CLASS): Define.
2224 * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
2226 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
2228 * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
2230 (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
2231 (*tablejump_enh, *tablejump): Remove insns.
2232 * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
2233 EIJMP for indirect jump. Use LPM Z+ where available.
2235 2011-10-10 Richard Henderson <rth@redhat.com>
2237 * doc/md.texi (vec_perm_const): Fix typo in cindex.
2239 2011-10-10 Kirill Yukhin <kirill.yukhin@intel.com>
2240 Yakovlev Vladimir <vladimir.b.yakovlev@intel.com>
2242 * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
2244 2011-10-10 Richard Guenther <rguenther@suse.de>
2247 * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
2248 mark symbols for renaming. Append the VUSE to all statements
2249 that possibly can have one.
2251 2011-10-10 Richard Guenther <rguenther@suse.de>
2253 * ipa-split.c (pass_split_functions): Add verification TODOs.
2254 (pass_feedback_split_functions): Likewise.
2256 2011-10-10 Richard Guenther <rguenther@suse.de>
2259 * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
2260 only when optimizing.
2262 2011-10-10 Nick Clifton <nickc@redhat.com>
2265 * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
2266 df_get_live_out instead of accessing the bitmaps directly.
2267 (execute_compare_elim_after_reload): Remove calls to df_set_flags,
2268 df_live_add_problem and df_analyze.
2270 2011-10-10 Michael Matz <matz@suse.de>
2273 * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
2275 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
2277 * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
2278 (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
2279 (node_sched_params): Remove first_reg_move and nreg_moves.
2280 (ps_num_consecutive_stages, extend_node_sched_params): New functions.
2281 (update_node_sched_params): Move up file.
2282 (print_node_sched_params): Print the stage. Don't dump info related
2283 to first_reg_move and nreg_moves.
2284 (set_columns_for_row): New function.
2285 (set_columns_for_ps): Move up file and use set_columns_for_row.
2286 (schedule_reg_move): New function.
2287 (schedule_reg_moves): Call extend_node_sched_params and
2288 schedule_reg_move. Extend size of uses bitmap. Initialize
2289 num_consecutive_stages. Return false if a move could not be
2291 (apply_reg_moves): Don't emit moves here.
2292 (permute_partial_schedule): Handle register moves.
2293 (duplicate_insns_of_cycles): Remove for_prolog. Emit moves according
2294 to the same stage-count test as ddg nodes.
2295 (generate_prolog_epilog): Update calls accordingly.
2296 (sms_schedule): Allow move-scheduling to add a new first stage.
2298 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
2300 * modulo-sched.c (ps_insn): Adjust comment.
2301 (ps_reg_move_info): New structure.
2302 (partial_schedule): Add reg_moves field.
2303 (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
2304 (node_sched_params): Turn first_reg_move into an identifier.
2305 (ps_reg_move): New function.
2306 (ps_rtl_insn): Cope with register moves.
2307 (ps_first_note): Adjust comment and assert that the instruction
2308 isn't a register move.
2309 (node_sched_params): Replace with...
2310 (node_sched_param_vec): ...this vector.
2311 (set_node_sched_params): Adjust accordingly.
2312 (print_node_sched_params): Take a partial schedule instead of a ddg.
2313 Use ps_rtl_insn and ps_reg_move.
2314 (generate_reg_moves): Rename to...
2315 (schedule_reg_moves): ...this. Remove rescan parameter. Record each
2316 move in the partial schedule, but don't emit it here. Don't perform
2317 register substitutions here either.
2318 (apply_reg_moves): New function.
2319 (duplicate_insns_of_cycles): Use register indices directly,
2320 rather than finding instructions using PREV_INSN. Use ps_reg_move.
2321 (sms_schedule): Call schedule_reg_moves before committing to
2322 a partial schedule. Try the next ii if the schedule fails.
2323 Use apply_reg_moves instead of generate_reg_moves. Adjust
2324 call to print_node_sched_params. Free node_sched_param_vec
2325 instead of node_sched_params.
2326 (create_partial_schedule): Initialize reg_moves.
2327 (free_partial_schedule): Free reg_moves.
2329 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
2331 * modulo-sched.c (ps_insn): Replace node field with an identifier.
2332 (SCHED_ASAP): Replace with..
2333 (NODE_ASAP): ...this macro.
2334 (SCHED_PARAMS): New macro.
2335 (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
2336 (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
2337 (node_sched_params): Remove asap.
2338 (ps_rtl_insn, ps_first_note): New functions.
2339 (set_node_sched_params): Use XCNEWVEC. Don't copy across the
2341 (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
2342 (generate_reg_moves): Pass ids to the SCHED_* macros.
2343 (update_node_sched_params): Take a ps insn identifier rather than
2344 a node as parameter. Use ps_rtl_insn.
2345 (set_columns_for_ps): Update for above field and SCHED_* macro changes.
2346 (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
2347 (optimize_sc): Update for above field and SCHED_* macro changes.
2348 Update calls to try_scheduling_node_in_cycle and
2349 update_node_sched_params.
2350 (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
2351 macro changes. Use ps_rtl_insn and ps_first_note.
2352 (sms_schedule): Pass ids to the SCHED_* macros.
2353 (get_sched_window): Adjust for above field and SCHED_* macro changes.
2354 Use NODE_ASAP instead of SCHED_ASAP.
2355 (try_scheduling_node_in_cycle): Remove node parameter. Update
2356 call to ps_add_node_check_conflicts. Pass ids to the SCHED_* macros.
2357 (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
2358 (ps_insert_empty_row): Adjust for above field changes.
2359 (compute_split_row): Use ids rather than nodes.
2360 (verify_partial_schedule): Adjust for above field changes.
2361 (print_partial_schedule): Use ps_rtl_insn.
2362 (create_ps_insn): Take an id rather than a node.
2363 (ps_insn_find_column): Adjust for above field changes.
2365 (ps_insn_advance_column): Adjust for above field changes.
2366 (add_node_to_ps): Remove node parameter. Update call to
2368 (ps_has_conflicts): Use ps_rtl_insn.
2369 (ps_add_node_check_conflicts): Replace node parameter than an id.
2371 2011-10-10 Richard Sandiford <richard.sandiford@linaro.org>
2373 * modulo-sched.c (undo_replace_buff_elem): Delete.
2374 (generate_reg_moves): Don't build and return an undo list.
2375 (free_undo_replace_buff): Delete.
2376 (sms_schedule): Adjust call to generate_reg_moves.
2377 Don't call free_undo_replace_buff.
2379 2011-10-10 Matthias Klose <doko@ubuntu.com>
2381 * common/config/m32c: Remove empty directory.
2383 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
2385 * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
2387 2011-10-10 Georg-Johann Lay <avr@gjlay.de>
2390 * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
2391 atmega164a to 0x100.
2393 2011-10-09 Eric Botcazou <ebotcazou@adacore.com>
2395 * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
2396 the replacement if the conversion to the LHS type is not useless.
2398 2011-10-09 Ira Rosen <ira.rosen@linaro.org>
2400 PR tree-optimization/50635
2401 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
2402 DEF_STMT to the list of statements to be replaced by the
2404 (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
2406 2011-10-09 Anatoly Sokolov <aesok@post.ru>
2408 * system.h: Commit forgotten hunk in previous patch.
2409 (OUTPUT_ADDR_CONST_EXTRA): Poison.
2411 2011-10-08 Nicola Pero <nicola.pero@meta-innovation.com>
2414 * doc/objc.texi (Garbage Collection): Updated example to protect
2415 +initialize against execution in subclasses.
2417 2011-10-07 Richard Henderson <rth@redhat.com>
2419 * doc/extend.texi (__builtin_shuffle): Improve the description to
2420 include the modulus of the selector. Mention OpenCL.
2421 * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
2423 * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
2424 * genopinit.c (optabs): Rename vshuffle to vec_perm.
2425 * c-typeck.c (c_build_vec_perm_expr): Rename from
2426 c_build_vec_shuffle_expr. Update for name changes.
2427 * optabs.c (expand_vec_perm_expr_p): Rename from
2428 expand_vec_shuffle_expr_p.
2429 (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
2430 * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
2431 (vec_perm_optab): Rename from vshuffle_optab.
2432 * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
2433 c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
2434 tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
2436 * config/i386/i386.c (ix86_expand_vec_perm): Rename from
2437 ix86_expand_vshuffle.
2438 * config/i386/i386-protos.h: Update.
2439 * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
2440 (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
2442 2011-10-07 Richard Henderson <rth@redhat.com>
2444 * config/i386/predicates.md (avx2_pblendw_operand): New.
2445 * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
2446 (avx2_pblendw, *avx2_pblendw): New expander and insn.
2448 2011-10-07 Richard Henderson <rth@redhat.com>
2450 * config/i386/i386.c (bdesc_args): Update code for
2451 __builtin_ia32_palignr256. Change type of __builtin_ia32_pslldqi256,
2452 and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
2453 (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
2454 * config/i386/sse.md (mode iterator V16): Add V2TI.
2455 (mode iterator SSESCALARMODE): Use V2TI not V4DI.
2456 (mode attr ssse3_avx2): Add V2TI.
2457 (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
2459 2011-10-07 David S. Miller <davem@davemloft.net>
2462 * configure.ac: Add .register directives to VIS3 test.
2463 * configure: Regenerate.
2465 2011-10-07 Richard Henderson <rth@redhat.com>
2467 * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
2469 2011-10-07 Richard Henderson <rth@redhat.com>
2472 * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
2474 2011-10-07 Andrew Stubbs <ams@codesourcery.com>
2476 * config/arm/predicates.md (shift_amount_operand): Remove constant
2478 (shift_operator): Check range of constants for all shift operators.
2480 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2482 * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
2483 Load GOT pointer for non-pic builds.
2484 (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
2485 (s390_emit_call): Likewise.
2487 2011-10-07 Tom de Vries <tom@codesourcery.com>
2490 * tree.c (build_common_builtin_nodes): Add local_define_builtin for
2491 BUILT_IN_ALLOCA_WITH_ALIGN. Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
2493 * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
2494 arglist. Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
2495 (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2496 (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2497 * tree-ssa-ccp.c (evaluate_stmt): Set align for
2498 BUILT_IN_ALLOCA_WITH_ALIGN.
2499 (fold_builtin_alloca_for_var): Rename to ...
2500 (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
2501 BUILT_IN_ALLOCA_WITH_ALIGN argument.
2502 (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
2503 fold_builtin_alloca_with_align.
2504 (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2505 * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
2507 * ipa-pure-const.c (special_builtin_state): Handle
2508 BUILT_IN_ALLOCA_WITH_ALIGN.
2509 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
2510 (call_may_clobber_ref_p_1): Same.
2511 * function.c (gimplify_parameters): Lower vla to
2512 BUILT_IN_ALLOCA_WITH_ALIGN.
2513 * gimplify.c (gimplify_vla_decl): Same.
2514 * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2515 * tree-mudflap.c (mf_xform_statements): Same.
2516 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
2517 (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
2518 * varasm.c (incorporeal_function_p): Same.
2519 * tree-object-size.c (alloc_object_size): Same.
2520 * gimple.c (gimple_build_call_from_tree): Same.
2522 2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
2524 * function.c (frame_required_for_rtx): Remove function.
2525 (requires_stack_frame_p): New arg set_up_by_prologue. All callers
2526 changed. Compute a set of mentioned registers and compare against
2527 the new arg rather than calling frame_required_for_rtx.
2528 (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
2529 reg set. Convert the unconverted_simple_returns mechanism to store
2530 jump insns rather than their basic blocks. Also check the
2531 orig_entry_edge destination for new blocks.
2533 2011-10-07 Jakub Jelinek <jakub@redhat.com>
2535 PR tree-optimization/50650
2536 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
2537 call vect_is_simple_cond here, instead fail if cond_expr isn't
2538 COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
2539 for cond_expr's first operand.
2540 * tree-vect-stmts.c (vect_is_simple_cond): Static again.
2541 * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
2543 2011-10-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2545 * config/s390/s390.md (DWH, dwh): New mode macros.
2546 ("umulsidi3"): Extend to support "umulditi3" as well.
2548 2011-10-07 Uros Bizjak <ubizjak@gmail.com>
2549 H.J. Lu <hongjiu.lu@intel.com>
2552 * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
2553 integer PLUS RTX to a register to improve address combine.
2555 2011-10-06 Richard Henderson <rth@redhat.com>
2557 * combine-stack-adjust.c (maybe_move_args_size_note): Add after
2558 parameter; use it to decide whether to merge two notes.
2559 (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
2560 for the deallocation case as well.
2562 2011-10-06 Anatoly Sokolov <aesok@post.ru>
2564 * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
2565 * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
2566 * doc/tm.texi: Regenerate.
2567 * target.def (output_addr_const_extra): Use
2568 hook_bool_FILEptr_rtx_false.
2569 * targhooks.c (default_asm_output_addr_const_extra): Remove.
2570 * targhooks.h (default_asm_output_addr_const_extra): Remove.
2571 * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
2572 * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
2574 2011-10-06 David S. Miller <davem@davemloft.net>
2576 * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
2577 (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
2578 SI mode 64-bit code gen case explicitly zero-extend and truncate.
2579 (*popcount<mode>_sp64): Split up into...
2580 (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
2581 SImode case use truncate.
2582 (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
2583 subtract so the compiler can optimize it.
2584 (SIDI): Remove unused mode iterator.
2586 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2588 * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
2589 on the orig_entry_edge. Don't account for it in prologue_clobbered.
2591 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2593 PR tree-optimization/50596
2594 * tree-vectorizer.h (vect_is_simple_cond): New prototype.
2595 (NUM_PATTERNS): Change to 6.
2596 * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
2598 (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
2599 (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
2600 if it already has one, and don't set STMT_VINFO_VECTYPE in it
2601 if it is already set.
2602 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
2603 COND_EXPR in pattern stmts.
2604 (vect_is_simple_cond): No longer static.
2606 2001-10-06 Richard Henderson <rth@redhat.com>
2608 * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
2609 * config/i386/sse.md (sseshuffint): Remove.
2610 (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
2611 (VSHUFFLE_AVX2): New mode iterator.
2612 (vshuffle<mode>): Use it.
2613 (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
2615 * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
2616 for vector_all_ones_operand.
2617 (ix86_expand_int_vcond): Distinguish between comparison mode
2618 and data mode. Allow them to differ.
2619 (ix86_expand_vshuffle): Don't force data mode to match maskmode.
2621 2001-10-06 Richard Henderson <rth@redhat.com>
2623 * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
2624 mask operand. Tidy the code.
2626 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2628 * tree-vect-patterns.c (vect_pattern_recog_1): Use
2629 vect_recog_func_ptr typedef for the first argument.
2630 (vect_pattern_recog): Rename vect_recog_func_ptr variable
2631 to vect_recog_func, use vect_recog_func_ptr typedef for it.
2633 PR tree-optimization/49279
2634 * tree-ssa-structalias.c (find_func_aliases): Don't handle
2636 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
2637 restrict propagation.
2638 * tree-ssa.c (useless_type_conversion_p): Don't return false
2639 if TYPE_RESTRICT differs.
2641 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2643 * function.c (thread_prologue_and_epilogue_insns): Build a vector
2644 of unconverted simple return blocks rather than trying to
2645 recompute them later based on bb_flags bitmap tests.
2647 2011-10-06 Michael Matz <matz@suse.de>
2649 * tree-flow.h (get_var_ann): Don't declare.
2650 * tree-flow-inline.h (get_var_ann): Remove.
2651 (set_is_used): Use var_ann, not get_var_ann.
2652 * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
2653 * tree-profile.c (gimple_gen_edge_profiler): Call
2654 find_referenced_var_in.
2655 (gimple_gen_interval_profiler): Ditto.
2656 (gimple_gen_pow2_profiler): Ditto.
2657 (gimple_gen_one_value_profiler): Ditto.
2658 (gimple_gen_average_profiler): Ditto.
2659 (gimple_gen_ior_profiler): Ditto.
2660 (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
2661 (gimple_gen_ic_func_profiler): Call add_referenced_var.
2662 * tree-mudflap.c (execute_mudflap_function_ops): Call
2665 2011-10-06 Jakub Jelinek <jakub@redhat.com>
2667 * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
2668 don't set SSA_NAME_DEF_STMT that has been already set by
2669 gimple_build_assign_with_ops.
2670 (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
2671 vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
2674 * tree.h (avoid_folding_inline_builtin): New prototype.
2675 * builtins.c (avoid_folding_inline_builtin): No longer static.
2676 * gimple-fold.c (gimple_fold_builtin): Give up if
2677 avoid_folding_inline_builtin returns true.
2679 2011-10-06 Richard Guenther <rguenther@suse.de>
2681 * tree-vect-generic.c (vector_element): Look at previous
2684 2011-10-06 David Edelsohn <dje.gcc@gmail.com>
2687 * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2688 __powerpc__, __PPC__, __unix__.
2690 2011-10-06 Michael Matz <matz@suse.de>
2692 * i386/i386.opt (recip_mask, recip_mask_explicit,
2693 x_recip_mask_explicit): New variables and cl_target member.
2694 (mrecip=): New option.
2695 * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
2696 RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
2697 (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
2698 TARGET_RECIP_VEC_SQRT): New tests.
2699 * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
2700 (sqrt<mode>2): Check TARGET_RECIP_SQRT.
2701 * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
2702 (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
2703 * i386/i386.c (ix86_option_override_internal): Set recip_mask
2704 for -mrecip and -mrecip=options.
2705 (ix86_function_specific_save): Save recip_mask_explicit.
2706 (ix86_function_specific_restore): Restore recip_mask_explicit.
2708 * doc/invoke.texi (ix86 Options): Document the new option.
2710 2011-10-06 Bernd Schmidt <bernds@codesourcery.com>
2713 * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2715 2011-10-06 Ulrich Weigand <ulrich.weigand@linaro.org>
2718 * config/arm/arm.c (arm_legitimize_reload_address): Recognize
2719 output of a previous pass through legitimize_reload_address.
2720 Do not attempt to optimize addresses if the base register is
2721 equivalent to a constant.
2723 2011-10-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2725 * function.c (thread_prologue_and_epilogue_insns): Mark
2726 last_bb_active as possibly unused. It is unused for targets which
2727 do neither have "return" nor "simple_return" expanders.
2729 2011-10-06 Richard Guenther <rguenther@suse.de>
2731 * fold-const.c (fold_ternary_loc): Also fold non-constant
2732 vector CONSTRUCTORs. Make more efficient.
2733 * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
2734 (cprop_into_stmt): Don't propagate into virtual operands.
2735 (optimize_stmt): Really dump original statement.
2737 2011-10-06 Nick Clifton <nickc@redhat.com>
2739 * config/rx/rx.md (smin3): Revert previous delta.
2741 2011-10-06 Richard Guenther <rguenther@suse.de>
2743 PR tree-optimization/38884
2744 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2745 reads from aggregate SSA names.
2747 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2749 * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
2750 argument, truncate it at the beginning instead of allocating there
2751 and freeing at the end.
2752 (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
2753 pass its address to vect_pattern_recog_1.
2755 2011-10-05 David S. Miller <davem@davemloft.net>
2757 * config/sparc/sparc.opt (POPC): New option.
2758 * doc/invoke.texi: Document it.
2759 * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
2760 default on Niagara-2 and later.
2761 * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2762 * config/sparc/sparc.md (SIDI): New mode iterator.
2763 (ffsdi2): Delete commented out pattern and comments.
2764 (popcount<mode>2, clz<mode>2): New expanders.
2765 (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
2766 *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
2768 2011-10-06 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2771 * c-tree.h (c_expr_t): New typedef for struct c_expr.
2772 (C_EXPR_APPEND): New macro.
2773 * c-parser.c (c_parser_get_builtin_args): Preserve
2774 original_tree_code of c_expr structure.
2775 (c_parser_postfix_expression): Adjust to the new function.
2777 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2779 * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2780 if profiling after the prologue.
2782 2011-10-05 Jakub Jelinek <jakub@redhat.com>
2784 PR tree-optimization/50613
2785 * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
2786 operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
2787 and if it is neither that not SSA_NAME, give up.
2789 2011-10-05 Richard Henderson <rth@redhat.com>
2791 * tree-vect-generic.c (vector_element): Never fail. Use
2792 build_zero_cst. Tidy up type references.
2793 (lower_vec_shuffle): Never fail. Mask shuffle indicies. Reduce
2794 code duplication. Do update_stmt here ...
2795 (expand_vector_operations_1): ... not here.
2797 * config/i386/i386.c (ix86_expand_vshuffle): Never fail. Handle
2798 TARGET_XOP. Fix pshufb constant vector creation. Reduce code
2799 duplication. Handle V2DI without SSE4.1.
2800 * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
2801 * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
2803 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2805 * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2806 of "found". Simplify return value calculation.
2807 (distance_agu_use): Ditto.
2809 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2812 * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
2813 if the function was not shrink-wrapped.
2814 (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
2816 * function.c (thread_prologue_and_epilogue_insns): Make sure the
2817 shrink_wrapped flag is set even if there is no dump file.
2819 2011-10-05 DJ Delorie <dj@redhat.com>
2820 Nick Clifton <nickc@redhat.com>
2822 * config/rx/rx.opt (mpid): Define.
2823 * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
2824 (MULTILIB_DIRNAMES): Add pid.
2825 * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
2826 (rx_num_interrupt_regs): New variable.
2827 (rx_gp_base_regnum): New function. Returns the number of the
2828 small data area register.
2829 (rx_pid_base_regnum): New function. Returns the number of the pid
2831 (rx_decl_for_addr): New function. Returns the symbolic part of a MEM.
2832 (rx_pid_data_operand): New function. Returns whether an object is
2833 in the position independent data area.
2834 (rx_legitimize_address): New function. Puts undecided PID
2835 objects in the PID data area.
2836 (rx_is_legitimate_address): Add support for PID operands.
2837 (rx_print_operand_address): Likewise.
2838 (rx_print_operand): Likewise.
2839 (rx_maybe_pidify_operand): New function. Determine if an operand
2840 is suitable for PID addressing.
2841 (rx_gen_move_template): Add PID support.
2842 (rx_conditional_register_usage): Likewise.
2843 (rx_option_override): Initialise rx_num_interrupt_regs.
2844 (rx_is_legitimate_constant): Add support for PID constants.
2845 (TARGET_LEGITIMIZE_ADDRESS): Define.
2846 * config/rx/constraints.md (Rpid): Define.
2848 * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2849 (tablejump): Add PID support.
2851 (mov<>_internal): Likewise.
2852 (addsi3): Convert to an expander. Add PID support.
2853 (pid_addr): New pattern.
2854 * config/rx/rx.h (CPP_SPEC): Define.
2855 (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
2856 (CASE_VECTOR_PC_RELATIVE): Define.
2857 (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
2858 * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
2859 * doc/invoke.texi (RX Options): Document -mpid command line option.
2861 2011-10-05 Richard Guenther <rguenther@suse.de>
2863 PR tree-optimization/38885
2864 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2867 2011-10-05 Bernd Schmidt <bernds@codesourcery.com>
2869 * doc/invoke.texi (-fshrink-wrap): Document.
2870 * opts.c (default_options_table): Add it.
2871 * common.opt (fshrink-wrap): Add.
2872 * function.c (emit_return_into_block): Remove useless declaration.
2873 (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
2874 requires_stack_frame_p, gen_return_pattern): New static functions.
2875 (emit_return_into_block): New arg simple_p. All callers changed.
2876 Use gen_return_pattern.
2877 (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
2878 * config/i386/i386.md (return): Expand into a simple_return.
2879 (simple_return): New expander):
2880 (simple_return_internal, simple_return_internal_long,
2881 simple_return_pop_internal_long, simple_return_indirect_internal):
2882 Renamed from return_internal, return_internal_long,
2883 return_pop_internal_long and return_indirect_internal; changed to use
2885 * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2887 (ix86_pad_returns): Likewise.
2888 * function.h (struct rtl_data): Add member shrink_wrapped.
2889 * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
2890 are not jumps or sibcalls can't be compared.
2892 2011-10-05 Richard Guenther <rguenther@suse.de>
2894 * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2896 (simplify_unary_expression): Handle BIT_FIELD_REFs.
2897 (try_to_simplify): Handle BIT_FIELD_REFs.
2899 2011-10-05 Georg-Johann Lay <avr@gjlay.de>
2901 * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
2902 * config/avr/avr.c (avr_out_addto_sp): New function.
2903 (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
2904 * config/avr/avr.md (adjust_len): Add "addto_sp".
2905 (*movhi_sp): Remove insn.
2906 (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
2908 2011-10-05 Richard Guenther <rguenther@suse.de>
2910 * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
2911 with an embedded expression valueize and fold that as well.
2912 * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
2913 results from gimple_fold_stmt_to_constant_1.
2915 2011-10-05 Nick Clifton <nickc@redhat.com>
2917 * config/rx/rx.md (tablejump): Add missing label.
2918 (adddi3_internal): Mark operand 0 as early-clobbered.
2919 (smaxsi3): Revert previous delta.
2920 (adc_internal): Fix whitespace in generated asm.
2921 (adc_flags): Likewise.
2923 2011-10-05 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
2925 * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2926 with the new widening_optab_handler.
2928 2011-10-05 Richard Guenther <rguenther@suse.de>
2930 PR tree-optimization/50609
2931 * gimple-fold.c (fold_array_ctor_reference): Also handle
2932 vector typed constructors.
2933 (fold_ctor_reference): Dispatch to fold_array_ctor_reference
2934 for vector typed constructors.
2936 2011-10-05 Uros Bizjak <ubizjak@gmail.com>
2938 * config/i386/i386.c (ix86_emit_binop): New static function.
2939 (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
2941 (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2943 2011-10-04 David S. Miller <davem@davemloft.net>
2945 * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
2946 UNSPEC_XMUL): New unspecs.
2947 (muldi3_v8plus): Use output_v8plus_mult.
2948 (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
2949 New VIS 3.0 combiner patterns.
2950 (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
2951 fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
2952 umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
2953 xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
2955 * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
2956 (output_v8plus_mult): New function.
2957 * config/sparc/sparc-protos.h: Declare it.
2958 * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
2959 __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
2960 __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
2961 * doc/extend.texi: Document new builtins.
2963 2011-10-04 Richard Henderson <rth@redhat.com>
2965 * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2966 Avoid save_expr unless two_arguments.
2968 2011-10-04 Ozkan Sezer <sezeroz@gmail.com>
2970 * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2971 * config/i386/mingw32.h (CPP_SPEC): Likewise.
2973 2011-10-04 David S. Miller <davem@davemloft.net>
2975 * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2978 2011-10-04 Jakub Jelinek <jakub@redhat.com>
2980 PR tree-optimization/50604
2981 * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
2982 fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
2983 last argument to memcpy has size_type_node type instead of ssizetype.
2984 * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
2985 instead of TREE_TYPE (len) as type for newlen.
2987 PR tree-optimization/50522
2988 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2990 (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2993 * fold-const.c (fold_unary_loc): Don't optimize
2994 POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
2995 casting the inner pointer if it isn't TYPE_RESTRICT.
2996 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
2997 casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
2999 2011-10-04 Joseph Myers <joseph@codesourcery.com>
3001 * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
3003 2011-10-04 Jan Hubicka <jh@suse.cz>
3005 * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
3006 * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
3007 * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
3008 * lto-cgraph.c (order_base): New static var.
3009 (lto_output_node): Stream in order.
3010 (lto_output_varpool_node): Stream out order.
3011 (input_node): Stream in order.
3012 (input_varpool_node): Stream out order.
3013 (input_cgraph_1): Initialize order base; update call of
3014 lto_input_toplevel_asms.
3016 2011-10-04 Georg-Johann Lay <avr@gjlay.de>
3019 * config/avr/avr-protos.h (avr_legitimize_reload_address): New
3021 * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
3023 * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
3024 function. Log if avr_log.legitimize_reload_address.
3026 2011-10-04 Eric Botcazou <ebotcazou@adacore.com>
3028 * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
3030 2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
3032 * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
3033 variables. Fix second operand of DR. Swap inputs for sdiv_qrnnd.
3035 2011-10-03 David S. Miller <davem@davemloft.net>
3037 * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
3038 GSR_REG an input operand to UNSPEC instead of a parallel USE.
3039 (faligndata<V64I:mode>_vis): Likewise and use DI mode.
3040 (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
3041 Reference GSR_REG in DI mode, simplify convoluted expressions by using
3043 (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
3045 2011-10-03 Maxim Kuvyrkov <maxim@codesourcery.com>
3047 * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
3049 2011-10-03 Jakub Jelinek <jakub@redhat.com>
3050 Ian Lance Taylor <iant@google.com>
3052 * godump.c (go_output_typedef): Support printing enum values that
3053 don't fit in a signed HOST_WIDE_INT.
3055 2011-10-03 Anatoly Sokolov <aesok@post.ru>
3057 * config/cris/cris.c (cris_output_addr_const_extra): Make static.
3058 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3059 * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
3060 * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
3062 2011-10-03 Anatoly Sokolov <aesok@post.ru>
3064 * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
3065 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3066 * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
3067 * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
3069 2011-10-03 Steve Ellcey <sje@cup.hp.com>
3072 * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
3073 (gcc_cv_ld_static_option): Ditto.
3074 (gcc_cv_ld_dynamic_option): Ditto.
3075 * configure: Regenerate.
3077 2011-10-03 David S. Miller <davem@davemloft.net>
3079 * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
3080 and 'si' patterns which describe the GSR changes explicitly in the
3081 RTL using zero_extract.
3082 (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
3084 * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
3085 GSR_REG in a USE, since it's now a true arg to the UNSPEC.
3087 2011-10-03 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
3089 * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
3090 if given expression can be expanded by the target.
3091 (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
3092 using target vector instructions.
3093 * optabs.h: New optab vshuffle.
3094 (expand_vec_shuffle_expr_p): New prototype.
3095 (expand_vec_shuffle_expr): New prototype.
3096 (vshuffle_optab): New optab.
3097 * genopinit.c: Adjust to support vecshuffle.
3098 * c-tree.h (c_build_vec_shuffle_expr): New prototype.
3099 * expr.c (expand_expr_real_2): Adjust.
3100 * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
3101 recognizing the cases of two and three arguments.
3102 (convert_arguments) (build_binary_op)
3103 (scalar_to_vector) (build_array_ref): Spurious whitespace.
3104 * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
3105 * tree.def: New tree code VEC_SHUFFLE_EXPR.
3106 * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
3107 * tree-vect-generic.c (vector_element): New function. Returns an
3108 element of the vector at the given position.
3109 (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
3110 by the backend or expand an expression piecewise.
3111 (expand_vector_operations_1): Adjusted.
3112 (gate_expand_vector_operations_noop): New gate function.
3113 * Makefile.in (tree-vect-generic.o): New include.
3114 * gimple.c (get_gimple_rhs_num_ops): Adjust.
3115 * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
3116 * passes.c: Move veclower down.
3117 * tree-pretty-print.c (dump_generic_node): Recognize
3118 VEC_SHUFFLE_EXPR as valid expression.
3119 * c-parser.c (c_parser_get_builtin_args): Helper function for the
3120 builtins with variable number of arguments.
3121 (c_parser_postfix_expression): Use a new helper function for
3122 RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
3123 * tree-ssa-operands: Adjust.
3124 * c-family/c-common.c: New __builtin_shuffle keyword.
3125 * c-family/c-common.h: New __builtin_shuffle keyword.
3126 * gcc/doc/extend.texi: Adjust.
3128 * gcc/config/i386/sse.md: (sseshuffint) New mode_attr. Correspondence
3129 between the vector and the type of the mask when shuffling.
3130 (vecshuffle<mode>): New expansion.
3131 * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
3132 * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
3133 (ix86_vectorize_builtin_vec_perm_ok): Adjust.
3135 2011-10-03 Jakub Jelinek <jakub@redhat.com>
3137 PR tree-optimization/50587
3138 * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
3139 arg0 is not a SSA_NAME.
3141 2011-10-03 Richard Sandiford <rdsandiford@googlemail.com>
3143 * ipa-inline-analysis.c (MAX_TIME): Update comment.
3145 2011-10-02 Richard Henderson <rth@redhat.com>
3146 David S. Miller <davem@davemloft.net>
3148 * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
3149 conditional insn type setting, we always emit a shift.
3150 (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
3151 (*lshrsi3_extend): Rename to *lshrsi3_extend1.
3152 * config/sparc/predicates.md (const_one_operand): Delete.
3154 2011-10-02 Gerald Pfeifer <gerald@pfeifer.com>
3156 * invoke.texi (SPARC Options): Refer to GNU/Linux.
3158 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
3160 * config/mips/mips.c (mips_frame_barrier): New function.
3161 (mips_expand_prologue): Call it after allocating stack space.
3162 (mips_deallocate_stack): New function.
3163 (mips_expand_epilogue): Call mips_frame_barrier and
3164 mips_deallocate_stack.
3166 2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
3169 * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
3170 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3171 (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
3173 2011-10-02 Jan Hubicka <jh@suse.cz>
3175 * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
3177 * cgraphunit.c (ipa_passes): Remove unrechable nodes.
3178 * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
3179 * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
3180 functions are reachable when address is taken.
3181 * tree-sra.c (modify_function): Free dominance info.
3183 2011-10-02 Jan Hubicka <jh@suse.cz>
3185 * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
3187 * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
3188 (reset_inline_summary): New function.
3189 (compute_inline_parameters, inline_node_removal_hook,
3190 inline_edge_removal_hook): Use it.
3191 (inline_free_summary): Reset holders correctly.
3192 (inline_generate_summary): Free summary before computing it.
3194 2011-10-02 Paolo Carlini <paolo.carlini@oracle.com>
3196 PR preprocessor/36819
3197 * incpath.c (merge_include_chains): Call free_path on
3198 heads[QUOTE] and tails[QUOTE].
3200 2011-10-02 Jan Hubicka <jh@suse.cz>
3203 * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
3204 when resolution is already availbale from plugin.
3205 (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
3206 * cgraph.c (ld_plugin_symbol_resolution): Add
3207 prevailing_def_ironly_exp.
3208 * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
3209 * ipa.c (varpool_externally_visible_p): IRONLY variables are never
3211 * varasm.c (resolution_to_local_definition_p): Add
3212 LDPR_PREVAILING_DEF_IRONLY_EXP.
3213 (resolution_local_p): Likewise.
3215 2011-10-01 David S. Miller <davem@davemloft.net>
3217 * config/sparc/sparc.opt (VIS3): New option.
3218 * doc/invoke.texi: Document it.
3219 * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
3220 not capable of such instructions.
3221 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
3222 to 0x300 when TARGET_VIS3.
3223 * config/sparc/sparc-modes.def: Create 16-byte vector modes.
3224 * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
3225 UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
3226 (V64N8, VASS): New mode iterators.
3227 (vis3_shift, vis3_addsub_ss): New code iterators.
3228 (vbits, vconstr): New mode attributes.
3229 (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
3230 (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
3231 fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
3232 fmean16_vis, fpadd64_vis, fpsub64_vis,
3233 <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
3234 VIS 3.0 instruction patterns.
3235 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
3236 default when targetting capable cpus. TARGET_VIS3 implies
3237 TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
3238 (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
3239 (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
3241 * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
3242 __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
3243 __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
3244 __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
3245 __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
3246 __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
3247 __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
3248 __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
3249 * doc/extend.texi: Document new VIS 3.0 builtins.
3251 2011-10-01 Eric Botcazou <ebotcazou@adacore.com>
3253 * ira-color.c (assign_hard_reg): Fix typo.
3255 2011-09-30 H.J. Lu <hongjiu.lu@intel.com>
3257 * doc/extend.texi: Add missing ','.
3259 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
3261 * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
3262 Enable -fmodulo-sched at -O2 and above.
3263 * config/c6x/c6x.md (doloop_end): New expander.
3264 (mvilc, sploop, spkernel, loop_end): New patterns.
3265 (loop_end with memory destination splitter): New.
3266 * config/c6x/c6x.c: Include "hw-doloop.h".
3267 (enum unitreqs): New.
3268 (unit_req_table): New typedef.
3269 (unit_reqs): New static variable.
3270 (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
3271 res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
3272 hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
3273 hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
3274 (struct c6x_sched_context): New member last_scheduled_iter0.
3275 (init_sched_state): Initialize it.
3276 (c6x_variable_issue): Update it.
3277 (sploop_max_uid_iter0): New static variable.
3278 (c6x_sched_reorder_1): Be careful about issuing sploop.
3279 (c6x_reorg): Call c6x_hwlooops before the final schedule.
3281 2011-09-30 Georg-Johann Lay <avr@gjlay.de>
3284 * config/avr/avr-protos.h (avr_log_t): New field address_cost.
3285 * config/avr/avr.c (avr_address_cost): Use it.
3286 * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
3287 (avr_log_vadump): Unknown %-codes finish printing.
3289 2011-09-30 Jakub Jelinek <jakub@redhat.com>
3292 * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
3293 input constraints allow mem and not reg, pass true instead of
3294 false as second argument to maybe_fold_reference.
3296 PR tree-optimization/46309
3297 * fold-const.c (make_range, merge_ranges): Remove prototypes.
3298 (make_range_step): New function.
3299 (make_range): Use it.
3300 * tree.h (make_range_step): New prototypes.
3301 * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
3302 * tree-ssa-reassoc.c: Include diagnostic-core.h.
3303 (struct range_entry): New type.
3304 (init_range_entry, range_entry_cmp, update_range_test,
3305 optimize_range_tests): New functions.
3306 (reassociate_bb): Call optimize_range_tests.
3308 2011-09-30 Jakub Jelinek <jakub@redhat.com>
3309 Richard Guenther <rguenther@suse.de>
3311 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
3312 BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
3313 * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise. Fix
3314 handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
3315 (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
3316 BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
3318 2011-09-30 Jan Beulich <jbeulich@suse.com>
3320 * lto-cgraph.c (output_cgraph): Remove processing of
3321 'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
3322 (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
3323 lto_input_toplevel_asms() instead.
3324 * lto-section-in.c (lto_section_name): Add "asm" entry.
3325 * lto-streamer-in.c (lto_input_toplevel_asms): New.
3326 * lto-streamer-out.c (lto_output_toplevel_asms): New.
3327 * lto-streamer.h (LTO_minor_version): Bump.
3328 (enum lto_section_type): Add LTO_section_asm.
3329 (struct lto_asm_header): New.
3330 (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
3331 * tree-streamer.h (streamer_write_string_cst): Declare.
3332 * tree-streamer-out.c (write_string_cst): Rename to
3333 streamer_write_string_cst and make global. Handle incoming string
3335 (streamer_write_tree_header): Adjust call to renamed function.
3337 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
3339 * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
3340 modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
3341 modulo_last_stage): New static variables.
3342 (set_modulo_params, discard_delay_pairs_above): New functions.
3343 (struct delay_pair): New member stages.
3344 (htab_i2_traverse, htab_i1_traverse): New static functions.
3345 (record_delay_slot_pair): New arg stages. All callers changed.
3347 (pair_delay): Take stages into account.
3348 (add_delay_dependencies): Don't do so for stage pairs.
3349 (struct sched_block_state): New member modulo_epilogue.
3350 (save_backtrack_point): Don't set SHADOW_P for stage pairs.
3351 (unschedule_insns_until): Decrease modulo_insns_scheduled.
3352 Set HARD_DEP without using or.
3353 (resolve_dependencies): New static function.
3354 (prune_ready_list): New arg modulo_epilogue_p. All callers changed.
3355 If it is true, allow only insns with INSN_EXACT_TICK set.
3356 (schedule_block): Return bool, always true for normal scheduling,
3357 true or false depending on modulo scheduling success otherwise.
3358 Add bookkeeping for modulo scheduling, and call resolve_dependencies
3359 on everything left over after a modulo schedule.
3360 (haifa_sched_init): Remove check_cfg call. Clear modulo_ii.
3361 * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
3363 (set_modulo_params, discard_delay_pairs_above): Declare.
3364 * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
3365 * doc/invoke.texi (--param): Document it.
3367 * sched-ebb.c (schedule_ebb): No longer static. Remove declaration.
3368 New arg modulo_scheduling. All callers changed. Move note handling
3369 code here from schedule_ebbs.
3370 (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
3371 out of schedule_ebbs.
3372 (schedule_ebbs): Call them. Remove note handling code moved to
3374 * sched-int.h (schedule_ebb, schedule_ebbs_init,
3375 schedule_ebbs_finish): Declare.
3377 2011-09-30 Richard Guenther <rguenther@suse.de>
3380 * tree-cfg.c (verify_gimple_comparison): Compare component
3381 mode sizes for vector comparisons.
3383 2011-09-30 Revital Eres <revital.eres@linaro.org>
3385 * ddg.c (autoinc_var_is_used_p): New function.
3386 (create_ddg_dep_from_intra_loop_link,
3387 add_cross_iteration_register_deps): Call it.
3388 * ddg.h (autoinc_var_is_used_p): Declare.
3389 * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
3390 (sms_schedule): Handle instructions with REG_INC.
3392 2011-09-30 Revital Eres <revital.eres@linaro.org>
3394 * modulo-sched.c (generate_reg_moves): Skip instructions that
3395 do not set a register and verify no regmoves are created for
3396 !single_set instructions.
3398 2011-09-30 Bernd Schmidt <bernds@codesourcery.com>
3400 * hw-doloop.c (scan_loop): Compute register usage only for non-debug
3403 2011-09-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
3406 * config/arm/iterators.md (qhs_zextenddi_cstr): New.
3407 (qhs_zextenddi_op): New.
3408 * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
3409 * config/arm/predicates.md ("arm_extendqisi_mem_op"):
3410 Distinguish between ARM and Thumb2 states.
3412 2011-09-30 David S. Miller <davem@davemloft.net>
3414 * config/sparc/sparc.opt (VIS2): New option.
3415 * doc/invoke.texi: Document it.
3416 * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
3417 UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
3418 UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
3419 (define_attr type): New insn type 'edgen'.
3420 (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
3421 edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
3422 edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
3424 * niagara.md: Handle edgen.
3425 * niagara2.md: Likewise.
3426 * ultra1_2.md: Likewise.
3427 * ultra3.md: Likewise.
3428 * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
3429 to 0x200 when TARGET_VIS2.
3430 * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
3431 default when targetting capable cpus. TARGET_VIS2 implies
3432 TARGET_VIS, clear and it when TARGET_FPU is disabled.
3433 (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
3434 (sparc_expand_builtin): Fix predicate indexing when builtin returns
3436 (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
3437 * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
3438 __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
3439 __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
3440 __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
3441 * doc/extend.texi: Document new VIS 2.0 builtins.
3443 2011-09-29 Nick Clifton <nickc@redhat.com>
3444 Bernd Schmidt <bernds@codesourcery.com>
3446 * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
3447 * config/frv/frvend.c: Likewise.
3448 * config/frv/frv.c (frv_function_prologue): Move misplaced
3449 CALL_ARG_LOCATION notes back to their proper locations.
3451 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
3454 * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
3455 * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
3457 (avr_legitimate_address_p): Use avr_edump to print log information
3458 filtered by avr_log.
3459 (extra_constraint_Q): Ditto.
3460 (avr_legitimize_address): Ditto.
3461 (avr_rtx_costs): Ditto. Rewrite as wrapper for avr_rtx_costs_1.
3462 (final_prescan_insn): Use avr_log.rtx_costs as filter.
3464 2011-09-29 Richard Sandiford <richard.sandiford@linaro.org>
3466 * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
3467 * config/arm/arm.h (MODES_TIEABLE_P): Use it.
3468 * config/arm/arm.c (arm_modes_tieable_p): New function. Allow
3469 NEON vector and structure modes to be tied.
3471 2011-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
3473 * graphite-scop-detection.c (make_close_phi_nodes_unique): New
3474 forward declaration.
3475 (remove_duplicate_close_phi): Detect and repair creation of
3476 duplicate close-phis for a containing loop.
3478 2011-09-27 Andi Kleen <ak@linux.intel.com>
3480 * gcc.c (get_local_tick). Rename to get_random_number. Read from
3481 /dev/urandom. Add getpid call.
3482 (compare_debug_dump_opt_spec_function): Drop getpid call.
3484 2011-09-26 Andi Kleen <ak@linux.intel.com>
3486 * toplev.c (init_local_tick): Try reading random seed
3489 2011-09-26 Andi Kleen <ak@linux.intel.com>
3491 * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
3492 * lto-streamer.c (lto_get_section_name): Remove crc32_string.
3493 Handle numerical random seed.
3494 * lto-streamer.h (lto_file_decl_data): Change id to
3495 unsigned HOST_WIDE_INT.
3496 * toplev.c (random_seed): Add.
3497 (init_random_seed): Change for numerical random seed.
3498 (get_random_seed): Return as HOST_WIDE_INT.
3499 (set_random_seed): Crc32 existing string.
3500 * toplev.h (get_random_seed): Change to numercal return.
3501 * tree.c (get_file_function_name): Remove CRC. Handle
3502 numerical random seed.
3504 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
3507 * config.gcc (extra_objs): Add avr-log.o for $target in:
3508 avr-*-rtems*, avr-*-*.
3509 * config/avr/t-avr (avr-log.o): New rule to compile...
3510 * config/avr/avr-log.c: ...this new file.
3511 * config/avr/avr.opt (mlog=): New option.
3512 * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
3513 (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
3514 (avr_log_set_avr_log): New prototype.
3515 (avr_log_t): New typedef.
3516 (avr_log): New declaration.
3517 * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
3519 2011-09-29 Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
3521 * expr.c (do_store_flag): Expand vector comparison by
3522 building an appropriate VEC_COND_EXPR.
3523 * c-typeck.c (build_binary_op): Typecheck vector comparisons.
3524 (c_objc_common_truthvalue_conversion): Adjust.
3525 * tree-vect-generic.c (do_compare): Helper function.
3526 (expand_vector_comparison): Check if hardware supports
3527 vector comparison of the given type or expand vector piecewise.
3528 (expand_vector_operation): Treat comparison as binary
3529 operation of vector type.
3530 (expand_vector_operations_1): Adjust.
3532 2011-09-29 Richard Guenther <rguenther@suse.de>
3534 * tree.c (build_opaque_vector_type): Make opaque vectors
3535 variant types of the corresponding non-opaque type. Make
3536 sure to share opaque vector types properly.
3538 2011-09-29 David S. Miller <davem@davemloft.net>
3540 * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
3541 UNSPEC_ARRAY32): New unspec.
3542 (define_attr type): New type 'array'.
3543 (array{8,16,32}<P:mode>_vis): New patterns.
3544 * config/sparc/ultra1_2.md: Add reservations for 'array'.
3545 * config/sparc/ultra3.md: Likewise.
3546 * config/sparc/niagara.md: Likewise.
3547 * config/sparc/niagara2.md: Likewise.
3548 * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
3550 * config/sparc/visintrin.h (__vis_array8, __vis_array16,
3551 __vis_array32): New.
3552 * doc/extend.texi: Document new VIS builtins.
3554 * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
3555 (VIS pixel-compare insn): Just use <gcond:name>.
3557 * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
3558 code iterator used, so just use <code>. There are two mode iterators
3559 so explicitly use <GCM:gcm_name>.
3561 2011-09-29 Iain Sandoe <iains@gcc.gnu.org>
3563 * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
3566 2011-09-28 David S. Miller <davem@davemloft.net>
3568 * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
3569 UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
3570 (UNSPEC_FCMP): New unspec.
3571 (gcond): New code iterator.
3572 (gcond_name): New code attr.
3573 (GCM): New mode iterator.
3574 (gcm_name): New mode attr.
3575 (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
3577 2011-09-28 Oleg Endo <oleg.endo@t-online.de>
3580 * config/sh/sh.md (negdi2): Move expansion into split to
3581 allow more combination options. Add T_REG clobber.
3582 (abssi2): New expander.
3583 (*negdi2, *abssi2, *negabssi2): New insns.
3584 (cneg): Change from insn to insn_and_split. Rename to
3585 negsi_cond. Add alternative for non-SH4.
3587 2011-09-28 Richard Sandiford <richard.sandiford@linaro.org>
3589 * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
3590 (neon_move_hi_quad_<mode>): Likewise.
3591 (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
3593 2011-09-28 Nick Clifton <nickc@redhat.com>
3595 * config/rx/predicates.md (rx_minmax_operand): New predicate.
3596 Accepts immediates and a restricted subset of MEMs.
3597 * config/rx/rx.md (int_modes): New iterator.
3598 (smaxsi3, sminsi3): Delete and replace with...
3599 (smax<int_mode>3, smin<int_mode>3): New patterns.
3600 (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
3602 2011-09-28 Richard Guenther <rguenther@suse.de>
3605 * fold-const.c (try_move_mult_to_index): Handle &a.array the
3606 same as &a.array[0].
3608 2011-09-28 Kai Tietz <ktietz@redhat.com>
3610 * configure.ac: Add test for new section attribute
3611 specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
3612 * config.in: Regenerated.
3613 * configure: Regenerated.
3614 * config/i386/winnt.c (i386_pe_asm_named_section): Emit
3615 new section flag "e" for excluded sections, if supported.
3616 Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
3618 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
3620 * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
3623 2011-09-28 Richard Sandiford <rdsandiford@googlemail.com>
3625 * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
3628 2011-09-27 Sriraman Tallam <tmsriram@google.com>
3630 * output.h (SECTION_EXCLUDE): New macro.
3631 * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
3633 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
3635 * fwprop.c (forward_propagate_and_simplify): After checking
3636 reg/subreg combinations, check whether the modes are the same.
3638 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
3639 Richard Sandiford <rdsandiford@googlemail.com>
3641 * config/mips/mips.c (mips_add_cfa_restore): New function.
3642 (mips16e_save_restore_reg): Use it.
3643 (mips_restore_reg): Likewise. Split double FPRs for
3644 REG_CFA_RESTORE notes.
3646 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
3650 * tree-sra.c (build_ref_for_model): Use the type of the field as
3651 the type of the COMPONENT_REF.
3653 2011-09-27 Jeff Law <law@redhat.com>
3655 * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument. Scale
3656 non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
3657 (find_if_case_1): Use the probability of the THEN clause when
3658 determining if speculation is profitable.
3659 (find_if_case_2): Similarly for the ELSE clause.
3661 2011-09-27 Jakub Jelinek <jakub@redhat.com>
3663 * common.opt: Add -foptimize-strlen option.
3664 * Makefile.in (OBJS): Add tree-ssa-strlen.o.
3665 (tree-sssa-strlen.o): Add dependencies.
3666 * opts.c (default_options_table): Enable -foptimize-strlen
3667 by default at -O2 if not -Os.
3668 * passes.c (init_optimization_passes): Add pass_strlen
3669 after pass_object_sizes.
3670 * timevar.def (TV_TREE_STRLEN): New timevar.
3671 * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
3672 * tree-pass.h (pass_strlen): Declare.
3673 * tree-ssa-strlen.c: New file.
3674 * c-decl.c (merge_decls): If compatible stpcpy prototype
3675 is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
3677 2011-09-27 Tom de Vries <tom@codesourcery.com>
3680 * tree-ssa-tail-merge.c: New file.
3681 (struct same_succ_def): Define.
3682 (same_succ, const_same_succ): New typedef.
3683 (struct bb_cluster_def): Define.
3684 (bb_cluster, const_bb_cluster): New typedef.
3685 (struct aux_bb_info): Define.
3686 (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
3687 (gvn_uses_equal): New function.
3688 (same_succ_print, same_succ_print_traverse, update_dep_bb)
3689 (stmt_update_dep_bb, local_def, same_succ_hash)
3690 (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
3691 (same_succ_reset): New function.
3692 (same_succ_htab, same_succ_edge_flags)
3693 (deleted_bbs, deleted_bb_preds): New var.
3694 (debug_same_succ): New function.
3695 (worklist): New var.
3696 (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
3697 (init_worklist, delete_worklist, delete_basic_block_same_succ)
3698 (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
3699 (print_cluster, debug_cluster, update_rep_bb)
3700 (add_bb_to_cluster, new_cluster, delete_cluster): New function.
3701 (all_clusters): New var.
3702 (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
3703 (merge_clusters, set_cluster): New function.
3704 (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
3705 (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
3706 (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
3707 (find_clusters_1, find_clusters): New function.
3708 (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
3709 (update_bbs): New var.
3710 (apply_clusters): New function.
3711 (update_debug_stmt, update_debug_stmts): New function.
3712 (tail_merge_optimize): New function.
3713 tree-pass.h (tail_merge_optimize): Declare.
3714 * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
3715 * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
3716 (tree-ssa-tail-merge.o): New rule.
3717 * opts.c (default_options_table): Set OPT_ftree_tail_merge by
3718 default at OPT_LEVELS_2_PLUS.
3719 * tree-ssa-sccvn.c (vn_valueize): Move to ...
3720 * tree-ssa-sccvn.h (vn_valueize): Here.
3721 * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
3722 * common.opt (ftree-tail-merge): New switch.
3723 * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
3724 (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
3725 * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
3726 (-ftree-tail-merge, max-tail-merge-comparisons)
3727 (max-tail-merge-iterations): New item.
3729 2011-09-27 Jan Hubicka <jh@suse.cz>
3731 * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3733 2011-09-27 Jan Hubicka <jh@suse.cz>
3735 * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
3736 parameters passed by reference; handle loads from non-SSA scalars
3737 and update comments.
3739 2011-09-27 Bernd Schmidt <bernds@codesourcery.com>
3741 PR rtl-optimization/50249
3742 * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
3743 instead of opnum and type. All callers changed. Remove useless
3745 Search forward for other reloads of the same type for the same operand
3746 using the same register; if any are found, return false.
3747 (reload_regs_reach_end_p): Same argument changes; all callers changed.
3749 2011-09-27 Andi Kleen <ak@linux.intel.com>
3750 Jan Hubicka <jh@suse.cz>
3752 * doc/invoke.texi (ffat-lto-objects): Document.
3753 * toplev.c (compile_file): Do not output assembly when doing slim lto;
3754 Output __gnu_slim_lto when doing slim lto.
3755 * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
3756 (cgraph_optimize): Return early when doing slim lto.
3757 * opts.c (finish_options): Complain about lack of linker plugin
3758 when doing slim lto.
3759 * common.opt (ffat-lto-objects): New.
3761 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3763 * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3764 between signed and unsigned.
3766 2011-09-27 Ira Rosen <ira.rosen@linaro.org>
3768 * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3770 (vectorizable_type_promotion): Likewise.
3771 (vect_analyze_stmt): Call vectorizable_type_demotion and
3772 vectorizable_type_promotion for basic blocks.
3773 (supportable_widening_operation): Don't assume loop vectorization.
3774 * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
3775 basic blocks. Update vectorization factor for basic block
3777 (vect_analyze_slp_instance): Allow multiple types for basic block
3778 vectorization. Recheck unrolling factor after construction of SLP
3781 2011-09-27 Richard Guenther <rguenther@suse.de>
3783 * tree-object-size.c (compute_object_sizes): Fix dumping of
3786 2011-09-27 Richard Guenther <rguenther@suse.de>
3788 PR tree-optimization/50363
3789 * tree-ssa-pre.c (create_expression_by_pieces): Handle
3790 pointer conversions in POINTER_PLUS_EXPRs properly.
3792 2011-09-27 Richard Sandiford <richard.sandiford@linaro.org>
3794 * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
3795 (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
3796 (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
3797 (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
3798 that produce subreg moves. Define using VQX iterators.
3800 2011-09-27 Georg-Johann Lay <avr@gjlay.de>
3802 * config/avr/avr.md (ashrqi3): Split alternative "n"
3803 into its remaining parts C03, C04, C05, C06, C07 and describe
3804 impact in CC by attribute "cc" appropriately.
3805 * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
3808 2011-09-27 Jakub Jelinek <jakub@redhat.com>
3810 * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
3811 from 3 x MAX_MACHINE_MODE.
3812 (CONSTM1_RTX): Define.
3813 * emit-rtl.c (const_tiny_rtx): Change into array of
3814 4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
3815 (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
3817 (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
3818 MODE_VECTOR_INT modes.
3819 * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
3820 Optimize if one operand is CONSTM1_RTX.
3821 * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
3824 2011-09-26 David S. Miller <davem@davemloft.net>
3826 * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
3827 (fcmp{le,ne,gt,eq}{16,32}): Likewise.
3828 * config/sparc/visintrin.h: Update edge and pixel-compare
3829 intrinsics to return 'long' instead of 'int'.
3830 * doc/extend.texi: Update documentation to match.
3831 * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
3832 flat, allow any instruction. Otherwise, when V9 allow parallels
3833 which consist only of sets to registers outside of %o0 to %o5.
3834 (sparc_vis_init_builtins): Update VIS builtin types for edge
3837 * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
3838 is enabled, mark %gsr as global.
3839 * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
3840 (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
3842 * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
3843 which will now define __VIS and __VIS__ when -mvis is enabled.
3844 * config/sparc/t-sparc: Likewise.
3845 * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
3846 and add t-sparc to tmake_file for all sparc targets.
3847 * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
3848 * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
3850 * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
3851 builtins for VIS vector addition and subtraction.
3852 * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
3853 __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
3854 __vis_fpsub32, __vis_fpsub32s): New.
3855 * doc/extend.texi: Document new VIS intrinsics.
3857 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3859 * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
3860 * config/avr/avr.c (avr_out_compare): Print shorter sequence for
3861 EQ/NE comparisons against +/-1 in the case of unused-after,
3864 2011-09-26 Jakub Jelinek <jakub@redhat.com>
3866 * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3867 gctx.into_ssa after push_gimplify_context.
3869 * gimple.c (gimple_build_call_valist): New function.
3870 * gimple.h (gimple_build_call_valist): New prototype.
3871 * tree-ssa-propagate.c (finish_update_gimple_call): New function.
3872 (update_gimple_call): Likewise.
3873 (update_call_from_tree): Use finish_update_gimple_call.
3874 * tree-ssa-propagate.h (update_gimple_call): New prototype.
3876 2011-09-26 Richard Guenther <rguenther@suse.de>
3878 PR tree-optimization/50472
3879 * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3880 volatile references.
3882 2011-09-26 Bingfeng Mei <bmei@broadcom.com>
3884 * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3885 * target.def: (addr_space_subset_p): Likewise.
3887 2011-09-26 Tom de Vries <tom@codesourcery.com>
3889 * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
3890 * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
3891 * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
3894 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3897 * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
3898 * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
3899 output_reload_insisf.
3900 (adjust_len): Set default to "no".
3901 Remove alternative "yes". Add alternatives: "mov8", "mov16",
3902 "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
3903 "lshrhi", "ashlsi, "ashrsi", "lshrsi".
3904 (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
3905 *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
3906 *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
3907 *lshrsi3_const): Set attribute "adjust_len".
3908 * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
3909 (output_movsisf): Don't pass insn to output_reload_insisf.
3910 (adjust_insn_length): Handle new alternatives to adjust_len.
3911 Remove handling of ADJUST_LEN_YES. Clean-up code.
3913 2011-09-26 Eric Botcazou <ebotcazou@adacore.com>
3915 * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
3916 may_trap_p to detect loads that may trap of fault.
3918 2011-09-26 Georg-Johann Lay <avr@gjlay.de>
3920 * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
3921 * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
3922 (*reload_inhi): Use it. Adapt call to output_reload_inhi to new
3924 (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
3925 * config/avr/avr.c: Rename output_reload_insisf_1 to
3926 output_reload_in_const.
3927 (avr_popcount_each_byte): Handle SFmode, too.
3928 (output_reload_in_const): Change so it can handle HI loads, too.
3929 Use avr_popcount_each_byte to work out if scratch register must be
3931 (output_reload_inhi): Rewrite using output_reload_in_const and...
3932 (output_movhi): ...use it to print constants' loads.
3933 (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
3935 2011-09-25 David S. Miller <davem@davemloft.net>
3937 * config/sparc/constraints.md (C, P, Z): New constraints for
3938 const_doube, const_int, and const_vector "all ones" values.
3939 Make unused constraint letters comment match reality.
3940 * config/sparc/predicates.md (const_all_ones_operand,
3941 register_or_zero_or_all_ones_operand): New predicates.
3942 * config/sparc/sparc.c (sparc_expand_move): Allow all ones
3943 as well as zero constants when VIS.
3944 (sparc_legitimate_constant_p): Likewise.
3945 * config/sparc/sparc.md (movsi_insn): Add fones alternative.
3946 (movsf_insn): Likewise
3947 (movdi_insn_sp64): Add fone alternative.
3948 (movdf_insn_sp32_v9): Likewise.
3949 (movdf_insn_sp64): Likewise.
3951 * configure.ac: Add feature check to make sure the assembler
3952 supports the FMAF, HPC, and VIS 3.0 instructions found on
3953 Niagara-3 and later cpus.
3954 * configure: Rebuild.