OSDN Git Service

Fix bootstrap on !NO_IMPLICIT_EXTERN_C and ia32 targets
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-10-18  Dodji Seketeli  <dodji@redhat.com>
2
3         PR bootstrap/50760
4         * input.c (dump_line_table_statistics): Use long, not size_t.
5
6 2011-10-17  Eric Botcazou  <ebotcazou@adacore.com>
7
8         * config/sparc/sparc.md (in_call_delay): Fix formatting issues.
9
10 2011-10-17  Michael Spertus  <mike_spertus@symantec.com>
11
12         * gcc/c-family/c-common.c (c_common_reswords): Add __bases,
13         __direct_bases.
14         * gcc/c-family/c-common.h: Add RID_BASES and RID_DIRECT_BASES.
15
16 2011-10-17  Simon Baldwin  <simonb@google.com>
17             Ian Lance Taylor  <iant@google.com>
18
19         * configure.ac: Add --with-native-system-header-dir.  Set and
20         substitute NATIVE_SYSTEM_HEADER_DIR.  Use native_system_header
21         when setting target_header_dir.
22         * config.gcc: Always set native_system_header_dir.
23         (*-*-gnu*): Set native_system_header_dir.  Don't use t-gnu.
24         (i[34567]86-pc-msdosdjgpp*): Set native_system_header_dir.  Don't
25         use i386/t-djgpp.
26         (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
27         native_system_header_dir.
28         (spu-*-elf*): Set native_system_header_dir.
29         * Makefile.in (NATIVE_SYSTEM_HEADER_DIR): Set to
30         @NATIVE_SYSTEM_HEADER_DIR@.
31         (PREPROCESSOR_DEFINES): Define NATIVE_SYSTEM_HEADER_DIR.
32         * cppdefault.c (STANDARD_INCLUDE_DIR): Don't define.
33         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
34         STANDARD_INCLUDE_COMPONENT.
35         (cpp_include_defaults): Don't use SYSTEM_INCLUDE_DIR.  Rename
36         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
37         * system.h: Poison SYSTEM_INCLUDE_DIR, STANDARD_INCLUDE_DIR, and
38         STANDARD_INCLUDE_COMPONENT.
39         * config/i386/t-mingw32 (NATIVE_SYSTEM_HEADER_DIR): Remove.
40         * config/i386/t-mingw-w32: Likewise.
41         * config/i386/t-mingw-w64: Likewise.
42         * config/spu/t-spu-elf: Likewise.
43         * config/i386/t-djgpp: Remove.
44         * config/t-gnu: Remove.
45         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Don't define.
46         (NATIVE_SYSTEM_HEADER_COMPONENT): Rename from
47         STANDARD_INCLUDE_COMPONENT.
48         * config/i386/djgpp.h (STANDARD_INCLUDE_DIR): Don't define.
49         * config/spu/spu-elf.h: Likewise.
50         * config/vms/xm-vms.h: Likewise.
51         * config/gnu.h: Likewise.
52         * config/openbsd.h (INCLUDE_DEFAULTS): Change STANDARD_INCLUDE_DIR
53         and STANDARD_INCLUDE_COMPONENT to NATIVE_SYSTEM_HEADER_DIR and
54         NATIVE_SYSTME_HEADER_COMPONENT.
55         * doc/install.texi (Configuration): Document
56         --with-native-system-header-dir.  Mention it in the documentation
57         for --with-sysroot and --with-build-sysroot.
58         * doc/tm.texi.in (Driver): Don't document SYSTEM_INCLUDE_DIR or
59         STANDARD_INCLUDE_DIR.  Rename STANDARD_INCLUDE_COMPONENT to
60         NATIVE_SYSTEM_HEADER_COMPONENT.  Rename uses of
61         STANDARD_INCLUDE_DIR to NATIVE_SYSTEM_HEADER_DIR.
62         * doc/fragments.texi (Target Fragment): Don't document
63         NATIVE_SYSTEM_HEADER_DIR.
64         * configure, doc/tm.texi: Rebuild.
65
66 2011-10-17  Richard Henderson  <rth@redhat.com>
67
68         * config/sparc/sparc.md: Use register_or_zero_operand where rJ
69         is the constraint.
70
71         * config/sparc/sparc.md (vec_perm_constv8qi, vec_perm<mode>): New
72         patterns.
73         * config/sparc/sparc.c (sparc_expand_vec_perm_bmask): New function.
74         * config/sparc/sparc-protos.h (sparc_expand_vec_perm_bmask): Declare.
75
76 2011-10-17  David S. Miller  <davem@davemloft.net>
77
78         * config/sparc/sparc-modes.def: Add single entry vector modes for
79         DImode and SImode.
80         * config/sparc/sparc.md (V32, V32I, V64, V64I, V64N8): Delete
81         mode iterators.
82         (mov<V32:mode>): Revert back to plain SFmode pattern.
83         (*movsf_insn): Likewise.
84         (mov<V64:mode>): Revert back to plain DFmode pattern.
85         (*movdf_insn_sp32): Likewise.
86         (*movdf_insn_sp32_v9): Likewise.
87         (*movdf_insn_sp64): Likewise.
88         (V64 mode splitters) Likewise.
89         (addsi3): Remove VIS alternatives.
90         (subsi3): Likewise.
91         (and<V64I:mode>3): Revert to DImode only pattern.
92         (and<V64I:mode>3_sp32): Likewise.
93         (*and<V64I:mode>3_sp64): Likewise.
94         (and<V32I:mode>3): Likewise.
95         (*and_not_<V64I:mode>_sp32): Likewise.
96         (*and_not_<V64I:mode>_sp64): Likewise.
97         (*and_not_<V32I:mode>): Likewise.
98         (ior<V64I:mode>3): Likewise.
99         (*ior<V64I:mode>3_sp32): Likewise.
100         (*ior<V64I:mode>3_sp64): Likewise.
101         (ior<V32I:mode>3): Likewise.
102         (*or_not_<V64I:mode>_sp32): Likewise.
103         (*or_not_<V64I:mode>_sp64): Likewise.
104         (*or_not_<V32I:mode>): Likewise.
105         (xor<V64I:mode>3): Likewise.
106         (*xor<V64I:mode>3_sp32): Likewise.
107         (*xor<V64I:mode>3_sp64): Likewise.
108         (xor<V32I:mode>3): Likewise.
109         (V64I mode splitters): Likewise.
110         (*xor_not_<V64I:mode>_sp32): Likewise.
111         (*xor_not_<V64I:mode>_sp64): Likewise.
112         (*xor_not_<V32I:mode>): Likewise.
113         (one_cmpl<V64I:mode>2): Likewise.
114         (*one_cmpl<V64I:mode>2_sp32): Likewise.
115         (*one_cmpl<V64I:mode>2_sp64): Likewise.
116         (one_cmpl<V32I:mode>2): Likewise.
117         (VM32, VM64, VMALL): New mode iterators.
118         (vbits, vconstr, vfptype): New mode attributes.
119         (mov<VMALL:mode>): New expander.
120         (*mov<VM32:mode>_insn): New insn.
121         (*mov<VM64:mode>_insn_sp64): New insn.
122         (*mov<VM64:mode>_insn_sp32): New insn, and associated splitter
123         specifically for the register to memory case.
124         (vec_init<mode>): New expander.
125         (VADDSUB): New mode iterator.
126         (<plusminus_insn>v2si3, <plusminus_insn>v2hi3): Remove and replace
127         with...
128         (<plusminus_insn><mode>3): New consolidated pattern.
129         (VL): New mode iterator for logical operations.
130         (vlsuf): New more attribute.
131         (vlop): New code iterator.
132         (vlinsn, vlninsn): New code attributes.
133         (<code><mode>3): New insn to non-negated vector logical ops.
134         (*not_<code><mode>3): Likewise for negated variants.
135         (*nand<mode>_vis): New insn.
136         (vlnotop): New code iterator.
137         (*<code>_not1<mode>_vis, *<code>_not2<mode>_vis): New insns.
138         (one_cmpl<mode>2): New insn.
139         (faligndata<V64I:mode>_vis): Rewrite to use VM64 iterator.
140         (bshuffle<VM64:mode>_vis): Likewise.
141         (v<vis3_shift_patname><mode>3): Use GCM mode iterator.
142         (fp<plusminus_insn>64_vis): Use V1DI mode.
143         (VASS mode iterator): Use V1SI not SI mode.
144         * config/sparc/sparc.c (sparc_vis_init_builtins): Account for
145         single-entry vector mode changes.
146         (sparc_expand_builtin): Likewise.
147         (sparc_expand_vector_init): New function.
148         * config/sparc/sparc-protos.h (sparc_expand_vector_init): Declare.
149
150 2011-10-17  Kai Tietz  <ktietz@redhat.com>
151
152         * fold-const.c (simple_operand_p_2): New function.
153         (fold_truthop): Rename to
154         (fold_truth_andor_1): function name.
155         Additionally remove branching creation for logical and/or.
156         (fold_truth_andor): Handle branching creation for logical and/or here.
157
158 2011-10-17  Andi Kleen  <ak@linux.intel.com>
159
160         * ggc-page.c (USING_MADVISE): Adjust ifdef to check for USING_MMAP.
161
162 2011-10-17  Georg-Johann Lay  <avr@gjlay.de>
163
164         * config/avr/avr.h (ASSEMBLER_DIALECT): Remove.
165         * config/avr/avr.md (mcu_have_movw, mcu_mega): Remove attributes.
166         (adjust_len): Add alternative "call".
167         (isa, enabled): New insn attributes.
168         (length): Use match_test with AVR_HAVE_JMP_CALL instead of
169         mcu_mega attribute.
170         (*sbrx_branch<mode>): Ditto.
171         (*sbrx_and_branch<mode>): Ditto.
172         (*sbix_branch): Ditto.
173         (*sbix_branch_bit7): Ditto.
174         (*sbix_branch_tmp): Ditto.
175         (*sbix_branch_tmp_bit7): Ditto.
176         (jump): Ditto.
177         (negsi2): Use attribute "isa" instead of assembler dialect.
178         (extendhisi2): Ditto.
179         (call_insn, call_value_insn): Set adjust_len attribute.
180         (indirect_jump): Indent to coding rules.
181         (call_prologue_saves): Use isa attribute instead of mcu_mega.
182         (epilogue_restores): Ditto.  Fix setting of SP as described in the
183         RTX pattern.
184         (*indirect_jump): Fusion of *jcindirect_jump, *njcindirect_jump
185         and *indirect_jump_avr6.
186         (*tablejump): Fusion of *tablejump_rjmp and *tablejump_lib.
187         (*jcindirect_jump, *njcindirect_jump, *indirect_jump_avr6): Remove.
188         (*tablejump_rjmp, *tablejump_lib): Remove.
189         * config/avr/avr.c (adjust_insn_length): Handle ADJUST_LEN_CALL.
190
191 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
192
193         PR c++/50757
194         * c-family/c.opt ([Wnonnull]): Add C++ and Objective-C++.
195         * doc/invoke.texi: Update.
196
197 2011-10-17  Richard Henderson  <rth@redhat.com>
198
199         PR 50746
200         * optabs.c (expand_vec_perm_expr): Fix indexing error.
201
202 2011-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
203
204         * configure.ac: Display `yes' if the SystemTap header has been
205         found.
206         * configure: Regenerate.
207
208 2011-10-08  Andi Kleen  <ak@linux.intel.com>
209
210         PR other/50636
211         * config.in, configure: Regenerate.
212         * configure.ac (madvise): Add to AC_CHECK_FUNCS.
213         * ggc-page.c (USING_MADVISE): Add.
214         (page_entry): Add discarded field.
215         (alloc_page): Check for discarded pages.
216         (release_pages): Add USING_MADVISE branch.
217
218 2011-10-17  Richard Guenther  <rguenther@suse.de>
219
220         PR tree-optimization/50729
221         * tree-vrp.c (extract_range_from_unary_expr_1): Remove
222         redundant test.
223         (simplify_conversion_using_ranges): Properly test the
224         intermediate result.
225
226 2011-10-15  Tom Tromey  <tromey@redhat.com>
227             Dodji Seketeli  <dodji@redhat.com>
228
229         * ggc.h (ggc_round_alloc_size): Declare new public entry point.
230         * ggc-none.c (ggc_round_alloc_size): New public stub function.
231         * ggc-page.c (ggc_alloced_size_order_for_request): New static
232         function.  Factorized from ggc_internal_alloc_stat.
233         (ggc_round_alloc_size): New public function.  Uses
234         ggc_alloced_size_order_for_request.
235         (ggc_internal_alloc_stat): Use ggc_alloced_size_order_for_request.
236         * ggc-zone.c (ggc_round_alloc_size): New public function extracted
237         from ggc_internal_alloc_zone_stat.
238         (ggc_internal_alloc_zone_stat): Use ggc_round_alloc_size.
239         * toplev.c (general_init): Initialize
240         line_table->alloced_size_for_request.
241
242 2011-10-15  Tom Tromey  <tromey@redhat.com>
243             Dodji Seketeli  <dodji@redhat.com>
244
245         * input.c (ONE_K, ONE_M, SCALE, STAT_LABEL, FORMAT_AMOUNT): New
246         macros.
247         (num_expanded_macros_counter, num_macro_tokens_counter): Declare
248         new counters.
249         (dump_line_table_statistics): Define new function.
250         * input.h (dump_line_table_statistics): Declare new function.
251         * toplev.c (dump_memory_report): Call dump_line_table_statistics.
252
253 2011-10-15  Tom Tromey  <tromey@redhat.com>
254             Dodji Seketeli  <dodji@redhat.com>
255
256         * doc/cppopts.texi: Document -fdebug-cpp.
257         * doc/invoke.texi: Add -fdebug-cpp to the list of preprocessor
258         options.
259
260 2011-10-15  Tom Tromey  <tromey@redhat.com>
261             Dodji Seketeli  <dodji@redhat.com>
262
263         * gcc/diagnostic.h (diagnostic_report_current_module): Add a
264         location parameter.
265         * diagnostic.c (diagnostic_report_current_module): Add a location
266         parameter to the function definition.  Use it instead of
267         input_location.  Resolve the virtual location rather than just
268         looking up its map and risking to touch a resulting macro map.
269         (default_diagnostic_starter): Pass the relevant diagnostic
270         location to diagnostic_report_current_module.
271         * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): New.
272         (virt_loc_aware_diagnostic_finalizer): Likewise.
273         (diagnostic_report_current_function): Pass the
274         relevant location to diagnostic_report_current_module.
275         * tree-diagnostic.h (virt_loc_aware_diagnostic_finalizer): Declare
276         new function.
277         * toplev.c (general_init): By default, use the new
278         virt_loc_aware_diagnostic_finalizer as diagnostic finalizer.
279         * Makefile.in: Add vec.h dependency to tree-diagnostic.c.
280
281 2011-10-15  Tom Tromey  <tromey@redhat.com>
282             Dodji Seketeli  <dodji@redhat.com>
283
284         * doc/cppopts.texi (-ftrack-macro-expansion): Document new option.
285         * doc/invoke.texi (-ftrack-macro-expansion): Add this to the list of
286         preprocessor related options.
287
288 2011-10-15  Tom Tromey  <tromey@redhat>
289             Dodji Seketeli  <dodji@redhat.com>
290
291         * input.h (struct expanded_location): Move to libcpp/line-map.h.
292         (LOCATION_COLUMN): New accessor
293         (in_system_header_at): Use linemap_location_in_system_header_p.
294         * diagnostic.c (diagnostic_report_current_module): Adjust to avoid
295         touching the internals of struct line_map.  Use the public API.
296         instead.
297         (diagnostic_report_diagnostic): Don't use relational operator '<'
298         on virtual locations.  Use linemap_location_before_p instead.
299         * input.c (expand_location): Adjust to expand to the tokens'
300         spelling location when macro location tracking is on.
301
302
303 2011-10-08  Andi Kleen  <ak@linux.intel.com>
304
305         * ggc-page.c (GGC_QUIRE_SIZE): Increase to 512
306
307 2011-10-13  Andi Kleen  <ak@linux.intel.com>
308
309         * toplev.c (compile_file): Rename __gnu_slim_lto to __gnu_lto_slim.
310
311 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
312
313         PR tree-optimization/50727
314         * tree-vect-patterns.c (vect_operation_fits_smaller_type): Add
315         DEF_STMT to the list of statements to be replaced by the
316         pattern statements.
317
318 2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>
319
320         PR rtl-optimization/50615
321         * combine.c (distribute_notes) <REG_ARGS_SIZE>: Skip if I3 is a no-op.
322
323 2011-10-16  Jakub Jelinek  <jakub@redhat.com>
324
325         PR tree-optimization/50596
326         * tree-vectorizer.h (NUM_PATTERNS): Increase to 7.
327         * tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add
328         vect_recog_bool_pattern.
329         (check_bool_pattern, adjust_bool_pattern_cast,
330         adjust_bool_pattern, vect_recog_bool_pattern): New functions.
331
332 2011-10-16  Ira Rosen  <ira.rosen@linaro.org>
333
334         * tree-vect-stmts.c (vectorizable_load): For SLP without permutation
335         treat the first load of the node as the first element in its
336         interleaving chain.
337         * tree-vect-slp.c (vect_get_and_check_slp_defs): Swap the operands if
338         necessary and possible.
339         (vect_build_slp_tree): Add new argument.  Allow load groups of any size
340         in basic blocks.  Keep all the loads for further permutation check.
341         Use the new argument to determine if there is a permutation.  Update
342         the recursive calls.
343         (vect_supported_load_permutation_p): Allow subchains of interleaving
344         chains in basic block vectorization.
345         (vect_analyze_slp_instance): Update the call to vect_build_slp_tree.
346         Check load permutation based on the new parameter.
347         (vect_schedule_slp_instance): Don't start from the first element in
348         interleaving chain unless the loads are permuted.
349
350 2011-10-15  Jan Hubicka  <jh@suse.cz>
351
352         PR target/48668
353         PR target/50689
354         * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
355         after function body.
356
357 2011-10-15  Richard Henderson  <rth@redhat.com>
358
359         * tree-vect-slp.c: Include langhooks.h.
360         (vect_create_mask_and_perm): Emit VEC_PERM_EXPR, not a builtin.
361         (vect_transform_slp_perm_load): Use can_vec_perm_expr_p.  Simplify
362         mask creation for VEC_PERM_EXPR.
363         * tree-vect-stmts.c (perm_mask_for_reverse): Return the mask,
364         not the builtin.
365         (reverse_vec_elements): Emit VEC_PERM_EXPR not a builtin.
366         * Makefile.in (tree-vect-slp.o): Update dependency.
367         * optabs.c (can_vec_perm_expr_p): Allow NULL as unknown constant.
368
369 2011-10-15  Alan Modra  <amodra@gmail.com>
370
371         PR bootstrap/50738
372         * ifcvt.c (dead_or_predicable): Revert accidental commit with
373         HAVE_simple_return test.
374
375 2011-10-15  Alan Modra  <amodra@gmail.com>
376
377         * ifcvt.c (dead_or_predicable): Disable if-conversion when
378         doing so is likely to kill a shrink-wrapping opportunity.
379
380         PR rtl-optimization/49941
381         * jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.
382
383         * rtl.h (set_return_jump_label): Declare.
384         * function.c (set_return_jump_label): New function, extracted..
385         (thread_prologue_and_epilogue_insns): ..from here.  Use it in
386         another instance to set return jump_label.
387         * cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
388         * reorg.c (find_end_label): Likewise.
389
390 2011-10-14  David S. Miller  <davem@davemloft.net>
391
392         * config/sparc/sol2.h: Protect -m{cpu,tune}=native handling
393         with a more complete cpp test.
394         * config/sparc/linux64.h: Likewise.
395         * config/sparc/linux.h: Likewise.
396         * config/sparc/sparc.opt (sparc_debug): New target variable.
397         (mdebug): New target option.
398         * config/sparc/sparc.h (MASK_DEBUG_OPTIONS, MASK_DEBUG_ALL,
399         TARGET_DEBUG_OPTIONS): New defines.
400         * config/sparc/sparc.c (debug_target_flag_bits,
401         debug_target_flags): New functions.
402         (sparc_option_override): Add name strings back to cpu_table[].
403         Parse -mdebug string.  When TARGET_DEBUG_OPTIONS is true, print
404         out the target flags before and after override processing as well
405         as the selected cpu.  If MASK_V8PLUS, make sure that the selected
406         cpu is at least v9.
407
408 2011-10-15  Oleg Endo  <oleg.endo@t-online.de>
409
410         PR target/49263
411         * config/sh/sh.h (ZERO_EXTRACT_ANDMASK): New macro.
412         * config/sh/sh.c (sh_rtx_costs): Add test instruction case.
413         * config/sh/sh.md (tstsi_t): Name existing insn.  Make inner
414         and instruction commutative.
415         (tsthi_t, tstqi_t, tstqi_t_zero, tstsi_t_and_not,
416         tstsi_t_zero_extract_eq, tstsi_t_zero_extract_xor,
417         tstsi_t_zero_extract_subreg_xor_little,
418         tstsi_t_zero_extract_subreg_xor_big): New insns.
419         (*movsicc_t_false, *movsicc_t_true): Replace space with tab in
420         asm output.
421         (*andsi_compact): Reorder alternatives so that K08 is considered first.
422
423 2011-10-14  Eric Botcazou  <ebotcazou@adacore.com>
424
425         PR target/50354
426         * config/sparc/linux64.h (TARGET_DEFAULT): Only override if the default
427         processor is at least V9 and TARGET_64BIT_DEFAULT is defined.
428
429 2011-10-14  Gerald Pfeifer  <gerald@pfeifer.com>
430
431         * invoke.texi (AVR Options): Avoid \leq{}.
432
433 2011-10-14  Kai Tietz  <ktietz@redhat.com>
434
435         * gimplify.c (gimplify_expr): Take care that for bitwise-binary
436         transformation the operands have compatible types.
437
438 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
439
440         * config/i386/sse.md (vec_widen_smult_hi_v8hi,
441         vec_widen_smult_lo_v8hi, vec_widen_umult_hi_v8hi,
442         vec_widen_umult_lo_v8hi): Macroize using VI2_AVX2
443         mode iterator and any_extend code iterator.
444         (vec_widen_<s>mult_hi_v8si, vec_widen_<s>mult_lo_v8si): New expanders.
445         (vec_widen_smult_hi_v4si, vec_widen_smult_lo_v4si): Enable
446         also for TARGET_SSE4_1 using pmuldq insn.
447         (sdot_prodv8hi): Macroize using VI2_AVX2 iterator.
448         (sse2_sse4_1): New code attr.
449         (udot_prodv4si): Macroize using any_extend code iterator.
450         (<s>dot_prodv8si): New expander.
451
452 2011-10-14  Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
453
454         * config/i386/i386.c (atom_cost): Changed cost for loading
455         QImode using movzbl.
456
457 2011-10-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
458
459         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo in my
460         change on October 11th, 2011.
461
462 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
463
464         * config/i386/sse.md (vec_interleave_high<mode>,
465         vec_interleave_low<mode>): Add AVX2 expanders for VI_256 modes.
466         * config/i386/i386.c (expand_vec_perm_interleave3): New function.
467         (ix86_expand_vec_perm_builtin_1): Call it.
468
469 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
470
471         Fix thinko from r179765
472         * config/avr/avr.c (avr_option_override): Don't override
473         flag_omit_frame_pointer if not actually needed.
474
475 2011-10-14  Georg-Johann Lay  <avr@gjlay.de>
476
477         PR target/46278
478         * doc/invoke.texi (AVR Options): Document -mstrict-X.
479
480         * config/avr/avr.opt (-mstrict-X): New option.
481         (avr_strict_X): New variable reflecting -mstrict-X.
482         * config/avr/avr.c (avr_reg_ok_for_addr_p): Add parameter
483         outer_code and pass it down to avr_regno_mode_code_ok_for_base_p.
484         (avr_legitimate_address_p): Pass outer_code to
485         avr_reg_ok_for_addr_p and use that function in case PLUS.
486         (avr_mode_code_base_reg_class): Depend on avr_strict_X.
487         (avr_regno_mode_code_ok_for_base_p): Ditto, and depend on outer_code.
488         (avr_option_override): Disable -fcaller-saves if -mstrict-X is on.
489
490 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
491
492         * config/i386/sse.md (neg<mode>2): Use VI_AVX2 iterator instead
493         of VI_128.
494
495         * config/i386/sse.md (mulv2di3): Macroize using VI8_AVX2 iterator.
496         (ashl<mode>3): Use VI248_AVX2 iterator instead of VI248_128.
497         Use <sseinsnmode> instead of TI in mode attr.
498
499 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
500
501         * config/arm/linux-atomic-64bit.c: New (based on linux-atomic.c).
502         * config/arm/linux-atomic.c: Change comment to point to 64bit version.
503         (SYNC_LOCK_RELEASE): Instantiate 64bit version.
504         * config/arm/t-linux-eabi: Pull in linux-atomic-64bit.c.
505
506 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
507
508         * config/arm/arm.c (arm_output_ldrex): Support ldrexd.
509         (arm_output_strex): Support strexd.
510         (arm_output_it): New helper to output it in Thumb2 mode only.
511         (arm_output_sync_loop): Support DI mode.  Change comment to
512         not support const_int.
513         (arm_expand_sync): Support DI mode.
514         * config/arm/arm.h (TARGET_HAVE_LDREXBHD): Split into LDREXBH
515         and LDREXD.
516         * config/arm/iterators.md (NARROW): move from sync.md.
517         (QHSD): New iterator for all current ARM integer modes.
518         (SIDI): New iterator for SI and DI modes only.
519         * config/arm/sync.md (sync_predtab): New mode_attr.
520         (sync_compare_and_swapsi): Fold into sync_compare_and_swap<mode>.
521         (sync_lock_test_and_setsi): Fold into sync_lock_test_and_setsi<mode>.
522         (sync_<sync_optab>si): Fold into sync_<sync_optab><mode>.
523         (sync_nandsi): Fold into sync_nand<mode>.
524         (sync_new_<sync_optab>si): Fold into sync_new_<sync_optab><mode>.
525         (sync_new_nandsi): Fold into sync_new_nand<mode>.
526         (sync_old_<sync_optab>si): Fold into sync_old_<sync_optab><mode>.
527         (sync_old_nandsi): Fold into sync_old_nand<mode>.
528         (sync_compare_and_swap<mode>): Support SI & DI.
529         (sync_lock_test_and_set<mode>): Likewise.
530         (sync_<sync_optab><mode>): Likewise.
531         (sync_nand<mode>): Likewise.
532         (sync_new_<sync_optab><mode>): Likewise.
533         (sync_new_nand<mode>): Likewise.
534         (sync_old_<sync_optab><mode>): Likewise.
535         (sync_old_nand<mode>): Likewise.
536         (arm_sync_compare_and_swapsi): Turn into iterator on SI & DI.
537         (arm_sync_lock_test_and_setsi): Likewise.
538         (arm_sync_new_<sync_optab>si): Likewise.
539         (arm_sync_new_nandsi): Likewise.
540         (arm_sync_old_<sync_optab>si): Likewise.
541         (arm_sync_old_nandsi): Likewise.
542         (arm_sync_compare_and_swap<mode> NARROW): use sync_predtab, fix indent.
543         (arm_sync_lock_test_and_setsi<mode> NARROW): Likewise.
544         (arm_sync_new_<sync_optab><mode> NARROW): Likewise.
545         (arm_sync_new_nand<mode> NARROW): Likewise.
546         (arm_sync_old_<sync_optab><mode> NARROW): Likewise.
547         (arm_sync_old_nand<mode> NARROW): Likewise.
548
549 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
550
551         PR target/48126
552         * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
553
554 2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
555
556         * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
557
558 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
559
560         * doc/invoke.texi ([Wformat-zero-length]): Tidy.
561
562 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
563
564         * gimple.c (walk_stmt_load_store_addr_ops): Call visit_addr also
565         on COND_EXPR/VEC_COND_EXPR comparison operands if they are ADDR_EXPRs.
566
567 2011-10-14  Richard Guenther  <rguenther@suse.de>
568
569         PR tree-optimization/50723
570         * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
571
572 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
573
574         * gengtype.c (files_rules): Added rules for objc/objc-map.h and
575         objc/objc-map.c.
576
577 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
578
579         PR c++/17212
580         * c-family/c.opt ([Wformat-zero-length]): Add C++ and Objective-C++.
581         * doc/invoke.texi: Update.
582
583 2011-10-14  Iain Sandoe  <iains@gcc.gnu.org>
584
585         PR bootstrap/50699
586         * config/darwin.c (darwin_patch_builtin): Adjust argument type. Only
587         build for powerpc targets.  (darwin_patch_builtins): Only build for
588         powerpc targets.
589
590 2011-10-14  Jakub Jelinek  <jakub@redhat.com>
591
592         * config/i386/sse.md (*avx_cvtdq2pd256_2): Rename to...
593         (avx_cvtdq2pd256_2): ... this.
594         (sseunpackfltmode): New mode attr.
595         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi,
596         vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): Macroize
597         using VI2_AVX2 iterator.
598         (vec_unpacku_float_hi_v8si, vec_unpacku_float_lo_v8si): New expanders.
599
600 2011-10-13  David S. Miller  <davem@davemloft.net>
601
602         * config/sparc/sparc.md (plusminus): New code iterator.
603         (plusminus_insn): New code attr.
604         (addv2si3, subv2si3, addv4hi3, subv4hi3, addv2hi3, subv2hi3): Merge
605         using plusminus and plusminus_insn.
606         (fpadd64_vis, fpsub64_vis): Likewise.
607
608 2011-10-13  Richard Henderson  <rth@redhat.com>
609
610         * doc/md.texi (vec_perm): Document fallback to byte permutation.
611         * genopinit.c (optabs): Add vec_perm_const.
612         * optabs.c (can_vec_perm_expr_p): Rename from expand_vec_perm_expr_p.
613         Reject non-vector modes.  Allow fallback to byte permutation.
614         (expand_vec_perm_expr_1): Split out from ...
615         (expand_vec_perm_expr): ... here.  Allow fallback to byte permutation.
616         * optabs.h (DOI_vec_perm_const, vec_perm_const_optab): New.
617         * tree-vect-generic.c (lower_vec_perm): Update for name change.
618
619 2011-10-13  Richard Henderson  <rth@redhat.com>
620
621         * config/rs6000/altivec.md (vec_permv16qi): New pattern.
622
623         * config/rs6000/spu.md (vec_permv16qi): New pattern.
624
625         * config/i386/i386.c (ix86_expand_vec_perm_const): New.
626         * config/i386/i386-protos.h: Update.
627         * config/i386/sse.md (VEC_PERM_CONST): New mode iterator.
628         (vec_perm_const<VEC_PERM_CONST>): New expander.
629
630         * optabs.c (expand_vector_broadcast): New.
631         (expand_binop): Expand scalar shifts of vectors to vector shifts
632         of vectors, if the former isn't supported.
633         * tree-vect-generic.c (expand_vector_operations_1): Don't do that
634         here; always simplify to scalar shift of vector if possible.
635
636         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Fix mode
637         test for vector splat.
638
639 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
640
641         * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V.
642
643 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
644             Richard Guenther  <rguenther@suse.de>
645
646         * tree-ssa.c (maybe_optimize_var): Drop TREE_ADDRESSABLE from vector
647         or complex vars even if their DECL_UID is in not_reg_needs bitmap.
648
649 2011-10-13  Jakub Jelinek  <jakub@redhat.com>
650
651         * config/i386/sse.md (reduc_umin_v8hi): New pattern.
652         * config/i386/i386.c (ix86_build_const_vector): Handle
653         also V32QI, V16QI, V16HI and V8HI modes.
654         (emit_reduc_half): New function.
655         (ix86_expand_reduc): Use phminposuw insn for V8HImode UMIN.
656         Use emit_reduc_half helper function.
657
658 2011-10-13  Lawrence Crowl  <crowl@google.com>
659             Diego Novillo  <dnovillo@google.com>
660
661         * lto-streamer-in.c (input_struct_function_base): Factor out of ...
662         (input_function): ... here.
663         * lto-streamer-out.c (output_struct_function_base): Factor out of ...
664         (output_function): ... here.
665
666 2011-10-13  Gabriel Charette  <gchare@google.com>
667             Diego Novillo  <dnovillo@google.com>
668
669         * streamer-hooks.h (struct streamer_hooks): Add hooks
670         input_location and output_location.
671         * lto-streamer-in.c (lto_input_location): Use
672         streamer_hooks.input_location, if set.
673         * lto-streamer-out.c (lto_output_location): Use
674         streamer_hooks.output_location, if set.
675
676 2011-10-13  Eric Botcazou  <ebotcazou@adacore.com>
677
678         * doc/invoke.texi (SPARC options): Document -mfix-at697f.
679         * config/sparc/sparc.opt (mfix-at697f): New option.
680         * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
681         (sparc_reorg): New function.
682
683 2011-10-13  Richard Guenther  <rguenther@suse.de>
684
685         PR tree-optimization/50712
686         * ipa-split.c (split_function): Always re-gimplify parameters
687         when they are not gimple vals before passing them.  Properly
688         check for type compatibility.
689
690 2011-10-13  Tom de Vries  <tom@codesourcery.com>
691
692         * function.c (gimplify_parameters): Set number of arguments of call to
693         BUILT_IN_ALLOCA_WITH_ALIGN to 2.
694
695 2011-10-13  Tom de Vries  <tom@codesourcery.com>
696
697         * emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
698         for static const strings.
699         * varasm.c (build_constant_desc): Generate the memory location of the
700         constant using gen_const_mem.
701
702 2011-10-13  Richard Guenther  <rguenther@suse.de>
703
704         PR tree-optimization/50698
705         * tree-data-ref.c (split_constant_offset_1): Also process
706         offsets of &MEM.
707
708 2011-10-12  David S. Miller  <davem@davemloft.net>
709
710         * config/sparc/sparc.md (UNSPEC_FPMERGE): Delete.
711         (UNSPEC_MUL16AU, UNSPEC_MUL8, UNSPEC_MUL8SU, UNSPEC_MULDSU): New
712         unspecs.
713         (fpmerge_vis): Remove inaccurate comment, represent using vec_select
714         of a vec_concat.
715         (vec_interleave_lowv8qi, vec_interleave_highv8qi): New insns.
716         (fmul8x16_vis, fmul8x16au_vis, fmul8sux16_vis, fmuld8sux16_vis):
717         Reimplement as unspecs and remove inaccurate comments.
718         (vis3_shift_patname): New code attr.
719         (<vis3_shift_insn><vbits>_vis): Rename to
720         "v<vis3_shift_patname><mode>3".
721         (vis3_addsub_ss_patname): New code attr.
722         (<vis3_addsub_ss_insn><vbits>_vis): Rename to
723         "<vis3_addsub_ss_patname><mode>3".
724         * config/sparc/sparc.c (sparc_vis_init_builtins): Update to
725         accommodate pattern name changes.
726
727         * config/sparc/sparc.h: Do not force TARGET_VIS3 and TARGET_FMAF
728         to zero when assembler lacks support for such instructions.
729         * config/sparc/sparc.c (sparc_option_override): Clear MASK_VIS3
730         and MASK_FMAF in defaults when assembler lacks necessary support.
731
732 2011-10-12  Jakub Jelinek  <jakub@redhat.com>
733
734         * config/i386/sse.md (vec_unpacks_lo_<mode>,
735         vec_unpacks_hi_<mode>, vec_unpacku_lo_<mode>,
736         vec_unpacku_hi_<mode>): Change VI124_128 mode to VI124_AVX2.
737         * config/i386/i386.c (ix86_expand_sse_unpack): Handle
738         V32QImode, V16HImode and V8SImode for TARGET_AVX2.
739
740         * config/i386/sse.md (vec_avx2): New mode_attr.
741         (mulv16qi3): Macroize to cover also mulv32qi3 for TARGET_AVX2 into ...
742         (mul<mode>3): ... this.
743
744         * config/i386/i386.md (UNSPEC_VPERMDI): Remove.
745         * config/i386/i386.c (ix86_expand_vec_perm): Handle
746         V16QImode and V32QImode for TARGET_AVX2.
747         (MAX_VECT_LEN): Increase to 32.
748         (expand_vec_perm_blend): Add support for 32-byte integer
749         vectors with TARGET_AVX2.
750         (valid_perm_using_mode_p): New function.
751         (expand_vec_perm_pshufb): Add support for 32-byte integer
752         vectors with TARGET_AVX2.
753         (expand_vec_perm_vpshufb2_vpermq): New function.
754         (expand_vec_perm_vpshufb2_vpermq_even_odd): New function.
755         (expand_vec_perm_even_odd_1): Handle 32-byte integer vectors
756         with TARGET_AVX2.
757         (ix86_expand_vec_perm_builtin_1): Try expand_vec_perm_vpshufb2_vpermq
758         and expand_vec_perm_vpshufb2_vpermq_even_odd.
759         * config/i386/sse.md (VEC_EXTRACT_EVENODD_MODE): Add for TARGET_AVX2
760         32-byte integer vector modes.
761         (vec_pack_trunc_<mode>): Use VI248_AVX2 instead of VI248_128.
762         (avx2_interleave_highv32qi, avx2_interleave_lowv32qi): Remove pasto.
763         (avx2_pshufdv3, avx2_pshuflwv3, avx2_pshufhwv3): Generate
764         4 new operands.
765         (avx2_pshufd_1, avx2_pshuflw_1, avx2_pshufhw_1): Don't use
766         match_dup, instead add 4 new operands and require they have
767         right cross-lane values.
768         (avx2_permv4di): Change into define_expand.
769         (avx2_permv4di_1): New instruction.
770         (avx2_permv2ti): Use nonimmediate_operand instead of register_operand
771         for "xm" constrained operand.
772         (VEC_PERM_AVX2): Add V32QI and V16QI for TARGET_AVX2.
773
774         * config/i386/sse.md (avx2_gathersi<mode>,
775         avx2_gatherdi<mode>, avx2_gatherdi<mode>256): Add clobber of
776         match_scratch, change memory_operand to register_operand,
777         add (mem:BLK (scratch)) use.
778         (*avx2_gathersi<mode>, *avx2_gatherdi<mode>,
779         *avx2_gatherdi<mode>256): Add clobber of match_scratch,
780         add earlyclobber to the output operand and match_scratch,
781         add (mem:BLK (scratch)) use, change the other mem to match_operand.
782         Use %p6 instead of %c6 in the pattern.
783         * config/i386/i386.c (ix86_expand_builtin): Adjust for
784         operand 2 being a Pmode register_operand instead of memory_operand.
785
786 2011-10-12  Kai Tietz  <ktietz@redhat.com>
787
788         * config/i386/i386.md (simple_return): Disable if TARGET_SEH is active.
789
790 2011-10-12  Steve Ellcey  <sje@cup.hp.com>
791
792         * config/ia64/ia64.c (ia64_init_builtins): Fix unbalanced parentheses.
793
794 2011-10-12  Richard Guenther  <rguenther@suse.de>
795
796         * tree-ssa-alias.c (maybe_skip_until): Cache also at the point
797         of the first store we visit in a basic-block.
798         (get_continuation_for_phi): Search for a candidate VUSE that
799         might dominates all others.  Do pairwise disambiguation against
800         that candidate.
801
802 2011-10-12  Paul Koning  <pkoning@gcc.gnu.org>
803
804         PR tree-optimization/50189
805         * tree-vrp.c (extract_range_from_assert): Use the type of
806         the variable, not the limit.
807
808 2011-10-12  Richard Guenther  <rguenther@suse.de>
809
810         PR tree-optimization/50700
811         * tree-object-size.c (addr_object_size): Simplify and treat
812         MEM_REF bases consistently.
813
814 2011-10-12  Bernd Schmidt  <bernds@codesourcery.com>
815
816         * function.c (prepare_shrink_wrap, bb_active_p): New function.
817         (thread_prologue_and_epilogue_insns): Use bb_active_p.
818         Call prepare_shrink_wrap, then recompute bb_active_p for the
819         last block.
820
821 2011-10-12  Joseph Myers  <joseph@codesourcery.com>
822
823         PR c/50565
824         * convert.c (convert_to_integer): Do not narrow operands of
825         pointer subtraction.
826
827 2011-10-12  Nick Clifton  <nickc@redhat.com>
828
829         * config/arm/arm.h (EMIT_EABI_ATTRIBUTE): New macro.  Used to
830         emit a .eabi_attribute assembler directive, possibly with a
831         comment attached.
832         * config/arm/arm.c (arm_file_start): Use the new macro.
833         * config/arm/arm-c.c (arm_output_c_attributes): Likewise.
834
835 2011-10-12  Georg-Johann Lay  <avr@gjlay.de>
836
837         PR target/49939
838         * config/avr/avr.md (*movqi): Rename to movqi_insn.
839         (*call_insn): Rename to call_insn.
840         (*call_value_insn): Rename to call_value_insn.
841         * config/avr/avr.c (avr_2word_insn_p): New static function.
842         (jump_over_one_insn_p): Use it.
843
844 2011-10-12  Richard Sandiford  <richard.sandiford@linaro.org>
845
846         * expr.h (copy_blkmode_to_reg): Declare.
847         * expr.c (copy_blkmode_to_reg): New function.
848         (expand_assignment): Don't expand register RESULT_DECLs before
849         the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
850         RESULT_DECL register.
851         (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
852         * stmt.c (expand_return): Move BLKmode-to-register code into
853         copy_blkmode_to_reg.
854
855 2011-10-11  Eric Botcazou  <ebotcazou@adacore.com>
856
857         PR target/49965
858         * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
859         (mov<F:mode>cc): Likewise.
860
861 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
862
863         * tree-ssa-address.c (copy_ref_info): Remove copy of TREE_THIS_NOTRAP.
864
865 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
866
867         * tree.h (built_in_decls): Delete old interface with two parallel
868         arrays to hold standard builtin declarations, and replace it with
869         a function based interface that can support creating builtins on
870         the fly in the future.  Change all uses, and poison the old
871         names.  Make sure 0 is not a legitimate builtin index.
872         (implicit_built_in_decls): Ditto.
873         (built_in_info): Ditto.
874         (BUILTIN_VALID_P): Ditto.
875         (builtin_decl_explicit): Ditto.
876         (builtin_decl_implicit): Ditto.
877         (set_builtin_decl): Ditto.
878         (set_builtin_decl_implicit_p): Ditto.
879         (builtin_decl_explicit_p): Ditto.
880         (builtin_decl_implicit_p): Ditto.
881         * tree-complex.c (expand_complex_libcall): Ditto.
882         * tree-loop-distribution.c (generate_memset_zero): Ditto.
883         * tree-ssa-strlen.c (get_string_length): Ditto.
884         (handle_builtin_strcpy): Ditto.
885         (handle_builtin_strcat): Ditto.
886         * tree.c (iterative_hash_expr): Ditto.
887         (local_define_builtin): Ditto.
888         (build_common_builtin_nodes): Ditto.
889         * builtins.c (built_in_decls): Ditto.
890         (implicit_built_in_decls): Ditto.
891         (built_in_info): Ditto
892         (expand_builtin_classify_type): Ditto.
893         (mathfn_built_in_1): Ditto.
894         (expand_builtin_cexpi): Ditto.
895         (expand_builtin_mempcpy_args): Ditto.
896         (expand_builtin_stpcpy): Ditto.
897         (gimplify_va_arg_expr): Ditto.
898         (expand_builtin_sync_operation): Ditto.
899         (build_builtin_expect_predicate): Ditto.
900         (fold_builtin_memory_op): Ditto.
901         (fold_builtin_strcpy): Ditto.
902         (fold_builtin_stpcpy): Ditto.
903         (fold_builtin_strncpy): Ditto.
904         (fold_builtin_interclass_mathfn): Ditto.
905         (fold_builtin_classify): Ditto.
906         (fold_builtin_2): Ditto.
907         (fold_builtin_strstr): Ditto.
908         (fold_builtin_strrchr): Ditto.
909         (fold_builtin_strpbrk): Ditto.
910         (fold_builtin_strcat): Ditto.
911         (fold_builtin_strncat): Ditto.
912         (fold_builtin_strcspn): Ditto.
913         (fold_builtin_fputs): Ditto.
914         (fold_builtin_sprintf): Ditto.
915         (fold_builtin_snprintf): Ditto.
916         (expand_builtin_memory_chk): Ditto.
917         (fold_builtin_memory_chk): Ditto.
918         (fold_builtin_stxcpy_chk): Ditto.
919         (fold_builtin_strncpy_chk): Ditto.
920         (fold_builtin_strcat_chk): Ditto.
921         (fold_builtin_strncat_chk): Ditto.
922         (fold_builtin_sprintf_chk_1): Ditto.
923         (fold_builtin_snprintf_chk_1): Ditto.
924         (fold_builtin_printf): Ditto.
925         (fold_builtin_fprintf): Ditto.
926         (fold_call_stmt): Ditto.
927         (set_builtin_user_assembler_name): Ditto.
928         * tree-emutls.c (emutls_common_1): Ditto.
929         * omp-low.c (scan_omp): Ditto.
930         (lower_rec_input_clauses): Ditto.
931         (lower_reduction_clauses): Ditto.
932         (expand_parallel_call): Ditto.
933         (expand_task_call): Ditto.
934         (maybe_catch_exception): Ditto.
935         (optimize_omp_library_calls): Ditto.
936         (expand_omp_for_generic): Ditto.
937         (expand_omp_for_static_nochunk): Ditto.
938         (expand_omp_for_static_chunk): Ditto.
939         (expand_omp_sections): Ditto.
940         (expand_omp_atomic_fetch_op): Ditto.
941         (expand_omp_atomic_pipeline): Ditto.
942         (expand_omp_atomic_mutex): Ditto.
943         (lower_omp_single_simple): Ditto.
944         (lower_omp_single_copy): Ditto.
945         (lower_omp_master): Ditto.
946         (lower_omp_ordered): Ditto.
947         (lower_omp_critical): Ditto.
948         * tree-ssa-ccp.c (optimize_stdarg_builtin): Ditto.
949         * builtins.c (DEF_BUILTIN_STUB): Ditto.
950         (BUILT_IN_NONE): Ditto.
951         * tree-ssa-math-opts.c (execute_optimize_bswap): Ditto.
952         * gimple-low.c (lower_function_body): Ditto.
953         (lower_builtin_setjmp): Ditto.
954         * c-decl.c (merge_decls): Ditto.
955         * tree-eh.c (lower_resx): Ditto.
956         (lower_resx): Ditto.
957         (lower_eh_dispatch): Ditto.
958         * function (gimplify_parameters): Ditto.
959         * c-typeck.c (build_function_call_vec): Ditto.
960         * gimplify.c (build_stack_save_restore): Ditto.
961         (gimplify_vla_decl): Ditto.
962         (gimplify_modify_expr_to_memcpy): Ditto.
963         (gimplify_modify_expr_to_memset): Ditto.
964         (gimplify_variable_sized_compare): Ditto.
965         (gimplify_function_tree): Ditto.
966         * calls.c (emit_call_1): Ditto.
967         * tree-ssa-forprop.c (simplify_builtin_call): Ditto.
968         * tree-nested.c (convert_nl_goto_reference): Ditto.
969         (convert_tramp_reference_op): Ditto.
970         (finalize_nesting_tree_1): Ditto.
971         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
972         (tree_ssa_prefetch_arrays): Ditto.
973         * tree-streamer-in.c (streamer_get_builtin_tree): Ditto.
974         * system.h (built_in_decls): Ditto.
975         (implicit_built_in_decls): Ditto.
976         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
977         * config/sparc/sparc.c (sparc_gimplify_va_arg): Ditto.
978         * config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
979         (ix86_veclibabi_svml): Ditto.
980         (ix86_veclibabi_acml): Ditto.
981         * config/vms/vms.c (vms_patch_builtins): Ditto.
982         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
983         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Ditto.
984         (rs6000_builtin_vectorized_libmass): Ditto.
985         (rs6000_init_builtins): Ditto.
986         * config/darwin.c (darwin_override_options): Ditto.
987         (darwin_patch_builtin): Ditto.
988         (darwin_rename_builtins): Ditto.
989         * config/pa/pa.c (pa_init_builtins): Ditto.
990
991 2011-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
992
993         * tree.h (copy_ref_info): Expose existing function.
994         * tree-ssa-loop-ivopts.c (copy_ref_info): Move function to...
995         * tree-ssa-address.c (copy_ref_info): ...here, and remove static token.
996
997 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
998
999         * config/avr/avr-protos.h (avr_mode_code_base_reg_class): New
1000         prototype.
1001         (avr_regno_mode_code_ok_for_base_p): New prototype.
1002         * config/avr/avr.h (BASE_REG_CLASS): Remove.
1003         (REGNO_OK_FOR_BASE_P): Remove.
1004         (REG_OK_FOR_BASE_NOSTRICT_P): Remove.
1005         (REG_OK_FOR_BASE_STRICT_P): Remove.
1006         (MODE_CODE_BASE_REG_CLASS): New define.
1007         (REGNO_MODE_CODE_OK_FOR_BASE_P): New define.
1008         * config/avr/avr.c (avr_mode_code_base_reg_class): New function.
1009         (avr_regno_mode_code_ok_for_base_p): New function.
1010         (avr_reg_ok_for_addr_p): New static function.
1011         (avr_legitimate_address_p): Use it.  Beautify.
1012
1013 2011-10-11  Georg-Johann Lay  <avr@gjlay.de>
1014
1015         PR target/50447
1016         * config/avr/avr.md (cc): Add out_plus attribute alternative.
1017         (addsi3): Use it.  Adapt avr_out_plus to new prototype.  Use
1018         avr_out_plus for all CONST_INT addends.
1019         * config/avr/avr-protos.h (avr_out_plus): Change prototype.
1020         * config/avr/avr.c (notice_update_cc): Call avr_out_plus on
1021         CC_OUT_PLUS.
1022         (avr_out_plus_1): Change prototype and report effect on cc0.
1023         (avr_out_plus): Ditto.
1024         (adjust_insn_length): Adapt call to avr_out_plus to new prototype.
1025
1026 2011-10-11  H.J. Lu  <hongjiu.lu@intel.com>
1027
1028         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove
1029         the extra break.
1030
1031 2011-10-11  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1032
1033         * doc/invoke.texi: Document new warning.
1034         * common.opt (Wvector-operation-performance): Define new warning.
1035         * tree-vect-generic.c (expand_vector_piecewise): Warn about expanded
1036         vector operation.
1037         (exapnd_vector_parallel): Warn about expanded vector operation.
1038         (lower_vec_shuffle): Warn about expanded vector operation.
1039         * c-typeck.c (c_build_vec_perm_expr): Store correct location
1040         when creating VEC_PERM_EXPR.
1041
1042 2011-10-11  Richard Guenther  <rguenther@suse.de>
1043
1044         PR tree-optimization/50204
1045         * tree-ssa-alias.c (get_continuation_for_phi_1): Split out
1046         two argument handling from ...
1047         (get_continuation_for_phi): ... here.  Handle arbitrary number
1048         of PHI args.
1049
1050 2011-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
1051
1052         PR c++/33067
1053         * c-family/c-pretty-print.c (pp_c_floating_constant): Output
1054         max_digits10 (in the ISO C++ WG N1822 sense) decimal digits.
1055
1056 2011-10-11  Richard Sandiford  <richard.sandiford@linaro.org>
1057
1058         * modulo-sched.c: Fix comment typo.  Mention the possibility
1059         of using scheduling windows of II+1 cycles.
1060
1061 2011-10-11  Tristan Gingold  <gingold@adacore.com>
1062
1063         * doc/invoke.texi (C Dialect Options): Document
1064         -fallow-parameterless-variadic-functions.
1065         * c-parser.c (c_parser_parms_list_declarator): Handle it.
1066
1067 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1068
1069         * config/avr/avr.c (avr_option_override): Set
1070         flag_omit_frame_pointer to 0 if frame pointer is needed for unwinding.
1071
1072 2011-10-10  Uros Bizjak  <ubizjak@gmail.com>
1073
1074         PR bootstrap/50665
1075         * optabs.h (DOI_vec_perm): Rename from OTI_vec_perm.  Move from enum
1076         optab_index to enum direct_optab_index.
1077         (vec_perm_optab): Update.
1078
1079 2011-10-10  Anatoly Sokolov  <aesok@post.ru>
1080
1081         * config/cris/cris.c (cris_preferred_reload_class): New function.
1082         (TARGET_PREFERRED_RELOAD_CLASS): Define.
1083         * config/cris/cris.h (PREFERRED_RELOAD_CLASS): Remove.
1084
1085 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1086
1087         * config/avr/avr.md (*tablejump_rjmp): Change insn condition to
1088         !AVR_HAVE_JMP_CALL.
1089         (*tablejump_lib): Change insn condition to AVR_HAVE_JMP_CALL.
1090         (*tablejump_enh, *tablejump): Remove insns.
1091         * config/avr/libgcc.S (__tablejump__): Use RET instead of EIND +
1092         EIJMP for indirect jump.  Use LPM Z+ where available.
1093
1094 2011-10-10  Richard Henderson  <rth@redhat.com>
1095
1096         * doc/md.texi (vec_perm_const): Fix typo in cindex.
1097
1098 2011-10-10  Kirill Yukhin  <kirill.yukhin@intel.com>
1099             Yakovlev Vladimir  <vladimir.b.yakovlev@intel.com>
1100
1101         * config/i386/sse.md (fma_fnmsub_<mode>): Fix a typo.
1102
1103 2011-10-10  Richard Guenther  <rguenther@suse.de>
1104
1105         PR middle-end/50389
1106         * gimple-fold.c (gimplify_and_update_call_from_tree): Do not
1107         mark symbols for renaming.  Append the VUSE to all statements
1108         that possibly can have one.
1109
1110 2011-10-10  Richard Guenther  <rguenther@suse.de>
1111
1112         * ipa-split.c (pass_split_functions): Add verification TODOs.
1113         (pass_feedback_split_functions): Likewise.
1114
1115 2011-10-10  Richard Guenther  <rguenther@suse.de>
1116
1117         PR middle-end/50195
1118         * fold-const.c (fold_binary_loc): Canonicalize x*x to pow (x, 2)
1119         only when optimizing.
1120
1121 2011-10-10  Nick Clifton  <nickc@redhat.com>
1122
1123         PR middle-end/49801
1124         * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
1125         df_get_live_out instead of accessing the bitmaps directly.
1126         (execute_compare_elim_after_reload): Remove calls to df_set_flags,
1127         df_live_add_problem and df_analyze.
1128
1129 2011-10-10  Michael Matz  <matz@suse.de>
1130
1131         PR middle-end/50638
1132         * tree-emutls.c (gen_emutls_addr): Call add_referenced_var.
1133
1134 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1135
1136         * modulo-sched.c (ps_reg_move_info): Add num_consecutive_stages.
1137         (SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES): Delete.
1138         (node_sched_params): Remove first_reg_move and nreg_moves.
1139         (ps_num_consecutive_stages, extend_node_sched_params): New functions.
1140         (update_node_sched_params): Move up file.
1141         (print_node_sched_params): Print the stage.  Don't dump info related
1142         to first_reg_move and nreg_moves.
1143         (set_columns_for_row): New function.
1144         (set_columns_for_ps): Move up file and use set_columns_for_row.
1145         (schedule_reg_move): New function.
1146         (schedule_reg_moves): Call extend_node_sched_params and
1147         schedule_reg_move.  Extend size of uses bitmap.  Initialize
1148         num_consecutive_stages.  Return false if a move could not be
1149         scheduled.
1150         (apply_reg_moves): Don't emit moves here.
1151         (permute_partial_schedule): Handle register moves.
1152         (duplicate_insns_of_cycles): Remove for_prolog.  Emit moves according
1153         to the same stage-count test as ddg nodes.
1154         (generate_prolog_epilog): Update calls accordingly.
1155         (sms_schedule): Allow move-scheduling to add a new first stage.
1156
1157 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1158
1159         * modulo-sched.c (ps_insn): Adjust comment.
1160         (ps_reg_move_info): New structure.
1161         (partial_schedule): Add reg_moves field.
1162         (SCHED_PARAMS): Use node_sched_param_vec instead of node_sched_params.
1163         (node_sched_params): Turn first_reg_move into an identifier.
1164         (ps_reg_move): New function.
1165         (ps_rtl_insn): Cope with register moves.
1166         (ps_first_note): Adjust comment and assert that the instruction
1167         isn't a register move.
1168         (node_sched_params): Replace with...
1169         (node_sched_param_vec): ...this vector.
1170         (set_node_sched_params): Adjust accordingly.
1171         (print_node_sched_params): Take a partial schedule instead of a ddg.
1172         Use ps_rtl_insn and ps_reg_move.
1173         (generate_reg_moves): Rename to...
1174         (schedule_reg_moves): ...this.  Remove rescan parameter.  Record each
1175         move in the partial schedule, but don't emit it here.  Don't perform
1176         register substitutions here either.
1177         (apply_reg_moves): New function.
1178         (duplicate_insns_of_cycles): Use register indices directly,
1179         rather than finding instructions using PREV_INSN.  Use ps_reg_move.
1180         (sms_schedule): Call schedule_reg_moves before committing to
1181         a partial schedule.   Try the next ii if the schedule fails.
1182         Use apply_reg_moves instead of generate_reg_moves.  Adjust
1183         call to print_node_sched_params.  Free node_sched_param_vec
1184         instead of node_sched_params.
1185         (create_partial_schedule): Initialize reg_moves.
1186         (free_partial_schedule): Free reg_moves.
1187
1188 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1189
1190         * modulo-sched.c (ps_insn): Replace node field with an identifier.
1191         (SCHED_ASAP): Replace with..
1192         (NODE_ASAP): ...this macro.
1193         (SCHED_PARAMS): New macro.
1194         (SCHED_TIME, SCHED_FIRST_REG_MOVE, SCHED_NREG_MOVES, SCHED_ROW)
1195         (SCHED_STAGE, SCHED_COLUMN): Redefine using SCHED_PARAMS.
1196         (node_sched_params): Remove asap.
1197         (ps_rtl_insn, ps_first_note): New functions.
1198         (set_node_sched_params): Use XCNEWVEC.  Don't copy across the
1199         asap values.
1200         (print_node_sched_params): Use SCHED_PARAMS and NODE_ASAP.
1201         (generate_reg_moves): Pass ids to the SCHED_* macros.
1202         (update_node_sched_params): Take a ps insn identifier rather than
1203         a node as parameter.  Use ps_rtl_insn.
1204         (set_columns_for_ps): Update for above field and SCHED_* macro changes.
1205         (permute_partial_schedule): Use ps_rtl_insn and ps_first_note.
1206         (optimize_sc): Update for above field and SCHED_* macro changes.
1207         Update calls to try_scheduling_node_in_cycle and
1208         update_node_sched_params.
1209         (duplicate_insns_of_cycles): Adjust for above field and SCHED_*
1210         macro changes.  Use ps_rtl_insn and ps_first_note.
1211         (sms_schedule): Pass ids to the SCHED_* macros.
1212         (get_sched_window): Adjust for above field and SCHED_* macro changes.
1213         Use NODE_ASAP instead of SCHED_ASAP.
1214         (try_scheduling_node_in_cycle): Remove node parameter.  Update
1215         call to ps_add_node_check_conflicts.  Pass ids to the SCHED_* macros.
1216         (sms_schedule_by_order): Update call to try_scheduling_node_in_cycle.
1217         (ps_insert_empty_row): Adjust for above field changes.
1218         (compute_split_row): Use ids rather than nodes.
1219         (verify_partial_schedule): Adjust for above field changes.
1220         (print_partial_schedule): Use ps_rtl_insn.
1221         (create_ps_insn): Take an id rather than a node.
1222         (ps_insn_find_column): Adjust for above field changes.
1223         Use ps_rtl_insn.
1224         (ps_insn_advance_column): Adjust for above field changes.
1225         (add_node_to_ps): Remove node parameter.  Update call to
1226         create_ps_insn.
1227         (ps_has_conflicts): Use ps_rtl_insn.
1228         (ps_add_node_check_conflicts): Replace node parameter than an id.
1229
1230 2011-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
1231
1232         * modulo-sched.c (undo_replace_buff_elem): Delete.
1233         (generate_reg_moves): Don't build and return an undo list.
1234         (free_undo_replace_buff): Delete.
1235         (sms_schedule): Adjust call to generate_reg_moves.
1236         Don't call free_undo_replace_buff.
1237
1238 2011-10-10  Matthias Klose <doko@ubuntu.com>
1239
1240         * common/config/m32c: Remove empty directory.
1241
1242 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1243
1244         * config/avr/avr.md (*mulhi3_enh): Treat squaring smarter.
1245
1246 2011-10-10  Georg-Johann Lay  <avr@gjlay.de>
1247
1248         PR target/50652
1249         * config/avr/avr-mcus.def (AVR_MCU): Set .data_section_start of
1250         atmega164a to 0x100.
1251
1252 2011-10-09  Eric Botcazou  <ebotcazou@adacore.com>
1253
1254         * tree-ssa-forwprop.c (forward_propagate_into_comparison): Do not make
1255         the replacement if the conversion to the LHS type is not useless.
1256
1257 2011-10-09  Ira Rosen  <ira.rosen@linaro.org>
1258
1259         PR tree-optimization/50635
1260         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): Add
1261         DEF_STMT to the list of statements to be replaced by the
1262         pattern statements.
1263         (vect_handle_widen_mult_by_const): Don't check TYPE_OUT.
1264
1265 2011-10-09  Anatoly Sokolov  <aesok@post.ru>
1266
1267         * system.h: Commit forgotten hunk in previous patch.
1268         (OUTPUT_ADDR_CONST_EXTRA): Poison.
1269
1270 2011-10-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1271
1272         PR libobjc/50428
1273         * doc/objc.texi (Garbage Collection): Updated example to protect
1274         +initialize against execution in subclasses.
1275
1276 2011-10-07  Richard Henderson  <rth@redhat.com>
1277
1278         * doc/extend.texi (__builtin_shuffle): Improve the description to
1279         include the modulus of the selector.  Mention OpenCL.
1280         * doc/md.texi (vec_perm, vec_perm_const): Document named patterns.
1281
1282         * tree.def (VEC_PERM_EXPR): Rename from VEC_SHUFFLE_EXPR.
1283         * genopinit.c (optabs): Rename vshuffle to vec_perm.
1284         * c-typeck.c (c_build_vec_perm_expr): Rename from
1285         c_build_vec_shuffle_expr.  Update for name changes.
1286         * optabs.c (expand_vec_perm_expr_p): Rename from
1287         expand_vec_shuffle_expr_p.
1288         (expand_vec_perm_expr): Rename from expand_vec_shuffle_expr.
1289         * optabs.h (OTI_vec_perm): Rename from DOI_vshuffle.
1290         (vec_perm_optab): Rename from vshuffle_optab.
1291         * expr.c, gimple-pretty-print.c, gimple.c, gimplify.c,
1292         c-tree.h, c-parser.c, tree-cfg.c, tree-inline.c, tree-pretty-print.c,
1293         tree-ssa-operands.c, tree-vect-generic.c: Update for name changes.
1294
1295         * config/i386/i386.c (ix86_expand_vec_perm): Rename from
1296         ix86_expand_vshuffle.
1297         * config/i386/i386-protos.h: Update.
1298         * config/i386/sse.md (VEC_PERM_AVX2): Rename from VSHUFFLE_AVX2.
1299         (vec_perm<VEC_PERM_AVX2>): Rename from vshuffle<VSHUFFLE_AVX2>.
1300
1301 2011-10-07  Richard Henderson  <rth@redhat.com>
1302
1303         * config/i386/predicates.md (avx2_pblendw_operand): New.
1304         * config/i386/sse.md (sse4_1_pblendw): Un-macroize.
1305         (avx2_pblendw, *avx2_pblendw): New expander and insn.
1306
1307 2011-10-07  Richard Henderson  <rth@redhat.com>
1308
1309         * config/i386/i386.c (bdesc_args): Update code for
1310         __builtin_ia32_palignr256.  Change type of __builtin_ia32_pslldqi256,
1311         and __builtin_ia32_psrldqi256 to V4DI_FTYPE_V4DI_INT_CONVERT.
1312         (ix86_expand_args_builtin): Handle V4DI_FTYPE_V4DI_INT_CONVERT.
1313         * config/i386/sse.md (mode iterator V16): Add V2TI.
1314         (mode iterator SSESCALARMODE): Use V2TI not V4DI.
1315         (mode attr ssse3_avx2): Add V2TI.
1316         (avx2_lshrqv4di3, avx2_lshlqv4di3): Remove.
1317
1318 2011-10-07  David S. Miller  <davem@davemloft.net>
1319
1320         PR 50655
1321         * configure.ac: Add .register directives to VIS3 test.
1322         * configure: Regenerate.
1323
1324 2011-10-07  Richard Henderson  <rth@redhat.com>
1325
1326         * config.gcc (x86_64-*): Add core-avx-i, core-avx2 for with_cpu.
1327
1328 2011-10-07  Richard Henderson  <rth@redhat.com>
1329
1330         PR 49752
1331         * fold-const.c (fold_checksum_tree): Remove out-of-date assert.
1332
1333 2011-10-07  Andrew Stubbs  <ams@codesourcery.com>
1334
1335         * config/arm/predicates.md (shift_amount_operand): Remove constant
1336         range check.
1337         (shift_operator): Check range of constants for all shift operators.
1338
1339 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1340
1341         * config/s390/s390.c (s390_emit_tls_call_insn): Remove assertion.
1342         Load GOT pointer for non-pic builds.
1343         (s390_load_got): Replace pic_offset_table_rtx with hardcoded r12.
1344         (s390_emit_call): Likewise.
1345
1346 2011-10-07  Tom de Vries  <tom@codesourcery.com>
1347
1348         PR middle-end/50527
1349         * tree.c (build_common_builtin_nodes): Add local_define_builtin for
1350         BUILT_IN_ALLOCA_WITH_ALIGN.  Mark that BUILT_IN_ALLOCA_WITH_ALIGN can
1351         throw.
1352         * builtins.c (expand_builtin_alloca): Handle BUILT_IN_ALLOCA_WITH_ALIGN
1353         arglist.  Set align for BUILT_IN_ALLOCA_WITH_ALIGN.
1354         (expand_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1355         (is_inexpensive_builtin): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1356         * tree-ssa-ccp.c (evaluate_stmt): Set align for
1357         BUILT_IN_ALLOCA_WITH_ALIGN.
1358         (fold_builtin_alloca_for_var): Rename to ...
1359         (fold_builtin_alloca_with_align): Set DECL_ALIGN from 2nd
1360         BUILT_IN_ALLOCA_WITH_ALIGN argument.
1361         (ccp_fold_stmt): Try folding BUILT_IN_ALLOCA_WITH_ALIGN using
1362         fold_builtin_alloca_with_align.
1363         (optimize_stack_restore): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1364         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN): Declare using
1365         DEF_BUILTIN_STUB.
1366         * ipa-pure-const.c (special_builtin_state): Handle
1367         BUILT_IN_ALLOCA_WITH_ALIGN.
1368         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1)
1369         (call_may_clobber_ref_p_1): Same.
1370         * function.c (gimplify_parameters): Lower vla to
1371         BUILT_IN_ALLOCA_WITH_ALIGN.
1372         * gimplify.c (gimplify_vla_decl): Same.
1373         * cfgexpand.c (expand_call_stmt): Handle BUILT_IN_ALLOCA_WITH_ALIGN.
1374         * tree-mudflap.c (mf_xform_statements): Same.
1375         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
1376         (mark_all_reaching_defs_necessary_1, propagate_necessity): Same.
1377         * varasm.c (incorporeal_function_p): Same.
1378         * tree-object-size.c (alloc_object_size): Same.
1379         * gimple.c (gimple_build_call_from_tree): Same.
1380
1381 2011-10-07  Bernd Schmidt  <bernds@codesourcery.com>
1382
1383         * function.c (frame_required_for_rtx): Remove function.
1384         (requires_stack_frame_p): New arg set_up_by_prologue.  All callers
1385         changed.  Compute a set of mentioned registers and compare against
1386         the new arg rather than calling frame_required_for_rtx.
1387         (thread_prologue_and_epilogue_insns): Compute the set_up_by_prologue
1388         reg set.  Convert the unconverted_simple_returns mechanism to store
1389         jump insns rather than their basic blocks.  Also check the
1390         orig_entry_edge destination for new blocks.
1391
1392 2011-10-07  Jakub Jelinek  <jakub@redhat.com>
1393
1394         PR tree-optimization/50650
1395         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): Don't
1396         call vect_is_simple_cond here, instead fail if cond_expr isn't
1397         COMPARISON_CLASS_P or if get_vectype_for_scalar_type returns NULL
1398         for cond_expr's first operand.
1399         * tree-vect-stmts.c (vect_is_simple_cond): Static again.
1400         * tree-vectorizer.h (vect_is_simple_cond): Remove prototype.
1401
1402 2011-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1403
1404         * config/s390/s390.md (DWH, dwh): New mode macros.
1405         ("umulsidi3"): Extend to support "umulditi3" as well.
1406
1407 2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
1408             H.J. Lu  <hongjiu.lu@intel.com>
1409
1410         PR target/50603
1411         * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
1412         integer PLUS RTX to a register to improve address combine.
1413
1414 2011-10-06  Richard Henderson  <rth@redhat.com>
1415
1416         * combine-stack-adjust.c (maybe_move_args_size_note): Add after
1417         parameter; use it to decide whether to merge two notes.
1418         (combine_stack_adjustments_for_block): Use maybe_move_args_size_note
1419         for the deallocation case as well.
1420
1421 2011-10-06  Anatoly Sokolov  <aesok@post.ru>
1422
1423         * system.h (OUTPUT_ADDR_CONST_EXTRA): Poison.
1424         * doc/tm.texi.in (OUTPUT_ADDR_CONST_EXTRA): Remove documentation.
1425         * doc/tm.texi: Regenerate.
1426         * target.def (output_addr_const_extra): Use
1427         hook_bool_FILEptr_rtx_false.
1428         * targhooks.c (default_asm_output_addr_const_extra): Remove.
1429         * targhooks.h (default_asm_output_addr_const_extra): Remove.
1430         * hooks.c (hook_bool_FILEptr_rtx_false): New functions.
1431         * hooks.h (hook_bool_FILEptr_rtx_false): Declare.
1432
1433 2011-10-06  David S. Miller  <davem@davemloft.net>
1434
1435         * config/sparc/sparc.md (popcount<mode>2, clz<mode>2): Split up into...
1436         (popcountdi2, popcountsi2, clzdi2, clzsi2): Explicit expanders, in the
1437         SI mode 64-bit code gen case explicitly zero-extend and truncate.
1438         (*popcount<mode>_sp64): Split up into...
1439         (*popcountdi_sp64, *popcountsi_64): Explicit instantiations, and in the
1440         SImode case use truncate.
1441         (*clzsi_sp64): Rewrite to use truncate, and let the expander emit the
1442         subtract so the compiler can optimize it.
1443         (SIDI): Remove unused mode iterator.
1444
1445 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1446
1447         * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
1448         on the orig_entry_edge. Don't account for it in prologue_clobbered.
1449
1450 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1451
1452         PR tree-optimization/50596
1453         * tree-vectorizer.h (vect_is_simple_cond): New prototype.
1454         (NUM_PATTERNS): Change to 6.
1455         * tree-vect-patterns.c (vect_recog_mixed_size_cond_pattern): New
1456         function.
1457         (vect_vect_recog_func_ptrs): Add vect_recog_mixed_size_cond_pattern.
1458         (vect_mark_pattern_stmts): Don't create stmt_vinfo for def_stmt
1459         if it already has one, and don't set STMT_VINFO_VECTYPE in it
1460         if it is already set.
1461         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Handle
1462         COND_EXPR in pattern stmts.
1463         (vect_is_simple_cond): No longer static.
1464
1465 2001-10-06  Richard Henderson  <rth@redhat.com>
1466
1467         * config/i386/i386.c (ix86_expand_vshuffle): Add AVX2 support.
1468         * config/i386/sse.md (sseshuffint): Remove.
1469         (sseintvecmode): Support V16HI, V8HI, V32QI, V16QI.
1470         (VSHUFFLE_AVX2): New mode iterator.
1471         (vshuffle<mode>): Use it.
1472         (avx_vec_concat<V_256>): Rename from *vec_concat<V_256>_avx.
1473
1474         * config/i386/i386.c (ix86_expand_sse_movcc): Use correct mode
1475         for vector_all_ones_operand.
1476         (ix86_expand_int_vcond): Distinguish between comparison mode
1477         and data mode.  Allow them to differ.
1478         (ix86_expand_vshuffle): Don't force data mode to match maskmode.
1479
1480 2001-10-06  Richard Henderson  <rth@redhat.com>
1481
1482         * optabs.c (expand_vec_shuffle_expr): Use the proper mode for the
1483         mask operand.  Tidy the code.
1484
1485 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1486
1487         * tree-vect-patterns.c (vect_pattern_recog_1): Use
1488         vect_recog_func_ptr typedef for the first argument.
1489         (vect_pattern_recog): Rename vect_recog_func_ptr variable
1490         to vect_recog_func, use vect_recog_func_ptr typedef for it.
1491
1492         PR tree-optimization/49279
1493         * tree-ssa-structalias.c (find_func_aliases): Don't handle
1494         CAST_RESTRICT.
1495         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Allow
1496         restrict propagation.
1497         * tree-ssa.c (useless_type_conversion_p): Don't return false
1498         if TYPE_RESTRICT differs.
1499
1500 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1501
1502         * function.c (thread_prologue_and_epilogue_insns): Build a vector
1503         of unconverted simple return blocks rather than trying to
1504         recompute them later based on bb_flags bitmap tests.
1505
1506 2011-10-06  Michael Matz  <matz@suse.de>
1507
1508         * tree-flow.h (get_var_ann): Don't declare.
1509         * tree-flow-inline.h (get_var_ann): Remove.
1510         (set_is_used): Use var_ann, not get_var_ann.
1511         * tree-dfa.c (add_referenced_var): Inline body of get_var_ann.
1512         * tree-profile.c (gimple_gen_edge_profiler): Call
1513         find_referenced_var_in.
1514         (gimple_gen_interval_profiler): Ditto.
1515         (gimple_gen_pow2_profiler): Ditto.
1516         (gimple_gen_one_value_profiler): Ditto.
1517         (gimple_gen_average_profiler): Ditto.
1518         (gimple_gen_ior_profiler): Ditto.
1519         (gimple_gen_ic_profiler): Ditto plus call add_referenced_var.
1520         (gimple_gen_ic_func_profiler): Call add_referenced_var.
1521         * tree-mudflap.c (execute_mudflap_function_ops): Call
1522         add_referenced_var.
1523
1524 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
1525
1526         * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs
1527         don't set SSA_NAME_DEF_STMT that has been already set by
1528         gimple_build_assign_with_ops.
1529         (vect_recog_pow_pattern, vect_recog_widen_sum_pattern,
1530         vect_operation_fits_smaller_type, vect_recog_over_widening_pattern):
1531         Likewise.
1532
1533         * tree.h (avoid_folding_inline_builtin): New prototype.
1534         * builtins.c (avoid_folding_inline_builtin): No longer static.
1535         * gimple-fold.c (gimple_fold_builtin): Give up if
1536         avoid_folding_inline_builtin returns true.
1537
1538 2011-10-06  Richard Guenther  <rguenther@suse.de>
1539
1540         * tree-vect-generic.c (vector_element): Look at previous
1541         generated results.
1542
1543 2011-10-06  David Edelsohn  <dje.gcc@gmail.com>
1544
1545         PR target/39950
1546         * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Define
1547         __powerpc__, __PPC__, __unix__.
1548
1549 2011-10-06  Michael Matz  <matz@suse.de>
1550
1551         * i386/i386.opt (recip_mask, recip_mask_explicit,
1552         x_recip_mask_explicit): New variables and cl_target member.
1553         (mrecip=): New option.
1554         * i386/i386.h (RECIP_MASK_DIV, RECIP_MASK_SQRT, RECIP_MASK_VEC_DIV,
1555         RECIP_MASK_VEC_SQRT, RECIP_MASK_ALL, RECIP_MASK_NONE): New bitmasks.
1556         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_VEC_DIV,
1557         TARGET_RECIP_VEC_SQRT): New tests.
1558         * i386/i386.md (divsf3): Check TARGET_RECIP_DIV.
1559         (sqrt<mode>2): Check TARGET_RECIP_SQRT.
1560         * i386/sse.md (div<mode>3): Check TARGET_RECIP_VEC_DIV.
1561         (sqrt<mode>2): Check TARGET_RECIP_VEC_SQRT.
1562         * i386/i386.c (ix86_option_override_internal): Set recip_mask
1563         for -mrecip and -mrecip=options.
1564         (ix86_function_specific_save): Save recip_mask_explicit.
1565         (ix86_function_specific_restore): Restore recip_mask_explicit.
1566
1567         * doc/invoke.texi (ix86 Options): Document the new option.
1568
1569 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
1570
1571         PR target/49049
1572         * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
1573
1574 2011-10-06  Ulrich Weigand  <ulrich.weigand@linaro.org>
1575
1576         PR target/50305
1577         * config/arm/arm.c (arm_legitimize_reload_address): Recognize
1578         output of a previous pass through legitimize_reload_address.
1579         Do not attempt to optimize addresses if the base register is
1580         equivalent to a constant.
1581
1582 2011-10-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1583
1584         * function.c (thread_prologue_and_epilogue_insns): Mark
1585         last_bb_active as possibly unused.  It is unused for targets which
1586         do neither have "return" nor "simple_return" expanders.
1587
1588 2011-10-06  Richard Guenther  <rguenther@suse.de>
1589
1590         * fold-const.c (fold_ternary_loc): Also fold non-constant
1591         vector CONSTRUCTORs.  Make more efficient.
1592         * tree-ssa-dom.c (cprop_operand): Don't handle virtual operands.
1593         (cprop_into_stmt): Don't propagate into virtual operands.
1594         (optimize_stmt): Really dump original statement.
1595
1596 2011-10-06  Nick Clifton  <nickc@redhat.com>
1597
1598         * config/rx/rx.md (smin3): Revert previous delta.
1599
1600 2011-10-06  Richard Guenther  <rguenther@suse.de>
1601
1602         PR tree-optimization/38884
1603         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial
1604         reads from aggregate SSA names.
1605
1606 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
1607
1608         * tree-vect-patterns.c (vect_pattern_recog_1): Add stmts_to_replace
1609         argument, truncate it at the beginning instead of allocating there
1610         and freeing at the end.
1611         (vect_pattern_recog): Allocate stmts_to_replace here and free at end,
1612         pass its address to vect_pattern_recog_1.
1613
1614 2011-10-05  David S. Miller  <davem@davemloft.net>
1615
1616         * config/sparc/sparc.opt (POPC): New option.
1617         * doc/invoke.texi: Document it.
1618         * config/sparc/sparc.c (sparc_option_override): Enable MASK_POPC by
1619         default on Niagara-2 and later.
1620         * config/sparc/sparc.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
1621         * config/sparc/sparc.md (SIDI): New mode iterator.
1622         (ffsdi2): Delete commented out pattern and comments.
1623         (popcount<mode>2, clz<mode>2): New expanders.
1624         (*popcount<mode>_sp64, popcountsi_v8plus, popcountdi_v8plus,
1625         *clzdi_sp64, clzdi_v8plus, *clzsi_sp64, clzsi_v8plus): New insns.
1626
1627 2011-10-06  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1628
1629         PR middle-end/50607
1630         * c-tree.h (c_expr_t): New typedef for struct c_expr.
1631         (C_EXPR_APPEND): New macro.
1632         * c-parser.c (c_parser_get_builtin_args): Preserve
1633         original_tree_code of c_expr structure.
1634         (c_parser_postfix_expression): Adjust to the new function.
1635
1636 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1637
1638         * function.c (thread_prologue_and_epilogue_insns): Don't shrink-wrap
1639         if profiling after the prologue.
1640
1641 2011-10-05  Jakub Jelinek  <jakub@redhat.com>
1642
1643         PR tree-optimization/50613
1644         * tree-ssa-strlen.c (find_equal_ptrs): If CASE_CONVERT
1645         operand is ADDR_EXPR, fallthru into ADDR_EXPR handling,
1646         and if it is neither that not SSA_NAME, give up.
1647
1648 2011-10-05  Richard Henderson  <rth@redhat.com>
1649
1650         * tree-vect-generic.c (vector_element): Never fail.  Use
1651         build_zero_cst.  Tidy up type references.
1652         (lower_vec_shuffle): Never fail.  Mask shuffle indicies.  Reduce
1653         code duplication.  Do update_stmt here ...
1654         (expand_vector_operations_1): ... not here.
1655
1656         * config/i386/i386.c (ix86_expand_vshuffle): Never fail.  Handle
1657         TARGET_XOP.  Fix pshufb constant vector creation.  Reduce code
1658         duplication.  Handle V2DI without SSE4.1.
1659         * config/i386/i386-protos.h (ix86_expand_vshuffle): Update decl.
1660         * config/i386/i386.md (vshuffle<V_128>): Remove assert for ok.
1661
1662 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
1663
1664         * config/i386/i386.c (distance_non_agu_define): Simplify calculation
1665         of "found".  Simplify return value calculation.
1666         (distance_agu_use): Ditto.
1667
1668 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1669
1670         PR bootstrap/50621
1671         * config/i386/i386.c (ix86_add_cfa_restore_note): Omit notes only
1672         if the function was not shrink-wrapped.
1673         (ix86_expand_epilogue): Ensure queued cfa_adjust notes are attached
1674         to an insn.
1675         * function.c (thread_prologue_and_epilogue_insns): Make sure the
1676         shrink_wrapped flag is set even if there is no dump file.
1677
1678 2011-10-05  DJ Delorie  <dj@redhat.com>
1679             Nick Clifton  <nickc@redhat.com>
1680
1681         * config/rx/rx.opt (mpid): Define.
1682         * config/rx/t-rx (MULTILIB_OPTIONS): Add -mpid
1683         (MULTILIB_DIRNAMES): Add pid.
1684         * config/rx/rx.c (rx_gp_base_regnum_val, rx_pid_base_regnum_val)
1685         (rx_num_interrupt_regs): New variable.
1686         (rx_gp_base_regnum): New function.  Returns the number of the
1687         small data area register.
1688         (rx_pid_base_regnum): New function.  Returns the number of the pid
1689         base register.
1690         (rx_decl_for_addr): New function.  Returns the symbolic part of a MEM.
1691         (rx_pid_data_operand): New function.  Returns whether an object is
1692         in the position independent data area.
1693         (rx_legitimize_address): New function.  Puts undecided PID
1694         objects in the PID data area.
1695         (rx_is_legitimate_address): Add support for PID operands.
1696         (rx_print_operand_address): Likewise.
1697         (rx_print_operand): Likewise.
1698         (rx_maybe_pidify_operand): New function.  Determine if an operand
1699         is suitable for PID addressing.
1700         (rx_gen_move_template): Add PID support.
1701         (rx_conditional_register_usage): Likewise.
1702         (rx_option_override): Initialise rx_num_interrupt_regs.
1703         (rx_is_legitimate_constant): Add support for PID constants.
1704         (TARGET_LEGITIMIZE_ADDRESS): Define.
1705         * config/rx/constraints.md (Rpid): Define.
1706         (Rpda): Define.
1707         * config/rx/rx.md (UNSPEC_PID_ADDR): Define.
1708         (tablejump): Add PID support.
1709         (mov<>): Likewise.
1710         (mov<>_internal): Likewise.
1711         (addsi3): Convert to an expander.  Add PID support.
1712         (pid_addr): New pattern.
1713         * config/rx/rx.h (CPP_SPEC): Define.
1714         (ASM_SPEC): Pass -mpid and -mint-register on to assembler.
1715         (CASE_VECTOR_PC_RELATIVE): Define.
1716         (JUMP_TABLES_IN_TEXT_SECTION): Enable for PID mode.
1717         * config/rx/rx-protos.h (rx_maybe_pidify_operand): Prototype.
1718         * doc/invoke.texi (RX Options): Document -mpid command line option.
1719
1720 2011-10-05  Richard Guenther  <rguenther@suse.de>
1721
1722         PR tree-optimization/38885
1723         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle partial reads
1724         from constants.
1725
1726 2011-10-05  Bernd Schmidt  <bernds@codesourcery.com>
1727
1728         * doc/invoke.texi (-fshrink-wrap): Document.
1729         * opts.c (default_options_table): Add it.
1730         * common.opt (fshrink-wrap): Add.
1731         * function.c (emit_return_into_block): Remove useless declaration.
1732         (record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
1733         requires_stack_frame_p, gen_return_pattern): New static functions.
1734         (emit_return_into_block): New arg simple_p.  All callers changed.
1735         Use gen_return_pattern.
1736         (thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
1737         * config/i386/i386.md (return): Expand into a simple_return.
1738         (simple_return): New expander):
1739         (simple_return_internal, simple_return_internal_long,
1740         simple_return_pop_internal_long, simple_return_indirect_internal):
1741         Renamed from return_internal, return_internal_long,
1742         return_pop_internal_long and return_indirect_internal; changed to use
1743         simple_return.
1744         * config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
1745         simple returns.
1746         (ix86_pad_returns): Likewise.
1747         * function.h (struct rtl_data): Add member shrink_wrapped.
1748         * cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
1749         are not jumps or sibcalls can't be compared.
1750
1751 2011-10-05  Richard Guenther  <rguenther@suse.de>
1752
1753         * tree-ssa-sccvn.c (vn_get_expr_for): Handle CONSTRUCTOR of
1754         vector type.
1755         (simplify_unary_expression): Handle BIT_FIELD_REFs.
1756         (try_to_simplify): Handle BIT_FIELD_REFs.
1757
1758 2011-10-05  Georg-Johann Lay  <avr@gjlay.de>
1759
1760         * config/avr/avr-protos.h (avr_out_addto_sp): New prototype.
1761         * config/avr/avr.c (avr_out_addto_sp): New function.
1762         (adjust_insn_length): Handle ADJUST_LEN_ADDTO_SP.
1763         * config/avr/avr.md (adjust_len): Add "addto_sp".
1764         (*movhi_sp): Remove insn.
1765         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): Merge to *addhi3_sp_R.
1766
1767 2011-10-05  Richard Guenther  <rguenther@suse.de>
1768
1769         * gimple-fold.c (gimple_fold_stmt_to_constant_1): For ternary ops
1770         with an embedded expression valueize and fold that as well.
1771         * tree-ssa-sccvn.c (try_to_simplify): Also allow SSA name
1772         results from gimple_fold_stmt_to_constant_1.
1773
1774 2011-10-05  Nick Clifton  <nickc@redhat.com>
1775
1776         * config/rx/rx.md (tablejump): Add missing label.
1777         (adddi3_internal): Mark operand 0 as early-clobbered.
1778         (smaxsi3): Revert previous delta.
1779         (adc_internal): Fix whitespace in generated asm.
1780         (adc_flags): Likewise.
1781
1782 2011-10-05  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1783
1784         * expmed.c (expand_mult_highpart_optab): Replace optab_handler
1785         with the new widening_optab_handler.
1786
1787 2011-10-05  Richard Guenther  <rguenther@suse.de>
1788
1789         PR tree-optimization/50609
1790         * gimple-fold.c (fold_array_ctor_reference): Also handle
1791         vector typed constructors.
1792         (fold_ctor_reference): Dispatch to fold_array_ctor_reference
1793         for vector typed constructors.
1794
1795 2011-10-05  Uros Bizjak  <ubizjak@gmail.com>
1796
1797         * config/i386/i386.c (ix86_emit_binop): New static function.
1798         (ix86_split_lea_for_addr): Use ix86_emit_binop to emit add and shl
1799         instructions.
1800         (x86_output_mi_thunk): Use ix86_emit_binop to emit add instructions.
1801
1802 2011-10-04  David S. Miller  <davem@davemloft.net>
1803
1804         * config/sparc/sparc.md (UNSPEC_FHADD, UNSPEC_FHSUB,
1805         UNSPEC_XMUL): New unspecs.
1806         (muldi3_v8plus): Use output_v8plus_mult.
1807         (*naddsf3, *nadddf3, *nmulsf3, *nmuldf3, *nmuldf3_extend):
1808         New VIS 3.0 combiner patterns.
1809         (fhaddsf_vis, fhadddf_vis, fhsubsf_vis, fhsubdf_vis,
1810         fnhaddsf_vis, fnhaddf_vis, umulxhi_vis, *umulxhi_sp64,
1811         umulxhi_v8plus, xmulx_vis, *xmulx_sp64, xmulx_v8plus,
1812         xmulxhi_vis, *xmulxhi_sp64, xmulxhi_v8plus): New VIS 3.0
1813         builtins patterns.
1814         * config/sparc/sparc.c (sparc_vis_init_builtins): Emit new builtins.
1815         (output_v8plus_mult): New function.
1816         * config/sparc/sparc-protos.h: Declare it.
1817         * config/sparc/visintrin.h (__vis_fhadds, __vis_fhaddd,
1818         __vis_fhsubs, __vis_fhsubd, __vis_fnhadds, __vis_fnhaddd,
1819         __vis_umulxhi, __vis_xmulx, __vis_xmulxhi): New intrinsics.
1820         * doc/extend.texi: Document new builtins.
1821
1822 2011-10-04  Richard Henderson  <rth@redhat.com>
1823
1824         * c-typeck.c (c_build_vec_shuffle_expr): Fix uninitialized variable.
1825         Avoid save_expr unless two_arguments.
1826
1827 2011-10-04  Ozkan Sezer  <sezeroz@gmail.com>
1828
1829         * config/i386/mingw-w64.h (CPP_SPEC): Rename _REENTRANCE to _REENTRANT.
1830         * config/i386/mingw32.h (CPP_SPEC): Likewise.
1831
1832 2011-10-04  David S. Miller  <davem@davemloft.net>
1833
1834         * config/sparc/driver-sparc.c (cpu_names): Fix string for supersparc
1835         under Linux.
1836
1837 2011-10-04  Jakub Jelinek  <jakub@redhat.com>
1838
1839         PR tree-optimization/50604
1840         * builtins.c (fold_builtin_strcpy, fold_builtin_stpcpy,
1841         fold_builtin_strncpy, fold_builtin_stxcpy_chk): Ensure
1842         last argument to memcpy has size_type_node type instead of ssizetype.
1843         * tree-ssa-strlen.c (handle_builtin_memcpy): Use size_type_node
1844         instead of TREE_TYPE (len) as type for newlen.
1845
1846         PR tree-optimization/50522
1847         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
1848         TYPE_RESTRICT.
1849         (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
1850         unconditionally.
1851
1852         * fold-const.c (fold_unary_loc): Don't optimize
1853         POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
1854         casting the inner pointer if it isn't TYPE_RESTRICT.
1855         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't through
1856         casts from non-TYPE_RESTRICT pointer to TYPE_RESTRICT pointer.
1857
1858 2011-10-04  Joseph Myers  <joseph@codesourcery.com>
1859
1860         * config.gcc (i[34567]86-*-elf*, x86_64-*-elf*): Use i386/t-crtstuff.
1861
1862 2011-10-04  Jan Hubicka  <jh@suse.cz>
1863
1864         * lto-streamer.h (lto_input_toplevel_asms): Add order_base parameter.
1865         * lto-streamer-in.c (lto_input_toplevel_asms): Stream in order.
1866         * lto-streamer-out.c (lto_output_toplevel_asms): Stream out order.
1867         * lto-cgraph.c (order_base): New static var.
1868         (lto_output_node): Stream in order.
1869         (lto_output_varpool_node): Stream out order.
1870         (input_node): Stream in order.
1871         (input_varpool_node): Stream out order.
1872         (input_cgraph_1): Initialize order base; update call of
1873         lto_input_toplevel_asms.
1874
1875 2011-10-04  Georg-Johann Lay  <avr@gjlay.de>
1876
1877         PR target/50566
1878         * config/avr/avr-protos.h (avr_legitimize_reload_address): New
1879         prototype.
1880         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Copy worker code
1881         from here...
1882         * config/avr/avr.c (avr_legitimize_reload_address) ...to this new
1883         function.  Log if avr_log.legitimize_reload_address.
1884
1885 2011-10-04  Eric Botcazou  <ebotcazou@adacore.com>
1886
1887         * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
1888
1889 2011-10-04  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1890
1891         * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
1892         variables.  Fix second operand of DR.  Swap inputs for sdiv_qrnnd.
1893
1894 2011-10-03  David S. Miller  <davem@davemloft.net>
1895
1896         * config/sparc/sparc.md (fpack16_vis, fpackfix_vis, fpack32_vis): Make
1897         GSR_REG an input operand to UNSPEC instead of a parallel USE.
1898         (faligndata<V64I:mode>_vis): Likewise and use DI mode.
1899         (alignaddrsi_vis, alignaddrdi_vis, alignaddrlsi_vis, alignaddrldi_vis):
1900         Reference GSR_REG in DI mode, simplify convoluted expressions by using
1901         zero_extract.
1902         (bshuffle<V64I:mode>_vis): Reference GSR_REG in DI mode.
1903
1904 2011-10-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
1905
1906         * tree-eh.c (remove_unreachable_handlers): Obvious cleanup.
1907
1908 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
1909             Ian Lance Taylor  <iant@google.com>
1910
1911         * godump.c (go_output_typedef): Support printing enum values that
1912         don't fit in a signed HOST_WIDE_INT.
1913
1914 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
1915
1916         * config/cris/cris.c (cris_output_addr_const_extra): Make static.
1917         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1918         * config/cris/cris.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1919         * config/cris/cris-protos.h (cris_output_addr_const_extra): Remove.
1920
1921 2011-10-03  Anatoly Sokolov  <aesok@post.ru>
1922
1923         * config/m68k/m68k.c (m68k_output_addr_const_extra): Make static.
1924         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1925         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): Remove.
1926         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Remove.
1927
1928 2011-10-03  Steve Ellcey  <sje@cup.hp.com>
1929
1930         PR target/49967
1931         * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
1932         (gcc_cv_ld_static_option): Ditto.
1933         (gcc_cv_ld_dynamic_option): Ditto.
1934         * configure: Regenerate.
1935
1936 2011-10-03  David S. Miller  <davem@davemloft.net>
1937
1938         * config/sparc/sparc.md (bmask<P:mode>_vis): Split into explicit 'di'
1939         and 'si' patterns which describe the GSR changes explicitly in the
1940         RTL using zero_extract.
1941         (bshuffle<V64I:mode>_vis): Put the GSR use inside of the unspec.
1942
1943         * config/sparc/sparc.md (bshuffle<V64I:mode>_vis): Don't wrap
1944         GSR_REG in a USE, since it's now a true arg to the UNSPEC.
1945
1946 2011-10-03  Artjoms Sinkarovs  <artyom.shinkaroff@gmail.com>
1947
1948         * optabs.c (expand_vec_shuffle_expr_p): New function. Checks
1949         if given expression can be expanded by the target.
1950         (expand_vec_shuffle_expr): New function. Expand VEC_SHUFFLE_EXPR
1951         using target vector instructions.
1952         * optabs.h: New optab vshuffle.
1953         (expand_vec_shuffle_expr_p): New prototype.
1954         (expand_vec_shuffle_expr): New prototype.
1955         (vshuffle_optab): New optab.
1956         * genopinit.c: Adjust to support vecshuffle.
1957         * c-tree.h (c_build_vec_shuffle_expr): New prototype.
1958         * expr.c (expand_expr_real_2): Adjust.
1959         * c-typeck.c: (c_build_vec_shuffle_expr): Build a VEC_SHUFFLE_EXPR
1960         recognizing the cases of two and three arguments.
1961         (convert_arguments) (build_binary_op)
1962         (scalar_to_vector) (build_array_ref): Spurious whitespace.
1963         * gimplify.c (gimplify_exp): Adjusted to support VEC_SHUFFLE_EXPR.
1964         * tree.def: New tree code VEC_SHUFFLE_EXPR.
1965         * tree-inline.c (estimate_operator_cost): Recognize VEC_SHUFFLE_EXPR.
1966         * tree-vect-generic.c (vector_element): New function. Returns an
1967         element of the vector at the given position.
1968         (lower_vec_shuffle): Checks if VEC_SHUFLLE_EXPR is supported
1969         by the backend or expand an expression piecewise.
1970         (expand_vector_operations_1): Adjusted.
1971         (gate_expand_vector_operations_noop): New gate function.
1972         * Makefile.in (tree-vect-generic.o): New include.
1973         * gimple.c (get_gimple_rhs_num_ops): Adjust.
1974         * tree-cfg.c (verify_gimple_assign_trenary): Verify VEC_SHUFFLE_EXPR.
1975         * passes.c: Move veclower down.
1976         * tree-pretty-print.c (dump_generic_node): Recognize
1977         VEC_SHUFFLE_EXPR as valid expression.
1978         * c-parser.c (c_parser_get_builtin_args): Helper function for the
1979         builtins with variable number of arguments.
1980         (c_parser_postfix_expression): Use a new helper function for
1981         RID_CHOOSE_EXPR, RID_BUILTIN_COMPLEX and RID_BUILTIN_SHUFFLE.
1982         * tree-ssa-operands: Adjust.
1983         * c-family/c-common.c: New __builtin_shuffle keyword.
1984         * c-family/c-common.h: New __builtin_shuffle keyword.
1985         * gcc/doc/extend.texi: Adjust.
1986
1987         * gcc/config/i386/sse.md: (sseshuffint) New mode_attr.  Correspondence
1988         between the vector and the type of the mask when shuffling.
1989         (vecshuffle<mode>): New expansion.
1990         * gcc/config/i386/i386-protos.h (ix86_expand_vshuffle): New prototype.
1991         * gcc/config/i386/i386.c (ix86_expand_vshuffle): New function.
1992         (ix86_vectorize_builtin_vec_perm_ok): Adjust.
1993
1994 2011-10-03  Jakub Jelinek  <jakub@redhat.com>
1995
1996         PR tree-optimization/50587
1997         * tree-ssa-reassoc.c (init_range_entry): Stop iterating when
1998         arg0 is not a SSA_NAME.
1999
2000 2011-10-03  Richard Sandiford  <rdsandiford@googlemail.com>
2001
2002         * ipa-inline-analysis.c (MAX_TIME): Update comment.
2003
2004 2011-10-02  Richard Henderson  <rth@redhat.com>
2005             David S. Miller  <davem@davemloft.net>
2006
2007         * config/sparc/sparc.md (ashlsi3, *ashldi3_sp64): Remove
2008         conditional insn type setting, we always emit a shift.
2009         (*ashlsi3_extend, *lshrsi3_extend0): New patterns.
2010         (*lshrsi3_extend): Rename to *lshrsi3_extend1.
2011         * config/sparc/predicates.md (const_one_operand): Delete.
2012
2013 2011-10-02  Gerald Pfeifer  <gerald@pfeifer.com>
2014
2015         * invoke.texi (SPARC Options): Refer to GNU/Linux.
2016
2017 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2018
2019         * config/mips/mips.c (mips_frame_barrier): New function.
2020         (mips_expand_prologue): Call it after allocating stack space.
2021         (mips_deallocate_stack): New function.
2022         (mips_expand_epilogue): Call mips_frame_barrier and
2023         mips_deallocate_stack.
2024
2025 2011-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
2026
2027         PR target/49696
2028         * config/mips/sync.md (sync_<optab>_12): Allow zero operands.
2029         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2030         (sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.
2031
2032 2011-10-02  Jan Hubicka  <jh@suse.cz>
2033
2034         * cgraphunit.c (verify_edge_count_and_frequency): Bounds check.
2035
2036         * cgraphunit.c (ipa_passes): Remove unrechable nodes.
2037         * lto-streamer-out.c (produce_symtab): Skip unused extern declarations.
2038         * ipa.c (cgraph_remove_unreachable_nodes): Do not assume that external
2039         functions are reachable when address is taken.
2040         * tree-sra.c (modify_function): Free dominance info.
2041
2042 2011-10-02  Jan Hubicka  <jh@suse.cz>
2043
2044         * ipa-inline-analysis.c (inline_summary_alloc): Bounds check.
2045
2046         * ipa-inline-analysis.c (reset_inline_edge_summary): New function.
2047         (reset_inline_summary): New function.
2048         (compute_inline_parameters, inline_node_removal_hook,
2049         inline_edge_removal_hook): Use it.
2050         (inline_free_summary): Reset holders correctly.
2051         (inline_generate_summary): Free summary before computing it.
2052
2053 2011-10-02  Paolo Carlini  <paolo.carlini@oracle.com>
2054
2055         PR preprocessor/36819
2056         * incpath.c (merge_include_chains): Call free_path on
2057         heads[QUOTE] and tails[QUOTE].
2058
2059 2011-10-02  Jan Hubicka  <jh@suse.cz>
2060
2061         PR lto/47247
2062         * lto-symtab.c (lto_symtab_resolve_symbols): Do not resolve
2063         when resolution is already availbale from plugin.
2064         (lto_symtab_merge_decls_1): Handle LDPR_PREVAILING_DEF_IRONLY_EXP.
2065         * cgraph.c (ld_plugin_symbol_resolution): Add
2066         prevailing_def_ironly_exp.
2067         * lto-cgraph.c (LDPR_NUM_KNOWN): Update.
2068         * ipa.c (varpool_externally_visible_p): IRONLY variables are never
2069         externally visible.
2070         * varasm.c (resolution_to_local_definition_p): Add
2071         LDPR_PREVAILING_DEF_IRONLY_EXP.
2072         (resolution_local_p): Likewise.
2073
2074 2011-10-01  David S. Miller  <davem@davemloft.net>
2075
2076         * config/sparc/sparc.opt (VIS3): New option.
2077         * doc/invoke.texi: Document it.
2078         * config/sparc/sparc.h: Force TARGET_VIS3 to zero if assembler is
2079         not capable of such instructions.
2080         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2081         to 0x300 when TARGET_VIS3.
2082         * config/sparc/sparc-modes.def: Create 16-byte vector modes.
2083         * config/sparc/sparc.md (UNSPEC_CMASK8, UNSPEC_CMASK16, UNSPEC_CMASK32,
2084         UNSPEC_FCHKSM16, UNSPEC_PDISTN, UNSPC_FUCMP): New unspecs.
2085         (V64N8, VASS): New mode iterators.
2086         (vis3_shift, vis3_addsub_ss): New code iterators.
2087         (vbits, vconstr): New mode attributes.
2088         (vis3_shift_insn, vis3_addsub_ss_insn): New code attributes.
2089         (cmask8<P:mode>_vis, cmask16<P:mode>_vis, cmask32<P:mode>_vis,
2090         fchksm16_vis, <vis3_shift_insn><vbits>_vis, pdistn<mode>_vis,
2091         fmean16_vis, fpadd64_vis, fpsub64_vis,
2092         <vis3_addsub_ss_insn><vbits>_vis, fucmp<code>8<P:mode>_vis): New
2093         VIS 3.0 instruction patterns.
2094         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS3 by
2095         default when targetting capable cpus.  TARGET_VIS3 implies
2096         TARGET_VIS2 and TARGET_VIS, and clear them when TARGET_FPU is disabled.
2097         (sparc_vis_init_builtins): Emit new VIS 3.0 builtins.
2098         (sparc_fold_builtin): Do not eliminate cmask{8,16,32} when result
2099         is ignored.
2100         * config/sparc/visintrin.h (__vis_cmask8, __vis_cmask16,
2101         __vis_cmask32, __vis_fchksm16, __vis_fsll16, __vis_fslas16,
2102         __vis_fsrl16, __vis_fsra16, __vis_fsll32, __vis_fslas32,
2103         __vis_fsrl32, __vis_fsra32, __vis_pdistn, __vis_fmean16,
2104         __vis_fpadd64, __vis_fpsub64, __vis_fpadds16, __vis_fpadds16s,
2105         __vis_fpsubs16, __vis_fpsubs16s, __vis_fpadds32, __vis_fpadds32s,
2106         __vis_fpsubs32, __vis_fpsubs32s, __vis_fucmple8, __vis_fucmpne8,
2107         __vis_fucmpgt8, __vis_fucmpeq8): New VIS 3.0 interfaces.
2108         * doc/extend.texi: Document new VIS 3.0 builtins.
2109
2110 2011-10-01  Eric Botcazou  <ebotcazou@adacore.com>
2111
2112         * ira-color.c (assign_hard_reg): Fix typo.
2113
2114 2011-09-30  H.J. Lu  <hongjiu.lu@intel.com>
2115
2116         * doc/extend.texi: Add missing ','.
2117
2118 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2119
2120         * common/config/c6x/c6x-common.c (c6x_option_optimization_table):
2121         Enable -fmodulo-sched at -O2 and above.
2122         * config/c6x/c6x.md (doloop_end): New expander.
2123         (mvilc, sploop, spkernel, loop_end): New patterns.
2124         (loop_end with memory destination splitter): New.
2125         * config/c6x/c6x.c: Include "hw-doloop.h".
2126         (enum unitreqs): New.
2127         (unit_req_table): New typedef.
2128         (unit_reqs): New static variable.
2129         (unit_req_factor, get_unit_reqs, count_unit_reqs, merge_unit_reqs,
2130         res_mii, split_delayed_nonbranch, undo_split_delayed_nonbranch,
2131         hwloop_pattern_reg, bb_earliest_end_cycle, filter_insns_above,
2132         hwloop_optimize, hwloop_fail, c6x_hwloops): New static functions.
2133         (struct c6x_sched_context): New member last_scheduled_iter0.
2134         (init_sched_state): Initialize it.
2135         (c6x_variable_issue): Update it.
2136         (sploop_max_uid_iter0): New static variable.
2137         (c6x_sched_reorder_1): Be careful about issuing sploop.
2138         (c6x_reorg): Call c6x_hwlooops before the final schedule.
2139
2140 2011-09-30  Georg-Johann Lay  <avr@gjlay.de>
2141
2142         PR target/50566
2143         * config/avr/avr-protos.h (avr_log_t): New field address_cost.
2144         * config/avr/avr.c (avr_address_cost): Use it.
2145         * config/avr/avr-log.c (avr_log_set_avr_log): Initialize it.
2146         (avr_log_vadump): Unknown %-codes finish printing.
2147
2148 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2149
2150         PR inline-asm/50571
2151         * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
2152         input constraints allow mem and not reg, pass true instead of
2153         false as second argument to maybe_fold_reference.
2154
2155         PR tree-optimization/46309
2156         * fold-const.c (make_range, merge_ranges): Remove prototypes.
2157         (make_range_step): New function.
2158         (make_range): Use it.
2159         * tree.h (make_range_step): New prototypes.
2160         * Makefile.in (tree-ssa-reassoc.o): Depend on $(DIAGNOSTIC_CORE_H).
2161         * tree-ssa-reassoc.c: Include diagnostic-core.h.
2162         (struct range_entry): New type.
2163         (init_range_entry, range_entry_cmp, update_range_test,
2164         optimize_range_tests): New functions.
2165         (reassociate_bb): Call optimize_range_tests.
2166
2167 2011-09-30  Jakub Jelinek  <jakub@redhat.com>
2168             Richard Guenther  <rguenther@suse.de>
2169
2170         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call): Handle
2171         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
2172         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.  Fix
2173         handling of BUILT_IN_STRNCAT and BUILT_IN_STRNCAT_CHK.
2174         (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
2175         BUILT_IN_STRNCAT, BUILT_IN_STRCAT_CHK and BUILT_IN_STRNCAT_CHK.
2176
2177 2011-09-30  Jan Beulich  <jbeulich@suse.com>
2178
2179         * lto-cgraph.c (output_cgraph): Remove processing of
2180         'cgraph_asm_nodes', call lto_output_toplevel_asms() instead.
2181         (input_cgraph_1): Remove loop calling cgraph_add_asm_node(), call
2182         lto_input_toplevel_asms() instead.
2183         * lto-section-in.c (lto_section_name): Add "asm" entry.
2184         * lto-streamer-in.c (lto_input_toplevel_asms): New.
2185         * lto-streamer-out.c (lto_output_toplevel_asms): New.
2186         * lto-streamer.h (LTO_minor_version): Bump.
2187         (enum lto_section_type): Add LTO_section_asm.
2188         (struct lto_asm_header): New.
2189         (lto_input_toplevel_asms, lto_output_toplevel_asms): Declare.
2190         * tree-streamer.h (streamer_write_string_cst): Declare.
2191         * tree-streamer-out.c (write_string_cst): Rename to
2192         streamer_write_string_cst and make global. Handle incoming string
2193         being NULL.
2194         (streamer_write_tree_header): Adjust call to renamed function.
2195
2196 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2197
2198         * haifa-sched.c (modulo_ii, modulo_max_states, modulo_n_insns,
2199         modulo_insns_scheduled, modulo_iter0_max_uid, modulo_backtracks_left,
2200         modulo_last_stage): New static variables.
2201         (set_modulo_params, discard_delay_pairs_above): New functions.
2202         (struct delay_pair): New member stages.
2203         (htab_i2_traverse, htab_i1_traverse): New static functions.
2204         (record_delay_slot_pair): New arg stages.  All callers changed.
2205         Record it.
2206         (pair_delay): Take stages into account.
2207         (add_delay_dependencies): Don't do so for stage pairs.
2208         (struct sched_block_state): New member modulo_epilogue.
2209         (save_backtrack_point): Don't set SHADOW_P for stage pairs.
2210         (unschedule_insns_until): Decrease modulo_insns_scheduled.
2211         Set HARD_DEP without using or.
2212         (resolve_dependencies): New static function.
2213         (prune_ready_list): New arg modulo_epilogue_p.  All callers changed.
2214         If it is true, allow only insns with INSN_EXACT_TICK set.
2215         (schedule_block): Return bool, always true for normal scheduling,
2216         true or false depending on modulo scheduling success otherwise.
2217         Add bookkeeping for modulo scheduling, and call resolve_dependencies
2218         on everything left over after a modulo schedule.
2219         (haifa_sched_init): Remove check_cfg call.  Clear modulo_ii.
2220         * sched-int.h (schedule_block, record_delay_slot_pair): Adjust
2221         declarations.
2222         (set_modulo_params, discard_delay_pairs_above): Declare.
2223         * params.def (PARAM_MAX_MODULO_BACKTRACK_ATTEMPS): New.
2224         * doc/invoke.texi (--param): Document it.
2225
2226         * sched-ebb.c (schedule_ebb): No longer static.  Remove declaration.
2227         New arg modulo_scheduling.  All callers changed.  Move note handling
2228         code here from schedule_ebbs.
2229         (schedule_ebbs_finish, schedule_ebbs_init): New functions, broken
2230         out of schedule_ebbs.
2231         (schedule_ebbs): Call them.  Remove note handling code moved to
2232         schedule_ebb.
2233         * sched-int.h (schedule_ebb, schedule_ebbs_init,
2234         schedule_ebbs_finish): Declare.
2235
2236 2011-09-30  Richard Guenther  <rguenther@suse.de>
2237
2238         PR middle-end/50574
2239         * tree-cfg.c (verify_gimple_comparison): Compare component
2240         mode sizes for vector comparisons.
2241
2242 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2243
2244         * ddg.c (autoinc_var_is_used_p): New function.
2245         (create_ddg_dep_from_intra_loop_link,
2246         add_cross_iteration_register_deps): Call it.
2247         * ddg.h (autoinc_var_is_used_p): Declare.
2248         * modulo-sched.c (generate_reg_moves): Call autoinc_var_is_used_p.
2249         (sms_schedule): Handle instructions with REG_INC.
2250
2251 2011-09-30  Revital Eres  <revital.eres@linaro.org>
2252
2253         * modulo-sched.c (generate_reg_moves): Skip instructions that
2254         do not set a register and verify no regmoves are created for
2255         !single_set instructions.
2256
2257 2011-09-30  Bernd Schmidt  <bernds@codesourcery.com>
2258
2259         * hw-doloop.c (scan_loop): Compute register usage only for non-debug
2260         insns.
2261
2262 2011-09-30  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
2263
2264         PR target/50099
2265         * config/arm/iterators.md (qhs_zextenddi_cstr): New.
2266         (qhs_zextenddi_op): New.
2267         * config/arm/arm.md ("zero_extend<mode>di2"): Use them.
2268         * config/arm/predicates.md ("arm_extendqisi_mem_op"):
2269         Distinguish between ARM and Thumb2 states.
2270
2271 2011-09-30  David S. Miller  <davem@davemloft.net>
2272
2273         * config/sparc/sparc.opt (VIS2): New option.
2274         * doc/invoke.texi: Document it.
2275         * config/sparc/sparc.md (UNSPEC_EDGE8N, UNSPEC_EDGE8LN,
2276         UNSPEC_EDGE16N, UNSPEC_EDGE16LN, UNSPEC_EDGE32N,
2277         UNSPEC_EDGE32LN, UNSPEC_BSHUFFLE): New unspecs.
2278         (define_attr type): New insn type 'edgen'.
2279         (bmask<P:mode>_vis, bshuffle<V64I:mode>_vis, edge8n<P:mode>_vis,
2280         edge8ln<P:mode>_vis, edge16n<P:mode>_vis, edge16ln<P:mode>_vis,
2281         edge32n<P:mode>_vis, edge32ln<P:mode>_vis): New insn VIS 2.0
2282         patterns.
2283         * niagara.md: Handle edgen.
2284         * niagara2.md: Likewise.
2285         * ultra1_2.md: Likewise.
2286         * ultra3.md: Likewise.
2287         * config/sparc/sparc-c.c (sparc_target_macros): Define __VIS__
2288         to 0x200 when TARGET_VIS2.
2289         * config/sparc/sparc.c (sparc_option_override): Set MASK_VIS2 by
2290         default when targetting capable cpus.  TARGET_VIS2 implies
2291         TARGET_VIS, clear and it when TARGET_FPU is disabled.
2292         (sparc_vis_init_builtins): Emit new VIS 2.0 builtins.
2293         (sparc_expand_builtin): Fix predicate indexing when builtin returns
2294         void.
2295         (sparc_fold_builtin): Do not eliminate bmask when result is ignored.
2296         * config/sparc/visintrin.h (__vis_bmask, __vis_bshuffledi,
2297         __vis_bshufflev2si, __vis_bshufflev4hi, __vis_bshufflev8qi,
2298         __vis_edge8n, __vis_edge8ln, __vis_edge16n, __vis_edge16ln,
2299         __vis_edge32n, __vis_edge32ln): New VIS 2.0 interfaces.
2300         * doc/extend.texi: Document new VIS 2.0 builtins.
2301
2302 2011-09-29  Nick Clifton  <nickc@redhat.com>
2303             Bernd Schmidt  <bernds@codesourcery.com>
2304
2305         * config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header file.
2306         * config/frv/frvend.c: Likewise.
2307         * config/frv/frv.c (frv_function_prologue): Move misplaced
2308         CALL_ARG_LOCATION notes back to their proper locations.
2309
2310 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2311
2312         PR target/50566
2313         * config/avr/avr-log.c (avr_log_vadump): Use %b to print bool.
2314         * config/avr/avr.c (avr_rtx_costs_1): New static function, renamed
2315         from avr_rtx_costs.
2316         (avr_legitimate_address_p): Use avr_edump to print log information
2317         filtered by avr_log.
2318         (extra_constraint_Q): Ditto.
2319         (avr_legitimize_address): Ditto.
2320         (avr_rtx_costs): Ditto.  Rewrite as wrapper for avr_rtx_costs_1.
2321         (final_prescan_insn): Use avr_log.rtx_costs as filter.
2322
2323 2011-09-29  Richard Sandiford  <richard.sandiford@linaro.org>
2324
2325         * config/arm/arm-protos.h (arm_modes_tieable_p): Declare.
2326         * config/arm/arm.h (MODES_TIEABLE_P): Use it.
2327         * config/arm/arm.c (arm_modes_tieable_p): New function.  Allow
2328         NEON vector and structure modes to be tied.
2329
2330 2011-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2331
2332         * graphite-scop-detection.c (make_close_phi_nodes_unique):  New
2333         forward declaration.
2334         (remove_duplicate_close_phi): Detect and repair creation of
2335         duplicate close-phis for a containing loop.
2336
2337 2011-09-27   Andi Kleen <ak@linux.intel.com>
2338
2339         * gcc.c (get_local_tick). Rename to get_random_number.  Read from
2340         /dev/urandom.  Add getpid call.
2341         (compare_debug_dump_opt_spec_function): Drop getpid call.
2342
2343 2011-09-26   Andi Kleen <ak@linux.intel.com>
2344
2345         * toplev.c (init_local_tick): Try reading random seed
2346         from /dev/urandom.
2347
2348 2011-09-26   Andi Kleen <ak@linux.intel.com>
2349
2350         * hwint.h (HOST_WIDE_INT_PRINT_HEX_PURE): Add.
2351         * lto-streamer.c (lto_get_section_name): Remove crc32_string.
2352         Handle numerical random seed.
2353         * lto-streamer.h (lto_file_decl_data): Change id to
2354         unsigned HOST_WIDE_INT.
2355         * toplev.c (random_seed): Add.
2356         (init_random_seed): Change for numerical random seed.
2357         (get_random_seed): Return as HOST_WIDE_INT.
2358         (set_random_seed): Crc32 existing string.
2359         * toplev.h (get_random_seed): Change to numercal return.
2360         * tree.c (get_file_function_name): Remove CRC. Handle
2361         numerical random seed.
2362
2363 2011-09-29  Georg-Johann Lay  <avr@gjlay.de>
2364
2365         PR target/50566
2366         * config.gcc (extra_objs): Add avr-log.o for $target in:
2367         avr-*-rtems*, avr-*-*.
2368         * config/avr/t-avr (avr-log.o): New rule to compile...
2369         * config/avr/avr-log.c: ...this new file.
2370         * config/avr/avr.opt (mlog=): New option.
2371         * config/avr/avr-protos.h (avr_edump, avr_fdump): New macros.
2372         (avr_log_set_caller_e, avr_log_set_caller_f): New prototypes.
2373         (avr_log_set_avr_log): New prototype.
2374         (avr_log_t): New typedef.
2375         (avr_log): New declaration.
2376         * config/avr/avr.c (avr_option_override): Call avr_log_set_avr_log.
2377
2378 2011-09-29  Artjoms Sinkarovs <artyom.shinkaroff@gmail.com>
2379
2380         * expr.c (do_store_flag): Expand vector comparison by
2381         building an appropriate VEC_COND_EXPR.
2382         * c-typeck.c (build_binary_op): Typecheck vector comparisons.
2383         (c_objc_common_truthvalue_conversion): Adjust.
2384         * tree-vect-generic.c (do_compare): Helper function.
2385         (expand_vector_comparison): Check if hardware supports
2386         vector comparison of the given type or expand vector piecewise.
2387         (expand_vector_operation): Treat comparison as binary
2388         operation of vector type.
2389         (expand_vector_operations_1): Adjust.
2390
2391 2011-09-29  Richard Guenther  <rguenther@suse.de>
2392
2393         * tree.c (build_opaque_vector_type): Make opaque vectors
2394         variant types of the corresponding non-opaque type.  Make
2395         sure to share opaque vector types properly.
2396
2397 2011-09-29  David S. Miller  <davem@davemloft.net>
2398
2399         * config/sparc/sparc.md (UNSPEC_ARRAY8, UNSPEC_ARRAY16,
2400         UNSPEC_ARRAY32): New unspec.
2401         (define_attr type): New type 'array'.
2402         (array{8,16,32}<P:mode>_vis): New patterns.
2403         * config/sparc/ultra1_2.md: Add reservations for 'array'.
2404         * config/sparc/ultra3.md: Likewise.
2405         * config/sparc/niagara.md: Likewise.
2406         * config/sparc/niagara2.md: Likewise.
2407         * config/sparc/sparc.c (sparc_vis_init_builtins): Build new
2408         array builtins.
2409         * config/sparc/visintrin.h (__vis_array8, __vis_array16,
2410         __vis_array32): New.
2411         * doc/extend.texi: Document new VIS builtins.
2412
2413         * config/sparc/sparc.md (gcond_name): Delete unnecessary code attr.
2414         (VIS pixel-compare insn): Just use <gcond:name>.
2415
2416         * config/sparc/sparc.md (VIS pixel-compare insn): There is only one
2417         code iterator used, so just use <code>.  There are two mode iterators
2418         so explicitly use <GCM:gcm_name>.
2419
2420 2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>
2421
2422         * config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Enable for
2423         Darwin >= 9.
2424
2425 2011-09-28  David S. Miller  <davem@davemloft.net>
2426
2427         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE,
2428         UNSPEC_FCMPGT, UNSPEC_FCMPEQ): Delete and reduce to...
2429         (UNSPEC_FCMP): New unspec.
2430         (gcond): New code iterator.
2431         (gcond_name): New code attr.
2432         (GCM): New mode iterator.
2433         (gcm_name): New mode attr.
2434         (fcmp{le,ne,gt,eq}{16,32}_vis): Reimplement using iterators.
2435
2436 2011-09-28  Oleg Endo  <oleg.endo@t-online.de>
2437
2438         PR target/49486
2439         * config/sh/sh.md (negdi2): Move expansion into split to
2440         allow more combination options.  Add T_REG clobber.
2441         (abssi2): New expander.
2442         (*negdi2, *abssi2, *negabssi2): New insns.
2443         (cneg): Change from insn to insn_and_split.  Rename to
2444         negsi_cond.  Add alternative for non-SH4.
2445
2446 2011-09-28  Richard Sandiford  <richard.sandiford@linaro.org>
2447
2448         * config/arm/neon.md (neon_move_lo_quad_<mode>): Delete.
2449         (neon_move_hi_quad_<mode>): Likewise.
2450         (move_hi_quad_<mode>, move_lo_quad_<mode>): Use subreg moves.
2451
2452 2011-09-28  Nick Clifton  <nickc@redhat.com>
2453
2454         * config/rx/predicates.md (rx_minmax_operand): New predicate.
2455         Accepts immediates and a restricted subset of MEMs.
2456         * config/rx/rx.md (int_modes): New iterator.
2457         (smaxsi3, sminsi3): Delete and replace with...
2458         (smax<int_mode>3, smin<int_mode>3): New patterns.
2459         (umax<>3_u, umax<>3_ur, umax<>3, umin<>3): New patterns.
2460
2461 2011-09-28  Richard Guenther  <rguenther@suse.de>
2462
2463         PR middle-end/50460
2464         * fold-const.c (try_move_mult_to_index): Handle &a.array the
2465         same as &a.array[0].
2466
2467 2011-09-28  Kai Tietz  <ktietz@redhat.com>
2468
2469         * configure.ac: Add test for new section attribute
2470         specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
2471         * config.in: Regenerated.
2472         * configure: Regenerated.
2473         * config/i386/winnt.c (i386_pe_asm_named_section): Emit
2474         new section flag "e" for excluded sections, if supported.
2475         Otherwise we mark section withc SECTION_EXCLUDE flag as never-load.
2476
2477 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2478
2479         * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
2480         throughout file.
2481
2482 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
2483
2484         * config/iq2000/iq2000.md: Use match_test rather than eq/ne symbol_ref
2485         throughout file.
2486
2487 2011-09-27  Sriraman Tallam  <tmsriram@google.com>
2488
2489         * output.h (SECTION_EXCLUDE): New macro.
2490         * varasm.c (default_elf_asm_named_section): Check for SECTION_EXCLUDE.
2491
2492 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2493
2494         * fwprop.c (forward_propagate_and_simplify): After checking
2495         reg/subreg combinations, check whether the modes are the same.
2496
2497 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2498             Richard Sandiford  <rdsandiford@googlemail.com>
2499
2500         * config/mips/mips.c (mips_add_cfa_restore): New function.
2501         (mips16e_save_restore_reg): Use it.
2502         (mips_restore_reg): Likewise.  Split double FPRs for
2503         REG_CFA_RESTORE notes.
2504
2505 2011-09-27  Richard Sandiford  <rdsandiford@googlemail.com>
2506
2507         PR middle-end/50386
2508         PR middle-end/50326
2509         * tree-sra.c (build_ref_for_model): Use the type of the field as
2510         the type of the COMPONENT_REF.
2511
2512 2011-09-27  Jeff Law  <law@redhat.com>
2513
2514         * ifcvt.c (cheap_bb_rtx_cost_p): Add SCALE argument.  Scale
2515         non-jumping insns by REG_BR_PROB_BASE and the maximum cost by SCALE.
2516         (find_if_case_1): Use the probability of the THEN clause when
2517         determining if speculation is profitable.
2518         (find_if_case_2): Similarly for the ELSE clause.
2519
2520 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2521
2522         * common.opt: Add -foptimize-strlen option.
2523         * Makefile.in (OBJS): Add tree-ssa-strlen.o.
2524         (tree-sssa-strlen.o): Add dependencies.
2525         * opts.c (default_options_table): Enable -foptimize-strlen
2526         by default at -O2 if not -Os.
2527         * passes.c (init_optimization_passes): Add pass_strlen
2528         after pass_object_sizes.
2529         * timevar.def (TV_TREE_STRLEN): New timevar.
2530         * params.def (PARAM_MAX_TRACKED_STRLENS): New parameter.
2531         * tree-pass.h (pass_strlen): Declare.
2532         * tree-ssa-strlen.c: New file.
2533         * c-decl.c (merge_decls): If compatible stpcpy prototype
2534         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
2535
2536 2011-09-27  Tom de Vries  <tom@codesourcery.com>
2537
2538         PR middle-end/43864
2539         * tree-ssa-tail-merge.c: New file.
2540         (struct same_succ_def): Define.
2541         (same_succ, const_same_succ): New typedef.
2542         (struct bb_cluster_def): Define.
2543         (bb_cluster, const_bb_cluster): New typedef.
2544         (struct aux_bb_info): Define.
2545         (BB_SIZE, BB_SAME_SUCC, BB_CLUSTER, BB_VOP_AT_EXIT): Define.
2546         (gvn_uses_equal): New function.
2547         (same_succ_print, same_succ_print_traverse, update_dep_bb)
2548         (stmt_update_dep_bb, local_def, same_succ_hash)
2549         (inverse_flags, same_succ_equal, same_succ_alloc, same_succ_delete)
2550         (same_succ_reset): New function.
2551         (same_succ_htab, same_succ_edge_flags)
2552         (deleted_bbs, deleted_bb_preds): New var.
2553         (debug_same_succ): New function.
2554         (worklist): New var.
2555         (print_worklist, add_to_worklist, find_same_succ_bb, find_same_succ)
2556         (init_worklist, delete_worklist, delete_basic_block_same_succ)
2557         (same_succ_flush_bbs, purge_bbs, update_worklist): New function.
2558         (print_cluster, debug_cluster, update_rep_bb)
2559         (add_bb_to_cluster, new_cluster, delete_cluster): New function.
2560         (all_clusters): New var.
2561         (alloc_cluster_vectors, reset_cluster_vectors, delete_cluster_vectors)
2562         (merge_clusters, set_cluster): New function.
2563         (gimple_equal_p, gsi_advance_bw_nondebug_nonlocal, find_duplicate)
2564         (same_phi_alternatives_1, same_phi_alternatives, bb_has_non_vop_phi)
2565         (deps_ok_for_redirect_from_bb_to_bb, deps_ok_for_redirect)
2566         (find_clusters_1, find_clusters): New function.
2567         (update_vuses, vop_phi, vop_at_entry, replace_block_by): New function.
2568         (update_bbs): New var.
2569         (apply_clusters): New function.
2570         (update_debug_stmt, update_debug_stmts): New function.
2571         (tail_merge_optimize): New function.
2572         tree-pass.h (tail_merge_optimize): Declare.
2573         * tree-ssa-pre.c (execute_pre): Use tail_merge_optimize.
2574         * Makefile.in (OBJS-common): Add tree-ssa-tail-merge.o.
2575         (tree-ssa-tail-merge.o): New rule.
2576         * opts.c (default_options_table): Set OPT_ftree_tail_merge by
2577         default at OPT_LEVELS_2_PLUS.
2578         * tree-ssa-sccvn.c (vn_valueize): Move to ...
2579         * tree-ssa-sccvn.h (vn_valueize): Here.
2580         * timevar.def (TV_TREE_TAIL_MERGE): New timevar.
2581         * common.opt (ftree-tail-merge): New switch.
2582         * params.def (PARAM_MAX_TAIL_MERGE_COMPARISONS)
2583         (PARAM_MAX_TAIL_MERGE_ITERATIONS): New parameter.
2584         * doc/invoke.texi (Optimization Options, -O2): Add -ftree-tail-merge.
2585         (-ftree-tail-merge, max-tail-merge-comparisons)
2586         (max-tail-merge-iterations): New item.
2587
2588 2011-09-27  Jan Hubicka  <jh@suse.cz>
2589
2590         * ipa-inline-analysis.c (MAX_TIME): Reduce to avoid overflows.
2591
2592 2011-09-27  Jan Hubicka  <jh@suse.cz>
2593
2594         * ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
2595         parameters passed by reference; handle loads from non-SSA scalars
2596         and update comments.
2597
2598 2011-09-27  Bernd Schmidt  <bernds@codesourcery.com>
2599
2600         PR rtl-optimization/50249
2601         * reload1.c (reload_reg_reaches_end_p): Accept a reloadnum argument
2602         instead of opnum and type.  All callers changed.  Remove useless
2603         declaration.
2604         Search forward for other reloads of the same type for the same operand
2605         using the same register; if any are found, return false.
2606         (reload_regs_reach_end_p): Same argument changes; all callers changed.
2607
2608 2011-09-27  Andi Kleen  <ak@linux.intel.com>
2609             Jan Hubicka  <jh@suse.cz>
2610
2611         * doc/invoke.texi (ffat-lto-objects): Document.
2612         * toplev.c (compile_file): Do not output assembly when doing slim lto;
2613         Output __gnu_slim_lto when doing slim lto.
2614         * cgraphunit.c (ipa_passes): Do only analysis when producing slim lto.
2615         (cgraph_optimize): Return early when doing slim lto.
2616         * opts.c (finish_options): Complain about lack of linker plugin
2617         when doing slim lto.
2618         * common.opt (ffat-lto-objects): New.
2619
2620 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
2621
2622         * ipa-inline-analysis.c (predicate_probability): Avoid comparison
2623         between signed and unsigned.
2624
2625 2011-09-27  Ira Rosen  <ira.rosen@linaro.org>
2626
2627         * tree-vect-stmts.c (vectorizable_type_demotion): Handle basic block
2628         vectorization.
2629         (vectorizable_type_promotion): Likewise.
2630         (vect_analyze_stmt): Call vectorizable_type_demotion and
2631         vectorizable_type_promotion for basic blocks.
2632         (supportable_widening_operation): Don't assume loop vectorization.
2633         * tree-vect-slp.c (vect_build_slp_tree): Allow multiple types for
2634         basic blocks.  Update vectorization factor for basic block
2635         vectorization.
2636         (vect_analyze_slp_instance): Allow multiple types for basic block
2637         vectorization.  Recheck unrolling factor after construction of SLP
2638         instance.
2639
2640 2011-09-27  Richard Guenther  <rguenther@suse.de>
2641
2642         * tree-object-size.c (compute_object_sizes): Fix dumping of
2643         folded statement.
2644
2645 2011-09-27  Richard Guenther  <rguenther@suse.de>
2646
2647         PR tree-optimization/50363
2648         * tree-ssa-pre.c (create_expression_by_pieces): Handle
2649         pointer conversions in POINTER_PLUS_EXPRs properly.
2650
2651 2011-09-27  Richard Sandiford  <richard.sandiford@linaro.org>
2652
2653         * config/arm/neon.md (neon_vget_highv16qi, neon_vget_highv8hi)
2654         (neon_vget_highv4si, neon_vget_highv4sf, neon_vget_highv2di)
2655         (neon_vget_lowv16qi, neon_vget_lowv8hi, neon_vget_lowv4si)
2656         (neon_vget_lowv4sf, neon_vget_lowv2di): Turn into define_expands
2657         that produce subreg moves.  Define using VQX iterators.
2658
2659 2011-09-27  Georg-Johann Lay  <avr@gjlay.de>
2660
2661         * config/avr/avr.md (ashrqi3): Split alternative "n"
2662         into its remaining parts C03, C04, C05, C06, C07 and describe
2663         impact in CC by attribute "cc" appropriately.
2664         * config/avr/avr.c (notice_update_cc): Clean-up: Don't patch CC0
2665         by digging RTX.
2666
2667 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
2668
2669         * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE
2670         from 3 x MAX_MACHINE_MODE.
2671         (CONSTM1_RTX): Define.
2672         * emit-rtl.c (const_tiny_rtx): Change into array of
2673         4 x MAX_MACHINE_MODE from 3 x MAX_MACHINE_MODE.
2674         (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are
2675         CONSTM1_RTX.
2676         (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and
2677         MODE_VECTOR_INT modes.
2678         * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>:
2679         Optimize if one operand is CONSTM1_RTX.
2680         * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x
2681         into mask | x.
2682
2683 2011-09-26  David S. Miller  <davem@davemloft.net>
2684
2685         * config/sparc/sparc.md (edge{8,16,32}{,l}): Return Pmode.
2686         (fcmp{le,ne,gt,eq}{16,32}): Likewise.
2687         * config/sparc/visintrin.h: Update edge and pixel-compare
2688         intrinsics to return 'long' instead of 'int'.
2689         * doc/extend.texi: Update documentation to match.
2690         * config/sparc/sparc.c (eligible_for_return_delay): When leaf or
2691         flat, allow any instruction.  Otherwise, when V9 allow parallels
2692         which consist only of sets to registers outside of %o0 to %o5.
2693         (sparc_vis_init_builtins): Update VIS builtin types for edge
2694         and pixel-compare.
2695
2696         * config/sparc/sparc.c (sparc_conditional_register_usage): When VIS
2697         is enabled, mark %gsr as global.
2698         * config/sparc/sparc.md (UNSPEC_WRGSR): Delete.
2699         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus): Don't wrap in an unspec.
2700
2701         * config/sparc/sparc-c.c: New file implementing sparc_target_macros,
2702         which will now define __VIS and __VIS__ when -mvis is enabled.
2703         * config/sparc/t-sparc: Likewise.
2704         * config.gcc: Add sparc-c.o to c_target_objs and cxx_target_objs,
2705         and add t-sparc to tmake_file for all sparc targets.
2706         * config/sparc/sparc-protos.h (sparc_target_macros): Declare.
2707         * config/sparc/sparc.h (TARGE_CPU_CPP_BUILTINS): Call it.
2708
2709         * config/sparc/sparc.c (sparc_vis_init_builtins): Add explicit
2710         builtins for VIS vector addition and subtraction.
2711         * config/sparc/visintrin.h (__vis_fpadd16, __vis_fpadd16s,
2712         __vis_fpadd32, __vis_fpadd32s, __vis_fpsub16, __vis_fpsub16s,
2713         __vis_fpsub32, __vis_fpsub32s): New.
2714         * doc/extend.texi: Document new VIS intrinsics.
2715
2716 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2717
2718         * config/avr/avr.md (peephole casesi+2): Use -1 instead of 65536.
2719         * config/avr/avr.c (avr_out_compare): Print shorter sequence for
2720         EQ/NE comparisons against +/-1 in the case of unused-after,
2721         non-ld-regs target.
2722
2723 2011-09-26  Jakub Jelinek  <jakub@redhat.com>
2724
2725         * gimple-fold.c (gimplify_and_update_call_from_tree): Set
2726         gctx.into_ssa after push_gimplify_context.
2727
2728         * gimple.c (gimple_build_call_valist): New function.
2729         * gimple.h (gimple_build_call_valist): New prototype.
2730         * tree-ssa-propagate.c (finish_update_gimple_call): New function.
2731         (update_gimple_call): Likewise.
2732         (update_call_from_tree): Use finish_update_gimple_call.
2733         * tree-ssa-propagate.h (update_gimple_call): New prototype.
2734
2735 2011-09-26  Richard Guenther  <rguenther@suse.de>
2736
2737         PR tree-optimization/50472
2738         * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
2739         volatile references.
2740
2741 2011-09-26  Bingfeng Mei <bmei@broadcom.com>
2742
2743         * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P.
2744         * target.def: (addr_space_subset_p): Likewise.
2745
2746 2011-09-26  Tom de Vries  <tom@codesourcery.com>
2747
2748         * tree-ssa-alias.h (pt_solution_singleton_p): Declare.
2749         * tree-ssa-structalias.c (pt_solution_singleton_p): New function.
2750         * tree-ssa-ccp.c (fold_builtin_alloca_for_var): Set points-to solution
2751         of new var.
2752
2753 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2754
2755         PR target/50465
2756         * config/avr/avr-protos.h (output_reload_insisf): Don't pass insn.
2757         * config/avr/avr.md (*reload_insi, *reload_insf): Change call to
2758         output_reload_insisf.
2759         (adjust_len): Set default to "no".
2760         Remove alternative "yes".  Add alternatives: "mov8", "mov16",
2761         "mov32", "ashlqi", "ashrqi", "lshrqi", "ashlhi", "ashrhi",
2762         "lshrhi", "ashlsi, "ashrsi", "lshrsi".
2763         (*movqi, *movhi, *movsi, *ashlqi3, ashlhi3, ashlsi3,
2764         *ashlhi3_const, *ashlsi3_const, ashrqi3, ashrhi3, ashrsi3,
2765         *ashrhi3_const, *ashrsi3_const, *lshrqi3, lshrhi3, *lshrhi3_const,
2766         *lshrsi3_const): Set attribute "adjust_len".
2767         * config/avr/avr.c (output_reload_insisf): Remove parameter "insn".
2768         (output_movsisf): Don't pass insn to output_reload_insisf.
2769         (adjust_insn_length): Handle new alternatives to adjust_len.
2770         Remove handling of ADJUST_LEN_YES.  Clean-up code.
2771
2772 2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
2773
2774         * ifcvt.c (noce_try_cmove_arith): Use may_trap_or_fault_p in lieu of
2775         may_trap_p to detect loads that may trap of fault.
2776
2777 2011-09-26  Georg-Johann Lay  <avr@gjlay.de>
2778
2779         * config/avr/avr-protos.h (output_reload_inhi): Change prototype.
2780         * config/avr/avr.md (adjust_len): Add "reload_in16" alternative.
2781         (*reload_inhi): Use it.  Adapt call to output_reload_inhi to new
2782         prototype.
2783         (*movhi): Split constraint alternative "r,rL" into "r,r" and "r,L".
2784         * config/avr/avr.c: Rename output_reload_insisf_1 to
2785         output_reload_in_const.
2786         (avr_popcount_each_byte): Handle SFmode, too.
2787         (output_reload_in_const): Change so it can handle HI loads, too.
2788         Use avr_popcount_each_byte to work out if scratch register must be
2789         created on the fly.
2790         (output_reload_inhi): Rewrite using output_reload_in_const and...
2791         (output_movhi): ...use it to print constants' loads.
2792         (adjust_insn_length): New case ADJUST_LEN_RELOAD_IN16. Cleanup code.
2793
2794 2011-09-25  David S. Miller  <davem@davemloft.net>
2795
2796         * config/sparc/constraints.md (C, P, Z): New constraints for
2797         const_doube, const_int, and const_vector "all ones" values.
2798         Make unused constraint letters comment match reality.
2799         * config/sparc/predicates.md (const_all_ones_operand,
2800         register_or_zero_or_all_ones_operand): New predicates.
2801         * config/sparc/sparc.c (sparc_expand_move): Allow all ones
2802         as well as zero constants when VIS.
2803         (sparc_legitimate_constant_p): Likewise.
2804         * config/sparc/sparc.md (movsi_insn): Add fones alternative.
2805         (movsf_insn): Likewise
2806         (movdi_insn_sp64): Add fone alternative.
2807         (movdf_insn_sp32_v9): Likewise.
2808         (movdf_insn_sp64): Likewise.
2809
2810         * configure.ac: Add feature check to make sure the assembler
2811         supports the FMAF, HPC, and VIS 3.0 instructions found on
2812         Niagara-3 and later cpus.
2813         * configure: Rebuild.
2814         * config.in: Likewise.
2815         * config/sparc/sparc.opt: New option '-mfmaf'.
2816         * config/sparc/sparc.md: Add float fused multiply-add patterns.
2817         * config/sparc/sparc.h (AS_NIAGARA3_FLAG): New macro.
2818         (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Use it, as needed.
2819         * config/sparc/sol2.h (ASM_CPU32_DEFAULT_SPEC,
2820         ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC): Likewise.
2821         * config/sparc/sparc.c (sparc_option_override): Turn MASK_FMAF on
2822         by default for Niagara-3 and later.  Turn it off if TARGET_FPU is
2823         disabled.
2824         (sparc_rtx_costs): Handle 'FMA'.
2825         * doc/invoke.texi: Document -mfmaf.
2826
2827 2011-09-25  Jakub Jelinek  <jakub@redhat.com>
2828
2829         * tree-ssa-structalias.c (intra_create_variable_infos): Treat
2830         TYPE_RESTRICT REFERENCE_TYPE parameters like restricted
2831         DECL_BY_REFERENCE parameters.
2832
2833 2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>
2834
2835         * tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
2836         if there is no outgoing edge.
2837
2838         * tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
2839         integral types.
2840
2841 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
2842
2843         * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
2844         of vect_analyze_bb here.
2845         (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
2846
2847 2011-09-25  Ira Rosen  <ira.rosen@linaro.org>
2848
2849         * tree-data-ref.c (dr_analyze_innermost): Add new argument.
2850         Allow not simple iv if analyzing basic block.
2851         (create_data_ref): Update call to dr_analyze_innermost.
2852         (stmt_with_adjacent_zero_store_dr_p, ref_base_address): Likewise.
2853         * tree-loop-distribution.c (generate_memset_zero): Likewise.
2854         * tree-predcom.c (find_looparound_phi): Likewise.
2855         * tree-data-ref.h (dr_analyze_innermost): Add new argument.
2856
2857 2011-09-24  David S. Miller  <davem@davemloft.net>
2858
2859         * config/sparc/sparc.h (FIRST_PSEUDO_REGISTER): Bump to 103.
2860         (SPARC_GSR_REG): Define.
2861         (FIXED_REGISTERS): Mark GSR as fixed.
2862         (CALL_USED_REGISTERS): Mark GSR as call used.
2863         (HARD_REGNO_NREGS): GSR is always 1 register.
2864         (REG_CLASS_CONTENTS): Add GSR to ALL_REGS.
2865         (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER): Add GSR to the end.
2866         (REGISTER_NAMES): Add "%gsr".
2867         * config/sparc/sparc.md (UNSPEC_ALIGNADDR, UNSPEC_ALIGNADDRL): Delete.
2868         (UNSPEC_WRGSR): New unspec.
2869         (GSR_REG): New constant.
2870         (type): Add new insn type 'gsr'.
2871         (fpack16_vis, fpackfix_vis, fpack32_vis,
2872         faligndata<V64I:MODE>_vis)): Add use of GSR_REG.
2873         (wrgsr_vis, *wrgsr_sp64, wrgsr_v8plus, rdgsr_vis, *rdgsr_sp64,
2874         rdgsr_v8plus): New expanders and insns.
2875         (alignaddr<P:mode>_vis, alignaddrl<P:mode>_vis): Reimplement
2876         using patterns which show that this is a plus in addition to a
2877         modification of GSR_REG, instead of an unspec.
2878         * config/sparc/ultra1_2.md: Handle 'gsr'.
2879         * config/sparc/ultra3.md: Likewise.
2880         * config/sparc/niagara.md: Likewise.
2881         * config/sparc/niagara2.md: Likewise.
2882         * config/sparc/sparc.c (leaf_reg_remap, sparc_leaf_regs): Fill out
2883         end of table.
2884         (sparc_option_override): Make -mvis imply -mv8plus.
2885         (hard_32bit_mode_classes, hard_64bit_mode_classes): Add entries
2886         for %gsr.
2887         (sparc_vis_init_builtins): Build __builtin_vis_write_gsr and
2888         __builtin_vis_read_gsr.
2889         (sparc_expand_buildin): Handle builtins that take one argument and
2890         return void.
2891         (sparc_fold_builtin): Never fold writes to %gsr.
2892         * config/sparc/visintrin.h (__vis_write_gsr, __vis_read_gsr): New.
2893         * doc/extend.texi: Document new VIS intrinsics.
2894
2895 2011-09-23  Jan Hubicka  <jh@suse.cz>
2896
2897         * ipa-inline-transform.c (inline_call): Add comment.
2898         * ipa-inline.h (inline_param_summary): New structure and vector.
2899         (struct inline_edge_summary): Add param field.
2900         * ipa-inline-analysis.c (CHANGED): New constant.
2901         (add_clause): Handle CHANGED and NOT_CONSTANT.
2902         (predicate_probability): New function.
2903         (dump_condition): Dump CHANGED predicate.
2904         (evaluate_conditions_for_known_args): Handle ERROR_MARK as marker
2905         of unknown function wide invariant.
2906         (evaluate_conditions_for_edge): Handle change probabilities.
2907         (inline_edge_duplication_hook): Copy param summaries.
2908         (inline_edge_removal_hook): Free param summaries.
2909         (dump_inline_edge_summary): Fix dumping of indirect edges and callee
2910         sizes; dump param summaries.
2911         (will_be_nonconstant_predicate): Use CHANGED predicate.
2912         (record_modified_bb_info): New structure.
2913         (record_modified): New function.
2914         (param_change_prob): New function.
2915         (estimate_function_body_sizes): Compute param summaries.
2916         (estimate_edge_size_and_time): Add probability argument.
2917         (estimate_node_size_and_time): Add inline_param_summary argument;
2918         handle predicate probabilities.
2919         (remap_predicate): Fix formating.
2920         (remap_edge_change_prob): New function.
2921         (remap_edge_summaries): Rename from ...; use remap_edge_change_prob.
2922         (remap_edge_predicates): ... this one.
2923         (inline_merge_summary): Remap edge summaries; handle predicate
2924         probabilities; remove param summaries after we are done.
2925         (do_estimate_edge_time): Update.
2926         (do_estimate_edge_growth): Update.
2927         (read_inline_edge_summary): Read param info.
2928         (inline_read_summary): Fix formating.
2929         (write_inline_edge_summary): Write param summaries.
2930
2931 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
2932
2933         * config/i386/i386.c (ix86_print_operand): Handle %~.
2934         (ix86_print_operand_punct_valid_p): Return true also for '~'.
2935         * config/i386/sse.md (i128): New mode_attr.
2936         (vec_extract_hi_<mode>, vec_extract_hi_<mode>,
2937         avx_vbroadcastf128_<mode>, *avx_vperm2f128<mode>_full,
2938         *avx_vperm2f128<mode>_nozero, vec_set_lo_<mode>,
2939         vec_set_hi_<mode>, *vec_concat<mode>_avx): Use <i128> in the
2940         patterns, use "<sseinsnmode>" for "mode" attribute.
2941         (vec_extract_hi_v16hi, vec_extract_hi_v32qi, vec_set_lo_v16hi,
2942         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Use
2943         %~128 in the patterns, use "OI" for "mode" attribute.
2944
2945 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
2946
2947         PR target/50447
2948         * config/avr/avr.md (adjust_len): Add alternatives "tsthi",
2949         "tstsi", "compare".
2950         (*cmpqi_sign_extend): Use s8_operand.
2951         (*cmphi, *cmpsi): Rewrite using avr_out_compare.
2952         * config/avr/avr-protos.h (compare_diff_p, compare_eq_p): Remove
2953         prototypes.
2954         (out_tsthi, out_tstsi): Remove prototypes.
2955         (avr_out_tsthi, avr_out_tstsi): New prototypes.
2956         * config/avr/avr.c (out_tsthi, out_tstsi): Remove functions.
2957         (avr_asm_len): Negative length now sets *plen to -length.
2958         (compare_sign_p): Return bool instead of int.
2959         (compare_diff_p, compare_eq_p): Ditto and make static.
2960         (avr_out_tsthi): New function.
2961         (avr_out_tstsi): New function.
2962         (avr_out_compare): New function.
2963         (adjust_insn_length): Handle ADJUST_LEN_TSTHI, ADJUST_LEN_TSTSI,
2964         ADJUST_LEN_COMPARE.
2965
2966 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
2967
2968         PR target/50447
2969         * config/avr/avr.md: (adjust_len): Add alternative "out_plus".
2970         (addsi3): Rewrite using QI scratch register.  Adjust text
2971         peepholes using plus:SI.
2972         (*addsi3_zero_extend.hi): New insn.
2973         (*subsi3_zero_extend.hi): New insn.
2974         (*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
2975         (*subsi3_zero_extend): Ditto.
2976         (subsi3): Change predicate #2 to register_operand.
2977         * config/avr/avr-protos.h (avr_out_plus): New prototype.
2978         (avr_out_plus_1): New static function.
2979         (avr_out_plus): New function.
2980         (adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
2981
2982 2011-09-23  Jakub Jelinek  <jakub@redhat.com>
2983
2984         * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): For
2985         GE/GT/UNLE/UNLT swap arguments and condition even for TARGET_AVX.
2986
2987 2011-09-23  Ian Lance Taylor  <iant@google.com>
2988
2989         * godump.c (go_define): Treat a single character in single quotes,
2990         or a string, as an operand.
2991
2992 2011-09-23  Martin Jambor  <mjambor@suse.cz>
2993
2994         * ipa-prop.h (jump_func_type): Updated comments.
2995         (ipa_known_type_data): New type.
2996         (ipa_jump_func): Use it to describe known type jump functions.
2997         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Updated to
2998         reflect the new known type jump function contents.
2999         (compute_known_type_jump_func): Likewise.
3000         (combine_known_type_and_ancestor_jfs): Likewise.
3001         (try_make_edge_direct_virtual_call): Likewise.
3002         (ipa_write_jump_function): Likewise.
3003         (ipa_read_jump_function): Likewise.
3004         * ipa-cp.c (ipa_value_from_known_type_jfunc): New function.
3005         (ipa_value_from_jfunc): Use ipa_value_from_known_type_jfunc.
3006         (propagate_accross_jump_function): Likewise.
3007
3008 2011-09-23  Georg-Johann Lay  <avr@gjlay.de>
3009
3010         PR target/50446
3011         * config/avr/avr.md (rotlqi3): Support all offsets 0..7.
3012         (rotlqi3_4): Turn insn into expander.
3013         (*rotlqi3): New insn.
3014         (rotlhi3, rotlsi3): Support rotate left/right by 1.
3015         (*rotlhi2.1, *rotlhi2.15): New insns.
3016         (*rotlsi2.1, *rotlsi2.31): New insns.
3017         * config/avr/constraints.md (C03, C05, C06, C07): New constraints.
3018
3019 2011-09-23  Bin Cheng  <bin.cheng@arm.com>
3020
3021         * config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-m arch and processors.
3022
3023 2011-09-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
3024
3025         * ipa-prop.c (ipa_print_node_jump_functions): Fix typos.
3026
3027 2011-09-22  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3028
3029         * reload.c (find_reloads): Set operand_mode to Pmode for address
3030         operands consisting of just a CONST_INT.
3031
3032 2011-09-22  Uros Bizjak  <ubizjak@gmail.com>
3033
3034         PR target/50482
3035         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3036         blendv, force op_true to register if it doesn't satisfy
3037         nonimmediate_operand predicate.
3038
3039 2011-09-22  Richard Sandiford  <rdsandiford@googlemail.com>
3040
3041         PR middle-end/50113
3042         PR middle-end/50061
3043         * calls.c (emit_library_call_value_1): Use BLOCK_REG_PADDING to
3044         get the locate.where_pad value for register-only arguments.
3045         * config/arm/arm.c (arm_pad_arg_upward): Remove HFmode handling.
3046         (arm_pad_reg_upward): Handle null types.
3047
3048 2011-09-22  Jan Hubicka  <jh@suse.cz>
3049
3050         * ipa-inline-analysis.c: Fix overly long lines.
3051
3052 2011-09-22  Jan Hubicka  <jh@suse.cz>
3053
3054         * ipa-inline-transform.c (inline_call): Always update jump functions
3055         after inlining.
3056         * ipa-inline.c (ipa_inline): Likewise; do not call
3057         ipa_create_all_structures_for_iinln.
3058         (ipa_inline): Always free jump functions.
3059         * ipa-inline-analysis.c (evaluate_conditions_for_edge): Remove hack.
3060         (remap_edge_predicates): Fix pasto.
3061         (inline_merge_summary): Remove nlined edge predicate; remove hack.
3062         (inline_analyze_function): Always initialize jump functions.
3063         (inline_generate_summary): Likewise.
3064         (inline_write_summary): Always write jump functions when ipa-cp
3065         is not doing that.
3066         (inline_read_summary): Always read jump functions when ipa-cp
3067         is not doing that.
3068         * ipa-prop.c (iinlining_processed_edges): Remove.
3069         (update_indirect_edges_after_inlining): Do not use
3070         iinlining_processed_edges; instead set param_index to -1.
3071         (propagate_info_to_inlined_callees): Only try to indirect inlining
3072         when asked to do so; update jump functions of indirect calls, too;
3073         remove jump functions of the inlined edge.
3074         (ipa_edge_duplication_hook): Do not copy iinlining_processed_edges.
3075         (ipa_create_all_structures_for_iinln): Remove.
3076         (ipa_free_all_structures_after_iinln): Do not free
3077         iinlining_processed_edges.
3078         * ipa-prop.h (ipa_create_all_structures_for_iinln): Remove.
3079
3080 2011-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
3081
3082         * config/arm/predicates.md (expandable_comparison_operator): New
3083         predicate, extracted from...
3084         (arm_comparison_operator): ...here.
3085         * config/arm/arm.md (cbranchsi4, cbranchsf4, cbranchdf4, cbranchdi4)
3086         (cstoresi4, cstoresf4, cstoredf4, cstoredi4, movsicc, movsfcc)
3087         (movdfcc): Use expandable_comparison_operator.
3088
3089 2011-09-22  Georg-Johann Lay  <avr@gjlay.de>
3090
3091         PR target/50447
3092         PR target/50465
3093         * config/avr/avr-protos.h (avr_out_bitop): New prototype.
3094         (avr_popcount_each_byte): New prototype.
3095         * config/avr/avr.c (avr_popcount): New static function.
3096         (avr_popcount_each_byte): New function.
3097         (avr_out_bitop): New function.
3098         (adjust_insn_length): ADJUST_LEN_OUT_BITOP dispatches to
3099         avr_out_bitop.  Cleanup code.
3100         * config/avr/constraints.md (Ca2, Co2, Cx2): New constraints.
3101         (Ca4, Co4, Cx4): New constraints.
3102         * config/avr/avr.md (adjust_len): Add "out_bitop" insn attribute
3103         alternative.
3104         (andhi3, iorhi3, xorhi3): Rewrite insns using avr_out_bitop.
3105         (andsi3, iorsi3, xorsi3): Ditto.
3106         (*iorhi3_clobber, *iorsi3_clobber): Remove insns.
3107
3108 2011-09-22  Ira Rosen  <ira.rosen@linaro.org>
3109
3110         PR tree-optimization/50451
3111         * tree-vect-slp.c (vect_get_constant_vectors): Don't fail for
3112         constant operands in reduction.
3113         (vect_get_slp_defs): Don't create vector operand for NULL scalar
3114         operand.
3115
3116 2011-09-22  David S. Miller  <davem@davemloft.net>
3117
3118         * config/sparc/sparc.c (sparc_vis_init_builtins): Do not mark
3119         fpack16, fpack32, fpackfix as const.
3120
3121         * config/sparc/sparc.md (G[0-7]_REG, O[0-7]_REG, L[0-7]_REG,
3122         I[0-7]_REG, F[0-62]_REG, FCC[0-3]_REG, CC_REG, SFP_REG): New
3123         constants.  Use them everywhere.
3124
3125 2011-09-22  Oleg Endo  <oleg.endo@t-online.de>
3126
3127         * config/sh/sh.c (andcosts): Renamed to and_xor_ior_costs.
3128         Added AND special case.  Adapted comments.
3129         (sh_rtx_costs): Added XOR and IOR case.
3130
3131 2011-09-21  Jan Hubicka  <jh@suse.cz>
3132
3133         * ipa-inline-analsis.c (compute_inline_parameters): Set
3134         cfun and current_function_decl.
3135
3136 2011-09-21  Jan Hubicka  <jh@suse.cz>
3137
3138         * ipa-inline-analysis.c (set_cond_stmt_execution_predicate): Allow
3139         handled components in parameter of builtin_constant_p.
3140         (will_be_nonconstant_predicate): Allow loads of non-SSA parameters.
3141
3142 2011-09-21  Jan Hubicka  <jh@suse.cz>
3143
3144         * ipa-inline.c (relative_time_benefit): Fix wrong bracketting.
3145         * ipa-inline.h (estimate_edge_time): Fix pasto.
3146         * ipa-inline-analysis.c (do_estiamte_edge_time): Remove capping.
3147
3148 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
3149
3150         * config/i386/i386.c (ix86_expand_sse_movcc): Use
3151         blendvps, blendvpd and pblendvb if possible.
3152
3153 2011-09-21  Uros Bizjak  <ubizjak@gmail.com>
3154
3155         PR target/50464
3156         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Change
3157         operand 1 predicate to register_operand and operand 2 predicate
3158         to nonimmediate_operand.
3159         * config/i386/i386.c (ix86_expand_sse_movcc): When generating
3160         xop_pcmov, force op_true to register.  Also, force op_false to
3161         register if it doesn't satisfy nonimmediate_operand predicate.
3162
3163 2011-09-21  Kirill Yukhin  <kirill.yukhin@intel.com>
3164
3165         * config/i386/bmi2intrin.h (_mulx_u64): New.
3166         (_mulx_u32): Ditto.
3167
3168 2011-09-21  Jan Hubicka  <jh@suse.cz>
3169
3170         PR tree-optimization/50433
3171         * ipa-inline-analysis.c (eliminated_by_inlining_prob):
3172         Use get_base_address.
3173
3174 2011-09-21  Jakub Jelinek  <jakub@redhat.com>
3175
3176         * config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
3177         nonimmediate_operand instead of register_operand predicate for operands
3178         1 and 2, force them into registers if expanding them as comparison.
3179         (<code><mode>3 umaxmin:VI124_128 expander): Similarly.  For UMAX
3180         V8HImode force into register just operand 1.
3181
3182 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
3183
3184         PR target/45099
3185         * config/avr/avr.c (avr_function_arg_advance): Change error to
3186         warning if a fixed register is needed as function argument.
3187
3188 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
3189
3190         PR target/50449
3191         PR target/50465
3192         * config/avr/avr.md (adjust_len): New insn attribute.
3193         (*reload_insi, *reload_insf): Use it.
3194         (*movsi, *movsf): Use new interface of output_movsisf.
3195         * config/avr/avr-protos.h (output_movsisf): Change prototype.
3196         * config/avr/avr.c (output_movsisf): Ditto.
3197         (adjust_insn_length): Use insn attribute "adjust_len" to adjust
3198         lengths of insns *reload_insi, *reload_insf.
3199         (output_reload_insisf_1): New static function.
3200         (output_reload_insisf): Use it.
3201
3202 2011-09-21  David S. Miller  <davem@davemloft.net>
3203
3204         * config/sparc/sparc.c (def_builtin): Change from macro into function.
3205         (def_builtin_const): New.
3206         (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
3207         other than alignaddr and falignaddr.
3208
3209         * config/sparc/sparc.md (UNSPEC_FCMPLE, UNSPEC_FCMPNE, UNSPEC_FCMPGT,
3210         UNSPEC_FCMPEQ): New unspec codes.
3211         (fcmple16_vis, fcmple32_vis, fcmpne16_vis, fcmpne32_vis, fcmpgt16_vis,
3212         fcmpgt32_vis, fcmpeq16_vis, fcmpeq32_vis): New patterns.
3213         * config/sparc/sparc.c (sparc_vis_init_builtins): Create builtins for
3214         new pixel compare VIS patterns.
3215         * config/sparc/visintrin.h (__vis_fcmple16, __vis_fcmple32,
3216         __vis_fcmpne16, __vis_fcmpne32, __vis_fcmpgt16, __vis_fcmpgt32,
3217         __vis_fcmpeq16, __vis_fcmpeq32): New.
3218         * doc/extend.texi: Document new pixel compare VIS intrinsics.
3219
3220 2011-09-21  Tom de Vries  <tom@codesourcery.com>
3221
3222         * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
3223
3224 2011-09-20  David S. Miller  <davem@davemloft.net>
3225
3226         * config/sparc/sparc.md (UNSPEC_ALIGNADDRL): New unspec.
3227         (aligneddrl<P:mode>_vis): New pattern.
3228         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
3229         edge32l_vis): Adjust to take Pmode arguments, and return SImode.
3230         * config/sparc/sparc.c (sparc_vis_init_builtins): Handle new
3231         alignaddrl insn, and adjust edge operations for updated types.
3232         * config/sparc/visintrin.h: Likewise.
3233         * doc/extend.texi: Make typing in VIS documentation match reality.
3234
3235 2011-09-20  Terry Guo  <terry.guo@arm.com>
3236
3237         * config/arm/arm-arches.def: Add armv6s-m.
3238         * config/arm/arm-tables.opt: Regenerate.
3239
3240 2011-09-20  Wei Guozhi  <carrot@google.com>
3241
3242         PR rtl-optimization/49452
3243         * postreload.c (reload_combine): Invalidate use information when across
3244         volatile insn.
3245
3246 2011-09-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
3247
3248         * haifa-sched.c (has_edge_p, prev_non_location_insn, check_cfg):
3249         Remove maintenance overhead.
3250         (haifa_sched_init, sched_finish): Update.
3251
3252 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
3253
3254         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use if_then_else RTX
3255         to calculate unit, prefix_rep and prefix_data16 attributes.
3256         (*mov<mode>_internal): Ditto for unit attribute.
3257         (*movv2sf_internal_rex64): Ditto for unit and prefix_rep attributes.
3258         (*movv2sf_internal): Ditto.
3259         * config/i386/sse.md (VI1248_256): Remove mode iterator.
3260         (avx2_eq<mode>3): Use VI_256 instead of VI1248_256.
3261         (*avx2_eq<mode>3): Ditto.
3262         (avx2_gt<mode>3): Ditto.
3263
3264 2011-09-19  Uros Bizjak  <ubizjak@gmail.com>
3265
3266         * config/i386/i386.md (maxmin): New code iterator.
3267         * config/i386/sse.md (<maxmin:code><mode>3): Macroize expander
3268         from <umaxmin:code><mode>3 and <smaxmin:code><mode>3 using maxmin
3269         code iterator.
3270         (*avx2_<maxmin:code><mode>3): Macroize isn from
3271         *avx2_<umaxmin:code><mode>3 and *avx2_<smaxmin:code><mode>3 using
3272         maxmin code iterator.
3273         (<smaxmin:code><VI124_128:mode>3): Merge with <smaxmin:code>v8hi3.
3274         (<umaxmin:code><VI124_128:mode>3): Merge with umaxv4si3 and
3275         <umaxmin:code>v16qi3.
3276
3277 2011-09-19  Alan Modra  <amodra@gmail.com>
3278             Michael Meissner  <meissner@linux.vnet.ibm.com>
3279
3280         PR target/50341
3281         * config/rs6000/rs6000.md (call_indirect_aix<ptrsize>): Do not
3282         split the load of the indirect function's TOC from the call to
3283         prevent the compiler from moving the load of the new TOC above
3284         code that references the current function's TOC.
3285         (call_indirect_aix<ptrsize>_internal): Ditto.
3286         (call_indirect_aix<ptrsize>_nor11): Ditto.
3287         (call_indirect_aix<ptrsize>_internal2): Ditto.
3288         (call_value_indirect_aix<ptrsize>): Ditto.
3289         (call_value_indirect_aix<ptrsize>_internal): Ditto.
3290         (call_value_indirect_aix<ptrsize>_nor11): Ditto.
3291         (call_value_indirect_aix<ptrsize>_internal2): Ditto.
3292
3293 2011-09-19  Jakub Jelinek  <jakub@redhat.com>
3294
3295         * config/i386/sse.md (*sse4_1_extractps): Change into
3296         define_insn_and_split, add =x 0 n and =x x n alternatives
3297         and split them after reload.
3298
3299 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
3300
3301         * tree.h (TREE_NOT_CHECK4): Rename from bogus NON_TREE_CHECK4.
3302
3303 2011-09-19  Alexandre Oliva  <aoliva@redhat.com>
3304
3305         * emit-rtl.c (copy_insn_1): Do not copy DEBUG_EXPRs.
3306
3307 2011-09-19  Ira Rosen  <ira.rosen@linaro.org>
3308
3309         PR tree-optimization/50413
3310         * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
3311         a basic block if one of its data-refs can't be analyzed.
3312
3313 2011-09-19  Paul Brook  <paul@codesourcery.com>
3314
3315         * config/arm/predicates.md (shift_amount_operand): Check constant
3316         shift count is in range.
3317         (const_shift_operand): Remove.
3318
3319 2011-09-18  Eric Botcazou  <ebotcazou@adacore.com>
3320             Iain Sandoe  <developer@sandoe-acoustics.co.uk>
3321
3322         PR target/50091
3323         * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
3324         * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
3325
3326 2011-09-18  H.J. Lu  <hongjiu.lu@intel.com>
3327
3328         * config/i386/bmiintrin.h: Remove tmp.
3329         * config/i386/tbmintrin.h: Likewise.
3330
3331 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
3332
3333         PR tree-optimization/50414
3334         * tree-vect-slp.c (vect_get_constant_vectors): Handle MAX_EXPR and
3335         MIN_EXPR.
3336
3337 2011-09-18  Ira Rosen  <ira.rosen@linaro.org>
3338
3339         PR tree-optimization/50412
3340         * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
3341         acceses that require epilogue loop if vectorizing outer loop.
3342
3343 2011-09-17  David S. Miller  <davem@davemloft.net>
3344
3345         * config/sparc/sparc.md (UNSPEC_EDGE8, UNSPEC_EDGE8L,
3346         UNSPEC_EDGE16, UNSPEC_EDGE16L, UNSPEC_EDGE32, UNSPEC_EDGE32L):
3347         New unspecs.
3348         (define_attr type): New type 'edge'.
3349         (edge8_vis, edge8l_vis, edge16_vis, edge16l_vis, edge32_vis,
3350         edge32l_vis): New patterns.
3351         * config/sparc/ultra1_2.md: Add insn reservation for 'edge'.
3352         * config/sparc/ultra3.md: Likewise.
3353         * config/sparc/niagara.md: Likewise.
3354         * config/sparc/niagara2.md: Likewise.
3355         * config/sparc/sparc.d (sparc_vis_init_builtins): Generate
3356         builtins for VIS edge instructions.
3357         * config/sparc/visintrin.h (__vis_edge8, __vis_edge8l)
3358         (__vis_edge16, __vis_edge16l, __vis_edge32, __vis_edge32l): New
3359         intrinsics.
3360         (__v8qi, __v4qi): Make unsigned.
3361         (__vis_faligndatadi, ___vis_faligndatav2si, __vis_faligndatav4hi,
3362         __vis_faligndatav8qi, __vis_fmul8x16au, __vis_fmul8x16al,
3363         __vis_fpack32): Fix types.
3364         * doc/extend.texi: Document new 'edge' VIS intrinsics.
3365
3366         * gcc/config/sparc/sparc.c (niagara2_costs): Adjust integer
3367         divide costs.
3368         (niagara3_costs): New.
3369         (sparc_option_override): Use it.
3370         * gcc/config/sparc/niagara2.md: Adjust with more accurate
3371         Niagara-3 reservations.
3372
3373 2011-09-17  Jakub Jelinek  <jakub@redhat.com>
3374
3375         * config/i386/sse.md (VIMAX_AVX2): Change V4DI to V2TI.
3376         (sse2_avx, sseinsnmode): Add V2TI.
3377         (REDUC_SMINMAX_MODE): New mode iterator.
3378         (reduc_smax_v4sf, reduc_smin_v4sf, reduc_smax_v8sf,
3379         reduc_smin_v8sf, reduc_smax_v4df, reduc_smin_v4df): Remove.
3380         (reduc_<code>_<mode>): New smaxmin and umaxmin expanders.
3381         (sse2_lshrv1ti3): Rename to...
3382         (<sse2_avx2>_lshr<mode>3): ... this.  Use VIMAX_AVX2 mode
3383         iterator.  Move before umaxmin expanders.
3384         * config/i386/i386.h (VALID_AVX256_REG_MODE,
3385         SSE_REG_MODE_P): Accept V2TImode.
3386         * config/i386/i386.c (ix86_expand_reduc): Handle V32QImode,
3387         V16HImode, V8SImode and V4DImode.
3388
3389         * config/i386/i386.c (ix86_build_const_vector): Handle V8SImode
3390         and V4DImode.
3391         (ix86_build_signbit_mask): Likewise.
3392         (ix86_expand_int_vcond): Likewise.  Handle V16HImode and V32QImode.
3393         (bdesc_args): Use CODE_FOR_{s,u}m{ax,in}v{32q,16h,8s}i3
3394         instead of CODE_FOR_avx2_{s,u}m{ax,in}v{32q,16h,8s}i3.
3395         * config/i386/sse.md (avx2_<code><mode>3 umaxmin expand): Rename to...
3396         (<code><mode>3) ... this.
3397         (avx2_<code><mode>3 smaxmin expand): Rename to...