OSDN Git Service

* config/rs6000/rs6000.c (rs6000_stack_info): Don't compare against
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2011-04-07  Alan Modra  <amodra@gmail.com>
2
3         * config/rs6000/rs6000.c (rs6000_stack_info): Don't compare against
4         previous stack info.
5
6 2011-04-07  Tom de Vries  <tom@codesourcery.com>
7
8         PR target/43920
9         * cfgcleanup.c (try_crossjump_to_edge): Add dir parameter.  Pass dir to
10         flow_find_cross_jump.  Swap variables to implement backward replacement.
11         (try_crossjump_bb): Add argument to try_crossjump_to_edge.
12
13 2011-04-07  Tom de Vries  <tom@codesourcery.com>
14
15         PR target/43920
16         * cfgcleanup.c (walk_to_nondebug_insn): New function.
17         (flow_find_cross_jump): Use walk_to_nondebug_insn.  Recalculate bb1 and
18         bb2.
19         (try_crossjump_to_edge): Handle case that newpos1 or newpos2 is not src1
20         or src2.  Redirect edges to the last basic block.  Update frequency and
21         count on multiple basic blocks in case of fallthru.
22
23 2011-04-07  Tom de Vries  <tom@codesourcery.com>
24
25         PR target/43920
26         * cfgcleanup.c (equal_different_set_p, can_replace_by, merge_dir): New
27         function.
28         (old_insns_match_p): Change return type.  Replace return false/true with
29         return dir_none/dir_both.  Use can_replace_by.
30         (flow_find_cross_jump): Add dir_p parameter.  Init replacement direction
31         from dir_p.  Register replacement direction in dir, last_dir and
32         afterlast_dir.  Handle new return type of old_insns_match_p using
33         merge_dir.  Return replacement direction in dir_p.
34         (flow_find_head_matching_sequence, outgoing_edges_match): Handle new
35         return type of old_insns_match_p.
36         (try_crossjump_to_edge): Add argument to call to flow_find_cross_jump.
37         * ifcvt.c ( cond_exec_process_if_block): Add argument to call to
38         flow_find_cross_jump.
39         * basic-block.h (enum replace_direction): New type.
40         (flow_find_cross_jump): Add parameter to declaration.
41
42 2011-04-06  Uros Bizjak  <ubizjak@gmail.com>
43
44         * config/i386/sse.md (AVXMODEDCVTDQ2PS): Remove.
45         (AVXMODEDCVTPS2DQ): Ditto.
46         (VEC_FLOAT_MODE): Ditto.
47         (<sse>_andnot<mode>3): Merge with avx_andnot<mode>3.  Use VF mode
48         iterator.  Handle TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL target flag.
49         (<any_logic:code><mode>3): Use VF mode iterator.
50         (*<any_logic:code><mode>3): Merge with *avx_<any_logic:code><mode>3.
51         Use VF mode iterator.
52         (copysign<mode>3): Use VF mode iterator.
53         (*andnot<MODEF:mode>3): Merge with *avx_andnot<MODEF:mode>3.  Handle
54         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL target flag.
55         (*<any_logic:code><MODEF:mode>3): Merge with
56         *avx_<any_logic:code><MODEF:mode>3.
57         (sse_cvtsi2ss): Merge with *avx_cvtsi2ss.
58         (sse_cvtsi2ssq): Merge with *avx_cvtsi2ssq.
59         (avx_cvtdq2ps256): Split from avx_cvtdq2ps<avxmodesuffix>.
60         (avx_cvtdq2ps<avxmodesuffix>): Remove.
61         (sse2_cvtdq2ps): Use %v modifier.
62         (avx_cvtps2dq256): Split from avx_cvtps2dq<avxmodesuffix>.
63         (avx_cvtps2dq<avxmodesuffix>): Remove.
64         (sse2_cvtps2dq): Use %v modifier.
65         (avx_cvttps2dq256): Split from avx_cvttps2dq<avxmodesuffix>.
66         (avx_cvttps2dq<avxmodesuffix>): Remove.
67         (sse2_cvttps2dq): Use %v modifier.
68         (sse2_cvtsi2sd): Merge with *avx_cvtsi2sd.
69         (sse2_cvtsi2sdq): Merge with *avx_cvtsi2sdq.
70         (sse2_cvtsd2siq): Fix insn template.
71         (sse2_cvtsd2siq_2): Ditto.
72         (sse2_cvttsd2siq): Ditto.
73         (sse2_cvtsd2ss): Merge with *avx_cvtsd2ss.
74         (sse2_cvtss2sd): Merge with *avx_cvtss2sd.
75
76 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
77
78         * gcov-io.c: Use GCC Runtime Library Exception.
79
80 2011-04-06  Jakub Jelinek  <jakub@redhat.com>
81
82         PR debug/48466
83         * dwarf2out.c (based_loc_descr): If drap_reg is INVALID_REGNUM, use
84         as base_reg whatever register reg has been eliminated to, instead
85         of hardcoding STACK_POINTER_REGNUM.
86
87 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
88
89         * doc/tm.texi.in: Document C target hooks as separate from general
90         target hooks.
91         * doc/tm.texi: Regenerate.
92         * genhooks.c (struct hook_desc): Add docname field.
93         (HOOK_VECTOR_1, DEFHOOKPOD, DEFHOOK, DEFHOOK_UNDOC).  Initialize
94         docname field.
95         (hook_array): Include c-target.def.
96         (emit_documentation): Use docname field in output.
97         (emit_init_macros): Take docname argument.  Only emit definitions
98         for hooks matching docname.
99         (main): Expect additional arguments in all cases.  Pass argument
100         to emit_init_macros.
101         * target.def: Move initial macro definitions and comments to
102         target-hooks-macros.h.
103         (gcc_targetcm): Move to c-family/c-target.def.
104         * target.h (targetcm): Move declaration to c-family/c-target.h.
105         * targhooks.c (default_handle_c_option): Move to
106         c-family/c-opts.c.
107         * targhooks.h (default_handle_c_option): Move declaration to
108         c-family/c-common.h.
109         * target-hooks-macros.h: New file.
110         * config.gcc (target_has_targetcm): Define and use to add to
111         c_target_objs and cxx_target_objs.
112         * config/default-c.c: New file.
113         * config/darwin-c.c: Include c-target.h and c-target-def.h instead
114         of target.h and target-def.h.
115         (TARGET_HANDLE_C_OPTION, targetcm): Define later in file.
116         (darwin_objc_construct_string, darwin_cfstring_ref_p,
117         darwin_check_cfstring_format_arg): Make static.
118         (TARGET_OBJC_CONSTRUCT_STRING_OBJECT,
119         TARGET_STRING_OBJECT_REF_TYPE_P,
120         TARGET_CHECK_STRING_OBJECT_FORMAT_ARG): Define here.
121         * config/darwin-protos.h (darwin_objc_construct_string,
122         darwin_cfstring_ref_p, darwin_check_cfstring_format_arg): Don't
123         declare.
124         * config/darwin.h (TARGET_OBJC_CONSTRUCT_STRING_OBJECT,
125         TARGET_STRING_OBJECT_REF_TYPE_P,
126         TARGET_CHECK_STRING_OBJECT_FORMAT_ARG, TARGET_HAS_TARGETCM): Remove.
127         * config/t-darwin (darwin-c.o): Update dependencies.
128         * system.h (TARGET_HAS_TARGETCM): Poison.
129         * Makefile.in (TARGET_H): Update.
130         (TARGET_DEF, C_TARGET_DEF, C_TARGET_H, C_TARGET_DEF_H): Define.
131         (c-family/c-format.o, c-family/c-opts.o): Update dependencies.
132         (default-c.o): New target.
133         (s-target-hooks-def-h): Pass "Target Hook" string to genhooks.
134         (c-family/c-target-hooks-def.h, s-c-target-hooks-def-h): New targets.
135         (s-tm-texi): Pass -d option to genhooks.  Also test timestamp on
136         c-target.def.
137         (build/genhooks.o): Update dependencies.
138
139 2011-04-06  Richard Guenther  <rguenther@suse.de>
140
141         * ipa-inline.c (enum inlining_mode): Remove.
142         (cgraph_flatten): Use some other token.
143         (cgraph_edge_early_inlinable_p): New function, split out from ...
144         (cgraph_perform_always_inlining): New function, split out from ...
145         (cgraph_decide_inlining_incrementally): ... here.
146         (cgraph_mark_inline_edge): Adjust.
147         (cgraph_early_inlining): Re-structure.
148         (pass_early_inline): Require SSA form.
149
150 2011-03-06  Andrew Stubbs  <ams@codesourcery.com>
151             Julian Brown  <julian@codesourcery.com>
152             Mark Shinwell  <shinwell@codesourcery.com>
153
154         * config/arm/arm.h (arm_class_likely_spilled_p): Check against
155         LO_REGS only for Thumb-1.
156         (MODE_BASE_REG_CLASS): Restrict base registers to those which can
157         be used in short instructions when optimising for size on Thumb-2.
158
159 2011-04-06  Eric Botcazou  <ebotcazou@adacore.com>
160
161         * gimple-low.c (lower_gimple_return): When not optimizing, force labels
162         associated with user returns to be preserved.
163
164 2011-04-06  Tristan Gingold  <gingold@adacore.com>
165
166         * dbxout.c: (debug_nesting, symbol_queue, symbol_queue_index)
167         (symbol_queue_size, DBXOUT_DECR_NESTING)
168         (DBXOUT_DECR_NESTING_AND_RETURN): Also define
169         if XCOFF_DEBUGGING_INFO.
170
171 2011-04-06  Uros Bizjak  <ubizjak@gmail.com>
172
173         * config/i386/i386.md (attribute isa): New.
174         (attribute enabled): New.
175         (setcc_<mode>_sse): Merge from *{avx,sse}_setcc<mode>.
176         (*fop_<mode>_comm_mixed): Merge with *fop_<mode>_comm_mixed_avx.
177         (*fop_<mode>_comm_sse): Merge with *fop_<mode>_comm_avx.
178         (*fop_<mode>_1_mixed): Merge with *fop_<mode>_1_mixed_avx.
179         (*fop_<mode>_1_sse): Merge with *fop_<mode>_1_avx.
180         (<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
181         (*ieee_smin<mode>3): Merge with *avx_ieee_smin<mode>3.
182         (*ieee_smax<mode>3): Merge with *avx_ieee_smax<mode>3.
183
184         * config/i386/sse.md (VF): New mode iterator.
185         (VF1): Ditto.
186         (VF2): Ditto.
187         (VF_128): Ditto.
188         (SSEMODEF4): Remove.
189         (attribute sse): Handle V8SF and V4DF modes.
190         (<absneg:code><mode>2): Use VF mode iterator.
191         (*absneg<mode>2): Merge from *{avx,sse}_absneg<mode>2.  Use VF
192         mode iterator.
193         (<plusminus_insn><mode>3): Use VF mode iterator.
194         (*<plusminus_insn><mode>3): Merge with *avx_<plusminus_insn><mode>3.
195         Use VF mode iterator.
196         (<sse>_vm<plusminus_insn><mode>3): Merge with
197         *avx_vm<plusminus_insn><mode>3.  Use VF_128 mode iterator.
198         (mul<mode>3): Use VF mode iterator.
199         (*mul<mode>3): Merge with *avx_mul<mode>3.  Use VF mode iterator.
200         (<sse>_vmmul<mode>3): Merge with *avx_vmmul<mode>3.  Use VF_128
201         mode iterator.
202         (div<VF2:mode>3): Merge from divv2df3 and divv4df3.
203         (div<VF1:mode>3): Merge from divv4sf3 and divv8sf3.
204         (<sse>_div<mode>3): Merge with *avx_div<mode>3.  Use VF mode iterator.
205         (<sse>_vmdiv<mode>3): Merge with *avx_vmdiv<mode>3.  Use VF_128
206         mode iterator.
207         (<sse>_rcp<mode>2): Merge from avx_rcpv8sf2 and sse_rcpv4sf2.
208         Use VF1 mode iterator.
209         (sse_vmrcpv4sf2): Merge with *avx_vmrcpv4sf2.
210         (sqrt<VF2:mode>2): New expander.
211         (sqrt<VF1:mode>2): Merge from sqrtv4sf2 and sqrtv8sf2.
212         (<sse>_sqrt<mode>2): Merge from avx_sqrtv8sf2, sse_sqrtv4sf, sqrtv4df2
213         and sqrtv2df2.  Use VF mode iterator.
214         (<sse>_vmsqrt<mode>2): Merge with *avx_vmsqrt<mode>2.  Use VF_128
215         mode iterator.
216         (rsqrt<VF1:mode>2): Merge from rsqrtv4sf2 and rsqrtv8sf2.
217         (<sse>_rsqrt<mode>2): Merge from avx_rsqrtv8sf2 and sse_rsqrt4sf2.
218         Use VF1 mode iterator.
219         (sse_vmrsqrtv4sf2): Merge with *avx_vmrsqrtv4sf2.
220         (<smaxmin:code><mode>3): Use VF mode iterator.
221         (*<smaxmin:code><mode>3_finite): Merge with
222         *avx_<smaxmin:code><mode>3_finite.  Use VF mode iterator.
223         (*<smaxmin:code><mode>3): Merge with *avx_<smaxmin:code><mode>3.
224         (<sse>_vm<smaxmin:code><mode>2): Merge with
225         *avx_vm<smaxmin:code><mode>2.  Use VF_128 mode iterator.
226         (*ieee_smin<mode>3): Merge with *avx_ieee_smin<mode>3.  Use VF
227         mode iterator.
228         (*ieee_smax<mode>3): Merge with *avx_ieee_smax<mode>3.  Use VF
229         mode iterator.
230         (sse3_addsubv2df3): Merge with *avx_addsubv2df3.
231         (sse3_addsubv4sf3): Merge with *avx_addsubv4sf3.
232         (sse3_h<plusminus_insn>v2df3): Merge with *avx_h<plusminus_insn>v2df3.
233         (sse3_h<plusminus_insn>v4sf3): Merge with *avx_h<plusminus_insn>v4sf3.
234         (avx_cmp<mode>3): Rename from avx_cmp<ssemodesuffix><mode>3.  Use
235         VF mode iterator.
236         (avx_vmcmp<mode>3): Rename from avx_cmp<ssescalarmodesuffix><mode>3.
237         Use VF_128 mode iterator.
238         (<sse>_maskcmp<mode>3): Merge with *avx_maskcmp<mode>3.  Use VF
239         mode iterator.
240         (<sse>_vmmaskcmp<mode>3): Merge with *avx_vmmaskcmp<mode>3.  Use
241         VF_128 mode iterator.
242         (vcond<mode>): Use VF mode iterator.
243         * config/i386/predicates.md (sse_comparison_operator): Merge with
244         avx_comparison_float_operator.  Do not declare as special_predicate.
245         * config/i386/i386.c (struct builtin_description): Update for renamed
246         compare patterns.
247         (ix86_expand_args_builtin): Ditto.
248         (ix86_expand_sse_compare_mask): Ditto.
249
250 2011-04-06  Richard Guenther  <rguenther@suse.de>
251
252         * tree-inline.c (estimate_num_insns): For calls simply account
253         for all passed arguments and a used return value.
254
255 2011-04-06  Richard Guenther  <rguenther@suse.de>
256
257         PR tree-optimization/47663
258         * cgraph.h (struct cgraph_edge): Add call_stmt_size and
259         call_stmt_time fields.
260         (cgraph_edge_inlinable_p): Declare.
261         (cgraph_edge_recursive_p): New inline function.
262         * cgraph.c (cgraph_create_edge_1): Initialize call_stmt_size.
263         (cgraph_clone_edge): Copy it.
264         * ipa-inline.c (cgraph_estimate_edge_time): New function.
265         Account for call stmt time.
266         (cgraph_estimate_time_after_inlining): Take edge argument.
267         (cgraph_estimate_edge_growth): Account call stmt size.
268         (cgraph_estimate_size_after_inlining): Take edge argument.
269         (cgraph_mark_inline_edge): Adjust.
270         (cgraph_check_inline_limits): Likewise.
271         (cgraph_recursive_inlining_p): Remove.
272         (cgraph_edge_badness): Use cgraph_edge_recursive_p.
273         (cgraph_decide_recursive_inlining): Take edge argument and
274         adjust.
275         (cgraph_decide_inlining_of_small_functions): Do not avoid
276         diags for recursive inlining here.
277         (cgraph_flatten): Adjust.
278         (cgraph_decide_inlining_incrementally): Likewise.
279         (estimate_function_body_sizes): Remove call cost handling.
280         (compute_inline_parameters): Initialize caller edge call costs.
281         (cgraph_estimate_edge_growth): New function.
282         (cgraph_estimate_growth): Use it.
283         (cgraph_edge_badness): Likewise.
284         (cgraph_check_inline_limits): Take an edge argument.
285         (cgraph_decide_inlining_of_small_functions): Adjust.
286         (cgraph_decide_inlining): Likewise.
287         * tree-inline.c (estimate_num_insns): Only account for call
288         return value if it is used.
289         (expand_call_inline): Avoid diagnostics on recursive inline
290         functions here.
291         * lto-cgraph.c (lto_output_edge): Output edge call costs.
292         (input_edge): Input edge call costs.
293
294 2011-04-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
295
296         * config/alpha/osf5.h (MAX_OFILE_ALIGNMENT): Define.
297
298 2011-04-06  Jonathan Wakely  <jwakely.gcc@gmail.com>
299
300         * doc/invoke.texi (Spec Files): Fix typo.
301
302 2011-04-06  Eric Botcazou  <ebotcazou@adacore.com>
303
304         * profile.c (branch_prob): Move declaration of local variable.  Remove
305         obsolete ??? comment.  Expand the location explicitly instead of using
306         the LOCATION_FILE and LOCATION_LINE macros.
307
308 2011-04-06  Wei Guozhi  <carrot@google.com>
309
310         PR target/47855
311         * config/arm/arm.md (arm_cmpsi_insn): Compute attr "length".
312         (arm_cond_branch): Likewise.
313         (arm_cond_branch_reversed): Likewise.
314         (arm_jump): Likewise.
315         (push_multi): Likewise.
316         * config/arm/constraints.md (Py): New constraint.
317
318 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
319
320         PR bootstrap/48471
321         * dbxout.c (debug_nesting, symbol_queue, symbol_queue_index):
322         Move these...
323         (symbol_queue_size, DBXOUT_DECR_NESTING): ...and these...
324         (DBXOUT_DECR_NESTING_AND_RETURN): ...and this under
325         #ifdef DBX_DEBUGGING_INFO.
326
327 2011-04-05  Bernd Schmidt  <bernds@codesourcery.com>
328
329         PR bootstrap/48403
330         * haifa-sched.c (schedule_block): Increment cycle_issued_insns only
331         if old and new states differ.
332
333 2011-04-05  Joseph Myers  <joseph@codesourcery.com>
334
335         * config/m68k/m68k.c (m68k_handle_option): Don't handle OPT_m5200,
336         OPT_m5206e, OPT_m528x, OPT_m5307, OPT_m5407 and OPT_mcfv4e.
337         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS, ASM_CPU_SPEC): Don't
338         handle -m5200, -m5206e, -m528x, -m5307, -m5407 and -mcfv4e.
339         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407,
340         mcfv4e): Use Alias.
341         * config/m68k/t-mlibs (MULTILIB_MATCHES): Don't map legacy
342         ColdFire options to -mcpu= options.
343
344 2011-04-05  Jeff Law  <law@redhat.com>
345
346         * tree-ssa-threadupdate.c (determine_bb_domination_status): Always
347         check if BB is a successor of LOOP->header and return
348         NONDOMINATING if it is not, regardless of ENABLE_CHECKING.
349
350 2011-04-05  Steven Bosscher  <steven@gcc.gnu.org>
351
352         * cprop.c (struct reg_use): Remove.
353         (reg_use_table): Make an array of RTX.
354         (find_used_regs, constprop_register, local_cprop_pass,
355         bypass_block): Simplify users of reg_use_table.
356         (cprop_insn): Likewise.  Iterate if copy propagation succeeded
357         on one of the uses found by find_used_regs.
358
359 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
360
361         PR bootstrap/48469
362         * combine.c (combine_instructions): #ifdef AUTO_INC_DEC links
363         declaration.
364
365 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
366
367         * combine.c (combine_instructions) [AUTO_INC_DEC]: Declare links
368         as an rtx.
369         (try_combine) [AUTO_INC_DEC]: Declare a local link rtx.
370
371 2011-04-05  Steven Bosscher  <steven@gcc.gnu.org>
372
373         PR middle-end/48441
374         * cprop.c (one_cprop_pass): Do not mark_oprs_set of deleted insns.
375
376 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
377
378         * combine.c: Include obstack.h.
379         (struct insn_link): Define.
380         (uid_log_links): Adjust type.
381         (FOR_EACH_LOG_LINK): New macro.
382         (insn_link_obstack): Declare.
383         (alloc_insn_link): Define.
384         (create_log_links): Call it.  Use FOR_EACH_LOG_LINK and adjust
385         type of link variables.
386         (find_single_use, insn_a_feeds_b, combine_instructions): Likewise.
387         (try_combine, record_promoted_values, distribute_notes): Likewise.
388         (distribute_links): Likewise.  Tweak prototype.
389         (clear_log_links): Delete.
390         (adjust_for_new_dest): Call alloc_insn_link.
391         * Makefile.in (combine.o): Depend on $(OBSTACK_H).
392
393 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
394
395         * gcse.c (modify_mem_list): Convert to an array of VECs.
396         (canon_modify_mem_list, compute_transp): Tweak formatting.
397         (alloc_gcse_mem): Likewise.  Adjust for modify_mem_list change.
398         (load_killed_in_block_p): Likewise.
399         (record_last_mem_set_info): Likewise.
400         (clear_modify_mem_tables): Likewise.
401
402 2011-04-05  Tom de Vries  <tom@codesourcery.com>
403
404         PR middle-end/48461
405         * function.c (emit_use_return_register_into_block): Only define if
406         HAVE_return.
407
408 2011-04-05  Eric Botcazou  <ebotcazou@adacore.com>
409
410         * stor-layout.c (self_referential_size): Fix 2010-07-13 commit.
411
412 2011-04-05  Joseph Myers  <joseph@codesourcery.com>
413
414         * config/rx/rx-opts.h: New.
415         * config/rx/rx.c (rx_cpu_type): Remove.
416         (rx_handle_option): Don't assert that global structures are in
417         use.  Access variables via opts pointer.  Defer most handling of
418         OPT_mint_register_.  Use error_at.
419         (rx_option_override): Handle deferred OPT_mint_register_ here.
420         * config/rx/rx.h (enum rx_cpu_types): Move to rx-opts.h.
421         * config/rx/rx.opt (config/rx/rx-opts.h: New HeaderInclude.
422         (mcpu=): Use Enum and specifiy rx_cpu_type with Var.
423         (rx_cpu_types): New Enum and EnumValue entries.
424         (mint-register=): Use Defer and use Var accordingly.
425
426 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
427
428         * debug.h (debug_flush_symbol_queue, debug_queue_symbol): Delete.
429         (debug_free_queue, debug_nesting, symbol_queue_index): Delete.
430         * final.c (debug_flush_symbol_queue, debug_queue_symbol):
431         Move these...
432         (debug_free_queue, debug_nesting, symbol_queue_index):
433         ...and these...
434         * dbxout.c: ...to here.  Make static.
435
436 2011-04-05  Nathan Froyd  <froydnj@codesourcery.com>
437
438         * gcse.c (modify_pair): Define.  Define a VEC of it.
439         (canon_modify_mem_list): Convert to an array of VECs.
440         (free_insn_expr_list_list): Delete.
441         (clear_modify_mem_tables): Call VEC_free instead.
442         (record_last_mem_set_info): Don't modify canon_modify_mem_list.
443         (alloc_gcse_mem): Adjust for canon_modify_mem_list change.
444         (canon_list_insert, compute_transp): Likewise.
445
446 2011-04-05  Tom de Vries  <tom@codesourcery.com>
447
448         PR target/43920
449         * config/arm/arm.h (BRANCH_COST): Set to 1 for Thumb-2 when optimizing
450         for size.
451
452 2011-04-05  Tom de Vries  <tom@codesourcery.com>
453
454         PR target/43920
455         * function.c (emit_use_return_register_into_block): New function.
456         (thread_prologue_and_epilogue_insns): Use
457         emit_use_return_register_into_block.
458
459 2011-04-05  Tom de Vries  <tom@codesourcery.com>
460
461         PR target/43920
462         * cfgcleanup.c (flow_find_cross_jump): Don't count USE or CLOBBER as
463         insn.
464
465 2011-04-05  Tom de Vries  <tom@codesourcery.com>
466
467         * cfgcleanup.c (try_crossjump_bb): Remove 2 superfluous variables.
468
469 2011-04-05  Yufeng Zhang  <yufeng.zhang@arm.com>
470
471         * config/arm/arm.md (define_constants for unspec): Replace with
472         define_c_enum.
473         (define_constants for unspecv): Replace with define_c_enum.
474         * config/arm/neon.md (define_constants for unspec): Replace with
475         define_c_enum.
476
477 2011-04-04  Richard Henderson  <rth@redhat.com>
478
479         PR bootstrap/48400
480         * dwarf2out.c (output_line_info): Always emit line info from
481         at least one section.
482         (dwarf2out_init): Create text_section_line_info here ...
483         (set_cur_line_info_table): ... not here.
484
485 2011-04-04  Vladimir Makarov  <vmakarov@redhat.com>
486
487         PR target/48380
488         * ira.c (ira): Call grow_reg_equivs when fix_reg_equiv_init is
489         not called.
490
491         * ira-emit.c (emit_move_list): Update reg_equiv_init insn list.
492
493 2011-04-04  Steven Bosscher  <steven@gcc.gnu.org>
494
495         * cprop.c (struct expr): Split 'expr' field in 'dest' and 'src'.
496         (expr_equiv_p): Remove.
497         (insert_set_in_table): Look at <dest, src> pair instead of expr.
498         (hash_scan_set): Update call to insert_set_in_table.
499         (dump_hash_table): Dump <dest, src> pair.
500         (lookup_set): Simplify.  Lookup <dest, src> pair.
501         (compute_transp): Remove, fold heavily simplified code into...
502         (compute_local_properties): ...here.  Expect COMP and TRANSP
503         unconditionally.
504         (find_avail_set): Take set directly from struct expr.
505         (find_bypass-set): Likewise.
506         (bypass_block): Likewise.
507         (cprop_insn): Likewise.  Remove redundant INSN_P test.
508
509         * cprop.c (implicit_set_cond_p): Assume nothing about COND, move
510         checks on form of COND from find_implicit_sets to here.
511         (find_implicit_sets): Cleanup control flow. Split critical edges
512         if it exposes implicit sets.  Allocate/resize implicit_sets as
513         necessary.
514         (one_cprop_pass): Only delete unreachable blocks if local_cprop_pass
515         changed something.  Run df_analyze after find_implicit_sets if any
516         edges were split.  Do not allocate implicit_sets here.
517
518         * cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.
519         (gcse_obstack): Renamed to cprop_obstack.
520         (GNEW, GNEWVEC, GNEWVAR): Remove.
521         (gmalloc): Remove.
522         (alloc_hash_table): Use XNEWVAR instead of GNEWVAR.
523         (GOBNEW, GOBNEWVAR): Adjust for gcse_obstack renaming.
524         (gcse_alloc): Likewise, and rename to cprop_alloc.
525         (alloc_gcse_men, free_gcse_mem): Remove.
526         (gcse_constant_p): Rename to cprop_constant_p, and adjust all callers.
527         (compute_hash_table_work): Allocate and free reg_set_bitmap here.
528         (one_cprop_pass): Likewise. Adjust for gcse_obstack renaming.
529
530         * cprop.c (oprs_not_set_p): Remove.
531         (mark_set, mark_clobber): Remove.
532         (mark_oprs_set): Rewrite using DF_INSN_INFO_DEFS cache.
533         (reg_not_set_p): New function.
534         (find_avail_set): Use reg_not_set_p instead of oprs_not_set_p.
535         (cprop_insn): Likewise.
536         (cprop_jump): Use FOR_EACH_EDGE.
537
538 2011-04-04  Bernd Schmidt  <bernds@codesourcery.com>
539
540         PR bootstrap/48403
541         * haifa-sched.c (nonscheduled_insns_begin): New static variable.
542         (rank_for_schedule): Use scheduled_insns vector instead of
543         last_scheduled_insn.
544         (ok_for_early_queue_removal): Likewise.
545         (queue_to_ready): Search forward in nonscheduled_insns_begin if
546         we have a dbg_cnt.
547         (choose_ready): Likewise.
548         (commit_schedule): Use VEC_iterate.
549         (schedule_block): Initialize nonscheduled_insns_begin.  If we have
550         a dbg_cnt, use it and ensure the first insn is in the ready list.
551         (haifa_sched_init): Allocate scheduled_insns.
552         (sched_extend_ready_list): Don't allocate it; reserve space.
553         (haifa_sched_finish): Free it.
554
555 2011-04-04  Joseph Myers  <joseph@codesourcery.com>
556
557         * optc-gen.awk: Always remove type from Variable entry before
558         recording in var_seen.
559
560 2011-04-04  Eric Botcazou  <ebotcazou@adacore.com>
561
562         * cfghooks.c (tidy_fallthru_edges): Add ??? comment.
563         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Remove
564         call to tidy_fallthru_edges.
565
566 2011-04-04  Joseph Myers  <joseph@codesourcery.com>
567
568         * doc/options.texi (ToLower): Document.
569         * opt-functions.awk (switch_bit_fields): Initialize cl_tolower
570         field.
571         * opts-common.c (decode_cmdline_option): Handle cl_tolower.
572         * opts.h (cl_option): Add cl_tolower field.
573         * config/rx/rx.c (rx_handle_option): Use strcmp of -mcpu=
574         arguments with lowercase strings.
575         * config/rx/rx.opt (mcpu=): Add ToLower.
576         * config/rx/t-rx (MULTILIB_MATCHES): Don't handle uppercase -mcpu=
577         argument.
578
579 2011-04-04  Richard Sandiford  <richard.sandiford@linaro.org>
580
581         * config/pdp11/pdp11.h (IRA_COVER_CLASSES): Delete.
582
583 2011-04-04  Richard Sandiford  <richard.sandiford@linaro.org>
584
585         * config/vax/vax.c: Include reload.h.
586
587 2011-04-04  Anatoly Sokolov  <aesok@post.ru>
588
589         * config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Remove.
590         * config/sparc/sparc.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
591         (sparc_preferred_reload_class): New function.
592
593 2011-04-04  Jakub Jelinek  <jakub@redhat.com>
594
595         PR debug/48401
596         * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment.
597         Use PAT_VAR_LOCATION_LOC instead of INSN_VAR_LOCATION_LOC.
598
599 2011-04-03  Nathan Froyd  <froydnj@codesourcery.com>
600
601         * tree.h (struct tree_const_decl): Inherit from tree_decl_common.
602         * tree.c (initialize_tree_contains_struct): Adjust accordingly.
603
604 2011-04-03  Anatoly Sokolov  <aesok@post.ru>
605
606         * config/avr/avr.h (ASM_OUTPUT_BSS): Remove.
607         (ASM_OUTPUT_ALIGNED_BSS): Define.
608
609 2011-04-03  Michael Matz  <matz@suse.de>
610
611         * lto-streamer.h (struct lto_streamer_cache_d): Remove offsets
612         and next_slot members.
613         (lto_streamer_cache_insert, lto_streamer_cache_insert_at,
614         lto_streamer_cache_lookup, lto_streamer_cache_get): Adjust prototypes.
615         (lto_streamer_cache_append): Declare.
616         * lto-streamer.c (lto_streamer_cache_add_to_node_array): Use
617         unsigned index, remove offset parameter, ensure that we append
618         or update existing entries.
619         (lto_streamer_cache_insert_1): Use unsigned index, remove offset_p
620         parameter, update next_slot for append.
621         (lto_streamer_cache_insert): Use unsigned index, remove offset_p
622         parameter.
623         (lto_streamer_cache_insert_at): Likewise.
624         (lto_streamer_cache_append): New function.
625         (lto_streamer_cache_lookup): Use unsigned index.
626         (lto_streamer_cache_get): Likewise.
627         (lto_record_common_node): Don't test tree_node_can_be_shared.
628         (preload_common_node): Adjust call to lto_streamer_cache_insert.
629         (lto_streamer_cache_delete): Don't free offsets member.
630         * lto-streamer-out.c (eq_string_slot_node): Use memcmp.
631         (lto_output_string_with_length): Use lto_output_data_stream.
632         (lto_output_tree_header): Remove ix parameter, don't write it.
633         (lto_output_builtin_tree): Likewise.
634         (lto_write_tree): Adjust callers to above, don't track and write
635         offset, write unsigned index.
636         (output_unreferenced_globals): Don't emit all global vars.
637         (write_global_references): Use unsigned indices.
638         (lto_output_decl_state_refs): Likewise.
639         (write_symbol): Likewise.
640         * lto-streamer-in.c (lto_input_chain): Move earlier.
641         (input_function): Use unsigned index.
642         (input_alias_pairs): Don't read and then ignore all global vars.
643         (lto_materialize_tree): Remove ix_p parameter, don't read index,
644         don't pass it back, use lto_streamer_cache_append.
645         (lto_register_var_decl_in_symtab): Use unsigned index.
646         (lto_register_function_decl_in_symtab): Likewise.
647         (lto_get_pickled_tree): Don't read in or handle offset, read unsigned
648         index.
649         (lto_get_builtin_tree): Don't read index, use
650         lto_streamer_cache_append.
651         (lto_read_tree): Adjust call to lto_materialize_tree.
652
653         * ipa-inline.c (cgraph_edge_badness): Move growth calculaton,
654         don't use function calls in arguments to MIN.
655
656         * varasm.c (decl_binds_to_current_def_p): Don't check TREE_PUBLIC
657         twice.
658
659         * gimple.c (gimple_type_leader_entry): Mark deletable.
660
661 2011-04-03  Alan Modra  <amodra@gmail.com>
662
663         * dwarf2out.c (mem_loc_descriptor): Recurse on LO_SUM.
664
665 2011-04-03  Michael Matz  <matz@suse.de>
666
667         * tree.c (free_lang_data_in_decl): Zero DECL_VINDEX if it's not
668         an integer.
669         * tree.h (tree_decl_non_common.vindex): Adjust comment.
670
671 2011-04-03  Michael Matz  <matz@suse.de>
672
673         * cgraphbuild.c (record_reference): Canonicalize constructor values.
674         * gimple-fold.c (canonicalize_constructor_val): Accept being called
675         without function context.
676         * cgraphunit.c (cgraph_finalize_compilation_unit): Clear
677         current_function_decl and cfun.
678
679 2011-04-03  Michael Matz  <matz@suse.de>
680
681         * tree.c (decl_init_priority_insert): Don't create entry for
682         default priority.
683         (decl_fini_priority_insert): Ditto.
684         (fields_compatible_p, find_compatible_field): Remove.
685         * tree.h (fields_compatible_p, find_compatible_field): Remove.
686         * gimple.c (gimple_compare_field_offset): Adjust block comment.
687
688 2011-04-03  Eric Botcazou  <ebotcazou@adacore.com>
689
690         * combine.c (try_combine): Remove useless local variable.
691
692 2011-04-03  Richard Guenther  <rguenther@suse.de>
693             Ira Rosen  <ira.rosen@linaro.org>
694
695         * tree-if-conv.c (memrefs_read_or_written_unconditionally): Strip all
696         non-variable offsets and compare the remaining bases of the two
697         accesses instead of looking for exact same data-ref.
698
699 2011-04-02  Kai Tietz  <ktietz@redhat.com>
700
701         PR target/48416
702         * i386.c (ix86_function_arg_boundary): Fix printf formatter.
703
704         * i386.c (ix86_is_msabi_thiscall): New helper function.
705         (ix86_is_type_thiscall): New helper function.
706         (ix86_comp_type_attributes): Handle thiscall for method-functions
707         special.
708         (init_cumulative_args): Likewise.
709         (find_drap_reg): Likewise.
710         (ix86_static_chain): Likewise.
711         (x86_this_parameter): Likewise.
712         (x86_output_mi_thunk): Likewise.
713
714 2011-04-01  Olivier Hainque  <hainque@adacore.com>
715             Nicolas Setton  <setton@adacore.com>
716             Eric Botcazou  <ebotcazou@adacore.com>
717
718         * dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type.
719         (add_gnat_descriptive_type_attribute): New function.
720         (gen_array_type_die): Call it.
721         (gen_enumeration_type_die): Likewise.
722         (gen_struct_or_union_type_die): Likewise.
723         (modified_type_die): Likewise.
724         * langhooks.h (lang_hooks_for_types): New descriptive_type hook.
725         * langhooks-def.h (LANG_HOOKS_DESCRIPTIVE_TYPE): Default to NULL.
726         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_DESCRIPTIVE_TYPE.
727
728 2011-04-01  Jakub Jelinek  <jakub@redhat.com>
729
730         PR bootstrap/48148
731         * dwarf2out.c (resolve_addr): Don't call force_decl_die
732         if DECL_EXTERNAL has non-NULL DECL_ABSTRACT_ORIGIN.
733
734         Revert:
735         2011-03-17  Richard Guenther  <rguenther@suse.de>
736
737         PR bootstrap/48148
738         * lto-cgraph.c (input_overwrite_node): Clear the abstract
739         origin for decls in other ltrans units.
740         (input_varpool_node): Likewise.
741
742 2011-04-01  Jakub Jelinek  <jakub@redhat.com>
743
744         PR middle-end/48335
745         * expr.c (expand_assignment): Handle all possibilities
746         if TO_RTX is CONCAT.
747         * expmed.c (store_bit_field_1): Avoid trying to create invalid SUBREGs.
748         (store_split_bit_field): If SUBREG_REG (op0) or
749         op0 itself has smaller mode than word, return it
750         for offset 0 and const0_rtx for out-of-bounds stores.
751         If word is const0_rtx, skip it.
752
753 2011-04-01  Naveen H.S  <naveen.S@kpitcummins.com>
754
755         * config/h8300/h8300.c (print_operand_address): Rename to...
756         (h8300_print_operand_address): ...this. Make static. Adjust comments.
757         Call h8300_print_operand and h8300_print_operand_address instead of
758         print_operand and print_operand_address. Declare.
759         (print_operand): Renake to...
760         (h8300_print_operand): ...this. Make static. Adjust comments.
761         Call h8300_print_operand instead of print_operand. Declare.
762         (h8300_print_operand_punct_valid_p): Moved from h8300.h file.
763         (h8300_register_move_cost): Likewise.
764         (TARGET_PRINT_OPERAND_PUNCT_VALID_P, TARGET_PRINT_OPERAND
765         TARGET_PRINT_OPERAND_ADDRESS, TARGET_REGISTER_MOVE_COST): Define.
766         * config/h8300/h8300.h (PRINT_OPERAND_ADDRESS, PRINT_OPERAND
767         PRINT_OPERAND_PUNCT_VALID_P, REGISTER_MOVE_COST): Delete.
768         * config/h8300/h8300-protos.h (print_operand): Delete.
769         (print_operand_address): Delete.
770
771 2011-04-01  Richard Henderson  <rth@redhat.com>
772
773         PR 48400
774         * dwarf2out.c (dwarf2out_source_line): Disable discriminators
775         in strict mode before dwarf4.  Re-order tests to early out
776         before switching sections.
777
778 2011-04-01  Nathan Froyd  <froydnj@codesourcery.com>
779
780         * config/h8300/constraints.md: New file.
781         * config/h8300/h8300.md: Include it.  Use satisfies_constraint_J,
782         satisfies_constraint_L, and satisfies_constraint_N for peephole2s.
783         (*tst_extzv_1_n, *tstsi_variable_bit_qi): Use satisfies_constraint_U.
784         * config/h8300/predicates.md (bit_operand): Likewise.
785         (incdec_operand): Use satisfies_constraint_M and
786         satisfies_constraint_O.  Don't use C code block.
787         * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Delete.
788         * config/h8300/h8300.c (h8300_reg_class_from_letter): Delete.
789         (compute_mov_length): Use satisfies_constraint_G.
790         (fix_bit_operand): Use satisfies_constraint_U.
791         * config/h8300/h8300.h (REG_CLASS_FROM_LETTER): Delete.
792         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_L): Delete.
793         (CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O): Delete.
794         (CONST_OK_FOR_Ppositive, CONST_OK_FOR_Pnegative): Delete.
795         (CONST_OK_FOR_P, CONSTRAINT_LEN_FOR_P): Delete.
796         (CONST_OK_FOR_CONSTRAINT_P, CONST_OK_FOR_LETTER_P): Delete.
797         (CONST_DOUBLE_OK_FOR_LETTER_P): Delete.
798         (OK_FOR_Q, OK_FOR_R, OK_FOR_S, OK_FOR_T, OK_FOR_U, OK_FOR_WU): Delete.
799         (OK_FOR_W, CONSTRAINT_LEN_FOR_W, OK_FOR_Y2, OK_FOR_Y0): Delete.
800         (OK_FOR_Y, CONSTRAINT_LEN_FOR_Y, OK_FOR_Z): Delete.
801         (EXTRA_CONSTRAINT_STR, CONSTRAINT_LEN): Delete.
802         (EXTRA_MEMORY_CONSTRAINT): Delete.
803
804 2011-04-01  Andrew Pinski  <pinskia@gmail.com>
805             Michael Meissner  <meissner@linux.vnet.ibm.com>
806
807         PR target/48262
808         * config/rs6000/vector.md (movmisalign<mode>): Allow for memory
809         operands, as per the specifications.
810
811         * config/rs6000/altivec.md (vec_extract_evenv4si): Correct modes.
812         (vec_extract_evenv4sf): Ditto.
813         (vec_extract_evenv8hi): Ditto.
814         (vec_extract_evenv16qi): Ditto.
815         (vec_extract_oddv4si): Ditto.
816
817 2011-03-31  Mark Wielaard  <mjw@redhat.com>
818
819         * dwarf2out.c (dwarf2out_finish): Don't add low_pc and/or
820         high_pc attribute if the CU has no associated code. Only output
821         DW_AT_entry_pc for CU if not generating strict dwarf and
822         dwarf_version < 4.
823
824 2011-04-01  Bernd Schmidt  <bernds@codesourcery.com>
825
826         * dwarf2out.h (dwarf2out_frame_debug_init): Declare.
827         * dwarf2out.c (dwarf2out_frame_debug_init): New function, broken
828         out of ...
829         (dwarf2out_frame_debug): ... here. Don't handle a NULL argument.
830         * final.c (final_start_function): Call the new function rather
831         than using a NULL argument for dwarf2out_frame_debug.
832
833         * ifcvt.c (cond_exec_process_insns): Disallow converting a block
834         that contains the prologue.
835
836         * haifa-sched.c (queue_insn): New arg REASON.  All callers
837         changed.  Print it in debugging output.
838
839         * sched-ebb.c (schedule_ebbs): Honor the BB_DISABLE_SCHEDULE flag.
840
841         * sched-ebb.c (begin_schedule_ready): Remove second argument.
842         Split most of the code into...
843         (begin_move_insn): ... here.  New function.
844         (ebb_sched_info): Add a pointer to it.
845         * haifa-sched.c (scheduled_insns): New static variable.
846         (sched_extend_ready_list): Allocate it.
847         (schedule_block): Use it to record the order of scheduled insns.
848         Perform RTL changes to move insns only after all scheduling
849         decisions have been made.
850         * modulo-sched.c (sms_sched_haifa_sched_info): Add NULL entry for the
851         begin_move_insn field.
852         * sel-sched-ir.c (sched_sel_haifa_sched_info): Likewise.
853         * sched-int.h (struct haifa_sched_info): Remove second argument
854         from begin_schedule_ready hook.  Add new member begin_move_insn.
855         * sched-rgn.c (begin_schedule_ready): Remove second argument.
856         (rgn_const_sched_info): Add NULL entry for the begin_move_insn field.
857
858         * haifa-sched.c (prune_ready_list): New function, broken out of
859         schedule_block.
860         (schedule_block): Use it.
861
862 2011-04-01  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
863
864         * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>.
865
866 2011-04-01  Kai Tietz  <ktietz@redhat.com>
867
868         * config.gcc (*-*-mingw*): Allow as option the
869         posix threading model.
870         * config/i386/mingw32.h (SPEC_PTHREAD1,  SPEC_PTHREAD2):
871         New macros defined dependent to TARGET_USE_PTHREAD_BY_DEFAULT
872         definition.
873         (CPP_SPEC): Add pthread/no-pthread handling.
874         (LIB_SPEC): Likewise.
875         * config/i386/mingw-w64.h (CPP_SPEC):Likewise.
876         (LIB_SPEC): Likewise.
877         * config/i386/t-cygming (SHLIB_PTHREAD_CFLAG): New
878         flag to pass -pthread option for shared libgcc build.
879         (SHLIB_PTHREAD_LDFLAG): New option to pass -lpthread
880         for shared libgcc build.
881         * config/i386/t-mingw-pthread: New file.
882         * config/i386/mingw-pthread.h (TARGET_USE_PTHREAD_BY_DEFAULT):
883         New define to enable use of library pthread by default.
884         * config/i386/mingw.opt (pthread): New driver option.
885         (no-pthread): New driver option.
886         * config/i386/cygming.opt: Make sure trailing empty line is retained.
887         * config/i386/mingw-w64.opt: Likewise.
888
889 2011-04-01  Gary Funck <gary@intrepid.com>
890
891         * c-decl.c (grokdeclarator): Fix formatting.
892
893 2011-04-01  Richard Sandiford  <richard.sandiford@linaro.org>
894
895         * expr.c (emit_block_move_via_movmem): Use n_generator_args
896         instead of n_operands.
897         (set_storage_via_setmem): Likewise.
898         * optabs.c (maybe_gen_insn): Likewise.
899         * config/arm/arm.c (arm_init_neon_builtins): Likewise.
900         * config/mips/mips.c (mips_expand_builtin_compare_1): Likewise.
901         (mips_expand_builtin_direct): Likewise.
902         * config/spu/spu.c (expand_builtin_args): Likewise.
903
904 2011-04-01  Richard Sandiford  <richard.sandiford@linaro.org>
905
906         * recog.h (insn_data_d): Add n_generator_args.
907         * genoutput.c (data): Likewise.
908         (output_insn_data): Print it.
909         (max_opno, num_dups): Delete.
910         (scan_operands): Just fill in "d->operand[...]".
911         (gen_insn, gen_peephole, gen_expand, gen_split): Use get_pattern_stats.
912
913 2011-04-01  Richard Sandiford  <richard.sandiford@linaro.org>
914
915         * gensupport.h (pattern_stats): New structure.
916         * gensupport.c (get_pattern_stats_1, get_pattern_stats): New functions.
917         * genemit.c (max_opno, max_dupno, max_scratch_opno): Delete.
918         (max_operand_1, max_operand_vec): Delete.
919         (gen_insn, gen_expand, gen_split): Use get_pattern_stats.
920
921 2011-03-31  Nathan Froyd  <froydnj@codesourcery.com>
922
923         * emit-rtl.c (emit_pattern_after_setloc): New function.
924         (emit_insn_after_setloc, emit_jump_insn_after_setloc): Call it.
925         (emit_call_insn_after_setloc, emit_debug_insn_after_setloc): Likewise.
926         (emit_pattern_after): New function.
927         (emit_insn_after, emit_jump_insn_after): Call it.
928         (emit_call_insn_after, emit_debug_insn_after): Likewise.
929         (emit_pattern_before_setloc): New function.
930         (emit_insn_before_setloc, emit_jump_insn_before_setloc): Call it.
931         (emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
932         Likewise.
933         (emit_pattern_before): New function.
934         (emit_insn_before, emit_jump_insn_before): Call it.
935         (emit_call_insn_before, emit_debug_insn_before): Likewise.
936
937 2011-03-31  Richard Henderson  <rth@redhat.com>
938
939         * dwarf2out.c (dw_separate_line_info_ref): Remove.
940         (dw_separate_line_info_entry): Remove.
941         (enum dw_line_info_opcode): New.
942         (dw_line_info_entry): Use it.
943         (dw_line_info_table, dw_line_info_table_p): New.
944         (DWARF_LINE_OPCODE_BASE): Include dwarf3 opcodes.
945         (line_info_table, line_info_label_num): Remove.
946         (line_info_table_in_use): Remove.
947         (separate_line_info_table): Remove.
948         (separate_line_info_table_allocated): Remove.
949         (separate_line_info_table_in_use): Remove.
950         (LINE_INFO_TABLE_INCREMENT): Remove.
951         (line_info_label_num): New.
952         (cur_line_info_table): New.
953         (text_section_line_info, cold_text_section_line_info): New.
954         (separate_line_info): New.
955         (SEPARATE_LINE_CODE_LABEL): Remove.
956         (print_dwarf_line_table): Remove.
957         (debug_dwarf): Don't dump it.
958         (output_one_line_info_table): New.
959         (output_line_info): Use it.
960         (new_line_info_table): New.
961         (set_cur_line_info_table): New.
962         (dwarf2out_switch_text_section): Use it.
963         (dwarf2out_begin_function): Likewise.
964         (push_dw_line_info_entry): New.
965         (dwarf2out_source_line): Rewrite for new line info tables.
966         (dwarf2out_init): Remove dead initailizations.
967
968 2011-03-31  Joseph Myers  <joseph@codesourcery.com>
969
970         * opts.h (cl_option): Add comments to fields.  Add bit-fields for
971         various flags.
972         (CL_SEPARATE_NARGS_SHIFT, CL_SEPARATE_NARGS_MASK,
973         CL_SEPARATE_ALIAS, CL_NO_DRIVER_ARG, CL_REJECT_DRIVER, CL_SAVE,
974         CL_DISABLED, CL_REPOR, CL_REJECT_NEGATIVE, CL_MISSING_OK,
975         CL_UINTEGER, CL_NEGATIVE_ALIAS): Remove.
976         (CL_JOINED, CL_SEPARATE, CL_UNDOCUMENTED): Update bit positions.
977         * opt-functions.awk (flag_init, switch_bit_fields): New.
978         (switch_flags): Don't handle flags moved to bit-fields.  Don't
979         generate CL_MISSING_OK or CL_SAVE.
980         * optc-gen.awk: Update to generate bit-field output as well as
981         flags field.
982         * gcc.c (driver_wrong_lang_callback): Use cl_reject_driver
983         bit-field instead of CL_REJECT_DRIVER flag.
984         * opts-common.c (generate_canonical_option,
985         decode_cmdline_option): Use bit-fields instead of CL_* flags.
986         * opts.c (maybe_default_option): Use cl_reject_negative bit-field
987         instead of CL_REJECT_NEGATIVE flag.
988         * toplev.c (print_switch_values): Use cl_report bit-field instead
989         of CL_REPORT flag.
990
991 2011-03-31  Eric Botcazou  <ebotcazou@adacore.com>
992
993         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <ARRAY_REF>: Drop
994         a zero minimum index only if it is redundant.
995
996 2011-03-31  Vladimir Makarov  <vmakarov@redhat.com>
997
998         PR rtl-optimization/48381
999         * ira-color.c (assign_hard_reg): Use hard reg set intersection
1000         instead of ira_class_hard_reg_index for calculating conflicting
1001         hard registers.
1002
1003 2011-03-31  Steven Bosscher  <steven@gcc.gnu.org>
1004
1005         * cprop.c: Clean up hash table building.
1006         (reg_avail_info): Remove.
1007         (oprs_available_p): Remove.
1008         (record_last_reg_set_info): Remove.
1009         (record_last_set_info): Remove.
1010         (reg_available_p): New function.
1011         (gcse_constant_p): Do not treat unfolded conditions as constants.
1012         (make_set_regs_unavailable): New function.
1013         (hash_scan_set): Simplify with new reg_available_p.
1014         (compute_hash_table_work): Traverse insns stream only once.
1015         Do not compute reg_avail_info. Traverse insns in reverse order.
1016         Record implicit sets after recording explicit sets from the block.
1017
1018 2011-03-31  Michael Matz  <matz@suse.de>
1019
1020         * builtins.c (build_va_arg_indirect_ref): Use build_simple_mem_ref_loc.
1021
1022 2011-03-31  Anatoly Sokolov  <aesok@post.ru>
1023
1024         * config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Remove macro.
1025         * config/h8300/h8300-protos.h (h8300_get_index): Remove.
1026         * config/h8300/h8300.c (TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
1027         (h8300_mode_dependent_address_p): New function.
1028         (h8300_get_index): Make static.
1029
1030 2011-03-31  Jeff Law  <law@redhat.com>
1031
1032         * reload1.c (elimination_effects): Fix typo in recent change.
1033
1034         * tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid
1035         typo potentially leading to null pointer dereference.
1036
1037         * caller-save.c (new_saved_hard_reg): Eliminate return value.
1038         (setup_save_areas): Corresponding changes to avoid useless
1039         assignments.
1040
1041         * jump.c (reversed_comparison_code_parts): Avoid successive return
1042         statements when REVERSE_CONDITION is defined.
1043
1044         * expr.c (expand_assignment): Avoid useless assignments.
1045         (expand_expr_real_1): Likewise.
1046         (expand_expr_real_2): Avoid useless statements.
1047
1048         * tree-ssa-phiopt.c (minmax_replacement): Avoid useless statement.
1049
1050         * cfgexpand.c (expand_gimple_basic_block): Avoid useless assignment.
1051
1052         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Avoid useless
1053         statements.
1054
1055         * stmt.c (expand_expr_stmt): Avoid useless assignment.
1056
1057 2011-03-31  Joseph Myers  <joseph@codesourcery.com>
1058
1059         PR target/47109
1060         * doc/tm.texi.in (TARGET_VERSION): Remove.
1061         * doc/tm.texi: Regenerate.
1062         * system.h (TARGET_VERSION, MACHINE_TYPE): Poison.
1063         * collect2.c (main): Don't use TARGET_VERSION.
1064         * mips-tdump.c (main): Don't use TARGET_VERSION.
1065         * mips-tfile.c (main): Don't use TARGET_VERSION.
1066         * config.gcc (powerpc-wrs-vxworksae): Don't use rs6000/vxworksae.h.
1067         * config/rs6000/vxworksae.h: Remove.
1068         * config/alpha/alpha.h (TARGET_VERSION): Remove.
1069         * config/alpha/freebsd.h (TARGET_VERSION): Remove.
1070         * config/alpha/linux-elf.h (TARGET_VERSION): Remove.
1071         * config/alpha/netbsd.h (TARGET_VERSION): Remove.
1072         * config/alpha/vms.h (TARGET_NAME, TARGET_VERSION): Remove.
1073         * config/arm/arm.h (TARGET_VERSION): Remove.
1074         * config/arm/coff.h (TARGET_VERSION): Remove.
1075         * config/arm/ecos-elf.h (TARGET_VERSION): Remove.
1076         * config/arm/elf.h (TARGET_VERSION): Remove.
1077         * config/arm/freebsd.h (TARGET_VERSION): Remove.
1078         * config/arm/linux-elf.h (TARGET_VERSION): Remove.
1079         * config/arm/netbsd-elf.h (TARGET_VERSION): Remove.
1080         * config/arm/pe.h (TARGET_VERSION): Remove.
1081         * config/arm/rtems-elf.h (TARGET_VERSION): Remove.
1082         * config/arm/semi.h (TARGET_VERSION): Remove.
1083         * config/arm/uclinux-elf.h (TARGET_VERSION): Remove.
1084         * config/arm/unknown-elf.h (TARGET_VERSION): Remove.
1085         * config/arm/vxworks.h (TARGET_VERSION): Remove.
1086         * config/avr/avr.h (TARGET_VERSION): Remove.
1087         * config/bfin/bfin.h (TARGET_VERSION): Remove.
1088         * config/fr30/fr30.h (TARGET_VERSION): Remove.
1089         * config/frv/frv.h (TARGET_VERSION): Remove.
1090         * config/h8300/h8300.h (TARGET_VERSION): Remove.
1091         * config/i386/cygwin.h (TARGET_VERSION): Remove.
1092         * config/i386/darwin.h (TARGET_VERSION): Remove.
1093         * config/i386/darwin64.h (TARGET_VERSION): Remove.
1094         * config/i386/djgpp.h (TARGET_VERSION): Remove.
1095         * config/i386/freebsd.h (TARGET_VERSION): Remove.
1096         * config/i386/freebsd64.h (TARGET_VERSION): Remove.
1097         * config/i386/gnu.h (TARGET_VERSION): Remove.
1098         * config/i386/i386-interix.h (TARGET_VERSION): Remove.
1099         * config/i386/i386elf.h (TARGET_VERSION): Remove.
1100         * config/i386/linux.h (TARGET_VERSION): Remove.
1101         * config/i386/linux64.h (TARGET_VERSION): Remove.
1102         * config/i386/lynx.h (TARGET_VERSION): Remove.
1103         * config/i386/mingw32.h (TARGET_VERSION): Remove.
1104         * config/i386/netbsd-elf.h (TARGET_VERSION): Remove.
1105         * config/i386/netbsd64.h (TARGET_VERSION): Remove.
1106         * config/i386/netware.h (TARGET_VERSION): Remove.
1107         * config/i386/nto.h (TARGET_VERSION): Remove.
1108         * config/i386/openbsd.h (TARGET_VERSION): Remove.
1109         * config/i386/vxworks.h (TARGET_VERSION): Remove.
1110         * config/ia64/elf.h (TARGET_VERSION): Remove.
1111         * config/ia64/freebsd.h (TARGET_VERSION): Remove.
1112         * config/ia64/hpux.h (TARGET_VERSION): Remove.
1113         * config/ia64/linux.h (TARGET_VERSION): Remove.
1114         * config/ia64/vms.h (TARGET_NAME, TARGET_VERSION): Remove.
1115         * config/iq2000/iq2000.h (IQ2000_VERSION, MACHINE_TYPE,
1116         TARGET_VERSION_INTERNAL, TARGET_VERSION): Remove.
1117         * config/lm32/lm32.h (TARGET_VERSION): Remove.
1118         * config/lm32/uclinux-elf.h (TARGET_VERSION): Remove.
1119         * config/m32c/m32c.h (TARGET_VERSION): Remove.
1120         * config/m32r/linux.h (LINUX_DEFAULT_ELF, TARGET_VERSION): Remove.
1121         * config/m32r/m32r.h (TARGET_VERSION): Remove.
1122         * config/m68k/linux.h (TARGET_VERSION): Remove.
1123         * config/m68k/m68k.h (TARGET_VERSION): Remove.
1124         * config/m68k/netbsd-elf.h (TARGET_VERSION): Remove.
1125         * config/m68k/uclinux.h (TARGET_VERSION): Remove.
1126         * config/mcore/mcore-elf.h (TARGET_VERSION): Remove.
1127         * config/mep/mep.h (TARGET_VERSION): Remove.
1128         * config/microblaze/microblaze.h (MICROBLAZE_VERSION,
1129         MACHINE_TYPE, TARGET_VERSION_INTERNAL, TARGET_VERSION): Remove.
1130         * config/mips/iris6.h (MACHINE_TYPE): Remove.
1131         * config/mips/linux.h (TARGET_VERSION): Remove.
1132         * config/mips/netbsd.h (MACHINE_TYPE): Remove.
1133         * config/mips/vxworks.h (TARGET_VERSION): Remove.
1134         * config/mmix/mmix.h (TARGET_VERSION): Remove.
1135         * config/mn10300/linux.h (TARGET_VERSION): Remove.
1136         * config/mn10300/mn10300.h (TARGET_VERSION): Remove.
1137         * config/pa/pa.h (TARGET_VERSION): Remove.
1138         * config/pdp11/pdp11.h (TARGET_VERSION): Remove.
1139         * config/picochip/picochip.h (TARGET_VERSION): Remove.
1140         * config/rs6000/aix.h (TARGET_VERSION): Remove.
1141         * config/rs6000/darwin.h (TARGET_VERSION): Remove.
1142         * config/rs6000/darwin64.h (TARGET_VERSION): Remove.
1143         * config/rs6000/eabi.h (TARGET_VERSION): Remove.
1144         * config/rs6000/eabialtivec.h (TARGET_VERSION): Remove.
1145         * config/rs6000/eabisim.h (TARGET_VERSION): Remove.
1146         * config/rs6000/eabispe.h (TARGET_VERSION): Remove.
1147         * config/rs6000/freebsd.h (TARGET_VERSION): Remove.
1148         * config/rs6000/linux.h (TARGET_VERSION): Remove.
1149         * config/rs6000/linux64.h (TARGET_VERSION): Remove.
1150         * config/rs6000/linuxaltivec.h (TARGET_VERSION): Remove.
1151         * config/rs6000/linuxspe.h (TARGET_VERSION): Remove.
1152         * config/rs6000/lynx.h (TARGET_VERSION): Remove.
1153         * config/rs6000/netbsd.h (TARGET_VERSION): Remove.
1154         * config/rs6000/sysv4.h (TARGET_VERSION): Remove.
1155         * config/rs6000/vxworks.h (TARGET_VERSION): Remove.
1156         * config/s390/linux.h (TARGET_VERSION): Remove.
1157         * config/s390/s390.h (TARGET_VERSION): Remove.
1158         * config/s390/tpf.h (TARGET_VERSION): Remove.
1159         * config/score/score.h (TARGET_VERSION): Remove.
1160         * config/sh/linux.h (TARGET_VERSION): Remove.
1161         * config/sh/netbsd-elf.h (TARGET_VERSION_ENDIAN,
1162         TARGET_VERSION_CPU, TARGET_VERSION): Remove.
1163         * config/sh/sh.h (TARGET_VERSION): Remove.
1164         * config/sh/sh64.h (TARGET_VERSION): Remove.
1165         * config/sh/superh.h (TARGET_VERSION): Remove.
1166         * config/sh/vxworks.h (TARGET_VERSION): Remove.
1167         * config/sparc/freebsd.h (TARGET_VERSION): Remove.
1168         * config/sparc/linux.h (TARGET_VERSION): Remove.
1169         * config/sparc/linux64.h (TARGET_VERSION): Remove.
1170         * config/sparc/netbsd-elf.h (TARGET_VERSION, TARGET_NAME64,
1171         TARGET_NAME32, TARGET_NAME): Remove.
1172         * config/sparc/openbsd64.h (TARGET_VERSION): Remove.
1173         * config/sparc/sp-elf.h (TARGET_VERSION): Remove.
1174         * config/sparc/sp64-elf.h (TARGET_VERSION): Remove.
1175         * config/sparc/sysv4.h (TARGET_VERSION): Remove.
1176         * config/sparc/vxworks.h (TARGET_VERSION): Remove.
1177         * config/spu/spu.h (TARGET_VERSION): Remove.
1178         * config/stormy16/stormy16.h (TARGET_VERSION): Remove.
1179         * config/v850/v850.h (TARGET_VERSION): Remove.
1180         * config/vax/linux.h (TARGET_VERSION): Remove.
1181         * config/vax/vax.h (TARGET_NAME, TARGET_VERSION): Remove.
1182         * config/xtensa/elf.h (TARGET_VERSION): Remove.
1183         * config/xtensa/linux.h (TARGET_VERSION): Remove.
1184
1185 2011-03-31  Eric Botcazou  <ebotcazou@adacore.com>
1186
1187         PR target/48142
1188         * config/i386/i386.c (ix86_adjust_stack_and_probe): Differentiate
1189         frame-related from frame-unrelated adjustments to the stack pointer.
1190
1191 2011-03-31  Jakub Jelinek  <jakub@redhat.com>
1192
1193         * common.opt (fdebug-types-section): Move earlier.
1194         * doc/invoke.texi: Fix up -fno-debug-types-section documentation.
1195
1196 2011-03-31  Andreas Tobler  <andreast@fgznet.ch>
1197
1198         * config/rs6000/rs6000.c (rs6000_handle_option): Remove unused isel
1199         var.
1200
1201 2011-03-30  Nathan Froyd  <froydnj@codesourcery.com>
1202
1203         * tree.h (CASE_CHAIN): Define.
1204         * tree-cfg.c (edge_to_cases_cleanup, get_cases_for_edge): Use it.
1205         (gimple_redirect_edge_and_branch): Likewise.
1206
1207 2011-03-30  Vladimir Makarov  <vmakarov@redhat.com>
1208
1209         PR middle-end/48367
1210         * ira-costs.c (find_costs_and_classes): Fix a typo in i_mem_cost
1211         calculation.
1212
1213 2011-03-30  Jeff Law  <law@redhat.com>
1214
1215         * PR bootstrap/48371
1216         * reload1.c (reload): Fix botch in last change.
1217
1218         * reload.h (struct reload): Fix typo introduced in last change.
1219
1220 2011-03-30  Joseph Myers  <joseph@codesourcery.com>
1221
1222         * config/arm/arm.opt (mhard-float, msoft-float): Mark
1223         Undocumented.  Remove help text.
1224         * doc/invoke.texi (ARM Options): Don't document -msoft-float and
1225         -mhard-float.
1226
1227 2011-03-30  Joseph Myers  <joseph@codesourcery.com>
1228
1229         * doc/options.texi (NegativeAlias): Document.
1230         (Alias): Mention NegativeAlias.
1231         * opt-functions.awk: Handle NegativeAlias.
1232         * optc-gen.awk: Disallow NegativeAlias with multiple Alias arguments.
1233         * opts-common.c (decode_cmdline_option): Handle CL_NEGATIVE_ALIAS.
1234         * opts.h (CL_NEGATIVE_ALIAS): Define.
1235         * config/rs6000/rs6000.c (rs6000_parse_yes_no_option): Remove.
1236         (rs6000_handle_option): Don't handle OPT_mvrsave_, OPT_misel_ and
1237         OPT_mspe_.
1238         * config/rs6000/rs6000.opt (mvrsave=, misel=, mspe=): Replace with
1239         Alias entries.
1240         * config/rs6000/t-spe (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
1241         mno-spe and mno-isel instead of mspe=no and -misel=no.
1242
1243 2011-03-29  Mark Wielaard  <mjw@redhat.com>
1244
1245         * common.opt (fdebug-types-section): New flag.
1246         * doc/invoke.texi: Document new -fno-debug-types-section flag.
1247         * dwarf2out.c (use_debug_types): New define.
1248         (struct die_struct): Mark die_id with GTY desc use_debug_types.
1249         (print_die): Guard output of type unit signatures using
1250         use_debug_types.
1251         (build_abbrev_table): Replace assert of dwarf_version >= 4
1252         with assert on use_debug_types.
1253         (size_of_die): Likewise.
1254         (unmark_dies): Likewise.
1255         (value_format): Decide AT_ref_external form on use_debug_types.
1256         (output_die): Replace dwarf_version version check guard with
1257         use_debug_types where appropriate.
1258         (modified_type_die): Likewise.
1259         (gen_reference_type_die): Likewise.
1260         (dwarf2out_start_source_file): Likewise.
1261         (dwarf2out_end_source_file): Likewise.
1262         (prune_unused_types_walk_attribs): Likewise.
1263         (dwarf2out_finish): Likewise.
1264
1265 2011-03-30  Vladimir Makarov  <vmakarov@redhat.com>
1266
1267         * ira-color.c (ira_assign_hard_reg): Use only one variable 'mode'.
1268
1269 2011-03-30  Richard Sandiford  <richard.sandiford@linaro.org>
1270
1271         PR rtl-optimization/48332
1272         * optabs.c (expand_binop_directly): Set xmodeN to the target-mandated
1273         mode of input operand N and modeN to its actual mode.
1274
1275 2011-03-30  Jeff Law  <law@redhat.com>
1276
1277         * reload.h (reg_equiv_constant): Move into new structure reg_equivs,
1278         define accessor macro.
1279         (reg_equiv_invariant, reg_equiv_memory_loc): Likewise.
1280         (reg_equiv_address, reg_equiv_mem, reg_equiv_alt_mem_list): Likewise.
1281         (reg_equiv_init): Likewise.
1282         (reg_equivs_size): New variable.
1283         (reg_equiv_init_size): Remove.
1284         (allocate_initial_values): Move prototype to here from....
1285         * integrate.h (allocate_initial_values): Remove prototype.
1286         * integrate.c: Include reload.h.
1287         (allocate_initial_values): Corresponding changes.
1288         * ira.c (find_reg_equiv_invariant_cost): Corresponding changes.
1289         (fix_reg_equiv_init, no_equiv): Corresponding changes.
1290         (update_equiv_regs): Corresponding changes.
1291         (ira): Corresponding changes.
1292         * reload.c (push_reg_equiv_alt_mem): Corresponding changes.
1293         (push_secondary_reload): Corresponding changes.
1294         (push_reload, find_reloads, find_reloads_toplev): Corresponding changes.
1295         (make_memloc, find_reloads_address): Corresponding changes.
1296         (subst_reg_equivs, subst_indexed_address): Corresponding changes.
1297         (find_reloads_address_1): Corresponding changes.
1298         (find_reloads_subreg_address, subst_reloads): Corresponding changes.
1299         (refers_to_regno_for_reload_p): Corresponding changes.
1300         (reg_overlap_mentioned_for_reload_p): Corresponding changes.
1301         (refers_to_mem_for_reload_p, find_equiv_reg): Corresponding changes.
1302         * reload1.c: Include ggc.h.
1303         (grow_reg_equivs): New function.
1304         (replace_pseudos_in, reload): Corresponding changes.
1305         (calculate_needs_all_insns, alter_regs): Corresponding changes.
1306         (eliminate_regs_1, elimination_effects): Corresponding changes.
1307         (emit_input_reload_insns, emit_output_reload_insns): Likewise.
1308         (delete_output_reload): Likewise.
1309         * caller-save.c (mark_referenced_regs): Corresponding changes.
1310         * alpha/alpha.c (resolve_reload_operand): Corresponding changes.
1311         * frv/predicates.md (frv_load_operand): Corresponding changes.
1312         * microblaze/microblaze.c (double_memory_operand): Corresponding
1313         changes.
1314         * avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Corresponding changes.
1315         * xtensa/xtensa.c (fixup_subreg_mem): Corresponding changes.
1316         * mn10300/mn10300.c (mn10300_secondary_reload): Corresponding changes.
1317         * m68k/m68k.c (emit_move_sequence): Corresponding changes.
1318         * arm/arm.c (arm_reload_in_hi, arm_reload_out_hi): Corresponding
1319         changes.
1320         * pa/pa.c (emit_move_sequence): Corresponding changes.
1321         * vax/vax.c (nonindexed_address_p): Corresponding changes.
1322
1323 2011-03-30  Richard Sandiford  <richard.sandiford@linaro.org>
1324
1325         PR target/47551
1326         * config/arm/arm.c (coproc_secondary_reload_class): Handle
1327         structure modes.  Don't check neon_vector_mem_operand for
1328         vector or structure modes.
1329
1330 2011-03-30  Richard Sandiford  <richard.sandiford@linaro.org>
1331             Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
1332
1333         PR target/43590
1334         * config/arm/neon.md (neon_vld3qa<mode>, neon_vld4qa<mode>): Remove
1335         operand 1 and reshuffle the operands to match.
1336         (neon_vld3<mode>, neon_vld4<mode>): Update accordingly.
1337
1338 2011-03-30  Christian Schüler  <cschueler@gmx.de>
1339
1340         PR driver/48208
1341         * config/c.opt (F): Added 'Driver' to -F option.
1342
1343         PR driver/48260
1344         * config/darwin-driver.c (darwin_driver_init): Add '-arch' to
1345           handler function.
1346         * config/darwin.opt: Added '-arch' option.
1347
1348 2011-03-30  Nick Clifton  <nickc@redhat.com>
1349
1350         * config/rx/rx.md: Add peepholes and patterns to combine
1351         extending loads and simple arithmetic instructions.
1352         * config/rx/rx.h (ADJUST_INSN_LENGTH): Define.
1353         * config/rx/rx-protos.h (rx_adjust_insn_length): Prototype.
1354         * config/rx/rx.c (rx_is_legitimate_address): Allow QI and HI
1355         modes to use pre-decrement and post-increment addressing.
1356         (rx_is_restricted_memory_address): Add range checking of REG+INT
1357         addresses.
1358         (rx_print_operand): Add support for %Q.  Fix handling of %Q.
1359         (rx_memory_move_cost): Adjust cost of stores.
1360         (rx_adjust_insn_length): New function.
1361
1362 2011-03-30  Jakub Jelinek  <jakub@redhat.com>
1363
1364         PR c/48305
1365         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Make sure
1366         arg10/arg11 in (X ^ Y) == (Z ^ W) are always fold converted to
1367         matching arg00/arg01 types.
1368
1369 2011-03-30  Eric Botcazou  <ebotcazou@adacore.com>
1370
1371         * cfglayout.c (insn_locators_alloc): Initialize curr_location and
1372         last_location to UNKNOWN_LOCATION.
1373
1374 2011-03-30  H.J. Lu  <hongjiu.lu@intel.com>
1375
1376         PR target/48349
1377         * config/i386/i386.h (REG_CLASS_CONTENTS): Fix a typo in
1378         FLOAT_SSE_REGS.
1379
1380 2011-03-30  Joseph Myers  <joseph@codesourcery.com>
1381             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1382
1383         PR bootstrap/48337
1384         * config/sparc/sparc.opt (sparc_cpu_and_features): Add
1385         Init(PROCESSOR_V7).
1386         (sparc_cpu): Likewise.
1387         * config/sparc/sparc.c (sparc_option_override): Replace 0 by
1388         PROCESSOR_V7.
1389
1390 2011-03-29  Vladimir Makarov  <vmakarov@redhat.com>
1391
1392         PR target/48336
1393         PR middle-end/48342
1394         PR rtl-optimization/48345
1395         * ira-color.c (setup_conflict_profitable_regs): Exclude prohibited
1396         hard regs for given mode from profitable regs when doing secondary
1397         allocation.
1398
1399 2011-03-29  Jeff Law  <law@redhat.com>
1400
1401         PR bootstrap/48327
1402         * tree-ssa-threadupdate.c (struct redirection_data): Remove
1403         do_not_duplicate field.
1404         (lookup_redirection_data): Corresponding changes.
1405         (create_duplicates): Always create a template block.
1406         (redirect_edges): Remove code which reused the original block
1407         when it was going to become unreachable code.
1408         (thread_block): Don't set do_not_duplicate field.
1409
1410 2011-03-29  Joseph Myers  <joseph@codesourcery.com>
1411
1412         * lto-opts.c (register_user_option_p, lto_register_user_option):
1413         Make type argument unsigned.
1414         * lto-streamer.h (lto_register_user_option): Make type argument
1415         unsigned.
1416         * opth-gen.awk: Make CL_* macros unsigned.
1417         * opts-common.c (find_opt): Make lang_mask argument unsigned.
1418         * opts.h (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_DRIVER,
1419         CL_TARGET, CL_COMMON, CL_SEPARATE_NARGS_MASK, CL_SEPARATE_ALIAS,
1420         CL_NO_DRIVER_ARG, CL_REJECT_DRIVER, CL_SAVE, CL_DISABLED,
1421         CL_REPORT, CL_JOINED, CL_SEPARATE, CL_REJECT_NEGATIVE,
1422         CL_MISSING_OK, CL_UINTEGER, CL_UNDOCUMENTED): Make unsigned.
1423         (find_opt): Make lang_mask argument unsigned.
1424
1425 2011-03-29  Vladimir Makarov  <vmakarov@redhat.com>
1426
1427         PR rtl-optimization/48331
1428         PR rtl-optimization/48334
1429         * ira-color.c (color_allocnos): Call setup_profitable_hard_regs
1430         for any used algorithm.
1431
1432 2011-03-29  Vladimir Makarov  <vmakarov@redhat.com>
1433
1434         * ira-conflicts.c (build_object_conflicts): Add unused attribute
1435         to parent_max.
1436
1437 2011-03-29  Uros Bizjak  <ubizjak@gmail.com>
1438
1439         * config/alpha/alpha.c (alpha_sr_alias_set): Don't define.
1440         (alpha_option_override): Don't set alpha_sr_alias_set.
1441         (emit_frame_store_1): Use gen_frame_mem rather than calling
1442         set_mem_alias_set.
1443         (alpha_expand_epilogue): Ditto.
1444
1445 2011-03-29  Ira Rosen  <ira.rosen@linaro.org>
1446
1447         PR tree-optimization/48290
1448         * tree-vect-loop.c (vect_analyze_loop_operations): In outer loop
1449         vectorization, check that relevant phis in the basic block after
1450         the inner loop are really inner loop's exit phis.
1451
1452 2011-03-29  Richard Sandiford  <richard.sandiford@linaro.org>
1453
1454         PR debug/48190
1455         * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
1456         (cached_dw_loc_list_def): New structure.
1457         (cached_dw_loc_list): New typedef.
1458         (cached_dw_loc_list_table): New variable.
1459         (cached_dw_loc_list_table_hash): New function.
1460         (cached_dw_loc_list_table_eq): Likewise.
1461         (add_location_or_const_value_attribute): Take a bool cache_p.
1462         Cache the list when the parameter is true.
1463         (gen_formal_parameter_die): Update caller.
1464         (gen_variable_die): Likewise.
1465         (dwarf2out_finish): Likewise.
1466         (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
1467         while generating debug info for the decl.
1468         (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
1469         (dwarf2out_init): Initialize cached_dw_loc_list_table.
1470         (resolve_addr): Cache the result of resolving a chain of
1471         location lists.
1472
1473 2011-03-28  Vladimir Makarov  <vmakarov@redhat.com>
1474
1475         * ira-color.c (update_left_conflict_sizes_p): Don't assume that
1476         conflict object hard regset nodes have intersecting hard reg sets.
1477
1478         * regmove.c (regmove_optimize): Move ira_set_pseudo_classes call
1479         after regstat_init_n_sets_and_refs.
1480
1481         * ira.c: Add more comments at the top.
1482         (setup_stack_reg_pressure_class, setup_pressure_classes):
1483         Add comments how we compute the register pressure classes.
1484         (setup_allocno_and_important_classes): Add more comments.
1485         (setup_class_translate_array, reorder_important_classes)
1486         (setup_reg_class_relations): Add comments.
1487
1488         * ira-emit.c: Add 2011 to the Copyright line.  Add comments at the
1489         start of the file.
1490
1491         * ira-color.c: Add 2011 to the Copyright line.
1492         (assign_hard_reg):  Add more comments.
1493         (improve_allocation): Ditto.
1494
1495         * ira-costs.c: Add 2011 to the Copyright line.
1496         (setup_cost_classes, setup_regno_cost_classes_by_aclass): Add more
1497         comments.
1498         (setup_regno_cost_classes_by_mode): Ditto.
1499
1500         Initial patches from ira-improv branch:
1501
1502         2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
1503
1504         * ira-build.c: (ira_create_object): Remove initialization of
1505         OBJECT_PROFITABLE_HARD_REGS.  Initialize OBJECT_ADD_DATA.
1506         (ira_create_allocno): Remove initialization of
1507         ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
1508         ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_CHILD_RENAMED_P,
1509         ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
1510         ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO,
1511         ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO.
1512         Initialize ALLOCNO_ADD_DATA.
1513         (copy_info_to_removed_store_destinations): Use ALLOCNO_EMIT_DATA
1514         and allocno_emit_reg instead of ALLOCNO_MEM_OPTIMIZED_DEST_P and
1515         ALLOCNO_REG.
1516         (ira_flattening): Ditto.  Use ALLOCNO_EMIT_DATA instead of
1517         ALLOCNO_MEM_OPTIMIZED_DEST and ALLOCNO_SOMEWHERE_RENAMED_P.
1518
1519         * ira.c (ira_reallocate): Remove.
1520         (setup_pressure_classes): Call
1521         ira_init_register_move_cost_if_necessary.  Use
1522         ira_register_move_cost instead of ira_get_register_move_cost.
1523         (setup_allocno_assignment_flags): Use ALLOCNO_EMIT_DATA.
1524         (ira): Call ira_initiate_emit_data and ira_finish_emit_data.
1525
1526         * ira-color.c: Use ALLOCNO_COLOR_DATA instead of
1527         ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
1528         ALLOCNO_AVAILABLE_REGS_NUM, ALLOCNO_NEXT_BUCKET_ALLOCNO,
1529         ALLOCNO_PREV_BUCKET_ALLOCNO. ALLOCNO_TEMP. Use OBJECT_COLOR_DATA
1530         instead of OBJECT_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE,
1531         OBJECT_HARD_REGS_SUBNODES_START, OBJECT_HARD_REGS_SUBNODES_NUM.
1532         Fix formatting.
1533         (object_hard_regs_t, object_hard_regs_node_t): Move from ira-int.h.
1534         (struct object_hard_regs, struct object_hard_regs_node): Ditto.
1535         (struct allocno_color_data): New.
1536         (allocno_color_data_t): New typedef.
1537         (allocno_color_data): New definition.
1538         (ALLOCNO_COLOR_DATA): New macro.
1539         (struct object_color_data): New.
1540         (object_color_data_t): New typedef.
1541         (object_color_data): New definition.
1542         (OBJECT_COLOR_DATA): New macro.
1543         (update_copy_costs, calculate_allocno_spill_cost): Call
1544         ira_init_register_move_cost_if_necessary.  Use
1545         ira_register_move_cost instead of ira_get_register_move_cost.
1546         (move_spill_restore, update_curr_costs): Ditto.
1547         (allocno_spill_priority): Make it inline.
1548         (color_pass): Allocate and free allocno_color_dat and object_color_data.
1549         (struct coalesce_data, coalesce_data_t): New.
1550         (allocno_coalesce_data): New definition.
1551         (ALLOCNO_COALESCE_DATA): New macro.
1552         (merge_allocnos, coalesced_allocno_conflict_p): Use
1553         ALLOCNO_COALESCED_DATA instead of ALLOCNO_FIRST_COALESCED_ALLOCNO,
1554         ALLOCNO_NEXT_COALESCED_ALLOCNO, ALLOCNO_TEMP.
1555         (coalesce_allocnos): Ditto.
1556         (setup_coalesced_allocno_costs_and_nums): Ditto.
1557         (collect_spilled_coalesced_allocnos): Ditto.
1558         (slot_coalesced_allocno_live_ranges_intersect_p): Ditto.
1559         (setup_slot_coalesced_allocno_live_ranges): Ditto.
1560         (coalesce_spill_slots): Ditto.
1561         (ira_sort_regnos_for_alter_reg): Ditto.  Allocate, initialize and
1562         free allocno_coalesce_data.
1563
1564         * ira-conflicts.c: Fix formatting.
1565         (process_regs_for_copy): Call
1566         ira_init_register_move_cost_if_necessary.  Use
1567         ira_register_move_cost instead of ira_get_register_move_cost.
1568         (build_object_conflicts): Optimize.
1569
1570         * ira-costs.c (record_reg_classes): Optimize.  Call
1571         ira_init_register_move_cost_if_necessary.  Use
1572         ira_register_move_cost, ira_may_move_in_cost, and
1573         ira_may_move_out_cost instead of ira_get_register_move_cost and
1574         ira_get_may_move_cost.
1575         (record_address_regs): Ditto.
1576         (scan_one_insn): Optimize.
1577         (find_costs_and_classes): Optimize.
1578         (process_bb_node_for_hard_reg_moves): Call
1579         ira_init_register_move_cost_if_necessary.  Use
1580         ira_register_move_cost instead of ira_get_register_move_cost.
1581
1582         * ira-emit.c: Use allocno_emit_reg, ALLOCNO_EMIT_DATA instead of
1583         ALLOCNO_REG, ALLOCNO_CHILD_RENAMED_P, ALLOCNO_MEM_OPTIMIZED_DEST,
1584         ALLOCNO_MEM_OPTIMIZED_DEST_P, and ALLOCNO_SOMEWHERE_RENAMED_P.
1585         (ira_allocno_emit_data, void_p, new_allocno_emit_data_vec): New
1586         definitions.
1587         (ira_initiate_emit_data, ira_finish_emit_data)
1588         (create_new_allocno): New functions.
1589         (modify_move_list): Call create_new_alloc instead of ira_create_allocno.
1590         (emit_move_list): Call ira_init_register_move_cost_if_necessary.
1591         Use ira_register_move_cost instead of ira_get_register_move_cost.
1592
1593         * ira-int.h: Fix some comments.
1594         (object_hard_regs_t, object_hard_regs_node_t): Move to ira-color.c.
1595         (struct object_hard_regs, struct object_hard_regs_node): Ditto.
1596         (struct ira_object): Remove profitable_hard_regs, hard_regs_node,
1597         hard_regs_subnodes_start, hard_regs_subnodes_num.  Add new member
1598         add_data.
1599         (struct ira_allocno): Make mode and aclass a bitfield.  Move other
1600         bitfield after mode.  Make hard_regno a short int.  Make
1601         hard_regno short.  Remove first_coalesced_allocno and
1602         next_coalesced_allocno.  Move mem_optimized_dest_p,
1603         somewhere_renamed_p, child_renamed_p, reg, and mem_optimized_dest
1604         into struct ira_emit_data.  Remove in_graph_p, may_be_spilled_p,
1605         available_regs_num, next_bucket_allocno, prev_bucket_allocno,
1606         temp, colorable_p.  Add new member add_data.
1607         (ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P): Remove.
1608         (ALLOCNO_COLORABLE_P, ALLOCNO_AVAILABLE_REGS_NUM): Remove.
1609         (ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO): Remove.
1610         (ALLOCNO_TEMP, ALLOCNO_FIRST_COALESCED_ALLOCNO): Remove.
1611         (ALLOCNO_NEXT_COALESCED_ALLOCNO): Remove.
1612         (ALLOCNO_ADD_DATA): New macro.
1613         (ira_emit_data_t): New typedef.
1614         (struct ira_emit_data): New.  Move mem_optimized_dest_p,
1615         somewhere_renamed_p, child_renamed_p, reg, mem_optimized_dest
1616         from struct ira_allocno.
1617         (ALLOCNO_EMIT_DATA): New macro.
1618         (ira_allocno_emit_data, allocno_emit_reg): New.
1619         (ALLOCNO_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE): Remove.
1620         (OBJECT_HARD_REGS_SUBNODES_STAR, OBJECT_HARD_REGS_SUBNODES_NUM): Remove.
1621         (OBJECT_ADD_DATA): New macro.
1622         (ira_reallocate): Remove.
1623         (ira_initiate_emit_data, ira_finish_emit_data): New.
1624         (ira_get_register_move_cost, ira_get_may_move_cost): Remove.
1625         (ira_init_register_move_cost_if_necessary): New.
1626         (ira_object_conflict_iter_next): Merge into
1627         ira_object_conflict_iter_cond.
1628         (FOR_EACH_OBJECT_CONFLICT): Don't use ira_object_conflict_iter_next.
1629
1630         * ira-live.c: (process_single_reg_class_operands): Call
1631         ira_init_register_move_cost_if_necessary.  Use
1632         ira_register_move_cost instead of ira_get_register_move_cost.
1633
1634         2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
1635
1636         * ira-int.h (struct target_ira_int): Remove x_cost_classes.
1637
1638         * ira-costs.c: Fix formatting.
1639         (cost_classes, cost_classes_num): Remove.
1640         (struct cost_classes, cost_classes_t, const_cost_classes_t): New.
1641         (regno_cost_classes, cost_classes_hash, cost_classes_eq): New.
1642         (cost_classes_del, cost_classes_htab): New.
1643         (cost_classes_aclass_cache, cost_classes_mode_cache): New.
1644         (initiate_regno_cost_classes, setup_cost_classes): New.
1645         (setup_regno_cost_classes_by_aclass): New.
1646         (setup_regno_cost_classes_by_mode, finish_regno_cost_classes): New.
1647         (record_reg_classes): Use regno_cost_classes instead of
1648         cost_classes.  Move checking opposite operand up.
1649         (record_address_regs): Use regno_cost_classes
1650         instead of cost_classes.
1651         (scan_one_insn): Ditto.  Use always general register.
1652         (print_allocno_costs): Use regno_cost_classes instead of
1653         cost_classes.
1654         (print_pseudo_costs): Ditto.  Use Reg_N_REFS.
1655         (find_costs_and_classes): Set up cost classes for each registers.
1656         Use also their mode for this.  Use regno_cost_classes instead of
1657         cost_classes.
1658         (setup_allocno_class_and_costs): Use regno_cost_classes instead of
1659         cost_classes.
1660         (free_ira_costs, ira_init_costs): Don't use cost_classes.
1661         (ira_costs, ira_set_pseudo_classes): Call
1662         initiate_regno_cost_classes and finish_regno_cost_classes.
1663
1664         2010-10-04  Vladimir Makarov  <vmakarov@redhat.com>
1665
1666         * target-def.h (TARGET_IRA_COVER_CLASSES): Remove.
1667
1668         * target.def (ira_cover_classes): Remove.
1669
1670         * doc/tm.texi: Remove TARGET_IRA_COVER_CLASSES and IRA_COVER_CLASSES.
1671
1672         * doc/tm.texi.in: Ditto.
1673
1674         * ira-conflicts.c: Remove mentioning cover classes from the file.
1675         Use ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Use
1676         ALLOCNO_COVER_CLASS_COST instead of ALLOCNO_CLASS_COST.  Fix formatting.
1677
1678         * targhooks.c (default_ira_cover_classes): Remove.
1679
1680         * targhooks.h (default_ira_cover_classes): Ditto.
1681
1682         * haifa-sched.c: Remove mentioning cover classes from the file.
1683         Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
1684         ira_pressure_classes and ira_pressure_classes_num instead of
1685         ira_reg_class_cover_size and ira_reg_class_cover.  Use
1686         sched_regno_pressure_class instead of sched_regno_cover_class.
1687         (mark_regno_birth_or_death, setup_insn_reg_pressure_info): Use
1688         ira_reg_class_max_nregs instead of ira_reg_class_nregs.
1689
1690         * ira-int.h: Add 2010 to Copyright.  Remove mentioning cover
1691         classes from the file.
1692         (object_hard_regs_t, object_hard_regs_node_t): New typedefs.
1693         (struct object_hard_regs, struct object_hard_regs_node): New.
1694         (struct ira_object): New members profitable_hard_regs,
1695         hard_regs_node, hard_regs_subnodes_start, hard_regs_subnodes_num.
1696         (struct ira_allocno): Rename cover_class to aclass.  Rename
1697         cover_class_cost and updated_cover_class_cost to class_cost and
1698         updated_class_cost.  Remove splay_removed_p and
1699         left_conflict_size.  Add new members colorable_p.
1700         (ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICTS_SIZE): Remove.
1701         (ALLOCNO_COLORABLE_P): New macro.
1702         (ALLOCNO_COVER_CLASS): Rename to ALLOCNO_CLASS.
1703         (ALLOCNO_COVER_CLASS_COST, ALLOCNO_UPDATED_COVER_CLASS_COST):
1704         Rename to ALLOCNO_CLASS_COST and ALLOCNO_UPDATED__CLASS_COST.
1705         (OBJECT_...): Rename parameter C to O.
1706         (OBJECT_PROFITABLE_HARD_REGS): New macro.
1707         (OBJECT_HARD_REGS_NODE, OBJECT_HARD_REGS_SUBNODES_START)
1708         (OBJECT_HARD_REGS_SUBNODES_NUM): New macros.
1709         (struct target_ira_int): New members x_ira_max_memory_move_cost,
1710         x_ira_max_register_move_cost, x_ira_max_may_move_in_cost,
1711         x_ira_max_may_move_out_cost, x_ira_reg_allocno_class_p,
1712         x_ira_reg_pressure_class_p, x_ira_important_class_nums,
1713         x_ira_reg_class_superunion.  Rename x_prohibited_class_mode_reg to
1714         x_ira_prohibited_class_mode_reg.  Rename x_ira_reg_class_union to
1715         x_ira_reg_class_subunion.
1716         (ira_max_memory_move_cost, ira_max_register_move_cost)
1717         (ira_max_may_move_in_cost, ira_max_may_move_out_cost)
1718         (ira_reg_allocno_class_p, ira_reg_pressure_class_p)
1719         (ira_important_class_nums, ira_reg_class_superunion): New macros.
1720         (prohibited_class_mode_regs): Rename to ira_prohibited_class_mode_regs.
1721         (ira_reg_class_union): Rename to ira_reg_class_subunion.
1722         (ira_debug_class_cover): Rename to ira_debug_allocno_classes.
1723         (ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
1724         (ira_tune_allocno_costs_and_cover_classes): Rename to
1725         ira_tune_allocno_costs.
1726         (ira_debug_hard_regs_forest): New.
1727         (ira_object_conflict_iter_init, ira_object_conflict_iter_cond)
1728         (ira_object_conflict_iter_next): Fix comments.
1729         (ira_hard_reg_set_intersection_p, hard_reg_set_size): New functions.
1730         (ira_allocate_and_set_costs, ira_allocate_and_copy_costs): Rename
1731         cover_class to aclass.
1732         (ira_allocate_and_accumulate_costs): Ditto.
1733         (ira_allocate_and_set_or_copy_costs): Ditto.
1734
1735         * opts.c (decode_options): Remove ira_cover_class check.
1736
1737         * ira-color.c: Remove mentioning cover classes from the file.  Use
1738         ALLOCNO_CLASS, ALLOCNO_CLASS_COST, and ALLOCNO_UPDATED_CLASS_COST
1739         instead of ALLOCNO_COVER_CLASS, ALLOCNO_COVER_CLASS_COST, and
1740         ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
1741         (splay-tree.h): Remove include.
1742         (allocno_coalesced_p, processed_coalesced_allocno_bitmap): Move
1743         before copy_freq_compare_func.
1744         (allocnos_for_spilling, removed_splay_allocno_vec): Remove.
1745         (object_hard_regs_vec, object_hard_regs_htab, node_check_tick):
1746         New definitions.
1747         (hard_regs_roots, hard_regs_node_vec): Ditto.
1748         (object_hard_regs_hash, object_hard_regs_eq, find_hard_regs): Ditto.
1749         (insert_hard_regs, init_object_hard_regs, add_object_hard_regs): Ditto.
1750         (finish_object_hard_regs, object_hard_regs_compare): Ditto.
1751         (create_new_object_hard_regs_node): Ditto.
1752         (add_new_object_hard_regs_node_to_forest): Ditto.
1753         (add_object_hard_regs_to_forest, collect_object_hard_regs_cover): Ditto.
1754         (setup_object_hard_regs_nodes_parent, first_common_ancestor_node):
1755         Ditto.
1756         (print_hard_reg_set, print_hard_regs_subforest): Ditto.
1757         (print_hard_regs_forest, ira_debug_hard_regs_forest): Ditto.
1758         (remove_unused_object_hard_regs_nodes): Ditto.
1759         (enumerate_object_hard_regs_nodes): Ditto.
1760         (object_hard_regs_nodes_num, object_hard_regs_nodes): Ditto.
1761         (object_hard_regs_subnode_t): Ditto.
1762         (struct object_hard_regs_subnode): Ditto.
1763         (object_hard_regs_subnodes, object_hard_regs_subnode_index): Ditto.
1764         (setup_object_hard_regs_subnode_index): Ditto.
1765         (get_object_hard_regs_subnodes_num): Ditto.
1766         (form_object_hard_regs_nodes_forest): Ditto.
1767         (finish_object_hard_regs_nodes_tree): Ditto.
1768         (finish_object_hard_regs_nodes_forest): Ditto.
1769         (allocnos_have_intersected_live_ranges_p): Rename to
1770         allocnos_conflict_by_live_ranges_p.  Move before copy_freq_compare_func.
1771         (pseudos_have_intersected_live_ranges_p): Rename to
1772         conflict_by_live_ranges_p.  Move before copy_freq_compare_func.
1773         (setup_left_conflict_sizes_p, update_left_conflict_sizes_p): Ditto.
1774         (empty_profitable_hard_regs, setup_profitable_hard_regs): Ditto.
1775         (update_copy_costs): Remove assert.  Skip cost update if the hard
1776         reg does not belong the class.
1777         (assign_hard_reg): Process only profitable hard regs.
1778         (uncolorable_allocnos_num): Make it scalar.
1779         (allocno_spill_priority): Use ALLOCNO_EXCESS_PRESSURE_POINTS_NUM
1780         and ira_reg_class_max_nregs instead of ALLOCNO_LEFT_CONFLICTS_SIZE
1781         and ira_reg_class_max_nregs.
1782         (bucket_allocno_compare_func): Check frequency first.
1783         (sort_bucket): Add compare function as a parameter.
1784         (add_allocno_to_ordered_bucket): Assume no coalesced allocnos.
1785         (uncolorable_allocnos_splay_tree, USE_SPLAY_P): Remove.
1786         (push_allocno_to_stack): Rewrite for checking new allocno
1787         colorability.
1788         (remove_allocno_from_bucket_and_push): Print cost too.  Remove assert.
1789         (push_only_colorable): Pass new parameter to sort_bucket.
1790         (push_allocno_to_spill): Remove.
1791         (allocno_spill_priority_compare): Make it inline and rewrite.
1792         (splay_tree_allocate, splay_tree_free): Remove.
1793         (allocno_spill_sort_compare): New function.
1794         (push_allocnos_to_stack): Sort allocnos for spilling once.  Don't
1795         build and use splay tree.  Choose first allocno in uncolorable
1796         allocno bucket to spill.  Remove setting spill cost.
1797         (all_conflicting_hard_regs): Remove.
1798         (setup_allocno_available_regs_num): Check only profitable hard
1799         regs.  Print info about hard regs nodes.
1800         (setup_allocno_left_conflicts_size): Remove.
1801         (put_allocno_into_bucket): Don't call
1802         setup_allocno_left_conflicts_size.  Use setup_left_conflict_sizes_p.
1803         (improve_allocation): New.
1804         (color_allocnos): Call setup_profitable_hard_regs,
1805         form_object_hard_regs_nodes_forest, improve_allocation,
1806         finish_object_hard_regs_nodes_forest.  Setup spill cost.
1807         (print_loop_title): Use pressure classes.
1808         (color_allocnso): Ditto.
1809         (do_coloring): Remove allocation and freeing splay_tree_node_pool
1810         and allocnos_for_spilling.
1811         (ira_sort_regnos_for_alter_reg): Don't setup members
1812         {first,next}_coalesced_allocno.
1813         (color): Remove allocating and freeing removed_splay_allocno_vec.
1814         (fast_allocation): Use ira_prohibited_class_mode_regs instead of
1815         prohibited_class_mode_regs.
1816
1817         * ira-lives.c: Remove mentioning cover classes from the file.  Fix
1818         formatting.
1819         (update_allocno_pressure_excess_length): Use pressure classes.
1820         (inc_register_pressure, dec_register_pressure): Check for pressure
1821         class.
1822         (mark_pseudo_regno_live, mark_pseudo_regno_subword_live): Use
1823         pressure class.  Use ira_reg_class_nregs instead of
1824         ira_reg_class_max_nregs.
1825         (mark_pseudo_regno_dead, mark_pseudo_regno_subword_dead): Ditto.
1826         (mark_hard_reg_live, mark_hard_reg_dead): Use pressure class.
1827         (single_reg_class): Use ira_reg_class_nregs instead of
1828         ira_reg_class_max_nregs.
1829         (process_bb_node_lives): Use pressure classes.
1830
1831         * ira-emit.c: Remove mentioning cover classes from the file.  Use
1832         ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Fix formatting.
1833         (change_loop): Use pressure classes.
1834         (modify_move_list): Call ira_set_allocno_class instead of
1835         ira_set_allocno_cover_class.
1836
1837         * ira-build.c: Remove mentioning cover classes from the file.  Use
1838         ALLOCNO_CLASS and ALLOCNO_CLASS_COST instead of
1839         ALLOCNO_COVER_CLASS and ALLOCNO_COVER_CLASS_COST.  Use
1840         ALLOCNO_UPDATED_CLASS_COST instead of
1841         ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
1842         (ira_create_object): Initiate OBJECT_PROFITABLE_HARD_REGS.
1843         (ira_create_allocno): Remove initialization of
1844         ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICT_SIZE.  Initialize
1845         ALLOCNO_COLORABLE_P.
1846         (ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
1847         Update conflict regs for the objects.
1848         (create_cap_allocno): Remove assert.  Don't propagate
1849         ALLOCNO_AVAILABLE_REGS_NUM.
1850         (ira_free_allocno_costs): New function.
1851         (finish_allocno): Change a part of code into call of
1852         ira_free_allocno_costs.
1853         (low_pressure_loop_node_p): Use pressure classes.
1854         (object_range_compare_func): Don't compare classes.
1855         (setup_min_max_conflict_allocno_ids): Ditto.
1856
1857         * loop-invariant.c: Remove mentioning cover classes from the file.
1858         Use ira_pressure_classes and ira_pressure_classes_num instead of
1859         ira_reg_class_cover_size and ira_reg_class_cover.  Fix formatting.
1860         (get_cover_class_and_nregs): Rename to get_cover_pressure_and_nregs.
1861         Use ira_reg_class_max_nregs instead of ira_reg_class_nregs.
1862         Use reg_allocno_class instead of reg_cover_class.
1863         (get_inv_cost): Use instead ira_stack_reg_pressure_class of
1864         STACK_REG_COVER_CLASS.
1865         (get_regno_cover_class): Rename to get_regno_pressure_class.
1866         (move_loop_invariants): Initialize and finalize regstat.
1867
1868         * ira.c: Remove mentioning cover classes from the file.  Add
1869         comments about coloring without cover classes.  Use ALLOCNO_CLASS
1870         instead of ALLOCNO_COVER_CLASS.  Fix formatting.
1871         (alloc_reg_class_subclasses, setup_reg_subclasses): Move it before
1872         setup_class_subset_and_memory_move_costs.
1873         (setup_stack_reg_pressure_class, setup_pressure_classes): New.
1874         (setup_cover_and_important_classes): Rename to
1875         setup_allocno_and_important_classes.
1876         (setup_class_translate_array): New.
1877         (setup_class_translate): Call it for allocno and pressure classes.
1878         (cover_class_order): Rename to allocno_class_order.
1879         (comp_reg_classes_func): Use ira_allocno_class_translate instead
1880         of ira_class_translate.
1881         (reorder_important_classes): Set up ira_important_class_nums.
1882         (setup_reg_class_relations): Set up ira_reg_class_superunion.
1883         (print_class_cover): Rename to print_classes.  Add parameter.
1884         (ira_debug_class_cover): Rename to ira_debug_allocno_classes.
1885         Print pressure classes too.
1886         (find_reg_class_closure): Rename to find_reg_classes.  Don't call
1887         setup_reg_subclasses.
1888         (ira_hard_regno_cover_class): Rename to ira_hard_regno_allocno_class.
1889         (ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
1890         (setup_prohibited_class_mode_regs): Use
1891         ira_prohibited_class_mode_regs instead of prohibited_class_mode_regs.
1892         (clarify_prohibited_class_mode_regs): New function.
1893         (ira_init_register_move_cost): Set up ira_max_register_move_cost,
1894         ira_max_may_move_in_cost, and ira_max_may_move_out_cost.
1895         (ira_init_once): Initialize them.
1896         (free_register_move_costs): Process them.
1897         (ira_init): Move calls of find_reg_classes and
1898         setup_hard_regno_aclass after setup_prohibited_class_mode_regs.
1899         Call clarify_prohibited_class_mode_regs.
1900         (ira_no_alloc_reg): Remove.
1901         (too_high_register_pressure_p): Use pressure classes.
1902
1903         * sched-deps.c: Remove mentioning cover classes from the file.
1904         Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
1905         ira_pressure_classes and ira_pressure_classes_num instead of
1906         ira_reg_class_cover_size and ira_reg_class_cover.
1907         (mark_insn_hard_regno_birth, mark_hard_regno_death): Use
1908         sched_regno_pressure_class instead of sched_regno_cover_class.
1909         (mark_insn_pseudo_birth, mark_pseudo_death): Ditto.  Use
1910         ira_reg_class_max_nregs instead of ira_reg_class_nregs.
1911
1912         * ira.h: Add 2010 to Copyright.
1913         (ira_no_alloc_reg): Remove external.
1914         (struct target_ira): Rename x_ira_hard_regno_cover_class,
1915         x_ira_reg_class_cover_size, x_ira_reg_class_cover, and
1916         x_ira_class_translate to x_ira_hard_regno_allocno_class,
1917         x_ira_allocno_classes_num, x_ira_allocno_classes, and
1918         x_ira_allocno_class_translate.  Add x_ira_pressure_classes_num,
1919         x_ira_pressure_classes, x_ira_pressure_class_translate, and
1920         x_ira_stack_reg_pressure_class.  Rename x_ira_reg_class_nregs to
1921         x_ira_reg_class_max_nregs.  Add x_ira_reg_class_min_nregs and
1922         x_ira_no_alloc_regs.
1923         (ira_hard_regno_cover_class): Rename to ira_hard_regno_allocno_class.
1924         (ira_reg_class_cover_size, ira_reg_class_cover): Rename to
1925         ira_allocno_classes_num and ira_allocno_classes.
1926         (ira_class_translate): Rename to ira_allocno_class_translate.
1927         (ira_pressure_classes_num, ira_pressure_classes): New definitions.
1928         (ira_pressure_class_translate, ira_stack_reg_pressure_class): Ditto.
1929         (ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
1930         (ira_reg_class_min_nregs, ira_stack_reg_pressure_class): New
1931         (ira_no_alloc_regs): New.
1932
1933         * ira-costs.c: Add 2010 to Copyright.  Remove mentioning cover
1934         classes from the file.  Use ALLOCNO_CLASS instead of
1935         ALLOCNO_COVER_CLASS.  Use ALLOCNO_CLASS_COST instead of
1936         ALLOCNO_COVER_CLASS_COST.
1937         (regno_cover_class): Rename to regno_aclass.
1938         (record_reg_classes): Use ira_reg_class_subunion instead of
1939         ira_reg_class_union.
1940         (record_address_regs): Check overflow.
1941         (scan_one_insn): Ditto.
1942         (print_allocno_costs): Print total mem cost fore regional allocation.
1943         (print_pseudo_costs): Use REG_N_REFS.
1944         (find_costs_and_classes): Use classes intersected with them on the
1945         1st pass. Check overflow.  Use ira_reg_class_subunion instead of
1946         ira_reg_class_union.  Use ira_allocno_class_translate and
1947         regno_aclass instead of ira_class_translate and regno_cover_class.
1948         Modify code for finding regno_aclass.  Setup preferred classes for
1949         the next pass.
1950         (setup_allocno_cover_class_and_costs): Rename to
1951         setup_allocno_class_and_costs.  Use regno_aclass instead of
1952         regno_cover_class.  Use ira_set_allocno_class instead of
1953         ira_set_allocno_cover_class.
1954         (init_costs, finish_costs): Use regno_aclass instead of
1955         regno_cover_class.
1956         (ira_costs): Use setup_allocno_class_and_costs instead of
1957         setup_allocno_cover_class_and_costs.
1958         (ira_tune_allocno_costs_and_cover_classes): Rename to
1959         ira_tune_allocno_costs.  Check overflow.  Skip conflict hard regs
1960         by processing objects.  Use ira_reg_class_max_nregs instead of
1961         ira_reg_class_nregs.
1962
1963         * rtl.h (reg_cover_class): Rename to reg_allocno_class.
1964
1965         * sched-int.h: Remove mentioning cover classes from the file.
1966         (sched_regno_cover_class): Rename to sched_regno_pressure_class.
1967
1968         * reginfo.c: Add 2010 to Copyright.  Remove mentioning cover
1969         classes from the file.
1970         (struct reg_pref): Rename coverclass into allocnoclass.
1971         (reg_cover_class): Rename to reg_allocno_class.
1972
1973         * Makefile.in (ira-color.o): Remove SPLAY_TREE_H from dependencies.
1974
1975         * config/alpha/alpha.h (IRA_COVER_CLASSES): Remove.
1976
1977         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
1978
1979         * config/avr/avr.h (IRA_COVER_CLASSES): Ditto.
1980
1981         * config/bfin/bfin.h (IRA_COVER_CLASSES): Ditto.
1982
1983         * config/cris/cris.h (IRA_COVER_CLASSES): Ditto.
1984
1985         * config/fr30/fr30.h (IRA_COVER_CLASSES): Ditto.
1986
1987         * config/frv/frv.h (IRA_COVER_CLASSES): Ditto.
1988
1989         * config/h8300/h8300.h (IRA_COVER_CLASSES): Ditto.
1990
1991         * config/i386/i386.h (STACK_REG_COVER_CLASS): Ditto.
1992
1993         * config/i386/i386.c (TARGET_IRA_COVER_CLASSES)
1994         (i386_ira_cover_classes): Ditto.
1995
1996         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
1997
1998         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Ditto.
1999
2000         * config/m32r/m32r.h (IRA_COVER_CLASSES): Ditto.
2001
2002         * config/m68k/m68k.h (IRA_COVER_CLASSES): Ditto.
2003
2004         * config/mcore/mcore.h (IRA_COVER_CLASSES): Ditto.
2005
2006         * config/mep/mep.h (IRA_COVER_CLASSES): Ditto.
2007
2008         * config/mips/mips.c (TARGET_IRA_COVER_CLASSES)
2009         (mips_ira_cover_classes): Ditto.
2010
2011         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): Ditto.
2012
2013         * config/moxie/moxie.h (IRA_COVER_CLASSES): Ditto.
2014
2015         * config/pa/pa64-regs.h (IRA_COVER_CLASSES): Ditto.
2016
2017         * config/pa/pa32-regs.h (IRA_COVER_CLASSES): Ditto.
2018
2019         * config/picochip/picochip.h (IRA_COVER_CLASSES): Ditto.
2020
2021         * config/rs6000/rs6000.h (IRA_COVER_CLASSES_PRE_VSX)
2022         (IRA_COVER_CLASSES_VSX): Ditto.
2023
2024         * config/rs6000/rs6000.c (TARGET_IRA_COVER_CLASSES)
2025         (rs6000_ira_cover_classes): Ditto.
2026
2027         * config/rx/rx.h (IRA_COVER_CLASSES): Ditto.
2028
2029         * config/s390/s390.h (IRA_COVER_CLASSES): Ditto.
2030
2031         * config/score/score.h (IRA_COVER_CLASSES): Ditto.
2032
2033         * config/sh/sh.h (IRA_COVER_CLASSES): Ditto.
2034
2035         * config/sparc/sparc.h (IRA_COVER_CLASSES): Ditto.
2036
2037         * config/spu/spu.h (IRA_COVER_CLASSES): Ditto.
2038
2039         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Ditto.
2040
2041         * config/v850/v850.h (IRA_COVER_CLASSES): Ditto.
2042
2043         * config/vax/vax.h (IRA_COVER_CLASSES): Ditto.
2044
2045         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Ditto.
2046
2047 2011-03-29  Jakub Jelinek  <jakub@redhat.com>
2048
2049         PR debug/48253
2050         * dwarf2out.c (struct dw_fde_struct): Remove dw_fde_hot_section_label,
2051         dw_fde_hot_section_end_label, dw_fde_unlikely_section_label,
2052         dw_fde_unlikely_section_end_label, cold_in_std_section,
2053         dw_fde_switched_sections and dw_fde_switched_cold_to_hot fields.
2054         Add dw_fde_second_begin, dw_fde_second_end and second_in_std_section
2055         fields.
2056         (output_fde): Use dw_fde_second_{begin,end} if second is
2057         true, otherwise dw_fde_{begin,end}.
2058         (output_call_frame_info): Test dw_fde_second_begin != NULL
2059         instead of dw_fde_switched_sections.
2060         (dwarf2out_begin_prologue): Stop initializing removed dw_fde_struct
2061         fields, initialize new fields.  Initialize in_std_section
2062         unconditionally from the first partition.
2063         (dwarf2out_end_epilogue): Don't override dw_fde_end when
2064         dw_fde_second_begin is non-NULL.
2065         (dwarf2out_switch_text_section): Stop initializing removed
2066         dw_fde_struct fields, initialize new fields, initialize
2067         also dw_fde_end here.  Set dw_fde_switch_cfi even when
2068         dwarf2out_do_cfi_asm ().  Call var_location_switch_text_section.
2069         (struct var_loc_list_def): Add last_before_switch field.
2070         (arange_table, arange_table_allocated, arange_table_in_use,
2071         ARANGE_TABLE_INCREMENT, add_arange): Removed.
2072         (size_of_aranges): Count !in_std_section and !second_in_std_section
2073         hunks in fdes, instead of looking at arange_table_in_use.
2074         (output_aranges): Add aranges_length argument, don't call
2075         size_of_aranges here.  Instead of using aranges_table*
2076         emit ranges for fdes when !in_std_section resp.
2077         !second_in_std_section.
2078         (dw_loc_list): Break ranges crossing section switch.
2079         (convert_cfa_to_fb_loc_list): Likewise.  If switched sections,
2080         use dw_fde_second_end instead of dw_fde_end as end of last range.
2081         (gen_subprogram_die): Don't call add_arange.  Use
2082         dw_fde_{begin,end} for first partition and if switched
2083         section dw_fde_second_{begin,end} for the second.
2084         (var_location_switch_text_section_1,
2085         var_location_switch_text_section): New functions.
2086         (dwarf2out_begin_function): Initialize cold_text_section even
2087         when function_section () isn't text_section.
2088         (prune_unused_types): Don't walk arange_table.
2089         (dwarf2out_finish): Don't needlessly test
2090         flag_reorder_blocks_and_partition when testing cold_text_section_used.
2091         If info_section_emitted, call size_of_aranges and if it indicates
2092         non-empty .debug_aranges, call output_aranges with the computed
2093         size.  Stop using removed dw_fde_struct fields, use
2094         dw_fde_{begin,end} for first partition and dw_fde_second_{begin,end}
2095         for second.
2096
2097         PR debug/48203
2098         * cfgexpand.c (expand_debug_expr) <case SSA_NAME>: Only
2099         create ENTRY_VALUE if incoming or address of incoming's MEM
2100         is a hard REG.
2101         * dwarf2out.c (mem_loc_descriptor): Don't emit
2102         DW_OP_GNU_entry_value of DW_OP_fbreg.
2103         * var-tracking.c (vt_add_function_parameter): Ensure cselib_lookup
2104         on ENTRY_VALUE is able to find the canonical parameter VALUE.
2105         * cselib.c (rtx_equal_for_cselib_1) <case ENTRY_VALUE>: Use
2106         rtx_equal_p instead of rtx_equal_for_cselib_1 to compare
2107         ENTRY_VALUE_EXPs.
2108         (cselib_hash_rtx) <case ENTRY_VALUE>: If ENTRY_VALUE_EXP
2109         is a REG_P or MEM_P with REG_P address, compute hash directly
2110         instead of calling cselib_hash_rtx on ENTRY_VALUE_EXP.
2111         (preserve_only_constants): Don't clear VALUES forwaring
2112         ENTRY_VALUE to some other VALUE.
2113
2114 2011-03-28  Richard Sandiford  <richard.sandiford@linaro.org>
2115
2116         * builtins.c (expand_builtin_memset_args): Use gen_int_mode
2117         instead of GEN_INT.
2118
2119 2011-03-28  Eric Botcazou  <ebotcazou@adacore.com>
2120
2121         * cfgexpand.c (expand_gimple_cond): Always set the source location and
2122         block before expanding the statement.
2123         (expand_gimple_stmt_1): Likewise.  Set them here...
2124         (expand_gimple_stmt): ...and not here.  Tidy.
2125         * cfglayout.c (curr_insn_locator): Return 0 if the current location is
2126         unknown.
2127
2128 2011-03-28  Steven Bosscher  <steven@gcc.gnu.org>
2129
2130         * Makefile.in: New rule for cprop.o.
2131         * gcse.c: Move constant/copy propagation to cprop.c.
2132         (compute_local_properties): Only handle expression tables.
2133         (hash_scan_set, compute_hash_table_work, alloc_hash_table,): Likewise.
2134         (one_pre_gcse_pass, one_code_hoisting_pass): Likewise.
2135         (hash_set, insert_set_in_table, gcse_constant_p, lookup_set,
2136         next_set, reset_opr_set_tables, oprs_not_set_p, mark_call, mark_set,
2137         mark_clobber, mark_oprs_set, alloc_cprop_mem, free_cprop_mem,
2138         compute_cprop_data, find_used_regs, try_replace_reg,
2139         find_avail_set, cprop_jump, constprop_register, cprop_insn,
2140         local_cprop_find_used_regs, do_local_cprop, local_cprop_pass,
2141         fis_get_condition, implicit_set_cond_p, find_implicit_sets,
2142         find_bypass_set, reg_killed_on_edge, bypass_block,
2143         bypass_conditional_jumps, one_cprop_pass, gate_rtl_cprop,
2144         execute_rtl_cprop, pass_rtl_cprop): Move to...
2145         * cprop.c: ...here.  New file, constant/copy propagation for RTL
2146         moved from gcse.c to here with minor cleanups in duplicated code.
2147
2148 2011-03-28  H.J. Lu  <hongjiu.lu@intel.com>
2149
2150         * config/i386/i386.c (flag_opts): Fix a typo in
2151         -mavx256-split-unaligned-store.
2152
2153 2011-03-28  Anatoly Sokolov  <aesok@post.ru>
2154
2155         * config/h8300/h8300.h (FUNCTION_VALUE_REGNO_P, FUNCTION_VALUE,
2156         LIBCALL_VALUE): Remove macros.
2157         * config/h8300/h8300.c (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
2158         TARGET_FUNCTION_VALUE_REGNO_P): Define.
2159         (h8300_function_value, h8300_libcall_value,
2160         h8300_function_value_regno_p): New functions.
2161
2162 2011-03-28  Anatoly Sokolov  <aesok@post.ru>
2163
2164         * config/h8300/h8300.h (ASM_OUTPUT_BSS): Remove macro.
2165
2166 2011-03-28  Jeff Law  <law@redhat.com>
2167
2168         * tree-ssa-threadupdate.c (redirect_edges): Call
2169         create_edge_and_update_destination_phis as needed.
2170         (create_edge_and_update_destination_phis): Accept new BB argument.
2171         All callers updated.
2172         (thread_block): Do not update the profile when threading around
2173         intermediate blocks.
2174         (thread_single_edge): Likewise.
2175         (determine_bb_domination_status): If BB is not a successor of the
2176         loop header, return NONDOMINATING.
2177         (register_jump_thread): Note when we register a jump thread around
2178         an intermediate block.
2179         * tree-ssa-threadedge.c (thread_around_empty_block): New function.
2180         (thread_across_edge): Use it.
2181
2182 2011-03-28  Tristan Gingold  <gingold@adacore.com>
2183
2184         * config/ia64/ia64.c (ia64_promote_function_mode): Fix promotion
2185         when for_return is 2.
2186
2187 2011-03-28  Jeff Law  <law@redhat.com>
2188
2189         * var-tracking.c (canonicalize_values_mark): Delete unused
2190         lhs assignment.
2191         (canonicalize_values_star, set_variable_part): Likewise.
2192         (clobber_variable_part, delete_variable_part): Likewise.
2193
2194 2011-03-28  Steven Bosscher  <steven@gcc.gnu.org>
2195
2196         * gcse.c (free_gcse_mem): Free reg_set_bitmap.
2197
2198 2011-03-28  Martin Jambor  <mjambor@suse.cz>
2199
2200         * tree-inline.c (expand_call_inline): Do not check that destination
2201         node is analyzed.
2202         (optimize_inline_calls): Assert that destination node is analyzed.
2203         * cgraph.c (cgraph_add_new_function): Call cgraph_analyze_function, do
2204         not call tree_lowering_passes.
2205         * cgraph.h (cgraph_analyze_function): Declare.
2206         * cgraphunit.c (cgraph_analyze_function): Make public.
2207
2208 2011-03-28  Joseph Myers  <joseph@codesourcery.com>
2209
2210         * config/sparc/sparc-opts.h: New.
2211         * config/sparc/sparc.c (sparc_handle_option, sparc_select,
2212         sparc_cpu, fpu_option_set, TARGET_HANDLE_OPTION): Remove.
2213         (sparc_option_override): Store processor_type enumeration rather
2214         than string in cpu_default.  Remove name and enumeration from
2215         cpu_table.  Directly default -mcpu then default -mtune from -mcpu
2216         without using sparc_select.  Use target_flags_explicit instead of
2217         fpu_option_set.
2218         * config/sparc/sparc.h (enum processor_type): Move to
2219         sparc-opts.h.
2220         (sparc_cpu, struct sparc_cpu_select, sparc_select): Remove.
2221         * config/sparc/sparc.opt (config/sparc/sparc-opts.h): New
2222         HeaderInclude entry.
2223         (mcpu=, mtune=): Use Var and Enum.
2224         (sparc_processor_type): New Enum and EnumValue entries.
2225
2226 2011-03-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2227             Iain Sandoe  <iains@gcc.gnu.org>
2228
2229         PR target/48245
2230         * config/darwin.h (LINK_COMMAND_SPEC_A): Use LINK_PLUGIN_SPEC.
2231
2232 2011-03-28  Eric Botcazou  <ebotcazou@adacore.com>
2233
2234         * tree-vectorizer.h (vect_create_data_ref_ptr): Adjust prototype.
2235         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Add GSI parameter.
2236         Insert new statements at it in lieu of STMT.
2237         (vect_setup_realignment): Adjust call to vect_create_data_ref_ptr.
2238         * tree-vect-stmts.c (vectorizable_store): Likewise.
2239         (vectorizable_load): Likewise.
2240
2241 2011-03-28  Uros Bizjak  <ubizjak@gmail.com>
2242
2243         * config/alpha/alpha.md (addtf3): Change mode of operands to TFmode.
2244         (divtf3): Ditto.
2245         (multf3): Ditto.
2246         (subtf3): Ditto.
2247
2248 2011-03-27  H.J. Lu  <hongjiu.lu@intel.com>
2249
2250         * config/i386/sse.md (*avx_mov<mode>_internal): Don't assert
2251         unaligned 256bit load/store.
2252         (*avx_movu<ssemodesuffix><avxmodesuffix>): Likewise.
2253         (*avx_movdqu<avxmodesuffix>): Likewise.
2254
2255 2011-03-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2256
2257         PR target/48288
2258         * config/pa/predicates.md (reg_or_ior_operand): New predicate.
2259         * config/pa/pa.md (iordi3): Use new predicate in expander.
2260         (iorsi3): Likewise.
2261
2262 2011-03-27  Anatoly Sokolov  <aesok@post.ru>
2263
2264         * config/mips/mips.h (LIBCALL_VALUE, FUNCTION_VALUE,
2265         FUNCTION_VALUE_REGNO_P): Remove macros.
2266         * config/mips/mips-protos.h (mips_function_value): Remove.
2267         * config/mips/mips.c (mips_function_value): Rename to...
2268         (mips_function_value_1): ... this. Make static.  Handle receiving
2269         the function type in 'fn_decl_or_type' argument.
2270         (mips_function_value, mips_libcall_value,
2271         mips_function_value_regno_p): New function.
2272         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE,
2273         TARGET_FUNCTION_VALUE_REGNO_P): Define.
2274
2275 2011-03-27  H.J. Lu  <hongjiu.lu@intel.com>
2276
2277         * config/i386/i386.c (flag_opts): Add -mavx256-split-unaligned-load
2278         and -mavx256-split-unaligned-store.
2279         (ix86_option_override_internal): Split 32-byte AVX unaligned
2280         load/store by default.
2281         (ix86_avx256_split_vector_move_misalign): New.
2282         (ix86_expand_vector_move_misalign): Use it.
2283
2284         * config/i386/i386.opt: Add -mavx256-split-unaligned-load and
2285         -mavx256-split-unaligned-store.
2286
2287         * config/i386/sse.md (*avx_mov<mode>_internal): Verify unaligned
2288         256bit load/store.  Generate unaligned store on misaligned memory
2289         operand.
2290         (*avx_movu<ssemodesuffix><avxmodesuffix>): Verify unaligned
2291         256bit load/store.
2292         (*avx_movdqu<avxmodesuffix>): Likewise.
2293
2294         * doc/invoke.texi: Document -mavx256-split-unaligned-load and
2295         -mavx256-split-unaligned-store.
2296
2297 2011-03-27  Richard Sandiford  <rdsandiford@googlemail.com>
2298
2299         PR target/38598
2300         * config/mips/mips.md (extendsidi2): Add an "l" alternative.
2301         Update commentary.
2302
2303 2011-03-27  Richard Sandiford  <rdsandiford@googlemail.com>
2304
2305         * config/mips/mips.c (mips_prepare_builtin_arg): Replace icode and
2306         opno arguments with an expand_operand.  Use create_input_operand.
2307         (mips_prepare_builtin_target): Delete.
2308         (mips_expand_builtin_insn, mips_expand_builtin_compare_1): New
2309         functions.
2310         (mips_expand_builtin_direct): Use create_output_operand and
2311         mips_expand_builtin_insn.  Update call to mips_prepare_builtin_arg.
2312         (mips_expand_builtin_movtf): Likewise.  Use mips_expand_fp_comparison.
2313         (mips_expand_builtin_compare): Use mips_expand_fp_comparison.
2314
2315 2011-03-27  Ira Rosen  <ira.rosen@linaro.org>
2316
2317         * config/arm/arm.c (arm_autovectorize_vector_sizes): New
2318         function.
2319         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES): Define.
2320
2321 2011-03-26  Eric Botcazou  <ebotcazou@adacore.com>
2322
2323         * basic-block.h (fixup_abnormal_edges): Adjust prototype.
2324         * reload1.c (reload): Adjust call to fixup_abnormal_edges.  Rediscover
2325         basic blocks and call commit_edge_insertions directly.
2326         (fixup_abnormal_edges): Move from here to...
2327         * cfgrtl.c (fixup_abnormal_edges): ...here.  Only insert instructions
2328         on the edges and return whether some have actually been inserted.
2329         * reg-stack.c (convert_regs): Fix up abnormal edges before inserting
2330         compensation code.
2331
2332 2011-03-26  Andrey Belevantsev  <abel@ispras.ru>
2333
2334         PR rtl-optimization/48144
2335         * sel-sched-ir.c (merge_history_vect): Factor out from ...
2336         (merge_expr_data): ... here.
2337         (av_set_intersect): Rename to av_set_code_motion_filter.
2338         Update all callers.  Call merge_history_vect when an expression
2339         is found in both sets.
2340         * sel-sched-ir.h (av_set_code_motion_filter): Add prototype.
2341
2342 2011-03-26  Alan Modra  <amodra@gmail.com>
2343
2344         * config/rs6000/predicates.md (word_offset_memref_op): Handle
2345         cmodel medium addresses.
2346         * config/rs6000/rs6000.c (rs6000_secondary_reload): Handle misaligned
2347         64-bit gpr loads and stores.
2348         (rs6000_secondary_reload_ppc64): New function.
2349         * config/rs6000/rs6000-protos.h: Declare it.
2350         * config/rs6000/rs6000.md (reload_di_store, reload_di_load): New.
2351
2352 2011-03-26  Alan Modra  <amodra@gmail.com>
2353
2354         PR target/47487
2355         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Support
2356         GNU Go in traceback table.
2357
2358 2011-03-25  Richard Henderson  <rth@redhat.com>
2359
2360         * expr.c (emit_block_move_via_movmem): Only use 6 operand variant
2361         if there are exactly 6 operands.
2362         (set_storage_via_setmem): Similarly.
2363
2364 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2365
2366         * collect2.c (write_c_file_stat): Handle backslash
2367         as right-hand directory separator.
2368         (resolve_lib_name): Use IS_DIR_SEPARATOR instead of
2369         checking just for slash.
2370         * coverage.c (coverage_init): Use IS_ABSOLUTE_PATH
2371         instead of checking for trailing slash.
2372         * gcc.c (record_temp_file): Use filename_cmp instead
2373         of strcmp.
2374         (do_spec_1): Likewise.
2375         (replace_outfile_spec_function): Likewise.
2376         (is_directory): Use filename_ncmp instead of strncmp.
2377         (print_multilib_info): Likewise.
2378         * gcov.c (find_source): Use filename_cmp instead
2379         instead of strcmp.
2380         (make_gcov_file_name): Fix order of slash/backslash
2381         checks.
2382         * incpath.c (DIRS_EQ): Use filename_cmp instead of strcmp.
2383         (add_standard_paths): Likewise.
2384         * mips-tfile.c (saber_stop): Handle backslash.
2385         * prefix.c (update_path): Use filename_ncmp instead of
2386         strncmp.
2387         * profile.c (output_location): Use filename_cmp instead
2388         of strcmp.
2389         * read-md.c (handle_toplevel_file): Handle backslash.
2390         * tlink.c (frob_extension):  Likewise.
2391         * tree-cfg.c (same_line_p): Use filename_cmp instead of
2392         strcmp.
2393         * tree-dump.c (dequeue_and_dump): Handle backslash.
2394         * tree.c (get_file_function_name): Likewise.
2395         * gengtype.c (read_input_list): Likewise.
2396         (get_file_realbasename): Likewise.
2397         (get_output_file_with_visibility): Use filename_cmp
2398         instead of strcmp.
2399
2400 2011-03-25  Richard Sandiford  <richard.sandiford@linaro.org>
2401
2402         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Restrict FPA_REGS
2403         case to VFPv1.
2404
2405 2011-03-25  Nathan Froyd  <froydnj@codesourcery.com>
2406
2407         * fold-const.c (expr_location_or): New function.
2408         (fold_truth_not_expr): Call it.
2409
2410 2011-03-25  Jeff Law  <law@redhat.com>
2411
2412         * dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Add missing
2413         va_end.
2414         * c-family/c-common.c (def_fn_type): Likewise.
2415         * ada/gcc-interface/utils.c (def_fn_type): Likewise.
2416         * emit-rtl.c (gen_rtvec): Likewise.
2417         * lto/lto-lang.c (def_fn_type): Likewise.
2418
2419 2011-03-25  Richard Guenther  <rguenther@suse.de>
2420
2421         * tree-ssa-copy.c (stmt_may_generate_copy): Copies from constants
2422         also generate copies.
2423         (fini_copy_prop): Handle constant values properly.
2424
2425 2011-03-25  Jakub Jelinek  <jakub@redhat.com>
2426
2427         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Compare
2428         mode size instead of bitsize with DWARF2_ADDR_SIZE.
2429         (hash_loc_operands, compare_loc_operands): Handle
2430         DW_OP_GNU_entry_value.
2431
2432 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2433
2434         * config/i386/cygming.h (DWARF_FRAME_REGISTERS): Adjust comment.
2435         (STACK_BOUNDARY): Check for bit-ness in case of MS_ABI.
2436         * config/i386/i386.c (ix86_conditional_register_usage): Adjust
2437         comment and use macro TARGET_64BIT_MS_ABI instead.
2438         (ix86_keep_aggregate_return_pointer): Optimize for 64-bit case
2439         and change default behavior for 32-bit MS_ABI.
2440         (ix86_reg_parm_stack_space): Check additionally for bit-ness.
2441         (ix86_function_type_abi): Allow check for ms_abi/sysv_abi for
2442         32-bit, too.
2443         (ix86_cfun_abi): Likewise.
2444         (ix86_maybe_switch_abi): Adjust comment.
2445         (init_cumulative_args): Check for bit-ness in MS_ABI case.
2446         (ix86_gimplify_va_arg): Check just for not TARGET_64BIT_MS_ABI
2447         instead of checking for SYSV_ABI.
2448         (ix86_nsaved_sseregs): Likewise.
2449         (ix86_compute_frame_layout): Set only for 64-bit MS_ABI alignment
2450         to 16 bytes.
2451         (ix86_expand_call): Use TARGET_64BIT_MS_ABI macro.
2452         * config/i386.h (TARGET_32BIT_MS_ABI): New macro.
2453         (ACCUMULATE_OUTGOING_ARGS): Check explicit for 64-bit MS_ABI.
2454         (OUTGOING_REG_PARM_STACK_SPACE): Likewise.
2455         * config/mingw32.h (DEFAULT_ABI): Change default always to MS_ABI.
2456
2457 2011-03-25  Richard Guenther  <rguenther@suse.de>
2458
2459         * tree-flow.h (verify_stmts): Rename to verify_gimple_in_cfg.
2460         (verify_types_in_gimple_seq): Rename to verify_gimple_in_seq.
2461         (verify_gimple): Remove.
2462         * tree-cfg.c (verify_gimple_call): Merge verification
2463         from verify_stmts.
2464         (verify_gimple_phi): Merge verification from verify_stmts.
2465         (verify_gimple_label): New function.
2466         (verify_types_in_gimple_seq_2): Rename to verify_gimple_in_seq_2.
2467         (verify_types_in_gimple_seq): Rename to verify_gimple_in_seq.
2468         (verify_stmt): Merge into verify_gimple_in_cfg and callees.
2469         (verify_stmts): Rename to verify_gimple_in_cfg.
2470         (verify_gimple_in_cfg): New function.
2471         * passes.c (execute_function_todo): Call verify_gimple_in_cfg.
2472         * tree-ssa.c (verify_ssa): Likewise.
2473         * gimplify.c (gimplify_body): Call verify_gimple_in_seq.
2474
2475 2011-03-25  Richard Guenther  <rguenther@suse.de>
2476
2477         * passes.c (init_optimization_passes): Add FRE pass after
2478         early SRA.
2479
2480 2011-03-25  Bernd Schmidt  <bernds@codesourcery.com>
2481             Andrew Stubbs  <ams@codesourcery.com>
2482
2483         * config/arm/vfp.md (arm_movdi_vfp): Enable only when not tuning
2484         for Cortex-A8.
2485         (arm_movdi_vfp_cortexa8): New pattern.
2486         * config/arm/neon.md (adddi3_neon, subdi3_neon, anddi3_neon,
2487         iordi3_neon, xordi3_neon): Add alternatives to discourage Neon
2488         instructions when tuning for Cortex-A8.  Set attribute "arch".
2489         * config/arm/arm.md: Move include arm-tune.md up a bit.
2490         (define_attr "arch"): Add "onlya8" and "nota8" values.
2491         (define_attr "arch_enabled"): Handle "onlya8" and "nota8".
2492
2493 2011-03-25  Nathan Froyd  <froydnj@codesourcery.com>
2494
2495         PR bootstrap/48282
2496         Revert:
2497         2011-03-24  Nathan Froyd  <froydnj@codesourcery.com>
2498
2499         * function.c (instantiate_virtual_regs): Use FOR_EACH_BB and
2500         FOR_BB_INSNS_SAFE to iterate through insns.  Re-indent.
2501         (pass_instantiate_virtual_regs): Require PROP_cfglayout.
2502         * passes.c (init_optimization_passes): Move
2503         pass_instantiate_virtual_regs after pass_into_cfg_layout_mode.
2504
2505 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2506
2507         * c-typeck.c (comptypes_internal): Replace target
2508         hook call of comp_type_attributes by version in tree.c file.
2509         * gimple.c (gimple_types_compatible_p_1): Likewise.
2510         * tree-ssa.c (useless_type_conversion_p): Likewise.
2511         * tree.c (build_type_attribute_qual_variant): Likewise.
2512         (attribute_value_equal): New static helper function.
2513         (comp_type_attributes): New function.
2514         (merge_attributes): Use attribute_value_equal for comparison.
2515         (attribute_list_contained): Likewise.
2516         * tree.h (comp_type_attributes): New prototype.
2517
2518 2011-03-25  Richard Guenther  <rguenther@suse.de>
2519
2520         * tree-cfg.c (verify_gimple_assign_unary): Drop special casing
2521         of complex types at -O0.
2522         (verify_gimple_assign_binary): Likewise.
2523         (verify_gimple_assign_ternary): Likewise.
2524
2525 2011-03-24  Mark Wielaard  <mjw@redhat.com>
2526
2527         * dwarf2out.c (size_of_die): Modify comment to say DW_FORM_ref_sig8.
2528         (value_format): Use DW_FORM_ref_sig8, not DW_FORM_sig8.
2529
2530 2011-03-24  Mark Wielaard  <mjw@redhat.com>
2531
2532         PR debug/48041
2533         * dwarf2out.c (output_abbrev_section): Only write table when
2534         abbrev_die_table_in_use > 1.
2535
2536 2011-02-24  Richard Henderson  <rth@redhat.com>
2537
2538         * config/alpha/alpha.c (alpha_expand_unaligned_load): Use extql.
2539         (alpha_expand_unaligned_store): Use mskwl, mskll, mskql.
2540         (alpha_expand_unaligned_load_words): Use extql.
2541         (alpha_expand_unaligned_store_words): Use insqh, mskqh, mskql.
2542         (emit_insxl): Handle all modes for consistency.
2543
2544 2011-02-24  Richard Henderson  <rth@redhat.com>
2545
2546         * config/alpha/alpha.c (get_aligned_mem): Don't test WORDS_BIG_ENDIAN.
2547         (alpha_expand_unaligned_load): Likewise.
2548         (alpha_expand_unaligned_store): Likewise.
2549         (alpha_expand_unaligned_load_words): Likewise.
2550         (alpha_expand_unaligned_store_words): Likewise.
2551         (emit_insxl, alpha_split_compare_and_swap_12): Likewise.
2552         (alpha_split_lock_test_and_set_12): Likewise.
2553         (print_operand, alpha_fold_builtin_extxx): Likewise.
2554         (alpha_fold_builtin_insxx, alpha_fold_builtin_mskxx): Likewise.
2555         * config/alpha/alpha.md (bswapsi2, insv, extv, extzv): Likewise.
2556         (builtin_extwh, builtin_extlh, builtin_extql): Likewise.
2557         (unaligned_extendqidi_be, unaligned_extendhidi_be, extxl_be): Remove.
2558         (*extxl_1_be, *extql_2_be, extqh_be, extlh_be, extwh_be): Remove.
2559         (insbl_be, inswl_be, insll_be, insql_be, mskxl_be): Remove.
2560         (unaligned_loadqi_be, unaligned_loadhi_be): Remove.
2561         (unaligned_storeqi_be, unaligned_storehi_be): Remove.
2562         (extbl): Rename from builtin_extbl; don't test WORDS_BIG_ENDIAN.
2563         (extwl, extll, extql): Similarly.
2564         (inswh, inslh, insqh): Similarly.
2565         (mskbl, mskwl, mskll, mskql): Similarly.
2566         (mskwh, msklh, mskqh): Similarly.
2567
2568 2011-02-24  Richard Henderson  <rth@redhat.com>
2569
2570         * config/alpha/alpha.md (attribute isa): Add er, ner.
2571         (attribute enabled): Handle them.
2572         (*movdi): Merge *movdi_{er_nofix,nofix,er_fix,fix}.
2573
2574 2011-02-24  Richard Henderson  <rth@redhat.com>
2575
2576         * config/alpha/alpha.md (attribute isa): Add vms.
2577         (attribute enabled): Handle it.
2578         (*movsf): Merge *movsf_{nofix,fix,nofp}.
2579         (*movdf): Merge *movdf_{nofix,fix,nofp}.
2580         (*movtf): Rename from *movtf_internal for consistency.
2581         (*movsi): Merge with *movsi_nt_vms.
2582         (*movhi): Merge *movhi_nobwx, *movhi_bwx.
2583         (*movqi): Merge *movqi_nobwx, *movqi_bwx.
2584         (*mov<VEC>): Merge *mov<VEC>_fix, *mov<VEC>_nofix.
2585         * config/alpha/constraint.md ("f"): Use NO_REGS when fpu is disabled.
2586
2587 2011-02-24  Richard Henderson  <rth@redhat.com>
2588
2589         * config/alpha/alpha.md (extendqihi2): Implement for BWX only.
2590         (extendqisi2, extendhisi2): Likewise.
2591         (extendqidi2): Simplify BWX/non-BWX expansions.
2592         (extendhidi2): Similarly.
2593
2594 2011-02-24  Richard Henderson  <rth@redhat.com>
2595
2596         * config/alpha/alpha.md (attribute isa): New.
2597         (attribute enabled): New.
2598         (zero_extendqihi2): Merge from *zero_extendqihi2_{bwx,nobwx}.
2599         (zero_extendqisi2, zero_extendqidi2): Similarly.
2600         (zero_extendhisi2, zero_extendhidi2): Similarly.
2601         * config/alpha/predicates.md (reg_or_bwx_memory_operand): New.
2602
2603 2011-02-24  Richard Henderson  <rth@redhat.com>
2604
2605         * config/alpha/predicates.md (input_operand): Revert last change;
2606         update comment to mention 32-bit VMS rather than Windows.
2607
2608 2011-03-24  Nathan Froyd  <froydnj@codesourcery.com>
2609
2610         * function.c (instantiate_virtual_regs): Use FOR_EACH_BB and
2611         FOR_BB_INSNS_SAFE to iterate through insns.  Re-indent.
2612         (pass_instantiate_virtual_regs): Require PROP_cfglayout.
2613         * passes.c (init_optimization_passes): Move
2614         pass_instantiate_virtual_regs after pass_into_cfg_layout_mode.
2615
2616 2011-03-24  Eric Botcazou  <ebotcazou@adacore.com>
2617
2618         * dojump.c (do_jump_by_parts_greater_rtx): Optimize in specific cases.
2619
2620 2011-03-24  Uros Bizjak  <ubizjak@gmail.com>
2621
2622         * config/i386/i386.md (ix86_print_operand): Output DFmode const_double
2623         correctly.
2624
2625 2011-03-24  Jakub Jelinek  <jakub@redhat.com>
2626
2627         PR debug/48204
2628         * simplify-rtx.c (simplify_const_unary_operation): Call
2629         real_convert when changing mode class with FLOAT_EXTEND.
2630
2631 2011-03-24  Nick Clifton  <nickc@redhat.com>
2632
2633         * config/rx/rx.h (LABEL_ALIGN_FOR_BARRIER): Define.
2634         (ASM_OUTPUT_MAX_SKIP_ALIGN): Define.
2635         * config/rx/rx.c (rx_option_override): Set align_jumps,
2636         align_loops and align_labels if not set by the user.
2637         (rx_align_for_label): New function.
2638         (rx_max_skip_for_label): New function.
2639         (TARGET_ASM_JUMP_ALIGN_MAX_SKIP): Define.
2640         (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): Define.
2641         (TARGET_ASM_LABEL_ALIGN_MAX_SKIP): Define.
2642         (TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Define.
2643         * config/rx/rx-protos.h (rx_align_for_label): Add prototype.
2644
2645 2011-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
2646
2647         PR rtl-optimization/48263
2648         * optabs.c (expand_binop_directly): Reinstate convert_modes code
2649         and original commutative_p handling.  Use maybe_gen_insn.
2650
2651 2011-03-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2652
2653         * reload.c (find_reloads_subreg_address): Add address_reloaded
2654         parameter and return true there if the full address has been
2655         reloaded.
2656         (find_reloads_toplev): Pass address_reloaded flag.
2657         (find_reloads_address_1): Don't use address_reloaded parameter.
2658
2659 2011-03-24  Jeff Law  <law@redhat.com>
2660
2661         * tree-ssa-live.c (remove_unused_scope_block_p): Remove set but
2662         unused variable "ann".
2663         (remove_unused_locals): Likewise.
2664
2665         * tree-ssa-copy.c (propagate_tree_value_into_stmt): Remove useless
2666         statement.
2667
2668         * cfglayout.c (fixup_reorder_chain): Do not dereference E_FALL
2669         after it is freed.
2670
2671 2011-03-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2672
2673         * config/s390/s390.c (s390_preferred_reload_class): Return NO_REGS
2674         for invalid symbolic addresses.
2675         (s390_secondary_reload): Don't use s390_check_symref_alignment for
2676         larl operands.
2677
2678 2011-03-24  Eric Botcazou  <ebotcazou@adacore.com>
2679
2680         * fold-const.c (fold_ternary_loc): Preserve the location (if any) of
2681         the argument in calls to fold_truth_not_expr.
2682
2683 2011-03-24  Nathan Froyd  <froydnj@codesourcery.com>
2684
2685         * tree.c (record_node_allocation_statistics): New function.
2686         (make_node_stat, copy_node_stat, build_string): Call it.
2687         (make_tree_binfo_stat, make_tree_vec_stat, tree_cons_stat): Likewise.
2688         (build1_stat, build_omp_clause): Likewise.
2689
2690 2011-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
2691
2692         * builtins.c (expand_movstr): Fix endp == 1 adjustment after
2693         last commit.
2694
2695 2011-03-24  Richard Guenther  <rguenther@suse.de>
2696
2697         PR tree-optimization/48271
2698         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Only cleanup
2699         blocks that still exist.
2700
2701 2011-03-24  Richard Guenther  <rguenther@suse.de>
2702
2703         PR tree-optimization/48270
2704         * tree-ssa-phiopt.c (cond_if_else_store_replacement): Do
2705         not free datarefs before ddrs.
2706
2707 2011-03-24  Eric Botcazou  <ebotcazou@adacore.com>
2708
2709         * tree-sra.c (build_ref_for_offset): Strip useless type conversions
2710         from the address built for a reference with variable offset.
2711
2712 2011-03-24  Uros Bizjak  <ubizjak@gmail.com>
2713
2714         PR target/48237
2715         * config/i386/i386.md (*movdf_internal_rex64): Do not split
2716         alternatives that can be handled with movq or movabsq insn.
2717         (*movdf_internal): Disable for !TARGET_64BIT.
2718         (*movdf_internal_nointeger): Ditto.
2719         * config/i386/i386.c (ix86_print_operand): Handle DFmode immediates.
2720
2721 2011-03-24  Nathan Froyd  <froydnj@codesourcery.com>
2722
2723         * system.h (FUNCTION_ARG, FUNCTION_INCOMING_ARG): Poison.
2724         (FUNCTION_ARG_ADVANCE): Likewise.
2725         * tm.texi.in: Change references to them to hook references.
2726         * tm.texi: Regenerate.
2727         * targhooks.c (default_function_arg): Eliminate check for target macro.
2728         (default_function_incoming_arg): Likewise.
2729         (default_function_arg_advance): Likewise.
2730         * target.def (function_arg, function_incoming_arg): Change to DEFHOOK.
2731         (function_arg_advance): Likewise.
2732         * target-def.h: Eliminate FUNCTION_INCOMING_ARG check.
2733
2734 2011-03-24  Richard Guenther  <rguenther@suse.de>
2735
2736         PR middle-end/48269
2737         * tree-object-size.c (addr_object_size): Do not double-account
2738         for MEM_REF offsets.
2739
2740 2011-03-24  Diego Novillo  <dnovillo@google.com>
2741
2742         * lto-opts.c (input_data_block): Move to lto-streamer-in.c.
2743         * lto-streamer-in.c (input_string_internal): Add clarifying comments.
2744         (lto_input_data_block): Move from lto-opts.c.  Make extern.
2745         Update all users.
2746         (lto_input_string): Rename from input_string.  Make extern.
2747         Update all users.
2748         * lto-streamer-out.c (lto_output_string_with_length): Rename from
2749         output_string_with_length.
2750         Output 0 to indicate a non-NULL string.  Update all callers to
2751         not emit 0.
2752         (lto_output_string): Rename from output_string.  Make extern.
2753         Update all users.
2754         (lto_output_decl_state_streams): Make extern.
2755         (lto_output_decl_state_refs): Make extern.
2756         * lto-streamer.h (lto_input_string): Declare.
2757         (lto_input_data_block): Declare.
2758         (lto_output_string): Declare.
2759         (lto_output_string_with_length): Declare.
2760         (lto_output_decl_state_streams): Declare.
2761         (lto_output_decl_state_refs): Declare.
2762
2763 2011-03-24  Richard Guenther  <rguenther@suse.de>
2764
2765         PR tree-optimization/46562
2766         * tree.c (build_invariant_address): New function.
2767         * tree.h (build_invariant_address): Declare.
2768         * tree-dfa.c (get_addr_base_and_unit_offset): Wrap around
2769         a renamed function moved ...
2770         * tree-flow-inline.h (get_addr_base_and_unit_offset_1): ... here.
2771         Take valueization callback parameter.
2772         * tree-flow.h (gimple_fold_stmt_to_constant): Declare.
2773         * gimple-fold.h: New file.
2774         * tree-ssa-ccp.c (ccp_fold): Use gimple_fold_stmt_to_constant_1.
2775         (ccp_fold, fold_const_aggregate_ref,
2776         fold_ctor_reference, fold_nonarray_ctor_reference,
2777         fold_array_ctor_reference, fold_string_cst_ctor_reference,
2778         get_base_constructor): Move ...
2779         * gimple-fold.c: ... here.
2780         (gimple_fold_stmt_to_constant_1): New function
2781         split out from ccp_fold.  Take a valueization callback parameter.
2782         Valueize all operands.
2783         (gimple_fold_stmt_to_constant): New wrapper function.
2784         (fold_const_aggregate_ref_1): New function split out from
2785         fold_const_aggregate_ref.  Take a valueization callback parameter.
2786         (fold_const_aggregate_ref): Wrap fold_const_aggregate_ref_1.
2787         * tree-ssa-sccvn.c (simplify_binary_expression): Simplify
2788         invariant POINTER_PLUS_EXPRs to invariant form.
2789         (vn_valueize): New function.
2790         (try_to_simplify): Simplify by using gimple_fold_stmt_to_constant.
2791         * tree-vrp.c (vrp_valueize): New function.
2792         (vrp_visit_assignment_or_call): Use gimple_fold_stmt_to_constant
2793         to fold statements to constants.
2794         * tree-ssa-pre.c (eliminate): Properly guard propagation of
2795         function declarations.
2796         * Makefile.in (tree-ssa-sccvn.o, tree-vrp.o, gimple-fold.o,
2797         tree-ssa-ccp.o): Add gimple-fold.h dependencies.
2798
2799 2011-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
2800
2801         * config/h8300/predicates.md (jump_address_operand): Fix register
2802         mode check.
2803
2804 2011-03-24  Ira Rosen  <ira.rosen@linaro.org>
2805
2806         * doc/invoke.texi (max-stores-to-sink): Document.
2807         * params.h (MAX_STORES_TO_SINK): Define.
2808         * opts.c (finish_options): Set MAX_STORES_TO_SINK to 0
2809         if either vectorization or if-conversion is disabled.
2810         * tree-data-ref.c (dr_equal_offsets_p1): Moved and renamed from
2811         tree-vect-data-refs.c vect_equal_offsets.
2812         (dr_equal_offsets_p): New function.
2813         (find_data_references_in_bb): Remove static.
2814         * tree-data-ref.h (find_data_references_in_bb): Declare.
2815         (dr_equal_offsets_p): Likewise.
2816         * tree-vect-data-refs.c (vect_equal_offsets): Move to tree-data-ref.c.
2817         (vect_drs_dependent_in_basic_block): Update calls to
2818         vect_equal_offsets.
2819         (vect_check_interleaving): Likewise.
2820         * tree-ssa-phiopt.c: Include cfgloop.h and tree-data-ref.h.
2821         (cond_if_else_store_replacement): Rename to...
2822         (cond_if_else_store_replacement_1): ... this.  Change arguments and
2823         documentation.
2824         (cond_if_else_store_replacement): New function.
2825         * Makefile.in (tree-ssa-phiopt.o): Adjust dependencies.
2826         * params.def (PARAM_MAX_STORES_TO_SINK): Define.
2827
2828 2011-03-23  Chung-Lin Tang  <cltang@codesourcery.com>
2829
2830         PR target/46934
2831         * config/arm/arm.md (casesi): Use the gen_int_mode() function
2832         to subtract lower bound instead of GEN_INT().
2833
2834 2011-03-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
2835
2836         PR other/48179
2837         PR other/48221
2838         PR other/48234
2839         * doc/extend.texi (Alignment): Move section to match order in TOC.
2840         * doc/invoke.texi (i386 and x86-64 Windows Options): Likewise.
2841         (Warning Options): Adjust -Wno-cpp summary and remove stray backslash.
2842
2843 2011-03-23  Jeff Law  <law@redhat.com>
2844
2845         * cfg.c (redirect_edge_succ_nodup): Duplicate the varm map
2846         before removing the edge.
2847
2848         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Do not use E after
2849         it may have been freed by redirect_branch_edge or
2850         redirect_edge_succ_nodup.
2851
2852 2011-03-23  Richard Guenther  <rguenther@suse.de>
2853
2854         * tree-stdarg.c (va_list_counter_bump): Handle bumps via MEM_REF.
2855         (check_va_list_escapes): Likewise.
2856         (check_all_va_list_escapes): Likewise.
2857
2858 2011-03-23  Richard Guenther  <rguenther@suse.de>
2859
2860         * Makefile.in (IPA_TYPE_ESCAPE_H): Remove.
2861         (OBJS-archive): Remove ipa-struct-reorg.o and ipa-type-escape.o.
2862         (tree-ssa-alias.o): Do not depend on IPA_TYPE_ESCAPE_H.
2863         (alias.o): Likewise.
2864         (ipa-type-escape.o): Remove.
2865         (ipa-struct-reorg.o): Likewise.
2866         (GTFILES): Remove ipa-struct-reorg.c.
2867         * alias.c: Do not include ipa-type-escape.h.
2868         * tree-ssa-alias.c: Likewise.
2869         * common.opt (fipa-struct-reorg): Preserve for backward compatibility.
2870         * opts.c (finish_options): Do not reset flag_ipa_struct_reorg.
2871         * passes.c (init_optimization_passes): Remove ipa-struct-reorg
2872         and ipa-type-escape passes.
2873         * tree-pass.h (pass_ipa_type_escape): Remove.
2874         (pass_ipa_struct_reorg): Likewise.
2875         * ipa-struct-reorg.h: Remove.
2876         * ipa-struct-reorg.c: Likewise.
2877         * ipa-type-escape.h: Likewise.
2878         * ipa-type-escape.c: Likewise.
2879         * doc/invoke.texi (-fipa-struct-reorg): Remove.
2880         (--param struct-reorg-cold-struct-ratio): Likewise.
2881         * params.def (PARAM_STRUCT_REORG_COLD_STRUCT_RATIO): Likewise.
2882         * params.h (STRUCT_REORG_COLD_STRUCT_RATIO): Likewise.
2883         * timevar.def (TV_IPA_TYPE_ESCAPE): Likewise.
2884
2885 2011-03-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2886
2887         * config/s390/2084.md: Enable all insn reservations also for z9_ec
2888         cpu attribute value.
2889         * config/s390/s390-opts.h (enum s390_arch_option): Remove.
2890         (enum processor_type): Add PROCESSOR_2094_Z9_EC.
2891         * config/s390/s390.c (processor_flags_table): New constant array.
2892         (s390_handle_arch_option): Remove.
2893         (s390_handle_option): Remove s390_handle_arch_option invocations
2894         and OPT_mwarn_framesize_ handling.
2895         (s390_option_override): Remove s390_handle_arch_option invocation.
2896         (s390_emit_prologue): Remove use of HOST_WIDE_INT_PRINT_DEC in
2897         warnings.
2898         * config/s390/s390.md (cpu attribute): Add z9_ec value.
2899         * config/s390/s390.opt (s390_tune, s390_arch)
2900         (march=): Replace s390_arch_option enum and values with
2901         processor_type.  Set variable name to s390_arch.  Set
2902         initialization value.
2903         (mtune=): Replace s390_arch_option with processor_type.  Set
2904         variable name to s390_tune.  Set initialization value.
2905
2906 2011-03-23  Julian Brown  <julian@codesourcery.com>
2907
2908         * expr.c (expand_expr_real_1): Only use BLKmode for volatile
2909         accesses which are not naturally aligned.
2910
2911 2011-03-23  Richard Sandiford  <richard.sandiford@linaro.org>
2912
2913         PR target/47553
2914         * config/arm/predicates.md (neon_lane_number): Accept 0..15.
2915
2916 2011-03-23  Richard Sandiford  <richard.sandiford@linaro.org>
2917
2918         * optabs.h (emit_unop_insn, maybe_emit_unop_insn): Change insn code
2919         parameter from "int" to "enum insn_code".
2920         (expand_operand_type): New enum.
2921         (expand_operand): New structure.
2922         (create_expand_operand): New function.
2923         (create_fixed_operand, create_output_operand): Likewise
2924         (create_input_operand, create_convert_operand_to): Likewise.
2925         (create_convert_operand_from, create_address_operand): Likewise.
2926         (create_integer_operand): Likewise.
2927         (create_convert_operand_from_type, maybe_legitimize_operands): Declare.
2928         (maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise.
2929         (expand_insn, expand_jump_insn): Likewise.
2930         * builtins.c (expand_builtin_prefetch): Use the new interfaces.
2931         (expand_builtin_interclass_mathfn, expand_builtin_strlen): Likewise.
2932         (expand_movstr, expand_builtin___clear_cache): Likewise.
2933         (expand_builtin_lock_release): Likewise.
2934         * explow.c (allocate_dynamic_stack_space): Likewise.
2935         (probe_stack_range): Likewise.  Allow check_stack to FAIL,
2936         and use the default handling in that case.
2937         * expmed.c (check_predicate_volatile_ok): Delete.
2938         (store_bit_field_1, extract_bit_field_1): Use the new interfaces.
2939         (emit_cstore): Likewise.
2940         * expr.c (emit_block_move_via_movmem): Likewise.
2941         (set_storage_via_setmem, expand_assignment): Likewise.
2942         (emit_storent_insn, try_casesi): Likewise.
2943         (emit_single_push_insn): Likewise.  Allow the expansion to fail.
2944         * optabs.c (expand_widen_pattern_expr, expand_ternary_op): Likewise.
2945         (expand_vec_shift_expr, expand_binop_directly): Likewise.
2946         (expand_twoval_unop, expand_twoval_binop): Likewise.
2947         (expand_unop_direct, emit_indirect_jump): Likewise.
2948         (emit_conditional_move, vector_compare_rtx): Likewise.
2949         (expand_vec_cond_expr, expand_val_compare_and_swap_1): Likewise.
2950         (expand_sync_operation, expand_sync_fetch_operation): Likewise.
2951         (expand_sync_lock_test_and_set): Likewise.
2952         (maybe_emit_unop_insn): Likewise.  Change icode to an insn_code.
2953         (emit_unop_insn): Likewise.
2954         (expand_copysign_absneg): Change icode to an insn_code.
2955         (create_convert_operand_from_type): New function.
2956         (maybe_legitimize_operand, maybe_legitimize_operands): Likewise.
2957         (maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise.
2958         (expand_insn, expand_jump_insn): Likewise.
2959         * config/i386/i386.md (setmem<mode>): Use nonmemory_operand rather
2960         than const_int_operand for operand 2.
2961
2962 2011-03-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2963
2964         * dwarf2out.c (const_ok_for_output_1): Print the unspec enum name
2965         if possible.
2966
2967 2011-03-22  Nathan Froyd  <froydnj@codesourcery.com>
2968
2969         * emit-rtl.c (emit_pattern_before_noloc): New function.
2970         (emit_insn_before_noloc, emit_jump_insn_before_noloc): Call it.
2971         (emit_call_insn_before_noloc, emit_debug_insn_before_noloc): Likewise.
2972         (emit_pattern_after_noloc): New function.
2973         (emit_insn_after_noloc, emit_jump_insn_after_noloc): Call it.
2974         (emit_call_insn_after_noloc, emit_debug_insn_after_noloc): Likewise.
2975
2976 2011-03-22  Nathan Froyd  <froydnj@codesourcery.com>
2977
2978         * libgcc2.c (__lshrdi3, __ashldi3, __ashrdi3): Use W_TYPE_SIZE.
2979         (__ffsDI2): Likewise.
2980
2981 2011-03-22  Richard Henderson  <rth@redhat.com>
2982
2983         * config/alpha/alpha.c (direct_return): Use TARGET_ABI_OSF instead
2984         of !TARGET_ABI_OPEN_VMS.
2985         (alpha_trampoline_init, alpha_start_function): Likewise.
2986         (alpha_expand_epilogue, alpha_file_start): Likewise.
2987         * config/alpha/alpha.md (divsi3, modsi3): Likewise.
2988         (udivsi3, umodsi3, divdi3, moddi3, udivdi3, umoddi3): Likewise.
2989         (*divmodsi_internal_er, *divmodsi_internal_er_1): Likewise.
2990         (*divmodsi_internal, *divmoddi_internal_er): Likewise.
2991         (*divmoddi_internal_er_1, *divmoddi_internal): Likewise.
2992
2993 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
2994
2995         * config/s390/s390-opts.h: New.
2996         * config/s390/s390.c (s390_tune, s390_tune_flags, s390_arch,
2997         s390_arch_flags, s390_warn_framesize, s390_stack_size,
2998         s390_stack_guard): Remove.
2999         (s390_handle_arch_option): Return void.  Take enum
3000         s390_arch_option value instead of string and searching array.
3001         (s390_handle_option): Don't assert that global structures are in
3002         use.  Access variables via opts pointer.  Use error_at.  Don't use
3003         sscanf for -mstack-guard= or -mstack-size=.  Update call to
3004         s390_handle_arch_option.
3005         (s390_option_override): Update call to s390_handle_arch_option.
3006         (s390_emit_prologue): Use %d format for s390_stack_size in
3007         diagnostic.  Use %wd for HOST_WIDE_INT.
3008         * config/s390/s390.h (enum processor_type): Move to s390-opts.h.
3009         (s390_tune, s390_tune_flags, s390_arch, s390_arch_flags): Remove.
3010         * config/s390/s390.opt (config/s390/s390-opts.h): New
3011         HeaderInclude entry.
3012         (s390_arch_string, s390_tune, s390_tune_flags, s390_arch,
3013         s390_arch_flags, s390_warn_framesize): New Variable entries.
3014         (s390_arch_option): New Enum and EnumValue entries.
3015         (march=): Use Enum instead of Var.
3016         (mstack-guard=, mstack-size=): Use UInteger and Var.
3017         (mtune=): Use Enum.
3018
3019 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3020
3021         * config/score/score.c (score_handle_option): Don't assert that
3022         global structures are in use.  Access target_flags via opts
3023         pointer.  Use value of -march= option to determine target_flags
3024         settings.
3025         * config/score/score.opt (march=): Use Enum.
3026         (score_arch): New Enum and EnumValue entries.
3027
3028 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3029
3030         * config/mep/mep.c (option_mtiny_specified): Remove.
3031         (mep_option_override): Move register handling for -mivc2 from
3032         mep_handle_option.  Use global_options_set.x_mep_tiny_cutoff
3033         instead of option_mtiny_specified.
3034         (mep_handle_option): Access target_flags via opts pointer.  Don't
3035         assert that global structures are in use.  Defer part of -mivc2
3036         handling and move it to mep_option_override.
3037         * config/mep/mep.opt (IVC2): New Mask entry.
3038         (mivc2): Use Var and Defer instead of Mask.
3039
3040 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3041
3042         * config/v850/v850-opts.h: New.
3043         * config/v850/v850.c (small_memory): Replace with
3044         small_memory_physical_max array.  Make that array static const.
3045         (v850_handle_memory_option): Take integer value of argument.  Take
3046         gcc_options pointer, option text and location.  Return void.
3047         Update for changes to small memory structures.
3048         (v850_handle_option): Access target_flags via opts pointer.  Don't
3049         assert that global structures are in use.  Update calls to
3050         v850_handle_memory_option.
3051         (v850_encode_data_area): Update references to small memory settings.
3052         * config/v850/v850.h (struct small_memory_info, small_memory): Remove.
3053         (enum small_memory_type): Move to v850-opts.h.
3054         * config/v850/v850.opt (config/v850/v850-opts.h): New
3055         HeaderInclude entry.
3056         (small_memory_max): New Variable entry.
3057         (msda): Replace by pair of options msda= and msda-.  Use UInteger.
3058         (mtda, mzda): Likewise.
3059
3060 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3061
3062         * config/sh/sh.c (sh_handle_option): Access target_flags via opts
3063         pointer.  Don't assert that global structures are in use.
3064
3065 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3066
3067         * config/pdp11/pdp11.c (pdp11_handle_option): Access target_flags
3068         via opts pointer.  Don't assert that global structures are in use.
3069
3070 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3071
3072         * config/pa/pa-hpux.opt (flag_pa_unix): New Variable entry.
3073         (munix=93): Use Var.
3074         * config/pa/pa-hpux1010.opt (munix=95): Use Var.
3075         * config/pa/pa-hpux1111.opt (munix=98): Use Var.
3076         * config/pa/pa-opts.h: New.
3077         * config/pa/pa.c (pa_cpu, flag_pa_unix): Remove.
3078         (pa_handle_option): Don't assert that global structures are in
3079         use.  Access target_flags via opts pointer.  Don't handle
3080         OPT_mschedule_, OPT_mfixed_range_, OPT_munix_93, OPT_munix_95 or
3081         OPT_munix_98 here.
3082         (pa_option_override): Handle deferred OPT_mfixed_range_.
3083
3084 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3085
3086         * config/mn10300/mn10300-opts.h: New.
3087         * config/mn10300/mn10300.c (mn10300_processor,
3088         mn10300_tune_string): Remove.
3089         (mn10300_handle_option): Don't assert that global structures are
3090         in use.  Access mn10300_processor via opts pointer.  Don't handle
3091         OPT_mtune_ here.
3092         * config/mn10300/mn10300.h (enum processor_type): Move to
3093         mn10300-opts.h.
3094         (mn10300_processor): Remove.
3095         * config/mn10300/mn10300.opt (config/mn10300/mn10300-opts.h): New
3096         HeaderInclude entry.
3097         (mn10300_processor): New Variable entry.
3098         (mtune=): Use Var.
3099
3100 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3101
3102         * config/microblaze/microblaze.c: Don't include opts.h.
3103         (microblaze_handle_option, TARGET_HANDLE_OPTION): Remove.
3104         * config/microblaze/microblaze.opt (mxl-stack-check): Use Warn.
3105         (mno-clearbss): Use Var and Warn.
3106
3107 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3108
3109         * config/m32r/m32r-opts.h: New.
3110         * config/m32r/m32r.c (m32r_model, m32r_sdata): Remove.
3111         (m32r_handle_option): Don't assert that global structures are in
3112         use.  Access target_flags and m32r_cache_flush_func via opts
3113         pointer.  Don't handle OPT_mmodel_, OPT_msdata_ or
3114         OPT_mno_flush_trap here.
3115         * config/m32r/m32r.h (Code Models, Small Data Area): Replace by
3116         include of m32r-opts.h.
3117         * config/m32r/m32r.opt (config/m32r/m32r-opts.h): New
3118         HeaderInclude entry.
3119         (m32r_model_selected, m32r_sdata_selected): New Variable entries.
3120         (mmodel=): Use Enum and Var.
3121         (m32r_model): New Enum and EnumValue entries.
3122         (mno-flush-trap): Use Var.
3123         (msdata=): Use Enum and Var.
3124         (m32r_sdata): New Enum and EnumValue entries.
3125
3126 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3127
3128         * config/m32c/m32c.c: Don't include opts.h.
3129         (target_memregs, target_memregs_set, TARGET_HANDLE_OPTION,
3130         m32c_handle_option): Remove.
3131         (m32c_option_override): Check global_options_set.x_target_memregs
3132         instead of target_memregs_set.
3133         * config/m32c/m32c.h (target_memregs): Remove.
3134         * config/m32c/m32c.opt (memregs=): Use UInteger with integer
3135         variable.
3136
3137 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3138
3139         * config/iq2000/iq2000-opts.h: New.
3140         * config/iq2000/iq2000.c: Don't include opts.h.
3141         (iq2000_tune, iq2000_handle_option, TARGET_HANDLE_OPTION): Remove.
3142         * config/iq2000/iq2000.h (enum processor_type, iq2000_tune): Remove.
3143         * config/iq2000/iq2000.opt (config/iq2000/iq2000-opts.h): New
3144         HeaderInclude entry.
3145         (iq2000_tune): New Variable entry.
3146         (march=): Add comment.  Use Enum.
3147         (iq2000_arch): New Enum and EnumValue entries.
3148         (mcpu=): Use Enum and Var.
3149         (iq2000_tune): New Enum and EnumValue entries.
3150
3151 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3152
3153         * config/ia64/ia64-opts.h: New.
3154         * config/ia64/ia64.c (ia64_tune): Remove.
3155         (ia64_handle_option): Don't handle OPT_mfixed_range_ or OPT_mtune_
3156         here.  Use error_at.
3157         (ia64_option_override): Handle deferred OPT_mfixed_range_.
3158         * config/ia64/ia64.h (enum processor_type, ia64_tune): Remove.
3159         * config/ia64/ia64.opt (config/ia64/ia64-opts.h): New
3160         HeaderInclude entry.
3161         (ia64_tune): New Variable entry.
3162         (mfixed-range=): Use Defer and Var.
3163         (mtune=): Use Enum and Var.
3164         (ia64_tune): New Enum and EnumValue entries.
3165
3166 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3167
3168         * config/frv/frv-opts.h: New.
3169         * config/frv/frv-protos.h (enum frv_cpu, frv_cpu_t): Move to
3170         frv-opts.h.
3171         (frv_cpu_type): Remove.
3172         * config/frv/frv.c: Don't include opts.h.
3173         (frv_cpu_type, frv_handle_option, TARGET_HANDLE_OPTION): Remove.
3174         * config/frv/frv.opt (config/frv/frv-opts.h): New HeaderInclude entry.
3175         (frv_cpu_type): New Variable entry.
3176         (frv_cpu): New Enum and EnumValue entries.
3177
3178 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3179
3180         * config/cris/cris.c (cris_handle_option): Access target_flags via
3181         opts pointer.  Don't assert that global structures are in use.
3182         Don't call CRIS_SUBTARGET_HANDLE_OPTION.
3183         * config/cris/cris.h (CRIS_SUBTARGET_HANDLE_OPTION): Don't define.
3184
3185 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3186
3187         * config/bfin/bfin-opts.h: New.
3188         * config/bfin/bfin.c (bfin_lib_id_given, bfin_cpu_type,
3189         bfin_si_revision, bfin_workarounds): Remove.
3190         (bfin_cpus): Make static const.
3191         (bfin_load_pic_reg): Check global_options_set.x_bfin_library_id
3192         not bfin_lib_id_given.
3193         (bfin_handle_option): Don't set bfin_lib_id_given.  Access
3194         bfin_cpu_type, bfin_si_revision and bfin_workarounds via opts
3195         pointer. Use error_at.  Don't assert that global structures are in use.
3196         * config/bfin/bfin.h: Include bfin-opts.h.
3197         (enum bfin_cpu_type, bfin_cpu_t): Move to bfin-opts.h.
3198         (bfin_cpu_type, bfin_si_revision, bfin_workarounds): Remove.
3199         * bfin.opt (config/bfin/bfin-opts.h): New HeaderInclude entry.
3200         (bfin_cpu_type, bfin_si_revision, bfin_workarounds): New Variable
3201         entries.
3202
3203 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3204
3205         * config/arm/arm.opt (mhard-float, msoft-float): Use Alias.
3206         * config/arm/arm.c (arm_handle_option): Don't handle -mhard-float
3207         or -msoft-float here.
3208         * config/arm/arm.h (CPP_SPEC): Handle -mfloat-abi=*, not
3209         -msoft-float and -mhard-float.
3210         (OPTION_DEFAULT_SPECS): Don't handle -mhard-float and -msoft-float.
3211         * config/arm/coff.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
3212         msoft-float.
3213         * config/arm/elf.h (ASM_SPEC): Don't handle -mhard-float and
3214         -msoft-float.
3215         (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not msoft-float.
3216         * config/arm/linux-elf.h (MULTILIB_DEFAULTS): Use mfloat-abi=hard,
3217         not mhard-float.
3218         (LIBGCC_SPEC): Don't handle -msoft-float.
3219         * config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Don't handle
3220         -mhard-float.
3221         * config/arm/pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
3222         msoft-float.
3223         * config/arm/rtems-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Handle
3224         -mfloat-abi=*, not -msoft-float and -mhard-float.
3225         * config/arm/semi.h((ASM_SPEC): Don't handle -mhard-float and
3226         -msoft-float.
3227         * config/arm/t-arm-elf (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS):
3228         Use mfloat-abi=hard and mfloat-abi=soft in comments, not
3229         mhard-float and msoft-float.
3230         * config/arm/t-linux (MULTILIB_OPTIONS): Use mfloat-abi=hard and
3231         mfloat-abi=soft in comments, not mhard-float and msoft-float.
3232         * config/arm/t-rtems (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
3233         mfloat-abi=soft and mfloat-abi=hard, not msoft-float and
3234         mhard-float.
3235         * config/arm/t-strongarm-elf (MULTILIB_OPTIONS): Use
3236         mfloat-abi=hard and mfloat-abi=soft, not mhard-float and
3237         msoft-float.
3238         * config/arm/t-wince-pe (MULTILIB_OPTIONS): Use mfloat-abi=hard,
3239         not mhard-float.
3240         * config/arm/wince-pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft,
3241         not msoft-float.
3242
3243 2011-03-22  Richard Henderson  <rth@redhat.com>
3244
3245         * config/alpha/alpha.c (alpha_expand_prologue): Don't test
3246         TARGET_ABI_WINDOWS_NT.
3247         (alpha_output_function_end_prologue): Likewise.
3248         * config/alpha/alpha.h (TARGET_ABI_OSF): Likewise.
3249         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
3250         * config/alpha/alpha.md (call, call_value, tablejump): Likewise.
3251         (trap, *movsi_nt_vms): Likewise.
3252         (call_nt, call_value_nt, *call_nt_1, *call_value_nt_1): Remove.
3253         (*tablejump_osf_nt_internal): Remove.
3254         * config/alpha/predicates.md (input_operand): Only test Pmode.
3255
3256 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3257
3258         * config/alpha/alpha.c (alpha_handle_option): Access target_flags
3259         via opts pointer.  Use error_at.  Don't assert that global
3260         structures are in use.
3261
3262 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3263
3264         * config/i386/i386.c (ix86_isa_flags_explicit): Remove.
3265         (ix86_handle_option): Access ix86_isa_flags and
3266         ix86_isa_flags_explicit via opts pointer.  Don't assert that
3267         global structures are in use.
3268         (ix86_function_specific_save, ix86_function_specific_restore):
3269         Update ix86_isa_flags_explicit field name.
3270         * config/i386/i386.opt (ix86_isa_flags_explicit): New Variable entry.
3271         (ix86_isa_flags_explicit): Rename TargetSave entry to
3272         x_ix86_isa_flags_explicit.
3273
3274 2011-03-22  Richard Henderson  <rth@redhat.com>
3275
3276         * config/alpha/alpha.c (NUM_ARGS): Don't test TARGET_ABI_UNICOSMK.
3277         (alpha_option_override, direct_return): Likewise.
3278         (alpha_arg_partial_bytes, alpha_setup_incoming_varargs): Likewise.
3279         (alpha_va_start, alpha_gimplify_va_arg, alpha_sa_mask): Likewise.
3280         (alpha_sa_size, compute_frame_size, alpha_expand_prologue): Likewise.
3281         (alpha_start_function, alpha_output_function_end_prologue): Likewise.
3282         (alpha_expand_epilogue, alpha_end_function): Likewise.
3283         (alpha_init_libfuncs): Likewise.
3284         (struct machine_function): Remove unicosmk members.
3285         (print_operand) ['t']: Remove.
3286         (unicosmk_must_pass_in_stack, unicosmk_initial_elimination_offset,
3287         unicosmk_output_module_name, unicosmk_output_common,
3288         current_section_align, unicosmk_output_text_section_asm_op,
3289         unicosmk_output_data_section_asm_op, unicosmk_init_sections,
3290         unicosmk_section_type_flags, unicosmk_unique_section,
3291         unicosmk_asm_named_section, unicosmk_insert_attributes,
3292         unicosmk_output_align, unicosmk_defer_case_vector,
3293         unicosmk_output_addr_vec, unicosmk_output_deferred_case_vectors,
3294         SSIB_PREFIX, SSIB_PREFIX_LEN, unicosmk_ssib_name, unicosmk_gen_dsib,
3295         unicosmk_output_ssib, unicosmk_add_call_info_word,
3296         unicosmk_extern_head, unicosmk_output_default_externs,
3297         unicosmk_output_externs, unicosmk_add_extern, unicosmk_dex_list,
3298         unicosmk_dex_count, unicosmk_special_name, unicosmk_need_dex,
3299         unicosmk_output_dex, unicosmk_file_start, unicosmk_file_end): Remove.
3300         * config/alpha/alpha-protos.h: Update.
3301         * config/alpha/alpha.h (TARGET_ABI_OSF): Don't test TARGET_ABI_UNICOSMK.
3302         * config/alpha/alpha.md (UNSPEC_UMK_LAUM, UNSPEC_UMK_LALM): Remove.
3303         (UNSPEC_UMK_LAL, UNSPEC_UMK_LOAD_CIW): Remove.
3304         (mulsi3): Don't test TARGET_ABI_UNICOSMK.
3305         (*mulsi_se, mulvsi3): Likewise.
3306         (divsi3, udivsi3, modsi3, umodsi3, divdi3, udivdi3): Likewise.
3307         (*divmodsi_internal, call, call_value, realign): Likewise.
3308         (moddi3, umoddi3): Likewise; remove duplicate expander.
3309         (moddi3_umk, umoddi3_umk, call_umk, call_value_umk): Remove.
3310         (*call_umk_1, *movsi, umk_laum, umk_lalm, *umk_load_ciw): Remove.
3311         (*movdi_nofix): Remove r/U alternative.
3312         (umk_mismatch_args, arg_home_umk, *call_value_umk): Remove.
3313         * config/alpha/constraints.md ("U"): Remove.
3314         * config/alpha/predicates.md (call_operand"): Don't test
3315         TARGET_ABI_UNICOSMK.
3316
3317 2011-03-22  Joseph Myers  <joseph@codesourcery.com>
3318
3319         * target.def (handle_option): Take gcc_options and
3320         cl_decoded_option pointers and location_t.
3321         * doc/tm.texi.in (TARGET_HANDLE_OPTION): Update documentation.
3322         * doc/tm.texi: Regenerate.
3323         * hooks.c (hook_bool_size_t_constcharptr_int_true): Remove.
3324         * hooks.h (hook_bool_size_t_constcharptr_int_true): Don't declare.
3325         * lto-opts.c (lto_reissue_options): Generate option structure for
3326         targetm.handle_option call.
3327         * opts.c (target_handle_option): Update call to
3328         targetm.handle_option.  Remove assertions about values now passed
3329         down to hook.
3330         * targhooks.c (default_target_handle_option): New.
3331         * targhooks.h (default_target_handle_option): Declare.
3332         * config/alpha/alpha.c: Include opts.h.
3333         (alpha_handle_option): Update to new hook interface.
3334         * config/arm/arm.c: Include opts.h.
3335         (arm_handle_option): Update to new hook interface.
3336         * config/arm/t-arm (arm.o): Update dependencies.
3337         * config/bfin/bfin.c: Include opts.h.
3338         (bfin_handle_option): Update to new hook interface.
3339         * config/cris/cris.c: Include opts.h.
3340         (cris_handle_option): Update to new hook interface.
3341         * config/frv/frv.c: Include opts.h.
3342         (frv_handle_option): Update to new hook interface.
3343         * config/i386/i386.c: Include opts.h.
3344         (ix86_handle_option): Update to new hook interface.
3345         (ix86_valid_target_attribute_inner_p): Generate option structure
3346         for call to ix86_handle_option.
3347         * config/i386/t-i386 (i386.o): Update dependencies.
3348         * config/ia64/ia64.c: Include opts.h.
3349         (ia64_handle_option): Update to new hook interface.
3350         * config/ia64/t-ia64 (ia64.o): Update dependencies.
3351         * config/iq2000/iq2000.c: Include opts.h.
3352         (iq2000_handle_option): Update to new hook interface.
3353         * config/m32c/m32c.c: Include opts.h.
3354         (m32c_handle_option): Update to new hook interface.
3355         * config/m32r/m32r.c: Include opts.h.
3356         (m32r_handle_option): Update to new hook interface.
3357         * config/m68k/m68k.c: Include opts.h.
3358         (m68k_handle_option): Update to new hook interface.
3359         * config/mep/mep.c: Include opts.h.
3360         (mep_handle_option): Update to new hook interface.
3361         * con