OSDN Git Service

PR target/35714
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-05-08  Uros Bizjak  <ubizjak@gmail.com>
2
3         PR target/35714
4         * config/i386/mmx.md (mmx_subv2sf3): New expander.
5         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
6         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
7         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
8         to handle nonimmediate operands.
9         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
10         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
11         to handle nonimmediate operands.
12         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
13         (mmx_pmulhrwv4hi3): New expander.  Use
14         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
16         (sse2_umulv1siv1di3): New expander.  Use
17         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
19         (mmx_eq<mode>3): New expander.  Use
20         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
21         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
22         (mmx_uavgv8qi3): New expander.  Use
23         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
24         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
25         (mmx_uavgv4hi3): New expander.  Use
26         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
27
28         * config/i386/sse.md
29         (*sse_movhlps): Rename from sse_movhlps insn pattern.
30         (sse_movhlps): New expander.  Use ix86_fixup_binary_operands
31         to handle nonimmediate operands.
32         (*sse_movlhps): Rename from sse_movlhps insn pattern.
33         (sse_movlhps): New expander.  Use ix86_fixup_binary_operands
34         to handle nonimmediate operands.
35         (*sse_loadhps): Rename from sse_loadhps insn pattern.
36         (sse_loadhps): New expander.  Use ix86_fixup_binary_operands
37         to handle nonimmediate operands.
38         (*sse_loadlps): Rename from sse_loadlps insn pattern.
39         (sse_loadlps): New expander.  Use ix86_fixup_binary_operands
40         to handle nonimmediate operands.
41         (*sse2_unpckhpd): Rename from sse2_unpckhpd insn pattern.
42         (sse2_unpckhpd): New expander.  Use
43         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
44         (*sse2_unpcklpd): Rename from sse2_unpcklpd insn pattern.
45         (sse2_unpcklpd): New expander.  Use
46         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
47         (*sse_loadhpd): Rename from sse_loadhpd insn pattern.
48         (sse_loadhpd): New expander.  Use ix86_fixup_binary_operands
49         to handle nonimmediate operands.
50         (*sse_loadlpd): Rename from sse_loadlpd insn pattern.
51         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
52         to handle nonimmediate operands.
53         (*sse2_<plusminus_insn><mode>3): Rename from
54         sse2_<plusminus_insn><mode>3 insn pattern.
55         (sse2_<plusminus_insn><mode>3): New expander.  Use
56         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
57         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
58         (sse2_umulv2siv2di3): New expander.  Use
59         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
60         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
61         (sse4_1_mulv2siv2di3): New expander.  Use
62         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
63         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
64         (sse2_pmaddwd): New expander.  Use
65         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
66         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
67         (sse2_eq<mode>3): New expander.  Use
68         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
69         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
70         (sse4_1_eqv2di3): New expander.  Use
71         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
72         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
73         (sse2_uavgv16qi3): New expander.  Use
74         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
75         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
76         (sse2_uavgv16qi3): New expander.  Use
77         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
78         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
79         (sse2_uavgv8hi3): New expander.  Use
80         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
81         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
82         (ssse3_pmulhrswv8hi3): New expander.  Use
83         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
84         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
85         (ssse3_pmulhrswv4hi3): New expander.  Use
86         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
87
88         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
89         (<sse>_vmmul<mode>3): Ditto.
90         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
91         (divv2df3): Ditto.
92         (ssse3_pmaddubsw128): Use register_operand for operand 1.
93         (ssse3_pmaddubsw): Ditto.
94
95         * config/i386/sse.md (ix86_fixup_binary_operands): Assert that src1
96         and src2 must have the same mode when swapped.
97         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
98         and ix86_binary_operator_ok.  Do not force operands in registers
99         when optimizing.
100
101 2008-05-07  Jan Hubicka  <jh@suse.cz>
102
103         * cgraph.c (dump_cgraph_node): Update.
104         * cgraph.h (cgraph_local_info): Break out inline summary.
105         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
106         hook.
107         * ipa-inline (inline_summary): New accestor function.
108         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
109         cgraph_decide_inlining, compute_inline_parameters): Update.
110         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
111
112 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
113
114         Cleanup ColdFire scheduling support and add V4 pipeline model.
115
116         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
117         (define_attr cpu): Add cfv4 value.
118         (define_attr type, define_attr type1): Merge into a single 'type'
119         attribute.  Update all uses.
120         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
121         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
122         Update all uses.
123         (define_attr opx_mem, define_attr opy_mem): Remove.
124         (define_attr op_mem): Clean up, update comment.
125         (define_attr size): Use specific values instead of general int.
126         (define_attr guess, define_attr split): Remove.  Update all uses.
127         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
128         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
129         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
130         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
131         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
132         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
133         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
134         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
135         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
136         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
137         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
138         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
139         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
140         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
141         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
142         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
143         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
144         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
145         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
146         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
147         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
148         Update or set attributes.
149         (stack_tie): New fake instruction.
150
151         * config/m68k/m68k.h (TUNE_CFV4): New macro.
152         (m68k_sched_attr_size): Update declaration.
153         (m68k_sched_attr_type2): Remove.
154         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
155         Declare new bypass predicates.
156
157         * config/m68k/m68k.c (m68k_sched_issue_rate,
158         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
159         implementations.
160         (TARGET_SCHED_ISSUE_RATE,
161         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
162         (override_options): Handle scheduling for ColdFire V4 core.
163         (m68k_expand_prologue): Emit stack_tie.
164         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
165         'OP_TYPE_FPN'.  Update all uses.
166         (sched_guess_p): Remove.
167         (sched_address_type): Handle symbolic addresses.
168         (sched_get_operand): New static function.
169         (sched_operand_type): Merge into sched_attr_op_type.
170         (sched_attr_op_type): Handle FP registers, handle quick constants,
171         update.
172         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
173         (m68k_sched_attr_size): Update.  Move logic to ...
174         (sched_get_attr_size_int): New static function.
175         (sched_get_opxy_mem_type): New static function.
176         (m68k_sched_attr_op_mem): Update.
177         (m68k_sched_attr_type2): Remove.
178         (sched_cfv4_bypass_data): New static variable.
179         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
180         (m68k_sched_issue_rate): Implement scheduler hook.
181         (struct _sched_ib: enabled_p): New field.
182         (m68k_sched_variable_issue): Update.  Handle V4.
183         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
184         sched_dump_class_func_t, sched_dump_split_class,
185         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
186         sched_dump_dfa_class, m68k_sched_dump): Remove.
187         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
188         hook.
189         (m68k_sched_init_global): Remove statisctics dumping, introduce
190         sanity check that all instructions have pipeline reservations.  Handle
191         ColdFire V4 core.
192         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
193         Handle ColdFire V4 core.
194         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
195         New static functions.
196         (m68k_sched_address_bypass_p): New bypass predicate.
197         (sched_get_indexed_address_scale): New static function.
198         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
199
200         * cf.md: Update comments.
201         (define_attr type2): Remove.  Use 'type' attribute instead.
202         Update all uses.
203         (cf_ib): Rename to cfv123_ib.  Update all uses.
204         (cf_oep): Rename to cfv123_oep.  Update all uses.
205         (cf_chr): Rename to cfv123_chr.  Update all uses.
206         (cf_mem): Rename to cfv123_mem.  Update all uses.
207         (cf_mac): Move to more appropriate place.
208         (cfv123_guess): New automaton and cpu_unit.
209         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
210         Update uses of 'size' attribute.  Handle before reload scheduling.
211         (cfv123_guess): New dummy reservation for unhandled instructions.
212         (cfv4_*): Pipeline description of ColdFire V4 core.
213         (ignore): New reservation to handle 'ignore' type.
214
215 2008-05-07  Ian Lance Taylor  <iant@google.com>
216
217         PR middle-end/36013
218         * gimplify.c (find_single_pointer_decl_1): Don't look through
219         indirections.
220         (find_single_pointer_decl): Adjust comments.
221
222 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
223
224         PR middle-end/36137
225         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
226         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
227
228         PR middle-end/36106
229         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
230         integral type rather than floating point, then VIEW_CONVERT_EXPR
231         to the floating point type.
232
233 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
234
235         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
236         TFmode op0 to register.
237
238 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
239
240         * c-decl.c (grokdeclarator): Comment typo.
241
242 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
243
244         * tree-flow.h: Remove prototype for computed_goto_p.
245         * tree-cfg.c (computed_goto_p): Make static.
246
247 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
248
249         PR target/35657
250         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
251         (contains_aligned_value_p): This.  Handle _Decimal128.
252         (ix86_function_arg_boundary): Only align _Decimal128 to its
253         natural boundary and handle it properly.
254
255 2008-05-06  Martin Jambor  <mjambor@suse.cz>
256
257         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
258         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
259         (ipcp_method_set_orig_node): Removed.
260         (ipcp_cval_get_cvalue_type): Removed.
261         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
262         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
263         (ipcp_cval_set_cvalue_type): Removed.
264         (ipcp_cval_get_cvalue): Removed.
265         (ipcp_cval_set_cvalue): Removed.
266         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
267         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
268         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
269         (ipcp_cval_meet): Renamed to ipa_lattice_meet
270         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
271         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
272         (ipcp_get_ith_lattice): Changed parameters.
273         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
274         (ipcp_lattice_from_jfunc): Changed parameters.
275         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
276         (ipcp_method_cval_print): Added temporary variable info.
277         (ipcp_redirect): Removed already unused local variable caller.
278         (ipcp_redirect): New temporary variable orig_callee_info
279         (ipcp_redirect): Removed newly unused local variable callee.
280         (ipcp_redirect): Removed (a bit confusing) local variable type.
281         (ipcp_insert_stage): Added local variable info.
282         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters 
283         renamed too
284         (ipcp_formal_create): Removed.
285         (ipcp_method_cval_set): Removed.
286         (ipcp_propagate_stage): Renamed lattice variables.
287         (ipcp_method_cval_set_cvalue_type): Removed.
288         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
289         (ipcp_print_all_lattices): Changed printed strings to refer to 
290         lattices rather than cvals.
291         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
292         (ipcp_propagate_const): Changed formal parameters.
293         (build_const_val): Changed formal parameters.
294         (ipcp_insert_stage): Removed useless variable cvalue
295         (build_const_val): Changed formal parameters.
296         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
297         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
298         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
299         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
300         (ipcp_print_func_profile_counts): Changed string from "method" to 
301         "function"
302         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
303         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
304         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
305         (ipcp_structures_print): Renamed to ipcp_print_all_structures
306         (ipcp_profile_print): Renamed to ipcp_print_profile_data
307         (ipcp_lat_is_const): Changed parameters and made inline.
308         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
309         (ipcp_redirect): Renamed to ipcp_need_redirect_p
310         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using 
311         the predicate condition directly
312         (ipcp_propagate_stage): Added local variable args. Removed local
313         variable callee.  (Both are mere code simplifications.)
314         (ipcp_method_dont_insert_const): Renamed to
315         ipcp_node_not_modifiable_p.
316         (ipcp_node_not_modifiable_p): Made inline.
317         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
318         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
319         (ipcp_print_all_lattices): Removed variable cvalue
320         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
321         Updated comments.
322
323 2008-05-06  Olivier Hainque  <hainque@adacore.com>
324
325         * tree-sra.c (try_instantiate_multiple_fields): Early return
326         if field has POINTER_TYPE.
327
328 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
329
330         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
331         by using 'q' specifier for instruction.
332         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
333
334 2008-05-06  Anatoly Sokolov <aesok@post.ru>
335
336         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
337         Change mode of zero_extract from QImode to HImode.
338         (sign bit tests peepholes): (Ditto.).
339
340 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
341
342         * config/i386/mmx.md: Remove double backslashes from asm templates.
343         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
344         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
345         to handle nonimmediate operands.
346         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
347         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
348         to handle nonimmediate operands.
349         (*mmx_<code>v2sf3_finite): New insn pattern.
350         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
351         (mmx_<code>v2sf3): New expander.  Use
352         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
353         (mmx_<plusminus_insn><mode>3): New expander.  Use
354         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
355         (*mmx_<plusminus_insn><mode>3): New insn pattern.
356         (mmx_add<mode>3): Removed.
357         (mmx_ssadd<mode>3): Ditto.
358         (mmx_usadd<mode>3): Ditto.
359         (mmx_sub<mode>3): Ditto.
360         (mmx_sssub<mode>3): Ditto.
361         (mmx_ussub<mode>3): Ditto.
362         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
363         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
364         to handle nonimmediate operands.
365         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
366         insn pattern.
367         (mmx_smulv4hi3_highpart): New expander.  Use
368         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
369         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
370         insn pattern.
371         (mmx_umulv4hi3_highpart): New expander.  Use
372         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
373         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
374         (mmx_<code>v4hi3): New expander.  Use
375         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
376         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
377         (mmx_<code>v8qi3): New expander.  Use
378         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
379         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
380         (mmx_<code><mode>3): New expander.  Use
381         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
382
383 2008-05-05  Jan Hubicka  <jh@suse.cz>
384
385         PR tree-optimization/36118
386         * passes.c (pass_init_dump_file): Fix dump header.
387
388 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
389
390         PR middle-end/36141
391         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
392         VCE for function decls.
393
394 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
395
396         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
397
398 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
399
400         * config/i386/i386.md (sat_plusminus): New.
401         (plusminus_insn): Likewise.
402         (plusminus_mnemonic): Likewise.
403         (addsub): Removed.
404         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
405         (*<addsub><mode>3_cc_overflow): Renamed to ...
406         (*<plusminus_insn><mode>3_cc_overflow): This.
407         (*<addsub>si3_zext_cc_overflow): Renamed to ...
408         (*<plusminus_insn>si3_zext_cc_overflow): This.
409
410         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
411         (<plusminus_insn><mode>3): This.
412         (*<addsub><mode>3): Renamed to ...
413         (*<plusminus_insn><mode>3): This.
414         (<sse>_vm<addsub><mode>3): Renamed to ...
415         (<sse>_vm<plusminus_insn><mode>3): This.
416         (sse3_h<addsub>v4sf3): Renamed to ...
417         (sse3_h<plusminus_insn>v4sf3): This.
418         (sse3_h<addsub>v2df3): Renamed to ...
419         (sse3_h<plusminus_insn>v2df3): This.
420         (<plusminus_insn><mode>3): New.
421         (*<plusminus_insn><mode>3): Likewise.
422         (sse2_<plusminus_insn><mode>3): Likewise.
423         (add<mode>): Removed.
424         (*add<mode>3): Likewise.
425         (sse2_ssadd<mode>3): Likewise.
426         (sse2_usadd<mode>3): Likewise.
427         (sub<mode>3): Likewise.
428         (*sub<mode>3): Likewise.
429         (sse2_sssub<mode>3): Likewise.
430         (sse2_ussub<mode>3): Likewise.
431
432 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
433
434         * gthr-single.h: Add in required interface elements as per gthr.h.
435         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
436         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
437         Generalize UNUSED macro. 
438         (__gthread_once): Add.
439         (__gthread_key_create): Add.
440         (__gthread_key_delete): Add.
441         (__gthread_getspecific): Add.
442         (__gthread_setspecific): Add.
443         
444 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
445
446         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
447         the same size types for the indirect reference on the rhs, then
448         create a VCE.
449
450 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
451
452         * config/i386/i386.md
453         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
454         one insn template instead of template series.
455         (*xordi_1_rex64): Ditto.
456         (*xordi_2_rex64): Ditto.
457
458 2008-05-05  Ira Rosen  <irar@il.ibm.com>
459
460         PR tree-optimization/36119
461         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
462         in case of SLP.
463
464 2008-06-04  Jan Hubicka  <jh@suse.cz>
465
466         tree-optimization/36100
467         * tree-pass.h (pass_O0_always_inline): Declare.
468         * ipa-inline.c (inline_transform): Remove dead code.
469         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
470         pass_O0_always_inline): New.
471         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
472
473 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
474
475         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
476         mnemonic in this_param move for TARGET_64BIT.
477
478 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
479
480         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
481         (*strmovsi_rex_1): Ditto.
482         (*strsetsi_1): Ditto.
483         (*strsetsi_rex_1): Ditto.
484
485         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
486         adddicc expanders using SWI mode iterator.
487
488 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
489
490         PR target/36121
491         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
492         argument handling.
493
494 2008-05-04  David S. Miller  <davem@davemloft.net>
495
496         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
497         (sparc*-*-linux*): Use linux.h in tm_file.
498         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
499         compiler defaulting to 32-bit.
500         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
501         no longer needed.
502         * config/sparc/linux.h: Remove definitions now obtained
503         properly from linux.h
504         * config/sparc/linux64.h: Likewise.
505         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
506         don't want this setting for 32-bit builds in a biarch compiler.
507         * doc/install.texi: Add sparc-linux to list of targets
508         supporting --enable-targets=all.
509
510 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
511
512         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
513
514 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
515
516         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
517         after V4SI_FTYPE_V8HI.
518         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
519         case V4SI_FTYPE_V2DF.
520
521 2008-05-03  Kenneth Zadeck <zadeck@naturalbridge.com>
522
523         * doc/invoke.texi (max-flow-memory-locations): Removed.
524         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
525         
526 2008-05-03  Richard Guenther  <rguenther@suse.de>
527
528         PR middle-end/34973
529         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
530
531 2008-05-02  David S. Miller  <davem@davemloft.net>
532
533         * config.gcc (need_64bit_hwint): Document libcpp dependency.
534
535 2008-05-02  Simon Baldwin <simonb@google.com>
536
537         PR bootstrap/36108
538         * c-common.h (warn_array_subscript_range): Removed.
539         * c-common.c (warn_array_subscript_range): Ditto.
540         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
541         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
542
543 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
544
545         * config/i386/i386.c (ix86_special_builtin_type): New.
546         (bdesc_special_args): Likewise.
547         (ix86_expand_special_args_builtin): Likewise.
548         (ix86_init_mmx_sse_builtins): Updated.
549         (ix86_expand_builtin): Updated.
550         (ix86_expand_store_builtin): Removed.
551         (ix86_expand_unop_builtin): Likewise.
552
553         * config/i386/mm3dnow.h (__v2sf): Moved to ...
554         * config/i386/mmintrin.h (__v2sf): Here.
555
556         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
557         const __v2sf.
558         (_mm_loadl_pi): Likewise.
559         (_mm_storeh_pi): Replace __v2si with __v2sf.
560         (_mm_storel_pi): Likewise.
561
562         * doc/extend.texi: Correct __builtin_ia32_loadhps,
563         __builtin_ia32_loadlps, __builtin_ia32_storehps,
564         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
565         __builtin_ia32_loadlpd.
566
567 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
568
569         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
570         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
571         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
572         (ix86_init_mmx_sse_builtins): Updated.
573         (ix86_expand_args_builtin): Likewise.
574         (ix86_expand_builtin): Likewise.
575         (ix86_expand_unop1_builtin): Renamed to ...
576         (ix86_expand_unop_vec_merge_builtin): This.
577
578 2008-05-01  Jan Hubicka  <jh@suse.cz>
579
580         PR bootstrap/36100
581         * ipa-inline.c (inline_generate_summary): Make static.
582         (inline_transform): Do not call inlining at -O0; make static.
583         * passes.c (execute_todo): Add sanity check.
584         (execute_one_ipa_transform_pass): Execute proper flags.
585
586 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
587
588         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
589         (DECL_NONADDRESSABLE_P): Likewise.
590         * alias.c (record_component_aliases): Fix comment.
591
592 2008-05-01  Simon Baldwin <simonb@google.com>
593
594         * c-common.h (warn_array_subscript_range): New function.
595         * c-common.c (warn_array_subscript_range): Ditto.
596         * tree-vrp.c (check_array_ref): Corrected code to agree with
597         comment, ignoring only arrays of size 0 or size 1.
598         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
599
600 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
601
602         * config/i386/i386.c (ix86_builtin_type): Replace
603         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
604         (bdesc_args): Updated.
605         (ix86_init_mmx_sse_builtins): Likewise.
606         (ix86_expand_args_builtin): Likewise.
607
608         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
609         with __v1di.
610
611         * doc/extend.texi: Correct __builtin_ia32_palignr.
612
613 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
614
615         PR target/36095
616         * config/i386/i386.c (bdesc_crc32): Removed.
617         (ix86_expand_crc32): Likewise.
618         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
619         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
620         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
621         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
622         UINT_FTYPE_UINT_UCHAR.
623         (bdesc_args): Updated. Add crc32 builtins.
624         (ix86_init_mmx_sse_builtins): Updated.
625         (ix86_expand_args_builtin): Updated to support subreg.
626
627         * doc/extend.texi: Correct __builtin_ia32_crc32di.
628
629 2008-05-01  Jan Hubicka  <jh@suse.cz>
630
631         * tree-pass.h (opt_pass): Add IPA_PASS.
632         (varpool_node, cgraph_node): Forward declare.
633         (ipa_opt_pass): Define.
634         (pass_ipa_inline): Turn into ipa_opt_pass.
635         (pass_apply_inline): Remove.
636         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
637         (apply_inline): Turn into ....
638         (inline_transform): ... this one.
639         (inline_generate_summary): New function.
640         (pass_apply_inline): Remove.
641         * function.h (ipa_opt_pass): Forward declare structure; typedef;
642         vector.
643         (struct function): Add ipa_transforms_to_apply.
644         * passes.c (register_one_dump_file): Work on IPA_PASS.
645         (init_optimization_passes): Remove pass_inline_parameters and
646         pass_apply_inline.
647         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
648         (execute_one_pass) ... here; apply transforms when possible.
649         (add_ipa_transform_pass, execute_ipa_summary_asses,
650         execute_one_ipa_transform_pass): New.
651         (execute_ipa_pass_list): Update for IPA_PASS type.
652
653 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
654
655         * config/i386/i386.c (ix86_builtin_type): Add
656         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
657         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
658         (bdesc_args): Add SSE4a builtins.
659         (ix86_init_mmx_sse_builtins): Updated.
660         (ix86_expand_args_builtin): Likewise.
661         (ix86_expand_builtin): Likewise.
662
663 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
664
665         * config/i386/i386.c (ix86_builtin_type): Add
666         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
667         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
668         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
669         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
670         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
671         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
672         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
673         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
674         and DI_FTYPE_DI_DI_INT.
675         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
676         (ix86_init_mmx_sse_builtins): Updated.
677         (ix86_expand_args_builtin): Likewise.
678         (ix86_expand_builtin): Likewise.
679         (ix86_expand_binop_imm_builtin): Removed.
680
681         * doc/extend.texi: Correct __builtin_ia32_palignr128.
682
683 2008-04-30  Richard Guenther  <rguenther@suse.de>
684
685         PR tree-optimization/32921
686         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
687
688 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
689
690         * config/arm/arm.c (arm_unwind_emit): Use
691         crtl->all_throwers_are_sibcalls instead of
692         cfun->all_throwers_are_sibcalls.
693         (arm_output_fn_unwind): Likewise.
694         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
695         instead of cfun->uses_pic_offset_table.
696         (frv_expand_prologue): Likewise.
697         (frv_frame_pointer_required): Likewise.
698         (frv_expand_fdpic_call): Likewise.
699         (frv_emit_movsi): Likewise.
700         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
701         cfun->returns_pcc_struct instead of
702         current_function_returns_pcc_struct.
703         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
704         instead of cfun->calls_eh_return.
705         (m32c_pushm_popm): Likewise.
706         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
707         "extern" declaration.
708
709 2008-04-30  Richard Guenther  <rguenther@suse.de>
710
711         PR tree-optimization/21636
712         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
713         constant address.
714         (evaluate_stmt): Print the likely value.
715         (ccp_visit_stmt): Avoid excessive vertical spacing.
716
717 2008-04-30  Rafael Espindola  <espindola@google.com>
718
719         * builtins.c (fold_call_expr): Return realret.
720         * tree-ssa-threadedge.c
721         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
722         __builtin_object_size.
723
724 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
725
726         * gcc.c (wrapper_string): New variable.
727         (insert_wrapper): New function.
728         (execute): New option -wrapper.
729         * doc/invoke.texi (Overall Options): New driver option -wrapper.
730
731 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
732
733         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
734         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
735         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
736         from...
737         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
738         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
739         config/rs6000/e500crtres64gprctr.asm,
740         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
741         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
742         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
743         config/rs6000/e500crtsav64gprctr.asm,
744         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
745         config/rs6000/e500crtsavg64gprctr.asm: New files.
746         * config/rs6000/t-ppccomm: Add build rules for new files.
747         (LIB2FUNCS_STATIC_EXTRA): Add new files.
748         * config/rs6000/t-netbsd: Add build rules for new files.
749         (LIB2FUNCS_STATIC_EXTRA): New variable.
750         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
751         (CRTSAVRES_DEFAULT_SPEC): Likewise.
752         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
753
754 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
755
756         * config/i386/i386.c (ix86_builtin_type): Add
757         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
758         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
759         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
760         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
761         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
762         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
763         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
764         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
765         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
766         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
767         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
768         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
769         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
770         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
771         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
772         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
773         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
774         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
775         V1DI_FTYPE_V2SI_V2SI.
776         (bdesc_2arg): Moved to ...
777         (bdesc_args): Here.
778         (ix86_init_mmx_sse_builtins): Updated.
779         (ix86_expand_args_builtin): Updated.  Take a pointer
780         to const struct builtin_description.  Handle comparison
781         builtin functions.
782         (ix86_expand_sse_compare): Take a new argument for swapping operands.
783         (ix86_expand_builtin): Updated.
784
785         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
786         (ssse3_pmaddubsw128): This.
787         (ssse3_pmaddubswv4hi3): Renamed to ...
788         (ssse3_pmaddubsw): This.
789
790         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
791         (__builtin_ia32_packssdw128): Likewise.
792         (__builtin_ia32_packuswb128): Likewise.
793         (__builtin_ia32_pmaddubsw): Likewise.
794         (__builtin_ia32_pmaddubsw128): Likewise.
795
796 2008-04-30  Richard Guenther  <rguenther@suse.de>
797
798         PR tree-optimization/14847
799         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
800         (recognize_bits_test): Use it.
801         (recognize_single_bit_test): Likewise.
802
803 2008-04-30  Martin Jambor  <mjambor@suse.cz>
804
805         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
806         instead of setting number of formal parameters to zero.
807         (ipcp_init_stage): Do not set the number of actual parameters to zero 
808         either.
809         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
810         which are called with variable number of arguments.
811         (ipcp_insert_stage): Explicitely skipping all nodes which are
812         called with variable number of arguments.
813         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible 
814         number of parameters.
815
816         * ipa-prop.h (struct ipa_node_params): Added flag
817         called_with_var_arguments
818         (ipa_set_param_count): Added.  Changed sole setter to use it.
819         (ipa_get_param_count): Added.  All readers of param_count
820         converted to use it instead.
821         (ipa_set_called_with_variable_arg): Added.
822         (ipa_is_called_with_var_arguments): Added.
823         (ipa_get_ith_param): Added.  All readers of param_decls converted
824         to use it instead.
825         (ipa_set_cs_argument_count): Added, sole writer to argument_count 
826         changed to use it. 
827         (ipa_get_cs_argument_count): Added, all readers of argument_count
828         changed to cal it.
829         (ipa_get_ith_jump_func): Added. Accessors of jump values changed 
830         to use it.
831         
832         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
833         (struct ipcp_lattice): Renamed cval_type to type
834         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
835
836         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
837         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
838         (ipcp_insert_stage): Changed the type of variable cvalue to tree
839         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
840         (build_const_val): Changed the type of parameter cvalue to tree
841         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
842         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
843         
844         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called 
845         constant 
846
847         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
848         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
849         (ipa_add_method): Renamed to ipa_push_func_to_list
850         (ipa_remove_method): Renamed to ipa_pop_func_from_list
851         (ipa_callsite_param_count): Removed.
852         (ipa_callsite_param_count_set): Removed.
853         (ipa_callsite_param): Removed.
854         (ipa_callsite_callee): Removed.
855         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
856         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
857         (ipa_method_formal_count): Removed.
858         (ipa_method_formal_count_set): Removed.
859         (ipa_method_get_tree): Removed.
860         (ipa_method_tree_map_create): Removed.
861         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
862         (ipa_create_param_decls_array): Creates the array itself
863         (ipa_create_param_decls_array): Temporary variable info instead of 
864         a few dereferences.
865         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
866         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
867         (get_type): Removed.
868         (ipa_jf_get_info_type): Removed.
869         (ipa_node_create): Renamed to ipa_create_node_params
870         (ipa_free): Renamed to ipa_free_all_node_params
871         (ipa_nodes_create): Renamed to ipa_create_all_node_params
872         (ipa_edges_create): Renamed to ipa_create_all_edge_args
873         (ipa_edges_free): Renamed to ipa_free_all_edge_args
874         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
875         (ipa_free_all_node_params): Deallocation to jump_functions moved to 
876         ipa_free_all_edge_args
877         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
878         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
879         (ipa_create_methodlist_node): Removed.
880         (ipa_methodlist_method): Removed.
881         (ipa_methodlist_method_set): Removed.
882         (ipa_methodlist_next_method): Removed.
883         (ipa_methodlist_next_method_set): Removed.
884         (ipa_method_is_modified): Removed.
885         (ipa_method_modify_create): Removed.
886         (ipa_method_modify_init): Temporary variable info instead of a few 
887         dereferences.
888         (ipa_detect_param_modifications): Temporary variable info instead of 
889         a few dereferences.
890         (ipa_compute_jump_functions): Temporary variable info instead of 
891         a few dereferences.
892         (ipa_method_modify_set): Removed.
893         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
894         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather 
895         than craph_node as the first parameter.
896         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
897         (ipa_method_modify_init): Removed.
898         (ipa_compute_jump_functions): Added a temp variable instead of 
899         repeatadly dereferencing the cgraph_edge.aux pointer
900         (ipa_callsite_param_set_type): Removed.
901         (ipa_compute_jump_functions): i renamed to index and moved to 
902         an inner block
903         (ipa_callsite_param_set_info_type_formal): Removed.
904         (ipa_callsite_param_set_info_type): Removed.
905         (ipa_callsite_param_map_create): Removed.
906         (ipa_callsite_tree): Removed.
907         (ipa_callsite_caller): Removed.
908         (ipa_pop_func_from_list): return_method removed to return_func
909
910         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
911         prefixed all values with IPA_. Changed all users.
912         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN, 
913         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF 
914         and FORMAL_IPATYPE IPA_PASS_THROUGH. 
915         (union parameter_info): Renamed to jump_func_value.
916         (union jump_func_value): Renamed value to constant
917         (struct ipa_jump_func): Renamed info_type to value
918         (struct ipa_node): Renamed to ipa_node_params
919         (struct ipa_node_params): Renamed ipa_arg_num to param_count
920         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
921         (struct ipa_node_params): Renamed ipa_mod to modified_flags
922         (struct ipa_edge): Renamed to ipa_edge_args
923         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
924         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
925         (struct ipa_methodlist): Renamed to ipa_func_list
926         (struct ipa_func_list): method_p renamed to node, next_method
927         renamed to next
928         (ipa_methodlist_p): Removed, switched all users to struct pointer
929         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
930
931 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
932
933         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
934         (rs6000_emit_epilogue): Use backchain to restore only when we
935         have a large frame.  Make use of frame pointer to restore if we
936         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
937
938 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
939
940         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
941         Add mode to zero_extract.
942         (sign bit tests peepholes): (Ditto.).
943
944 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
945
946         * config/i386/i386.c (ix86_builtins): Replace Prescott New
947         Instructions in comments with SSE3.
948         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
949         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
950         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
951         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
952         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
953         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
954         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
955         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
956         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
957         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
958         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
959         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
960         (bdesc_sse_args): Renamed to ...
961         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
962         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
963         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
964         IX86_BUILTIN_FABSQ.
965         (bdesc_1arg): Moved to ...
966         (bdesc_args): Here.
967         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
968         Instructions in comments with SSE3.
969         (ix86_expand_sse_operands_builtin): Renamed to ...
970         (ix86_expand_args_builtin): This.  Updated.
971         (ix86_expand_unop1_builtin): Update comments.
972         (ix86_expand_builtin): Updated.
973
974 2008-04-29  Richard Guenther  <rguenther@suse.de>
975
976         PR tree-optimization/36078
977         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
978         Update virtual SSA form after cleaning up the CFG.
979
980 2008-04-29  Richard Guenther  <rguenther@suse.de>
981
982         PR middle-end/15255
983         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
984
985 2008-04-29  Richard Guenther  <rguenther@suse.de>
986
987         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
988         (compute_may_aliases): Do not call finalize_ref_all_pointers.
989         (compute_flow_insensitive_aliasing): Do not treat
990         PTR_IS_REF_ALL pointers special.
991         (get_smt_for): Likewise.
992         (may_alias_p): Re-structure.
993         (is_escape_site): A ref-all pointer conversion is not an escape site.
994         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
995         PTR_IS_REF_ALL pointers special.
996         * tree-ssa-structalias.h (struct alias_info): Remove
997         ref_all_symbol_mem_tag field.
998         (PTR_IS_REF_ALL): Remove.
999
1000 2008-04-29  Richard Guenther  <rguenther@suse.de>
1001
1002         PR middle-end/36077
1003         * fold-const.c (extract_muldiv_1): In combining division constants
1004         make sure to never overflow.
1005
1006 2008-04-29  Nick Clifton  <nickc@redhat.com>
1007
1008         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
1009
1010 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1011
1012         PR bootstrap/35169
1013         * optc-gen.awk: Work around HP-UX/IA awk bug.
1014
1015 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
1016
1017         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
1018         2008-04-25 commit.
1019
1020 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
1021
1022         PR target/36073
1023         * config/i386/i386.md
1024         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
1025         Change operand 1 predicate to nonimmediate_operand.
1026
1027 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
1028
1029         PR debug/36060
1030         * dwarf2out.c (struct die_struct): Mark as chain_circular through
1031         die_sub field.
1032         * gengtype.c (walk_type, write_func_for_structure): Handle
1033         chain_circular.
1034         * doc/gty.texi: Document chain_circular.
1035
1036 2008-04-28  Richard Guenther  <rguenther@suse.de>
1037
1038         PR tree-optimization/36066
1039         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
1040         SCEV and loop.
1041
1042 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
1043
1044         PR target/36064
1045         * config/i386/i386.md
1046         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
1047         Use match_scratch instead of match_operand for operands 3 and 4.
1048
1049 2008-04-27  Richard Guenther  <rguenther@suse.de>
1050
1051         PR tree-optimization/18754
1052         PR tree-optimization/34223
1053         * tree-pass.h (pass_complete_unrolli): Declare.
1054         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
1055         loop size before and after unconditionally of UL_NO_GROWTH in effect.
1056         Rewrite loop into loop closed SSA form if it is not already.
1057         (tree_unroll_loops_completely): Re-structure to iterate over
1058         innermost loops with intermediate CFG cleanups.
1059         Unroll outermost loops only if requested or the code does not grow
1060         doing so.
1061         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
1062         loops are available.
1063         (tree_vectorize): Instead do so here.
1064         (tree_complete_unroll): Also unroll outermost loops.
1065         (tree_complete_unroll_inner): New function.
1066         (gate_tree_complete_unroll_inner): Likewise.
1067         (pass_complete_unrolli): New pass.
1068         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
1069         uses outside of the loop.
1070         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
1071         form if it is available.  
1072         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
1073         * passes.c (init_optimization_passes): Schedule complete inner
1074         loop unrolling pass before the first CCP pass after final inlining.
1075
1076 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
1077
1078         * targhooks.h (default_emutls_var_fields,
1079         default_emutls_var_init): Declare.
1080         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
1081         * target.h (struct gcc_target): Add struct emutls member.
1082         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
1083         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
1084         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
1085         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
1086         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
1087         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
1088         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
1089         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
1090         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
1091         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
1092         emit debug information.
1093         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
1094         * varasm.c: Include targhooks.h.
1095         (emutls_object_section, emutls_tmpl_section): New.
1096         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
1097         (EMUTLS_SEPARATOR): New.
1098         (prefix_name): New.
1099         (get_emutls_object_name): New.
1100         (default_emutls_var_fields): New, broken out of ...
1101         (get_emutls_object_type): ... here.  Adjust to use target hooks.
1102         (get_emutls_init_templ_addr): Adjust to use target hooks.
1103         (emutls_decl): Adjust to use target hooks.
1104         (emutls_finish): Likewise.
1105         (default_emutls_var_init): New, broken out of ...
1106         (assemble_variable): ... here.  Adjust to use target hooks.
1107         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
1108         SECCAT_EMUTLS_TMPL.
1109         * c-common.c (handle_section_attribute): Prevent overriding
1110         sections for emulated tls with special sections.
1111         * config/i386/i386.c (x86_64_elf_select_section): Add
1112         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
1113         (x86_64_elf_unique_section): Likewise.
1114         * config/vxworks.c: Include tree.h.
1115         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
1116         (vxworks_override_options): Set TLS scheme.
1117         * doc/tm.texi (Emulated TLS): New node.
1118
1119 2008-04-26  Simon Baldwin <simonb@google.com>
1120
1121         PR c/35652
1122         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
1123         with propagated string constants.
1124
1125 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
1126
1127         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
1128         constraint for operand 2 when operand 0 is memory operand.
1129         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
1130         operand 0 is memory operand.
1131         (fix_trunc<mode>_i387_with_temp): Ditto.
1132         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
1133         operand 2 when operand 1 is memory operand.
1134         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
1135         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
1136         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
1137         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
1138         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
1139         operands 2,3 and 4 when operand 1 is memory operand.
1140         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
1141         is memory operand.
1142         (fistdi2_floor_with_temp): Ditto.
1143         (fist<mode>2_floor_with_temp): Ditto.
1144         (fistdi2_ceil_with_temp): Ditto.
1145         (fist<mode>2_ceil_with_temp): Ditto.
1146         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
1147
1148 2008-04-26  David Daney  <ddaney@avtrex.com>
1149
1150         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
1151         unspec_volitile.
1152         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
1153         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
1154         UNSPEC_UPDATE_GOT_VERSION): Renumber.
1155         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
1156         (compare_and_swap_12): New insn.
1157         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
1158         * config/mips/mips.c (mips_force_binary): New function.
1159         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
1160         (mips_expand_compare_and_swap_12): New function.
1161         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
1162
1163 2008-04-25  Jan Hubicka  <jh@suse.cz>
1164
1165         PR testsuite/35843
1166         * cfgexpand.c (pass_expand): Turn into RTL pass.
1167         * passes.c (execute_one_pass): Do pass typechecking after execution.
1168         * tree-pass.h (pass_expand): Turn into RTL pass.
1169
1170         * function.h (struct rtl_data): Move here fields
1171         accesses_prior_frames, calls_eh_return, saves_all_registers,
1172         has_nonlocal_goto, has_asm_statement, is_thunk,
1173         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
1174         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
1175         arg_pointer_save_area_init from struct function; turn into bool.
1176         (struct function): Move
1177         calls_eh_return, saves_all_registers, has_nonlocal_goto,
1178         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
1179         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
1180         tail_call_emit, arg_pointer_save_area_init
1181         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
1182         (current_function_returns_struct, current_function_returns_pcc_struct,
1183         current_function_calls_setjmp, current_function_calls_alloca,
1184         current_function_accesses_prior_frames,
1185         current_function_calls_eh_return, current_function_is_thunk,
1186         current_function_stdarg, current_function_profile,
1187         current_function_limit_stack, current_function_uses_pic_offset_table,
1188         current_function_uses_const_pool, current_function_has_nonlocal_label,
1189         current_function_saves_all_registers,
1190         current_function_has_nonlocal_goto,
1191         current_function_has_asm_statement): Remove accesor macros.
1192         * ra-conflict.c (global_conflicts): Update.
1193         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
1194         (suitable_for_tail_call_opt_p): Update.
1195         * builtins.c (expand_builtin_return_addr): Update.
1196         (expand_builtin_setjmp_setup): Update.
1197         (expand_builtin_nonlocal_goto): Update.
1198         * final.c (final_start_function): Update.
1199         (profile_function): Update.
1200         (leaf_function_p): Update.
1201         (only_leaf_regs_used): Update.
1202         * df-scan.c (df_get_exit_block_use_set): Update.
1203         * dojump.c (clear_pending_stack_adjust): Update.
1204         * tree-stdarg.c (gate_optimize_stdarg): Update.
1205         * gimple-low.c (lower_function_body): Update.
1206         * global.c (compute_regsets): Update.
1207         (global_alloc): Update.
1208         * dwarf2out.c (dwarf2out_begin_prologue): Update.
1209         * expr.c (expand_assignment): Update.
1210         * dse.c (dse_step0): Update.
1211         (dse_step1): Update.
1212         * c-decl.c (store_parm_decls): Update.
1213         * local-alloc.c (combine_regs): Update.
1214         (find_free_reg): Update.
1215         * function.c (assign_parms_augmented_arg_list): Update.
1216         (assign_parm_find_data_types): Update.
1217         (assign_parms): Update.
1218         (allocate_struct_function): Update.
1219         (expand_function_start): Update.
1220         (expand_function_end): Update.
1221         (get_arg_pointer_save_area): Update.
1222         (thread_prologue_and_epilogue_insns): Update.
1223         (rest_of_match_asm_constraints): Update.
1224         * stor-layout.c (variable_size): Update.
1225         * gcse.c (gcse_main): Update.
1226         (bypass_jumps): Update.
1227         * gimplify.c (gimplify_function_tree): Update.
1228         * calls.c (emit_call_1): Update.
1229         (expand_call): Update.
1230         * bt-load.c (compute_defs_uses_and_gen): Update.
1231         * except.c (sjlj_assign_call_site_values): Update.
1232         (sjlj_emit_function_enter): Update.
1233         (can_throw_external): Update.
1234         (set_nothrow_function_flags): Update.
1235         (expand_builtin_unwind_init): Update.
1236         (expand_eh_return): Update.
1237         (convert_to_eh_region_ranges): Update.
1238         (output_function_exception_table): Update.
1239         * emit-rtl.c (gen_tmp_stack_mem): Update.
1240         * cfgexpand.c (expand_used_vars): Update.
1241         (tree_expand_cfg): Update.
1242         * cfgcleanup.c (rest_of_handle_jump): Update.
1243         * explow.c (allocate_dynamic_stack_space): Update.
1244         * varasm.c (assemble_start_function): Update.
1245         (force_const_mem): Update.
1246         (mark_constant_pool): Update.
1247         * tree-optimize.c (tree_rest_of_compilation): Update.
1248         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
1249         * tree-cfg.c (notice_special_calls): Update.
1250         (is_ctrl_altering_stmt): Update.
1251         (tree_can_make_abnormal_goto): Update.
1252         (tree_purge_dead_abnormal_call_edges): Update.
1253         * config/alpha/predicates.md: Update.
1254         * config/alpha/alpha.c (alpha_sa_mask): Update.
1255         (alpha_sa_size): Update.
1256         (alpha_does_function_need_gp): Update.
1257         (alpha_expand_prologue): Update.
1258         (alpha_start_function): Update.
1259         (alpha_output_function_end_prologue): Update.
1260         (alpha_expand_epilogue): Update.
1261         * config/frv/frv.c (frv_stack_info): Update.
1262         (frv_expand_epilogue): Update.
1263         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
1264         (s390_register_info): Update.
1265         (s390_frame_info): Update.
1266         (s390_init_frame_layout): Update.
1267         (s390_can_eliminate): Update.
1268         (save_gprs): Update.
1269         * config/spu/spu.c (spu_split_immediate): Update.
1270         (need_to_save_reg): Update.
1271         (spu_expand_prologue): Update.
1272         (spu_expand_epilogue): Update.
1273         * config/sparc/sparc.md: Update.
1274         * config/sparc/sparc.c (eligible_for_return_delay): Update.
1275         (sparc_tls_got): Update.
1276         (legitimize_pic_address): Update.
1277         (sparc_emit_call_insn): Update.
1278         (sparc_expand_prologue): Update.
1279         (output_return): Update.
1280         (print_operand): Update.
1281         (sparc_function_ok_for_sibcall): Update.
1282         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
1283         * config/m32r/m32r.md: Update.
1284         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
1285         (m32r_compute_frame_size): Update.
1286         (m32r_expand_prologue): Update.
1287         (m32r_expand_epilogue): Update.
1288         (m32r_legitimize_pic_address): Update.
1289         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
1290         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
1291         * config/i386/i386.c (ix86_frame_pointer_required): Update.
1292         (gen_push): Update.
1293         (ix86_save_reg): Update.
1294         (ix86_compute_frame_layout): Update.
1295         (ix86_expand_prologue): Update.
1296         (ix86_expand_epilogue): Update.
1297         * config/sh/sh.c (output_stack_adjust): Update.
1298         (calc_live_regs): Update.
1299         (sh5_schedule_saves): Update.
1300         (sh_expand_prologue): Update.
1301         (sh_expand_epilogue): Update.
1302         (sh_setup_incoming_varargs): Update.
1303         (sh_allocate_initial_value): Update.
1304         (sh_get_pr_initial_val): Update.
1305         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
1306         * config/sh/sh.md (label:): Update.
1307         * config/avr/avr.c (out_movhi_mr_r): Update.
1308         * config/crx/crx.h (enum): Update.
1309         * config/xtensa/xtensa.h (along): Update.
1310         * config/stormy16/stormy16.c Update.
1311         (xstormy16_compute_stack_layout): Update.
1312         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
1313         (fr30_expand_prologue): Update.
1314         * config/cris/cris.c (cris_conditional_register_usage): Update.
1315         (cris_reg_saved_in_regsave_area): Update.
1316         (cris_initial_frame_pointer_offset): Update.
1317         (cris_simple_epilogue): Update.
1318         (cris_expand_prologue): Update.
1319         (cris_expand_epilogue): Update.
1320         (cris_expand_pic_call_address): Update.
1321         (cris_asm_output_symbol_ref): Update.
1322         (cris_asm_output_label_ref): Update.
1323         * config/cris/cris.md Update.
1324         * config/iq2000/iq2000.c (compute_frame_size): Update.
1325         (iq2000_expand_epilogue): Update.
1326         * config/mt/mt.h (save_direction): Update.
1327         * config/mn10300/mn10300.c (mn10300_function_value): Update.
1328         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
1329         (ia64_secondary_reload_class): Update.
1330         * config/m68k/m68k.c (m68k_save_reg): Update.
1331         (m68k_expand_prologue): Update.
1332         (m68k_expand_epilogue): Update.
1333         (legitimize_pic_address): Update.
1334         * config/rs6000/rs6000.c (rs6000_got_register): Update.
1335         (first_reg_to_save): Update.
1336         (first_altivec_reg_to_save): Update.
1337         (compute_vrsave_mask): Update.
1338         (compute_save_world_info): Update.
1339         (rs6000_stack_info): Update.
1340         (spe_func_has_64bit_regs_p): Update.
1341         (rs6000_ra_ever_killed): Update.
1342         (rs6000_emit_eh_reg_restore): Update.
1343         (rs6000_emit_allocate_stack): Update.
1344         (rs6000_emit_prologue): Update.
1345         (rs6000_emit_epilogue): Update.
1346         (rs6000_output_function_epilogue): Update.
1347         (output_profile_hook): Update.
1348         (rs6000_elf_declare_function_name): Update.
1349         * config/rs6000/rs6000.h (rs6000_args): Update.
1350         * config/rs6000/rs6000.md: Update.
1351         * config/mcore/mcore.c (mcore_expand_prolog): Update.
1352         * config/arc/arc.c (arc_output_function_epilogue): Update.
1353         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
1354         * config/darwin.c (machopic_function_base_name): Update.
1355         * config/score/score3.c (score3_compute_frame_size): Update.
1356         (rpush): Update.
1357         (rpop): Update.
1358         (score3_epilogue): Update.
1359         * config/score/score7.c (score7_compute_frame_size): Update.
1360         (score7_prologue): Update.
1361         (score7_epilogue): Update.
1362         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
1363         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
1364         * config/arm/arm.c (use_return_insn): Update.
1365         (require_pic_register): Update.
1366         (arm_load_pic_register): Update.
1367         (arm_compute_save_reg0_reg12_mask): Update.
1368         (arm_compute_save_reg_mask): Update.
1369         (thumb1_compute_save_reg_mask): Update.
1370         (output_return_instruction): Update.
1371         (arm_output_function_prologue): Update.
1372         (arm_output_epilogue): Update.
1373         (arm_get_frame_offsets): Update.
1374         (arm_expand_prologue): Update.
1375         (thumb_pushpop): Update.
1376         (thumb_exit): Update.
1377         (thumb1_expand_prologue): Update.
1378         (thumb1_expand_epilogue): Update.
1379         (arm_unwind_emit): Update.
1380         (arm_output_fn_unwind): Update.
1381         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
1382         * config/arm/arm.md: Update.
1383         * config/pa/pa.md: Update.
1384         * config/pa/pa.c (legitimize_pic_address): Update.
1385         (compute_frame_size): Update.
1386         (hppa_expand_prologue): Update.
1387         (hppa_expand_epilogue): Update.
1388         (borx_reg_operand): Update.
1389         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
1390         (HARD_REGNO_RENAME_OK): Update.
1391         * config/mips/mips.c (mips_global_pointer): Update.
1392         (mips_save_reg_p): Update.
1393         (mips_compute_frame_info): Update.
1394         (mips_frame_pointer_required): Update.
1395         (mips_expand_prologue): Update.
1396         (mips_expand_epilogue): Update.
1397         (mips_can_use_return_insn): Update.
1398         (mips_reorg_process_insns): Update.
1399         * config/v850/v850.c (compute_register_save_size): Update.
1400         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
1401         * config/mmix/mmix.c (along): Update.
1402         (mmix_expand_epilogue): Update.
1403         * config/bfin/bfin.c (legitimize_pic_address): Update.
1404         (must_save_p): Update.
1405         (stack_frame_needed_p): Update.
1406         (add_to_reg): Update.
1407         (bfin_expand_prologue): Update.
1408         * stmt.c (expand_asm_operands): Update.
1409         * reload1.c (reload): Update.
1410         (init_elim_table): Update.
1411
1412 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
1413         
1414         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
1415         
1416 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
1417
1418         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
1419         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
1420         (mov<mode>): Removed.
1421         (*movv4sf_internal): Likewise.
1422         (*movv2df_internal): Likewise.
1423
1424 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
1425
1426         * config.gcc (crx-*-elf): Remove deprecation.
1427
1428 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
1429
1430         * config/i386/cygming-crtend.c (register_frame_ctor): Register
1431         __gcc_deregister_frame with atexit.
1432         (deregister_frame_dtor): Remove.
1433
1434 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
1435             Nathan Sidwell  <nathan@codesourcery.com>
1436
1437         * config/rs6000/rs6000.opt (mspe): Remove Var property.
1438         (misel): Likewise.
1439         * config/rs6000/rs6000.h (rs6000_spe): Declare.
1440         (rs6000_isel): Likewise.
1441         * config/rs6000/rs6000.c (rs6000_spe): New variable.
1442         (rs6000_isel): New variable.
1443         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
1444
1445 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
1446
1447         PR c++/35758
1448         * c-common.c (handle_vector_size_attribute): Call
1449         lang_hooks.types.reconstruct_complex_type instead of
1450         reconstruct_complex_type.
1451         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
1452         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
1453         * langhooks.h (struct lang_hooks_for_types): Add
1454         reconstruct_complex_type hook.
1455         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
1456         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
1457
1458 2008-04-24  Richard Guenther  <rguenther@suse.de>
1459
1460         * c-common.h (check_builtin_function_arguments): Declare.
1461         * c-common.c (validate_nargs): New function.
1462         (check_builtin_function_arguments): Likewise.
1463         * c-typeck.c (build_function_call): Call
1464         check_builtin_function_arguments.
1465         * builtins.c (fold_builtin_classify): Remove error reporting code.
1466         (fold_builtin_unordered_cmp): Likewise.
1467         (fold_builtin_1): Likewise.
1468         (fold_builtin_n): Likewise.
1469
1470 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
1471
1472         PR tree-optimization/36008
1473         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
1474         the original op1, rather than delta by step.
1475
1476 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
1477             Sebastian Pop  <sebastian.pop@amd.com>
1478
1479         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
1480         eliminate_local_variables_stmt, eliminate_local_variables,
1481         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
1482         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
1483         of code delimited by two edges in the CFG.
1484         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
1485         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
1486         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
1487         the case of parallelisation of reductions.
1488         (expr_invariant_in_region_p): New.
1489
1490         * tree-flow.h (gather_blocks_in_sese_region): Declared.
1491         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
1492
1493 2008-04-24  Ira Rosen  <irar@il.ibm.com>
1494             Richard Guenther  <rguenther@suse.de>
1495
1496         PR tree-optimization/36034
1497         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
1498         incapable of dealing with loads with gaps.
1499
1500 2008-04-24  Rafael Espindola  <espindola@google.com>
1501
1502         * tree-flow.h (vrp_evaluate_conditional): Change signature.
1503         * tree-ssa-propagate.c (fold_predicate_in): Update call to
1504         vrp_evaluate_conditional.
1505         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
1506         (vrp_evaluate_conditional): Split the cond argument.
1507         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
1508         (simplify_stmt_for_jump_threading): Update call to
1509         vrp_evaluate_conditional.
1510
1511 2008-04-24  Ira Rosen  <irar@il.ibm.com>
1512
1513         PR tree-optimization/35982
1514         * tree-vect-analyze.c (vect_check_interleaving): Check that the
1515         interleaved data-refs are of the same type.
1516
1517 2008-04-24  Danny Smith  <dannysmith@users.net>
1518
1519         * c-format.c (check_format_info_main): Use strncmp rather than a
1520         magic prefix to handle multichar length specs.
1521         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
1522         Don't prefix "I64" and "I32" with '\0'.
1523
1524 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
1525
1526         PR target/36015
1527         * config/i386/i386.c (init_cumulative_args): Don't pass anything
1528         in registers for -m32 only if stdarg_p (fntype).
1529
1530 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
1531
1532         PR rtl-optimization/36006
1533         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
1534         temp to op0 in order to avoid invalid rtx sharing.
1535
1536 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
1537
1538         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
1539         check TREE_INVARIANT.
1540         * tree-gimple.c (is_gimple_address): New.
1541         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
1542         * tree-gimple.h (is_gimple_address): New.
1543         * tree.h (decl_address_invariant_p): New.
1544         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
1545         (build_string): Likewise.
1546         (decl_address_invariant_p): New, from is_gimple_invariant_address.
1547         (tree_invariant_p_1): Likewise.
1548         (save_expr): Use it.
1549         (tree_invariant_p): New.
1550         (skip_simple_arithmetic): Use it.
1551         (stabilize_reference_1): Use it.
1552         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
1553         simplify.
1554         (build1_stat): Drop code to compute TREE_INVARIANT.
1555         (build2_stat): Drop code to compute TREE_INVARIANT.
1556         (build3_stat): Drop code to compute TREE_INVARIANT.
1557         (build4_stat): Drop code to compute TREE_INVARIANT.
1558         (build5_stat): Drop code to compute TREE_INVARIANT.
1559         (build7_stat): Drop code to compute TREE_INVARIANT.
1560         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
1561         * tree.h (struct tree_base): Remove invariant_flag.
1562         (TREE_INVARIANT): Remove.
1563         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
1564         (fold_builtin_expect): Check TREE_CONSTANT.
1565         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
1566         * c-tree.h (c_expr_to_decl): Drop third parameter.
1567         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
1568         (build_c_cast): Don't set TREE_INVARIANT.
1569         (pop_init_level): Don't set TREE_INVARIANT.
1570         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
1571         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
1572         TREE_CONSTANT.
1573         (gimplify_init_constructor): Don't set TREE_INVARIANT.
1574         (gimplify_addr_expr): Adjust comment.
1575         * tree-mudflap.c (mf_build_string):
1576         * print-tree.c (print_node): Don't print TREE_INVARIANT.
1577         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
1578         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
1579         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
1580         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
1581         * langhooks.h (struct lang_hooks): Drop third parameter from
1582         expr_to_decl.
1583
1584 2008-04-23  Richard Guenther  <rguenther@suse.de>
1585
1586         PR tree-optimization/27799
1587         PR tree-optimization/32921
1588         PR tree-optimization/32624
1589         * tree-ssa-structalias.c (merge_smts_into): Only merge the
1590         SMTs aliases and the tag itself into the solution.
1591         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
1592         merge the points-to solution back into the SMT aliases.
1593         (may_alias_p): Use alias_set_subset_of instead of
1594         aliases_conflict_p.  A pointer which points to
1595         memory with alias set zero may access any variable.
1596
1597 2008-04-23  Richard Guenther  <rguenther@suse.de>
1598
1599         * alias.c (alias_set_subset_of): Correctly handle asking
1600         if zero is a subset of an alias set with zero child.
1601         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
1602         (compute_flow_insensitive_aliasing): Correctly walk all
1603         pointers.  Do not unnecessarily union sets.
1604
1605 2008-04-23  Richard Guenther  <rguenther@suse.de>
1606
1607         PR middle-end/36021
1608         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
1609
1610 2008-04-22  Tomas Bily  <tbily@suse.cz>
1611
1612         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
1613         unreachable case.
1614         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
1615         NON_LVALUE_EXPR.
1616         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
1617         * tree-ssa-structalias.c (get_constraint_for): Likewise.
1618         * tree-inline.c (estimate_num_insns_1): Likewise.
1619         * varasm.c (const_hash_1, compare_constant, copy_constant)
1620         (compute_reloc_for_constant, output_addressed_constants): Likewise.
1621         * emit-rtl.c (component_ref_for_mem_expr)
1622         (set_mem_attributes_minus_bitpos): Likewise.
1623         * expr.c (highest_pow2_factor, expand_expr_real_1, )
1624         (is_aligning_offset): Likewise.
1625         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
1626         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
1627         * dojump.c (do_jump): Likewise.
1628         * builtins.c (get_pointer_alignment, get_memory_rtx)
1629         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
1630         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
1631
1632 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
1633
1634         PR rtl-optimization/36017
1635         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
1636         expanding the library call.
1637
1638 2008-04-22  Ian Lance Taylor  <iant@google.com>
1639
1640         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
1641         than size_in_bytes.
1642
1643 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
1644
1645         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
1646         of LR/CTR moves for Power6.
1647
1648 2008-04-22  Kenneth Zadeck <zadeck@naturalbridge.com>
1649
1650         PR middle-end/36003
1651         * passes.c (init_optimization_passes): Remove
1652         pass_fast_rtl_byte_dce.
1653         
1654 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
1655
1656         PR target/29096
1657         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
1658         builtin functions to generate faster code.
1659         (_mm_cvtpu16_ps): Ditto.
1660         (_mm_cvtpi32x2_ps): Ditto.
1661
1662 2008-04-22  Nick Clifton  <nickc@redhat.com>
1663
1664         * common.opt (ftree-loop-distribution): Add Optimization
1665         attribute.
1666
1667         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
1668         (frv_expand_builtin_va_start): Likewise.
1669
1670         * config/arm/arm.c (thumb_find_work_register): Fix location of
1671         argument register count.
1672
1673 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1674
1675         Support scheduling for ColdFire V1 and V3 microarchitecture.
1676         Improve scheduling of multiplication instructions.
1677
1678         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
1679         (mac): New instruction attribute.
1680         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
1681         (m68k_sched_mac): New variable.
1682         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
1683         Handle cfv1 and cfv3.
1684         (max_insn_size): New static variable.
1685         (struct _sched_ib): New type.
1686         (sched_ib): New static variable.
1687         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
1688         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
1689         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
1690         Update.
1691         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
1692         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
1693         new variables.  Update.
1694         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
1695         Add modeling of cfv3 instruction buffer.  Update.
1696         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
1697         * config/m68k/m68k.h (TUNE_CFV3): New macro.
1698         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
1699         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
1700         a particular reservation applies to.
1701         (type2): Reorganize attribute values.  Rename alu to alu_reg,
1702         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
1703         to mul_l and mul_w.
1704         (cf_ib_*): Simplify description of instruction buffer.
1705         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
1706         (cf_mem): Split into cf_mem1 and cf_mem2.
1707         (cf_v2_move_??): Rename to cfv12_alu_??.
1708         (cf_v2_move_l_??): Rename to cfv12_omove_??.
1709         (cf_v2_mul_??): Remove reservations.
1710         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
1711         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
1712         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
1713         appropriate place.
1714         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
1715         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
1716         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
1717         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
1718         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
1719         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
1720         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
1721         expansions of the above reservations for instructions of sizes
1722         1, 2 and 3 words.
1723
1724 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1725
1726         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
1727
1728 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
1729
1730         * coverage.c: Include tree-pass.h.
1731         (coverage_counter_alloc): Print da_file_name to the dump file.
1732
1733 2008-04-21  Kenneth Zadeck <zadeck@naturalbridge.com>
1734
1735         * sbitmap.c (sbitmap_range_empty_p): New function.
1736         * sbitmap.h (sbitmap_range_empty_p): New function.
1737         * bitmap.h: Now includes obstack.h.
1738
1739 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1740             Kenneth Zadeck <zadeck@naturalbridge.com>
1741
1742         * dbgcnt.def (ra_byte_scan): Added.
1743         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
1744         when the last hit happens for a counter.  
1745         * timevar.def (TV_DF_BYTE_LR): New variable.
1746         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
1747         * passes.c (pass_fast_rtl_byte_dce): New pass.
1748         * fwprop.c (update_df): Added mode to call df_ref_create.
1749         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
1750         DF_REF_EXTRACT_OFFSET.
1751         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
1752         DF_BYTE_LR_OUT, df_byte_lr): New macro.
1753         (df_mm): New enum.
1754         (df_ref_extract): Added mode field.
1755         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
1756         DF_REF_EXTRACT_OFFSET.
1757         (DF_REF_EXTRACT_MODE): New macro.
1758         (df_byte_lr_bb_info): New structure.
1759         (df_print_byte_regset, df_compute_accessed_bytes, 
1760         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
1761         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
1762         df_byte_lr_simulate_uses,
1763         df_byte_lr_simulate_artificial_refs_at_top,
1764         df_byte_lr_simulate_artificial_refs_at_end,
1765         df_compute_accessed_bytes): New function.
1766         (df_ref_create): Add parameter.
1767         (df_byte_lr_get_bb_info): New inline function.
1768         * df-scan.c (df_ref_record, df_uses_record,
1769         df_ref_create_structure): Added mode parameter.
1770         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
1771         df_defs_record, df_uses_record, df_get_conditional_uses,
1772         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
1773         df_entry_block_defs_collect, df_exit_block_uses_collect):
1774         Added mode parameter to calls to df_ref_record, df_uses_record,
1775         df_ref_create_structure.
1776         (df_ref_equal_p, df_ref_compare): Added test for modes.
1777         (df_ref_create_structure): Added code to set mode.  Renamed
1778         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
1779         DF_REF_EXTRACT_OFFSET.
1780         * df-core.c (df_print_byte_regset): New function.
1781         * df-byte-scan.c: New file.
1782         * df-problems.c (df_rd_transfer_function): Removed unnecessary
1783         calls to BITMAP_FREE.  
1784         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
1785         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
1786         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
1787         df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
1788         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
1789         df_byte_lr_local_compute, df_byte_lr_init,
1790         df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
1791         df_byte_lr_transfer_function, df_byte_lr_free, 
1792         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
1793         df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
1794         df_byte_lr_simulate_uses,
1795         df_byte_lr_simulate_artificial_refs_at_top,
1796         df_byte_lr_simulate_artificial_refs_at_end): New function.
1797         * dce.c (byte_dce_process_block): New function.
1798         (dce_process_block): au is now passed in rather than computed
1799         locally.  Changed loops that look at artificial defs to not look
1800         for conditional or partial ones, because there never are any.  
1801         (fast_dce): Now is able to drive byte_dce_process_block or 
1802         dce_process_block depending on the kind of dce being done.
1803         (rest_of_handle_fast_dce): Add parameter to fast_dce.
1804         (rest_of_handle_fast_byte_dce): New function.
1805         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
1806         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
1807
1808 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
1809
1810         PR fortran/35019
1811         * gcc.h: Added fortran options that take arguments to
1812         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
1813         macros.
1814
1815 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
1816
1817         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
1818         scalarization if on the LHS and not a full access.
1819
1820 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1821
1822         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
1823
1824 2008-04-18  Rafael Espindola  <espindola@google.com>
1825
1826         * tree-vrp.c (find_case_label_index): Fix the binary search.
1827         (find_case_label_range): New.
1828         (vrp_visit_switch_stmt): Use find_case_label_range.
1829         (simplify_switch_using_ranges): Use find_case_label_range.
1830
1831 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
1832
1833         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
1834         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
1835
1836 2008-04-18  Tom Tromey  <tromey@redhat.com>
1837
1838         PR libcpp/15500:
1839         * doc/cpp.texi (Implementation-defined behavior): Mention
1840         -finput-charset.
1841
1842 2008-04-18  Ian Lance Taylor  <iant@google.com>
1843
1844         * fold-const.c (pointer_may_wrap_p): New static function.
1845         (fold_comparison): Add another test for pointer overflow.  Use
1846         pointer_may_wrap_p to disable some false positives.
1847
1848 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
1849           
1850         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
1851         (fname_as_string): Match updated cpp_interpret_string prototype.
1852         (fix_string_type): Support char16_t* and char32_t*.
1853         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
1854         derivative) nodes.  Register as builtin if C++0x.
1855         (c_parse_error): Support CPP_CHAR{16,32}.
1856         * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
1857         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
1858         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
1859         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
1860         CTI_CHAR32_ARRAY_TYPE>: New elements.
1861         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
1862         char32_type_node, signed_char32_type_node, char16_array_type_node,
1863         char32_array_type_node): New defines.
1864         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
1865         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
1866         (lex_string): Support CPP_STRING{16,32}, match updated
1867         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
1868         (lex_charconst): Support CPP_CHAR{16,32}.
1869         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
1870         and CPP_STRING{16,32}.
1871
1872 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
1873
1874         PR bootstrap/35457
1875         * aclocal.m4: Regenerate.
1876         * configure: Regenerate.
1877
1878 2008-04-18  Jan Hubicka  <jh@suse.cz>
1879
1880         * except.c (dw2_size_of_call_site_table,
1881         sjlj_size_of_call_site_table): Use vector API for call_site_record.
1882
1883         * cgraphbuild.c (build_cgraph_edges): Update.
1884         * tree-pass.h: Update comment.
1885         * final.c (leaf_function_p): Update.
1886         (leaf_renumber_regs): Update.
1887         (rest_of_clean_state): Update.
1888         * omp-low.c (expand_omp_parallel): Update.
1889         * ipa-reference.c (analyze_function): Update.
1890         * reorg.c (find_end_label): Update.
1891         (optimize_skip): Update.
1892         (fill_simple_delay_slots): Update.
1893         (fill_simple_delay_slots): Update.
1894         (make_return_insns): Update.
1895         (dbr_schedule): Update.
1896         * gimple-low.c (record_vars_into): Update.
1897         * cfgbuild.c (make_edges): Update.
1898         * function.c (assign_stack_local): Update.
1899         (assign_parm_adjust_stack_rtl): Update.
1900         (locate_and_pad_parm): Update.
1901         (allocate_struct_function): Do not initialize stack_alignment_needed
1902         and preferred_stack_boundary here.
1903         (stack_protect_prologue): Update.
1904         (stack_protect_epilogue): Update.
1905         (expand_function_start): Initialize stack_alignment_needed,
1906         preferred_stack_boundary and max_jumptable_ents.
1907         (expand_function_end): Update.
1908         (free_after_compilation): Do not NULLify epilogue_delay_list.
1909         * function.h (struct rtl_data): Add stack_protect_guard,
1910         stack_alignment_needed,
1911         preferred_stack_boundary, epilogue_delay_list.
1912         (struct function): Remove value_histograms, stack_alignment_needed,
1913         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
1914         last_label_uid,
1915         unexpanded_var_list, stack_protect_guard.
1916         (current_function_epilogue_delay_list): Remove.
1917         * ipa-type-escape.c (analyze_function): Update.
1918         * gimplify.c (pop_gimplify_context): Update comment.
1919         * calls.c (expand_call): Update.
1920         (emit_library_call_value_1): Update.
1921         * except.c (set_nothrow_function_flags): Update.
1922         * cfgexpand.c (get_decl_align_unit): Update.
1923         (create_stack_guard): Update.
1924         (estimated_stack_frame_size): Update.
1925         (expand_used_vars): Update.
1926         (tree_expand_cfg): Free histogram earliers, init expansion variables.
1927         * explow.c (allocate_dynamic_stack_space): Update.
1928         * tree-ssa-live.c (remove_unused_locals): Update.
1929         * varasm.c (mark_constant_pool): Update.
1930         * tree-inline.c (remap_decls): Update.
1931         (initialize_cfun): Update.
1932         (declare_return_variable): Update.
1933         (inline_forbidden_p): Update.
1934         (expand_call_inline): Update.
1935         (declare_inline_vars): Update.
1936         (tree_function_versioning): Update.
1937         * tree-flow.h (value_histograms): New.
1938         (VALUE_HISTOGRAMS): New macro.
1939         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
1940         last_label_uid.
1941         * tree-cfg.c (set_bb_for_stmt): Update.
1942         (replace_by_duplicate_decl): Update.
1943         (move_block_to_fn): Update.
1944         (new_label_mapper): Update.
1945         (dump_function_to_file): Update.
1946         * ipa-struct-reorg.c (build_data_structure): Update.
1947         * cfgrtl.c (print_rtl_with_bb): Update.
1948         * reload1.c (reload): Update.
1949         (reload): Update.
1950         * config/i386/i386.c (setup_incoming_varargs_64,
1951         ix86_compute_frame_layout): Update.
1952         * config/arc/arc.c (arc_output_function_epilogue): Update.
1953
1954 2008-04-18  Marius Strobl <marius@FreeBSD.org>
1955
1956         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
1957         for FreeBSD as well.
1958         * gthr-posix95.h: Likewise.
1959
1960 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1961
1962         PR rtl-optimization/35838
1963         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
1964         out the byte offset of the first subreg.
1965
1966 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
1967
1968         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
1969         to split_ti instead of three separate calls with single member arrays.
1970         (subti3 splitter): Ditto.
1971         (adddi3 splitter): Ditto with split_di.
1972         (subdi3 splitter): Ditto.
1973         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
1974         two separate calls with single member arrays.  Swap match_dup
1975         operands 1 and 2 to better fit into the array.
1976         (negdi2 splitter): Ditto with split_di.
1977         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
1978         two separate calls with single member arrays.  Swap match_dup operands
1979         6 and 7 to better fit into the array.
1980
1981 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1982
1983         * config/i386/i386.c (sse_builtin_type): New.
1984         (bdesc_sse_args): Likewise.
1985         (bdesc_sse_3arg): Removed.
1986         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
1987         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
1988         IX86_BUILTIN_ROUNDPS.
1989         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
1990         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
1991         IX86_BUILTIN_ROUNDPS.
1992         (ix86_expand_sse_4_operands_builtin): Removed.
1993         (ix86_expand_sse_operands_builtin): New.
1994         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
1995         and CODE_FOR_sse4_1_roundps.
1996         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
1997         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
1998
1999 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
2000
2001         PR target/35907
2002         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
2003         regs before frame pop when needed.  If use_backchain_to_restore_sp
2004         then load backchain into a temp reg to restore vr and vrsave.  Add
2005         code to restore vr after frame pop if possible.
2006
2007 2008-04-17  Richard Guenther  <rguenther@suse.de>
2008
2009         * tree-vn.c (expressions_equal_p): Do not check type
2010         equality or compatibility before calling operand_equal_p.
2011         * fold-const.c (operand_equal_p): Check equivalence of
2012         integer constants before bailing out due to signedness or
2013         precision differences.
2014         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
2015         spurious differences in type qualification.  Ignore types
2016         for COMPONENT_REFs at all.
2017
2018 2008-04-17  Christian Bruel  <christian.bruel@st.com>
2019
2020         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
2021         msw_skip comparison.
2022         
2023 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
2024
2025         PR c/35739
2026         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
2027         reg type.
2028
2029         PR tree-optimization/35899
2030         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
2031         rather than TREE_OPERAND.
2032
2033 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
2034
2035         PR target/35944
2036         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
2037         temporary registers.  Change operand predicate to general_operand.
2038         (remainderxf3): Ditto.
2039
2040 2008-04-16  Richard Guenther  <rguenther@suse.de>
2041
2042         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
2043         * tree-affine.c (aff_combination_expand): Look through some
2044         conversions.
2045
2046 2008-04-15  Doug Kwan  <dougkwan@google.com>
2047
2048         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
2049         for hex printing.
2050         * tree-pretty-print.c (dump_generic_node): Ditto.
2051         * final.c (output_addr_const): Ditto.
2052         * dwarf2out.c (output_cfi): Ditto.
2053         * c-pretty-print.c (pp_c_integer_constant): Ditto.
2054         * print-rtl.c (print_rtx): Ditto.
2055         * print-tree.c (print_node_brief, print_node): Ditto.
2056         * c-common.c (match_case_to_enum_1): Ditto.
2057         * sched-vis.c (print_value): Ditto.
2058         * config/i386/i386.c (print_operand): Cast to long unsigned int
2059         for hex printing.
2060
2061 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
2062         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
2063         MS Windows VirtualProtect function.
2064
2065 2008-04-15  Jan Hubicka  <jh@suse.cz>
2066
2067         * gengtype.c (write_root): Param_is argument is OK.
2068         * expr.c (expand_expr_real_1): Update call of get_exception_*.
2069         * function.h: Include varray.h
2070         (rtl_eh): New stucture based on except.c one.
2071         (call_site_record): New forward declaration and vector type.
2072         * calls.c (emit_call_1): Do not call
2073         note_current_region_may_contain_throw.
2074         * except.c (eh_status): Remove cur_region, try_region since they are
2075         unused.
2076         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
2077         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
2078         sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
2079         Remove call_site_data_used, call_site_data_size.
2080         Turn call_site_record into vector in function.h.
2081         (note_current_region_may_contain_throw): Remove.
2082         (get_exception_pointer, get_exception_filter): Do not take struct
2083         function argument; update.
2084         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
2085         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
2086         build_post_landing_pads, dw2_build_landing_pads,
2087         sjlj_assign_call_site_values, sjlj_mark_call_sites,
2088         sjlj_emit_function_enter, sjlj_emit_function_enter, 
2089         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
2090         sjlj_build_landing_pads, finish_eh_generation,
2091         remove_exception_handler_label, remove_eh_handler,
2092         maybe_remove_eh_handler, add_reachable_handler,
2093         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
2094         add_action_record, collect_one_action_chain, add_call_site,
2095         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
2096         sjlj_output_call_site_table, output_function_exception_table,
2097         * except.h (note_current_region_may_contain_throw): Remove
2098         (get_exception_pointer, get_exception_filter): Do not take struct
2099         function argument.
2100         * Makefile.in (GTFILES): Put varargs before struct function.
2101
2102 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
2103
2104         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
2105         punt for STRING_CST.
2106         (get_constraint_for): Deal with STRING_CST here instead.
2107
2108 2008-04-15  Richard Guenther  <rguenther@suse.de>
2109
2110         * tree-ssa-propagate.c (substitute_and_fold): Substitute
2111         statements in a basic-block with a backward walk.  Do not
2112         substitute into dead statements but instead remove those.
2113
2114 2008-04-15  Richard Guenther  <rguenther@suse.de>
2115
2116         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
2117         to zero, thus disable creation of SFTs.
2118
2119 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
2120
2121         * tree-predcom.c (suitable_reference_p): Return false if the
2122         reference can throw.
2123
2124 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
2125
2126         PR c/35751
2127         * c-decl.c (finish_decl): If extern or static var has variable
2128         size, set TREE_TYPE (decl) to error_mark_node.
2129
2130 2008-04-15  Rafael Espindola  <espindola@google.com>
2131
2132         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
2133         variable arg1.
2134
2135 2008-04-15  Richard Guenther  <rguenther@suse.de>
2136
2137         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
2138         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
2139         (visit_reference_op_load): Do walk vuse-vdef chains on
2140         vn_reference_lookup.
2141         (visit_reference_op_store): But do not here.
2142         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
2143         vn_reference_lookup.
2144         (vn_lookup_with_vuses): But do so here.
2145
2146 2008-04-14  Ian Lance Taylor  <iant@google.com>
2147
2148         * fold-const.c (fold_overflow_warning): Remove assertion.
2149
2150 2008-04-15  Ben Elliston  <bje@au.ibm.com>
2151
2152         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
2153         temp1 local variables.
2154
2155 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
2156
2157         PR target/35661
2158         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
2159         ".text.unlikely" section as executable.
2160
2161 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
2162
2163         * config/ia64/ia64.c (rtx_needs_barrier): Handle
2164         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
2165         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
2166         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
2167         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
2168         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
2169         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
2170
2171 2008-04-14  Ian Lance Taylor  <iant@google.com>
2172
2173         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
2174         * fold-const.c (fold_comparison): If appropriate, test
2175         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
2176         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
2177         reassociating a pointer type.
2178         * doc/invoke.texi (Optimize Options): Document that
2179         -fstrict-overflow applies to pointer wraparound.
2180
2181 2008-04-13  Jan Hubicka  <jh@suse.cz>
2182
2183         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
2184
2185 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
2186
2187         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
2188         we are going to "save the world".
2189
2190 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
2191
2192         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
2193         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
2194         operand 0 constraint, not "=".
2195
2196 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
2197
2198         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
2199
2200 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
2201
2202         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
2203         of size of positions_needed * CHAR_BIT.
2204
2205 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
2206
2207         PR middle-end/35897
2208         * dse.c (store_info): Change positions_needed to unsigned
2209         HOST_WIDE_INT.
2210         (lowpart_bitmask): New.
2211         (record_store): Cast to unsigned HOST_WIDE_INT for
2212         positions_needed.  Assert width <= size of positions_needed *
2213         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
2214         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
2215         lowpart_bitmask to set mask.
2216
2217 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2218
2219         * config/bfin/constraints.md: New file.
2220         * config/bfin/bfin.md: Include it.
2221         (adddi3): Use satisfies_constraint functions instead of the old macros.
2222         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
2223         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
2224         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
2225         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
2226         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
2227         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
2228         EXTRA_CONSTRAINT): Delete.
2229         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
2230         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
2231         of the old macros.
2232         * config/bfin/bfin.c: Include "tm-constrs.h".
2233         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
2234         Use satisfies_constraint functions instead of the old macros.
2235         * doc/md.texi (Blackfin Constraints): Update file name reference.
2236
2237 2008-04-11  Richard Guenther  <rguenther@suse.de>
2238
2239         PR tree-optimization/35869
2240         * tree-vrp.c (execute_vrp): Move switch statement update after
2241         jump threading.  Schedule another cfg cleanup run.
2242
2243 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
2244
2245         PR c/35744
2246         * attribs.c (decl_attributes): Return early on errorneous node.
2247
2248 2008-04-10  Oleg Ryjkov  <olegr@google.com>
2249
2250         * tree.h (struct tree_base): Added a new flag default_def_flag.
2251         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
2252
2253 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
2254
2255         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
2256
2257 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2258
2259         PR target/35768
2260         * pa.md: Define mode iterator P.  Define mode attribute dwc.
2261         (dcacheflush): Update pattern to use iterator P and attribute dwc.
2262         (icacheflush): Likewise.
2263         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
2264         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
2265
2266 2008-04-11  Ben Elliston  <bje@au.ibm.com>
2267
2268         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
2269
2270 2008-04-10  Rafael Espindola  <espindola@google.com>
2271
2272         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
2273         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
2274         (extract_range_from_expr): The same.
2275
2276 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
2277
2278         * config/mips/mips.md (GPR2): New mode iterator.
2279         (seq): Add comment.
2280         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
2281         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
2282         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
2283         Rewrite these to take two modes, the mode of comparison and the
2284         mode of the destination.
2285         * config/mips/mips.c (mips_expand_scc): Instead of having
2286         paradoxical subreg as destination, expand "narrowing" scc if mode
2287         of comparison is SI and target is requested in DI mode.
2288         (mips_emit_int_order_test): Update comment.  Make mode of
2289         comparison match CMP0 rather than TARGET.  When creating inverse
2290         target use mode of TARGET.
2291
2292 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
2293
2294         * gcov-dump.c (tag_summary): Only print summaries for the first
2295         GCOV_COUNTERS_SUMMABLE counters.
2296
2297 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
2298
2299         * config/i386/i386.md (absneg): New code iterator.
2300         (absnegprefix): New code attribute.
2301         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
2302         patterns using absneg code iterator.
2303         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
2304         using absneg code iterator.
2305         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
2306         *neg<mode>2 patterns using absneg code iterator.
2307         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
2308         *negextendsfdf2 patterns using absneg code iterator.
2309         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
2310         *negextendsfxf2 patterns using absneg code iterator.
2311         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
2312         *negextendsfdf2 patterns using absneg code iterator.
2313         * config/i386/sse.md (<code><mode>2): Macroize expander from
2314         abs<mode>2 and neg<mode>2 patterns using absneg code iterator. 
2315
2316 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2317
2318         * config/s390/s390.h: Remove the remains of the recent search
2319         & replace action of current_function_outgoing_args_size.
2320
2321 2008-04-10  Ira Rosen  <irar@il.ibm.com>
2322
2323         PR tree-optimization/35821
2324         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
2325         NEW_STMT_LIST is not NULL.
2326
2327 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
2328
2329         PR libstdc++/35597
2330         * toplev.c (process_options): Remove -ffunction-sections debugging
2331         warning.
2332
2333 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
2334
2335         PR middle-end/PR28690
2336         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
2337         than gen_rtx_fmt_ee to perform more canonicalizations.
2338
2339 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2340
2341         PR driver/35665
2342         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
2343
2344 2008-04-09  Richard Guenther  <rguenther@suse.de>
2345
2346         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
2347         (dump_function_to_file): Dump function arguments with types.
2348
2349 2008-04-08  Richard Guenther  <rguenther@suse.de>
2350
2351         * fold-const.c (fold_widened_comparison): Do not allow
2352         sign-changes that change the result.
2353
2354 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
2355
2356         PR target/35839
2357         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
2358         kinds of indirect references.
2359
2360 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
2361
2362         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
2363         GNU Fortran language string.
2364
2365 2008-04-08  Rafael Espindola  <espindola@google.com>
2366
2367         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
2368         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
2369         * tree.h (tree_call_nonnegative_warnv_p): New.
2370
2371 2008-04-08  Jan Hubicka  <jh@suse.cz>
2372
2373         * function.c (free_after_compilation): Clear out regno_reg_rtx
2374         pointer.
2375
2376 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
2377
2378         Revert
2379         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
2380
2381         PR middle-end/PR28690
2382         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
2383         same precedence as REG_POINTER and MEM_POINTER operands.
2384
2385 2008-04-08  Richard Guenther  <rguenther@suse.de>
2386
2387         PR middle-end/35834
2388         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
2389         for adding index to base.
2390
2391 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
2392
2393         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
2394         (MINGW_ENABLE_EXECUTE_STACK): New.
2395         (IN_LIBGCC2): For libgcc include windows.h file for
2396         function declarations.
2397
2398 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
2399
2400         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
2401         and tem2 if tem1 is not a REG or MULT.
2402
2403 2008-04-08  Jan Hubicka  <jh@suse.cz>
2404
2405         * function.h (incomming_args): Break out of struct function.
2406         (function_subsections): Break out of struct function.
2407         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
2408         return_rtx and hard_reg_initial_vals from struct function.
2409         Kill inl_max_label_num.
2410         (current_function_pops_args, current_function_args_info,
2411         current_function_args_size, current_function_args_size,
2412         current_function_pretend_args_size,
2413         current_function_outgoing_args_size,
2414         current_function_internal_arg_pointer, current_function_return_rtx):
2415         Kill compatibility accestor macros.
2416         * builtins.c (expand_builtin_apply_args_1): Update.
2417         (expand_builtin_next_arg): Update.
2418         * df-scan.c (df_get_call_refs): Update.
2419         * dbxout.c (dbxout_function_end): Update.
2420         * dwarf2out.c (dwarf2out_switch_text_section): Update.
2421         (output_line_info): Update.
2422         (secname_for_decl): Update.
2423         (dwarf2out_var_location): Update.
2424         * function.c (free_after_compilation): Update.
2425         (assign_parm_find_stack_rtl): Update.
2426         (assign_parms): Update.
2427         (expand_dummy_function_end): Update.
2428         (expand_function_end): Update.
2429         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
2430         (expand_call): Update.
2431         (emit_library_call_value_1): Update.
2432         (store_one_arg): Update.
2433         * varasm.c (initialize_cold_section_name): Update.
2434         (unlikely_text_section): Update.
2435         (unlikely_text_section_p): Update.
2436         (assemble_start_function): Update.
2437         (assemble_end_function): Update.
2438         (default_section_type_flags): Update.
2439         (switch_to_section): Update.
2440         * integrate.c (set_decl_abstract_flags): Update.
2441         (get_hard_reg_initial_val): Update.
2442         (has_hard_reg_initial_val): Update.
2443         (allocate_initial_values): Update.
2444         * resource.c (init_resource_info): Update.
2445         * config/alpha/alpha.c (NUM_ARGS): Update.
2446         (direct_return): Update.
2447         (alpha_va_start): Update.
2448         (alpha_sa_size): Update.
2449         (alpha_initial_elimination_offset): Update.
2450         (alpha_expand_prologue): Update.
2451         (alpha_start_function): Update.
2452         (alpha_expand_epilogue): Update.
2453         (unicosmk_initial_elimination_offset):
2454         * config/alpha/alpha.md (call expander): Update.
2455         * config/s390/s390.c (s390_register_info): Update.
2456         (s390_register_info): Update.
2457         (s390_frame_info): Update.
2458         (s390_initial_elimination_offset): Update.
2459         (s390_build_builtin_va_list): Update.
2460         (s390_va_start): Update.
2461         * config/spu/spu.c (direct_return): Update.
2462         (spu_expand_prologue): Update.
2463         (spu_initial_elimination_offset): Update.
2464         (spu_build_builtin_va_list): Update.
2465         (spu_va_start): Update.
2466         * config/sparc/sparc.c (sparc_init_modes): Update.
2467         (sparc_compute_frame_size): Update.
2468         (function_value): Update.
2469         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
2470         * config/i386/i386.md (return expander): Update.
2471         * config/i386/i386.c (ix86_va_start): Update.
2472         (ix86_can_use_return_insn_p): Update.
2473         (ix86_compute_frame_layout): Update.
2474         (ix86_expand_epilogue): Update.
2475         * config/sh/sh.c (output_stack_adjust): Update.
2476         (calc_live_regs): Update.
2477         (sh_expand_prologue): Update.
2478         (sh_builtin_saveregs): Update.
2479         (sh_va_start): Update.
2480         (initial_elimination_offset): Update.
2481         (sh_allocate_initial_value): Update.
2482         (sh_function_ok_for_sibcall): Update.
2483         (sh_get_pr_initial_val): Update.
2484         * config/sh/sh.md (return expander): Update.
2485         * config/avr/avr.c (frame_pointer_required_p): UPdate.
2486         * config/crx/crx.c (crx_compute_frame): UPdate.
2487         (crx_initial_elimination_offset): UPdate.
2488         * config/xtensa/xtensa.c (compute_frame_size): Update
2489         (xtensa_builtin_saveregs): Update.
2490         (xtensa_va_start): Update.
2491         (order_regs_for_local_alloc): Update.
2492         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
2493         (xstormy16_expand_builtin_va_start): Update.
2494         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
2495         * config/m68hc11/m68hc11.md (return expanders): Update.
2496         * config/m68hc11/m68hc11.c (expand_prologue): Update.
2497         (expand_epilogue): Update.
2498         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
2499         (cris_simple_epilogue): Update.
2500         (cris_expand_prologue): Update.
2501         (cris_expand_epilogue): Update.
2502         * config/iq2000/iq2000.c (iq2000_va_start): Update.
2503         (compute_frame_size): Update.
2504         * config/mt/mt.c (mt_compute_frame_size): Update.
2505         * config/mn10300/mn10300.c (expand_prologue): Update.
2506         (expand_epilogue): Update.
2507         (initial_offset): Update.
2508         (mn10300_builtin_saveregs):
2509         * config/mn10300/mn10300.md (return expander): Update.
2510         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
2511         (ia64_initial_elimination_offset): Update.
2512         (ia64_initial_elimination_offset): Update.
2513         (ia64_expand_prologue): Update.
2514         * config/m68k/m68k.md (return expander): Update.
2515         * config/rs6000/rs6000.c (rs6000_va_start): Update.
2516         (rs6000_stack_info): Update.
2517         * config/mcore/mcore.c (layout_mcore_frame): Update.
2518         (mcore_expand_prolog): Update.
2519         * config/arc/arc.c (arc_compute_frame_size): Update.
2520         * config/score/score3.c (score3_compute_frame_size): Update.
2521         * config/score/score7.c (score7_compute_frame_size): Update.
2522         * config/arm/arm.c (use_return_insn): Update.
2523         (thumb_find_work_register): Update.
2524         (arm_compute_save_reg_mask): Update.
2525         (arm_output_function_prologue): Update.
2526         (arm_output_epilogue): Update.
2527         (arm_size_return_regs): Update.
2528         (arm_get_frame_offsets): Update.
2529         (arm_expand_prologue): Update.
2530         (thumb_exit): Update.
2531         (thumb_unexpanded_epilogue): Update.
2532         (thumb1_output_function_prologue): Update.
2533         * config/pa/pa.md (return expander): Update.
2534         * config/pa/pa.c (compute_frame_size): Update.
2535         (hppa_builtin_saveregs): Update.
2536         * config/mips/mips.c (mips_va_start): Update.
2537         (mips16_build_function_stub): Update.
2538         (mips_compute_frame_info): Update.
2539         (mips_restore_gp): Update.
2540         (mips_output_function_prologue): Update.
2541         (mips_expand_prologue): Update.
2542         * config/v850/v850.c (compute_frame_size): Update.
2543         (expand_prologue): * config/mmix/mmix.c (along): update.
2544         (mmix_initial_elimination_offset): update.
2545         (mmix_reorg): update.
2546         (mmix_use_simple_return): update.
2547         (mmix_expand_prologue): update.
2548         (mmix_expand_epilogue): Update.
2549         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
2550         (emit_link_insn): Update.
2551
2552 2008-04-08  Anatoly Sokolov <aesok@post.ru>
2553
2554         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define 
2555         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL 
2556         instructions.
2557         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for 
2558         atmega103 device.
2559
2560 2008-04-07  Jan Hubicka  <jh@suse.cz>
2561
2562         * function.h (rtl): Rename to x_rtl.
2563         (crtl): New define.
2564         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
2565         frame_offset, stack_check_probe_note, arg_pointer_save_area,
2566         used_temp_slots avail_temp_slots, temp_slot_level,
2567         nonlocal_goto_handler_labels): Update accesstors.
2568         (rtl): New global variable.
2569         (struct function): Move some fileds to rtl_data.
2570         (get_arg_pointer_save_area): Update prototype.
2571         * builtins.c (expand_builtin_setjmp_receiver): Update call of
2572         get_arg_pointer_save_area.
2573         * expr.c (init_expr): Update
2574         * function.c (get_frame_size): Update
2575         (assign_stack_local): Update
2576         (expand_function_end): Update.
2577         (get_art_pointer_save_area): Update
2578         * function.h 
2579         * emit-rtl.c (rtl): Declare.
2580         (regno_reg_rtx): Declare.
2581         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
2582         Update.
2583         (gen_reg_rtx): Update.
2584         * varasm.c (n_deferred_constatns): Update accestor.
2585         (init_varasm_status): Do not allocate varasm_status.
2586         (force_const_mem, get_pool_size, output_constant_pool): Update.
2587         * stmt.c (force_label_rtx): Do not use x_ prefixes.
2588         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
2589         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
2590         * sparc/sparc.h (INIT_EXPANDERS): Update.
2591         * ia64/ia64.h (INIT_EXPANDERS): Update.
2592
2593 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
2594
2595         * reload.c (push_secondary_reload): Add missing break to for loop.
2596
2597 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
2598
2599         PR middle-end/PR28690
2600         * rtlanal.c: Update copyright years.
2601         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
2602         as REG_POINTER and MEM_POINTER operands.
2603         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
2604         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
2605         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
2606         * gcse.c: Update copyright years.
2607         (pre_delete): Call gen_reg_rtx_and_attrs.
2608         (hoist_code): Likewise.
2609         (build_store_vectors): Likewise.
2610         (delete_store): Likewise.
2611         * loop-invariant.c (move_invariant_reg): Likewise.
2612         Update copyright years.
2613
2614 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
2615
2616         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
2617         control string instead of quoted.
2618
2619 2008-04-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2620
2621         * doc/rtl.texi: Rewrite of subreg section.
2622
2623 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
2624
2625         PR/35842
2626         * config/i386/i386.c (legitimize_pic_address): Add treating
2627         of dllimport SYM_REF's.
2628         (legitimize_dllimport_symbol): Add prototype.
2629
2630 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
2631
2632         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
2633         reference in constructor with non self-referential type.
2634
2635 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
2636
2637         Removal of Return with Depressed Stack Pointer support
2638         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
2639         (ECF_SP_DEPRESSED): Likewise.
2640         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
2641         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
2642         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2643         (expand_call): Do not test ECF_SP_DEPRESSED.
2644         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2645         * function.c (keep_stack_depressed): Delete.
2646         (handle_epilogue_set): Likewise.
2647         (update_epilogue_consts): Likewise.
2648         (emit_equiv_load): Likewise.
2649         (thread_prologue_and_epilogue_insns): Remove support for Return with
2650         Depressed Stack Pointer.
2651         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
2652
2653 2008-04-06  Richard Guenther  <rguenther@suse.de>
2654
2655         PR tree-optimization/35400
2656         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
2657         information from SSA_NAMEs.
2658
2659 2008-04-06  Anatoly Sokolov <aesok@post.ru>
2660
2661         * config/avr/avr.h (avr_mega_p): Remove declaration.
2662         (AVR_MEGA): Remove macro.
2663         * config/avr/avr.c (avr_mega_p): Remove variable.
2664         (avr_override_options): Remove inicializion of avr_mega_p.
2665         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
2666         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
2667         (avr_jump_mode): (Ditto.).
2668         (avr_output_progmem_section_asm_op): (Ditto.).
2669         (avr_asm_init_sections): (Ditto.).
2670         (avr_asm_init_sections): (Ditto.).
2671         (avr_rtx_costs): (Ditto.).
2672         * config/avr/avr.md: (Ditto.).
2673         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of 
2674         '__AVR_MEGA__'.
2675
2676 2008-04-06  Richard Guenther  <rguenther@suse.de>
2677
2678         PR tree-optimization/35842
2679         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
2680         is_gimple_invariant_address.
2681
2682 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2683
2684         * gcc.c (default_compilers): Sync Fortran extensions list with
2685         that in fortran/lang-specs.h.
2686         * doc/invoke.texi: Likewise.
2687         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
2688         * dwarf2out.c (gen_compile_unit_die): Likewise.
2689
2690 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
2691
2692         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
2693
2694 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
2695
2696         PR target/12329
2697         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
2698         attribute is used for nested functions.
2699
2700 2008-04-05  Jan Hubicka  <jh@suse.cz>
2701
2702         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
2703
2704         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
2705         letter argument.
2706         (dump_files): Update.
2707         (enable_rtl_dump_file): Do not accept letter argument.
2708         * tree-pass.h (dump_file_info): Remove letter argument.
2709         * toplev.c (decode_d_option): Update -da handling.
2710         * toplev.h (enable_rtl_dump_file): Update prototype.
2711         * passes.c (register_one_dump_file): Do not accept IPA argument; work
2712         it out based on pass type.
2713         (register_dump_files_1): Likewise.
2714         (init_optimization_passes): Update register_one_dump_file calls.
2715         (execute_one_pass): Sanity check that IPA passes are called at IPA
2716         level and RTL passes at RTL level.
2717         (execute_pass_list): IPA pass can not be after or subpass of
2718         GIMPLE/RTL pass.
2719         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
2720         disallov RTL subpasses of IPA subpasses.
2721
2722 2008-04-05  Ben Elliston  <bje@au.ibm.com>
2723
2724         * tree-cfg.c (need_fake_edge_p): Return false for calls to
2725         builtins that return exactly once and do not throw. Cache call to
2726         call_expr_flags.
2727
2728 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
2729
2730         PR rtl-optimization/34916
2731         PR middle-end/35519
2732         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
2733         between instruction pairs.
2734
2735 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
2736
2737         * doc/invoke.texi: Document -mbitops for SH.
2738         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
2739         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
2740         * config/sh/sh.c (print_operand): Add %t operand code.
2741         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
2742         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
2743         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
2744         (extendqihi2): Likewise.
2745         (movqi_i): Likewise.
2746         (insv): Use bset, bclr and bst instructions for SH2A if possible.
2747         (extv): Use bld instruction for SH2A if possible.
2748         (extzv): Likewise.
2749         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
2750         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
2751         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
2752         (bset.b, bclr.b): Define peepholes.
2753         * config/sh/sh.opt (mbitops): New option.
2754
2755 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
2756
2757         PR target/35620
2758         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
2759         and view convert expression.
2760
2761 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
2762
2763         PR target/35364
2764         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
2765
2766 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
2767
2768         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
2769
2770         * config/i386/cpuid.h (bit_AES): New.
2771         (bit_PCLMUL): Likewise.
2772
2773         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
2774         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
2775         SSE2 if AES or PCLMUL is enabled.
2776         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
2777         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
2778         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
2779         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
2780         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
2781         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
2782         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
2783         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
2784         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
2785         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
2786         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
2787         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
2788         __builtin_ia32_aeskeygenassist128 and
2789         __builtin_ia32_pclmulqdq128.
2790         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
2791         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
2792         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
2793
2794         * config/i386/i386.h (TARGET_AES): New.
2795         (TARGET_PCLMUL): Likewise.
2796         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
2797
2798         * config/i386/i386.md (UNSPEC_AESENC): New.
2799         (UNSPEC_AESENCLAST): Likewise.
2800         (UNSPEC_AESDEC): Likewise.
2801         (UNSPEC_AESDECLAST): Likewise.
2802         (UNSPEC_AESIMC): Likewise.
2803         (UNSPEC_AESKEYGENASSIST): Likewise.
2804         (UNSPEC_PCLMUL): Likewise.
2805
2806         * config/i386/i386.opt (maes): New.
2807         (mpclmul): Likewise.
2808
2809         * config/i386/sse.md (aesenc): New pattern.
2810         (aesenclast): Likewise.
2811         (aesdec): Likewise.
2812         (aesdeclast): Likewise.
2813         (aesimc): Likewise.
2814         (aeskeygenassist): Likewise.
2815         (pclmulqdq): Likewise.
2816
2817         * config/i386/wmmintrin.h: New.
2818
2819         * doc/extend.texi: Document AES and PCLMUL built-in function.
2820
2821         * doc/invoke.texi: Document -maes and -mpclmul.
2822
2823 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
2824
2825         * function.c (free_after_parsing): Replace with
2826         cxx_push_function_context from C++ front-end.
2827         (allocate_struct_function): Don't call langhook.
2828         * langhooks.h (struct lang_hooks_for_functions): Delete.
2829         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
2830         member "function".
2831         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
2832         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
2833         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
2834         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
2835         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
2836         remove LANG_HOOKS_FUNCTION_INITIALIZER.
2837         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
2838
2839         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
2840         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
2841         
2842 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
2843
2844         PR c/35440
2845         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
2846         for all types.
2847
2848 2008-04-04  Richard Guenther  <rguenther@suse.de>
2849
2850         PR middle-end/35823
2851         * fold-const.c (optimize_minmax_comparison): Use the correct
2852         type for the constant in the simplified comparison.
2853
2854 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
2855
2856         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
2857         Pass L2 size as "--param l2-cache-size" to the compiler.
2858         (decode_l2_cache): New function to decode L2 cache parameters using
2859         0x8000006 extended cpuid function.
2860         (detect_caches_amd): Determine parameters of L2 cache using
2861         decode_l2_caches function.
2862         (decode_caches_intel): Decode L2 cache parameters.
2863         (detect_caches_intel): Determine L2 cache parameters using
2864         decode_caches_intel and decode_l2_caches functions.
2865
2866 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
2867
2868         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
2869         secondary input reload for subword loads from the constant pool.
2870
2871 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
2872
2873         PR target/35713
2874         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
2875           constants of the appropriate size for runtime calculations.
2876
2877         PR c/35712
2878         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
2879           decimal-float literal constant zero.
2880
2881 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
2882
2883         PR c/35738
2884         * c-parser.c (c_parser_omp_atomic): Call
2885         default_function_array_conversion on the RHS.
2886
2887         PR middle-end/35818
2888         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
2889         call is_variable_sized if decl has incomplete type.
2890
2891 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
2892
2893         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
2894
2895 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
2896
2897         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
2898         iterators.
2899         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
2900         (sgt<u>): Merge sgt and sgtu into new expander.
2901         (sgt, sgtu): Remove expanders.
2902         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
2903         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
2904         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
2905         *sgtu_<mode>_mips16 into new pattern.
2906         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
2907         (sge<u>): Merge sge and sgeu into new expander.
2908         (sge, sgeu): Remove expanders.
2909         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
2910         new pattern.
2911         (*sge_<mode>, second *sge_<mode>): Remove patterns.
2912         (slt<u>): Merge slt and sltu into new expander.
2913         (slt, sltu): Remove expanders.
2914         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
2915         (*slt_<mode>, *sltu_<mode>): Remove patterns.
2916         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
2917         *sltu_<mode>_mips16 into new pattern.
2918         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
2919         (sle<u>): Merge sle and sleu into new expander.
2920         (sle, sleu): Remove expanders.
2921         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
2922         (*sle_<mode>, *sleu_<mode>): Remove patterns.
2923         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
2924         *sleu_<mode>_mips16 into new pattern.
2925         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
2926
2927 2008-04-03  Jan Hubicka  <jh@suse.cz>
2928
2929         PR tree-optimization/35795
2930         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
2931         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
2932         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
2933         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
2934         * score/score3.c (score3_output_mi_thunk): Likewise.
2935         * score/score7.c (score7_output_mi_thunk): Likewise.
2936         * mips/mips.c (mips_output_mi_thunk): Likewise.
2937
2938 2008-04-03  Richard Guenther  <rguenther@suse.de>
2939
2940         * tree-vrp.c (extract_range_from_unary_expr): Handle all
2941         conversions.  Simplify code.
2942
2943 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2944
2945         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
2946
2947 2008-04-03  Tom Tromey  <tromey@redhat.com>
2948             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2949
2950         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
2951         * config/bfin/t-bfin-linux (generated_files): Add
2952         linux-sysroot-suffix.h.
2953         * doc/install.texi (Prerequisites): Require make 3.80.
2954         * doc/sourcebuild.texi (Front End Directory): Document new
2955         variable.
2956         * Makefile.in (generated_files): New variable.
2957         (ALL_HOST_OBJS): New variable.
2958         ($(ALL_HOST_OBJS)): New target.
2959
2960 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2961
2962         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
2963         (remap_block): Call id->transform_lang_insert_block instead
2964         of langhook.
2965         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
2966         Set id.transform_lang_insert_block to NULL.
2967         (clone_body): Move to cp/optimize.c
2968         * tree-inline.h (struct copy_body_data): Change
2969         transform_lang_insert_block to function pointer.
2970         (copy_generic_body, copy_decl_no_change): Export.
2971         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
2972         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
2973         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
2974
2975         * c-tree.h (insert_block): Kill.
2976         * c-decl.c (insert_block): Kill.
2977
2978 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
2979
2980         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
2981         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
2982         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
2983         argument.
2984         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
2985         argument, call {push,pop}_function_context from here.
2986         * c-parser.c: Use c_{push,pop}_function_context.
2987
2988         * function.c (push_function_context_to): Move meat ...
2989         (push_function_context): ... here.  Simplify.
2990         * function.c (pop_function_context_from): Move meat ...
2991         (pop_function_context): ... here.  Simplify.
2992         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
2993         leave_nested).
2994         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
2995         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
2996         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
2997         * tree.h (push_function_context_to, pop_function_context_from): Remove.
2998
2999 2008-04-03  Ben Elliston  <bje@au.ibm.com>
3000
3001         * expmed.c (extract_force_align_mem_bit_field): Remove.
3002
3003 2008-04-03  Richard Guenther  <rguenther@suse.de>
3004
3005         PR middle-end/35800
3006         * expr.h (try_casesi): Adjust prototype.
3007         * expr.c (try_casesi): Take fallback label as extra parameter.
3008         Use that for gen_casesi if default_label is NULL.
3009         * stmt.c (expand_case): Pass fallback label to try_casesi,
3010         make sure to fill gaps with a fallback label if default_label
3011         is not present.
3012
3013 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
3014
3015         PR target/35801
3016         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
3017
3018 2008-04-03  Ben Elliston  <bje@au.ibm.com>
3019
3020         * expmed.c (extract_split_bit_field): Remove if (0) code.
3021         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
3022         (do_ds_constraint): Likewise.
3023
3024 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
3025
3026         * doc/cppopts.texi (-dU): Document.
3027         * c-common.h (flag_dump_macros): Update comment.
3028         * c-opts.c (handle_OPT_d): Handle -dU.
3029         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
3030         dump_queued_macros, cb_used_define, cb_used_undef): New.
3031         (init_pp_output): Handle -dU.
3032         (cb_line_change): Call dump_queued_macros.
3033         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
3034
3035 2008-04-02  Anatoly Sokolov <aesok@post.ru>
3036
3037         * config/avr/predicates.md (io_address_operand): New predicate. 
3038         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
3039         * config/avr/avr.c (avr_io_address_p): Remove function.
3040         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of 
3041         'avr_io_address_p' function.
3042         (out_movhi_r_mr): (Ditto.).
3043         (out_movqi_mr_r): (Ditto.).
3044         (out_movhi_mr_r): (Ditto.).
3045         (avr_address_cost): (Ditto.).
3046
3047 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
3048
3049         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
3050         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
3051         in 32bit mode when XMM registers are available to avoid store
3052         forwarding stalls.
3053         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
3054         corresponding post-reload splitters.
3055
3056 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
3057
3058         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
3059         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
3060         __builtin_ia32_roundss.
3061         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
3062         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
3063         __builtin_ia32_roundss.
3064         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
3065         IX86_BUILTIN_SHUFPD here.
3066
3067 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
3068
3069         * config/i386/i386.md (plogic): New.
3070         (plogicprefix): Likewise.
3071
3072         * config/i386/mmx.md (mmx_<code><mode>3): New.
3073         (mmx_and<mode>3): Removed.
3074         (mmx_ior<mode>3): Likewise.
3075         (mmx_xor<mode>3): Likewise.
3076
3077         * config/i386/sse.md (<code><mode>3): New.
3078         (*<code><mode>3): Likewise.
3079         (*<code><mode>3): Likewise.
3080         (<code><mode>3): Likewise.
3081         (*sse_<code><mode>3): Likewise.
3082         (*sse2_<code><mode>3): Likewise.
3083         (<code>tf3): Likewise.
3084         (*<code>tf3): Likewise.
3085         (and<mode>3): Likewise.
3086         (*and<mode>3): Likewise.
3087         (ior<mode>3): Removed.
3088         (*ior<mode>3): Likewise.
3089         (xor<mode>3): Likewise.
3090         (*xor<mode>3): Likewise.
3091         (*and<mode>3): Likewise.
3092         (*ior<mode>3): Likewise.
3093         (*xor<mode>3): Likewise.
3094         (and<mode>3): Likewise.
3095         (*sse_and<mode>3): Likewise.
3096         (*sse2_and<mode>3): Likewise.
3097         (andtf3): Likewise.
3098         (*andtf3): Likewise.
3099         (ior<mode>3): Likewise.
3100         (*sse_ior<mode>3): Likewise.
3101         (*sse2_ior<mode>3): Likewise.
3102         (iortf3): Likewise.
3103         (*iortf3): Likewise.
3104         (xor<mode>3): Likewise.
3105         (*sse_xor<mode>3): Likewise.
3106         (*sse2_xor<mode>3): Likewise.
3107         (xortf3): Likewise.
3108         (*xortf3): Likewise.
3109
3110 2008-04-02  Richard Guenther  <rguenther@suse.de>
3111
3112         PR tree-optimization/14495
3113         PR tree-optimization/34793
3114         * tree-vrp.c (struct switch_update): New structure.
3115         (to_remove_edges, to_update_switch_stmts): New VECs.
3116         (simplify_switch_using_ranges): New function.  Remove not taken
3117         case labels and edges.
3118         (simplify_stmt_using_ranges): Call it.
3119         (identify_jump_threads): Mark edges we have queued for removal
3120         so we don't thread them.
3121         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
3122         case label vector.
3123         * tree-cfg.c (group_case_labels): Deal with missing default label.
3124         (tree_verify_flow_info): Allow missing default label.
3125         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
3126         (emit_case_nodes): Likewise.
3127         (expand_case): Do not rely on the default label to be present.
3128         * expr.c (try_casesi): Deal with NULL default_label.
3129         (do_tablejump): Likewise.
3130
3131 2008-04-02  Richard Guenther  <rguenther@suse.de>
3132
3133         PR tree-optimization/14495
3134         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
3135         SWITCH_EXPR here ...
3136         (vrp_visit_switch_stmt): ... but here (new function).
3137         (find_case_label_index): New helper function.
3138         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
3139
3140 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3141
3142         * fwprop.c: Fix ISO-C99ism.
3143
3144 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3145
3146         PR bootstrap/35752
3147         * Makefile.in (objdir): Set it here.
3148         * configure.ac: Not here.  Find dynamic linker characteristics.
3149         * exec-tool.in: Use them.
3150         * aclocal.m4: Regenerate.
3151         * configure: Regenerate.
3152
3153 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3154
3155         * expr.c (expand_var): Delete it.
3156         * expr.h (expand_var): Delete prototype.
3157         * function.c (expand_function_start): Use expand_decl instead.
3158         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
3159         langhook.
3160
3161 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
3162
3163         PR rtl-optimization/35542
3164         * fwprop.c (forward_propagate_and_simplify): Replace
3165         loc_reg_mentioned_in_p with reg_mentioned_p.
3166
3167 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
3168
3169         PR rtl-optimization/35281
3170         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
3171         (propagate_rtx_1): Handle PR_HANDLE_MEM.
3172         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
3173         (varying_mem_p): Move above propagate_rtx.
3174         (all_uses_available_at): Do not check MEMs.
3175
3176 2008-04-02  Rafael Espindola  <espindola@google.com>
3177
3178         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
3179         (register_edge_assert_for_2): Split the cond argument.
3180         (register_edge_assert_for_1): Adjust for the change in
3181         register_edge_assert_for_2.
3182         (register_edge_assert_for): Split the cond argument.
3183         (find_switch_asserts): Adjust for the change in
3184         register_edge_assert_for.
3185
3186 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
3187
3188         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
3189         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
3190         offsets for 64-bit mingw.
3191         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
3192         abi for x86_64-pc-mingw.
3193
3194 2008-04-02  Richard Guenther  <rguenther@suse.de>
3195
3196         * tree-vrp.c (extract_range_from_assert): Make sure to not
3197         produce range min/max with TREE_OVERFOW set.
3198         If merging a anti-range and a range keep the anti-range if
3199         the range covers all values of the type.
3200         (register_edge_assert_for_2): Only allow sign-changing
3201         conversions in detecting canonical range checks.  Also
3202         register an assert for the unsigned name if useful.
3203
3204         PR tree-optimization/35787
3205         * tree-vrp.c (vrp_val_max): New function.
3206         (vrp_val_min): Likewise.
3207         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
3208         (vrp_val_is_min): Likewise.
3209         (supports_overflow_infinity): Use vrp_val_{min,max}.
3210         (negative_overflow_infinity): Likewise.
3211         (positive_overflow_infinity): Likewise.
3212         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
3213         (is_positive_overflow_infinity): Likewise.
3214         (is_overflow_infinity): Likewise.
3215         (avoid_overflow_infinity): Use vrp_val_{min,max} and
3216         vrp_val_is_{min,max}.
3217         (set_and_canonicalize_value_range): Canonicalize anti-ranges
3218         to ranges if possible.  Avoid empty ranges.
3219
3220 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3221
3222         PR middle-end/35705
3223         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
3224         the expression is a function address.
3225
3226 2008-04-01  George Helffrich  <george@gcc.gnu.org>
3227
3228         PR fortran/35154, fortran/23057
3229         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
3230         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
3231         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
3232         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
3233         in common.
3234         (dbxout_syms): Check for COMMON-based symbol and wrap in
3235         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
3236         in bracket for efficiency.
3237
3238         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
3239         using DW_TAG_common_block + member offset.
3240         (add_pubname_string): New function.
3241         (dw_expand_expr): New function to find block name and offset for
3242         COMMON var.
3243         (common_check): New function to check whether symbol in Fortran COMMON.
3244         (gen_variable_die): If COMMON, use DW_TAG_common_block.
3245
3246 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
3247
3248         PR c/35436
3249         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
3250
3251 2008-04-02  Ben Elliston  <bje@au.ibm.com>
3252
3253         * config/v850/v850.md (casesi): Remove if (0) code.
3254         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
3255         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
3256
3257 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
3258
3259         * config/i386/i386.md (rex64suffix): New mode attribute.
3260         (floathi<mode>2): Disable expander for SSE math.
3261         (*floathi<mode>2_1): New insn insn_and_split pattern.
3262         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
3263         corresponding post-reload splitters.
3264         (*floathi<mode>2_i387): New macroized insn pattern.
3265         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
3266         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
3267         insn_and_split pattern.
3268         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
3269         New macroized instruction patterns and corresponding post-reload
3270         splitters.
3271         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
3272         and corresponding post-reload splitters.
3273         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
3274         New macroized instruction patterns.
3275         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
3276         macroized instruction patterns and corresponding post-reload splitters.
3277         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
3278         corresponding post-reload splitters.
3279         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
3280         New macroized instruction patterns.
3281         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
3282         corresponding post-reload splitters.
3283         (*floatsi<mode>2_i387): New macroized instruction patterns.
3284
3285 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
3286
3287         * config/i386/i386.md (smaxmin): New.
3288         (umaxmin): Likewise.
3289         (maxminiprefix): Likewise.
3290         (maxminfprefix): Likewise.
3291         (<code><mode>3): Likewise.
3292         (smin<mode>3): Removed.
3293         (smax<mode>3): Likewise.
3294
3295         * config/i386/mmx.md (mmx_<code>v2sf3): New.
3296         (mmx_<code>v4hi3): Likewise.
3297         (mmx_<code>v8qi3): Likewise.
3298         (mmx_smaxv2sf3): Removed.
3299         (mmx_sminv2sf3): Likewise.
3300         (mmx_umaxv8qi3): Likewise.
3301         (mmx_smaxv4hi3): Likewise.
3302         (mmx_uminv8qi3): Likewise.
3303         (mmx_sminv4hi3): Likewise.
3304
3305         * config/i386/sse.md (<addsub><mode>3): New.
3306         (*<addsub><mode>3): Likewise.
3307         (<sse>_vm<addsub><mode>3): Likewise.
3308         (<maxmin><mode>3): Likewise.
3309         (*<maxmin><mode>3_finite): Likewise.
3310         (*<maxmin><mode>3): Likewise.
3311         (<sse>_vm<maxmin><mode>3): Likewise.
3312         (sse3_h<addsub>v4sf3): Likewise.
3313         (sse3_h<addsub>v2df3): Likewise.
3314         (<maxmin>v16qi3): Likewise.
3315         (*<maxmin>v16qi3): Likewise.
3316         (<maxmin>v8hi3): Likewise.
3317         (*<maxmin>v8hi3): Likewise.
3318         (*sse4_1_<maxmin><mode>3): Likewise.
3319         (*sse4_1_<maxmin><mode>3): Likewise.
3320         (add<mode>3): Removed.
3321         (*add<mode>3): Likewise.
3322         (<sse>_vmadd<mode>3): Likewise.
3323         (sub<mode>3): Likewise.
3324         (*sub<mode>3): Likewise.
3325         (<sse>_vmsub<mode>3): Likewise.
3326         (smin<mode>3): Likewise.
3327         (*smin<mode>3_finite): Likewise.
3328         (*smin<mode>3): Likewise.
3329         (<sse>_vmsmin<mode>3): Likewise.
3330         (smax<mode>3): Likewise.
3331         (*smax<mode>3_finite): Likewise.
3332         (*smax<mode>3): Likewise.
3333         (<sse>_vmsmax<mode>3): Likewise.
3334         (sse3_haddv4sf3): Likewise.
3335         (sse3_haddv2df3): Likewise.
3336         (sse3_hsubv4sf3): Likewise.
3337         (sse3_hsubv2df3): Likewise.
3338         (umaxv16qi3): Likewise.
3339         (*umaxv16qi3): Likewise.
3340         (smaxv8hi3): Likewise.
3341         (*smaxv8hi3): Likewise.
3342         (*sse4_1_smax<mode>3): Likewise.
3343         (*sse4_1_umax<mode>3): Likewise.
3344         (uminv16qi3): Likewise.
3345         (*uminv16qi3): Likewise.
3346         (sminv8hi3): Likewise.
3347         (*sminv8hi3): Likewise.
3348         (*sse4_1_smin<mode>3): Likewise.
3349         (*sse4_1_umin<mode>3): Likewise.
3350
3351 2008-04-01  Rafael Espindola  <espindola@google.com>
3352
3353         * tree-cfg.c (verify_expr): remove in_phi.
3354         (verify_stmt): Don't call walk_tree with verify_expr. Use
3355         is_gimple_min_invariant instead of is_gimple_val.
3356
3357 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
3358
3359         * doc/include/gpl_v3.texi: Update for manpage generation.
3360         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
3361         gpl.texi.
3362         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
3363         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
3364         gpl_v3.texi instead of gpl.texi.
3365         (gpl.pod): New.
3366
3367 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
3368
3369         PR pch/13675
3370         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
3371
3372 2008-04-01  Rafael Espindola  <espindola@google.com>
3373
3374         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
3375         (extract_code_and_val_from_cond): Use
3376         extract_code_and_val_from_cond_with_ops.
3377
3378 2008-04-01  Jan Hubicka  <jh@suse.cz>
3379
3380         * function.c (free_after_compilation): Free epilogue_delay_list.
3381         (prepare_function_start): Assert that previous compilation was freed.
3382
3383 2008-04-01  Jan Hubicka  <jh@suse.cz>
3384             Jim Wilson  <wilson@tuliptree.org>
3385             Andreas Tobler <andreast@gcc.gnu.org>
3386
3387         PR middle-end/35781