OSDN Git Service

22b9514fc4db6bc3e0380abe3b6884c7c7f42f20
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-25  H.J. Lu  <hongjiu.lu@intel.com>
2
3         * config/i386/mmx.md (*mmx_maskmovq): Replace :SI with :P and
4         remove "&& !TARGET_64BIT"
5         (*mmx_maskmovq_rex): Removed.
6
7 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
8
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.
12
13 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
14
15         * dwarf2out.c (add_gnat_descriptive_type_attribute): Temporarily
16         suppress debug info for the parent type.
17
18 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
19
20         * config/ia64/ia64.c (ia64_profile_hook): Fix thinko.
21
22 2011-10-25  Richard Henderson  <rth@redhat.com>
23
24         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Remove.
25         (vec_extract_even<mode>, vec_extract_odd<mode>): Remove.
26
27         * config/rs6000/altivec.md (vec_extract_evenv8hi,
28         vec_extract_evenv16qi, vec_extract_oddv4si,
29         vec_extract_oddv4sf): Remove.
30
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.
38
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.
46         * optabs.h: Update.
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.
53
54         * target.def (vec_perm_const_ok): Change parameters to mode and
55         array of indicies.
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.
73
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.
77
78 2011-10-25  Mike Stump  <mikestump@comcast.net>
79
80         * reload.c (regno_clobbered_p): Fix typo.
81
82 2011-10-25  Dodji Seketeli  <dodji@redhat.com>
83
84         * input.c (expand_location): Rewrite using
85         linemap_resolve_location and linemap_expand_location.  Add a
86         comment.
87
88 2011-10-25  Jakub Jelinek  <jakub@redhat.com>
89
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.
101
102 2011-10-25  Kai Tietz  <ktietz@redhat.com>
103
104         * config/i386/i386.c (ix86_frame_pointer_required): Require
105         frame-pointer, if setjmp is used for 32-bit ms-abi.
106
107 2011-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
108
109         * builtins.c (set_builtin_user_assembler_name): Remove extra
110         newline added in October 11th, 2011 change.
111
112 2011-10-24  David S. Miller  <davem@davemloft.net>
113
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.
126
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.
129
130         * config/sparc/sparc.md (cpu_feature, enabled): New attributes.
131         (*movsi_insn_novis3, *movsi_insn_vis3): Consolidate into one pattern
132         called *movsi_insn.
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
144         *movdf_insn_sp64.
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.
158
159 2011-10-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
160
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
166         length computation.
167         (handle_builtin_strcpy): Mark earlier strinfo elements also for
168         delayed length computation.
169
170 2011-10-24  Georg-Johann Lay  <avr@gjlay.de>
171
172         PR target/50820
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.
176
177 2011-10-24  Anatoly Sokolov  <aesok@post.ru>
178             Georg-Johann Lay  <avr@gjlay.de>
179
180         PR target/49824
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.
185
186 2011-10-24  Richard Guenther  <rguenther@suse.de>
187
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.
201
202 2011-10-24  Julian Brown  <julian@codesourcery.com>
203
204         * config/m68k/m68k.c (notice_update_cc): Tighten condition for
205         setting CC_REVERSED for FP comparisons.  
206
207 2011-10-24  Richard Guenther  <rguenther@suse.de>
208
209         PR tree-optimization/50838
210         * tree-data-ref.c (dr_analyze_indices): Properly canonicalize
211         a MEM_REF base if we change it.
212
213 2011-10-24  Bernd Schmidt  <bernds@codesourcery.com>
214
215         PR bootstrap/50836
216         * rtlanal.c: Swap includes of "hard-reg-set.h" and "rtl.h".
217
218         PR rtl-optimization/50833
219         * function.c (thread_prologue_and_epilogue_insns): Expect the
220         return insn optimization only if optimize.
221
222 2011-10-24  Georg-Johann Lay  <avr@gjlay.de>
223
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
227         overridden later.
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.
236
237 2011-10-24  Ira Rosen  <ira.rosen@linaro.org>
238
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.
242
243 2011-10-23  David S. Miller  <davem@davemloft.net>
244
245         * config/sparc/sparc.c (sparc_option_override): Remove -mv8plus
246         cpu adjustment.
247         * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit,
248         append -mcpu=v9 when -mv8plus is given.
249
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
259         FP_REGS.
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
265         guard.
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.
290
291         * config/sparc/sparc.c (sparc_split_regreg_legitimate): New
292         function.
293         * config/sparc/sparc-protos.h (sparc_split_regreg_legitimate):
294         Declare it.
295         * config/sparc/sparc.md (DImode reg/reg split): Use it.
296         (DFmode reg/reg split): Likewise.
297
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.
301
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.
306
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.
321
322 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
323
324         PR c++/50841
325         Revert:
326         2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
327
328         PR c++/50810
329         * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
330
331 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
332
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.
339
340 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
341
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
354         attributes.
355         (*avx2_gatherdi<mode>): Ditto.
356         (*avx2_gatherdi<mode>256): Ditto.
357         (VI48_AVX2): Remove mode iterator.
358         (gthrlastfp): Remove mode attribute.
359
360 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
361
362         PR c++/50810
363         * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
364
365 2011-10-23  Tom de Vries  <tom@codesourcery.com>
366
367         PR tree-optimization/50763
368         * tree-ssa-tail-merge.c (same_succ_flush_bb): New function, factored out
369         of ...
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
379         argument.
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.
386
387 2011-10-23  Eric Botcazou  <ebotcazou@adacore.com>
388
389         * fold-const.c (invert_tree_comparison): Always invert EQ_EXPR/NE_EXPR.
390
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.
394
395 2011-10-23  Jan Hubicka  <jh@suse.cz>
396
397         * ipa-inline.c (estimate_badness): Scale up and handle overflows.
398
399 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
400
401         PR target/50788
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.
410
411 2011-10-23  Ira Rosen  <ira.rosen@linaro.org>
412
413         PR tree-optimization/50819
414         * tree-vectorizer.h (vect_analyze_data_ref_dependences): Remove
415         the last argument.
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.
428
429 2011-10-22  David S. Miller  <davem@davemloft.net>
430
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.
435
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.
440
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.
444
445 2011-10-21  Paul Brook  <paul@codesourcery.com>
446
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.
450
451 2011-10-21  Jakub Jelinek  <jakub@redhat.com>
452
453         PR target/50813
454         * config/i386/i386.c (expand_vec_perm_even_odd_1): Handle
455         V4DImode and V8SImode for !TARGET_AVX2.
456
457 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
458
459         PR bootstrap/50825
460         * sched-deps.c (add_dependence): If not doing predication, promote
461         REG_DEP_CONTROL to REG_DEP_ANTI.
462
463 2011-10-21  Georg-Johann Lay  <avr@gjlay.de>
464
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
471         better distinction.
472
473 2011-10-21  Roland Stigge  <stigge@antcom.de>
474
475         PR translation/47064
476         * params.def: Fix typo "compilatoin" -> "compilation".
477
478 2011-10-21  H.J. Lu  <hongjiu.lu@intel.com>
479             Kirill Yukhin  <kirill.yukhin@intel.com>
480
481         PR target/50740
482         * config/i386/driver-i386.c (host_detect_local_cpu): Do cpuid 7 only
483         if max_level allows that.
484
485 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
486
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
517         REG_DEP_CONTROL.
518         (dep_spec_p): If DO_PREDICATION, REG_DEP_CONTROL is speculative.
519         (reg_pending_control_uses, control_dependency_cache): New static
520         variables.
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
546         REG_DEP_CONTROL.
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
565         schedule.
566
567 2011-10-21  Georg-Johann Lay  <avr@gjlay.de>
568
569         PR target/50820
570         * config/avr/libgcc.S (__EIND__): New define to 0x3C.
571         (__tablejump__): Consistently use EIND for indirect jump/call.
572         (__tablejump_elpm__): Ditto.
573
574 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
575
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_):
579         Likewise.
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
586         static functions.
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
592         count_unit_reqs.
593         (c6x_reorg): Add reg notes problem, and call df_analyze.
594         * Makefile.in ($(out_object_file)): Depend on regrename.h.
595
596 2011-10-21  Kai Tietz  <ktietz@redhat.com>
597
598         * fold-const.c (simple_operand_p_2): Handle integral
599         casts from boolean-operands.
600
601 2011-10-21  Jan Hubicka  <jh@suse.cz>
602
603         * cgraph.c (dump_cgraph_node): Dump alias flag.
604         * cgraphunit.c (handle_alias_pairs): Handle weakrefs with
605         no destination.
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.
609
610 2011-10-21  Andrew Stubbs  <ams@codesourcery.com>
611
612         PR target/50809
613         * config/arm/driver-arm.c (vendors): Make static.
614
615 2011-10-21  Uros Bizjak  <ubizjak@gmail.com>
616
617         * config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
618         (ix86_emit_swsqrtsf): Force a into register.
619
620 2011-10-20  Mike Stump  <mikestump@comcast.net>
621
622         * regcprop.c (copyprop_hardreg_forward_1): Update recog_data
623         after validate_change wipes it out.
624
625 2011-10-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
626
627         * config/spu/spu.md ("vec_permv16qi"): Reduce selector modulo 32
628         before using the shufb instruction.
629
630 2011-10-20  Kirill Yukhin  <kirill.yukhin@intel.com>
631
632         PR target/50766
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.
638
639 2011-10-20  Richard Henderson  <rth@redhat.com>
640
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.
647
648 2011-10-20  Sergey Ostanevich  <sergos.gnu@gmail.com>
649
650         PR target/50572
651         * config/i386/i386.c (processor_target_table): Change Atom
652         align_loops_max_skip to 15.
653
654 2011-10-20  Richard Henderson  <rth@redhat.com>
655
656         * target.def (builtin_vec_perm): Remove.
657         * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
658
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.
669
670         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): Remove.
671         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
672
673         * config/spu/spu.c (spu_builtin_vec_perm): Remove.
674         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
675
676 2011-10-20  Uros Bizjak  <ubizjak@gmail.com>
677
678         PR target/47989
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
684         -ffast-math.
685
686 2011-10-20  Dodji Seketeli  <dodji@redhat.com>
687
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.
691
692         PR other/50659
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.
696
697 2011-10-19  Jan Hubicka  <jh@suse.cz>
698
699         * ipa-inline.c (inline_small_functions): Always update all calles after
700         inlining.
701
702 2011-10-19  Jan Hubicka  <jh@suse.cz>
703
704         PR bootstrap/50709
705         * ipa-inline.c (inline_small_functions): Fix checking code to not make
706         effect on fibheap stability.
707
708 2011-10-20  Maxim Kuvyrkov  <maxim@codesourcery.com>
709
710         * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
711
712 2011-10-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
713
714         PR target/50106
715         * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
716         reg size from 1-3.
717
718 2011-10-20  Richard Guenther  <rguenther@suse.de>
719
720         * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
721         and rotates to the set of expensive operations.
722
723 2011-10-19  David S. Miller  <davem@davemloft.net>
724
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.
731
732 2011-10-20  Dehao Chen  <dehao@google.com>
733
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
738
739 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
740
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.
749
750         PR middle-end/50754
751         * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
752         VEC_PERM_EXPR.
753
754 2011-10-19  Bernd Schmidt  <bernds@codesourcery.com>
755
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
776         nonnull.
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.
782
783 2011-10-19  Tom de Vries  <tom@codesourcery.com>
784
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.
790
791 2011-10-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
792
793         PR bootstrap/50777
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.
800
801 2011-10-19  Alexandre Oliva  <aoliva@redhat.com>
802
803         PR debug/49310
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.
816         (dv_as_rtx): New.
817         (dv_onepart_p): Return a onepart_enum_t.
818         (onepart_pool): New.
819         (dv_pool): Remove.
820         (dv_from_rtx): New.
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
829         cselib locs.
830         (variable_union): Use onepart field, adjust access to offset.
831         (NO_LOC_P): New.
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
850         and value chains.
851         (dataflow_set_remove_mem_locs): Likewise.  Use VAR_LOC_FROM.
852         (variable_different_p): Use onepart field.  Move onepart test out
853         of the loop.
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
867         access to offset.
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
897         from dropped_values.
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
907         if HAVE_window_save.
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.
912
913 2011-10-19  Georg-Johann Lay  <avr@gjlay.de>
914
915         PR target/50447
916         * config/avr/avr.md (cc): New alternative out_plus_noclobber.
917         (adjust_len): Ditto.
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.
931
932 2011-10-19  Richard Guenther  <rguenther@suse.de>
933
934         PR middle-end/50780
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.
939
940 2011-10-19  Roland Stigge  <stigge@antcom.de>
941
942         PR translation/48638
943         * plugin.c (add_new_plugin): Fix typo in fatal_error message.
944
945 2011-10-19  Roland Stigge  <stigge@antcom.de>
946
947         PR translation/49517
948         * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
949
950 2011-10-19  Richard Guenther  <rguenther@suse.de>
951
952         PR middle-end/50768
953         * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
954
955 2011-10-19  Andrey Belevantsev  <abel@ispras.ru>
956
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.
961
962 2011-10-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
963
964         PR target/50310
965         * config/spu/spu.c (spu_emit_vector_compare): Support unordered
966         floating-point comparisons.
967
968 2011-10-19  Jan Hubicka  <jh@suse.cz>
969
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.
974
975 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
976
977         * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
978         second argument instead of mode.
979
980 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
981
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
987         permutations.
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
991         garbage.
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
997         vector modes.
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.
1001
1002 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1003
1004         * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
1005         before exiting.
1006
1007 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1008
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.
1014
1015 2011-10-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1016
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.
1025
1026 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
1027
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.
1032
1033 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1034
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.
1046
1047 2011-10-18  Alexander Monakov  <amonakov@ispras.ru>
1048
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.
1054
1055 2011-10-18  Richard Guenther  <rguenther@suse.de>
1056
1057         PR tree-optimization/50767
1058         * tree-ssa-pre.c (create_expression_by_pieces): Update the
1059         folded statement.
1060
1061 2011-10-18  Julian Brown  <julian@codesourcery.com>
1062
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.
1067
1068 2011-10-18  Ira Rosen  <ira.rosen@linaro.org>
1069
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
1099         widening shifts.
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>):
1107         Likewise.
1108         * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
1109         New.
1110         * config/arm/iterators.md (V_innermode): New.
1111         * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
1112         for widening shift.
1113
1114 2011-10-18  Richard Guenther  <rguenther@suse.de>
1115
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
1125         field.
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
1132         to NONLOCAL.
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.
1141
1142 2011-10-18  Tom de Vries  <tom@codesourcery.com>
1143
1144         PR tree-optimization/50672
1145         * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
1146         factored out of ...
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.
1154
1155 2011-10-18  Richard Guenther  <rguenther@suse.de>
1156
1157         PR middle-end/50716
1158         * expr.c (get_object_or_type_alignment): New function.
1159         (expand_assignment): Use it.
1160         (expand_expr_real_1): Likewise.
1161
1162 2011-10-18  Dodji Seketeli  <dodji@redhat.com>
1163
1164         PR bootstrap/50760
1165         * input.c (dump_line_table_statistics): Use long, not size_t.
1166
1167 2011-10-17  Eric Botcazou  <ebotcazou@adacore.com>
1168
1169         * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
1170
1171 2011-10-17  Simon Baldwin  <simonb@google.com>
1172             Ian Lance Taylor  <iant@google.com>
1173
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
1180         use i386/t-djgpp.
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.
1220
1221 2011-10-17  Richard Henderson  <rth@redhat.com>
1222
1223         * config/sparc/sparc.md: Use register_or_zero_operand where rJ
1224         is the constraint.
1225
1226         * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
1227         patterns.
1228         * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
1229         * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
1230
1231 2011-10-17  David S. Miller  <davem@davemloft.net>
1232
1233         * config/sparc/sparc-modes.def: Add single entry vector modes for
1234         DImode and SImode.
1235         * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
1236         mode iterators.
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.
1245         (subsi3): Likewise.
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
1282         with...
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.
1304
1305 2011-10-17  Kai Tietz  <ktietz@redhat.com>
1306
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.
1312
1313 2011-10-17  Andi Kleen  <ak@linux.intel.com>
1314
1315         * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
1316
1317 2011-10-17  Georg-Johann Lay  <avr@gjlay.de>
1318
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
1324         mcu_mega attribute.
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.
1331         (jump): 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
1338         RTX pattern.
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.
1345
1346 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
1347
1348         PR c++/50757
1349         * doc/invoke.texi ([Wnonnull]): Update.
1350
1351 2011-10-17  Richard Henderson  <rth@redhat.com>
1352
1353         PR 50746
1354         * optabs.c (expand_vec_perm_expr): Fix indexing error.
1355
1356 2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
1357
1358         * configure.ac: Display `yes' if the SystemTap header has been found.
1359         * configure: Regenerate.
1360
1361 2011-10-08  Andi Kleen  <ak@linux.intel.com>
1362
1363         PR other/50636
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.
1370
1371 2011-10-17  Richard Guenther  <rguenther@suse.de>
1372
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.
1377
1378 2011-10-15  Tom Tromey  <tromey@redhat.com>
1379             Dodji Seketeli  <dodji@redhat.com>
1380
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.
1393
1394 2011-10-15  Tom Tromey  <tromey@redhat.com>
1395             Dodji Seketeli  <dodji@redhat.com>
1396
1397         * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New macros.
1398         (num_expanded_macros_counter, num_macro_tokens_counter): Declare
1399         new counters.
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.
1403
1404 2011-10-15  Tom Tromey  <tromey@redhat.com>
1405             Dodji Seketeli  <dodji@redhat.com>
1406
1407         * doc/cppopts.texi: Document -fdebug-cpp.
1408         * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor options.
1409
1410 2011-10-15  Tom Tromey  <tromey@redhat.com>
1411             Dodji Seketeli  <dodji@redhat.com>
1412
1413         * gcc/diagnostic.h (diagnostic_report_current_module): Add a
1414         location parameter.
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
1426         new function.
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.
1430
1431 2011-10-15  Tom Tromey  <tromey@redhat.com>
1432             Dodji Seketeli  <dodji@redhat.com>
1433
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.
1437
1438 2011-10-15  Tom Tromey  <tromey@redhat>
1439             Dodji Seketeli  <dodji@redhat.com>
1440
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.
1450
1451
1452 2011-10-08  Andi Kleen  <ak@linux.intel.com>
1453
1454         * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
1455
1456 2011-10-13  Andi Kleen  <ak@linux.intel.com>
1457
1458         * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
1459
1460 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
1461
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
1465         pattern statements.
1466
1467 2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>
1468
1469         PR rtl-optimization/50615
1470         * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
1471
1472 2011-10-16  Jakub Jelinek  <jakub@redhat.com>
1473
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.
1480
1481 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
1482
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
1485         interleaving chain.
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.
1498
1499 2011-10-15  Jan Hubicka  <jh@suse.cz>
1500
1501         PR target/48668
1502         PR target/50689
1503         * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
1504         after function body.
1505
1506 2011-10-15  Richard Henderson  <rth@redhat.com>
1507
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,
1513         not the builtin.
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.
1517
1518 2011-10-15  Alan Modra  <amodra@gmail.com>
1519
1520         PR bootstrap/50738
1521         * ifcvt.c (dead_or_predicable): Revert accidental commit with
1522         HAVE_simple_return test.
1523
1524 2011-10-15  Alan Modra  <amodra@gmail.com>
1525
1526         * ifcvt.c (dead_or_predicable): Disable if-conversion when
1527         doing so is likely to kill a shrink-wrapping opportunity.
1528
1529         PR rtl-optimization/49941
1530         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
1531
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.
1538
1539 2011-10-14  David S. Miller  <davem@davemloft.net>
1540
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
1555         cpu is at least v9.
1556
1557 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
1558
1559         PR target/49263
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
1569         asm output.
1570         (*andsi_compact): Reorder alternatives so that K08 is considered first.
1571
1572 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
1573
1574         PR target/50354
1575         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
1576         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
1577
1578 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
1579
1580         * invoke.texi (AVR Options): Avoid \leq{}.
1581
1582 2011-10-14  Kai Tietz  <ktietz@redhat.com>
1583
1584         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
1585         transformation the operands have compatible types.
1586
1587 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1588
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.
1600
1601 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
1602
1603         * config/i386/i386.c (atom_cost): Changed cost for loading
1604         QImode using movzbl.
1605
1606 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1607
1608         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
1609         change on October 11th, 2011.
1610
1611 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1612
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.
1617
1618 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
1619
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.
1623
1624 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
1625
1626         PR target/46278
1627         * doc/invoke.texi (AVR Options): Document -mstrict-X.
1628
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.
1638
1639 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1640
1641         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
1642         of VI_128.
1643
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.
1647
1648 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1649
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.
1654
1655 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1656
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
1664         and LDREXD.
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.
1697
1698 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1699
1700         PR target/48126
1701         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1702
1703 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1704
1705         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1706
1707 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1708
1709         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1710
1711 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1712
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.
1715
1716 2011-10-14  Richard Guenther  <rguenther@suse.de>
1717
1718         PR tree-optimization/50723
1719         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1720
1721 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1722
1723         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1724         objc/objc-map.c.
1725
1726 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1727
1728         PR c++/17212
1729         * doc/invoke.texi ([Wformat-zero-length]): Update.
1730
1731 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1732
1733         PR bootstrap/50699
1734         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1735         build for powerpc targets.  (darwin_patch_builtins): Only build for
1736         powerpc targets.
1737
1738 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1739
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.
1747
1748 2011-10-13  David S. Miller  <davem@davemloft.net>
1749
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.
1755
1756 2011-10-13  Richard Henderson  <rth@redhat.com>
1757
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.
1766
1767 2011-10-13  Richard Henderson  <rth@redhat.com>
1768
1769         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1770
1771         * config/rs6000/spu.md (vec_permv16qi): New pattern.
1772
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.
1777
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.
1783
1784         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1785         test for vector splat.
1786
1787 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1788
1789         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1790
1791 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1792             Richard Guenther  <rguenther@suse.de>
1793
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.
1796
1797 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1798
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.
1805
1806 2011-10-13  Lawrence Crowl  <crowl@google.com>
1807             Diego Novillo  <dnovillo@google.com>
1808
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.
1813
1814 2011-10-13  Gabriel Charette  <gchare@google.com>
1815             Diego Novillo  <dnovillo@google.com>
1816
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.
1823
1824 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
1825
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.
1830
1831 2011-10-13  Richard Guenther  <rguenther@suse.de>
1832
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.
1837
1838 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1839
1840         * function.c (gimplify_parameters): Set number of arguments of call to
1841         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1842
1843 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1844
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.
1849
1850 2011-10-13  Richard Guenther  <rguenther@suse.de>
1851
1852         PR tree-optimization/50698
1853         * tree-data-ref.c (split_constant_offset_1): Also process
1854         offsets of &MEM.
1855
1856 2011-10-12  David S. Miller  <davem@davemloft.net>
1857
1858         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1859         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1860         unspecs.
1861         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1862         of a vec_concat.
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.
1874
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.
1879
1880 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
1881
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.
1887
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.
1891
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
1904         with TARGET_AVX2.
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
1912         4 new operands.
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.
1921
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.
1933
1934 2011-10-12  Kai Tietz  <ktietz@redhat.com>
1935
1936         * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1937
1938 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
1939
1940         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1941
1942 2011-10-12  Richard Guenther  <rguenther@suse.de>
1943
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
1948         that candidate.
1949
1950 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
1951
1952         PR tree-optimization/50189
1953         * tree-vrp.c (extract_range_from_assert): Use the type of
1954         the variable, not the limit.
1955
1956 2011-10-12  Richard Guenther  <rguenther@suse.de>
1957
1958         PR tree-optimization/50700
1959         * tree-object-size.c (addr_object_size): Simplify and treat
1960         MEM_REF bases consistently.
1961
1962 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
1963
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.
1967
1968 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
1969
1970         PR c/50565
1971         * convert.c (convert_to_integer): Do not narrow operands of
1972         pointer subtraction.
1973
1974 2011-10-12  Nick Clifton  <nickc@redhat.com>
1975
1976         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
1977         emit a .eabi_attribute assembler directive, possibly with a
1978         comment attached.
1979         * config/arm/arm.c (arm_file_start): Use the new macro.
1980         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1981
1982 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
1983
1984         PR target/49939
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.
1990
1991 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
1992
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.
2001
2002 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2003
2004         PR target/49965
2005         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
2006         (mov<F:mode>cc): Likewise.
2007
2008 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2009
2010         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
2011
2012 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2013
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.
2137
2138 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2139
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.
2143
2144 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
2145
2146         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
2147         prototype.
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.
2159
2160 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
2161
2162         PR target/50447
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
2168         CC_OUT_PLUS.
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.
2172
2173 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
2174
2175         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
2176         the extra break.
2177
2178 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2179
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
2183         vector operation.
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.
2188
2189 2011-10-11  Richard Guenther  <rguenther@suse.de>
2190
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
2195         of PHI args.
2196
2197 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
2198
2199         * modulo-sched.c: Fix comment typo.  Mention the possibility
2200         of using scheduling windows of II+1 cycles.
2201
2202 2011-10-11  Tristan Gingold  <gingold@adacore.com>
2203
2204         * doc/invoke.texi (C Dialect Options): Document
2205         -fallow-parameterless-variadic-functions.
2206         * c-parser.c (c_parser_parms_list_declarator): Handle it.
2207
2208 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2209
2210         * config/avr/avr.c (avr_option_override): Set flag_omit_frame_pointer
2211         to 0 if frame pointer is needed for unwinding.
2212
2213 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
2214
2215         PR bootstrap/50665
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.
2219
2220 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
2221
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.
2225
2226 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2227
2228         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
2229         !AVR_HAVE_JMP_CALL.
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.
2234
2235 2011-10-10  Richard Henderson  <rth@redhat.com>
2236
2237         * doc/md.texi (vec_perm_const): Fix typo in cindex.
2238
2239 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
2240             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
2241
2242         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
2243
2244 2011-10-10  Richard Guenther  <rguenther@suse.de>
2245
2246         PR middle-end/50389
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.
2250
2251 2011-10-10  Richard Guenther  <rguenther@suse.de>
2252
2253         * ipa-split.c (pass_split_functions): Add verification TODOs.
2254         (pass_feedback_split_functions): Likewise.
2255
2256 2011-10-10  Richard Guenther  <rguenther@suse.de>
2257
2258         PR middle-end/50195
2259         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
2260         only when optimizing.
2261
2262 2011-10-10  Nick Clifton  <nickc@redhat.com>
2263
2264         PR middle-end/49801
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.
2269
2270 2011-10-10  Michael Matz  <matz@suse.de>
2271
2272         PR middle-end/50638
2273         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
2274
2275 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2276
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
2290         scheduled.
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.
2297
2298 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2299
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.
2328
2329 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2330
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
2340         asap values.
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.
2364         Use ps_rtl_insn.
2365         (ps_insn_advance_column): Adjust for above field changes.
2366         (add_node_to_ps): Remove node parameter.  Update call to
2367         create_ps_insn.
2368         (ps_has_conflicts): Use ps_rtl_insn.
2369         (ps_add_node_check_conflicts): Replace node parameter than an id.
2370
2371 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2372
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.
2378
2379 2011-10-10  Matthias Klose <doko@ubuntu.com>
2380
2381         * common/config/m32c: Remove empty directory.
2382
2383 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2384
2385         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
2386
2387 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2388
2389         PR target/50652
2390         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
2391         atmega164a to 0x100.
2392
2393 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
2394
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.
2397
2398 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
2399
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
2403         pattern statements.
2404         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
2405
2406 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
2407
2408         * system.h: Commit forgotten hunk in previous patch.
2409         (OUTPUT_ADDR_CONST_EXTRA): Poison.
2410
2411 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
2412
2413         PR libobjc/50428
2414         * doc/objc.texi (Garbage Collection): Updated example to protect
2415         +initialize against execution in subclasses.
2416
2417 2011-10-07  Richard Henderson  <rth@redhat.com>
2418
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.
2422
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.
2435
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>.
2441
2442 2011-10-07  Richard Henderson  <rth@redhat.com>
2443
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.
2447
2448 2011-10-07  Richard Henderson  <rth@redhat.com>
2449
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.
2458
2459 2011-10-07  David S. Miller  <davem@davemloft.net>
2460
2461         PR 50655
2462         * configure.ac: Add .register directives to VIS3 test.
2463         * configure: Regenerate.
2464
2465 2011-10-07  Richard Henderson  <rth@redhat.com>
2466
2467         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
2468
2469 2011-10-07  Richard Henderson  <rth@redhat.com>
2470
2471         PR 49752
2472         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
2473
2474 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
2475
2476         * config/arm/predicates.md (shift_amount_operand): Remove constant
2477         range check.
2478         (shift_operator): Check range of constants for all shift operators.
2479
2480 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2481
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.
2486
2487 2011-10-07  Tom de Vries  <tom@codesourcery.com>
2488
2489         PR middle-end/50527
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
2492         throw.
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
2506         DEF_BUILTIN_STUB.
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.
2521
2522 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
2523
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.
2532
2533 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
2534
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.
2542
2543 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2544
2545         * config/s390/s390.md (DWH, dwh): New mode macros.
2546         ("umulsidi3"): Extend to support "umulditi3" as well.
2547
2548 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
2549             H.J. Lu  <hongjiu.lu@intel.com>
2550
2551         PR target/50603
2552         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
2553         integer PLUS RTX to a register to improve address combine.
2554
2555 2011-10-06  Richard Henderson  <rth@redhat.com>
2556
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.
2561
2562 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
2563
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.
2573
2574 2011-10-06  David S. Miller  <davem@davemloft.net>
2575
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.
2585
2586 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2587
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.
2590
2591 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2592
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
2597         function.
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.
2605
2606 2001-10-06  Richard Henderson  <rth@redhat.com>
2607
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.
2614
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.
2620
2621 2001-10-06  Richard Henderson  <rth@redhat.com>
2622
2623         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
2624         mask operand.  Tidy the code.
2625
2626 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2627
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.
2632
2633         PR tree-optimization/49279
2634         * tree-ssa-structalias.c (find_func_aliases): Don't handle
2635         CAST_RESTRICT.
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.
2640
2641 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2642
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.
2646
2647 2011-10-06  Michael Matz  <matz@suse.de>
2648
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
2663         add_referenced_var.
2664
2665 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2666
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):
2672         Likewise.
2673
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.
2678
2679 2011-10-06  Richard Guenther  <rguenther@suse.de>
2680
2681         * tree-vect-generic.c (vector_element): Look at previous
2682         generated results.
2683
2684 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
2685
2686         PR target/39950
2687         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2688         __powerpc__, __PPC__, __unix__.
2689
2690 2011-10-06  Michael Matz  <matz@suse.de>
2691
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.
2707
2708         * doc/invoke.texi (ix86 Options): Document the new option.
2709
2710 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2711
2712         PR target/49049
2713         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2714
2715 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
2716
2717         PR target/50305
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.
2722
2723 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2724
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.
2728
2729 2011-10-06  Richard Guenther  <rguenther@suse.de>
2730
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.
2736
2737 2011-10-06  Nick Clifton  <nickc@redhat.com>
2738
2739         * config/rx/rx.md (smin3): Revert previous delta.
2740
2741 2011-10-06  Richard Guenther  <rguenther@suse.de>
2742
2743         PR tree-optimization/38884
2744         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2745         reads from aggregate SSA names.
2746
2747 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2748
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.
2754
2755 2011-10-05  David S. Miller  <davem@davemloft.net>
2756
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.
2767
2768 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2769
2770         PR middle-end/50607
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.
2776
2777 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2778
2779         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2780         if profiling after the prologue.
2781
2782 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2783
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.
2788
2789 2011-10-05  Richard Henderson  <rth@redhat.com>
2790
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.
2796
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.
2802
2803 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2804
2805         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2806         of "found".  Simplify return value calculation.
2807         (distance_agu_use): Ditto.
2808
2809 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2810
2811         PR bootstrap/50621
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
2815         to an insn.
2816         * function.c (thread_prologue_and_epilogue_insns): Make sure the
2817         shrink_wrapped flag is set even if there is no dump file.
2818
2819 2011-10-05  DJ Delorie  <dj@redhat.com>
2820             Nick Clifton  <nickc@redhat.com>
2821
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
2830         base register.
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.
2847         (Rpda): Define.
2848         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2849         (tablejump): Add PID support.
2850         (mov<>): Likewise.
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.
2860
2861 2011-10-05  Richard Guenther  <rguenther@suse.de>
2862
2863         PR tree-optimization/38885
2864         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2865         from constants.
2866
2867 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2868
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
2884         simple_return.
2885         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2886         simple returns.
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.
2891
2892 2011-10-05  Richard Guenther  <rguenther@suse.de>
2893
2894         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2895         vector type.
2896         (simplify_unary_expression): Handle BIT_FIELD_REFs.
2897         (try_to_simplify): Handle BIT_FIELD_REFs.
2898
2899 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
2900
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.
2907
2908 2011-10-05  Richard Guenther  <rguenther@suse.de>
2909
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.
2914
2915 2011-10-05  Nick Clifton  <nickc@redhat.com>
2916
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.
2922
2923 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2924
2925         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2926         with the new widening_optab_handler.
2927
2928 2011-10-05  Richard Guenther  <rguenther@suse.de>
2929
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.
2935
2936 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2937
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
2940         instructions.
2941         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2942
2943 2011-10-04  David S. Miller  <davem@davemloft.net>
2944
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
2954         builtins patterns.
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.
2962
2963 2011-10-04  Richard Henderson  <rth@redhat.com>
2964
2965         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2966         Avoid save_expr unless two_arguments.
2967
2968 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
2969
2970         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2971         * config/i386/mingw32.h (CPP_SPEC): Likewise.
2972
2973 2011-10-04  David S. Miller  <davem@davemloft.net>
2974
2975         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2976         under Linux.
2977
2978 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
2979
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.
2986
2987         PR tree-optimization/50522
2988         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2989         TYPE_RESTRICT.
2990         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
2991         unconditionally.
2992
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.
2998
2999 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
3000
3001         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
3002
3003 2011-10-04  Jan Hubicka  <jh@suse.cz>
3004
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.
3015
3016 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
3017
3018         PR target/50566
3019         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
3020         prototype.
3021         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
3022         from here...
3023         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
3024         function.  Log if avr_log.legitimize_reload_address.
3025
3026 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
3027
3028         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
3029
3030 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3031
3032         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
3033         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
3034
3035 2011-10-03  David S. Miller  <davem@davemloft.net>
3036
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
3042         zero_extract.
3043         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
3044
3045 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
3046
3047         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
3048
3049 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
3050             Ian Lance Taylor  <iant@google.com>
3051
3052         * godump.c (go_output_typedef): Support printing enum values that
3053         don't fit in a signed HOST_WIDE_INT.
3054
3055 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
3056
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.
3061
3062 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
3063
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.
3068
3069 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
3070
3071         PR target/49967
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.
3076
3077 2011-10-03  David S. Miller  <davem@davemloft.net>
3078
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.
3083
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.
3086
3087 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
3088
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.
3127
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.
3134
3135 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
3136
3137         PR tree-optimization/50587
3138         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
3139         arg0 is not a SSA_NAME.
3140
3141 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
3142
3143         * ipa-inline-analysis.c (MAX_TIME): Update comment.
3144
3145 2011-10-02  Richard Henderson  <rth@redhat.com>
3146             David S. Miller  <davem@davemloft.net>
3147
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.
3153
3154 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
3155
3156         * invoke.texi (SPARC Options): Refer to GNU/Linux.
3157
3158 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
3159
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.
3165
3166 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
3167
3168         PR target/49696
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.
3172
3173 2011-10-02  Jan Hubicka  <jh@suse.cz>
3174
3175         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
3176
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.
3182
3183 2011-10-02  Jan Hubicka  <jh@suse.cz>
3184
3185         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
3186
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.
3193
3194 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
3195
3196         PR preprocessor/36819
3197         * incpath.c (merge_include_chains): Call free_path on
3198         heads[QUOTE] and tails[QUOTE].
3199
3200 2011-10-02  Jan Hubicka  <jh@suse.cz>
3201
3202         PR lto/47247
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
3210         externally visible.
3211         * varasm.c (resolution_to_local_definition_p): Add
3212         LDPR_PREVAILING_DEF_IRONLY_EXP.
3213         (resolution_local_p): Likewise.
3214
3215 2011-10-01  David S. Miller  <davem@davemloft.net>
3216
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
3240         is ignored.
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.
3250
3251 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
3252
3253         * ira-color.c (assign_hard_reg): Fix typo.
3254
3255 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
3256
3257         * doc/extend.texi: Add missing ','.
3258
3259 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
3260
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.
3280
3281 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
3282
3283         PR target/50566
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.
3288
3289 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
3290
3291         PR inline-asm/50571
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.
3295
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.
3307
3308 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
3309             Richard Guenther  <rguenther@suse.de>
3310
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.
3317
3318 2011-09-30  Jan Beulich  <jbeulich@suse.com>
3319
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
3334         being NULL.
3335         (streamer_write_tree_header): Adjust call to renamed function.
3336
3337 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
3338
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.
3346         Record it.
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
3362         declarations.
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.
3366
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
3373         schedule_ebb.
3374         * sched-int.h (schedule_ebb, schedule_ebbs_init,
3375         schedule_ebbs_finish): Declare.
3376
3377 2011-09-30  Richard Guenther  <rguenther@suse.de>
3378
3379         PR middle-end/50574
3380         * tree-cfg.c (verify_gimple_comparison): Compare component
3381         mode sizes for vector comparisons.
3382
3383 2011-09-30  Revital Eres  <revital.eres@linaro.org>
3384
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.
3391
3392 2011-09-30  Revital Eres  <revital.eres@linaro.org>
3393
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.
3397
3398 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
3399
3400         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
3401         insns.
3402
3403 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
3404
3405         PR target/50099
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.
3411
3412 2011-09-30  David S. Miller  <davem@davemloft.net>
3413
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
3423         patterns.
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
3435         void.
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.
3442
3443 2011-09-29  Nick Clifton  <nickc@redhat.com>
3444             Bernd Schmidt  <bernds@codesourcery.com>
3445
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.
3450
3451 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
3452
3453         PR target/50566
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
3456         from avr_rtx_costs.
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.
3463
3464 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
3465
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.
3470
3471 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
3472
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.
3477
3478 2011-09-27   Andi Kleen <ak@linux.intel.com>
3479
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.
3483
3484 2011-09-26   Andi Kleen <ak@linux.intel.com>
3485
3486         * toplev.c (init_local_tick): Try reading random seed
3487         from /dev/urandom.
3488
3489 2011-09-26   Andi Kleen <ak@linux.intel.com>
3490
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.
3503
3504 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
3505
3506         PR target/50566
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.
3518
3519 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
3520
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.
3531
3532 2011-09-29  Richard Guenther  <rguenther@suse.de>
3533
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.
3537
3538 2011-09-29  David S. Miller  <davem@davemloft.net>
3539
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
3549         array builtins.
3550         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
3551         __vis_array32): New.
3552         * doc/extend.texi: Document new VIS builtins.
3553
3554         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
3555         (VIS pixel-compare insn): Just use <gcond:name>.
3556
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>.
3560
3561 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
3562
3563         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
3564         Darwin >= 9.
3565
3566 2011-09-28  David S. Miller  <davem@davemloft.net>
3567
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.
3576
3577 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
3578
3579         PR target/49486
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.
3586
3587 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
3588
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.
3592
3593 2011-09-28  Nick Clifton  <nickc@redhat.com>
3594
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.
3601
3602 2011-09-28  Richard Guenther  <rguenther@suse.de>
3603
3604         PR middle-end/50460
3605         * fold-const.c (try_move_mult_to_index): Handle &a.array the
3606         same as &a.array[0].
3607
3608 2011-09-28  Kai Tietz  <ktietz@redhat.com>
3609
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.
3617
3618 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
3619
3620         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
3621         throughout file.
3622
3623 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
3624
3625         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
3626         throughout file.
3627
3628 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
3629
3630         * output.h (SECTION_EXCLUDE): New macro.
3631         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
3632
3633 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
3634
3635         * fwprop.c (forward_propagate_and_simplify): After checking
3636         reg/subreg combinations, check whether the modes are the same.
3637
3638 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
3639             Richard Sandiford  <rdsandiford@googlemail.com>
3640
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.
3645
3646 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
3647
3648         PR middle-end/50386
3649         PR middle-end/50326
3650         * tree-sra.c (build_ref_for_model): Use the type of the field as
3651         the type of the COMPONENT_REF.
3652
3653 2011-09-27  Jeff Law  <law@redhat.com>
3654
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.
3660
3661 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
3662
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].
3676
3677 2011-09-27  Tom de Vries  <tom@codesourcery.com>
3678
3679         PR middle-end/43864
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.
3728
3729 2011-09-27  Jan Hubicka  <jh@suse.cz>
3730
3731         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
3732
3733 2011-09-27  Jan Hubicka  <jh@suse.cz>
3734
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.
3738
3739 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
3740
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
3744         declaration.
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.
3748
3749 2011-09-27  Andi Kleen  <ak@linux.intel.com>
3750             Jan Hubicka  <jh@suse.cz>
3751
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.
3760
3761 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3762
3763         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
3764         between signed and unsigned.
3765
3766 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
3767
3768         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
3769         vectorization.
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
3776         vectorization.
3777         (vect_analyze_slp_instance): Allow multiple types for basic block
3778         vectorization.  Recheck unrolling factor after construction of SLP
3779         instance.
3780
3781 2011-09-27  Richard Guenther  <rguenther@suse.de>
3782
3783         * tree-object-size.c (compute_object_sizes): Fix dumping of
3784         folded statement.
3785
3786 2011-09-27  Richard Guenther  <rguenther@suse.de>
3787
3788         PR tree-optimization/50363
3789         * tree-ssa-pre.c (create_expression_by_pieces): Handle
3790         pointer conversions in POINTER_PLUS_EXPRs properly.
3791
3792 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
3793
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.
3799
3800 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
3801
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
3806         by digging RTX.
3807
3808 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
3809
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
3816         CONSTM1_RTX.
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
3822         into mask | x.
3823
3824 2011-09-26  David S. Miller  <davem@davemloft.net>
3825
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
3835         and pixel-compare.
3836
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.
3841
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.
3849
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.
3856
3857 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3858
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,
3862         non-ld-regs target.
3863
3864 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
3865
3866         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
3867         gctx.into_ssa after push_gimplify_context.
3868
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.
3875
3876 2011-09-26  Richard Guenther  <rguenther@suse.de>
3877
3878         PR tree-optimization/50472
3879         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
3880         volatile references.
3881
3882 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
3883
3884         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
3885         * target.def: (addr_space_subset_p): Likewise.
3886
3887 2011-09-26  Tom de Vries  <tom@codesourcery.com>
3888
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
3892         of new var.
3893
3894 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3895
3896         PR target/50465
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.
3912
3913 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
3914
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.
3917
3918 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
3919
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
3923         prototype.
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
3930         created on the fly.
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.
3934
3935 2011-09-25  David S. Miller  <davem@davemloft.net>
3936
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.
3950
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.