OSDN Git Service

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