OSDN Git Service

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