OSDN Git Service

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