OSDN Git Service

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