OSDN Git Service

fix log format
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
2
3         PR tree-optimization/33373
4         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
5         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
6
7 2007-09-12  Jan Hubicka  <jh@suse.cz>
8
9         PR target/33393
10         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable for
11         !SSE_MATH
12
13 2007-09-12  Christian Bruel  <christian.bruel@st.com>
14
15         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
16         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
17         
18 2007-09-12  Ira Rosen  <irar@il.ibm.com>
19
20         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
21         for oprnd1 if not required.
22         (vectorizable_operation): Use scalar operand in SLP in case of 
23         shift with scalar argument.
24
25 2007-09-12  Ira Rosen  <irar@il.ibm.com>
26
27         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
28         to 1.
29
30 2007-09-11  James E. Wilson  <wilson@specifix.com>
31
32         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
33         TARGET_UNWIND_INFO is defined.
34         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
35         after definition.
36
37 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
38
39         * config/sh/sh.c (calc_live_regs): Use
40         current_function_saves_all_registers instead of
41         current_function_has_nonlocal_label.
42         (sh_allocate_initial_value): Likewise.
43         (sh_get_pr_initial_val): Likewise.
44         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
45         * config/sh/sh.md (load_ra): Likewise.
46
47 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
48
49         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
50
51         PR target/33360
52         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
53         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
54
55 2007-09-12  Sa Liu  <saliu@de.ibm.com>
56
57         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
58         operands to DFmode GE or LE compares.
59
60 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
61
62         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
63         REG_CLASS_NAMES): Add P0REGS.
64         (REGNO_REG_CLASS): Return it where appropriate.
65         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
66         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
67         * doc/md.texi (Blackfin family): Document 'q' constraints.
68
69 2007-09-11  Steve Kenton  <skenton@ou.edu>
70
71         * pa/linux-unwind.h: Guard with inhibit_libc.
72         * pa/hpux-unwind.h: Likewise.
73
74 2007-09-11  David Daney  <ddaney@avtrex.com>
75
76         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
77         * doc/install.texi: Document new --with-llsc and --without-llsc
78         options.
79         * config.gcc: Handle --with-llsc and --without-llsc configure options.
80         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
81         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
82         ISA_HAS_SYNC.
83         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
84         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
85         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
86         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
87         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
88         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
89         * config/mips/mips.opt (mllsc): New option.
90         * config/mips/mips.c (mips_llsc): Define variable.
91         (mips_handle_option): Handle mllsc option.
92         (override_options): Set mips_print_operand_punct for '|' and '-'.
93         (print_operand): Add new %| and %- operand codes.
94         * config/mips/mips.h (mips_llsc_setting): New enum type.
95         (mips_llsc): Declare.
96         (OPTION_DEFAULT_SPECS): Add llsc handling.
97         (GENERATE_SYNC): New macro.
98         (GENERATE_LL_SC): New macro.
99         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
100         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
101         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
102         in %| and %- operand codes.
103
104 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
105
106         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
107         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
108
109 2007-09-11  Jason Merrill  <jason@redhat.com>
110
111         PR middle-end/27945
112         * stor-layout.c (layout_decl): Do pack variable size fields.    
113
114 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
115
116         * config/m68k/predicates.md (movsi_const0_operand,
117         non_symbolic_call_operand): New predicates.
118
119         * config/m68k/constraints.md: (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
120         New constraints.
121         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
122         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
123         CW, CZ, CS, Ap and Ac.
124
125         * config/m68k/m68k.md (UNSPEC_IB): New constant.
126         (constraints.md): New include.
127         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
128         opx_mem, opy_mem, op_mem, guess, split): New attributes.
129         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
130         Specify attributes.
131         (pushdi): Add split.
132         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
133         attributes.  Split tstsi_internal_68020_cf from it.
134         (tstsi_internal_68020_cf): New pattern.
135         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
136         (tst<mode>_cf): Specify attributea.
137         (cmpsi_cf): Name pattern.  Specify attributes.
138         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
139         (pushexthisi_const): Fix to use alternatives.  Specify
140         attributes.
141         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
142         from it.  Fix to use alternatives.  Specify attributes.
143         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
144         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
145         attributes.
146         (movsf_cf_soft): Specify attributes.
147         (movdf_cf_soft): Add split.
148         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
149         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
150         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
151         (truncdfsf2_68881): Name pattern.  Specify attributes.
152         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
153         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
154         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
155         Specify attributes.
156         (addsi3_5200): Fix to use alternatives.  Specify attributes.
157         Add splits.
158         (add<mode>3_cf, subdi_dishl32): Specify attributes.
159         (subsi3): Add alternative for subq.l.  Specify attributes.
160         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
161         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
162         attributes.
163         (umulhisi3): Specify attributes.
164         (mulhisisi3_z): Name pattern.  Specify attributes.
165         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
166         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
167         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
168         bsetmemqi): Specify attributes.
169         (bsetmemqi_ext): Name pattern.  Specify attributes.
170         (bclrmemqi): Specify attributes.
171         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
172         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
173         attributes.
174         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
175         pattern.  Specify attributes.
176         (jump): Specify attributes.
177         (tablejump_internal): Name pattern.  Specify attributes.
178         (call_value): Split into non_symbolic_call_value,
179         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
180         alternatives.  Specify attributes.
181         (non_symbolic_call_value, symbolic_call_value_jsr,
182         symbolic_call_value_bsr): New patterns.
183         (nop, return, unlink, indirect_jump): Specify attributes.
184         (trap): Fix condition.  Specify attributes.
185         (ib): New pattern.
186
187         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
188         (override_options): Initialize it.  Initialize m68k_sched_cpu.
189         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
190         (const_method): Make global, rename to m68k_const_method.
191         (const_int_cost, output_move_const_into_data_reg): Update.
192         (output_move_double): Parametrize to emit rtl code, rename to
193         handle_move_double.
194         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
195         emit_movsi): New static functions.
196         (output_move_double): New function with semantics of old
197         output_move_double.
198         (m68k_emit_move_double): New function.
199         (m68k_sched_cpu): New variable.
200         (attr_op_type): New enum.
201         (sched_guess_p): New variable.
202         (sched_address_type, sched_operand_type, sched_attr_op_type):
203         New static functions.
204         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
205         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
206         (sched_branch_type): New static variable.
207         (m68k_sched_branch_type): New function.
208         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
209         (m68k_symbolic_call_var): Declare.
210         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
211         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
212         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
213         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
214         Declare.
215
216 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
217
218         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
219         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
220         error if __builtin_va_arg_pack_len () wasn't optimized out during
221         inlining.
222         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
223         with the number of inline's anonymous arguments.
224         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
225
226 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
227
228         * fold-const.c (extract_muldiv_1): Do not simplify
229         var * c * c to var.
230
231 2007-09-11  Jan Hubicka <jh@suse.cz>
232
233         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
234         (TARGET_INTER_UNIT_CONVERSIONS): New.
235         * i386.md (floatsi expanders): Remove redundant check for SImode
236         source; offload to memory when asked for.
237         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
238         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
239         Update conditions;
240         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
241         floatsidf2_mixed_memory, floatsidf2_sse_memory
242         floatdisf2_mixed_memory, floatsisf2_sse_memory,
243         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
244
245 2007-09-11  Jan Hubicka <jh@suse.cz>
246
247         * toplev.c (process_options): all frontends now do unit-at-a-time.
248         * cgraphunit.c: update comments.
249         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
250         * c-decl.c (finish_function): use cgraph_add_new_function.
251         * function.c (expand_function_end): We are always unit-at-a-time.
252
253 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
254
255         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
256         settings for MIPS16.
257         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
258
259 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
260
261         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
262         SYMBOL_FORCE_TO_MEM constants.
263         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
264         (mips16_rewrite_pool_refs_info): New structure.
265         (mips16_rewrite_pool_constant): New function, split out from...
266         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
267         mips16_rewrite_pool_refs_info structure rather than a pointer
268         to a constant pool.  Force force_to_mem_operands into memory.
269         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
270         * config/mips/predicates.md (force_to_mem_operand): New predicate.
271         * config/mips/constraints.md (kf): New constraint.
272         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
273         (*movsi_mips16): Likewise.
274
275 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
276             Nigel Stephens  <nigel@mips.com>
277             David Ung  <davidu@mips.com>
278
279         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
280         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
281         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
282         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
283         (mips_zero_extend_cost): New functions.
284         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
285         Use the new functions.  Tweak many cost estimates, both here
286         and in the new subroutines.  Return false when the cost of the
287         operands has not been calculated.  Check for *clear_upper32.
288         Check for floating-point multiply-add, reciprocal and rsqrt
289         patterns.  Handle comparison and rotation codes.
290
291 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
292
293         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
294         override default.
295         * config/i386/i386.c (get_dllimport_decl): Don't strip
296         FASTCALL_PREFIX.
297
298 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
299
300         PR c/30013
301         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
302         declarations to top.
303         (DFP_TO_BFP): Use for either XFmode or TFmode.
304         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
305         of BFP_VIA_TYPE.
306         * config/dfp-bit.h: Include float.h.
307         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
308         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
309         which doesn't mean the same thing.
310         (BFP_KIND): Use 4 to mean TFmode.
311         (BFP_FMT): Specify the number of decimal digits based on the
312         number of mantissa digits.
313         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
314         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
315         (STR_TO_BFP): Use strtold for XFmode or TFmode.
316         (TFtype): Define if TFmode is supported.
317         * doc/libgcc.texi (Decimal float library routines): Document
318         TF conversion functions.
319
320 2007-09-10  Chao-ying Fu  <fu@mips.com>
321
322         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
323         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
324         (mips_emit_compare): Process fixed-point modes.
325         (mips_pad_arg_upward): Support fixed-point types.
326         (override_options): Allow fixed-point modes in accumulators.
327         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
328         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
329         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
330         (mips_scalar_mode_supported_p): New function to accept fixed-point
331         modes if the width is not greater than two BITS_PER_WORD.
332         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
333         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
334         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
335         LONG_LONG_ACCUM_TYPE_SIZE): Define.
336         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
337         modes.
338         ("IMODE"): New mode attribute.
339         (mips-fixed.md): Include.
340         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
341         ACCUM, UACCUM.
342         * config/mips/mips-fixed.md: New file.
343
344 2007-09-11  Ben Elliston  <bje@au.ibm.com>
345
346         * config/spu/spu.md: Formatting fixes.
347
348 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
349
350         * config/dfp-bit.c (dfp_unary_func): Delete.
351         (dfp_unary_op): Delete.
352         (dfp_binary_op): Use decFloat functions instead of decNumber
353         functions for binary operations.
354         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
355         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
356         DFP_C_TYPE.
357         (dfp_compare_op): Use decFloat functions insteadof decNumber
358         functions for comparisons.
359         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
360         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
361         DFP_C_TYPE.
362         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
363         call to dxx_binary_op and decFloat function.
364         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
365         calls to dxx_binary_op and decFloat function.
366         * config/dfp-bit.h: Include decFloat header files.
367         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
368         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
369         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
370         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
371
372 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
373             Jan Sjodin <jan.sjodin@amd.com>
374         
375         * tree-vect-analyze.c (vect_analyze_operations): Change
376         comparison of loop iterations with threshold to less than
377         or equal to instead of less than. Reduce
378         min_scalar_loop_bound by one.
379         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
380         Change prologue and epilogue iterations estimate to vf/2,
381         when unknown at compile-time. Change versioning guard
382         cost to taken_branch_cost. If peeling for alignment is
383         unknown at compile-time, change peel guard costs to one
384         taken branch and one not-taken branch per peeled loop.
385         If peeling for alignment is known but number of scalar loop
386         iterations is unknown at compile-time, change peel guard
387         costs to one taken branch per peeled loop. Change the cost
388         model equation to consider vector iterations as the loop
389         iterations less the prologue and epilogue iterations.
390         Change outside vector cost check to less than or equal to
391         zero instead of equal to zero.
392         (vect_do_peeling_for_loop_bound): Reduce
393         min_scalar_loop_bound by one.
394         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
395         TARG_COND_NOT_TAKEN_BRANCH_COST.        
396         * config/i386/i386.h (processor_costs): Add
397         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
398         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
399         vec_align_load_cost, vect_unalign_load_cost,
400         vec_store_cost, cond_taken_branch_cost,
401         cond_not_taken_branch_cost.
402         Define macros for x86 costs.
403         * config/i386/i386.c:
404         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
405         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
406         scalar_to_vec_cost, vec_align_load_cost, 
407         vect_unalign_load_cost, vec_store_cost,
408         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
409         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
410         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
411         core2_cost, generic64_cost, generic32_cost): Set to default
412         untuned costs.
413         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
414         (x86_builtin_vectorization_cost): New.
415
416 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
417             Ben Elliston  <bje@au.ibm.com>
418
419         * dfp.c: Include decimal128Local.h; 
420         (dfp_byte_swap): Remove.
421         (encode_decimal32, decode_decimal32): Don't handle endianness.
422         (encode_decimal64, decode_decimal64): Ditto.
423         (encode_decimal128, decode_decimal128): Ditto.
424         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
425         (__swap64): Remove.
426         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
427          (__swap128): Remove
428         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
429         * Makefile.in (DECNUM_H): Add decimal128Local.h.
430
431 2007-09-10  David Daney  <ddaney@avtrex.com>
432
433         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
434         define_constants.
435         (memory_barrier): Rewrote as an insn that clobbers memory.
436
437 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
438
439         * config/mips/mips.c (mips_global_pointer): Check
440         call_really_used_regs instead of call_used_regs.
441         (mips_save_reg_p): Likewise.  Save all call-saved registers
442         if current_function_saves_all_registers.  Fix indentation.
443         No longer treat $18 as a special case.
444         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
445
446 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
447
448         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
449         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
450         the introductory comment.
451         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
452         (override_options): Don't test for it.
453         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
454         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
455         * config/mips/vr.h: As for config/mips/sde.h.
456
457 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
458             Revital Eres  <eres@il.ibm.com>
459
460         * target.h (struct gcc_target.sched): New field: sms_res_mii.
461         (struct ddg): Define.
462         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
463         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
464         * config/spu/spu.c: Include ddg.h.
465         (TARGET_SCHED_SMS_RES_MII): Define.
466         (spu_sms_res_mii): New function to calculate mii.
467         * modulo-sched (res_MII): Use it.
468         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
469
470 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
471
472         * config/s390/s390.c (s390_dump_pool): Create copy of constant
473         pool entries since they might hold values that must not be shared.
474
475 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
476
477         PR target/33369
478         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
479         Use 'N' operand constraint for op2.
480         (lshr<mode>3): Ditto.
481         (ashl<mode>3): Ditto.
482         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
483         (vec_shr_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
484
485         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
486         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
487
488 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
489
490         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
491         Change mode macro in the last real_2expN parameter to uppercase.
492
493 2007-09-10  Michael Matz  <matz@suse.de>
494
495         * tree-pass.h (pass_cselim): Declare new pass.
496         * passes.c (init_optimization_passes): Link in pass_cselim.
497         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
498         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
499         cond_store_replacement.
500         (condstoretemp): New static variable.
501         (cond_store_replacement): New function.
502         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
503         tree_ssa_phiopt_worker.
504         (struct name_to_bb): New.
505         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
506         nt_init_block, nt_fini_block): New static functions.
507         (seen_ssa_names, nontrap_set): New static variables.
508         (gate_cselim, pass_cselim): Define new pass.
509         * common.opt (ftree-cselim): New flag.
510         * toplev.c (process_options): Set flag_tree_cselim if required.
511
512 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
513
514         * simplify-rtx.c (simplify_relational_operation_1): For recent
515         canonicalization, don't recurse if op1 equals both PLUS arguments.
516
517 2007-09-09  David Daney  <ddaney@avtrex.com>
518
519         * optabs.c (expand_sync_operation):  Use plus insn if minus
520         CONST_INT_P(val).
521         (expand_sync_fetch_operation):  Ditto.
522
523 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
524
525         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
526         of cvtpq2ps.
527         (*floatsisf2_sse_vector): Likewise.
528
529 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
530
531         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
532
533 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
534
535         * config/i386/i386.h (ix86_tune_indices): Rename
536         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
537         (TARGET_USE_VECTOR_CONVERTS): Updated.
538         * config/i386/i386.c: Likewise.
539
540 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
541             Nigel Stephens <nigel@mips.com>
542
543         * doc/invoke.texi (Overall Options):  Add .sx file extension
544         as a synonym for .S.
545         * cppspec.c (known_suffixes): Likewise.
546         * gcc.c (default_compilers): Likewise.
547
548 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
549
550         PR target/30315
551         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
552         * simplify-rtx.c (simplify_relational_operation_1): Add the
553         canonicalization from i386.h.
554         * doc/md.texi (Canonicalization of Instructions): Document it.
555
556 2007-09-09  Jan Hubicka  <jh@suse.cz>
557             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
558
559         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
560         (TARGET_USE_VECTOR_CONVERTS): New.
561         * i386.md: New post-reload splitters for converting SF to DF and DF to
562         SF.
563         (floatsi* expander): Special case vector conversions.
564         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
565         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
566         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
567         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
568         Disable when doing vector converts.
569         (floatsi<mode>2_i387): Disable when
570         * sse.md (vec_dupv2df): Export.
571         * i386.c (ix86_tune_features): Enable SSE conversions.
572
573 2007-09-09  Richard Guenther  <rguenther@suse.de>
574
575         * tree-ssa-operands.c (add_virtual_operand): Only mark
576         stores as has_volatile_ops if alias information is not available.
577
578 2007-09-09  Revital Eres  <eres@il.ibm.com>
579
580         * doc/contrib.texi: Add myself.
581
582 2007-09-09  Ira Rosen  <irar@il.ibm.com>
583
584         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
585         stmt_vinfo_set_outside_of_loop_cost): New functions.
586         * tree-vect-transform.c (vect_get_cost_fields): Remove.
587         (vect_model_simple_cost): Call
588         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
589         field instead of calling vect_get_cost_fields.
590         (vect_model_store_cost, vect_model_load_cost): Likewise.
591
592 2007-09-09  Revital Eres  <eres@il.ibm.com>
593
594         * config/rs6000/rs6000.c (paired_init_builtins): Add const
595         declaration to bdesc_paired_preds variable.
596         (paired_expand_builtin): Likewise.
597
598 2007-09-09  Revital Eres  <eres@il.ibm.com>
599
600         * dbgcnt.def (sms_sched_loop): New counter.
601         * modulo-sched.c: Use sms_sched_loop instead of
602         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
603         perform swing modulo scheduling on.  Include dbgcnt.h.
604         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
605         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
606
607 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
608
609         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
610         Substitute all uses with ...
611         (MODEF): New mode iterator.
612
613         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
614         from pre-regalloc define_insn_and_split splitter pattern.
615         (*fix_trunc<mode>_i387_1): Ditto.
616         (*fistdi2_1): Ditto.
617         (*fist<mode>2_1): Ditto.
618         (frndintxf2_floor): Ditto.
619         (*fist<mode>2_floor_1): Ditto.
620         (frndintxf2_ceil): Ditto.
621         (*fist<mode>2_ceil_1): Ditto.
622         (frndintxf2_trunc): Ditto.
623         (frndintxf2_mask_pm): Ditto.
624
625         (prologue): Use (const_int 0) as never generated filler insn.
626         (epilogue): Ditto.
627         (sibcall_epilogue): Ditto.
628         (eh_return_si): Ditto.
629         (eh_return_di): Ditto.
630
631         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
632         using MODEF mode iterator.
633         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
634         using MODEF mode iterator.
635         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
636         using MODEF mode iterator.
637         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
638         Macroize expander using MODEF mode iterator.
639
640         (zero_extendsidi2): Remove operand constraints from expander.
641         (smuldi3_highpart): Ditto.
642         (indirect_jump): Ditto.
643         (tablejump): Ditto.
644         (rsqrtsf2): Ditto.
645         * config/i386/sse.md (storentv4sf): Ditto.
646         (storentv2df): Ditto.
647         (storentv2di): Ditto.
648         (storentsi): Ditto.
649         (sse2_cvtpd2ps): Ditto.
650         (vec_interleave_highv16qi): Ditto.
651         (vec_interleave_lowv16qi): Ditto.
652         (vec_interleave_highv8hi): Ditto.
653         (vec_interleave_lowv8hi): Ditto.
654         (vec_interleave_highv4si): Ditto.
655         (vec_interleave_lowv4si): Ditto.
656         (vec_interleave_highv2di): Ditto.
657         (vec_interleave_lowv2di): Ditto.
658         (sse2_maskmovdqu): Ditto.
659         * config/i386/mmx.md (mmx_maskmovq): Ditto.
660
661 2007-09-09  Ira Rosen  <irar@il.ibm.com>
662
663         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
664         (struct _slp_tree, struct _slp_instance): Define new data structures
665         along macros for their access.
666         (struct _loop_vec_info): Define new fields: strided_stores,
667         slp_instances, and slp_unrolling_factor along macros for their access.
668         (enum slp_vect_type): New.
669         (struct _stmt_vec_info): Define new field, slp_type, and macros for its
670         access.
671         (STMT_VINFO_STRIDED_ACCESS): New macro.
672         (vect_free_slp_tree): Declare.
673         (vectorizable_load): Add an argument of type slp_tree.
674         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
675         vectorizable_assignment): Likewise.
676         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
677         Declare (make extern).
678         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
679         (new_loop_vec_info): Likewise.
680         (destroy_loop_vec_info): Free memory allocated for SLP structures.
681         * tree-vect-analyze.c: Include recog.h.
682         (vect_update_slp_costs_according_to_vf): New.
683         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
684         functions. For not pure SLP stmts with strided access check that the
685         group size is power of 2. Update the vectorization factor according to
686         SLP. Call vect_update_slp_costs_according_to_vf.
687         (vect_analyze_group_access): New.
688         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
689         (vect_free_slp_tree): New functions.
690         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
691         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
692         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
693         vect_detect_hybrid_slp): Likewise.
694         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
695         and vect_detect_hybrid_slp.
696         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
697         SLP costs into account.
698         (vect_get_cost_fields): New function.
699         (vect_model_simple_cost): Make extern, add SLP parameter and handle
700         SLP.
701         (vect_model_store_cost, vect_model_load_cost): Likewise.
702         (vect_get_constant_vectors): New function.
703         (vect_get_slp_vect_defs, vect_get_slp_defs,
704         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
705         vect_get_vec_defs): Likewise.
706         (vectorizable_reduction): Don't handle SLP for now.
707         (vectorizable_call): Don't handle SLP for now. Add argument to
708         vect_model_simple_cost.
709         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
710         get SLPed and vectorized defs). Fix indentation and spacing.
711         (vectorizable_assignment): Handle SLP.
712         (vectorizable_induction): Don't handle SLP for now.
713         (vectorizable_operation): Likewise.
714         (vectorizable_type_demotion): Add argument to
715         vect_model_simple_cost.
716         (vectorizable_type_promotion): Likewise.
717         (vectorizable_store, vectorizable_load): Handle SLP.
718         (vectorizable_condition): Don't handle SLP for now.
719         (vect_transform_stmt): Add a new argument for SLP. Check that there is
720         no SLP transformation required for unsupported cases. Add SLP
721         argument for supported cases.
722         (vect_remove_stores): New function.
723         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
724         (vect_transform_loop): Schedule SLP instances.
725         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
726
727 2007-09-09  Andrew Haley  <aph@redhat.com>
728
729         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the
730         fake signed optab.
731
732 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
733
734         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
735         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
736         Similar for what label_refs can go in the JUMP_TARGET field.  Split
737         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
738         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
739         REG_LABEL when replacing an operand with a LABEL_REF for a
740         non-jump insn.
741         (subst_reloads): When replacing a LABEL_REG with a register,
742         instead of generating a REG_LABEL note, assert that there already
743         is one or that the label is a known target for the insn.
744         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
745         note, check the JUMP_LABEL field.  Remove "else" after return.
746         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
747         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
748         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
749         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
750         insns.  Iterate over all notes; don't assume there's only one.
751         * cse.c (recorded_label_ref): Adjust comment to refer to
752         REG_LABEL_OPERAND.
753         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
754         insns, not just NONJUMP_INSN_P.
755         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
756         isn't a jump target.
757         * jump.c (rebuild_jump_labels): Adjust head comment.
758         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
759         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
760         (mark_all_labels): For JUMP_P insns without a target, check if the
761         the target is noted on the previous nonjump insn.
762         (mark_jump_label_1): New function, guts from mark_jump_label.
763         <case IF_THEN_ELSE>: Handle first operand as a non-target when
764         marking jump target labels.
765         <case LABEL_REF>: Adjust for whether to generate a
766         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
767         For 'E' format rtl, iterate in descending element order.
768         (delete_related_insns): Handle both REG_LABEL_TARGET and
769         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
770         reference count, delete and fallthrough.  Move finding-next-
771         non-deleted insn last in the function.  Look at all INSN_P insns
772         for REG_LABEL_OPERAND notes.
773         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
774         JUMP.
775         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
776         JUMP_LABEL, output the INSN_UID of it.
777         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
778         and/or REG_LABEL_TARGET.
779         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
780         with jump.c copy by only adding notes for labels actually
781         referenced in the insn.
782         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
783         usage count increment; handle all INSN_P trial insns.
784         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
785         notes.
786         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
787         REG_LABEL_TARGET and REG_LABEL_OPERAND.
788         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
789         REG_LABEL_OPERAND.
790         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
791         JUMP_P insns and REG_LABEL_OPERAND everywhere.
792         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
793         on all INSN_P insns.
794         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
795         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
796         REG_LABEL_OPERAND notes.
797         * reload1.c (calculate_needs_all_insns): Adjust comments.
798         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
799         * config/alpha/alpha.md (split for load of an address into a
800         four-insn sequence on Unicos/Mk): Adjust to use
801         REG_LABEL_OPERAND.
802         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
803
804 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
805
806         Revert:
807         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
808         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
809         FOR_BB_INSNS_SAFE instead of for loop.
810         * cse.c (cse_extended_basic_block): Likewise.
811         * postreload.c (reload_cse_regs_1): New variable next. Make sure
812         that the for loop does not invoke NEXT_INSN on a deleted insn.
813         * function.c (instantiate_virtual_regs): Likewise.
814         * lower-subreg.c (remove_retval_note): Likewise.
815         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
816         FOR_BB_INSNS.
817         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
818         a deleted insn.
819         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
820         insn, if it's a jump.
821         (try_redirect_by_replacing_jump): New variable jump_p. Call
822         tablejump_p before delete_insn_chain.
823         * reload1.c (reload): New variable next. Make sure that the for
824         loop does not invoke NEXT_INSN on a deleted insn.
825         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
826         (delete_output_reload): New variable prev. Make sure the the for
827         loops do not invoke PREV_INSN on a deleted insn.
828
829 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
830
831         * pa/constraints.md: Remove 'X' from unused letters comment.
832
833 2007-09-08  Richard Guenther  <rguenther@suse.de>
834
835         * tree-tailcall.c (find_tail_calls): If we don't have aliases
836         computed check stmt_ann->references_memory instead of counting
837         virtual operands.
838  
839 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
840
841         * cse.c (fold_rtx): Use validate_unshare_change() instead of
842         validate_change() in one more case.
843
844 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
845
846         PR tree-optimization/32283
847         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
848         estimated_loop_iterations.
849         (determine_use_iv_cost_condition): Decrease cost of expressions
850         used in iv elimination.
851
852 2007-09-08  Richard Guenther  <rguenther@suse.de>
853
854         * tree-cfg.c (verify_gimple_expr): Avoid building new
855         pointer types, use TYPE_POINTER_TO if available instead.
856
857 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
858
859         PR target/33329
860         PR rtl-optimization/26449
861         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
862         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
863         split1 pass.
864         (mulv16qi3): Implement as define_insn_and_split pattern instead of
865         define_expand.  Split insn in split1 pass.
866         (mulv2di3): Ditto.
867
868 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
869
870         PR tree-optimization/33301
871         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
872         when relevant.
873
874 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
875
876         PR tree-optimization/32183
877         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
878
879         * tree-ssa-reassoc.c: Include cfgloop.h.
880         (is_reassociable_op): Add a loop argument and return true only
881         for inside loop.
882         (linearize_expr): Updated.
883         (should_break_up_subtract): Likewise.
884         (linearize_expr_tree): Likewise.
885         (init_reassoc): Call loop_optimizer_init with
886         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
887         with CDI_DOMINATORS.
888         (fini_reassoc): Call loop_optimizer_finalize.
889
890 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
891
892         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
893         if there is no i-cache.
894
895 2007-09-07  Richard Guenther  <rguenther@suse.de>
896
897         Reapply
898         2007-09-06  Richard Guenther  <rguenther@suse.de>
899
900         PR tree-optimization/32586
901         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
902         folding if nothing changed.
903         (simplify_unary_expression): New function.  Do tree combining
904         on conversion like codes.
905         (try_to_simplify): Call it.
906
907 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
908
909         PR target/33286
910         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
911         (__gthread_active,__gthread_start, __gthread_active_init): New.
912         * gthr-posix95.h: Likewise.
913
914 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
915
916         * function.h (struct function): Rename calls_unwind_init
917         to saves_all_registers.
918         (current_function_saves_all_registers): Renamed from
919         current_function_calls_unwind_init.
920         * reload1.c (reload): Set current_function_saves_all_registers.
921         * except.c (expand_builtin_unwind_init): Likewise.
922         * config/m68k/m68k.c (m68k_save_reg): Use
923         current_function_saves_all_registers to save pic register.
924
925 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
926
927         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
928         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
929
930         Reapply reverted changes:
931
932         2007-09-06  Jan Hubicka  <jh@suse.cz>
933  
934         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call of
935         real_2expN.
936
937         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
938
939         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
940         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
941
942         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
943
944         * optabs.c (expand_float): Convert unsigned integer as signed only
945         if it provides sufficient accuracy; add mode argument to real_2expN.
946         (expand_fix): Fix comment typos; extend binary float into mode
947         wider than destination for converion to unsigned integer; add mode
948         argument to real_2expN.
949         * real.c (real_2expN): Add mode argument to special-case decimal
950         float values.
951         * real.h (real_2expN): Ditto.
952         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
953         real_2expN.
954         (fixed_from_string): Ditto.
955         (fixed_to_decimal): Ditto.
956         (fixed_convert_from_real): Ditto.
957         (real_convert_from_fixed): Ditto.
958         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
959         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
960         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
961         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
962
963 2007-09-07  Diego Novillo  <dnovillo@google.com>
964
965         * tree-flow.h (const_block_stmt_iterator): Remove.
966         Update all users to use block_stmt_iterator.
967         * tree-iterator.h (const_tree_stmt_iterator): Remove.
968         Update all users to use tree_stmt_iterator.
969
970 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
971
972         * config/mips/mips.c (mips_set_current_function): Temporarily
973         make this a no-op to fix bootstrap errors, pending rewrite.
974
975 2007-09-07  Jan Hubicka  <jh@suse.cz>
976
977         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
978         in the pass.
979
980 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
981
982         PR tree-optimization/33299
983         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
984         uses for all relevant loop-exit phis, not just the first.
985
986 2007-09-07  Richard Guenther  <rguenther@suse.de>
987
988         PR middle-end/33330
989         * tree-ssa-operands.c (access_can_touch_variable): An access
990         of the form (*p)[0] can touch a variable of same size.
991
992 2007-09-07  Jan Hubicka  <jh@suse.cz>
993
994         * passes.c (init_optimization_passes): Add simple dce and addressable
995         passes.
996         * tree-ssa.c (execute_update_addresses_taken): New function.
997         (pass_update_address_taken): New.
998         * tree-ssa-dse.c (execute_simple_dse): New function.
999         (pass_simple_dse): New.
1000         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
1001
1002 2007-09-07  Tobias Burnus  <burnus@net-b.de>
1003
1004         PR middle-end/33321
1005         * doc/invoke.texi: Fix -Wstrict-overflow= table.
1006
1007 2007-09-07  Richard Guenther  <rguenther@suse.de>
1008
1009         Revert
1010         2007-09-06  Richard Guenther  <rguenther@suse.de>
1011
1012         PR tree-optimization/32586
1013         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
1014         folding if nothing changed.
1015         (simplify_unary_expression): New function.  Do tree combining
1016         on conversion like codes.
1017         (try_to_simplify): Call it.
1018
1019 2007-09-07  Richard Guenther  <rguenther@suse.de>
1020             Uros Bizjak  <ubizjak@gmail.com>
1021
1022         PR tree-optimization/32821
1023         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
1024         NULL in the call to set_bb_stmt_list.
1025
1026 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1027
1028         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
1029         float calls here, rather than leaving some to the caller.
1030         Use call_internal_direct and call_value_internal_direct.
1031         * config/mips/mips.md (call_internal_direct): New pattern.
1032         (call_value_internal_direct): Likewise.
1033
1034 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1035
1036         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
1037         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
1038         to 0 for MIPS16.
1039         (override_options): Set mips_base_move_loop_invariants.
1040
1041 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1042
1043         * config/mips/mips.opt (mcode-readable=): Move to keep list
1044         alphabetical.
1045
1046 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
1047
1048         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
1049         and -mgpopt options.  Adjust the -G documentation to match.
1050         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
1051         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
1052         function, split out from mips_classify_symbol.  Return false for
1053         !TARGET_LOCAL_SDATA.
1054         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
1055         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
1056         (override_options): Check whether the -mgpopt setting is consistent
1057         with the other flags.
1058         (symbolic_expression_p): Delete.
1059         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
1060         and default_elf_select_rtx_section.
1061         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
1062         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
1063         external data and TARGET_EXTERN_SDATA.
1064
1065 2007-09-07  Tobias Burnus  <burnus@net-b.de>
1066
1067         PR fortran/33303
1068         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
1069
1070 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1071
1072         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
1073         FOR_BB_INSNS_SAFE instead of for loop.
1074         * cse.c (cse_extended_basic_block): Likewise.
1075         * postreload.c (reload_cse_regs_1): New variable next. Make sure
1076         that the for loop does not invoke NEXT_INSN on a deleted insn.
1077         * function.c (instantiate_virtual_regs): Likewise.
1078         * lower-subreg.c (remove_retval_note): Likewise.
1079         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
1080         FOR_BB_INSNS.
1081         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
1082         a deleted insn.
1083         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
1084         insn, if it's a jump.
1085         (try_redirect_by_replacing_jump): New variable jump_p. Call
1086         tablejump_p before delete_insn_chain.
1087         * reload1.c (reload): New variable next. Make sure that the for
1088         loop does not invoke NEXT_INSN on a deleted insn.
1089         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
1090         (delete_output_reload): New variable prev. Make sure the the for
1091         loops do not invoke PREV_INSN on a deleted insn.
1092
1093 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
1094
1095         * cgraphbuild.c (rebuild_cgraph_edges): Export.
1096         * cgraph.h (rebuild_cgraph_edges): Declare.
1097         * tree-pass.h (pass_expand_omp_ssa): New.
1098         * omp-low.c (find_omp_clause): Export.
1099         (copy_var_decl): Split from omp_copy_decl_2.
1100         (build_omp_barrier): Return the call to emit instead of emitting
1101         it directly.
1102         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
1103         build_omp_barrier.
1104         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
1105         expand_omp_for_generic, expand_omp_for_static_nochunk,
1106         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
1107         Adapted to work on SSA form.
1108         (execute_expand_omp): Do not invalidate dominance information.
1109         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
1110         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
1111         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
1112         a gimple_reg.
1113         (force_gimple_operand): Allow gimplifying code expressions without
1114         value.
1115         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
1116         * common.opt (fopenmp-ssa): New.
1117         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
1118         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
1119         * tree-cfg.c: Include tree-inline.h.
1120         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
1121         (replace_by_duplicate_decl, replace_ssa_name,
1122         mark_virtual_ops_in_region): New functions.
1123         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
1124         to work on SSA form.
1125         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
1126         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
1127         constructs.
1128
1129 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1130
1131         * tree-loop-linear.c: Include obstack.h.
1132         (linear_transform_loops): New obstack lambda_obstack.
1133         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
1134         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
1135         and free afterwards.
1136         * lambda.h (struct obstack): New forward declaration.
1137         (lambda_linear_expression_new): New parameter of type struct
1138         obstack *.
1139         (lambda_loopnest_new): Likewise.
1140         (lambda_loopnest_transform): Likewise.
1141         (lambda_body_vector_new): Likewise.
1142         (lambda_body_vector_compute_new): Likewise.
1143         (gcc_loopnest_to_lambda_loopnest): Likewise.
1144         (lambda_loopnest_to_gcc_loopnest): Likewise.
1145         * lambda-code.c: Include obstack.h.
1146         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
1147         allocation of ret.
1148         (lambda_body_vector_new): Likewise.
1149         (lambda_linear_expression_new): Likewise.
1150         (lambda_lattice_new): Likewise.
1151         (lambda_loopnest_new): Likewise.  Additionally use obstack to
1152         allocate LN_LOOPS(ret).
1153         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
1154         it to lambda_lattice_new.
1155         (lambda_body_vector_compute_new): New parameter lambda_obstack.
1156         Pass it to lambda_body_vector_new.
1157         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
1158         it to lambda_lattice_new.
1159         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
1160         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
1161         (lambda_compute_target_space): Likewise.
1162         (lambda_compute_auxillary_space): New parameter lambda_obstack.
1163         Pass it to lambda_lattice_compute_base and
1164         compute_nest_using_fourieer_motzkin.
1165         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
1166         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
1167         and lambda_lattice_compute_target_space.
1168         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
1169         Pass it to lambda_linear_expression_new.
1170         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
1171         to gcc_tree_to_linear_expression.
1172         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
1173         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
1174         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
1175         Pass it to lambda_body_vector_new and
1176         lambda_body_vector_compute_new.
1177         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
1178         (lambda-code.o): Likewise.
1179
1180 2007-09-06  Chao-ying Fu  <fu@mips.com>
1181
1182         * ginclude/stdfix.h: New file.
1183         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
1184         (convert.o): Add dependence on fixed-value.h.
1185         * c-convert.c (convert): Support FIXED_POINT_TYPE.
1186         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
1187         to define fixed-point constants.
1188         (c_cpp_builtins): Define fixed-point constants.
1189         * convert.c (fixed-value.h): New include.
1190         (convert_to_real): Update comment to include fixed-point.
1191         Support FIXED_POINT_TYPE.
1192         (convert_to_integer): Update comment to include fixed-point.
1193         Support FIXED_POINT_TYPE.
1194         (convert_to_complex): Support FIXED_POINT_TYPE.
1195         (convert_to_fixed): New function.
1196         * convert.h (convert_to_fixed): Declare.
1197         * genopinit.c: Add comment about $Q for only fixed-point modes.
1198         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
1199         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
1200         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
1201         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
1202         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
1203         usneg_optab for fixed-point modes.
1204         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
1205         modes.
1206         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
1207         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
1208         unsigned saturation optabs, when type is saturating.
1209         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
1210         (expand_fixed_convert): New function.
1211         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
1212         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
1213         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
1214         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
1215         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
1216         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
1217         functions.
1218         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
1219         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
1220         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
1221         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
1222         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
1223         satfractuns_optab.
1224         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
1225         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
1226         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
1227         fractuns, satfractuns.
1228         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
1229         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
1230         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
1231         OTI_ssmsub_widen,  OTI_usmsub_widen.
1232         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
1233         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
1234         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
1235         umsub_widen_optab, usmsub_widen_optab): Define.
1236         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
1237         COI_satfractuns.
1238         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
1239         Define.
1240         (expand_fixed_convert): Declare.
1241         * expr.c (convert_move): Support the move of fixed-point modes.
1242         (emit_move_insn_1): Handle fixed-point mode to move via integer.
1243         (categorize_ctor_elements_1): Handle FIXED_CST.
1244         (count_type_elements): Handle FIXED_POINT_TYPE.
1245         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
1246         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1247         Support FIXED_CST.
1248         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
1249         multiply and add/subtract for fixed-point types.
1250         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
1251         mode, we jump to binop directly.
1252         Support FIXED_CONVERT_EXPR.
1253         (do_store_flag): Check FIXED_CST to put a constant second.
1254         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
1255         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
1256         (const_vector_from_tree): Support FIXED_CST.
1257         * doc/extend.texi (Fixed-Point): New node.
1258         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
1259         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
1260         satfract, fractuns, satfractuns): Document them.
1261
1262 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
1263
1264         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
1265         addresses into I registers.
1266
1267 2007-09-06  Jan Hubicka  <jh@suse.cz>
1268             Andreas Tobler  <a.tobler@schweiz.org>
1269
1270         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
1271         sharing.
1272         (machopic_legitimize_pic_address): Likewise.
1273
1274 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1275             Jan Hubicka  <jh@suse.cz>
1276
1277         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
1278         instead of ufloat_optab->handlers directly.
1279         (floatdidf2): Likewise.
1280
1281 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
1282
1283         * config/mips/mips.c:  Include diagnostic.h.
1284         (mips_set_current_function): Check errorcount and sorrycount 
1285         before generating RTL.
1286
1287 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
1288
1289         PR target/33256
1290         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
1291         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
1292         (print_operand_reloc): Likewise.
1293
1294 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
1295
1296         Revert:
1297
1298         2007-09-06  Jan Hubicka  <jh@suse.cz>
1299  
1300         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
1301         real_2expN.
1302
1303         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
1304
1305         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
1306         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
1307
1308         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
1309
1310         * optabs.c (expand_float): Convert unsigned integer as signed only
1311         if it provides sufficient accuracy; add mode argument to real_2expN.
1312         (expand_fix): Fix comment typos; extend binary float into mode
1313         wider than destination for converion to unsigned integer; add mode
1314         argument to real_2expN.
1315         * real.c (real_2expN): Add mode argument to special-case decimal
1316         float values.
1317         * real.h (real_2expN): Ditto.
1318         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
1319         real_2expN.
1320         (fixed_from_string): Ditto.
1321         (fixed_to_decimal): Ditto.
1322         (fixed_convert_from_real): Ditto.
1323         (real_convert_from_fixed): Ditto.
1324         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
1325         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
1326         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
1327         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
1328
1329 2007-09-06  Tom Tromey  <tromey@redhat.com>
1330
1331         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
1332         * c-pch.c (c_common_read_pch): Restore current location after
1333         reading PCH file.
1334         * tree.c (expand_location): Update.
1335         (expr_filename): Changed return type.  Unified the two cases.
1336         (expr_lineno): Likewise.
1337         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
1338         as lvalues.
1339         * toplev.c (line_table): Changed type.
1340         (general_init): Update.
1341         (realloc_for_line_map): New function.
1342         (general_init): Allocate line_table using GC.
1343         * fix-header.c (line_table): Changed type.
1344         (read_scan_file): Update.
1345         (read_scan_file): Update.
1346         * c-ppoutput.c (maybe_print_line): Update.
1347         (print_line): Update.
1348         (cb_line_change): Update.
1349         (cb_define): Update.
1350         (pp_file_change): Update.
1351         * c-opts.c (c_common_init_options): Update.
1352         (finish_options): Update.
1353         (push_command_line_include): Update.
1354         * c-lex.c (cb_line_change): Update.
1355         (cb_def_pragma): Update.
1356         (cb_define): Update.
1357         (cb_undef): Update.
1358         (c_lex_with_flags): Use cpp_get_token_with_location.
1359         * input.h (line_table): Changed type.
1360         (location_from_locus): New macro.
1361         * tree.h (EXPR_FILENAME): No longer an lvalue.
1362         (EXPR_LINENO): Likewise.
1363         (expr_locus, set_expr_locus): Declare separately for
1364         USE_MAPPED_LOCATION.
1365         (expr_filename, expr_lineno): Changed return type.
1366         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
1367         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
1368         (expand_gimple_basic_block): Likewise.
1369         * final.c (final_scan_insn): Use expanded_location.
1370
1371 2007-09-06  Richard Guenther  <rguenther@suse.de>
1372
1373         PR tree-optimization/32586
1374         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
1375         folding if nothing changed.
1376         (simplify_unary_expression): New function.  Do tree combining
1377         on conversion like codes.
1378         (try_to_simplify): Call it.
1379         * builtins.c (fold_builtin_cexp): Fold the built expressions.
1380         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
1381
1382 2007-09-06  Jan Hubicka  <jh@suse.cz>
1383
1384         PR target/33318
1385         * cse.c (fold_rtx): Avoid invalid sharing.
1386
1387 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
1388
1389         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
1390         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
1391
1392 2007-09-06  Revital Eres  <eres@il.ibm.com>
1393
1394         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
1395         Fix offsettable memory reference for 750CL.
1396
1397 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
1398
1399         * reload.c (find_reloads_address_1): Try to preserve original
1400         base/index regclass of operands.
1401         * regrename.c (scan_rtx_address): Likewise.
1402         (replace_oldest_value_addr): Likewise.
1403
1404 2007-09-06  Richard Guenther  <rguenther@suse.de>
1405
1406         PR tree-optimization/33302
1407         * domwalk.c (walk_dominator_tree): The exit block is
1408         interesting even if it is not reachable.
1409
1410 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
1411
1412         PR middle-end/33306
1413         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
1414
1415 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
1416
1417         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
1418         robustness.
1419
1420 2007-09-05  Ian Lance Taylor  <iant@google.com>
1421
1422         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
1423         when printing.
1424         (dump_generic_node): Likewise.
1425         * print-rtl.c (print_decl_name): Likewise.
1426         * print-tree.c (print_node_brief): Likewise.
1427         (print_node): Likewise.
1428         * Makefile.in (RTL_BASE_H): Add alias.h.
1429         (TREE_H): Likewise.
1430
1431 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
1432
1433         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
1434         Defined.
1435         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
1436         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
1437
1438 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
1439
1440         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
1441         (tm_defines): Define UCLIBC_DEFAULT to 1.
1442         (extra_options): Add linux.opt.
1443         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
1444         (CRT_CALL_STATIC_FUNCTION): Likewise.
1445         (NO_IMPLICIT_EXTERN_C): Likewise.
1446         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
1447         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
1448         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
1449         (ENDFILE_SPEC): Don't define.
1450         (LIB_SPEC): Likewise.
1451         (CRT_CALL_STATIC_FUNCTION): Likewise.
1452         (NO_IMPLICIT_EXTERN_C): Likewise.
1453         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
1454         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
1455
1456 2007-09-06  Jan Hubicka  <jh@suse.cz>
1457
1458         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
1459         real_2expN.
1460
1461 2007-09-06  Jan Hubicka  <jh@suse.cz>
1462
1463         * opts.c (common_handle_option): Enable inlining functions for
1464         -fprofile-generate.
1465
1466 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
1467
1468         * builtin-attrs.def (ATTR_NONNULL_3): New.
1469         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
1470         ATTR_NOTHROW_NONNULL_##FA.
1471         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
1472         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
1473         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
1474         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
1475         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
1476         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
1477         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
1478         New.
1479         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
1480         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
1481         ATTR_FORMAT_NOTHROW_3_4): Remove.
1482         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
1483         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
1484         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
1485         instead of ATTR_FORMAT_*_*.
1486
1487 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
1488
1489         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
1490         parts re-used for REG_FRAME_RELATED_EXPR.
1491
1492 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
1493
1494         * optabs.c (expand_float): Convert unsigned integer as signed only
1495         if it provides sufficient accuracy; add mode argument to real_2expN.
1496         (expand_fix): Fix comment typos; extend binary float into mode
1497         wider than destination for converion to unsigned integer; add mode
1498         argument to real_2expN.
1499         * real.c (real_2expN): Add mode argument to special-case decimal
1500         float values.
1501         * real.h (real_2expN): Ditto.
1502         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
1503         real_2expN.
1504         (fixed_from_string): Ditto.
1505         (fixed_to_decimal): Ditto.
1506         (fixed_convert_from_real): Ditto.
1507         (real_convert_from_fixed): Ditto.
1508         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
1509         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
1510         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
1511         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
1512
1513 2007-09-05  Ian Lance Taylor  <iant@google.com>
1514
1515         * init-regs.c (initialize_uninitialized_regs): Call
1516         emit_insn_before rather than add_insn_before.
1517
1518 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
1519
1520         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
1521         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
1522         * tree-inline.h (copy_body_data): Add call_expr field.
1523         * tree-inline.c (expand_call_inline): Initialize call_expr.
1524         (copy_bb): Append anonymous inline fn arguments to arguments
1525         when inlining a CALL_EXPR_VA_ARG_PACK call.
1526         * builtins.c (expand_builtin): Issue an error if
1527         BUILT_IN_VA_ARG_PACK is seen during expand.
1528         (fold_call_expr, fold_builtin_call_array): Don't fold
1529         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
1530         __builtin_va_arg_pack () call as last argument.
1531         * gimplify.c (gimplify_call_expr): If last argument to a vararg
1532         function is __builtin_va_arg_pack (), decrease number of call
1533         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
1534         * expr.c (expand_expr_real_1): Issue an error if
1535         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
1536         * tree-pretty-print.c (dump_generic_node): Handle printing
1537         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
1538         * doc/extend.texi (__builtin_va_arg_pack): Document.
1539
1540 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
1541
1542         PR tree-optimization/21513
1543         * builtins.c (build_builtin_expect_predicate): New function.
1544         (fold_builtin_expect): Add argument for expected value.
1545         Distribute __builtin_expect over short-circuiting operations.
1546         Fold nested builtin_expects.
1547         (fold_builtin_2): Adjust call to fold_builtin_expect.
1548
1549 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1550
1551         PR web/32965
1552         PR tree-optimization/13756
1553         * doc/invoke.texi (Options That Control Optimization): Document
1554         -ftree-dse.
1555
1556 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
1557
1558         * gcc/config/i386/cpuid.h: New file.
1559         * gcc/config/i386/driver-i386.c: Include cpuid.h.
1560         (describe_cache): Shrink size and line strings to 100 bytes.
1561         (detect_caches_amd): Return "" for unsupported max_ext_level.
1562         Use __cpuid function.
1563         (detect_caches_intel): Return "" for unsupported max_level.
1564         Use __cpuid function.
1565         (host_detect_local_cpu): Change feature flag variables to
1566         unsigned int.  Initialize only extended feature flag variables.
1567         Use __get_cpuid_max to determine max supported cpuid level.
1568         Use __cpuid function to determine supported features.  Fix
1569         calculation of family id.  Remove is_amd and check signature
1570         directly.  Check for Geode signature.  Handle family 4 id.
1571         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
1572         cpu discovery code to lower part of the function.
1573         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
1574         for sub-architecture.
1575         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
1576         [PROCESSOR_K8]: Add k8-sse3 architecture.
1577         [PROCESSOR_NOCONA]: Remove.
1578         [PROCESSOR_GENERIC64]: Ditto.
1579         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
1580         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
1581         to check for SSE and FXSAVE support.
1582         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
1583         Add -minline-all-stringops.
1584         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
1585         (x86_64-*-*): Ditto.
1586
1587 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
1588
1589         * config/bfin/linux-unwind.h: New file.
1590         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
1591         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
1592
1593 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1594
1595         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
1596         * stmt.c: Include alloc-pool.h.
1597         (struct case_node): Remove GTY marker.
1598         (add_case_node): New parameter case_node_pool.  Use it for
1599         allocation of r.
1600         (expand_case): New allocation pool case_node_pool.  Initialize it,
1601         pass to add_case_node and free it.
1602
1603 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1604             David Ung  <davidu@mips.com>
1605             Nigel Stephens <nigel@mips.com>
1606
1607         Add mips16/nomips16 function attributes and -mflip-mips16 option
1608         for testing mixed-mode compilation.
1609
1610         * config/mips/mips.opt (mflip-mips16): New.
1611
1612         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
1613         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
1614
1615         * config/mips/mips.c (mips_base_target_flags): New.
1616         (mips_base_mips16): New.
1617         (mips_base_schedule_insns): New.
1618         (mips_base_reorder_blocks_and_partition): New.
1619         (mips_base_align_loops): New.
1620         (mips_base_align_jumps): New.
1621         (mips_base_align_functions): New.
1622         (mips16_flipper): New.
1623         (mips_attribute_table): Add "mips16" and "nomips16" entries.
1624         (TARGET_SET_CURRENT_FUNCTION): Define.
1625         (mips_mips16_type_p, mips_nomips16_type_p): New.
1626         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
1627         (mips_function_ok_for_sibcall): Make it deal with functions with
1628         mips16 attributes.
1629         (mips_init_split_addresses): New, split out from override_options.
1630         (mips_init_relocs): New, split out from override_options.
1631         (was_mips16_p): New.
1632         (mips_set_mips16_mode): New, split out from override_options.
1633         (mips_set_current_function): New.
1634         (override_options): Add sorry for unsupported mips16/pic
1635         combination.  Remove error for mips16/dsp combination.  Save
1636         base option settings.  
1637         (mips_file_start): Move mips16 mode setting output from here....
1638         (mips_output_function_prologue): ....to here.
1639         (mips_output_mi_thunk): Check for mips16 function.
1640         (build_mips16_function_stub): Don't set .mips16 here.
1641         (build_mips16_call_stub): Likewise.
1642         (mips_expand_builtin): Error in mips16 mode.
1643         (mips_use_mips16_mode_p): New.
1644         (mips_encode_section_info): Check for mips16 function, and set
1645         SYMBOL_REF_FLAGS accordingly.
1646
1647         * doc/extend.texi (Function Attributes): Document new
1648         mips16/nomips16 attributes.
1649         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
1650         (MIPS Options): Document -mflip-mips16.
1651
1652 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1653
1654         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
1655         if we encounter TLS address in MIPS16 mode.
1656         (mips_legitimize_const_move): Check cannot_force_const_mem for
1657         the (const (plus symbol offset)) case; this forces invalid TLS
1658         address in MIPS16 mode to be caught by the above call to sorry.
1659         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
1660         because that now enables emutls, which is not ABI compatible
1661         with native TLS in non-MIPS16 mode.
1662
1663 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1664
1665         Add target hook invoked when cfun changes.
1666
1667         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
1668         * target.h (struct gcc_target): Add set_current_function.
1669         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
1670         (TARGET_INITIALIZER): Add initializer for set_current_function.
1671         * tree.h (push_struct_function): New.
1672         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
1673         * function.h: Here.
1674         (set_cfun): Declare.
1675         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
1676         * function.c: Here.
1677         (push_function_context_to): Use allocate_struct_function
1678         to create null context, not init_dummy_function_start.  Use set_cfun.
1679         (pop_function_context_from): Use set_cfun.
1680         (in_dummy_function): New.
1681         (invoke_set_current_function_hook): New.
1682         (set_cfun): New.
1683         (push_cfun, pop_cfun): Use set_cfun.
1684         (push_struct_function): New.
1685         (allocate_struct_function): Call invoke_set_current_function_hook
1686         before returning.
1687         (prepare_function_start): Don't set cfun here.  Remove unused
1688         argument; fix all callers.
1689         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
1690         push_struct_function.
1691         (init_function_start): Set cfun here.
1692         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
1693         * omp-low.c (create_omp_child_function): Use push_struct_function
1694         and pop_cfun to save/restore state.
1695         (expand_omp_parallel): Remove unused saved_cfun variable.
1696         * cgraphunit.c (ipa_passes): Use set_cfun.
1697         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
1698         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
1699         * matrix-reorg.c (transform_allocation_sites): Likewise.
1700         (matrix_reorg): Use set_cfun.
1701         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
1702         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
1703         assignment to cfun; use set_cfun for the other.
1704         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
1705         (dump_function_to_file): Use push_cfun/pop_cfun here.
1706         * c-decl.c (finish_function): Use set_cfun.
1707
1708 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
1709
1710         * regrename.c (rerename_optimize): Use deferred rescanning and
1711         insert explicit calls to rescan insns when changed.
1712         
1713 2007-09-05  Jan Hubicka  <jh@suse.cz>
1714
1715         * optabs.c (libfunc_entry): Change optab to integer.
1716         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
1717         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
1718         of pointers for hashing.
1719
1720 2007-09-05  Jan Hubicka  <jh@suse.cz>
1721
1722         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
1723         verifier.
1724         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
1725         * see.c (pass_see): Likewise.
1726         * tracer.c (pass_tracer): Likewise.
1727         * postreload-gcse.c (pass_gcse2): Likewise.
1728         * postreload.c (pass_postreload_cse): Likewise.
1729         * mode-switching.c (pass_mode_switching): Likewise.
1730         * modulo-sched.c (pass_sms): Likewise.
1731         * cse.c (cse_insn): Likewise.
1732         * web.c (pass_web): Likweise.
1733         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
1734         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
1735         * loop-init.c (pass_rtl_loop_init): Likewise.
1736         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
1737         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
1738         * global.c (pass_global_alloc): Likewise.
1739         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
1740         pass_if_after_reload): Likewise.
1741         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
1742         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
1743         * regmove.c (pass_regmove): Likewise.
1744         * function.c (pass_thread_prologugues_epilogues): Likewise.
1745         * gcse.c (pass_gcse): Likewise.
1746         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
1747         * lower-subreg.c (pass_lower_subreg2): Likewise.
1748         * bt-load.c (pass_branch_target_load): Likewise.
1749         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
1750         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
1751         * combine.c (pass_combine): Likewise.
1752         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
1753         (pass_partition_blocks): Likewise.
1754         * var-tracking.c (pass_variable_track): Likewise.
1755         * reg-stack.c (pass_stack_regs_run): Likewise.
1756         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
1757         * passes.c (pass_postreload): Likewise.
1758         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
1759         * tree-pass.h (TODO_verify_rtl_sharing): New.
1760         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
1761         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
1762         TODO_set_props, TODO_df_finish, TODO_df_verify,
1763         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
1764
1765 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1766
1767         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
1768         fold_real_zero_addition_p, reorder_operands_p,
1769         div_if_zero_remainder, fold_undefer_overflow_warnings,
1770         int_binop_types_match_p, fold_convert_const_int_from_int,
1771         fold_convert_const_int_from_real,
1772         fold_convert_const_int_from_fixed,
1773         fold_convert_const_real_from_real,
1774         fold_convert_const_real_from_fixed,
1775         fold_convert_const_fixed_from_fixed,
1776         fold_convert_const_fixed_from_int,
1777         fold_convert_const_fixed_from_real, maybe_lvalue_p,
1778         fold_checksum_tree, fold_check_failed, print_fold_checksum,
1779         debug_fold_checksum, multiple_of_p): Constify.
1780         * tree-flow-inline.h (get_lineno): Likewise.
1781         * tree-flow.h (get_lineno): Likewise.
1782         * tree-object-size.c (compute_object_offset, addr_object_size,
1783         alloc_object_size, pass_through_call): Likewise.
1784         * tree-pretty-print.c (op_symbol, print_call_name,
1785         print_struct_decl, do_niy): Likewise.
1786         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
1787         debug_fold_checksum): Likewise.
1788
1789 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
1790
1791         PR middle-end/33029
1792         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
1793         note, remove the associated REG_RETVAL note.
1794
1795 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1796
1797         * config.gcc (powerpc*-*-*): Install
1798         spu2vmx.h, vec_types.h, and si2vmx.h headers.
1799         * config/rs6000/spu2vmx.h: New header.
1800         * config/rs6000/si2vmx.h: New header.
1801         * config/rs6000/vec_types.h: New header.
1802
1803 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1804
1805         * varasm.c (initializer_constant_valid_p): Fix comment typo.
1806
1807 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1808
1809         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
1810         not `m' for *ptrp.
1811         (__stdcx): Make asm volatile.
1812         (__stwcx, __stdcx): Return only 0 or 1.
1813
1814 2007-09-05  Jan Hubicka  <jh@suse.cz>
1815
1816         Revert:
1817
1818         2007-09-04  Jan Hubicka  <jh@suse.cz>
1819         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
1820
1821         2007-09-04  Richard Guenther  <rguenther@suse.de>
1822         * tree-ssa-operands.c (add_virtual_operand): Only mark
1823         stores as has_volatile_ops if alias information is not available.
1824
1825 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
1826
1827         * config/rs6000/tramp.asm: Include config.h.
1828         Check __PIC__ or __pic__ macro instead of SHARED.
1829
1830         PR rtl-optimization/32300
1831         * see.c (see_copy_insn): New function.
1832         (see_def_extension_not_merged, see_merge_one_use_extension,
1833         see_merge_one_def_extension): Use it.  Avoid changing
1834         PREV_INSN/NEXT_INSN chains directly, insted emit insns
1835         into sequences.  Call df_insn_delete on temporary insns
1836         that won't be emitted into the insn stream.
1837         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
1838         and run df_process_deferred_rescans () before run_fast_dce.
1839
1840         PR tree-optimization/33017
1841         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
1842         recurse for pure or const function calls.
1843
1844 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1845
1846         * c-format.c: Include alloc-pool.h.
1847         (check_format_info_main): New argument fwt_alloc.  Use allocation
1848         pool instead of GC.  Remove GC deallocation code.
1849         (check_format_arg): Create allocation pool, pass it to
1850         check_format_info_main and free it afterwards.
1851         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
1852
1853 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1854
1855         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
1856         Rename count macro arugment for clarity.
1857         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
1858         (__protected_stream_set): Likewise, pass 0.
1859
1860 2007-09-04  Jan Hubicka  <jh@suse.cz>
1861
1862         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
1863
1864 2007-09-04  Jan Hubicka  <jh@suse.cz>
1865
1866         * invoke.texi (-finline-small-functions): Document.
1867         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
1868         when deciding what is inlinable.
1869         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
1870         (cgraph_decide_inlining_of_small_function): Handle new flags.
1871         (cgraph_decide_inlining_incrementally): Likewise.
1872         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
1873         * common.opt (finline-small-functions): New.
1874         * Makefile.in (build/gengtype.o-warn): Work around PR29478
1875
1876 2007-09-04  Richard Guenther  <rguenther@suse.de>
1877
1878         * tree-ssa-operands.c (add_virtual_operand): Only mark
1879         stores as has_volatile_ops if alias information is not available.
1880
1881 2007-09-04  Andrew Haley  <aph@redhat.com>
1882
1883         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
1884
1885 2007-09-04  Andrew Haley  <aph@redhat.com>
1886
1887         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
1888         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
1889         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
1890
1891 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
1892
1893         PR c++/14178
1894         * common.opt: Mention ABI version 2 in comment.
1895
1896 2007-09-04  Jan Hubicka  <jh@suse.cz>
1897
1898         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
1899         (libfunc_entry): New structure.
1900         (libfunc_hash): New hashtable.
1901         (hash_libfunc): New function.
1902         (eq_libfunc): New function.
1903         (convert_optab_libfunc): New function.
1904         (optab_libfunc): New function.
1905         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
1906         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
1907         expand_float, expand_fix, new_optab, new_convert_optab):
1908          Update for new libfunc API.
1909         (init_libfunc, init_integral_libfuncs,
1910         init_floating_libfuncs, init_interclass_conv_libfuncs
1911         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
1912         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
1913         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
1914         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
1915         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
1916         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
1917         gen_extend_conv_libfunc): New.
1918         (init_one_libfunc): Revamp for hashtables.
1919         (set_conv_libfunc): Likewise.
1920         (init_optabs): Initialize hashtable; use lazy initialization where
1921         possible.
1922         * optabs.h (optab_handlers): Move out of GGC.
1923         (optab, convert_optab): Move out of GGC; add lazy gen info.
1924         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
1925         (optab_libfunc, convert_optab_libfunc): New.
1926         * builtins.c (expand_builtin_powi): Update for new API.
1927         * expr.c (convert_move): Likewise.
1928         * expmed.c (expand_divmod): Likewise.
1929
1930 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
1931
1932         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
1933         GOT pointer only if there is a constant pool.  Use the allocated space
1934         for SPE also.
1935
1936 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
1937
1938         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
1939         typo for AltiVec.
1940
1941 2007-09-04  Revital Eres  <eres@il.ibm.com>
1942             Richard Guenther  <rguenther@suse.de>
1943             R. Clint Whaley  <whaley@cs.utsa.edu>
1944
1945         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
1946         Document new flags.
1947         * tree-tailcall.c (process_assignment): Use -fassociative-math
1948         when reodering operands of floating-point type.
1949         * fold-const.c (fold_comparison, fold_binary): Use
1950         -fassociative-math and -freciprocal-math instead of
1951         -funsafe-math-optimization flag.
1952         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
1953         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
1954         -freciprocal-math instead of -funsafe-math-optimizations.
1955         * opts.c (set_fast_math_flags): Set -freciprocal-math and
1956         -fassociative-math when -ffast-math is set.
1957         (set_unsafe_math_optimizations_flags): New Function
1958         to set -freciprocal-math and -fassociative-math when
1959         -funsafe-math-optimizations is set.
1960         (common_handle_option): Call it.
1961         * tree-vectorizer.c (vect_is_simple_reduction): Use
1962         -fassociative-math when doing reduction on floats.
1963         * loop-unroll.c (analyze_insn_to_expand_var): Use
1964         -fassociative-math when expanding an accumulator of type float.
1965         * simplify-rtx.c (simplify_binary_operation_1): Use
1966         -fassociative-math and -freciprocal-math when reordeing operands
1967         of floating-point type.
1968         * combine.c (combine_simplify_rtx): Likewise.
1969         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
1970         Likewise.
1971         * common.opt (-fassociative-math, -freciprocal-math): New flags.
1972
1973 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
1974
1975         PR c++/18608
1976         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
1977
1978 2007-09-04  Jan Hubicka  <jh@suse.cz>
1979
1980         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
1981
1982 2007-09-04  Jan Hubicka  <jh@suse.cz>
1983
1984         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
1985         and corresponding MATCH_DUP.
1986
1987 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
1988
1989         PR middle-end/33187
1990         * combine.c (subst): Do not try to simplify X if it represents load
1991         of FP constant from the constant pool via float extension.
1992
1993 2007-09-04  Ben Elliston  <bje@au.ibm.com>
1994
1995         * c-opts.c: Include "tm_p.h".
1996         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
1997
1998 2007-09-04  Richard Guenther  <rguenther@suse.de>
1999
2000         PR tree-optimization/33291
2001         * tree-pretty-print.c (dump_generic_node): Dump all
2002         qualifiers for pointer types, not only first.  Dump
2003         qualifiers for aggregate types as well.
2004         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
2005         use the canonical type for building ARRAY_REFs.
2006         * gimplify.c (canonicalize_addr_expr): Clean up.  The
2007         correct validness check is compatibility of the pointer
2008         types.  Always use the canonical type for building
2009         ARRAY_REFs and ADDR_EXPRs.
2010         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
2011         change that disabled propagation of ADDR_EXPRs into statements
2012         with volatile ops.
2013
2014 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2015
2016         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
2017         (umulsi3_highpart): Make into expanders; existing insns are
2018         now named *[insn]_nov6.  Add stars to existing [insn]_v6
2019         counterparts' names.
2020
2021 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
2022
2023         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
2024         (unprotoize.o): Remove SHLIB_MULTILIB.
2025
2026 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
2027
2028         * doc/extend.texi: Document progmem attribute for AVR.
2029
2030 2007-09-03  Anatoly Sokolov <aesok@post.ru>
2031
2032         PR target/28902
2033         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
2034
2035 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2036
2037         * optabs.c (expand_ffs): Initialize val and defined_at_zero
2038         to avoid warnings.
2039
2040         * optabs.c: Remove unnecessary forward declarations.
2041         (expand_unop_direct): New, broken out of expand_unop.
2042         (expand_doubleword_clz): New.
2043         (expand_ctz): Move above expand_ffs.  Use
2044         start_sequence, end_sequence, add_equal_note, and
2045         expand_unop_direct.  Add more commentary.
2046         (expand_ffs): Try both ctz optab and expand_ctz.
2047         Generate a test and branch if the hardware doesn't give us
2048         a useful value for input zero.  Style improvements similar to
2049         expand_ctz.
2050
2051         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
2052
2053 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
2054
2055         * config.gcc: Delete stanza for arm-semi-aof and
2056         armel-semi-aof targets.
2057         * config/arm/arm-protos.h
2058         * config/arm/arm.c
2059         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
2060         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
2061         delete aof_pic_label and remove mention of AOF in comments.
2062         * config/arm/arm.md: Delete patterns used only for AOF assembly.
2063         * config/arm/aof.h
2064         * config/arm/semiaof.h
2065         * config/arm/t-semi: Delete file.
2066
2067 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2068
2069         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
2070         CONST_CAST_BB): New macros for type-specific casts.
2071         (CONST_CAST): Add a TYPE parameter and define it in terms of
2072         CONST_CAST2.
2073
2074         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
2075         * c-lex.c (cb_ident, lex_string): Likewise,
2076         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
2077         * config/i386/i386.c (ix86_function_regparm,
2078         ix86_function_sseregparm): Use CONST_CAST_TREE.
2079         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
2080         CONST_CAST.
2081         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2082         give_switch, set_multilib_dir): Likewise,
2083         * gengtype-parse.c (string_seq, typedef_name): Likewise,
2084         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
2085         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
2086         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
2087         * prefix.c (update_path): Likewise,
2088         * pretty-print.c (pp_base_destroy_prefix): Likewise,
2089         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
2090         * tree-cfg.c (tree_can_merge_blocks_p,
2091         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
2092         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
2093         * tree.c (build_string): Supply a TYPE for CONST_CAST.
2094         (attribute_list_contained): Use CONST_CAST_TREE.
2095
2096 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
2097
2098         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
2099
2100 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
2101
2102         PR middle-end/33290
2103         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
2104         before forcing them into a register.
2105
2106 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
2107
2108         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
2109         rather than define_code_macro.
2110
2111 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2112
2113         * gcc.c (xputenv): New function.
2114         (putenv_from_prefixes): Use xputenv instead of putenv.
2115         (process_command): Use xputenv instead of putenv.
2116         (set_collect_gcc_options): Use xputenv instead of putenv.
2117         (main): Use xputenv instead of putenv.
2118
2119 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
2120
2121         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
2122         availability of swap instruction.
2123         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
2124
2125 2007-09-03  Revital Eres  <eres@il.ibm.com>
2126
2127         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
2128         Documentation.
2129
2130 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
2131             Ayal Zaks  <zaks@il.ibm.com>
2132             Revital Eres  <eres@il.ibm.com>
2133
2134         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
2135         compute_split_row): New functions.
2136         (ps_unschedule_node): Remove.
2137         (normalize_sched_times): Iterate over the already scheduled
2138         insns instead of the number of nodes.
2139         (MAX_SPLIT_NUM): New definition.
2140         (sms_schedule_by_order): Change the scheduling heuristic to
2141         avoid useless increases of initiation interval ii.
2142         (get_sched_window): Add dump printouts.
2143
2144 2007-09-02  David Daney  <ddaney@avtrex.com>
2145
2146         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
2147         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
2148         (optab, insn): Add more attributes.
2149         (fetchop_bit): New code macro.
2150         (immediate_insn): New code macro attribute.
2151         (sync): Change condition to ISA_HAS_SYNC.
2152         (rdhwr): Change predicate for operand 0 to register_operand.
2153         (memory_barrier): New expand.
2154         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2155         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2156         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2157         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2158         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
2159         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
2160         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2161         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2162         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
2163         
2164 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
2165             Hans-Peter Nilsson  <hp@axis.com>
2166
2167         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
2168         Defined to describe availability and behavior of CLZ.
2169         * config/cris/cris.md (clzsi2): Implement using lz instruction.
2170         * config/cris/cris.opt: Tweak comment for "-metrax4".
2171         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
2172         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
2173         (count_leading_zeros): Define.
2174
2175 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2176
2177         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
2178
2179 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
2180
2181         PR middle-end/33272
2182         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
2183         decayed from array.
2184
2185 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
2186
2187         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
2188         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
2189         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
2190         sched-deps.c, sched-int.h, system.h, target.h,
2191         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
2192         tree.def: Fix comment typos.
2193
2194 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
2195
2196         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
2197         (override_options): Turn on -mstrict-align on non-ColdFire
2198         targets.
2199         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
2200
2201 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2202
2203         * c-common.c (const_strip_array_types): Delete.
2204         * c-common.h (const_strip_array_types): Likewise.
2205         * emit-rtl.c (const_next_insn, const_previous_insn,
2206         const_next_nonnote_insn, const_prev_nonnote_insn,
2207         const_next_real_insn, const_prev_real_insn,
2208         const_next_active_insn, const_prev_active_insn, const_next_label,
2209         const_prev_label): Delete.
2210         * gimple-low.c (block_may_fallthru): Use expr_last.
2211         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
2212         * rtl.h (const_previous_insn, const_next_insn,
2213         const_prev_nonnote_insn, const_next_nonnote_insn,
2214         const_prev_real_insn, const_next_real_insn,
2215         const_prev_active_insn, const_next_active_insn, const_prev_label,
2216         const_next_label): Delete.
2217         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
2218         * system.h (CONST_CAST): Update comment.
2219         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
2220         (const_first_stmt, const_last_stmt): Delete.
2221         (tree_block_ends_with_condjump_p): Use last_stmt.
2222         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
2223         * tree-iterator.c (const_expr_first, const_expr_last,
2224         const_expr_only): Delete.
2225         * tree.c (const_lookup_attribute): Likewise.
2226         (attribute_list_contained): Use lookup_attribute.
2227         * tree.h (const_lookup_attribute, const_expr_first,
2228         const_expr_last, const_expr_only): Delete.
2229
2230 2007-09-01  Richard Guenther  <rguenther@suse.de>
2231
2232         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
2233         instead of TREE_THIS_VOLATILE.
2234         * tree-ssa-operands.c (add_virtual_operand): Do not set
2235         has_volatile_ops.  Do not check s_ann for NULL.
2236         (get_indirect_ref_operands): Likewise.
2237         (get_expr_operands): Likewise.  For all reference trees
2238         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
2239         check base of reference for TREE_THIS_VOLATILE.
2240
2241 2007-09-01  Richard Guenther  <rguenther@suse.de>
2242
2243         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
2244         between integral types.  Also allow conversions between
2245         pointer types.
2246
2247 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2248
2249         * optabs.c (prepare_float_lib_cmp): Use
2250         libgcc_cmp_return_mode instead of word_mode.
2251         * config/dfp-bit.h: Likewise.
2252         * config/fp-bit.h: Likewise.
2253         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
2254         New function.
2255         (spu_libgcc_shift_count_mode): New function.
2256         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
2257         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
2258
2259 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
2260
2261         * tree-pretty-print.c: Include output.h.
2262         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
2263         HOST_WIDE_INT_PRINT_DEC.
2264         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
2265
2266 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
2267
2268         PR rtl-optimization/33224
2269         * loop-iv.c (latch_dominating_def): Check that the definition belongs
2270         to the analysed region.
2271
2272 2007-08-31  Richard Guenther  <rguenther@suse.de>
2273
2274         * function.c (allocate_struct_function): Do not set
2275         current_function_returns_pointer.
2276         * function.h (struct var_refs_queue): Remove.
2277         (struct simple_obstack_stack): Likewise.
2278         (struct function): Remove fixup_var_refs_queue member.
2279         Remove returns_pointer flag.
2280         (current_function_returns_pointer): Remove define.
2281
2282 2007-08-31  Nick Clifton  <nickc@redhat.com>
2283
2284         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
2285         secondary keys in order to obtain a stable sort.
2286
2287 2007-08-31  Nick Clifton  <nickc@redhat.com>
2288
2289         PR target/33132
2290         * config/m32r/constraints.md: Add W constraint for integer zero.
2291         * config/m32r/m32r.md (get_pc): Use W and i constraints.
2292         Fix length calculation by using alternatives.
2293
2294 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
2295
2296         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
2297         split out from expand_binop.
2298         (avoid_expensive_constant): New function.
2299         (expand_binop_directly): Remove commutative_op argument and
2300         (expand_binop_directly): Remove commutative_op argument and
2301         call cummutative_optab_p instead.  Do not change op0 or op1
2302         when swapping xop0 and xop1.  Apply avoid_expensive_constant
2303         to each argument after potential swapping.  Enforce the
2304         canonical order of commutative operands.
2305         (expand_binop): Use shift_optab_p and commutative_optab_p.
2306         Update the calls to expand_binop_directly.  Only force constants
2307         into registers when widening an operation.  Only swap operands
2308         once a direct expansion has been rejected.
2309         (expand_twoval_binop): Only force constants into registers when
2310         using a direct expansion.
2311
2312 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
2313
2314         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
2315         (sched_analyze_insn): Don't postprocess speculative dependencies when
2316         target has no scheduling.
2317         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
2318         'uninitialized' warning.
2319
2320 2007-08-31  Richard Guenther  <rguenther@suse.de>
2321
2322         * tree.c (build_complex_type): Always set TYPE_NAME for
2323         comples types.
2324
2325 2007-08-31  Olivier Hainque  <hainque@adacore.com>
2326
2327         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
2328         internal macro. Default alignment factor for csect directives, chosen
2329         to match what BIGGEST_ALIGNMENT allows.
2330         (DATA_SECTION_ASM_OP): Use it.
2331         * config/rs6000/rs6000.c
2332         (rs6000_xcoff_output_readonly_section_asm_op):
2333         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
2334         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
2335         
2336 2007-08-31  Olivier Hainque  <hainque@adacore.com>
2337
2338         * dbxout.c (dbxout_block): Move declaration within the first
2339         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
2340         block to include the definition, together with the associated
2341         helpers.
2342
2343 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
2344             Revital Eres  <eres@il.ibm.com>
2345
2346         * doc/invoke.texi (-mpaired): Document flag.
2347         * config.gcc: Include paired.h in powerpc extra_headers and
2348         750cl.h in powerpc-*-linux*paired*.
2349         * config/rs6000/rs6000.opt (-mpaired): New flag.
2350         * config/rs6000/rs6000.c (paired_init_builtins,
2351         paired_expand_builtin, paired_expand_lv_builtin,
2352         paired_expand_stv_builtin, paired_expand_predicate_builtin):
2353         New functions to support the paired single builtin functions.
2354         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
2355         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
2356         single builtins.
2357         (bdesc_paired_preds): New structure for paired predicate
2358         instructions.
2359         (rs6000_expand_builtin): Expand paired single builtins.
2360         (rs6000_init_builtins): Init paired single builtins.
2361         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
2362         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
2363         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
2364         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
2365         (rs6000_vector_mode_supported_p): Support paired vector mode.
2366         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
2367         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
2368         New.
2369         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
2370         (DATA_ALIGNMENT): Likewise.
2371         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
2372         (rs6000_builtins): Add PAIRED builtins.
2373         * config/rs6000/rs6000.md: Include paired.md.
2374         * config/rs6000/paired.h: New.
2375         * config/rs6000/paired.md: New.
2376         * config/rs6000/750cl.h: New.
2377         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
2378
2379 2007-08-30  Ollie Wild  <aaw@google.com>
2380
2381         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
2382         * gcc.c (default_compilers): Add -fno-directives-only to
2383         @assembler-with-cpp.
2384
2385 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
2386
2387         PR middle-end/33211
2388
2389         * regclass.c (initial_fixed_regs): Revert previous change and make
2390         it const again.
2391         (initial_call_used_regs): Likewise.
2392         (initial_call_really_used_regs): Delete, reverting previous addition.
2393         (initial_reg_names): Likewise.
2394         (init_reg_sets): Revert previous change.
2395         (saved_fixed_regs): New.
2396         (saved_call_used_regs): New.
2397         (saved_call_really_used_regs): New.
2398         (saved_reg_names): New.
2399         (save_register_info): New.
2400         (restore_register_info): New.
2401         (init_reg_sets_1): Replace reset of register info with call to
2402         restore_register_info.
2403         * rtl.h (save_register_info): Declare.
2404         * toplev.c (backend_init): Call save_register_info.
2405
2406 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
2407
2408         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
2409         from the original statement.
2410
2411 2007-08-30  Chao-ying Fu  <fu@mips.com>
2412
2413         * c-lex.c (interpret_fixed): Declare.
2414         (interpret_float): Process _Fract and _Accum.
2415         (interpret_fixed): New function.
2416         * final.c (output_addr_const): Process CONST_FIXED.
2417         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
2418         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
2419         SS_DIV, US_DIV.
2420         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
2421         US_DIV, US_ASHIFT.
2422         (simplify_immed_subreg): Support CONST_FIXED.
2423         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
2424         (simplify_subreg): Support CONST_FIXED.
2425
2426 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2427
2428         * config/rs6000/ppu_intrinsics.h: New file.
2429         * config.gcc (powerpc*-*-* <extra_headers>): Install
2430         ppu_intrinsics.h.
2431
2432 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
2433
2434         * cfg.c (dump_flow_info): Change to also print entry and exit
2435         block info.
2436         * print-rtl.c (print_rtl_single): Allow to print rtl with
2437         -fdump-unnumbered.
2438         
2439 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
2440
2441         * df-core.h (df_dump_region): New function.
2442         * df.h (df_dump_region): New function.
2443         * loop-invariant.c (find_defs): Add call to df_dump_region.
2444         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
2445         df_dump_region.
2446         
2447 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2448
2449         PR target/33168
2450         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
2451         true if any of the compare_section_name calls returned true,
2452         rather than if any returned false.
2453
2454 2007-08-30  Richard Guenther  <rguenther@suse.de>
2455
2456         PR tree-optimization/33199
2457         * tree-ssa-structalias.c (handle_lhs_call): New function.
2458         (find_func_aliases): In non-IPA mode make sure that for
2459         calls that return a pointer we add a constraint for the
2460         result to point to anything.
2461
2462 2007-08-30  Richard Guenther  <rguenther@suse.de>
2463
2464         * doc/invoke.texi (-mveclibabi): Document new target option.
2465         * config/i386/i386.opt (-mveclibabi): New target option.
2466         * config/i386/i386.c (ix86_veclib_handler): Handler for
2467         vectorization library support.
2468         (override_options): Handle the -mveclibabi option, initialize
2469         the vectorization library handler.
2470         (ix86_builtin_vectorized_function): As fallback call the
2471         vectorization library handler, if set.
2472         (ix86_veclibabi_acml): New static function for ACML ABI style
2473         vectorization support.
2474
2475 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2476
2477         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
2478         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
2479         SImode and update m.  Don't run gen_lowpart_common on arbitrary
2480         memory address, force it to register first.
2481
2482         PR middle-end/32758
2483         * dce.c (dce_process_block): Don't delete setters of
2484         artificially used registers.
2485
2486 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2487
2488         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
2489         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
2490         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
2491
2492 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2493
2494         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
2495         pattern.
2496         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
2497         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
2498
2499 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2500
2501         * system.h: Activate -Wcast-qual as warning-only.
2502
2503 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
2504
2505         PR target/33168
2506         * config/rs6000/rs6000.c (compare_section_name): New function.
2507         (rs6000_elf_in_small_data_p): Compare section prefixes instead
2508         of full name.
2509
2510 2007-08-29  Olivier Hainque  <hainque@adacore.com>
2511
2512         * xcoffout.c: #include debug.h.
2513         * Makefile.in (xcoffout.o): Add debug.h dependency.
2514
2515 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
2516
2517         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
2518         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
2519
2520 2007-08-29  Richard Guenther  <rguenther@suse.de>
2521
2522         * tree-pretty-print.c (dump_generic_node): Print
2523         label DECL_UID as D.%u.
2524         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
2525
2526 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2527
2528         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
2529         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
2530
2531 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
2532
2533         PR c++/33194
2534         * tree.c (build_type_attribute_qual_variant): Set canonical types
2535         on the final, unqualified attribute variant before building the
2536         qualified version.
2537
2538 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2539
2540         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
2541         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
2542
2543 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2544
2545         Revert
2546         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2547         * config/bfin/bfin.md (composev2hi): Put operands into vector
2548         with correct order.
2549
2550 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2551
2552         * config/bfin/bfin.md (composev2hi): Put operands into vector
2553         with correct order.
2554
2555 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2556
2557         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
2558         attribute when appropriate.
2559         (bfin_handle_l1_text_attribute): New.
2560         (bfin_handle_l1_data_attribute): New.
2561         (bfin_attribute_table): Add attributes: l1_text, l1_data,
2562         l1_data_A and l1_data_B.
2563         * doc/extend.texi (node Function Attributes): Document l1_text
2564         function attribute.
2565         (Variable Attributes): Add Blackfin subsection. Document l1_data,
2566         l1_data_A and l1_data_B variable attributes.
2567
2568 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
2569
2570         * config/bfin/bfin.opt (minline-plt): Add.
2571         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
2572         call to global functions.
2573         * doc/invoke.texi (Option Summary): Mention -minline-plt.
2574         (Blackfin Options): Document -minline-plt.
2575
2576 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
2577
2578         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
2579         given a non-function.
2580         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
2581
2582 2007-08-28  DJ Delorie  <dj@redhat.com>
2583
2584         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
2585
2586 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2587
2588         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
2589
2590 2007-08-28  Richard Guenther  <rguenther@suse.de>
2591
2592         * tree.h (struct tree_function_decl): Increase size of
2593         function_code bitfield.
2594
2595 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
2596             Kazu Hirata  <kazu@codesourcery.com>
2597
2598         * gcc/config/m68k/linux.h
2599         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
2600         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
2601         (m68k_return_in_memory): New.
2602         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
2603         New.
2604
2605 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
2606
2607         PR target/32661
2608         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
2609         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
2610         operand) when top VEC_SELECT extracts scalar element.
2611         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
2612         (*vec_extract_v4sf_mem): Ditto.
2613
2614 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
2615
2616         PR middle-end/32370
2617         * passes.c (init_optimization_passes): Move pass_df_finish
2618         after pass_postreload sublist.
2619
2620         PR rtl-optimization/33148
2621         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
2622         (neg (lt X 0)) if X has scalar int mode.
2623
2624         PR debug/32914
2625         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
2626         initializer, use build_vector_from_ctor if possible to create
2627         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
2628         even after this, return NULL.
2629
2630 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2631
2632         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
2633
2634 2007-08-28  Richard Guenther  <rguenther@suse.de>
2635
2636         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
2637         (struct tree_function_decl): Make function_code a bitfield.
2638         Add disregard_inline_limits flag.
2639         * cgraphunit.c (cgraph_process_new_functions): Check
2640         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
2641         (cgraph_preserve_function_body_p): Likewise.
2642         * ipa-inline.c (compute_inline_parameters): Likewise.
2643         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
2644         for GNU C extern inline functions.
2645         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
2646         * tree-inline.c (disregard_inline_limits_p): Remove.
2647         * tree-inline.h (disregard_inline_limits_p): Likewise.
2648         * c-common.c (handle_always_inline_attribute): Set
2649         DECL_DISREGARD_INLINE_LIMITS.
2650         * langhooks.c (add_builtin_function): Verify the function code
2651         fits in the bitfield.
2652
2653 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
2654             Vladimir Yanovsky  <yanov@il.ibm.com>
2655             Revital Eres  <eres@il.ibm.com>
2656             Andrey Belevantsev  <abel@ispras.ru>
2657
2658         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
2659         is set.
2660         * modulo-sched.c: Add documentation regarding do-loop.
2661         (doloop_register_get): Change number of arguments to support
2662         the new do-loop pattern and check whether COUNT_REG has no other
2663         occurences in the loop besides in the control part.
2664         (duplicate_insns_of_cycles): Do not duplicate the insn which
2665         changes count_reg as it is already adjusted.
2666         (generate_prolog_epilog): New argument to support the new
2667         do-loop pattern.  Change the subtract instruction to use
2668         expand_simple_binop.  Call duplicate_insns_of_cycles with new
2669         argument.
2670         (sms_schedule): Call doloop_register_get and
2671         generate_prolog_epilog with new argument.  Do not handle loops
2672         with single sets insns with subreg in their lhs.
2673         * loop-doloop.c (doloop_optimize): Support for another do-loop
2674         pattern.
2675         (doloop_condition_get): Gets an instruction instead of a pattern
2676         and change the return condition when the do-loop pattern is
2677         not parallel.
2678         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
2679         deps when considering to not create edges.
2680
2681 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
2682
2683         * doc/extend.texi (gnu_inline funtion attribute): Document C++
2684         behavior.
2685
2686 2007-08-27  Jason Merrill  <jason@redhat.com>
2687
2688         PR c++/31337
2689         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
2690         zero-sized types after calling gimplify_modify_expr_rhs.
2691
2692 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
2693
2694         * regclass.c (init_reg_autoinc): Fix typo.
2695
2696 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
2697         
2698         Fix PR tree-optimization/33173
2699         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
2700
2701 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
2702
2703         PR target/31385
2704         * config/i386/i386.h (VALID_DFP_MODE_P): New.
2705         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
2706         GPR.
2707
2708 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
2709             David Ung  <davidu@mips.com>
2710             Nigel Stephens <nigel@mips.com>
2711
2712         Separate target-specific initialization from general
2713         back-end initialization.
2714
2715         * toplev.c (init_alignments): New, split out from...
2716         (process_options): ...here.
2717         (backend_init_target): New, split out from...
2718         (backend_init): ...here.
2719         (lang_dependent_init_target): New, split out from...
2720         (lang_dependent_init): ...here.
2721         (target_reinit): New.
2722         * toplev.h (target_reinit): Declare.
2723         * expr.c (init_expr_target): Renamed from init_expr_once, since it
2724         now can be called more than once.  Update comments.
2725         * expr.h (init_expr_target): Likewise.
2726         * alias.c (init_alias_target): Renamed from init_alias_once, since it
2727         now can be called more than once.  Explicitly zero
2728         static_reg_base_value.
2729         * emit-rtl.c (init_emit_regs): New, split out from...
2730         (init_emit_once): Here.
2731         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
2732         non-const, so that changes from command-line arguments can overwrite
2733         values provided by the static initializers.
2734         (initial_call_really_used_regs): New, used similarly to the above.
2735         (initial_reg_names): Likewise.
2736         (last_mode_for_init_move_cost): Promoted function-local static to
2737         file-scope static to make it accessible outside init_move_cost.
2738         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
2739         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
2740         reg_names since it is needed for parsing command-line options.
2741         (init_move_cost): Use last_mode_for_init_move_cost instead of
2742         function-local static.
2743         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
2744         call_really_used_regs now.  Reinitialize reg_names.  Also
2745         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
2746         reg_class_superunion.  Clear losing_caller_save_reg_set.
2747         Preserve global registers if called more than once.  Reset
2748         move cost, may_move_in_cost, may_move_out_cost, and
2749         last_mode_for_init_move_cost.
2750         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
2751         can now be invoked more than once.  Update comments.
2752         (init_regs): Update comments.
2753         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
2754         and initial_call_really_used_regs, instead of the non-initial 
2755         variables.  This allows us to save the command-line register settings
2756         after target reinitialization.
2757         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
2758         * rtl.h (init_emit_regs): Declare.
2759         (init_reg_modes_target, init_alias_target): Renamed as described
2760         above.
2761         * reload1.c (init_reload): Update comments.
2762         * optabs.c (init_optabs): Likewise.
2763         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
2764         
2765 2007-08-26  Chao-ying Fu  <fu@mips.com>
2766
2767         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
2768         __typeof().
2769
2770 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2771
2772         * alias.c (memory_modified_1, memory_modified_in_insn_p):
2773         Constify.
2774         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
2775         Likewise.
2776         * bb-reorder.c (copy_bb_p): Likewise.
2777         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
2778         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
2779         block_ends_with_condjump_p): Likewise.
2780         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
2781         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
2782         block_ends_with_condjump_p): Likewise.
2783         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
2784         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
2785         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
2786         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
2787         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
2788         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
2789         debug_true_const_tree instad of debug_true_tree.
2790         * debug.c (do_nothing_debug_hooks): Likewise.
2791         * debug.h (ignore_block, debug_true_const_tree): Constify.
2792         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
2793         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
2794         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
2795         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
2796         dbx_reg_number, is_based_loc, field_type,
2797         simple_type_align_in_bits, simple_decl_align_in_bits,
2798         simple_type_size_in_bits, field_byte_offset, insert_float,
2799         type_tag, member_declared_type, is_redundant_typedef,
2800         secname_for_decl, is_inlined_entry_point): Likewise.
2801         * emit-rtl.c (const_next_insn, const_previous_insn,
2802         const_next_nonnote_insn, const_prev_nonnote_insn,
2803         const_next_real_insn, const_prev_real_insn,
2804         const_next_active_insn, const_prev_active_insn, const_next_label,
2805         const_prev_label): Likewise.
2806         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
2807         Likewise.
2808         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
2809         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
2810         sched_insn_is_legitimate_for_speculation_p): Likewise.
2811         * jump.c (reversed_comparison_code_parts,
2812         reversed_comparison_code, reversed_comparison, condjump_label):
2813         Likewise.
2814         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
2815         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
2816         Likewise.
2817         * rtl.h (const_previous_insn, const_next_insn,
2818         const_prev_nonnote_insn, const_next_nonnote_insn,
2819         const_prev_real_insn, const_next_real_insn,
2820         const_prev_active_insn, const_next_active_insn, const_prev_label,
2821         const_next_label, modified_between_p, modified_in_p,
2822         const_note_storeskeep_with_call_p, condjump_label,
2823         reversed_comparison, reversed_comparison_code,
2824         reversed_comparison_code_parts, memory_modified_in_insn_p,
2825         stack_regs_mentioned): Likewise.
2826         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
2827         keep_with_call_p): Likewise.
2828         * sched-deps.c (deps_may_trap_p, sched_get_condition,
2829         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
2830         sd_lists_size, sd_lists_empty_p): Likewise.
2831         * sched-int.h (sched_insns_conditions_mutex_p,
2832         haifa_classify_insn, no_real_insns_p,
2833         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
2834         sd_lists_size, sd_lists_empty_p): Likewise.
2835         * sdbout.c (sdb_debug_hooks): Likewise.
2836         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
2837         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
2838         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
2839         Likewise.
2840         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
2841         tree_can_throw_internal): Likewise.
2842         * tree-flow-inline.h (phi_nodes): Likewise.
2843         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
2844         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
2845         * tree-gimple.c (const_get_call_expr_in): Likewise.
2846         * tree-gimple.h (const_get_call_expr_in): Likewise.
2847         * tree.c (const_lookup_attribute, attribute_list_equal,
2848         attribute_list_contained): Likewise.
2849         * tree.h (attribute_list_equal, attribute_list_contained,
2850         const_lookup_attribute): Likewise.
2851         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
2852
2853 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
2854
2855         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
2856         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
2857
2858 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2859
2860         PR target/32991
2861         * config/alpha/constraints.md: Delete "svn:mime-type" property
2862         with svn propdel "svn:mime-type".
2863
2864 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2865
2866         PR middle-end/33181
2867         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
2868         non NOTE insn doesn't cross basic block.
2869         (noce_try_abs): Likewise.
2870         (noce_process_if_block): Likewise.
2871
2872 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
2873
2874         PR target/33151
2875         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
2876         operand without auto-inc-dec.
2877         * config/rs6000/rs6000.md (floatsidf2_internal): Use
2878         offsettable_mem_operand.
2879         (floatunssidf2_internal): Same.
2880         (fix_truncdfsi2_internal): Same.
2881         (floatsidf_ppc64): Same.
2882         (floatunssidf_ppc64): Same.
2883         (fix_trunctfsi2_internal): Same.
2884
2885 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
2886
2887         PR bootstrap/30620
2888         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
2889         pass defines needed for version.c.
2890
2891 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
2892
2893         * configure.ac (--debug-prefix-map check): Change assembler
2894         version presumed to have feature to 2.18.
2895         * configure: Regenerate.
2896
2897 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2898
2899         * c-common.c (vector_types_convertible_p,
2900         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
2901         self_promoting_args_p): Constify.
2902         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
2903         c_promoting_integer_type_p, self_promoting_args_p,
2904         anon_aggr_type_p, vector_types_convertible_p): Likewise.
2905         * c-decl.c (anon_aggr_type_p): Likewise.
2906         * * c-dump.c (dump_stmt): Likewise.
2907         * c-objc-common.c (has_c_linkage): Likewise.
2908         * c-tree.h (same_translation_unit_p): Likewise.
2909         * c-typeck.c (null_pointer_constant_p,
2910         tagged_types_tu_compatible_p, function_types_compatible_p,
2911         type_lists_compatible_p, lvalue_or_else, lvalue_p,
2912         comptypes_internal, struct tagged_tu_seen_cache,
2913         same_translation_unit_p, alloc_tagged_tu_seen_cache,
2914         c_size_in_bytes): Likewise.
2915         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
2916         hash_ptr, eq_ptr): Likewise.
2917         * langhooks-def.h (lhd_decl_ok_for_sibcall,
2918         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
2919         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
2920         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
2921         Likewise.
2922         * optabs.c (optab_for_tree_code): Likewise.
2923         * optabs.h (optab_for_tree_code): Likewise.
2924         * rtl.h (simplify_rtx): Likewise.
2925         * simplify-rtx.c (simplify_rtx): Likewise.
2926         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
2927         dump_flag, dump_node): Likewise.
2928         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
2929         queue_and_dump_type, dump_flag): Likewise.
2930         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
2931         * tree-pass.h (dump_node): Likewise.
2932         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
2933         supportable_narrowing_operation): Likewise.
2934         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
2935         supportable_narrowing_operation): Likewise.
2936         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
2937         is_negative_overflow_infinity, is_positive_overflow_infinity,
2938         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
2939         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
2940         update_value_range, add_equivalence, ssa_name_nonnegative_p,
2941         ssa_name_nonzero_p, fp_predicate): Likewise.
2942         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
2943         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
2944         ssa_name_nonnegative_p): Likewise.
2945
2946 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
2947
2948         * config.gcc : Add x86_64-elf target.
2949
2950 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
2951
2952         * expr.c (store_expr): Fix order of store_by_pieces arguments.
2953
2954 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
2955             Nigel Stephens <nigel@mips.com>
2956
2957         PR target/11787
2958
2959         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
2960         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
2961         * expr.c (SET_BY_PIECES_P): Define.
2962         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
2963         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
2964         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
2965         store_by_pieces.
2966         * expr.h (SET_RATIO): Define.
2967         (can_store_by_pieces, store_by_pieces): Update prototypes.
2968         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
2969         can_store_by_pieces/store_by_pieces.
2970         (expand_builtin_memcpy_args): Likewise.
2971         (expand_builtin_strncpy): Likewise.
2972         (expand_builtin_memset_args): Likewise.  Also remove special case
2973         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
2974         decide what to do instead.
2975         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
2976         to can_store_by_pieces.
2977
2978         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
2979         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
2980
2981         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
2982         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
2983         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
2984         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
2985         (STORE_BY_PIECES_P): Define.
2986
2987 2007-08-24  Tom Tromey  <tromey@redhat.com>
2988
2989         * varpool.c (varpool_last_needed_node): Fix comment typo.
2990         * c-decl.c (duplicate_decls): Fix comment typo.
2991         (clone_underlying_type): Update comment.
2992
2993 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2994
2995         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
2996         alpha_in_small_data_p, alpha_split_complex_arg,
2997         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
2998         Constify.
2999         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
3000         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
3001         Likewise.
3002         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
3003         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
3004         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
3005         * config/darwin.c (darwin_binds_local_p): Likewise.
3006         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
3007         Likewise.
3008         * config/i386/i386-protos.h (i386_pe_binds_local_p,
3009         i386_pe_valid_dllimport_attribute_p): Likewise.
3010         * config/i386/i386.c (ix86_function_regparm,
3011         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
3012         x86_can_output_mi_thunk, ix86_mangle_type,
3013         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
3014         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
3015         i386_pe_binds_local_p): Likewise.
3016         * config/ia64/ia64.c
3017         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
3018         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
3019         ia64_invalid_conversion, ia64_invalid_unary_op,
3020         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
3021         Likewise.
3022         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
3023         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
3024         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
3025         * config/mips/mips.c (mips_use_blocks_for_constant_p,
3026         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
3027         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
3028         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
3029         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
3030         * config/pa/pa.c (pa_commutative_p): Likewise.
3031         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
3032         Likewise.
3033         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
3034         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
3035         rs6000_use_blocks_for_constant_p,
3036         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
3037         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
3038         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
3039         * config/s390/s390.c (s390_mangle_type,
3040         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
3041         Likewise.
3042         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
3043         th_in_small_data_p): Likewise.
3044         * config/sh/sh.c (sh_ms_bitfield_layout_p,
3045         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
3046         Likewise.
3047         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
3048         sparc_mangle_type): Likewise.
3049         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
3050         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
3051         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
3052         Likewise.
3053         * hooks.c (hook_bool_mode_const_rtx_false,
3054         hook_bool_mode_const_rtx_true,
3055         hook_bool_const_tree_hwi_hwi_const_tree_false,
3056         hook_bool_const_tree_hwi_hwi_const_tree_true,
3057         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
3058         hook_constcharptr_const_tree_null,
3059         hook_constcharptr_const_rtx_null,
3060         hook_constcharptr_const_tree_const_tree_null,
3061         hook_constcharptr_int_const_tree_null,
3062         hook_constcharptr_int_const_tree_const_tree_null): New.
3063         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
3064         hook_bool_tree_hwi_hwi_tree_false,
3065         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
3066         hook_int_tree_tree_1, hook_constcharptr_tree_null,
3067         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
3068         hook_constcharptr_int_tree_null,
3069         hook_constcharptr_int_tree_tree_null): Delete.
3070         (default_can_output_mi_thunk_no_vcall): Constify.
3071         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
3072         hook_bool_tree_hwi_hwi_tree_false,
3073         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
3074         hook_int_tree_tree_1, hook_constcharptr_tree_null,
3075         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
3076         hook_constcharptr_int_tree_null,
3077         hook_constcharptr_int_tree_tree_null): Delete.
3078         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
3079         hook_bool_const_tree_hwi_hwi_const_tree_false,
3080         hook_bool_const_tree_hwi_hwi_const_tree_true,
3081         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
3082         hook_constcharptr_const_tree_null,
3083         hook_constcharptr_const_rtx_null,
3084         hook_constcharptr_const_tree_const_tree_null,
3085         hook_constcharptr_int_const_tree_null,
3086         hook_constcharptr_int_const_tree_const_tree_null): New.
3087         (default_can_output_mi_thunk_no_vcall): Constify.
3088         * integrate.c (function_attribute_inlinable_p): Likewise.
3089         * integrate.h (function_attribute_inlinable_p): Likewise.
3090         * jump.c (rtx_renumbered_equal_p): Likewise.
3091         * output.h (decl_readonly_section, categorize_decl_for_section,
3092         default_use_anchors_for_symbol_p, default_binds_local_p,
3093         default_binds_local_p_1): Likewise.
3094         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
3095         Likewise.
3096         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
3097         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
3098         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
3099         TARGET_COMP_TYPE_ATTRIBUTES,
3100         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
3101         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
3102         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
3103         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
3104         TARGET_DWARF_CALLING_CONVENTION): Likewise.
3105         * target.h (can_output_mi_thunk, needs_block_p,
3106         first_cycle_multipass_dfa_lookahead_guard_spec,
3107         vector_alignment_reachable, comp_type_attributes,
3108         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
3109         commutative_p, use_blocks_for_constant_p,
3110         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
3111         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
3112         invalid_within_doloop, valid_dllimport_attribute_p,
3113         split_complex_arg, invalid_arg_for_unprototyped_fn,
3114         invalid_conversion, invalid_unary_op, invalid_binary_op):
3115         Likewise.
3116         * targhooks.c (default_invalid_within_doloop,
3117         hook_invalid_arg_for_unprototyped_fn,
3118         default_builtin_vector_alignment_reachable): Likewise.
3119         (hook_bool_rtx_commutative_p): Delete.
3120         (hook_bool_const_rtx_commutative_p): New.
3121         * targhooks.h (default_invalid_within_doloop,
3122         default_builtin_vector_alignment_reachable,
3123         hook_invalid_arg_for_unprototyped_fn): Constify.
3124         (hook_bool_rtx_commutative_p): Delete.
3125         (hook_bool_const_rtx_commutative_p): New.
3126         * varasm.c (bss_initializer_p, decl_default_tls_model,
3127         categorize_decl_for_section, decl_readonly_section,
3128         default_use_anchors_for_symbol_p, default_binds_local_p,
3129         default_binds_local_p_1): Constify.
3130
3131 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
3132
3133         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
3134         __NO_BUILTIN if -fno-builtin.
3135
3136 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
3137
3138         * config/bfin/bfin.c (print_operand): Report error instead of
3139         ICE for wrong operand.
3140
3141 2007-08-24  Michael Matz  <matz@suse.de>
3142
3143         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
3144
3145 2007-08-24  Richard Guenther  <rguenther@suse.de>
3146
3147         PR middle-end/33166
3148         * tree-ssa.c (useless_type_conversion_p): Split into a
3149         recursive and a non-recursive part.
3150         (useless_type_conversion_p_1): New function.
3151         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
3152         from maybe_fold_offset_to_reference is trivially convertible
3153         to the desired type before doing the simplification.
3154
3155 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
3156
3157         * expr.c (store_expr): Optimize initialization of an array
3158         with STRING_CST.
3159         * expr.h (builtin_strncpy_read_str): New prototype.
3160         * builtins.c (builtin_strncpy_read_str): Remove prototype.
3161         No longer static.
3162
3163 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
3164
3165         PR middle-end/33157
3166         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
3167         field when initializing if_info structure.
3168
3169 2007-08-24  Richard Guenther  <rguenther@suse.de>
3170
3171         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
3172         dependencies.
3173         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
3174         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
3175         * tree-inline.c (inlinable_function_p): Fold in common parts of
3176         the cannot_inline_tree_fn langhook.
3177         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
3178         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
3179         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
3180         cannot_inline_tree_fn langhook.
3181         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
3182         cannot_inline_tree_fn member.
3183
3184 2007-08-24  Richard Guenther  <rguenther@suse.de>
3185
3186         * expr.c (get_inner_reference): Do computation of bitoffset
3187         from offset in a way we can detect overflow reliably.
3188
3189 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
3190
3191         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
3192
3193 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
3194
3195         * config/bfin/bfin.opt (mfast-fp): Add.
3196         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
3197         libbffastfp override libgcc if -mfast-fp.
3198         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
3199         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
3200         (Blackfin Options): Document -mfast-fp.
3201
3202 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
3203
3204         PR tree-optimization/32573
3205         PR middle-end/32946
3206         * tree-data-ref.c (initialize_data_dependence_relation): Clear
3207         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
3208         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
3209         (build_classic_dist_vector): Return false rather than true if
3210         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
3211         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
3212         returned false.  Don't call save_dist_v before calling
3213         build_classic_dist_vector_1.
3214         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
3215         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
3216         DDR_DIR_VECTS vectors.
3217
3218 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
3219
3220         * configure.ac (leb128): Modify sed statement to work with any
3221         binutils version string.
3222         * configure: Regenerate
3223
3224 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3225
3226         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
3227         Wrap in RTX_CODE macro guard.
3228         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
3229         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
3230         arm_mark_dllimport, arm_pe_encode_section_info,
3231         arm_pe_unique_section): Use ISO-C function declarations.
3232         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
3233         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
3234         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
3235         Likewise.
3236         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
3237         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
3238         defining.
3239         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
3240         warnings.
3241         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
3242         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
3243         (register_move_cost): Use ISO-C function declarations.
3244         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
3245         * config/score/score-protos.h (score_declare_object): Add
3246         ATTRIBUTE_PRINTF_4.
3247         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
3248         warnings.
3249         * final.c (profile_function): Avoid empty if-bodies.
3250         
3251         
3252         * calls.c (must_pass_in_stack_var_size,
3253         must_pass_in_stack_var_size_or_pad): Constify.
3254         * config/alpha/alpha-protos.h (function_value): Likewise.
3255         * config/alpha/alpha.c (alpha_return_in_memory,
3256         alpha_pass_by_reference, function_value,
3257         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
3258         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
3259         Likewise.
3260         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
3261         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
3262         TARGET_PROMOTE_PROTOTYPES): Likewise.
3263         * config/arm/arm-protos.h (arm_return_in_memory,
3264         arm_pad_arg_upward, arm_function_value): Likewise.
3265         * config/arm/arm.c (arm_pass_by_reference,
3266         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
3267         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
3268         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
3269         Likewise.
3270         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
3271         * config/avr/avr-protos.h (avr_function_value): Likewise.
3272         * config/avr/avr.c (avr_return_in_memory,
3273         gas_output_limited_string, gas_output_ascii, avr_function_value,
3274         avr_return_in_memory): Likewise.
3275         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
3276         * config/bfin/bfin.c (bfin_pass_by_reference,
3277         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
3278         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
3279         Likewise.
3280         * config/cris/cris.c (cris_pass_by_reference,
3281         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
3282         * config/crx/crx.c (crx_return_in_memory): Likewise.
3283         * config/darwin.c (function_base, machopic_function_base_name):
3284         Likewise.
3285         * config/fr30/fr30.c (fr30_must_pass_in_stack,
3286         TARGET_PROMOTE_PROTOTYPES): Likewise.
3287         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
3288         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
3289         * config/i386/i386-protos.h (ix86_return_in_memory,
3290         ix86_sol10_return_in_memory): Likewise.
3291         * config/i386/i386.c (ix86_function_value,
3292         ix86_function_sseregparm, ix86_must_pass_in_stack,
3293         type_natural_mode, classify_argument, examine_argument,
3294         construct_container, ix86_pass_by_reference, function_value_32,
3295         function_value_64, ix86_function_value_1, return_in_memory_32,
3296         return_in_memory_64, return_in_memory_ms_64,
3297         ix86_return_in_memory, ix86_sol10_return_in_memory,
3298         TARGET_PROMOTE_PROTOTYPES): Likewise.
3299         * config/ia64/ia64-protos.h (ia64_function_value,
3300         ia64_hpux_function_arg_padding): Likewise.
3301         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
3302         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
3303         ia64_hpux_function_arg_padding): Likewise.
3304         * config/iq2000/iq2000-protos.h (function_arg,
3305         iq2000_function_value): Likewise.
3306         * config/iq2000/iq2000.c (iq2000_return_in_memory,
3307         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
3308         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
3309         function_arg, iq2000_function_value): Likewise.
3310         * config/m32c/m32c-protos.h (m32c_function_value,
3311         m32c_promote_function_return): Likewise.
3312         * config/m32c/m32c.c (m32c_pass_by_reference,
3313         m32c_promote_prototypes, m32c_promote_function_return,
3314         m32c_function_value): Likewise.
3315         * config/m32r/m32r.c (m32r_return_in_memory,
3316         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
3317         m32r_in_small_data_p): Likewise.
3318         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
3319         Likewise.
3320         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
3321         m68hc11_function_arg_padding): Likewise.
3322         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
3323         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
3324         m68k_function_value): Likewise.
3325         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
3326         mcore_function_value): Likewise.
3327         * config/mcore/mcore.c (handle_structs_in_regs,
3328         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
3329         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
3330         mcore_num_arg_regs, mcore_function_value): Likewise.
3331         * config/mips/mips-protos.h (mips_pad_arg_upward,
3332         mips_function_value): Likewise.
3333         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
3334         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
3335         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
3336         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
3337         mips_function_value): Likewise.
3338         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
3339         Likewise.
3340         * config/mmix/mmix.c (mmix_pass_by_reference,
3341         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
3342         mmix_encode_section_info): Likewise.
3343         * config/mn10300/mn10300-protos.h (mn10300_function_value):
3344         Likewise.
3345         * config/mn10300/mn10300.c (mn10300_return_in_memory,
3346         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
3347         mn10300_function_value): Likewise.
3348         * config/mt/mt-protos.h (mt_function_value): Likewise.
3349         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
3350         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
3351         * config/pa/pa-protos.h (function_arg_padding, function_value,
3352         pa_return_in_memory): Likewise.
3353         * config/pa/pa.c (pa_pass_by_reference,
3354         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
3355         function_arg_padding, function_value, pa_return_in_memory):
3356         Likewise.
3357         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
3358         * config/rs6000/rs6000-protos.h (rs6000_function_value,
3359         function_arg_padding): Likewise.
3360         * config/rs6000/rs6000.c (rs6000_return_in_memory,
3361         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
3362         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
3363         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
3364         function_arg_padding, altivec_expand_dst_builtin,
3365         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
3366         altivec_init_builtins, rs6000_common_init_builtins,
3367         rs6000_function_value): Likewise.