OSDN Git Service

* tree-eh.c (do_return_redirection): Remove return_value_p
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-25  Ian Lance Taylor  <iant@google.com>
2
3         * tree-eh.c (do_return_redirection): Remove return_value_p
4         parameter.  Change all callers.
5         (lower_try_finally_nofallthru): Remove local return_val.
6         (lower_try_finally_onedest): Likewise.
7         (lower_try_finally_copy): Likewise.
8         (lower_try_finally_switch): Likewise.
9
10 2011-10-25  H.J. Lu  <hongjiu.lu@intel.com>
11
12         * config/i386/mmx.md (*mmx_maskmovq): Replace :SI with :P and
13         remove "&& !TARGET_64BIT"
14         (*mmx_maskmovq_rex): Removed.
15
16 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
17
18         PR rtl-optimization/46603
19         * reload.c (push_reload): In the out case, reload the subreg as well
20         as the reg if it has word mode.
21
22 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
23
24         * dwarf2out.c (add_gnat_descriptive_type_attribute): Temporarily
25         suppress debug info for the parent type.
26
27 2011-10-25  Eric Botcazou  <ebotcazou@adacore.com>
28
29         * config/ia64/ia64.c (ia64_profile_hook): Fix thinko.
30
31 2011-10-25  Richard Henderson  <rth@redhat.com>
32
33         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Remove.
34         (vec_extract_even<mode>, vec_extract_odd<mode>): Remove.
35
36         * config/rs6000/altivec.md (vec_extract_evenv8hi,
37         vec_extract_evenv16qi, vec_extract_oddv4si,
38         vec_extract_oddv4sf): Remove.
39
40         * config/spu/spu.md (vec_extract_evenv4si, vec_extract_evenv4sf,
41         vec_extract_evenv8hi, vec_extract_evenv16qi, vec_extract_oddv4si,
42         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
43         vec_interleave_highv4sf, vec_interleave_lowv4sf,
44         vec_interleave_highv4si, vec_interleave_lowv4si,
45         vec_interleave_highv8hi, vec_interleave_lowv8hi,
46         vec_interleave_highv16qi, vec_interleave_lowv16qi): Remove.
47
48         * expr.c (expand_expr_real_2) [VEC_EXTRACT_EVEN_EXPR]: Use binop.
49         [VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR]: Likewise.
50         [VEC_INTERLEAVE_LOW_EXPR]: Likewise.
51         * optabs.c (expand_binop): Implement vec_interleave_high_optab,
52         vec_interleave_low_optab, vec_extract_even_optab,
53         vec_extract_odd_optab with expand_vec_perm.
54         (can_vec_perm_for_code_p): New.
55         * optabs.h: Update.
56         * tree-vect-data-refs.c (vect_strided_store_supported): Allow for
57         fallback via can_vec_perm_for_code_p.
58         (vect_strided_load_supported): Likewise.
59         * tree-vect-generic.c (expand_vector_operations_1): Never lower
60         VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR,
61         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR.
62
63         * target.def (vec_perm_const_ok): Change parameters to mode and
64         array of indicies.
65         * doc/tm.texi: Rebuild.
66         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
67         parameters to mode and array of indicies.
68         * expr.c (expand_expr_real_2) [VEC_PERM_EXPR]: Expand operands here.
69         * optabs.c (can_vec_perm_p): Rename from can_vec_perm_expr_p.
70         Change parameters to mode and array of indicies.
71         (expand_vec_perm_1): Rename from expand_vec_perm_expr_1.
72         (expand_vec_perm): Rename from expand_vec_perm_expr.  Change
73         parameters to mode and rtx inputs.  Try lowering to QImode
74         vec_perm_const before trying fully variable permutation.
75         * optabs.h: Update decls.
76         * tree-vect-generic.c (lower_vec_perm): Extract array of indices from
77         VECTOR_CST to pass to can_vec_perm_p.
78         * tree-vect-slp.c (vect_get_mask_element): Change mask parameter type
79         from int pointer to unsigned char pointer.
80         (vect_transform_slp_perm_load): Update for change to can_vec_perm_p.
81         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
82
83         * tree.def (VEC_EXTRACT_EVEN_EXPR): Fix typo in text name.
84         (VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
85         VEC_INTERLEAVE_LOW_EXPR): Likewise.
86
87 2011-10-25  Mike Stump  <mikestump@comcast.net>
88
89         * reload.c (regno_clobbered_p): Fix typo.
90
91 2011-10-25  Dodji Seketeli  <dodji@redhat.com>
92
93         * input.c (expand_location): Rewrite using
94         linemap_resolve_location and linemap_expand_location.  Add a
95         comment.
96
97 2011-10-25  Jakub Jelinek  <jakub@redhat.com>
98
99         PR tree-optimization/50596
100         * tree-vect-stmts.c (vect_mark_relevant): Only use
101         FOR_EACH_IMM_USE_FAST if lhs is SSA_NAME.
102         (vectorizable_store): If is_pattern_stmt_p look through
103         VIEW_CONVERT_EXPR on lhs.
104         * tree-vect-patterns.c (check_bool_pattern, adjust_bool_pattern):
105         Use unsigned type instead of signed.
106         (vect_recog_bool_pattern): Optimize also stores into bool memory in
107         addition to casts from bool to integral types.
108         (vect_mark_pattern_stmts): If pattern_stmt already has vinfo
109         created, don't create it again.
110
111 2011-10-25  Kai Tietz  <ktietz@redhat.com>
112
113         * config/i386/i386.c (ix86_frame_pointer_required): Require
114         frame-pointer, if setjmp is used for 32-bit ms-abi.
115
116 2011-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
117
118         * builtins.c (set_builtin_user_assembler_name): Remove extra
119         newline added in October 11th, 2011 change.
120
121 2011-10-24  David S. Miller  <davem@davemloft.net>
122
123         * config/sparc/little-endian.opt: Delete.
124         * config.gcc: Remove references to config/sparc/little-endian.opt
125         * doc/invoke.texi: Remove documentation of -mlittl-endian on sparc.
126         * config/sparc/linux64.h: Delete references to -mlittle-endian.
127         * config/sparc/netbsd-elf.h: Likewise.
128         * config/sparc/openbsd64.h: Likewise.
129         * config/sparc/sparc.h: Likewise.
130         * config/sparc/sp64-elf.h: Likewise and delete overrides for
131         BYTES_BIG_ENDIAN and WORDS_BIG_ENDIAN.
132         * config/sparc/sparc.c (dump_target_flag_bits): Remove reference
133         to MASK_LITTLE_ENDIAN.
134         * config/sparc/sparc.opt (Mask(LITTLE_ENDIAN)): Delete.
135
136         * config/sparc/sparc.md: Only use F, G, and C constraints in FP
137         insns.  Only use D, Y, and Z constraints in vector insns.
138
139         * config/sparc/sparc.md (cpu_feature, enabled): New attributes.
140         (*movsi_insn_novis3, *movsi_insn_vis3): Consolidate into one pattern
141         called *movsi_insn.
142         (*movdi_insn_sp32_v9_novis3, *movdi_insn_sp32_v9_vis3): Consolidate
143         into *movdi_insn_sp32.
144         (*movdi_insn_sp64_novis3, *movdi_insn_sp64_vis3): Consolidate into
145         one pattern called *movdi_insn_sp64.
146         (*movsf_insn_novis3, *movsf_insn_vis3, *movsf_insn_no_fpu):
147         Consolidate into one pattern called *movsf_insn.
148         (*movdf_insn_sp32_no_fpu, *movdf_insn_sp32_v9_novis3,
149         *movdf_insn_sp32_v9_vis3, *movdf_insn_sp32_v9_no_fpu): Consolidate
150         into *movdf_insn_sp32.
151         (*movdf_insn_sp64_novis3, *movdf_insn_sp64_vis3,
152         *movdf_insn_sp64_no_fpu): Consolidate into one pattern called
153         *movdf_insn_sp64.
154         (*zero_extendsidi2_insn_sp64_novis3,
155         *zero_extendsidi2_insn_sp64_vis3): Consolidate into one pattern
156         called *zero_extendsidi2_insn_sp64.
157         (*sign_extendsidi2_insn_novis3, *sign_extendsidi2_insn_vis3):
158         Consolidate into one pattern named *sign_extendsidi2_insn.
159         (*mov<VM32:mode>_insn_novis3, *mov<VM32:mode>_insn_vis3):
160         Consolidate into one pattern named *mov<VM32:mode>_insn.
161         (*mov<VM64:mode>_insn_sp64_novis3,
162         *mov<VM64:mode>_insn_sp64_novis3): Consolidate into one pattern
163         named *mov<VM64:mode>_insn_sp64.
164         (*mov<VM64:mode>_insn_sp32_novis3,
165         *mov<VM64:mode>_insn_sp32_vis3): Consolidate into one pattern
166         named *mov<VM64:mode>_insn_sp32.
167
168 2011-10-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
169
170         * tree-ssa-strlen.c (get_string_length): Change assertion to STPCPY.
171         (zero_length_string): Change assertion to accept strinfo without
172         length but with stmt instead.
173         Set the endptr pointer also if starting a new chain.
174         (adjust_related_strinfos): Ignore strinfos marked for delayed
175         length computation.
176         (handle_builtin_strcpy): Mark earlier strinfo elements also for
177         delayed length computation.
178
179 2011-10-24  Georg-Johann Lay  <avr@gjlay.de>
180
181         PR target/50820
182         Port from 4.6 branch r180379
183         * doc/invoke.texi (AVR Options): New subsubsection to explain EIND
184         handling and indirect jump/calls on devices > 128k.
185
186 2011-10-24  Anatoly Sokolov  <aesok@post.ru>
187             Georg-Johann Lay  <avr@gjlay.de>
188
189         PR target/49824
190         * doc/extend.texi (Declaring Attributes of Functions):
191         Document OS_main and OS_task attributes.
192         (Specifying Attributes of Variables): Move up
193         subsection "AVR Variable Attributes" as of alphabetical order.
194
195 2011-10-24  Richard Guenther  <rguenther@suse.de>
196
197         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Convert constants
198         to vector element type.
199         (vectorizable_assignment): Bail out for non-mode-precision operations.
200         (vectorizable_shift): Likewise.
201         (vectorizable_operation): Likewise.
202         (vectorizable_type_demotion): Likewise.
203         (vectorizable_type_promotion): Likewise.
204         (vectorizable_store): Handle non-mode-precision stores.
205         (vectorizable_load): Handle non-mode-precision loads.
206         (get_vectype_for_scalar_type_and_size): Return a vector type
207         for non-mode-precision integers.
208         * tree-vect-loop.c (vectorizable_reduction): Bail out for
209         non-mode-precision reductions.
210
211 2011-10-24  Julian Brown  <julian@codesourcery.com>
212
213         * config/m68k/m68k.c (notice_update_cc): Tighten condition for
214         setting CC_REVERSED for FP comparisons.  
215
216 2011-10-24  Richard Guenther  <rguenther@suse.de>
217
218         PR tree-optimization/50838
219         * tree-data-ref.c (dr_analyze_indices): Properly canonicalize
220         a MEM_REF base if we change it.
221
222 2011-10-24  Bernd Schmidt  <bernds@codesourcery.com>
223
224         PR bootstrap/50836
225         * rtlanal.c: Swap includes of "hard-reg-set.h" and "rtl.h".
226
227         PR rtl-optimization/50833
228         * function.c (thread_prologue_and_epilogue_insns): Expect the
229         return insn optimization only if optimize.
230
231 2011-10-24  Georg-Johann Lay  <avr@gjlay.de>
232
233         * config/avr/avr.c: Break long lines.
234         Define target hooks on the fly if applicable.
235         (TARGET_ASM_FUNCTION_RODATA_SECTION): Remove first definition
236         overridden later.
237         (targetm): Move definition to end of file.
238         (avr_can_eliminate): Make static on the fly.
239         (avr_frame_pointer_required_p): Ditto.
240         (avr_hard_regno_scratch_ok): Ditto.
241         (avr_builtin_setjmp_frame_value): Make static on the fly.
242         Indent according to coding rules.
243         (avr_case_values_threshold): Ditto.
244         (avr_attribute_table): Move down.
245
246 2011-10-24  Ira Rosen  <ira.rosen@linaro.org>
247
248         PR tree-optimization/50730
249         * tree-vect-data-refs.c (vect_analyze_data_refs): Stop basic block
250         analysis if encountered unsupported data-ref.
251
252 2011-10-23  David S. Miller  <davem@davemloft.net>
253
254         * config/sparc/sparc.c (sparc_option_override): Remove -mv8plus
255         cpu adjustment.
256         * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit,
257         append -mcpu=v9 when -mv8plus is given.
258
259         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): We can move
260         between float and non-float regs when VIS3.
261         * config/sparc/sparc.c (eligible_for_restore_insn): We can't
262         use a restore when the source is a float register.
263         (sparc_split_regreg_legitimate): When VIS3 allow moves between
264         float and integer regs.
265         (sparc_register_move_cost): Adjust to account for VIS3 moves.
266         (sparc_preferred_reload_class): On 32-bit with VIS3 when moving an
267         integer reg to a class containing EXTRA_FP_REGS, constrain to
268         FP_REGS.
269         (sparc_secondary_reload): On 32-bit with VIS3 when moving between
270         float and integer regs we sometimes need a FP_REGS class
271         intermediate move to satisfy the reload.  When this happens
272         specify an extra cost of 2.
273         (*movsi_insn): Rename to have "_novis3" suffix and add !VIS3
274         guard.
275         (*movdi_insn_sp32_v9): Likewise.
276         (*movdi_insn_sp64): Likewise.
277         (*movsf_insn): Likewise.
278         (*movdf_insn_sp32_v9): Likewise.
279         (*movdf_insn_sp64): Likewise.
280         (*zero_extendsidi2_insn_sp64): Likewise.
281         (*sign_extendsidi2_insn): Likewise.
282         (*movsi_insn_vis3): New insn.
283         (*movdi_insn_sp32_v9_vis3): New insn.
284         (*movdi_insn_sp64_vis3): New insn.
285         (*movsf_insn_vis3): New insn.
286         (*movdf_insn_sp32_v9_vis3): New insn.
287         (*movdf_insn_sp64_vis3): New insn.
288         (*zero_extendsidi2_insn_sp64_vis3): New insn.
289         (*sign_extendsidi2_insn_vis3): New insn.
290         (TFmode reg/reg split): Make sure both REG operands are float.
291         (*mov<VM32:mode>_insn): Add "_novis3" suffix and !VIS3 guard. Remove
292         easy constant to integer reg alternatives.
293         (*mov<VM64:mode>_insn_sp64): Likewise.
294         (*mov<VM64:mode>_insn_sp32_novis3): Likewise.
295         (*mov<VM32:mode>_insn_vis3): New insn.
296         (*mov<VM64:mode>_insn_sp64_vis3): New insn.
297         (*mov<VM64:mode>_insn_sp32_vis3): New insn.
298         (VM64 reg<-->reg split): New spliiter for 32-bit.
299
300         * config/sparc/sparc.c (sparc_split_regreg_legitimate): New
301         function.
302         * config/sparc/sparc-protos.h (sparc_split_regreg_legitimate):
303         Declare it.
304         * config/sparc/sparc.md (DImode reg/reg split): Use it.
305         (DFmode reg/reg split): Likewise.
306
307         * config/sparc/sparc.md (*movdi_insn_sp32_v9): Add alternatives for
308         generating fzero and fone instructions.
309         (DImode const_int --> reg splitter): Only trigger for integer regs.
310
311         * config/sparc/predicates.md (input_operand): Disallow vector
312         constants other than 0 and -1.
313         * config/sparc/sparc.c (sparc_preferred_reload_class): Return
314         NO_REGS for vector constants other than 0 and -1.
315
316         * config/sparc/sparc.h (SPARC_FIRST_INT_REG, SPARC_LAST_INT_REG,
317         SPARC_INT_REG_P): Define.
318         (HARD_REGNO_NREGS): Use SPARC_INT_REG_P.
319         (REGNO_OK_FOR_INDEX_P): Likewise.
320         * config/sparc/sparc.c (gen_df_reg): Likewise.
321         (eligible_for_return_delay): Likewise.
322         (eligible_for_sibcall_delay): Likewise.
323         (sparc_legitimate_address_p): Likewise.
324         (emit_save_or_restore_regs): Likewise.
325         (registers_ok_for_ldd_peep): Likewise.
326         * config/spac/sparc.md (DI mode splitters): Likewise.
327         (SF mode const splitters): Likewise.
328         (DF mode splitters): Likewise.
329         (32-bit DI mode logical op splitters): Likewise.
330
331 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
332
333         PR c++/50841
334         Revert:
335         2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
336
337         PR c++/50810
338         * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
339
340 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
341
342         * config/i386/sse.md (avx2_lshl<mode>3): Remove insn pattern.
343         (VI248_256): Remove mode iterator.
344         * config/i386/i386.c (ix86_expand_vec_perm): Use gen_ashlv4di3
345         instead of gen_avx2_lshlv4di3.
346         (bdesc_args): Use CODE_FOR_ashl{v16hi,v8si,v4di}3 instead of
347         CODE_FOR_avx2_lshl{v16hi,v8si,v4di}3.
348
349 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
350
351         * config/i386/sse.md (sseintprefix): Rename from gthrfirstp.
352         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Delete expander.
353         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>) Merge insn
354         pattern from *avx2_maskload<ssemodesuffix><avxsizesuffix> and
355         *avx_maskload<ssemodesuffix><avxsizesuffix> using V48_AVX mode
356         iterator.  Use sseintprefix mode attribute.
357         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Delete expander.
358         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>) Merge insn
359         pattern from *avx2_maskstore<ssemodesuffix><avxsizesuffix> and
360         *avx_maskstore<ssemodesuffix><avxsizesuffix> using V48_AVX mode
361         iterator.  Use sseintprefix mode attribute.
362         (*avx2_gathersi<mode>) Use sseintprefix and ssemodesuffix mode
363         attributes.
364         (*avx2_gatherdi<mode>): Ditto.
365         (*avx2_gatherdi<mode>256): Ditto.
366         (VI48_AVX2): Remove mode iterator.
367         (gthrlastfp): Remove mode attribute.
368
369 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
370
371         PR c++/50810
372         * doc/invoke.texi ([-Wnarrowing], [-Wc++0x-compat]): Update.
373
374 2011-10-23  Tom de Vries  <tom@codesourcery.com>
375
376         PR tree-optimization/50763
377         * tree-ssa-tail-merge.c (same_succ_flush_bb): New function, factored out
378         of ...
379         (same_succ_flush_bbs): Use same_succ_flush_bb.
380         (purge_bbs): Remove argument.  Remove calls to same_succ_flush_bbs,
381         release_last_vdef and delete_basic_block.
382         (unlink_virtual_phi): New function.
383         (update_vuses): Add and use vuse1_phi_args argument.  Set var to
384         SSA_NAME_VAR of vuse1 or vuse2, and use var.  Handle case that def_stmt2
385         is NULL.  Use phi result as phi arg in case vuse1 or vuse2 is NULL_TREE.
386         Replace uses of vuse1 if vuse2 is NULL_TREE.  Fix code to limit
387         replacement of uses.  Propagate phi argument for phis with a single
388         argument.
389         (replace_block_by): Update vops if phi_vuse1 or phi_vuse2 is NULL_TREE.
390         Set vuse1_phi_args if vuse1 is a phi defined in bb1.  Add vuse1_phi_args
391         as argument to call to update_vuses.  Call release_last_vdef,
392         same_succ_flush_bb, delete_basic_block.  Update CDI_DOMINATORS info.
393         (tail_merge_optimize): Remove argument in call to purge_bbs.  Remove
394         call to free_dominance_info.  Only call calculate_dominance_info once.
395
396 2011-10-23  Eric Botcazou  <ebotcazou@adacore.com>
397
398         * fold-const.c (invert_tree_comparison): Always invert EQ_EXPR/NE_EXPR.
399
400         PR tree-optimization/44683
401         * tree-ssa-dom.c (record_edge_info): Record simple equivalences only if
402         we can be sure that there are no signed zeros involved.
403
404 2011-10-23  Jan Hubicka  <jh@suse.cz>
405
406         * ipa-inline.c (estimate_badness): Scale up and handle overflows.
407
408 2011-10-23  Uros Bizjak  <ubizjak@gmail.com>
409
410         PR target/50788
411         * config/i386/sse.md (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>):
412         Remove (match_dup 0).
413         (*avx2_maskload<ssemodesuffix><avxsizesuffix>): New insn pattern.
414         (*avx_maskload<ssemodesuffix><avxsizesuffix>): Ditto.
415         (*avx2_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
416         (*avx_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
417         (*avx2_maskmov<ssemodesuffix><avxsizesuffix>): Remove insn pattern.
418         (*avx_maskmov<ssemodesuffix><avxsizesuffix>): Ditto.
419
420 2011-10-23  Ira Rosen  <ira.rosen@linaro.org>
421
422         PR tree-optimization/50819
423         * tree-vectorizer.h (vect_analyze_data_ref_dependences): Remove
424         the last argument.
425         * tree-vect-loop.c (vect_analyze_loop_2): Update call to
426         vect_analyze_data_ref_dependences.
427         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Remove
428         the last argument.  Check load-after-store dependence for unknown
429         dependencies in basic blocks.
430         (vect_analyze_data_ref_dependences): Update call to
431         vect_analyze_data_ref_dependences.
432         * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo.
433         * tree-vect-slp.c (vect_bb_vectorizable_with_dependencies): Remove.
434         (vect_slp_analyze_bb_1): Update call to
435         vect_analyze_data_ref_dependences.  Don't call
436         vect_bb_vectorizable_with_dependencies.
437
438 2011-10-22  David S. Miller  <davem@davemloft.net>
439
440         * config/sparc/sparc.h (SECONDARY_INPUT_RELOAD_CLASS,
441         SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
442         * config/sparc/sparc.c (TARGET_SECONDARY_RELOAD): Redefine.
443         (sparc_secondary_reload): New function.
444
445         * config/sparc/sparc.h (sparc_costs): Remove extern decl.
446         (struct processor_costs): Move from here..
447         * config/sparc/sparc.c (struct processor_costs): To here.
448         (sparc_costs): Mark static.
449
450         * config/sparc/sparc.c (short_branch, reg_unused_after): Delete.
451         * config/sparc/sparc-protos.h (short_branch, reg_unused_after):
452         Get rid of declarations.
453
454 2011-10-21  Paul Brook  <paul@codesourcery.com>
455
456         * config/c6x/c6x.c (c6x_asm_emit_except_personality,
457         c6x_asm_init_sections): New functions.
458         (TARGET_ASM_EMIT_EXCEPT_PERSONALITY, TARGET_ASM_INIT_SECTIONS): Define.
459
460 2011-10-21  Jakub Jelinek  <jakub@redhat.com>
461
462         PR target/50813
463         * config/i386/i386.c (expand_vec_perm_even_odd_1): Handle
464         V4DImode and V8SImode for !TARGET_AVX2.
465
466 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
467
468         PR bootstrap/50825
469         * sched-deps.c (add_dependence): If not doing predication, promote
470         REG_DEP_CONTROL to REG_DEP_ANTI.
471
472 2011-10-21  Georg-Johann Lay  <avr@gjlay.de>
473
474         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X
475         instead of X to avr_legitimize_reload_address.
476         * config/avr/avr-protos.h (avr_legitimize_reload_address): Change
477         first argument's type from rtx to rtx*.
478         * config/avr/avr.c (avr_legitimize_reload_address): Ditto.
479         Pass PX to push_reload instead of &X.  Change log messages for
480         better distinction.
481
482 2011-10-21  Roland Stigge  <stigge@antcom.de>
483
484         PR translation/47064
485         * params.def: Fix typo "compilatoin" -> "compilation".
486
487 2011-10-21  H.J. Lu  <hongjiu.lu@intel.com>
488             Kirill Yukhin  <kirill.yukhin@intel.com>
489
490         PR target/50740
491         * config/i386/driver-i386.c (host_detect_local_cpu): Do cpuid 7 only
492         if max_level allows that.
493
494 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
495
496         * reg-notes.def (DEP_CONTROL): New.
497         * sched-ebb.c (add_deps_for_risky_insns): Add a REG_DEP_CONTROL when
498         not doing speculation.
499         * rtlanal.c (record_hard_reg_sets, find_all_hard_reg_sets,
500         record_hard_reg_uses_1, record_hard_reg_uses): New functions.
501         * function.c (record_hard_reg_sets, record_hard_reg_uses,
502         record_hard_reg_uses_1): Remove; move to rtlanal.c.
503         * lists.c (copy_INSN_LIST, concat_INSN_LIST): New functions.
504         * haifa-sched.c: Swap includes of "rtl.h" and "hard-reg-set.h".
505         (MUST_RECOMPUTE_SPEC_P): New macro.
506         (real_insn_for_shadow): New function.
507         (cond_clobbered_p, recompute_todo_spec, check_clobbered_conditions,
508         toggle_cancelled_flags): New static functions.
509         (schedule_insn): Relax an assert to only check for empty hard back
510         dependencies.  Skip cancelled dependencies.  Call
511         check_clobbered_conditions.
512         (copy_insn_list): Remove function, renamed moved to lists.c.
513         (save_backtrack_point): Use new spelling copy_INSN_LIST.
514         (unschedule_insns_until): Ensure TODO_SPEC is reset properly.
515         (restore_last_backtrack_point): Likewise.  Call toggle_cancelled_flags.
516         (estimate_insn_tick): Ignore cancelled dependencies.
517         (haifa_speculate_insn): Move declaration.
518         (try_ready): Move code into recompute_todo_spec and call it.  Tweak
519         some asserts.  Ensure predicated patterns are restored if necessary.
520         Dump DEP_CONTROL flag.
521         (haifa_change_pattern): Merge with sched_change_pattern.
522         (sched_change_pattern): Remove function.
523         * sched-deps.c (NON_FLUSH_JUMP_KIND, NON_FLUSH_JUMP): Remove.  All
524         uses changed to simply not test NON_FLUSH_JUMP_P.
525         (ds_to_dk, dk_to_ds, dump_dep, ds_to_dt, dump_ds, check_dep): Handle
526         REG_DEP_CONTROL.
527         (dep_spec_p): If DO_PREDICATION, REG_DEP_CONTROL is speculative.
528         (reg_pending_control_uses, control_dependency_cache): New static
529         variables.
530         (sched_get_reverse_condition_uncached): New function.
531         (sd_find_dep_between): Remove pointless assert.  Look in
532         control_dependency_cache.
533         (ask_dependency_caches, set_dependency_caches, sd_delete_dep,
534         extend_dependency_caches, sched_deps_finish): Handle REG_DEP_CONTROL
535         and control_dependency_cache.
536         (sd_unresolve_dep): Use dep_spec_p.
537         (add_dependence): Now a wrapper around add_dependence_1, handling
538         REG_DEP_CONTROL specially.
539         (flush_pending_lists): Clear pending_jump_insns.
540         (sched_analyze_1): Handle pending_jump_insns like a memory flush.
541         (sched_analyze_2): Unconditionally add to pending memory flushes,
542         keep previous behaviour but apply it to pending_jump_insns instead.
543         (sched_analyze_insn): Defer adding jump reg dependencies using
544         reg_pending_control_uses; add them to the control_uses list.  Handle
545         pending_jump_insns and control_uses when adding dependence lists.
546         (deps_analyze_insn): Update INSN_COND_DEPS.
547         (deps_analyze_insn): Add jumps to pending_jump_insns rather than
548         last_pending_memory_flush.
549         (init_deps): Initialize pending_jump_insns.
550         (free_deps): Free control_uses.
551         (remove_from_deps): Remove from pending_jump_insns.
552         (init_deps_global): Allocate reg_pending_control_uses).
553         (finish_deps_global): Free it.
554         (add_dependence_1): Renamed from add_dependence.  Handle
555         REG_DEP_CONTROL.
556         * rtl.h (record_hard_reg_uses, find_all_hard_reg_sets): Declare.
557         (copy_INSN_LIST, concat_INSN_LIST): Declare.
558         * sched-int.h (struct deps_reg): Add control_uses.
559         (struct deps_desc): Add pending_jump_insns.
560         (struct _haifa_deps_insn_data): Add cond_deps.
561         (struct _haifa_insn_data): Add must_recompute_spec and predicated_pat.
562         (INSN_COND_DEPS, PREDICATED_PAT): New macros.
563         (BITS_PER_DEP_WEAK): Adjust for two extra bits in the word.
564         (DEP_CONTROL): New macro.
565         (DEP_TYPES): Include it.
566         (HARD_DEP): Adjust definition.
567         (DEP_CANCELLED): New macro.
568         (enum SCHED_FLAGS): Add DO_PREDICATION.
569         (sched_get_reverse_condition_uncached, real_insn_for_shadow): Declare.
570         * sched-rgn.c (concat_INSN_LIST): Remove function.
571         (deps_join): Handle pending_jump_insns.
572         (free_pending_lists): Likewise.
573         * config/c6x/c6x.c (c6x_set_sched_flags): Set DO_PREDICATION for final
574         schedule.
575
576 2011-10-21  Georg-Johann Lay  <avr@gjlay.de>
577
578         PR target/50820
579         * config/avr/libgcc.S (__EIND__): New define to 0x3C.
580         (__tablejump__): Consistently use EIND for indirect jump/call.
581         (__tablejump_elpm__): Ditto.
582
583 2011-10-21  Bernd Schmidt  <bernds@codesourcery.com>
584
585         * config/c6x/c6x.md (attr "op_pattern"): New.
586         (load_sdata_pic, mov<mode>_insn for QIHIM and SISFVM): Set it.
587         * config/c6x/c6x-mult.md.in (mulhi3_VARIANT_, mulhisi3_insn_VARIANT_):
588         Likewise.
589         * config/c6x/c6x-mult.md: Regenerate.
590         * config/c6x/c6x.c: Include "regrename.h".
591         (unit_req_table): New typedef.
592         (unit_reqs): Use it for the declaration.
593         (unit_req_factor, get_unit_reqs, merge_unit_reqs, unit_req_imbalance,
594         get_unit_operand_masks, try_rename_operands, reshuffle_units): New
595         static functions.
596         (count_unit_reqs): New arg reqs.  All callers changed.  Use
597         get_unit_reqs, and don't merge here.
598         (res_mii): New arg reqs.  All callers changed.  Rewrite to use a loop
599         using unit_req_factor.
600         (hwloop_optimize): Call reshuffle_units.  Call merge_unit_reqs after
601         count_unit_reqs.
602         (c6x_reorg): Add reg notes problem, and call df_analyze.
603         * Makefile.in ($(out_object_file)): Depend on regrename.h.
604
605 2011-10-21  Kai Tietz  <ktietz@redhat.com>
606
607         * fold-const.c (simple_operand_p_2): Handle integral
608         casts from boolean-operands.
609
610 2011-10-21  Jan Hubicka  <jh@suse.cz>
611
612         * cgraph.c (dump_cgraph_node): Dump alias flag.
613         * cgraphunit.c (handle_alias_pairs): Handle weakrefs with
614         no destination.
615         (get_alias_symbol): New function.
616         (output_weakrefs): Output also weakrefs with no destinatoin.
617         (lto_output_node): Output weakref alias flag when at function boundary.
618
619 2011-10-21  Andrew Stubbs  <ams@codesourcery.com>
620
621         PR target/50809
622         * config/arm/driver-arm.c (vendors): Make static.
623
624 2011-10-21  Uros Bizjak  <ubizjak@gmail.com>
625
626         * config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
627         (ix86_emit_swsqrtsf): Force a into register.
628
629 2011-10-20  Mike Stump  <mikestump@comcast.net>
630
631         * regcprop.c (copyprop_hardreg_forward_1): Update recog_data
632         after validate_change wipes it out.
633
634 2011-10-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
635
636         * config/spu/spu.md ("vec_permv16qi"): Reduce selector modulo 32
637         before using the shufb instruction.
638
639 2011-10-20  Kirill Yukhin  <kirill.yukhin@intel.com>
640
641         PR target/50766
642         * config/i386/i386.md (bmi_bextr_<mode>): Update register/
643         memory operand order.
644         (bmi2_bzhi_<mode>3): Ditto.
645         (bmi2_pdep_<mode>3): Ditto.
646         (bmi2_pext_<mode>3): Ditto.
647
648 2011-10-20  Richard Henderson  <rth@redhat.com>
649
650         * target.def (vec_perm_const_ok): Rename from builtin_vec_perm_ok.
651         * optabs.c (can_vec_perm_expr_p): Update to match.
652         (expand_vec_perm_expr): Likewise.
653         * config/i386/i386.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Rename
654         from TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK.
655         * doc/tm.texi.in: Likewise.
656
657 2011-10-20  Sergey Ostanevich  <sergos.gnu@gmail.com>
658
659         PR target/50572
660         * config/i386/i386.c (processor_target_table): Change Atom
661         align_loops_max_skip to 15.
662
663 2011-10-20  Richard Henderson  <rth@redhat.com>
664
665         * target.def (builtin_vec_perm): Remove.
666         * doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
667
668         * config/i386/i386.c (ix86_expand_vec_perm_builtin): Remove.
669         (IX86_BUILTIN_VEC_PERM_*): Remove.
670         (bdesc_args): Remove vec_perm builtins
671         (ix86_expand_builtin): Likewise.
672         (ix86_expand_vec_perm_const_1): Rename from
673         ix86_expand_vec_perm_builtin_1.
674         (extract_vec_perm_cst): Merge into...
675         (ix86_vectorize_vec_perm_const_ok): ... here.  Rename from
676         ix86_vectorize_builtin_vec_perm_ok.
677         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
678
679         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): Remove.
680         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
681
682         * config/spu/spu.c (spu_builtin_vec_perm): Remove.
683         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Remove.
684
685 2011-10-20  Uros Bizjak  <ubizjak@gmail.com>
686
687         PR target/47989
688         * config/i386/i386.h (RECIP_MASK_DEFAULT): New define.
689         * config/i386/i386.op (recip_mask): Initialize with RECIP_MASK_DEFAULT.
690         * doc/invoke.texi (ix86 Options, -mrecip): Document that GCC
691         implements vectorized single float division and vectorized sqrtf(x)
692         with reciprocal sequence with additional Newton-Raphson step with
693         -ffast-math.
694
695 2011-10-20  Dodji Seketeli  <dodji@redhat.com>
696
697         * ggc-zone.c (ggc_internal_alloc_zone_stat): Rename
698         ggc_alloced_size_order_for_request into ggc_round_alloc_size like
699         it was done in ggc-page.c.
700
701         PR other/50659
702         * doc/cppopts.texi: Use @smallexample/@end smallexample in
703         documentation for -fdebug-cpp instead of @quotation/@end quotation
704         that is not supported by contrib/texi2pod.pl.
705
706 2011-10-19  Jan Hubicka  <jh@suse.cz>
707
708         * ipa-inline.c (inline_small_functions): Always update all calles after
709         inlining.
710
711 2011-10-19  Jan Hubicka  <jh@suse.cz>
712
713         PR bootstrap/50709
714         * ipa-inline.c (inline_small_functions): Fix checking code to not make
715         effect on fibheap stability.
716
717 2011-10-20  Maxim Kuvyrkov  <maxim@codesourcery.com>
718
719         * config/m68k/t-linux (M68K_MLIB_CPU): Add ColdFire CPUs.
720
721 2011-10-20  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
722
723         PR target/50106
724         * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
725         reg size from 1-3.
726
727 2011-10-20  Richard Guenther  <rguenther@suse.de>
728
729         * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR
730         and rotates to the set of expensive operations.
731
732 2011-10-19  David S. Miller  <davem@davemloft.net>
733
734         * config/sparc/sparc.c (sparc_expand_move): Use can_create_pseudo_p.
735         (sparc_emit_set_const32): Likewise.
736         (sparc_emit_set_const64_longway): Likewise.
737         (sparc_emit_set_const64): Likewise.
738         (sparc_legitimize_pic_address): Likewise.
739         (memory_ok_for_ldd): Likewise.
740
741 2011-10-20  Dehao Chen  <dehao@google.com>
742
743         * profile.c (compute_branch_probabilities): Compute and dump the
744         overlap between the static estimation and the instrumentation profile.
745         (OVERLAP_BASE): New macro.
746         (compute_frequency_overlap): New function
747
748 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
749
750         * config/i386/i386.c (expand_vec_perm_vpshufb2_vpermq_even_odd): Use
751         d->op1 instead of d->op0 for the second vpshufb.
752         (expand_vec_perm_even_odd_1): For V8SImode fix vpshufd immediates.
753         (ix86_expand_vec_perm_const): If mask indicates two operands are
754         needed, but both are the same and expanding them as d.op0 == d.op1
755         failed, retry with d.op0 != d.op1.
756         (ix86_expand_vec_perm_builtin): Likewise.  Handle sorry printing
757         also for d.nelt == 32.
758
759         PR middle-end/50754
760         * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
761         VEC_PERM_EXPR.
762
763 2011-10-19  Bernd Schmidt  <bernds@codesourcery.com>
764
765         * regrename.h: New file.
766         * regrename.c: Include it.  Also include "emit-rtl.h".
767         (struct du_head, struct du_chain, du_head_p DEF_VEC and
768         DEF_VEC_ALLOC_P): Move to regrename.h.
769         (do_replace): Remove declaration.
770         (insn_rr): New variable.
771         (cur_operand): New static variable.
772         (regrename_chain_from_id): Renamed from chain_from_id and no longer
773         static.  All callers changed.
774         (record_operand_use): New static function.
775         (scan_rtx_reg): Use it.
776         (find_best_rename_reg): New function, broken out of rename_chains.
777         (rename_chains): Use it.  Don't update chain regno and nregs here, ...
778         (regrename_do_replace): ... do it here instead.  Renamed from
779         do_replace, and no longer static.  All callers changed.
780         (regrename_analyze): No longer static.  New arg bb_mask.
781         All callers changed.  If bb_mask is nonzero, use it to limit the
782         number of basic blocks we analyze.  If we failed to analyze a block,
783         clear insn operand data.
784         (record_out_operands): New arg insn_info.  Update cur_operand if it is
785         nonnull.
786         (build_def_use): If insn_rr is nonnull, pass an insn_info to
787         record_out_operands, and update cur_operand here as well.
788         (regrename_init, regrename_finish): New functions.
789         (regrename_optimize): Use them.
790         * Makefile.in (regrename.o): Adjust dependencies.
791
792 2011-10-19  Tom de Vries  <tom@codesourcery.com>
793
794         PR tree-optimization/50769
795         * tree-ssa-tail-merge.c (replace_block_by): Calculate phi_vuse2
796         unconditionally.  Handle case that phi_vuse2 is not an SSA_NAME.  Add
797         dummy argument .MEM to phi when increasing number of arguments of phi by
798         redirecting edges to the block with phi.
799
800 2011-10-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
801
802         PR bootstrap/50777
803         * configure.ac: Save and restore CXXFLAGS around
804         gcc_AC_CHECK_DECLS uses.
805         Check for madvise() declaration with g++ if --enable-build-with-cxx.
806         * configure: Regenerate.
807         * config.in: Regenerate.
808         * ggc-page.c (USING_MADVISE): Also check HAVE_DECL_MADVISE.
809
810 2011-10-19  Alexandre Oliva  <aoliva@redhat.com>
811
812         PR debug/49310
813         * var-tracking.c (loc_exp_dep, onepart_aux): New structs.
814         (variable_part): Replace offset with union.
815         (enum onepart_enum, onepart_enum_t): New.
816         (variable_def): Drop cur_loc_changed, add onepart.
817         (value_chain_def, const_value_chain): Remove.
818         (VAR_PART_OFFSET, VAR_LOC_1PAUX): New macros, with checking.
819         (VAR_LOC_DEP_LST, VAR_LOC_DEP_LSTP): New macros.
820         (VAR_LOC_FROM, VAR_LOC_DEPTH, VAR_LOC_DEP_VEC): Likewise.
821         (value_chain_pool, value_chains): Remove.
822         (dropped_values): New.
823         (struct parm_reg): Only if HAVE_window_save.
824         (vt_stack_adjustments): Don't record register arguments.
825         (dv_as_rtx): New.
826         (dv_onepart_p): Return a onepart_enum_t.
827         (onepart_pool): New.
828         (dv_pool): Remove.
829         (dv_from_rtx): New.
830         (variable_htab_free): Release onepart aux data.  Reset flags.
831         (value_chain_htab_hash, value_chain_htab_eq): Remove.
832         (unshare_variable): Use onepart field.  Propagate onepart aux
833         data or offset.  Drop cur_loc_changed.
834         (val_store): Cope with NULL insn.  Rephrase dump output.  Check
835         for unsuitable locs.  Add FIXME on using cselib locs.
836         (val_reset): Remove FIXME of unfounded concerns.
837         (val_resolve): Check for unsuitable locs.  Add FIXME on using
838         cselib locs.
839         (variable_union): Use onepart field, adjust access to offset.
840         (NO_LOC_P): New.
841         (VALUE_CHANGED, DECL_CHANGED): Update doc.
842         (set_dv_changed): Clear NO_LOC_P when changed.
843         (find_loc_in_1pdv): Use onepart field.
844         (intersect_loc_chains): Likewise.
845         (unsuitable_loc): New.
846         (loc_cmp): Keep ENTRY_VALUEs at the end of the loc list.
847         (add_value_chain, add_value_chains): Remove.
848         (add_cselib_value_chains, remove_value_chain): Likewise.
849         (remove_value_chains, remove_cselib_value_chains): Likewise.
850         (canonicalize_loc_order_check): Use onepart.  Drop cur_loc_changed.
851         (canonicalize_values_star, canonicalize_vars_star): Use onepart.
852         (variable_merge_over_cur): Likewise.  Adjust access to offset.
853         Drop cur_loc_changed.
854         (variable_merge_over_src): Use onepart field.
855         (remove_duplicate_values): Likewise.
856         (variable_post_merge_new_vals): Likewise.
857         (find_mem_expr_in_1pdv): Likewise.
858         (dataflow_set_preserve_mem_locs): Likewise.  Drop cur_loc_changed
859         and value chains.
860         (dataflow_set_remove_mem_locs): Likewise.  Use VAR_LOC_FROM.
861         (variable_different_p): Use onepart field.  Move onepart test out
862         of the loop.
863         (argument_reg_set): Drop.
864         (add_uses, add_stores): Preserve but do not record in dynamic
865         tables equivalences for ENTRY_VALUEs and CFA_based addresses.
866         Avoid unsuitable address expressions.
867         (EXPR_DEPTH): Unlimit.
868         (EXPR_USE_DEPTH): Repurpose PARAM_MAX_VARTRACK_EXPR_DEPTH.
869         (prepare_call_arguments): Use DECL_RTL_IF_SET.
870         (dump_var): Adjust access to offset.
871         (variable_from_dropped, recover_dropped_1paux): New.
872         (variable_was_changed): Drop cur_loc_changed.  Use onepart.
873         Preserve onepart aux in empty_var.  Recover empty_var and onepart
874         aux from dropped_values.
875         (find_variable_location_part): Special-case onepart.  Adjust
876         access to offset.
877         (set_slot_part): Use onepart.  Drop cur_loc_changed.  Adjust
878         access to offset.  Initialize onepaux.  Drop value chains.
879         (delete_slot_part): Drop value chains.  Use VAR_LOC_FROM.
880         (VEC (variable, heap), VEC (rtx, stack)): Define.
881         (expand_loc_callback_data): Drop dummy, cur_loc_changed,
882         ignore_cur_loc.  Add expanding, pending, depth.
883         (loc_exp_dep_alloc, loc_exp_dep_clear): New.
884         (loc_exp_dep_insert, loc_exp_dep_set): New.
885         (notify_dependents_of_resolved_value): New.
886         (update_depth, vt_expand_var_loc_chain): New.
887         (vt_expand_loc_callback): Revamped.
888         (resolve_expansions_pending_recursion): New.
889         (INIT_ELCD, FINI_ELCD): New.
890         (vt_expand_loc): Use the new macros above.  Drop ignore_cur_loc
891         parameter, adjust all callers.
892         (vt_expand_loc_dummy): Drop.
893         (vt_expand_1pvar): New.
894         (emit_note_insn_var_location): Operate on non-debug decls only.
895         Revamp multi-part cur_loc recomputation and one-part expansion.
896         Drop cur_loc_changed.  Adjust access to offset.
897         (VEC (variable, heap)): Drop.
898         (changed_variables_stack, changed_values_stack): Drop.
899         (check_changed_vars_0, check_changed_vars_1): Remove.
900         (check_changed_vars_2, check_changed_vars_3): Remove.
901         (values_to_stack, remove_value_from_changed_variables): New.
902         (notify_dependents_of_changed_value, process_changed_values): New.
903         (emit_notes_for_changes): Revamp onepart updates.
904         (emit_notes_for_differences_1): Use onepart.  Drop cur_loc_changed
905         and value chains.  Propagate onepaux.  Recover empty_var and onepaux
906         from dropped_values.
907         (emit_notes_for_differences_2): Drop value chains.
908         (emit_notes_in_bb): Adjust.
909         (vt_emit_notes): Drop value chains, changed_variables_stack.
910         Initialize and release dropped_values.
911         (create_entry_value): Revamp.
912         (vt_add_function_parameter): Use new interface.
913         (note_register_arguments): Remove.
914         (vt_initialize): Drop value chains and register arguments.
915         (vt_finalize): Drop value chains.  Release windowed_parm_regs only
916         if HAVE_window_save.
917         * rtl.h: Document various pass-local uses of RTL flags.
918         * tree.h (DECL_RTL_KNOWN_SET): New.
919         * doc/invoke.texi (param max-vartrack-expr-depth): Update
920         description and default.
921
922 2011-10-19  Georg-Johann Lay  <avr@gjlay.de>
923
924         PR target/50447
925         * config/avr/avr.md (cc): New alternative out_plus_noclobber.
926         (adjust_len): Ditto.
927         (addhi3): Don't pipe through short; use gen_int_mode instead.
928         Prior to reload, expand to gen_addhi3_clobber.
929         (*addhi3): Use avr_out_plus_noclobber if applicable, use
930         out_plus_noclobber in cc and adjust_len attribute.
931         (addhi3_clobber): 2 new RTL peepholes.
932         (addhi3_clobber): New insn.
933         * config/avr/avr-protos.h: (avr_out_plus_noclobber): New prototype.
934         * config/avr/avr.c (avr_out_plus_noclobber): New function.
935         (notice_update_cc): Handle CC_OUT_PLUS_NOCLOBBER.
936         (avr_out_plus_1): Tweak if only MSB is +/-1 and other bytes are 0.
937         Set cc0 to set_zn for adiw on 16-bit values.
938         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS_NOCLOBBER.
939         (expand_epilogue): No need to add 0 to frame_pointer_rtx.
940
941 2011-10-19  Richard Guenther  <rguenther@suse.de>
942
943         PR middle-end/50780
944         * tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
945         the condition is properly gimple before using it.
946         * tree-eh (stmt_could_throw_1_p): Properly extract the
947         operation type from comparisons.
948
949 2011-10-19  Roland Stigge  <stigge@antcom.de>
950
951         PR translation/48638
952         * plugin.c (add_new_plugin): Fix typo in fatal_error message.
953
954 2011-10-19  Roland Stigge  <stigge@antcom.de>
955
956         PR translation/49517
957         * config/rx/rx.c (rx_print_operand): Fix typo in warning message.
958
959 2011-10-19  Richard Guenther  <rguenther@suse.de>
960
961         PR middle-end/50768
962         * gimple-fold.c (gimplify_and_update_call_from_tree): Rewrite.
963
964 2011-10-19  Andrey Belevantsev  <abel@ispras.ru>
965
966         PR rtl-optimization/50340
967         * sel-sched-ir.c (update_target_availability): LHS register
968         availability is not known if the unavailable LHS of the other
969         expression is a different register.
970
971 2011-10-19  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
972
973         PR target/50310
974         * config/spu/spu.c (spu_emit_vector_compare): Support unordered
975         floating-point comparisons.
976
977 2011-10-19  Jan Hubicka  <jh@suse.cz>
978
979         * cgraphunit.c (handle_alias_pairs): Also handle wekref with
980         destination declared.
981         (output_weakrefs): New function.
982         * varpool.c (varpool_create_variable_alias): Handle external aliases.
983
984 2011-10-19  Jakub Jelinek  <jakub@redhat.com>
985
986         * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
987         second argument instead of mode.
988
989 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
990
991         * config/i386/i386.c (ix86_expand_vec_perm): In merge_two use
992         mode SUBREG of operands[0] as target.
993         (valid_perm_using_mode_p): Don't ignore higher bits of d->perm.
994         (expand_vec_pshufb): For V8SImode vmode emit avx2_permvarv8si.
995         (expand_vec_perm_1): Handle identity and some broadcast
996         permutations.
997         (expand_vec_perm_interleave2): Handle also 32-byte modes, using
998         vperm2[fi]128 or vpunpck[lh]* followed by single insn permutation.
999         For d->testing_p return true earlier to avoid creating more GC
1000         garbage.
1001         (expand_vec_perm_vpermq_perm_1): New function.
1002         (expand_vec_perm_vpshufb2_vpermq): For d->testing_p return true
1003         earlier to avoid creating more GC garbage.  Fix handling of
1004         V16HImode.  Avoid some SUBREGs in SET_DEST.
1005         (expand_vec_perm_broadcast_1): Return false for 32-byte integer
1006         vector modes.
1007         (expand_vec_perm_vpshufb4_vpermq2): New function.
1008         (ix86_expand_vec_perm_builtin_1): Call expand_vec_perm_vpermq_perm_1
1009         and expand_vec_perm_vpshufb4_vpermq2.
1010
1011 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1012
1013         * config/arm/driver-arm.c (host_detect_local_cpu): Close the file
1014         before exiting.
1015
1016 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1017
1018         PR tree-optimization/50717
1019         * tree-ssa-math-opts.c (is_widening_mult_p): Remove the 'type'
1020         parameter.  Calculate 'type' from stmt.
1021         (convert_mult_to_widen): Update call the is_widening_mult_p.
1022         (convert_plusminus_to_widen): Likewise.
1023
1024 2011-10-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1025
1026         * config/spu/spu.c (struct machine_function): New data structure.
1027         (spu_init_machine_status): New function.
1028         (spu_option_override): Install it.
1029         (get_pic_reg): Set and use cfun->machine->pic_reg.
1030         (spu_split_immediate): Do not set crtl->uses_pic_offset_table.
1031         (need_to_save_reg): Use cfun->machine->pic_reg instead of
1032         checking crtl->uses_pic_offset_table.
1033         (spu_expand_prologue): Likewise.
1034
1035 2011-10-18  Jakub Jelinek  <jakub@redhat.com>
1036
1037         PR tree-optimization/50735
1038         * function.c (gimplify_parameters): Use create_tmp_var instead of
1039         create_tmp_reg.  If parm is not TREE_ADDRESSABLE and type is complex
1040         or vector type, set DECL_GIMPLE_REG_P.
1041
1042 2011-10-18  Andrew Stubbs  <ams@codesourcery.com>
1043
1044         * config.host (arm*-*-linux*): Add driver-arm.o and x-arm.
1045         * config/arm/arm.opt: Add 'native' processor_type and
1046         arm_arch enum values.
1047         * config/arm/arm.h (host_detect_local_cpu): New prototype.
1048         (EXTRA_SPEC_FUNCTIONS): New define.
1049         (MCPU_MTUNE_NATIVE_SPECS): New define.
1050         (DRIVER_SELF_SPECS): New define.
1051         * config/arm/driver-arm.c: New file.
1052         * config/arm/x-arm: New file.
1053         * doc/invoke.texi (ARM Options): Document -mcpu=native,
1054         -mtune=native and -march=native.
1055
1056 2011-10-18  Alexander Monakov  <amonakov@ispras.ru>
1057
1058         PR rtl-optimization/50205
1059         * sel-sched.c (count_occurrences_1): Simplify on the assumption that
1060         p->x is a register.  Forbid substitution when the same register is
1061         found in a different mode.
1062         (count_occurrences_equiv): Assert that 'what' is a register.
1063
1064 2011-10-18  Richard Guenther  <rguenther@suse.de>
1065
1066         PR tree-optimization/50767
1067         * tree-ssa-pre.c (create_expression_by_pieces): Update the
1068         folded statement.
1069
1070 2011-10-18  Julian Brown  <julian@codesourcery.com>
1071
1072         * config/arm/arm.c (arm_block_move_unaligned_straight)
1073         (arm_adjust_block_mem, arm_block_move_unaligned_loop)
1074         (arm_movmemqi_unaligned): New.
1075         (arm_gen_movmemqi): Support unaligned block copies.
1076
1077 2011-10-18  Ira Rosen  <ira.rosen@linaro.org>
1078
1079         * doc/md.texi (vec_widen_ushiftl_hi, vec_widen_ushiftl_lo,
1080         vec_widen_sshiftl_hi, vec_widen_sshiftl_lo): Document.
1081         * tree-pretty-print.c (dump_generic_node): Handle WIDEN_LSHIFT_EXPR,
1082         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1083         (op_code_prio): Likewise.
1084         (op_symbol_code): Handle WIDEN_LSHIFT_EXPR.
1085         * optabs.c (optab_for_tree_code): Handle
1086         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1087         (init-optabs): Initialize optab codes for vec_widen_u/sshiftl_hi/lo.
1088         * optabs.h (enum optab_index): Add OTI_vec_widen_u/sshiftl_hi/lo.
1089         * genopinit.c (optabs): Initialize the new optabs.
1090         * expr.c (expand_expr_real_2): Handle
1091         VEC_WIDEN_LSHIFT_HI_EXPR and VEC_WIDEN_LSHIFT_LO_EXPR.
1092         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
1093         * tree-vectorizer.h (NUM_PATTERNS): Increase to 8.
1094         * tree.def (WIDEN_LSHIFT_EXPR, VEC_WIDEN_LSHIFT_HI_EXPR,
1095         VEC_WIDEN_LSHIFT_LO_EXPR): New.
1096         * cfgexpand.c (expand_debug_expr): Handle new tree codes.
1097         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
1098         vect_recog_widen_shift_pattern.
1099         (vect_handle_widen_mult_by_const): Rename...
1100         (vect_handle_widen_op_by_const): ...to this.  Handle shifts.
1101         Add a new argument, update documentation.
1102         (vect_recog_widen_mult_pattern): Assume that only second
1103         operand can be constant.  Update call to
1104         vect_handle_widen_op_by_const.
1105         (vect_recog_over_widening_pattern): Fix typo.
1106         (vect_recog_widen_shift_pattern): New.
1107         * tree-vect-stmts.c (vectorizable_type_promotion): Handle
1108         widening shifts.
1109         (supportable_widening_operation): Likewise.
1110         * tree-inline.c (estimate_operator_cost): Handle new tree codes.
1111         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1112         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
1113         * config/arm/neon.md (neon_vec_<US>shiftl_<mode>): New.
1114         (vec_widen_<US>shiftl_lo_<mode>, neon_vec_<US>shiftl_hi_<mode>,
1115         vec_widen_<US>shiftl_hi_<mode>, neon_vec_<US>shift_left_<mode>):
1116         Likewise.
1117         * config/arm/predicates.md (const_neon_scalar_shift_amount_operand):
1118         New.
1119         * config/arm/iterators.md (V_innermode): New.
1120         * tree-vect-slp.c (vect_build_slp_tree): Require same shift operand
1121         for widening shift.
1122
1123 2011-10-18  Richard Guenther  <rguenther@suse.de>
1124
1125         * tree-ssa-alias.h (struct pt_solution): Remove
1126         vars_contains_restrict member.
1127         (pt_solutions_same_restrict_base): Remove.
1128         (pt_solution_set): Adjust.
1129         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Remove
1130         vars_contains_restrict handling.
1131         (dump_points_to_solution): Likewise.
1132         (ptr_derefs_may_alias_p): Do not call pt_solutions_same_restrict_base.
1133         * tree-ssa-structalias.c (struct variable_info): Remove is_restrict_var
1134         field.
1135         (new_var_info): Do not initialize it.
1136         (ipa_escaped_pt): Adjust.
1137         (make_constraint_from_restrict): Make the tag global.
1138         (make_constraint_from_global_restrict): New function.
1139         (make_constraint_from_heapvar): Remove.
1140         (create_variable_info_for): Do not make restrict vars point
1141         to NONLOCAL.
1142         (intra_create_variable_infos): Likewise.
1143         (find_what_var_points_to): Remove vars_contains_restrict handling.
1144         (pt_solution_set): Adjust.
1145         (pt_solution_ior_into): Likewise.
1146         (pt_solutions_same_restrict_base): Remove.
1147         (compute_points_to_sets): Do not test is_restrict_var.
1148         * cfgexpand.c (update_alias_info_with_stack_vars): Adjust.
1149         * gimple-pretty-print.c (pp_points_to_solution): Likewise.
1150
1151 2011-10-18  Tom de Vries  <tom@codesourcery.com>
1152
1153         PR tree-optimization/50672
1154         * tree-ssa-dce.c (mark_virtual_operand_for_renaming): New function,
1155         factored out of ...
1156         (mark_virtual_phi_result_for_renaming): Use
1157         mark_virtual_operand_for_renaming.
1158         * tree-flow.h (mark_virtual_operand_for_renaming): Declare.
1159         * tree-ssa-tail-merge.c (release_last_vdef): New function.
1160         (purge_bbs): Add update_vops parameter.  Call release_last_vdef for each
1161         deleted basic block.
1162         (tail_merge_optimize): Add argument to call to purge_bbs.
1163
1164 2011-10-18  Richard Guenther  <rguenther@suse.de>
1165
1166         PR middle-end/50716
1167         * expr.c (get_object_or_type_alignment): New function.
1168         (expand_assignment): Use it.
1169         (expand_expr_real_1): Likewise.
1170
1171 2011-10-18  Dodji Seketeli  <dodji@redhat.com>
1172
1173         PR bootstrap/50760
1174         * input.c (dump_line_table_statistics): Use long, not size_t.
1175
1176 2011-10-17  Eric Botcazou  <ebotcazou@adacore.com>
1177
1178         * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
1179
1180 2011-10-17  Simon Baldwin  <simonb@google.com>
1181             Ian Lance Taylor  <iant@google.com>
1182
1183         * configure.ac: Add --with-native-system-header-dir.  Set and
1184         substitute NATIVE_SYSTEM_HEADER_DIR.  Use native_system_header
1185         when setting target_header_dir.
1186         * config.gcc: Always set native_system_header_dir.
1187         (*-*-gnu*): Set native_system_header_dir.  Don't use t-gnu.
1188         (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir.  Don't
1189         use i386/t-djgpp.
1190         (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
1191         native_system_header_dir.
1192         (spu-*-elf*): Set native_system_header_dir.
1193         * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
1194         @NATIVE_SYSTEM_HEADER_DIR@.
1195         (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
1196         * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
1197         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
1198         STANDARD_INCLUDE_COMPONENT.
1199         (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR.  Rename
1200         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
1201         * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
1202         STANDARD_INCLUDE_COMPONENT.
1203         * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
1204         * config/i386/t-mingw-w32: Likewise.
1205         * config/i386/t-mingw-w64: Likewise.
1206         * config/spu/t-spu-elf: Likewise.
1207         * config/i386/t-djgpp: Remove.
1208         * config/t-gnu: Remove.
1209         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
1210         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
1211         STANDARD_INCLUDE_COMPONENT.
1212         * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
1213         * config/spu/spu-elf.h: Likewise.
1214         * config/vms/xm-vms.h: Likewise.
1215         * config/gnu.h: Likewise.
1216         * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
1217         and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
1218         NATIVE_SYSTME_HEADER_COMPONENT.
1219         * doc/install.texi (Configuration): Document
1220         --with-native-system-header-dir.  Mention it in the documentation
1221         for --with-sysroot and --with-build-sysroot.
1222         * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
1223         STANDARD_INCLUDE_DIR.  Rename STANDARD_INCLUDE_COMPONENT to
1224         NATIVE_SYSTEM_HEADER_COMPONENT.  Rename uses of
1225         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
1226         * doc/fragments.texi (Target Fragment): Don't document
1227         NATIVE_SYSTEM_HEADER_DIR.
1228         * configure, doc/tm.texi: Rebuild.
1229
1230 2011-10-17  Richard Henderson  <rth@redhat.com>
1231
1232         * config/sparc/sparc.md: Use register_or_zero_operand where rJ
1233         is the constraint.
1234
1235         * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
1236         patterns.
1237         * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
1238         * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
1239
1240 2011-10-17  David S. Miller  <davem@davemloft.net>
1241
1242         * config/sparc/sparc-modes.def: Add single entry vector modes for
1243         DImode and SImode.
1244         * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
1245         mode iterators.
1246         (mov<V32:mode>): Revert back to plain SFmode pattern.
1247         (*movsf_insn): Likewise.
1248         (mov<V64:mode>): Revert back to plain DFmode pattern.
1249         (*movdf_insn_sp32): Likewise.
1250         (*movdf_insn_sp32_v9): Likewise.
1251         (*movdf_insn_sp64): Likewise.
1252         (V64 mode splitters) Likewise.
1253         (addsi3): Remove VIS alternatives.
1254         (subsi3): Likewise.
1255         (and<V64I:mode>3): Revert to DImode only pattern.
1256         (and<V64I:mode>3_sp32): Likewise.
1257         (*and<V64I:mode>3_sp64): Likewise.
1258         (and<V32I:mode>3): Likewise.
1259         (*and_not_<V64I:mode>_sp32): Likewise.
1260         (*and_not_<V64I:mode>_sp64): Likewise.
1261         (*and_not_<V32I:mode>): Likewise.
1262         (ior<V64I:mode>3): Likewise.
1263         (*ior<V64I:mode>3_sp32): Likewise.
1264         (*ior<V64I:mode>3_sp64): Likewise.
1265         (ior<V32I:mode>3): Likewise.
1266         (*or_not_<V64I:mode>_sp32): Likewise.
1267         (*or_not_<V64I:mode>_sp64): Likewise.
1268         (*or_not_<V32I:mode>): Likewise.
1269         (xor<V64I:mode>3): Likewise.
1270         (*xor<V64I:mode>3_sp32): Likewise.
1271         (*xor<V64I:mode>3_sp64): Likewise.
1272         (xor<V32I:mode>3): Likewise.
1273         (V64I mode splitters): Likewise.
1274         (*xor_not_<V64I:mode>_sp32): Likewise.
1275         (*xor_not_<V64I:mode>_sp64): Likewise.
1276         (*xor_not_<V32I:mode>): Likewise.
1277         (one_cmpl<V64I:mode>2): Likewise.
1278         (*one_cmpl<V64I:mode>2_sp32): Likewise.
1279         (*one_cmpl<V64I:mode>2_sp64): Likewise.
1280         (one_cmpl<V32I:mode>2): Likewise.
1281         (VM32, VM64, VMALL): New mode iterators.
1282         (vbits, vconstr, vfptype): New mode attributes.
1283         (mov<VMALL:mode>): New expander.
1284         (*mov<VM32:mode>_insn): New insn.
1285         (*mov<VM64:mode>_insn_sp64): New insn.
1286         (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
1287         specifically for the register to memory case.
1288         (vec_init<mode>): New expander.
1289         (VADDSUB): New mode iterator.
1290         (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
1291         with...
1292         (<plusminus_insn><mode>3): New consolidated pattern.
1293         (VL): New mode iterator for logical operations.
1294         (vlsuf): New more attribute.
1295         (vlop): New code iterator.
1296         (vlinsn, vlninsn): New code attributes.
1297         (<code><mode>3): New insn to non-negated vector logical ops.
1298         (*not_<code><mode>3): Likewise for negated variants.
1299         (*nand<mode>_vis): New insn.
1300         (vlnotop): New code iterator.
1301         (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
1302         (one_cmpl<mode>2): New insn.
1303         (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
1304         (bshuffle<VM64:mode>_vis): Likewise.
1305         (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
1306         (fp<plusminus_insn>64_vis): Use V1DI mode.
1307         (VASS mode iterator): Use V1SI not SI mode.
1308         * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
1309         single-entry vector mode changes.
1310         (sparc_expand_builtin): Likewise.
1311         (sparc_expand_vector_init): New function.
1312         * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
1313
1314 2011-10-17  Kai Tietz  <ktietz@redhat.com>
1315
1316         * fold-const.c (simple_operand_p_2): New function.
1317         (fold_truthop): Rename to
1318         (fold_truth_andor_1): function name.
1319         Additionally remove branching creation for logical and/or.
1320         (fold_truth_andor): Handle branching creation for logical and/or here.
1321
1322 2011-10-17  Andi Kleen  <ak@linux.intel.com>
1323
1324         * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
1325
1326 2011-10-17  Georg-Johann Lay  <avr@gjlay.de>
1327
1328         * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
1329         * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
1330         (adjust_len): Add alternative "call".
1331         (isa, enabled): New insn attributes.
1332         (length): Use match_test with AVR_HAVE_JMP_CALL instead of
1333         mcu_mega attribute.
1334         (*sbrx_branch<mode>): Ditto.
1335         (*sbrx_and_branch<mode>): Ditto.
1336         (*sbix_branch): Ditto.
1337         (*sbix_branch_bit7): Ditto.
1338         (*sbix_branch_tmp): Ditto.
1339         (*sbix_branch_tmp_bit7): Ditto.
1340         (jump): Ditto.
1341         (negsi2): Use attribute "isa" instead of assembler dialect.
1342         (extendhisi2): Ditto.
1343         (call_insn, call_value_insn): Set adjust_len attribute.
1344         (indirect_jump): Indent to coding rules.
1345         (call_prologue_saves): Use isa attribute instead of mcu_mega.
1346         (epilogue_restores): Ditto.  Fix setting of SP as described in the
1347         RTX pattern.
1348         (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
1349         and *indirect_jump_avr6.
1350         (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
1351         (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
1352         (*tablejump_rjmp, *tablejump_lib): Remove.
1353         * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
1354
1355 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
1356
1357         PR c++/50757
1358         * doc/invoke.texi ([Wnonnull]): Update.
1359
1360 2011-10-17  Richard Henderson  <rth@redhat.com>
1361
1362         PR 50746
1363         * optabs.c (expand_vec_perm_expr): Fix indexing error.
1364
1365 2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
1366
1367         * configure.ac: Display `yes' if the SystemTap header has been found.
1368         * configure: Regenerate.
1369
1370 2011-10-08  Andi Kleen  <ak@linux.intel.com>
1371
1372         PR other/50636
1373         * config.in, configure: Regenerate.
1374         * configure.ac (madvise): Add to AC_CHECK_FUNCS.
1375         * ggc-page.c (USING_MADVISE): Add.
1376         (page_entry): Add discarded field.
1377         (alloc_page): Check for discarded pages.
1378         (release_pages): Add USING_MADVISE branch.
1379
1380 2011-10-17  Richard Guenther  <rguenther@suse.de>
1381
1382         PR tree-optimization/50729
1383         * tree-vrp.c (extract_range_from_unary_expr_1): Remove redundant test.
1384         (simplify_conversion_using_ranges): Properly test the
1385         intermediate result.
1386
1387 2011-10-15  Tom Tromey  <tromey@redhat.com>
1388             Dodji Seketeli  <dodji@redhat.com>
1389
1390         * ggc.h (ggc_round_alloc_size): Declare new public entry point.
1391         * ggc-none.c (ggc_round_alloc_size): New public stub function.
1392         * ggc-page.c (ggc_alloced_size_order_for_request): New static
1393         function.  Factorized from ggc_internal_alloc_stat.
1394         (ggc_round_alloc_size): New public function.  Uses
1395         ggc_alloced_size_order_for_request.
1396         (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
1397         * ggc-zone.c (ggc_round_alloc_size): New public function extracted
1398         from ggc_internal_alloc_zone_stat.
1399         (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
1400         * toplev.c (general_init): Initialize
1401         line_table->alloced_size_for_request.
1402
1403 2011-10-15  Tom Tromey  <tromey@redhat.com>
1404             Dodji Seketeli  <dodji@redhat.com>
1405
1406         * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New macros.
1407         (num_expanded_macros_counter, num_macro_tokens_counter): Declare
1408         new counters.
1409         (dump_line_table_statistics): Define new function.
1410         * input.h (dump_line_table_statistics): Declare new function.
1411         * toplev.c (dump_memory_report): Call dump_line_table_statistics.
1412
1413 2011-10-15  Tom Tromey  <tromey@redhat.com>
1414             Dodji Seketeli  <dodji@redhat.com>
1415
1416         * doc/cppopts.texi: Document -fdebug-cpp.
1417         * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor options.
1418
1419 2011-10-15  Tom Tromey  <tromey@redhat.com>
1420             Dodji Seketeli  <dodji@redhat.com>
1421
1422         * gcc/diagnostic.h (diagnostic_report_current_module): Add a
1423         location parameter.
1424         * diagnostic.c (diagnostic_report_current_module): Add a location
1425         parameter to the function definition.  Use it instead of
1426         input_location.  Resolve the virtual location rather than just
1427         looking up its map and risking to touch a resulting macro map.
1428         (default_diagnostic_starter): Pass the relevant diagnostic
1429         location to diagnostic_report_current_module.
1430         * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
1431         (virt_loc_aware_diagnostic_finalizer): Likewise.
1432         (diagnostic_report_current_function): Pass the
1433         relevant location to diagnostic_report_current_module.
1434         * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
1435         new function.
1436         * toplev.c (general_init): By default, use the new
1437         virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
1438         * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
1439
1440 2011-10-15  Tom Tromey  <tromey@redhat.com>
1441             Dodji Seketeli  <dodji@redhat.com>
1442
1443         * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
1444         * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
1445         preprocessor related options.
1446
1447 2011-10-15  Tom Tromey  <tromey@redhat>
1448             Dodji Seketeli  <dodji@redhat.com>
1449
1450         * input.h (struct expanded_location): Move to libcpp/line-map.h.
1451         (LOCATION_COLUMN): New accessor
1452         (in_system_header_at): Use linemap_location_in_system_header_p.
1453         * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
1454         touching the internals of struct line_map.  Use the public API instead.
1455         (diagnostic_report_diagnostic): Don't use relational operator '<'
1456         on virtual locations.  Use linemap_location_before_p instead.
1457         * input.c (expand_location): Adjust to expand to the tokens'
1458         spelling location when macro location tracking is on.
1459
1460
1461 2011-10-08  Andi Kleen  <ak@linux.intel.com>
1462
1463         * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
1464
1465 2011-10-13  Andi Kleen  <ak@linux.intel.com>
1466
1467         * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
1468
1469 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
1470
1471         PR tree-optimization/50727
1472         * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
1473         DEF_STMT to the list of statements to be replaced by the
1474         pattern statements.
1475
1476 2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>
1477
1478         PR rtl-optimization/50615
1479         * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
1480
1481 2011-10-16  Jakub Jelinek  <jakub@redhat.com>
1482
1483         PR tree-optimization/50596
1484         * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
1485         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
1486         vect_recog_bool_pattern.
1487         (check_bool_pattern, adjust_bool_pattern_cast,
1488         adjust_bool_pattern, vect_recog_bool_pattern): New functions.
1489
1490 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
1491
1492         * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
1493         treat the first load of the node as the first element in its
1494         interleaving chain.
1495         * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
1496         necessary and possible.
1497         (vect_build_slp_tree): Add new argument.  Allow load groups of any size
1498         in basic blocks.  Keep all the loads for further permutation check.
1499         Use the new argument to determine if there is a permutation.  Update
1500         the recursive calls.
1501         (vect_supported_load_permutation_p): Allow subchains of interleaving
1502         chains in basic block vectorization.
1503         (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
1504         Check load permutation based on the new parameter.
1505         (vect_schedule_slp_instance): Don't start from the first element in
1506         interleaving chain unless the loads are permuted.
1507
1508 2011-10-15  Jan Hubicka  <jh@suse.cz>
1509
1510         PR target/48668
1511         PR target/50689
1512         * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
1513         after function body.
1514
1515 2011-10-15  Richard Henderson  <rth@redhat.com>
1516
1517         * tree-vect-slp.c: Include langhooks.h.
1518         (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
1519         (vect_transform_slp_perm_load): Use can_vec_perm_expr_p.  Simplify
1520         mask creation for VEC_PERM_EXPR.
1521         * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
1522         not the builtin.
1523         (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
1524         * Makefile.in (tree-vect-slp.o): Update dependency.
1525         * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
1526
1527 2011-10-15  Alan Modra  <amodra@gmail.com>
1528
1529         PR bootstrap/50738
1530         * ifcvt.c (dead_or_predicable): Revert accidental commit with
1531         HAVE_simple_return test.
1532
1533 2011-10-15  Alan Modra  <amodra@gmail.com>
1534
1535         * ifcvt.c (dead_or_predicable): Disable if-conversion when
1536         doing so is likely to kill a shrink-wrapping opportunity.
1537
1538         PR rtl-optimization/49941
1539         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
1540
1541         * rtl.h (set_return_jump_label): Declare.
1542         * function.c (set_return_jump_label): New function, extracted..
1543         (thread_prologue_and_epilogue_insns): ..from here.  Use it in
1544         another instance to set return jump_label.
1545         * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
1546         * reorg.c (find_end_label): Likewise.
1547
1548 2011-10-14  David S. Miller  <davem@davemloft.net>
1549
1550         * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
1551         with a more complete cpp test.
1552         * config/sparc/linux64.h: Likewise.
1553         * config/sparc/linux.h: Likewise.
1554         * config/sparc/sparc.opt (sparc_debug): New target variable.
1555         (mdebug): New target option.
1556         * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
1557         TARGET_DEBUG_OPTIONS): New defines.
1558         * config/sparc/sparc.c (debug_target_flag_bits,
1559         debug_target_flags): New functions.
1560         (sparc_option_override): Add name strings back to cpu_table[].
1561         Parse -mdebug string.  When TARGET_DEBUG_OPTIONS is true, print
1562         out the target flags before and after override processing as well
1563         as the selected cpu.  If MASK_V8PLUS, make sure that the selected
1564         cpu is at least v9.
1565
1566 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
1567
1568         PR target/49263
1569         * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
1570         * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
1571         * config/sh/sh.md (tstsi_t): Name existing insn.  Make inner
1572         and instruction commutative.
1573         (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
1574         tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
1575         tstsi_t_zero_extract_subreg_xor_little,
1576         tstsi_t_zero_extract_subreg_xor_big): New insns.
1577         (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
1578         asm output.
1579         (*andsi_compact): Reorder alternatives so that K08 is considered first.
1580
1581 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
1582
1583         PR target/50354
1584         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
1585         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
1586
1587 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
1588
1589         * invoke.texi (AVR Options): Avoid \leq{}.
1590
1591 2011-10-14  Kai Tietz  <ktietz@redhat.com>
1592
1593         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
1594         transformation the operands have compatible types.
1595
1596 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1597
1598         * config/i386/sse.md (vec_widen_smult_hi_v8hi,
1599         vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
1600         vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
1601         mode iterator and any_extend code iterator.
1602         (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
1603         (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
1604         also for TARGET_SSE4_1 using pmuldq insn.
1605         (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
1606         (sse2_sse4_1): New code attr.
1607         (udot_prodv4si): Macroize using any_extend code iterator.
1608         (<s>dot_prodv8si): New expander.
1609
1610 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
1611
1612         * config/i386/i386.c (atom_cost): Changed cost for loading
1613         QImode using movzbl.
1614
1615 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
1616
1617         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
1618         change on October 11th, 2011.
1619
1620 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1621
1622         * config/i386/sse.md (vec_interleave_high<mode>,
1623         vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
1624         * config/i386/i386.c (expand_vec_perm_interleave3): New function.
1625         (ix86_expand_vec_perm_builtin_1): Call it.
1626
1627 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
1628
1629         Fix thinko from r179765
1630         * config/avr/avr.c (avr_option_override): Don't override
1631         flag_omit_frame_pointer if not actually needed.
1632
1633 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
1634
1635         PR target/46278
1636         * doc/invoke.texi (AVR Options): Document -mstrict-X.
1637
1638         * config/avr/avr.opt (-mstrict-X): New option.
1639         (avr_strict_X): New variable reflecting -mstrict-X.
1640         * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
1641         outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
1642         (avr_legitimate_address_p): Pass outer_code to
1643         avr_reg_ok_for_addr_p and use that function in case PLUS.
1644         (avr_mode_code_base_reg_class): Depend on avr_strict_X.
1645         (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
1646         (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
1647
1648 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1649
1650         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
1651         of VI_128.
1652
1653         * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
1654         (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
1655         Use <sseinsnmode> instead of TI in mode attr.
1656
1657 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1658
1659         * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
1660         * config/arm/linux-atomic.c: Change comment to point to 64bit version.
1661         (SYNC_LOCK_RELEASE): Instantiate 64bit version.
1662         * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
1663
1664 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1665
1666         * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
1667         (arm_output_strex): Support strexd.
1668         (arm_output_it): New helper to output it in Thumb2 mode only.
1669         (arm_output_sync_loop): Support DI mode.  Change comment to
1670         not support const_int.
1671         (arm_expand_sync): Support DI mode.
1672         * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
1673         and LDREXD.
1674         * config/arm/iterators.md (NARROW): move from sync.md.
1675         (QHSD): New iterator for all current ARM integer modes.
1676         (SIDI): New iterator for SI and DI modes only.
1677         * config/arm/sync.md (sync_predtab): New mode_attr.
1678         (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
1679         (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
1680         (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
1681         (sync_nandsi): Fold into sync_nand<mode>.
1682         (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
1683         (sync_new_nandsi): Fold into sync_new_nand<mode>.
1684         (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
1685         (sync_old_nandsi): Fold into sync_old_nand<mode>.
1686         (sync_compare_and_swap<mode>): Support SI & DI.
1687         (sync_lock_test_and_set<mode>): Likewise.
1688         (sync_<sync_optab><mode>): Likewise.
1689         (sync_nand<mode>): Likewise.
1690         (sync_new_<sync_optab><mode>): Likewise.
1691         (sync_new_nand<mode>): Likewise.
1692         (sync_old_<sync_optab><mode>): Likewise.
1693         (sync_old_nand<mode>): Likewise.
1694         (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
1695         (arm_sync_lock_test_and_setsi): Likewise.
1696         (arm_sync_new_<sync_optab>si): Likewise.
1697         (arm_sync_new_nandsi): Likewise.
1698         (arm_sync_old_<sync_optab>si): Likewise.
1699         (arm_sync_old_nandsi): Likewise.
1700         (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
1701         (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
1702         (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
1703         (arm_sync_new_nand<mode> NARROW): Likewise.
1704         (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
1705         (arm_sync_old_nand<mode> NARROW): Likewise.
1706
1707 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1708
1709         PR target/48126
1710         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
1711
1712 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
1713
1714         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
1715
1716 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1717
1718         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
1719
1720 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1721
1722         * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
1723         on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
1724
1725 2011-10-14  Richard Guenther  <rguenther@suse.de>
1726
1727         PR tree-optimization/50723
1728         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
1729
1730 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1731
1732         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
1733         objc/objc-map.c.
1734
1735 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
1736
1737         PR c++/17212
1738         * doc/invoke.texi ([Wformat-zero-length]): Update.
1739
1740 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1741
1742         PR bootstrap/50699
1743         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
1744         build for powerpc targets.  (darwin_patch_builtins): Only build for
1745         powerpc targets.
1746
1747 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
1748
1749         * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
1750         (avx_cvtdq2pd256_2): ... this.
1751         (sseunpackfltmode): New mode attr.
1752         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
1753         vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
1754         using VI2_AVX2 iterator.
1755         (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
1756
1757 2011-10-13  David S. Miller  <davem@davemloft.net>
1758
1759         * config/sparc/sparc.md (plusminus): New code iterator.
1760         (plusminus_insn): New code attr.
1761         (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
1762         using plusminus and plusminus_insn.
1763         (fpadd64_vis, fpsub64_vis): Likewise.
1764
1765 2011-10-13  Richard Henderson  <rth@redhat.com>
1766
1767         * doc/md.texi (vec_perm): Document fallback to byte permutation.
1768         * genopinit.c (optabs): Add vec_perm_const.
1769         * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
1770         Reject non-vector modes.  Allow fallback to byte permutation.
1771         (expand_vec_perm_expr_1): Split out from ...
1772         (expand_vec_perm_expr): ... here.  Allow fallback to byte permutation.
1773         * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
1774         * tree-vect-generic.c (lower_vec_perm): Update for name change.
1775
1776 2011-10-13  Richard Henderson  <rth@redhat.com>
1777
1778         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
1779
1780         * config/rs6000/spu.md (vec_permv16qi): New pattern.
1781
1782         * config/i386/i386.c (ix86_expand_vec_perm_const): New.
1783         * config/i386/i386-protos.h: Update.
1784         * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
1785         (vec_perm_const<VEC_PERM_CONST>): New expander.
1786
1787         * optabs.c (expand_vector_broadcast): New.
1788         (expand_binop): Expand scalar shifts of vectors to vector shifts
1789         of vectors, if the former isn't supported.
1790         * tree-vect-generic.c (expand_vector_operations_1): Don't do that
1791         here; always simplify to scalar shift of vector if possible.
1792
1793         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
1794         test for vector splat.
1795
1796 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1797
1798         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
1799
1800 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1801             Richard Guenther  <rguenther@suse.de>
1802
1803         * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
1804         or complex vars even if their DECL_UID is in not_reg_needs bitmap.
1805
1806 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
1807
1808         * config/i386/sse.md (reduc_umin_v8hi): New pattern.
1809         * config/i386/i386.c (ix86_build_const_vector): Handle
1810         also V32QI, V16QI, V16HI and V8HI modes.
1811         (emit_reduc_half): New function.
1812         (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
1813         Use emit_reduc_half helper function.
1814
1815 2011-10-13  Lawrence Crowl  <crowl@google.com>
1816             Diego Novillo  <dnovillo@google.com>
1817
1818         * lto-streamer-in.c (input_struct_function_base): Factor out of ...
1819         (input_function): ... here.
1820         * lto-streamer-out.c (output_struct_function_base): Factor out of ...
1821         (output_function): ... here.
1822
1823 2011-10-13  Gabriel Charette  <gchare@google.com>
1824             Diego Novillo  <dnovillo@google.com>
1825
1826         * streamer-hooks.h (struct streamer_hooks): Add hooks
1827         input_location and output_location.
1828         * lto-streamer-in.c (lto_input_location): Use
1829         streamer_hooks.input_location, if set.
1830         * lto-streamer-out.c (lto_output_location): Use
1831         streamer_hooks.output_location, if set.
1832
1833 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
1834
1835         * doc/invoke.texi (SPARC options): Document -mfix-at697f.
1836         * config/sparc/sparc.opt (mfix-at697f): New option.
1837         * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
1838         (sparc_reorg): New function.
1839
1840 2011-10-13  Richard Guenther  <rguenther@suse.de>
1841
1842         PR tree-optimization/50712
1843         * ipa-split.c (split_function): Always re-gimplify parameters
1844         when they are not gimple vals before passing them.  Properly
1845         check for type compatibility.
1846
1847 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1848
1849         * function.c (gimplify_parameters): Set number of arguments of call to
1850         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
1851
1852 2011-10-13  Tom de Vries  <tom@codesourcery.com>
1853
1854         * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
1855         for static const strings.
1856         * varasm.c (build_constant_desc): Generate the memory location of the
1857         constant using gen_const_mem.
1858
1859 2011-10-13  Richard Guenther  <rguenther@suse.de>
1860
1861         PR tree-optimization/50698
1862         * tree-data-ref.c (split_constant_offset_1): Also process
1863         offsets of &MEM.
1864
1865 2011-10-12  David S. Miller  <davem@davemloft.net>
1866
1867         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
1868         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
1869         unspecs.
1870         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
1871         of a vec_concat.
1872         (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
1873         (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
1874         Reimplement as unspecs and remove inaccurate comments.
1875         (vis3_shift_patname): New code attr.
1876         (<vis3_shift_insn><vbits>_vis): Rename to
1877         "v<vis3_shift_patname><mode>3".
1878         (vis3_addsub_ss_patname): New code attr.
1879         (<vis3_addsub_ss_insn><vbits>_vis): Rename to
1880         "<vis3_addsub_ss_patname><mode>3".
1881         * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
1882         accommodate pattern name changes.
1883
1884         * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
1885         to zero when assembler lacks support for such instructions.
1886         * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
1887         and MASK_FMAF in defaults when assembler lacks necessary support.
1888
1889 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
1890
1891         * config/i386/sse.md (vec_unpacks_lo_<mode>,
1892         vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
1893         vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
1894         * config/i386/i386.c (ix86_expand_sse_unpack): Handle
1895         V32QImode, V16HImode and V8SImode for TARGET_AVX2.
1896
1897         * config/i386/sse.md (vec_avx2): New mode_attr.
1898         (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
1899         (mul<mode>3): ... this.
1900
1901         * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
1902         * config/i386/i386.c (ix86_expand_vec_perm): Handle
1903         V16QImode and V32QImode for TARGET_AVX2.
1904         (MAX_VECT_LEN): Increase to 32.
1905         (expand_vec_perm_blend): Add support for 32-byte integer
1906         vectors with TARGET_AVX2.
1907         (valid_perm_using_mode_p): New function.
1908         (expand_vec_perm_pshufb): Add support for 32-byte integer
1909         vectors with TARGET_AVX2.
1910         (expand_vec_perm_vpshufb2_vpermq): New function.
1911         (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
1912         (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
1913         with TARGET_AVX2.
1914         (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
1915         and expand_vec_perm_vpshufb2_vpermq_even_odd.
1916         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
1917         32-byte integer vector modes.
1918         (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
1919         (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
1920         (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
1921         4 new operands.
1922         (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
1923         match_dup, instead add 4 new operands and require they have
1924         right cross-lane values.
1925         (avx2_permv4di): Change into define_expand.
1926         (avx2_permv4di_1): New instruction.
1927         (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
1928         for "xm" constrained operand.
1929         (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
1930
1931         * config/i386/sse.md (avx2_gathersi<mode>,
1932         avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
1933         match_scratch, change memory_operand to register_operand,
1934         add (mem:BLK (scratch)) use.
1935         (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
1936         *avx2_gatherdi<mode>256): Add clobber of match_scratch,
1937         add earlyclobber to the output operand and match_scratch,
1938         add (mem:BLK (scratch)) use, change the other mem to match_operand.
1939         Use %p6 instead of %c6 in the pattern.
1940         * config/i386/i386.c (ix86_expand_builtin): Adjust for
1941         operand 2 being a Pmode register_operand instead of memory_operand.
1942
1943 2011-10-12  Kai Tietz  <ktietz@redhat.com>
1944
1945         * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
1946
1947 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
1948
1949         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
1950
1951 2011-10-12  Richard Guenther  <rguenther@suse.de>
1952
1953         * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
1954         of the first store we visit in a basic-block.
1955         (get_continuation_for_phi): Search for a candidate VUSE that
1956         might dominates all others.  Do pairwise disambiguation against
1957         that candidate.
1958
1959 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
1960
1961         PR tree-optimization/50189
1962         * tree-vrp.c (extract_range_from_assert): Use the type of
1963         the variable, not the limit.
1964
1965 2011-10-12  Richard Guenther  <rguenther@suse.de>
1966
1967         PR tree-optimization/50700
1968         * tree-object-size.c (addr_object_size): Simplify and treat
1969         MEM_REF bases consistently.
1970
1971 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
1972
1973         * function.c (prepare_shrink_wrap, bb_active_p): New function.
1974         (thread_prologue_and_epilogue_insns): Use bb_active_p.  Call
1975         prepare_shrink_wrap, then recompute bb_active_p for the last block.
1976
1977 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
1978
1979         PR c/50565
1980         * convert.c (convert_to_integer): Do not narrow operands of
1981         pointer subtraction.
1982
1983 2011-10-12  Nick Clifton  <nickc@redhat.com>
1984
1985         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
1986         emit a .eabi_attribute assembler directive, possibly with a
1987         comment attached.
1988         * config/arm/arm.c (arm_file_start): Use the new macro.
1989         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
1990
1991 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
1992
1993         PR target/49939
1994         * config/avr/avr.md (*movqi): Rename to movqi_insn.
1995         (*call_insn): Rename to call_insn.
1996         (*call_value_insn): Rename to call_value_insn.
1997         * config/avr/avr.c (avr_2word_insn_p): New static function.
1998         (jump_over_one_insn_p): Use it.
1999
2000 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
2001
2002         * expr.h (copy_blkmode_to_reg): Declare.
2003         * expr.c (copy_blkmode_to_reg): New function.
2004         (expand_assignment): Don't expand register RESULT_DECLs before
2005         the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
2006         RESULT_DECL register.
2007         (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
2008         * stmt.c (expand_return): Move BLKmode-to-register code into
2009         copy_blkmode_to_reg.
2010
2011 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2012
2013         PR target/49965
2014         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
2015         (mov<F:mode>cc): Likewise.
2016
2017 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2018
2019         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
2020
2021 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2022
2023         * tree.h (built_in_decls): Delete old interface with two parallel
2024         arrays to hold standard builtin declarations, and replace it with
2025         a function based interface that can support creating builtins on
2026         the fly in the future.  Change all uses, and poison the old
2027         names.  Make sure 0 is not a legitimate builtin index.
2028         (implicit_built_in_decls): Ditto.
2029         (built_in_info): Ditto.
2030         (BUILTIN_VALID_P): Ditto.
2031         (builtin_decl_explicit): Ditto.
2032         (builtin_decl_implicit): Ditto.
2033         (set_builtin_decl): Ditto.
2034         (set_builtin_decl_implicit_p): Ditto.
2035         (builtin_decl_explicit_p): Ditto.
2036         (builtin_decl_implicit_p): Ditto.
2037         * tree-complex.c (expand_complex_libcall): Ditto.
2038         * tree-loop-distribution.c (generate_memset_zero): Ditto.
2039         * tree-ssa-strlen.c (get_string_length): Ditto.
2040         (handle_builtin_strcpy): Ditto.
2041         (handle_builtin_strcat): Ditto.
2042         * tree.c (iterative_hash_expr): Ditto.
2043         (local_define_builtin): Ditto.
2044         (build_common_builtin_nodes): Ditto.
2045         * builtins.c (built_in_decls): Ditto.
2046         (implicit_built_in_decls): Ditto.
2047         (built_in_info): Ditto
2048         (expand_builtin_classify_type): Ditto.
2049         (mathfn_built_in_1): Ditto.
2050         (expand_builtin_cexpi): Ditto.
2051         (expand_builtin_mempcpy_args): Ditto.
2052         (expand_builtin_stpcpy): Ditto.
2053         (gimplify_va_arg_expr): Ditto.
2054         (expand_builtin_sync_operation): Ditto.
2055         (build_builtin_expect_predicate): Ditto.
2056         (fold_builtin_memory_op): Ditto.
2057         (fold_builtin_strcpy): Ditto.
2058         (fold_builtin_stpcpy): Ditto.
2059         (fold_builtin_strncpy): Ditto.
2060         (fold_builtin_interclass_mathfn): Ditto.
2061         (fold_builtin_classify): Ditto.
2062         (fold_builtin_2): Ditto.
2063         (fold_builtin_strstr): Ditto.
2064         (fold_builtin_strrchr): Ditto.
2065         (fold_builtin_strpbrk): Ditto.
2066         (fold_builtin_strcat): Ditto.
2067         (fold_builtin_strncat): Ditto.
2068         (fold_builtin_strcspn): Ditto.
2069         (fold_builtin_fputs): Ditto.
2070         (fold_builtin_sprintf): Ditto.
2071         (fold_builtin_snprintf): Ditto.
2072         (expand_builtin_memory_chk): Ditto.
2073         (fold_builtin_memory_chk): Ditto.
2074         (fold_builtin_stxcpy_chk): Ditto.
2075         (fold_builtin_strncpy_chk): Ditto.
2076         (fold_builtin_strcat_chk): Ditto.
2077         (fold_builtin_strncat_chk): Ditto.
2078         (fold_builtin_sprintf_chk_1): Ditto.
2079         (fold_builtin_snprintf_chk_1): Ditto.
2080         (fold_builtin_printf): Ditto.
2081         (fold_builtin_fprintf): Ditto.
2082         (fold_call_stmt): Ditto.
2083         (set_builtin_user_assembler_name): Ditto.
2084         * tree-emutls.c (emutls_common_1): Ditto.
2085         * omp-low.c (scan_omp): Ditto.
2086         (lower_rec_input_clauses): Ditto.
2087         (lower_reduction_clauses): Ditto.
2088         (expand_parallel_call): Ditto.
2089         (expand_task_call): Ditto.
2090         (maybe_catch_exception): Ditto.
2091         (optimize_omp_library_calls): Ditto.
2092         (expand_omp_for_generic): Ditto.
2093         (expand_omp_for_static_nochunk): Ditto.
2094         (expand_omp_for_static_chunk): Ditto.
2095         (expand_omp_sections): Ditto.
2096         (expand_omp_atomic_fetch_op): Ditto.
2097         (expand_omp_atomic_pipeline): Ditto.
2098         (expand_omp_atomic_mutex): Ditto.
2099         (lower_omp_single_simple): Ditto.
2100         (lower_omp_single_copy): Ditto.
2101         (lower_omp_master): Ditto.
2102         (lower_omp_ordered): Ditto.
2103         (lower_omp_critical): Ditto.
2104         * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
2105         * builtins.c (DEF_BUILTIN_STUB): Ditto.
2106         (BUILT_IN_NONE): Ditto.
2107         * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
2108         * gimple-low.c (lower_function_body): Ditto.
2109         (lower_builtin_setjmp): Ditto.
2110         * c-decl.c (merge_decls): Ditto.
2111         * tree-eh.c (lower_resx): Ditto.
2112         (lower_resx): Ditto.
2113         (lower_eh_dispatch): Ditto.
2114         * function (gimplify_parameters): Ditto.
2115         * c-typeck.c (build_function_call_vec): Ditto.
2116         * gimplify.c (build_stack_save_restore): Ditto.
2117         (gimplify_vla_decl): Ditto.
2118         (gimplify_modify_expr_to_memcpy): Ditto.
2119         (gimplify_modify_expr_to_memset): Ditto.
2120         (gimplify_variable_sized_compare): Ditto.
2121         (gimplify_function_tree): Ditto.
2122         * calls.c (emit_call_1): Ditto.
2123         * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
2124         * tree-nested.c (convert_nl_goto_reference): Ditto.
2125         (convert_tramp_reference_op): Ditto.
2126         (finalize_nesting_tree_1): Ditto.
2127         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
2128         (tree_ssa_prefetch_arrays): Ditto.
2129         * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
2130         * system.h (built_in_decls): Ditto.
2131         (implicit_built_in_decls): Ditto.
2132         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
2133         * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
2134         * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
2135         (ix86_veclibabi_svml): Ditto.
2136         (ix86_veclibabi_acml): Ditto.
2137         * config/vms/vms.c (vms_patch_builtins): Ditto.
2138         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
2139         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
2140         (rs6000_builtin_vectorized_libmass): Ditto.
2141         (rs6000_init_builtins): Ditto.
2142         * config/darwin.c (darwin_override_options): Ditto.
2143         (darwin_patch_builtin): Ditto.
2144         (darwin_rename_builtins): Ditto.
2145         * config/pa/pa.c (pa_init_builtins): Ditto.
2146
2147 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2148
2149         * tree.h (copy_ref_info): Expose existing function.
2150         * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
2151         * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
2152
2153 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
2154
2155         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
2156         prototype.
2157         (avr_regno_mode_code_ok_for_base_p): New prototype.
2158         * config/avr/avr.h (BASE_REG_CLASS): Remove.
2159         (REGNO_OK_FOR_BASE_P): Remove.
2160         (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
2161         (REG_OK_FOR_BASE_STRICT_P): Remove.
2162         (MODE_CODE_BASE_REG_CLASS): New define.
2163         (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
2164         * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
2165         (avr_regno_mode_code_ok_for_base_p): New function.
2166         (avr_reg_ok_for_addr_p): New static function.
2167         (avr_legitimate_address_p): Use it.  Beautify.
2168
2169 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
2170
2171         PR target/50447
2172         * config/avr/avr.md (cc): Add out_plus attribute alternative.
2173         (addsi3): Use it.  Adapt avr_out_plus to new prototype.  Use
2174         avr_out_plus for all CONST_INT addends.
2175         * config/avr/avr-protos.h (avr_out_plus): Change prototype.
2176         * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
2177         CC_OUT_PLUS.
2178         (avr_out_plus_1): Change prototype and report effect on cc0.
2179         (avr_out_plus): Ditto.
2180         (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
2181
2182 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
2183
2184         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
2185         the extra break.
2186
2187 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2188
2189         * doc/invoke.texi: Document new warning.
2190         * common.opt (Wvector-operation-performance): Define new warning.
2191         * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
2192         vector operation.
2193         (exapnd_vector_parallel): Warn about expanded vector operation.
2194         (lower_vec_shuffle): Warn about expanded vector operation.
2195         * c-typeck.c (c_build_vec_perm_expr): Store correct location
2196         when creating VEC_PERM_EXPR.
2197
2198 2011-10-11  Richard Guenther  <rguenther@suse.de>
2199
2200         PR tree-optimization/50204
2201         * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
2202         two argument handling from ...
2203         (get_continuation_for_phi): ... here.  Handle arbitrary number
2204         of PHI args.
2205
2206 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
2207
2208         * modulo-sched.c: Fix comment typo.  Mention the possibility
2209         of using scheduling windows of II+1 cycles.
2210
2211 2011-10-11  Tristan Gingold  <gingold@adacore.com>
2212
2213         * doc/invoke.texi (C Dialect Options): Document
2214         -fallow-parameterless-variadic-functions.
2215         * c-parser.c (c_parser_parms_list_declarator): Handle it.
2216
2217 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2218
2219         * config/avr/avr.c (avr_option_override): Set flag_omit_frame_pointer
2220         to 0 if frame pointer is needed for unwinding.
2221
2222 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
2223
2224         PR bootstrap/50665
2225         * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm.  Move from enum
2226         optab_index to enum direct_optab_index.
2227         (vec_perm_optab): Update.
2228
2229 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
2230
2231         * config/cris/cris.c (cris_preferred_reload_class): New function.
2232         (TARGET_PREFERRED_RELOAD_CLASS): Define.
2233         * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
2234
2235 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2236
2237         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
2238         !AVR_HAVE_JMP_CALL.
2239         (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
2240         (*tablejump_enh, *tablejump): Remove insns.
2241         * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
2242         EIJMP for indirect jump.  Use LPM Z+ where available.
2243
2244 2011-10-10  Richard Henderson  <rth@redhat.com>
2245
2246         * doc/md.texi (vec_perm_const): Fix typo in cindex.
2247
2248 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
2249             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
2250
2251         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
2252
2253 2011-10-10  Richard Guenther  <rguenther@suse.de>
2254
2255         PR middle-end/50389
2256         * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
2257         mark symbols for renaming.  Append the VUSE to all statements
2258         that possibly can have one.
2259
2260 2011-10-10  Richard Guenther  <rguenther@suse.de>
2261
2262         * ipa-split.c (pass_split_functions): Add verification TODOs.
2263         (pass_feedback_split_functions): Likewise.
2264
2265 2011-10-10  Richard Guenther  <rguenther@suse.de>
2266
2267         PR middle-end/50195
2268         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
2269         only when optimizing.
2270
2271 2011-10-10  Nick Clifton  <nickc@redhat.com>
2272
2273         PR middle-end/49801
2274         * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
2275         df_get_live_out instead of accessing the bitmaps directly.
2276         (execute_compare_elim_after_reload): Remove calls to df_set_flags,
2277         df_live_add_problem and df_analyze.
2278
2279 2011-10-10  Michael Matz  <matz@suse.de>
2280
2281         PR middle-end/50638
2282         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
2283
2284 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2285
2286         * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
2287         (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
2288         (node_sched_params): Remove first_reg_move and nreg_moves.
2289         (ps_num_consecutive_stages, extend_node_sched_params): New functions.
2290         (update_node_sched_params): Move up file.
2291         (print_node_sched_params): Print the stage.  Don't dump info related
2292         to first_reg_move and nreg_moves.
2293         (set_columns_for_row): New function.
2294         (set_columns_for_ps): Move up file and use set_columns_for_row.
2295         (schedule_reg_move): New function.
2296         (schedule_reg_moves): Call extend_node_sched_params and
2297         schedule_reg_move.  Extend size of uses bitmap.  Initialize
2298         num_consecutive_stages.  Return false if a move could not be
2299         scheduled.
2300         (apply_reg_moves): Don't emit moves here.
2301         (permute_partial_schedule): Handle register moves.
2302         (duplicate_insns_of_cycles): Remove for_prolog.  Emit moves according
2303         to the same stage-count test as ddg nodes.
2304         (generate_prolog_epilog): Update calls accordingly.
2305         (sms_schedule): Allow move-scheduling to add a new first stage.
2306
2307 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2308
2309         * modulo-sched.c (ps_insn): Adjust comment.
2310         (ps_reg_move_info): New structure.
2311         (partial_schedule): Add reg_moves field.
2312         (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
2313         (node_sched_params): Turn first_reg_move into an identifier.
2314         (ps_reg_move): New function.
2315         (ps_rtl_insn): Cope with register moves.
2316         (ps_first_note): Adjust comment and assert that the instruction
2317         isn't a register move.
2318         (node_sched_params): Replace with...
2319         (node_sched_param_vec): ...this vector.
2320         (set_node_sched_params): Adjust accordingly.
2321         (print_node_sched_params): Take a partial schedule instead of a ddg.
2322         Use ps_rtl_insn and ps_reg_move.
2323         (generate_reg_moves): Rename to...
2324         (schedule_reg_moves): ...this.  Remove rescan parameter.  Record each
2325         move in the partial schedule, but don't emit it here.  Don't perform
2326         register substitutions here either.
2327         (apply_reg_moves): New function.
2328         (duplicate_insns_of_cycles): Use register indices directly,
2329         rather than finding instructions using PREV_INSN.  Use ps_reg_move.
2330         (sms_schedule): Call schedule_reg_moves before committing to
2331         a partial schedule.   Try the next ii if the schedule fails.
2332         Use apply_reg_moves instead of generate_reg_moves.  Adjust
2333         call to print_node_sched_params.  Free node_sched_param_vec
2334         instead of node_sched_params.
2335         (create_partial_schedule): Initialize reg_moves.
2336         (free_partial_schedule): Free reg_moves.
2337
2338 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2339
2340         * modulo-sched.c (ps_insn): Replace node field with an identifier.
2341         (SCHED_ASAP): Replace with..
2342         (NODE_ASAP): ...this macro.
2343         (SCHED_PARAMS): New macro.
2344         (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
2345         (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
2346         (node_sched_params): Remove asap.
2347         (ps_rtl_insn, ps_first_note): New functions.
2348         (set_node_sched_params): Use XCNEWVEC.  Don't copy across the
2349         asap values.
2350         (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
2351         (generate_reg_moves): Pass ids to the SCHED_* macros.
2352         (update_node_sched_params): Take a ps insn identifier rather than
2353         a node as parameter.  Use ps_rtl_insn.
2354         (set_columns_for_ps): Update for above field and SCHED_* macro changes.
2355         (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
2356         (optimize_sc): Update for above field and SCHED_* macro changes.
2357         Update calls to try_scheduling_node_in_cycle and
2358         update_node_sched_params.
2359         (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
2360         macro changes.  Use ps_rtl_insn and ps_first_note.
2361         (sms_schedule): Pass ids to the SCHED_* macros.
2362         (get_sched_window): Adjust for above field and SCHED_* macro changes.
2363         Use NODE_ASAP instead of SCHED_ASAP.
2364         (try_scheduling_node_in_cycle): Remove node parameter.  Update
2365         call to ps_add_node_check_conflicts.  Pass ids to the SCHED_* macros.
2366         (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
2367         (ps_insert_empty_row): Adjust for above field changes.
2368         (compute_split_row): Use ids rather than nodes.
2369         (verify_partial_schedule): Adjust for above field changes.
2370         (print_partial_schedule): Use ps_rtl_insn.
2371         (create_ps_insn): Take an id rather than a node.
2372         (ps_insn_find_column): Adjust for above field changes.
2373         Use ps_rtl_insn.
2374         (ps_insn_advance_column): Adjust for above field changes.
2375         (add_node_to_ps): Remove node parameter.  Update call to
2376         create_ps_insn.
2377         (ps_has_conflicts): Use ps_rtl_insn.
2378         (ps_add_node_check_conflicts): Replace node parameter than an id.
2379
2380 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
2381
2382         * modulo-sched.c (undo_replace_buff_elem): Delete.
2383         (generate_reg_moves): Don't build and return an undo list.
2384         (free_undo_replace_buff): Delete.
2385         (sms_schedule): Adjust call to generate_reg_moves.
2386         Don't call free_undo_replace_buff.
2387
2388 2011-10-10  Matthias Klose <doko@ubuntu.com>
2389
2390         * common/config/m32c: Remove empty directory.
2391
2392 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2393
2394         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
2395
2396 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
2397
2398         PR target/50652
2399         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
2400         atmega164a to 0x100.
2401
2402 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
2403
2404         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
2405         the replacement if the conversion to the LHS type is not useless.
2406
2407 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
2408
2409         PR tree-optimization/50635
2410         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
2411         DEF_STMT to the list of statements to be replaced by the
2412         pattern statements.
2413         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
2414
2415 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
2416
2417         * system.h: Commit forgotten hunk in previous patch.
2418         (OUTPUT_ADDR_CONST_EXTRA): Poison.
2419
2420 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
2421
2422         PR libobjc/50428
2423         * doc/objc.texi (Garbage Collection): Updated example to protect
2424         +initialize against execution in subclasses.
2425
2426 2011-10-07  Richard Henderson  <rth@redhat.com>
2427
2428         * doc/extend.texi (__builtin_shuffle): Improve the description to
2429         include the modulus of the selector.  Mention OpenCL.
2430         * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
2431
2432         * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
2433         * genopinit.c (optabs): Rename vshuffle to vec_perm.
2434         * c-typeck.c (c_build_vec_perm_expr): Rename from
2435         c_build_vec_shuffle_expr.  Update for name changes.
2436         * optabs.c (expand_vec_perm_expr_p): Rename from
2437         expand_vec_shuffle_expr_p.
2438         (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
2439         * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
2440         (vec_perm_optab): Rename from vshuffle_optab.
2441         * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
2442         c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
2443         tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
2444
2445         * config/i386/i386.c (ix86_expand_vec_perm): Rename from
2446         ix86_expand_vshuffle.
2447         * config/i386/i386-protos.h: Update.
2448         * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
2449         (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
2450
2451 2011-10-07  Richard Henderson  <rth@redhat.com>
2452
2453         * config/i386/predicates.md (avx2_pblendw_operand): New.
2454         * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
2455         (avx2_pblendw, *avx2_pblendw): New expander and insn.
2456
2457 2011-10-07  Richard Henderson  <rth@redhat.com>
2458
2459         * config/i386/i386.c (bdesc_args): Update code for
2460         __builtin_ia32_palignr256.  Change type of __builtin_ia32_pslldqi256,
2461         and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
2462         (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
2463         * config/i386/sse.md (mode iterator V16): Add V2TI.
2464         (mode iterator SSESCALARMODE): Use V2TI not V4DI.
2465         (mode attr ssse3_avx2): Add V2TI.
2466         (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
2467
2468 2011-10-07  David S. Miller  <davem@davemloft.net>
2469
2470         PR 50655
2471         * configure.ac: Add .register directives to VIS3 test.
2472         * configure: Regenerate.
2473
2474 2011-10-07  Richard Henderson  <rth@redhat.com>
2475
2476         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
2477
2478 2011-10-07  Richard Henderson  <rth@redhat.com>
2479
2480         PR 49752
2481         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
2482
2483 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
2484
2485         * config/arm/predicates.md (shift_amount_operand): Remove constant
2486         range check.
2487         (shift_operator): Check range of constants for all shift operators.
2488
2489 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2490
2491         * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
2492         Load GOT pointer for non-pic builds.
2493         (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
2494         (s390_emit_call): Likewise.
2495
2496 2011-10-07  Tom de Vries  <tom@codesourcery.com>
2497
2498         PR middle-end/50527
2499         * tree.c (build_common_builtin_nodes): Add local_define_builtin for
2500         BUILT_IN_ALLOCA_WITH_ALIGN.  Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
2501         throw.
2502         * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
2503         arglist.  Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
2504         (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2505         (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2506         * tree-ssa-ccp.c (evaluate_stmt): Set align for
2507         BUILT_IN_ALLOCA_WITH_ALIGN.
2508         (fold_builtin_alloca_for_var): Rename to ...
2509         (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
2510         BUILT_IN_ALLOCA_WITH_ALIGN argument.
2511         (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
2512         fold_builtin_alloca_with_align.
2513         (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2514         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
2515         DEF_BUILTIN_STUB.
2516         * ipa-pure-const.c (special_builtin_state): Handle
2517         BUILT_IN_ALLOCA_WITH_ALIGN.
2518         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
2519         (call_may_clobber_ref_p_1): Same.
2520         * function.c (gimplify_parameters): Lower vla to
2521         BUILT_IN_ALLOCA_WITH_ALIGN.
2522         * gimplify.c (gimplify_vla_decl): Same.
2523         * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
2524         * tree-mudflap.c (mf_xform_statements): Same.
2525         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
2526         (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
2527         * varasm.c (incorporeal_function_p): Same.
2528         * tree-object-size.c (alloc_object_size): Same.
2529         * gimple.c (gimple_build_call_from_tree): Same.
2530
2531 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
2532
2533         * function.c (frame_required_for_rtx): Remove function.
2534         (requires_stack_frame_p): New arg set_up_by_prologue.  All callers
2535         changed.  Compute a set of mentioned registers and compare against
2536         the new arg rather than calling frame_required_for_rtx.
2537         (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
2538         reg set.  Convert the unconverted_simple_returns mechanism to store
2539         jump insns rather than their basic blocks.  Also check the
2540         orig_entry_edge destination for new blocks.
2541
2542 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
2543
2544         PR tree-optimization/50650
2545         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
2546         call vect_is_simple_cond here, instead fail if cond_expr isn't
2547         COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
2548         for cond_expr's first operand.
2549         * tree-vect-stmts.c (vect_is_simple_cond): Static again.
2550         * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
2551
2552 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2553
2554         * config/s390/s390.md (DWH, dwh): New mode macros.
2555         ("umulsidi3"): Extend to support "umulditi3" as well.
2556
2557 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
2558             H.J. Lu  <hongjiu.lu@intel.com>
2559
2560         PR target/50603
2561         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
2562         integer PLUS RTX to a register to improve address combine.
2563
2564 2011-10-06  Richard Henderson  <rth@redhat.com>
2565
2566         * combine-stack-adjust.c (maybe_move_args_size_note): Add after
2567         parameter; use it to decide whether to merge two notes.
2568         (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
2569         for the deallocation case as well.
2570
2571 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
2572
2573         * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
2574         * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
2575         * doc/tm.texi: Regenerate.
2576         * target.def (output_addr_const_extra): Use
2577         hook_bool_FILEptr_rtx_false.
2578         * targhooks.c (default_asm_output_addr_const_extra): Remove.
2579         * targhooks.h (default_asm_output_addr_const_extra): Remove.
2580         * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
2581         * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
2582
2583 2011-10-06  David S. Miller  <davem@davemloft.net>
2584
2585         * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
2586         (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
2587         SI mode 64-bit code gen case explicitly zero-extend and truncate.
2588         (*popcount<mode>_sp64): Split up into...
2589         (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
2590         SImode case use truncate.
2591         (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
2592         subtract so the compiler can optimize it.
2593         (SIDI): Remove unused mode iterator.
2594
2595 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2596
2597         * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
2598         on the orig_entry_edge. Don't account for it in prologue_clobbered.
2599
2600 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2601
2602         PR tree-optimization/50596
2603         * tree-vectorizer.h (vect_is_simple_cond): New prototype.
2604         (NUM_PATTERNS): Change to 6.
2605         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
2606         function.
2607         (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
2608         (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
2609         if it already has one, and don't set STMT_VINFO_VECTYPE in it
2610         if it is already set.
2611         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
2612         COND_EXPR in pattern stmts.
2613         (vect_is_simple_cond): No longer static.
2614
2615 2001-10-06  Richard Henderson  <rth@redhat.com>
2616
2617         * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
2618         * config/i386/sse.md (sseshuffint): Remove.
2619         (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
2620         (VSHUFFLE_AVX2): New mode iterator.
2621         (vshuffle<mode>): Use it.
2622         (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
2623
2624         * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
2625         for vector_all_ones_operand.
2626         (ix86_expand_int_vcond): Distinguish between comparison mode
2627         and data mode.  Allow them to differ.
2628         (ix86_expand_vshuffle): Don't force data mode to match maskmode.
2629
2630 2001-10-06  Richard Henderson  <rth@redhat.com>
2631
2632         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
2633         mask operand.  Tidy the code.
2634
2635 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2636
2637         * tree-vect-patterns.c (vect_pattern_recog_1): Use
2638         vect_recog_func_ptr typedef for the first argument.
2639         (vect_pattern_recog): Rename vect_recog_func_ptr variable
2640         to vect_recog_func, use vect_recog_func_ptr typedef for it.
2641
2642         PR tree-optimization/49279
2643         * tree-ssa-structalias.c (find_func_aliases): Don't handle
2644         CAST_RESTRICT.
2645         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
2646         restrict propagation.
2647         * tree-ssa.c (useless_type_conversion_p): Don't return false
2648         if TYPE_RESTRICT differs.
2649
2650 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2651
2652         * function.c (thread_prologue_and_epilogue_insns): Build a vector
2653         of unconverted simple return blocks rather than trying to
2654         recompute them later based on bb_flags bitmap tests.
2655
2656 2011-10-06  Michael Matz  <matz@suse.de>
2657
2658         * tree-flow.h (get_var_ann): Don't declare.
2659         * tree-flow-inline.h (get_var_ann): Remove.
2660         (set_is_used): Use var_ann, not get_var_ann.
2661         * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
2662         * tree-profile.c (gimple_gen_edge_profiler): Call
2663         find_referenced_var_in.
2664         (gimple_gen_interval_profiler): Ditto.
2665         (gimple_gen_pow2_profiler): Ditto.
2666         (gimple_gen_one_value_profiler): Ditto.
2667         (gimple_gen_average_profiler): Ditto.
2668         (gimple_gen_ior_profiler): Ditto.
2669         (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
2670         (gimple_gen_ic_func_profiler): Call add_referenced_var.
2671         * tree-mudflap.c (execute_mudflap_function_ops): Call
2672         add_referenced_var.
2673
2674 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
2675
2676         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
2677         don't set SSA_NAME_DEF_STMT that has been already set by
2678         gimple_build_assign_with_ops.
2679         (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
2680         vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
2681         Likewise.
2682
2683         * tree.h (avoid_folding_inline_builtin): New prototype.
2684         * builtins.c (avoid_folding_inline_builtin): No longer static.
2685         * gimple-fold.c (gimple_fold_builtin): Give up if
2686         avoid_folding_inline_builtin returns true.
2687
2688 2011-10-06  Richard Guenther  <rguenther@suse.de>
2689
2690         * tree-vect-generic.c (vector_element): Look at previous
2691         generated results.
2692
2693 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
2694
2695         PR target/39950
2696         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
2697         __powerpc__, __PPC__, __unix__.
2698
2699 2011-10-06  Michael Matz  <matz@suse.de>
2700
2701         * i386/i386.opt (recip_mask, recip_mask_explicit,
2702         x_recip_mask_explicit): New variables and cl_target member.
2703         (mrecip=): New option.
2704         * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
2705         RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
2706         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
2707         TARGET_RECIP_VEC_SQRT): New tests.
2708         * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
2709         (sqrt<mode>2): Check TARGET_RECIP_SQRT.
2710         * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
2711         (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
2712         * i386/i386.c (ix86_option_override_internal): Set recip_mask
2713         for -mrecip and -mrecip=options.
2714         (ix86_function_specific_save): Save recip_mask_explicit.
2715         (ix86_function_specific_restore): Restore recip_mask_explicit.
2716
2717         * doc/invoke.texi (ix86 Options): Document the new option.
2718
2719 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
2720
2721         PR target/49049
2722         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
2723
2724 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
2725
2726         PR target/50305
2727         * config/arm/arm.c (arm_legitimize_reload_address): Recognize
2728         output of a previous pass through legitimize_reload_address.
2729         Do not attempt to optimize addresses if the base register is
2730         equivalent to a constant.
2731
2732 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2733
2734         * function.c (thread_prologue_and_epilogue_insns): Mark
2735         last_bb_active as possibly unused.  It is unused for targets which
2736         do neither have "return" nor "simple_return" expanders.
2737
2738 2011-10-06  Richard Guenther  <rguenther@suse.de>
2739
2740         * fold-const.c (fold_ternary_loc): Also fold non-constant
2741         vector CONSTRUCTORs.  Make more efficient.
2742         * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
2743         (cprop_into_stmt): Don't propagate into virtual operands.
2744         (optimize_stmt): Really dump original statement.
2745
2746 2011-10-06  Nick Clifton  <nickc@redhat.com>
2747
2748         * config/rx/rx.md (smin3): Revert previous delta.
2749
2750 2011-10-06  Richard Guenther  <rguenther@suse.de>
2751
2752         PR tree-optimization/38884
2753         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
2754         reads from aggregate SSA names.
2755
2756 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2757
2758         * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
2759         argument, truncate it at the beginning instead of allocating there
2760         and freeing at the end.
2761         (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
2762         pass its address to vect_pattern_recog_1.
2763
2764 2011-10-05  David S. Miller  <davem@davemloft.net>
2765
2766         * config/sparc/sparc.opt (POPC): New option.
2767         * doc/invoke.texi: Document it.
2768         * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
2769         default on Niagara-2 and later.
2770         * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
2771         * config/sparc/sparc.md (SIDI): New mode iterator.
2772         (ffsdi2): Delete commented out pattern and comments.
2773         (popcount<mode>2, clz<mode>2): New expanders.
2774         (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
2775         *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
2776
2777 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
2778
2779         PR middle-end/50607
2780         * c-tree.h (c_expr_t): New typedef for struct c_expr.
2781         (C_EXPR_APPEND): New macro.
2782         * c-parser.c (c_parser_get_builtin_args): Preserve
2783         original_tree_code of c_expr structure.
2784         (c_parser_postfix_expression): Adjust to the new function.
2785
2786 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2787
2788         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
2789         if profiling after the prologue.
2790
2791 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
2792
2793         PR tree-optimization/50613
2794         * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
2795         operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
2796         and if it is neither that not SSA_NAME, give up.
2797
2798 2011-10-05  Richard Henderson  <rth@redhat.com>
2799
2800         * tree-vect-generic.c (vector_element): Never fail.  Use
2801         build_zero_cst.  Tidy up type references.
2802         (lower_vec_shuffle): Never fail.  Mask shuffle indicies.  Reduce
2803         code duplication.  Do update_stmt here ...
2804         (expand_vector_operations_1): ... not here.
2805
2806         * config/i386/i386.c (ix86_expand_vshuffle): Never fail.  Handle
2807         TARGET_XOP.  Fix pshufb constant vector creation.  Reduce code
2808         duplication.  Handle V2DI without SSE4.1.
2809         * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
2810         * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
2811
2812 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2813
2814         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
2815         of "found".  Simplify return value calculation.
2816         (distance_agu_use): Ditto.
2817
2818 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2819
2820         PR bootstrap/50621
2821         * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
2822         if the function was not shrink-wrapped.
2823         (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
2824         to an insn.
2825         * function.c (thread_prologue_and_epilogue_insns): Make sure the
2826         shrink_wrapped flag is set even if there is no dump file.
2827
2828 2011-10-05  DJ Delorie  <dj@redhat.com>
2829             Nick Clifton  <nickc@redhat.com>
2830
2831         * config/rx/rx.opt (mpid): Define.
2832         * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
2833         (MULTILIB_DIRNAMES): Add pid.
2834         * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
2835         (rx_num_interrupt_regs): New variable.
2836         (rx_gp_base_regnum): New function.  Returns the number of the
2837         small data area register.
2838         (rx_pid_base_regnum): New function.  Returns the number of the pid
2839         base register.
2840         (rx_decl_for_addr): New function.  Returns the symbolic part of a MEM.
2841         (rx_pid_data_operand): New function.  Returns whether an object is
2842         in the position independent data area.
2843         (rx_legitimize_address): New function.  Puts undecided PID
2844         objects in the PID data area.
2845         (rx_is_legitimate_address): Add support for PID operands.
2846         (rx_print_operand_address): Likewise.
2847         (rx_print_operand): Likewise.
2848         (rx_maybe_pidify_operand): New function.  Determine if an operand
2849         is suitable for PID addressing.
2850         (rx_gen_move_template): Add PID support.
2851         (rx_conditional_register_usage): Likewise.
2852         (rx_option_override): Initialise rx_num_interrupt_regs.
2853         (rx_is_legitimate_constant): Add support for PID constants.
2854         (TARGET_LEGITIMIZE_ADDRESS): Define.
2855         * config/rx/constraints.md (Rpid): Define.
2856         (Rpda): Define.
2857         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
2858         (tablejump): Add PID support.
2859         (mov<>): Likewise.
2860         (mov<>_internal): Likewise.
2861         (addsi3): Convert to an expander.  Add PID support.
2862         (pid_addr): New pattern.
2863         * config/rx/rx.h (CPP_SPEC): Define.
2864         (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
2865         (CASE_VECTOR_PC_RELATIVE): Define.
2866         (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
2867         * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
2868         * doc/invoke.texi (RX Options): Document -mpid command line option.
2869
2870 2011-10-05  Richard Guenther  <rguenther@suse.de>
2871
2872         PR tree-optimization/38885
2873         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
2874         from constants.
2875
2876 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
2877
2878         * doc/invoke.texi (-fshrink-wrap): Document.
2879         * opts.c (default_options_table): Add it.
2880         * common.opt (fshrink-wrap): Add.
2881         * function.c (emit_return_into_block): Remove useless declaration.
2882         (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
2883         requires_stack_frame_p, gen_return_pattern): New static functions.
2884         (emit_return_into_block): New arg simple_p.  All callers changed.
2885         Use gen_return_pattern.
2886         (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
2887         * config/i386/i386.md (return): Expand into a simple_return.
2888         (simple_return): New expander):
2889         (simple_return_internal, simple_return_internal_long,
2890         simple_return_pop_internal_long, simple_return_indirect_internal):
2891         Renamed from return_internal, return_internal_long,
2892         return_pop_internal_long and return_indirect_internal; changed to use
2893         simple_return.
2894         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
2895         simple returns.
2896         (ix86_pad_returns): Likewise.
2897         * function.h (struct rtl_data): Add member shrink_wrapped.
2898         * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
2899         are not jumps or sibcalls can't be compared.
2900
2901 2011-10-05  Richard Guenther  <rguenther@suse.de>
2902
2903         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
2904         vector type.
2905         (simplify_unary_expression): Handle BIT_FIELD_REFs.
2906         (try_to_simplify): Handle BIT_FIELD_REFs.
2907
2908 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
2909
2910         * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
2911         * config/avr/avr.c (avr_out_addto_sp): New function.
2912         (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
2913         * config/avr/avr.md (adjust_len): Add "addto_sp".
2914         (*movhi_sp): Remove insn.
2915         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
2916
2917 2011-10-05  Richard Guenther  <rguenther@suse.de>
2918
2919         * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
2920         with an embedded expression valueize and fold that as well.
2921         * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
2922         results from gimple_fold_stmt_to_constant_1.
2923
2924 2011-10-05  Nick Clifton  <nickc@redhat.com>
2925
2926         * config/rx/rx.md (tablejump): Add missing label.
2927         (adddi3_internal): Mark operand 0 as early-clobbered.
2928         (smaxsi3): Revert previous delta.
2929         (adc_internal): Fix whitespace in generated asm.
2930         (adc_flags): Likewise.
2931
2932 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2933
2934         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
2935         with the new widening_optab_handler.
2936
2937 2011-10-05  Richard Guenther  <rguenther@suse.de>
2938
2939         PR tree-optimization/50609
2940         * gimple-fold.c (fold_array_ctor_reference): Also handle
2941         vector typed constructors.
2942         (fold_ctor_reference): Dispatch to fold_array_ctor_reference
2943         for vector typed constructors.
2944
2945 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
2946
2947         * config/i386/i386.c (ix86_emit_binop): New static function.
2948         (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
2949         instructions.
2950         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
2951
2952 2011-10-04  David S. Miller  <davem@davemloft.net>
2953
2954         * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
2955         UNSPEC_XMUL): New unspecs.
2956         (muldi3_v8plus): Use output_v8plus_mult.
2957         (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
2958         New VIS 3.0 combiner patterns.
2959         (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
2960         fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
2961         umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
2962         xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
2963         builtins patterns.
2964         * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
2965         (output_v8plus_mult): New function.
2966         * config/sparc/sparc-protos.h: Declare it.
2967         * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
2968         __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
2969         __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
2970         * doc/extend.texi: Document new builtins.
2971
2972 2011-10-04  Richard Henderson  <rth@redhat.com>
2973
2974         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
2975         Avoid save_expr unless two_arguments.
2976
2977 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
2978
2979         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
2980         * config/i386/mingw32.h (CPP_SPEC): Likewise.
2981
2982 2011-10-04  David S. Miller  <davem@davemloft.net>
2983
2984         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
2985         under Linux.
2986
2987 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
2988
2989         PR tree-optimization/50604
2990         * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
2991         fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
2992         last argument to memcpy has size_type_node type instead of ssizetype.
2993         * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
2994         instead of TREE_TYPE (len) as type for newlen.
2995
2996         PR tree-optimization/50522
2997         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
2998         TYPE_RESTRICT.
2999         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
3000         unconditionally.
3001
3002         * fold-const.c (fold_unary_loc): Don't optimize
3003         POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
3004         casting the inner pointer if it isn't TYPE_RESTRICT.
3005         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
3006         casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
3007
3008 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
3009
3010         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
3011
3012 2011-10-04  Jan Hubicka  <jh@suse.cz>
3013
3014         * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
3015         * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
3016         * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
3017         * lto-cgraph.c (order_base): New static var.
3018         (lto_output_node): Stream in order.
3019         (lto_output_varpool_node): Stream out order.
3020         (input_node): Stream in order.
3021         (input_varpool_node): Stream out order.
3022         (input_cgraph_1): Initialize order base; update call of
3023         lto_input_toplevel_asms.
3024
3025 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
3026
3027         PR target/50566
3028         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
3029         prototype.
3030         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
3031         from here...
3032         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
3033         function.  Log if avr_log.legitimize_reload_address.
3034
3035 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
3036
3037         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
3038
3039 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3040
3041         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
3042         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
3043
3044 2011-10-03  David S. Miller  <davem@davemloft.net>
3045
3046         * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
3047         GSR_REG an input operand to UNSPEC instead of a parallel USE.
3048         (faligndata<V64I:mode>_vis): Likewise and use DI mode.
3049         (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
3050         Reference GSR_REG in DI mode, simplify convoluted expressions by using
3051         zero_extract.
3052         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
3053
3054 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
3055
3056         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
3057
3058 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
3059             Ian Lance Taylor  <iant@google.com>
3060
3061         * godump.c (go_output_typedef): Support printing enum values that
3062         don't fit in a signed HOST_WIDE_INT.
3063
3064 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
3065
3066         * config/cris/cris.c (cris_output_addr_const_extra): Make static.
3067         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3068         * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
3069         * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
3070
3071 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
3072
3073         * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
3074         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
3075         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
3076         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
3077
3078 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
3079
3080         PR target/49967
3081         * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
3082         (gcc_cv_ld_static_option): Ditto.
3083         (gcc_cv_ld_dynamic_option): Ditto.
3084         * configure: Regenerate.
3085
3086 2011-10-03  David S. Miller  <davem@davemloft.net>
3087
3088         * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
3089         and 'si' patterns which describe the GSR changes explicitly in the
3090         RTL using zero_extract.
3091         (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
3092
3093         * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
3094         GSR_REG in a USE, since it's now a true arg to the UNSPEC.
3095
3096 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
3097
3098         * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
3099         if given expression can be expanded by the target.
3100         (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
3101         using target vector instructions.
3102         * optabs.h: New optab vshuffle.
3103         (expand_vec_shuffle_expr_p): New prototype.
3104         (expand_vec_shuffle_expr): New prototype.
3105         (vshuffle_optab): New optab.
3106         * genopinit.c: Adjust to support vecshuffle.
3107         * c-tree.h (c_build_vec_shuffle_expr): New prototype.
3108         * expr.c (expand_expr_real_2): Adjust.
3109         * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
3110         recognizing the cases of two and three arguments.
3111         (convert_arguments) (build_binary_op)
3112         (scalar_to_vector) (build_array_ref): Spurious whitespace.
3113         * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
3114         * tree.def: New tree code VEC_SHUFFLE_EXPR.
3115         * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
3116         * tree-vect-generic.c (vector_element): New function. Returns an
3117         element of the vector at the given position.
3118         (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
3119         by the backend or expand an expression piecewise.
3120         (expand_vector_operations_1): Adjusted.
3121         (gate_expand_vector_operations_noop): New gate function.
3122         * Makefile.in (tree-vect-generic.o): New include.
3123         * gimple.c (get_gimple_rhs_num_ops): Adjust.
3124         * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
3125         * passes.c: Move veclower down.
3126         * tree-pretty-print.c (dump_generic_node): Recognize
3127         VEC_SHUFFLE_EXPR as valid expression.
3128         * c-parser.c (c_parser_get_builtin_args): Helper function for the
3129         builtins with variable number of arguments.
3130         (c_parser_postfix_expression): Use a new helper function for
3131         RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
3132         * tree-ssa-operands: Adjust.
3133         * c-family/c-common.c: New __builtin_shuffle keyword.
3134         * c-family/c-common.h: New __builtin_shuffle keyword.
3135         * gcc/doc/extend.texi: Adjust.
3136
3137         * gcc/config/i386/sse.md: (sseshuffint) New mode_attr.  Correspondence
3138         between the vector and the type of the mask when shuffling.
3139         (vecshuffle<mode>): New expansion.
3140         * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
3141         * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
3142         (ix86_vectorize_builtin_vec_perm_ok): Adjust.
3143
3144 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
3145
3146         PR tree-optimization/50587
3147         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
3148         arg0 is not a SSA_NAME.
3149
3150 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
3151
3152         * ipa-inline-analysis.c (MAX_TIME): Update comment.
3153
3154 2011-10-02  Richard Henderson  <rth@redhat.com>
3155             David S. Miller  <davem@davemloft.net>
3156
3157         * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
3158         conditional insn type setting, we always emit a shift.
3159         (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
3160         (*lshrsi3_extend): Rename to *lshrsi3_extend1.
3161         * config/sparc/predicates.md (const_one_operand): Delete.
3162
3163 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
3164
3165         * invoke.texi (SPARC Options): Refer to GNU/Linux.
3166
3167 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
3168
3169         * config/mips/mips.c (mips_frame_barrier): New function.
3170         (mips_expand_prologue): Call it after allocating stack space.
3171         (mips_deallocate_stack): New function.
3172         (mips_expand_epilogue): Call mips_frame_barrier and
3173         mips_deallocate_stack.
3174
3175 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
3176
3177         PR target/49696
3178         * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
3179         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
3180         (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
3181
3182 2011-10-02  Jan Hubicka  <jh@suse.cz>
3183
3184         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
3185
3186         * cgraphunit.c (ipa_passes): Remove unrechable nodes.
3187         * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
3188         * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
3189         functions are reachable when address is taken.
3190         * tree-sra.c (modify_function): Free dominance info.
3191
3192 2011-10-02  Jan Hubicka  <jh@suse.cz>
3193
3194         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
3195
3196         * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
3197         (reset_inline_summary): New function.
3198         (compute_inline_parameters, inline_node_removal_hook,
3199         inline_edge_removal_hook): Use it.
3200         (inline_free_summary): Reset holders correctly.
3201         (inline_generate_summary): Free summary before computing it.
3202
3203 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
3204
3205         PR preprocessor/36819
3206         * incpath.c (merge_include_chains): Call free_path on
3207         heads[QUOTE] and tails[QUOTE].
3208
3209 2011-10-02  Jan Hubicka  <jh@suse.cz>
3210
3211         PR lto/47247
3212         * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
3213         when resolution is already availbale from plugin.
3214         (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
3215         * cgraph.c (ld_plugin_symbol_resolution): Add
3216         prevailing_def_ironly_exp.
3217         * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
3218         * ipa.c (varpool_externally_visible_p): IRONLY variables are never
3219         externally visible.
3220         * varasm.c (resolution_to_local_definition_p): Add
3221         LDPR_PREVAILING_DEF_IRONLY_EXP.
3222         (resolution_local_p): Likewise.
3223
3224 2011-10-01  David S. Miller  <davem@davemloft.net>
3225
3226         * config/sparc/sparc.opt (VIS3): New option.
3227         * doc/invoke.texi: Document it.
3228         * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
3229         not capable of such instructions.
3230         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
3231         to 0x300 when TARGET_VIS3.
3232         * config/sparc/sparc-modes.def: Create 16-byte vector modes.
3233         * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
3234         UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
3235         (V64N8, VASS): New mode iterators.
3236         (vis3_shift, vis3_addsub_ss): New code iterators.
3237         (vbits, vconstr): New mode attributes.
3238         (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
3239         (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
3240         fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
3241         fmean16_vis, fpadd64_vis, fpsub64_vis,
3242         <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
3243         VIS 3.0 instruction patterns.
3244         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
3245         default when targetting capable cpus.  TARGET_VIS3 implies
3246         TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
3247         (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
3248         (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
3249         is ignored.
3250         * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
3251         __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
3252         __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
3253         __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
3254         __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
3255         __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
3256         __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
3257         __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
3258         * doc/extend.texi: Document new VIS 3.0 builtins.
3259
3260 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
3261
3262         * ira-color.c (assign_hard_reg): Fix typo.
3263
3264 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
3265
3266         * doc/extend.texi: Add missing ','.
3267
3268 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
3269
3270         * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
3271         Enable -fmodulo-sched at -O2 and above.
3272         * config/c6x/c6x.md (doloop_end): New expander.
3273         (mvilc, sploop, spkernel, loop_end): New patterns.
3274         (loop_end with memory destination splitter): New.
3275         * config/c6x/c6x.c: Include "hw-doloop.h".
3276         (enum unitreqs): New.
3277         (unit_req_table): New typedef.
3278         (unit_reqs): New static variable.
3279         (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
3280         res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
3281         hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
3282         hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
3283         (struct c6x_sched_context): New member last_scheduled_iter0.
3284         (init_sched_state): Initialize it.
3285         (c6x_variable_issue): Update it.
3286         (sploop_max_uid_iter0): New static variable.
3287         (c6x_sched_reorder_1): Be careful about issuing sploop.
3288         (c6x_reorg): Call c6x_hwlooops before the final schedule.
3289
3290 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
3291
3292         PR target/50566
3293         * config/avr/avr-protos.h (avr_log_t): New field address_cost.
3294         * config/avr/avr.c (avr_address_cost): Use it.
3295         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
3296         (avr_log_vadump): Unknown %-codes finish printing.
3297
3298 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
3299
3300         PR inline-asm/50571
3301         * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
3302         input constraints allow mem and not reg, pass true instead of
3303         false as second argument to maybe_fold_reference.
3304
3305         PR tree-optimization/46309
3306         * fold-const.c (make_range, merge_ranges): Remove prototypes.
3307         (make_range_step): New function.
3308         (make_range): Use it.
3309         * tree.h (make_range_step): New prototypes.
3310         * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
3311         * tree-ssa-reassoc.c: Include diagnostic-core.h.
3312         (struct range_entry): New type.
3313         (init_range_entry, range_entry_cmp, update_range_test,
3314         optimize_range_tests): New functions.
3315         (reassociate_bb): Call optimize_range_tests.
3316
3317 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
3318             Richard Guenther  <rguenther@suse.de>
3319
3320         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
3321         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
3322         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.  Fix
3323         handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
3324         (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
3325         BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
3326
3327 2011-09-30  Jan Beulich  <jbeulich@suse.com>
3328
3329         * lto-cgraph.c (output_cgraph): Remove processing of
3330         'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
3331         (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
3332         lto_input_toplevel_asms() instead.
3333         * lto-section-in.c (lto_section_name): Add "asm" entry.
3334         * lto-streamer-in.c (lto_input_toplevel_asms): New.
3335         * lto-streamer-out.c (lto_output_toplevel_asms): New.
3336         * lto-streamer.h (LTO_minor_version): Bump.
3337         (enum lto_section_type): Add LTO_section_asm.
3338         (struct lto_asm_header): New.
3339         (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
3340         * tree-streamer.h (streamer_write_string_cst): Declare.
3341         * tree-streamer-out.c (write_string_cst): Rename to
3342         streamer_write_string_cst and make global. Handle incoming string
3343         being NULL.
3344         (streamer_write_tree_header): Adjust call to renamed function.
3345
3346 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
3347
3348         * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
3349         modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
3350         modulo_last_stage): New static variables.
3351         (set_modulo_params, discard_delay_pairs_above): New functions.
3352         (struct delay_pair): New member stages.
3353         (htab_i2_traverse, htab_i1_traverse): New static functions.
3354         (record_delay_slot_pair): New arg stages.  All callers changed.
3355         Record it.
3356         (pair_delay): Take stages into account.
3357         (add_delay_dependencies): Don't do so for stage pairs.
3358         (struct sched_block_state): New member modulo_epilogue.
3359         (save_backtrack_point): Don't set SHADOW_P for stage pairs.
3360         (unschedule_insns_until): Decrease modulo_insns_scheduled.
3361         Set HARD_DEP without using or.
3362         (resolve_dependencies): New static function.
3363         (prune_ready_list): New arg modulo_epilogue_p.  All callers changed.
3364         If it is true, allow only insns with INSN_EXACT_TICK set.
3365         (schedule_block): Return bool, always true for normal scheduling,
3366         true or false depending on modulo scheduling success otherwise.
3367         Add bookkeeping for modulo scheduling, and call resolve_dependencies
3368         on everything left over after a modulo schedule.
3369         (haifa_sched_init): Remove check_cfg call.  Clear modulo_ii.
3370         * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
3371         declarations.
3372         (set_modulo_params, discard_delay_pairs_above): Declare.
3373         * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
3374         * doc/invoke.texi (--param): Document it.
3375
3376         * sched-ebb.c (schedule_ebb): No longer static.  Remove declaration.
3377         New arg modulo_scheduling.  All callers changed.  Move note handling
3378         code here from schedule_ebbs.
3379         (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
3380         out of schedule_ebbs.
3381         (schedule_ebbs): Call them.  Remove note handling code moved to
3382         schedule_ebb.
3383         * sched-int.h (schedule_ebb, schedule_ebbs_init,
3384         schedule_ebbs_finish): Declare.
3385
3386 2011-09-30  Richard Guenther  <rguenther@suse.de>
3387