OSDN Git Service

5702f6727b11cde8d626945156faf73322c617bc
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2
3         PR target/40468
4         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
5         (output_cbranch): Use new functions.
6         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
7         Likewise.
8
9 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
10             Pat Haugen  <pthaugen@us.ibm.com>
11             Revital Eres <ERES@il.ibm.com>
12
13         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
14         Change some of the functions called by macros to being called
15         through a pointer, so debug functions can be inserted if
16         -mdebug=addr or -mdebug=cost. 
17         (rs6000_preferred_reload_class_ptr): Ditto.
18         (rs6000_secondary_reload_class_ptr): Ditto.
19         (rs6000_secondary_memory_needed_ptr): Ditto.
20         (rs6000_cannot_change_mode_class_ptr): Ditto.
21         (rs6000_secondary_reload_inner): Ditto.
22         (rs6000_legitimize_reload_address): Ditto.
23         (rs6000_legitimize_reload_address_ptr): Ditto.
24         (rs6000_mode_dependent_address): Ditto.
25         (rs6000_mode_dependent_address_ptr): Ditto.
26
27         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
28         function to return true if the mode allows reg + integer
29         addresses.
30         (virtual_stack_registers_memory_p): New function to return true if
31         the address refers to a virtual stack register.
32         (rs6000_legitimate_offset_address_p): Move code to say whether a
33         mode supports reg+int addressing to reg_offset_addressing_ok_p and
34         call it.
35         (rs6000_legitimate_address_p): Add checks for modes that only can
36         do reg+reg addressing.  Start adding VSX support.
37         (rs6000_legitimize_reload_address): Ditto.
38         (rs6000_legitimize_address): Ditto.
39         (rs6000_debug_legitimate_address_p): New debug functions for
40         -mdebug=addr and -mdebug=cost.
41         (rs6000_debug_rtx_costs): Ditto.
42         (rs6000_debug_address_costs): Ditto.
43         (rs6000_debug_adjust_cost): Ditto.
44         (rs6000_debug_legitimize_address): Ditto.
45         (rs6000_legitimize_reload_address_ptr): Point to call normal
46         function or debug function.  Make functions called via pointer
47         static.
48         (rs6000_mode_dependent_address_ptr): Ditto.
49         (rs6000_secondary_reload_class_ptr): Ditto.
50         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
51         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
52         into a friendlier error.
53         (rs6000_init_builtins): Add initial VSX support.
54         (rs6000_adjust_cost): Fix some spacing issues.
55
56         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
57         (REG_CLASS_NAMES): Ditto.
58         (REG_CLASS_CONTENTS): Ditto.
59         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
60         pointer, to add -mdebug=addr support.
61         (CANNOT_CHANGE_MODE_CLASS): Ditto.
62         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
63         -mdebug=addr support.
64         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
65         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
66         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
67
68         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
69         16-bit values.
70         (bswapsi*): Set attribute types for load/store.  Add combiner
71         patterns to eliminate zero extend on 64-bit.
72         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
73         stdbrx if the hardware supports those instructions.
74
75 2009-06-25  Ian Lance Taylor  <iant@google.com>
76
77         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
78         (Link Options): Document -static-libstdc++.
79
80 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
81
82         PR target/38731
83         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
84         DATA_ALIGNMENT instead.
85
86 2009-06-25  Richard Guenther  <rguenther@suse.de>
87
88         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
89         indirect references against the callused/escaped solutions.
90         (call_may_clobber_ref_p_1): Likewise.
91
92 2009-06-25  Martin Jambor  <mjambor@suse.cz>
93
94         PR tree-optimization/40493
95         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
96         (enum unscalarized_data_handling): New type.
97         (handle_unscalarized_data_in_subtree): Return what has been done.
98         (load_assign_lhs_subreplacements): Handle left flushes differently.
99         (sra_modify_assign): Use unscalarized_data_handling, simplified
100         condition determining whether to remove the statement.
101
102 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
103
104         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
105         excerpt - @ should be doubled for texinfo.
106
107 2009-06-24  Ian Lance Taylor  <iant@google.com>
108
109         * config/arc/arc.c: Include "df.h".
110         (arc_attribute_table): Make static.  Move higher in file.
111         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
112         (output_shift): Initialize n later to avoid warning.
113         * config/arm/arm.c (arm_attribute_table): Make static.  Move
114         higher in file.
115         * config/avr/avr.c (avr_attribute_table): Make static.  Move
116         higher in file.
117         (reg_class_tab): Change array type from int to enum reg_class.
118         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
119         LABEL_REF.
120         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
121         (lshrhi3_out): Likewise.
122         (class_likely_spilled_p): Change return type to bool.
123         (avr_rtx_costs): Use local code variable with enum type.
124         * config/avr/avr.md (movmemhi): Use add_reg_note.
125         (andhi3, andsi3): Don't use AS2 with "and".
126         (iorhi3, iorsi3): Don't use AS2 with "or".
127         * config/avr/avr-protos.h (class_likely_spilled_p): Update
128         declaration.
129         * config/crx/crx.c: Include "df.h".
130         (crx_attribute_table): Make static.
131         * config/m32r/m32r.c: Include "df.h".
132         (m32r_attribute_table): Make static.  Move higher in file.
133         (pop): Use add_reg_note.
134         (block_move_call): Change 0 to LCT_NORMAL in function call.
135         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
136         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
137         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
138         declare, not just when TREE_CODE is defined.
139         * config/m68hc11/m68hc11.c: Include "expr.h".
140         (m68hc11_attribute_table): Make static.  Move higher in file.
141         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
142         function call.
143         (m68hc11_register_indirect_p): Likewise.
144         (m68hc11_function_arg_padding): Change return type to enum
145         direction.
146         (emit_move_after_reload): Use add_reg_note.
147         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
148         (m68hc11_split_logical): Likewise.
149         (m68hc11_rtx_costs): Add local code_and outer_code variables with
150         enum type.
151         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
152         to VOIDmode in function call.
153         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
154         tree is defined.
155         (m68hc11_split_logical): Update declaration.
156         (m68hc11_function_arg_padding): Update declaration.
157         * config/mcore/mcore.c (regno_reg_class): Change form array of int
158         to array of enum reg_class.
159         (mcore_attribute_table): Make static.  Move higher in file.
160         (mcore_rtx_costs): Add cast to enum type.
161         * config/mcore/mcore.h (regno_reg_class): Update declaration.
162         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
163         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
164         in file.
165         * config/sh/predicates.md (trapping_target_operand): Rename and to
166         and_expr.
167         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
168         higher in file.
169         * config/spu/spu.c (spu_attribute_table): Make static.  Move
170         higher in file.
171         * config/v850/v850.c (v850_attribute_table): Make static.  Move
172         higher in file.
173         (v850_rtx_costs): Use local code with enum type.
174         (expand_epilogue): Add cast.
175         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
176
177 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
178
179         PR target/40515
180         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
181         -m2a-single-only and -m2a-nofpu.
182         * config/sh/sh.opt: Document m2a generates FPU code.  
183
184 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
185
186         * defaults.h (CAN_ELIMINATE): Provide default.
187         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
188         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
189         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
190         * config/spu/spu.h (CAN_ELIMINATE): Delete.
191         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
192         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
193         * config/cris/cris.h (CAN_ELIMINATE): Delete.
194         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
195         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
196         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
197
198 2009-06-24  DJ Delorie  <dj@redhat.com>
199
200         * mep-ext-cop.cpu: Fix copyright notice.
201         * mep-default: Fix copyright notice.
202         * mep-core: Fix copyright notice.
203         * mep: Fix copyright notice.
204         * mep-ivc2: Fix copyright notice.
205         * mep-c5: Fix copyright notice.
206
207 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
208
209         * doc/contrib.texi (Contributors): 
210
211 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
212         
213         PR middle-end/40501
214         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
215         src and dst operands if necessary.
216
217 2009-06-23  DJ Delorie  <dj@redhat.com>
218
219         Add MeP port.
220         * config.gcc: Add mep support.
221         * recog.c: Resurrect validate_replace_rtx_subexp().
222         * recog.h: Likewise.
223         * config/mep/: Add new port:
224         * config/mep/constraints.md: New file.
225         * config/mep/default.h: New file.
226         * config/mep/intrinsics.h: New file.
227         * config/mep/intrinsics.md: New file.
228         * config/mep/ivc2-template.h: New file.
229         * config/mep/mep-c5.cpu: New file.
230         * config/mep/mep-core.cpu: New file.
231         * config/mep/mep-default.cpu: New file.
232         * config/mep/mep-ext-cop.cpu: New file.
233         * config/mep/mep-intrin.h: New file.
234         * config/mep/mep-ivc2.cpu: New file.
235         * config/mep/mep-lib1.asm: New file.
236         * config/mep/mep-lib2.c: New file.
237         * config/mep/mep-pragma.c: New file.
238         * config/mep/mep-protos.h: New file.
239         * config/mep/mep-tramp.c: New file.
240         * config/mep/mep.c: New file.
241         * config/mep/mep.cpu: New file.
242         * config/mep/mep.h: New file.
243         * config/mep/mep.md: New file.
244         * config/mep/mep.opt: New file.
245         * config/mep/predicates.md: New file.
246         * config/mep/t-mep: New file.
247
248 2009-06-23  Ian Lance Taylor  <iant@google.com>
249
250         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
251         from loose_warn into c_loose_warn and from strict_warn into
252         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
253         --enable-build-with-cxx.  Set and substitute
254         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
255         * Makefile.in (CXXFLAGS): New variable.
256         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
257         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
258         the default is the same as $(STRICT_WARN).
259         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
260         (CXX): New variable.
261         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
262         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
263         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
264         (HOST_LIBS): New variable.
265         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
266         (ALL_CXXFLAGS): New variable.
267         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
268         * doc/install.texi (Configuration): Document
269         --enable-build-with-cxx, --with-stage1-ldflags,
270         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
271         * configure: Rebuild.
272
273 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
274
275         * config/arm/arm.c (arm_override_options): Fix braces and formatting
276         from previous commit.
277
278 2009-06-23  Ian Lance Taylor  <iant@google.com>
279
280         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
281
282 2009-06-23  Ian Lance Taylor  <iant@google.com>
283
284         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
285         with ATTRIBUTE_UNUSED.
286
287 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
288             Pat Haugen  <pthaugen@us.ibm.com>
289             Revital Eres  <eres@il.ibm.com>
290
291         * config.in (HAVE_AS_POPCNTD): Add default definition.
292         (HAVE_AS_LWSYNC): Ditto.
293
294         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
295         release number.
296         (gcc_cv_as_powerpc_cmpb): Ditto.
297         (gcc_cv_as_powerpc_dfp): Ditto.
298         (gcc_cv_as_powerpc_vsx): Ditto.
299         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
300         supporting the popcntd/lwsync instructions.
301         (gcc_cv_as_powerpc_lwsync): Ditto.
302         * configure: Regenerate.
303
304         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
305         -mcpu=native and -mcpu=power7.
306         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
307
308         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
309         a variable instead of a mask to reduce the number of mask bits.
310         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
311         (-mbit-word): Ditto.
312         (-mregnames): Ditto.
313         * config/rs6000/rs6000.opt (-mupdate): Ditto.
314         (-mfused-madd): Ditto.
315
316         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
317         2.06 instructions.
318         (-mvsx): New switch for VSX instructions.
319         (-misel): Move from a variable to a mask to allow it to be set by
320         -mcpu=.
321
322         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
323         function declaration to an array declaration.
324         (rs6000_hard_regno_nregs): New external array declaration.
325
326         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
327         files included by rs6000.md.
328
329         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
330         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
331
332         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
333         a target mask.
334         (rs6000_debug_reg): New -mdebug= variables.
335         (rs6000_debug_addr): Ditto.
336         (rs6000_debug_cost): Ditto.
337         (rs6000_pmode): New variable to hold Pmode.
338         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
339         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
340         calculated at compiler start.
341         (rs6000_hard_regno_nregs): Change function to an array which holds
342         HARD_REGNO_NREGS calculated at compiler start.
343         (rs6000_explicit_options): Delete isel field.
344         (rs6000_vector_unit): New array to hold which vector unit
345         supports arithmetic options for a given type.
346         (rs6000_vector_mem): New array to hold which vector unit supports
347         memory reference operations for a given type.
348         (rs6000_vector_align): New array to given the alignment of each
349         vector type.
350         (power7_cost): New basic costs for power7.
351         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
352         (rs6000_hard_regno_nregs_internal): New function, moved from
353         HARD_REGNO_NREGS, to calculate the number of registers each hard
354         register takes for each type.
355         (rs6000_debug_reg_print): New function for -mdebug=reg support.
356         (rs6000_debug_vector_unit): New array, map rs6000_vector to
357         string.
358         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
359         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
360         unit information here so it is calculated once at compiler startup
361         time.
362         (rs6000_override_options): Make -misel a target mask.  Add more
363         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
364         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
365         -mdebug=cost.
366         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
367         (rs6000_handle_option): Move -misel from variable to target mask.
368         (rs6000_builtin_mask_for_load): Add VSX support.
369         (rs6000_conditional_register_usage): Ditto.
370         (USE_ALTIVEC_FOR_ARG_P): Ditto.
371         (function_arg_boundary): Ditto.
372         (rs6000_expand_builtin): Ditto.
373         (def_builtin): Make abort message a little friendlier.
374         (rs6000_emit_int_cmove): Add support for 64-bit isel.
375
376         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
377         assembler support the popcntd instruction instead of a vsx
378         instruction to enable power7 support.
379         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
380         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
381         option to the assembler if -mcpu=native.
382         (ASM_CPU_NATIVE_SPEC): Ditto.
383         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
384         ISA 2.06 features.
385         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
386         the lwsync instruction.
387         (enum processor_type): Add PROCESSOR_POWER7.
388         (rs6000_debug_reg): New -mdebug= options.
389         (rs6000_debug_addr): Ditto.
390         (rs6000_debug_cost): Ditto.
391         (rs6000_isel): Delete.
392         (enum rs6000_vector): New enum to say what vector unit we have.
393         (VECTOR_UNIT_*): New macros to say which vector unit has
394         arithmetic operations for a given type.
395         (VECTOR_MEM_*): New macros to say which vector unit has memory
396         operations for a given type.
397         (TARGET_LDBRX): Whether the machine supports the ldbrx
398         instruction.
399         (TARGET_ISEL): Delete, -misel moved to be a mask.
400         (TARGET_ISEL64): New macro for 64-bit isel support.
401         (UNITS_PER_VSX_WORD): New macro.
402         (POINTER_SIZE): Move to be an external variable, rather than
403         calculating whether we are generating 32 ot 64-bit code.
404         (Pmode): Ditto.
405         (STACK_BOUNDARY): Add VSX support.
406         (LOCAL_ALIGNMENT): Ditto.
407         (SLOW_UNALIGNED_ACCESS): Ditto.
408         (VSX_REGNO_P): New macro for VSX support.
409         (VFLOAT_REGNO_P): Ditto.
410         (VINT_REGNO_P): Ditto.
411         (VLOGICAL_REGNO_P): Ditto.
412         (VSX_VECTOR_MODE): Ditto.
413         (VSX_SCALAR_MODE): Ditto.
414         (VSX_MODE): Ditto.
415         (VSX_MOVE_MODE): Ditto.
416         (VSX_REG_CLASS_P): Ditto.
417         (HARD_REGNO_NREGS): Instead of calling a function, use an array
418         lookup.
419         (UNITS_PER_SIMD_WORD): Add VSX support.
420         (MODES_TIEABLE_P): Ditto.
421         (STARTING_FRAME_OFFSET): Ditto.
422         (STACK_DYNAMIC_OFFSET): Ditto.
423         (EPILOGUE_USES): Ditto.
424         (REGNO_REG_CLASS): Move to array lookup.
425         (CLASS_MAX_NREGS): Ditto.
426         (rs6000_vector_reg_class): Add declaration.
427         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
428         overlap with the floating point and Altivec registers.
429
430         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
431
432         * config/rs6000/driver-rs6000.c (asm_names): New static array to
433         give the appropriate asm switches if -mcpu=native.
434         (host_detect_local_cpu): Add support for "asm".
435         (host_detect_local_cpu): Follow GNU code guidelines for name.
436
437         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
438         -mbit-word to a variable instead of being a target mask.
439
440         * config/rs6000/sync.md (lwsync): If the assembler supports it,
441         emit the lwsync instruction instead of emitting the instruction as
442         an integer constant.
443
444         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
445         fixuns_trundfsi2, move expander into rs6000.md.
446
447         * config/rs6000/rs6000.md (cpu): Add power7.
448         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
449         (logical predicate patterns): Change the single instruction
450         primitives that set CR0 to be fast_compare instead of compare.
451         (norsi*): Ditto.
452         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
453         (popcntddi2): Ditto.
454         (popcount<mode>): Ditto.
455         (floating multiply/add insns): Name the floating point
456         multiply/add insns.
457         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
458         (isel_unsigned_<mode>): Ditto.
459         (fixuns_trundfsi2): Move expander here from spe.md.
460         (smindi3): Define if we have -misel on 64-bit systems.
461         (smaxdi3): Ditto.
462         (umindi3): Ditto.
463         (umaxdi3): Ditto.
464
465 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
466
467         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
468         extra_objs.
469         * config/avr/avr.c (avr_current_device): New variable.
470         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
471         (avr_arch, mcu_type_s): Move to avr.h.
472         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
473         default_data_section_start fields.
474         (avr_arch): Moved from avr.c.
475         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
476         library_name fields.
477         (avr_current_device, avr_mcu_types, avr_arch_types,
478         avr_device_to_arch, avr_device_to_data_start,
479         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
480         (EXTRA_SPEC_FUNCTIONS): Define.
481         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
482         options mapping. Use device_to_arch and device_to_data_start insted.
483         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
484         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
485         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
486         * config/avr/driver-avr.c: New file.
487         * config/avr/avr-devices.c: New file.
488
489 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
490
491         * var-tracking.c (unshare_variable): Force initialized to
492         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
493         (set_variable_part): Likewise.
494         (struct variable_union_info): Remove pos_src field.
495         (vui_vec, vui_allocated): New variables.
496         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
497         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
498         == 1 use a simpler sorting algorithm.  Compute pos field right
499         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
500         Avoid quadratic comparison if !flag_var_tracking_uninit.
501         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
502         unshare_variable unconditionally.   
503         (dataflow_set_different_2): Removed.
504         (dataflow_set_different): Don't traverse second hash table.
505         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
506         unconditionally to var_reg_set or var_mem_set.
507         (emit_notes_in_bb): Likewise.
508         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
509         unshare_variable.
510         (emit_note_insn_var_location): Don't set initialized to
511         VAR_INIT_STATUS_INITIALIZED early.
512         (vt_finalize): Free vui_vec if needed, clear vui_vec and
513         vui_allocated.
514         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
515
516         * tree-object-size.c (addr_object_size): Instead of checking
517         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
518         are no FIELD_DECLs following it.
519
520 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
521
522         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
523         order to match bswaps with signed source operands.
524
525 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
526
527         * sdbout.c (sdbout_one_type): Fix braces in switch.
528
529 2009-06-23  Richard Guenther  <rguenther@suse.de>
530
531         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
532         member.
533         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
534         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
535         var_callused, callused_tree, var_storedanything, storedanything_tree,
536         var_integer, integer_tree): Remove global variables.
537         (new_var_info): Do not pass new id, append the new var to the
538         global variable vector.
539         (do_ds_constraint): Use is_global_var member of the variable-info.
540         (new_scalar_tmp_constraint_exp): Adjust.
541         (create_function_info_for): Likewise.
542         (create_variable_info_for): Likewise.
543         (find_what_var_points_to): Remove dead code.
544         (init_base_vars): Simplify.
545         (compute_points_to_sets): Adjust.
546
547 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
548
549         * combine.c (try_combine): Dump information about the insns we're
550         combining.
551
552 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
553
554         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
555         check when calling force_to_mode on TRUNCATE's operand.
556
557 2009-06-22  Ian Lance Taylor  <iant@google.com>
558
559         * config/rs6000/rs6000.opt: Move msched-epilog before
560         msched-prolog.
561
562 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
563
564         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
565
566 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
567
568         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
569         override library linkage flags such as -static-libgcc or
570         -shared-libgcc.
571
572 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
573
574         * config/m68k/m68k-devices.def: Add line for MCF5221x.
575
576 2009-06-22  Ian Lance Taylor  <iant@google.com>
577
578         * config/linux.opt: Put mglibc ahead of muclibc.
579
580         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
581         for duplicate decls.
582
583 2009-06-22  Matthias Klose  <doko@ubuntu.com>
584
585         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
586
587 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
588
589         PR objc/28050
590         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
591         instead of NULL if a parser error occurs.
592
593 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
594
595         * dwarf2out.c (dwarf2_debug_hooks): Initialize
596         non-DWARF2_DEBUGGING_INFO version.
597
598 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
599
600         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
601         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
602
603         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
604         (LIBGCC2_TF_CEXT): Define.
605         (TF_SIZE): Define.
606
607 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
608
609         PR target/40463
610         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
611
612 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
613
614         * config/arm/arm.c (arm_override_options): Disable
615         -mcaller-super-interworking and -mcallee-super-interworking.
616         * doc/invoke.texi (ARM Options): Document this.
617
618 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
619
620         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
621         * config/arm/constraints.md (j): New constraint for movw operands.
622         (N): Remove thumb2 meaning.
623         * config/arm/arm.md (*arm_movw): Delete.
624         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
625         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
626         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
627
628 2009-06-22  Martin Jambor  <mjambor@suse.cz>
629
630         PR tree-optimization/40492
631         * tree-sra.c (sra_modify_assign): Pass zero offsets to
632         build_ref_for_offset.
633
634 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
635
636         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
637         JUMP_TABLE_DATA_P predicates where applicable.
638         * auto-inc-dec.c: Ditto.
639         * builtins.c: Ditto.
640         * caller-save.c: Ditto.
641         * calls.c: Ditto.
642         * cfgcleanup.c: Ditto.
643         * cfglayout.c: Ditto.
644         * cfgrtl.c: Ditto.
645         * combine.c: Ditto.
646         * combine-stack-adj.c: Ditto.
647         * cse.c: Ditto.
648         * cselib.c: Ditto.
649         * dbxout.c: Ditto.
650         * df-scan.c: Ditto.
651         * dse.c: Ditto.
652         * dwarf2asm.c: Ditto.
653         * dwarf2out.c: Ditto.
654         * emit-rtl.c: Ditto.
655         * except.c: Ditto.
656         * explow.c: Ditto.
657         * expmed.c: Ditto.
658         * expr.c: Ditto.
659         * final.c: Ditto.
660         * function.c: Ditto.
661         * fwprop.c: Ditto.
662         * gcse.c: Ditto.
663         * genpreds.c: Ditto.
664         * genrecog.c: Ditto.
665         * ifcvt.c: Ditto.
666         * ira-costs.c: Ditto.
667         * ira-lives.c: Ditto.
668         * jump.c: Ditto.
669         * loop-iv.c: Ditto.
670         * lower-subreg.c: Ditto.
671         * modulo-sched.c: Ditto.
672         * optabs.c: Ditto.
673         * postreload.c: Ditto.
674         * print-rtl.c: Ditto.
675         * recog.c: Ditto.
676         * reginfo.c: Ditto.
677         * regmove.c: Ditto.
678         * reload1.c: Ditto.
679         * reload.c: Ditto.
680         * reorg.c: Ditto.
681         * rtlanal.c: Ditto.
682         * rtl.c: Ditto.
683         * sched-vis.c: Ditto.
684         * sdbout.c: Ditto.
685         * sel-sched-ir.c: Ditto.
686         * simplify-rtx.c: Ditto.
687         * targhooks.c: Ditto.
688         * var-tracking.c: Ditto.
689         * vmsdbgout.c: Ditto.
690
691 2009-06-22  Matthias Klose  <doko@ubuntu.com>
692
693         * Makefile.in (install-plugin): Always use DESTDIR.
694
695 2009-06-22  Olivier Hainque  <hainque@adacore.com>
696         
697         * config/pa/pa.c (output_call): Don't optimize post call jumps
698         into return address adjustments if the call may throw.
699
700 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
701
702         * arm.c (thumb1_output_casesi): New function.
703         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
704         optimizing for size or PIC.
705         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
706         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
707         (casesi): Handle Thumb-1 when optimizing for size or PIC.
708         (thumb1_casesi_internal_pic): New expand rule.
709         (thumb1_casesi_dispatch): New pattern.
710         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
711         thumb-1 mode.
712         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
713         in the text seciton when PIC or optimizing for size.
714         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
715         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
716         preservation properties of code.
717         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
718         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
719         (__gnu_thumb1_case_si): New function.
720         * t-arm (LIB1ASMSRC): Define here.
721         (LIB1ASMFUNCS): Add some common functions.
722         * t-arm-elf (LIB1ASMSRC): Delete.
723         (LIB1ASMFUNCS): Append to existing set.
724         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
725         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
726         * t-symbian (LIB1ASMFUNCS): Likewise.
727         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
728         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
729
730 2009-06-21  Richard Guenther  <rguenther@suse.de>
731
732         PR tree-optimization/38729
733         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
734         to loops with a single exit if -fno-expensive-optimizations.
735
736 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
737
738         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
739         (dataflow_set): Change vars type from htab_t to shared_hash.
740         (shared_hash_pool, empty_shared_hash): New variables.
741         (vars_clear): Removed.
742         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
743         shared_hash_find_slot_unshare, shared_hash_find_slot,
744         shared_hash_find_slot_noinsert, shared_hash_find): New
745         static inlines.
746         (shared_hash_unshare, shared_hash_destroy): New functions.
747         (unshare_variable): Unshare set->vars if shared, use
748         shared_hash_htab.
749         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
750         (get_init_value, find_src_set_src, dump_dataflow_set,
751         clobber_variable_part, emit_notes_for_differences): Use
752         shared_hash_htab.
753         (dataflow_set_init): Remove second argument, set vars to
754         empty_shared_hash instead of creating a new htab.
755         (dataflow_set_clear): Call shared_hash_destroy and set vars
756         to empty_shared_hash instead of calling vars_clear.
757         (dataflow_set_copy): Don't call vars_copy, instead just share
758         the src htab with dst.
759         (variable_union): Use shared_hash_*, use initially NO_INSERT
760         lookup if set->vars is shared.  Don't keep slot cleared before
761         calling unshare_variable.  Unshare set->vars if needed.
762         Even ->refcount == 1 vars must be unshared if set->vars is shared
763         and var needs to be modified.
764         (variable_canonicalize): New function.
765         (dataflow_set_union): If dst->vars is empty, just share src->vars
766         with dst->vars and traverse with variable_canonicalize to canonicalize
767         and unshare what is needed.
768         (dataflow_set_different): If old_set and new_set use the same shared
769         htab, they aren't different.  If number of htab elements is different,
770         htabs are different.  Use shared_hash_*.
771         (dataflow_set_destroy): Call shared_hash_destroy instead of
772         htab_delete.
773         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
774         second argument to dataflow_set_init.
775         (vt_initialize): Likewise.  Initialize shared_hash_pool and
776         empty_shared_hash, move bb in/out initialization afterwards.
777         Use variable_htab_free instead of NULL as changed_variables del hook.
778         (variable_was_changed): Change type of second argument to pointer to
779         dataflow_set.  When inserting var into changed_variables, bump
780         refcount.  Unshare set->vars if set is shared htab and slot needs to
781         be cleared.
782         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
783         lookup if set->vars is shared.  Unshare set->vars if needed.
784         Even ->refcount == 1 vars must be unshared if set->vars is shared
785         and var needs to be modified.  Adjust variable_was_changed caller.
786         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
787         vars must be unshared if set->vars is shared and var needs to be
788         modified.  Adjust variable_was_changed caller.
789         (emit_note_insn_var_location): Don't pool_free var.
790         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
791         instead of 1.
792         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
793         free_alloc_pool on shared_hash_pool.
794
795 2009-06-20  Anthony Green  <green@moxielogic.com>
796
797         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
798         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
799
800 2009-06-20  Richard Guenther  <rguenther@suse.de>
801
802         * tree-ssa-structalias.c (find_func_aliases): For memset use
803         a constraint from NULL if we memset to zero.
804         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
805         we explicitly handle that do not read from memory.
806         (call_may_clobber_ref_p_1): Properly handle builtins that may
807         set errno.
808
809 2009-06-20  Richard Guenther  <rguenther@suse.de>
810
811         PR tree-optimization/40495
812         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
813         (new_scalar_tmp_constraint_exp): New function.
814         (process_constraint): Do not create temporary decls.
815         (process_all_all_constraints): Likewise.
816         (handle_const_call): Likewise.
817         (create_function_info_for): Do not set decl.
818
819 2009-06-19  Ian Lance Taylor  <iant@google.com>
820
821         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
822         (rs6000_attribute_table): Make static; move before use.
823
824 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
825
826         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
827         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
828         Propagate the TREE_READONLY flag without overwriting it.
829         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
830         Propagate the TREE_READONLY flag onto the result.
831         (process_call_operands): Move around.  Use correct constant value.
832
833 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
834
835         PR target/40482
836         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 
837         32 bits.
838         * config/arm/arm.md: Likewise.
839
840 2009-06-19  Ian Lance Taylor  <iant@google.com>
841
842         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
843         to GIMPLE_ERROR_MARK.
844
845         * c-typeck.c (build_conditional_expr): Add op1_original_type and
846         op2_original_type parameters.  Warn about using different enum
847         types.
848         * c-parser.c (c_parser_conditional_expression): Pass original
849         types to build_conditional_expr.
850         * c-tree.h (build_conditional_expr): Update declaration.
851
852 2009-06-19  Ian Lance Taylor  <iant@google.com>
853
854         * config/i386/i386.c (ix86_function_specific_save): Test that
855         fields match values, rather than testing the values are in a
856         certain range.
857
858 2009-06-19  Richard Guenther  <rguenther@suse.de>
859
860         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
861         ADDR_EXPR pointers.
862         (ptr_derefs_may_alias_p): Likewise.
863         (ptr_deref_may_alias_ref_p_1): New function.
864         (ptr_deref_may_alias_ref_p): Likewise.
865         (ref_maybe_used_by_call_p_1): Handle builtins that are not
866         covered by looking at the ESCAPED solution.
867         (call_may_clobber_ref_p_1): Likewise.
868         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
869         Handle NULL_TREE offset.  Do not produce redundant constraints.
870         (process_all_all_constraints): New helper function.
871         (do_structure_copy): Use it.
872         (handle_lhs_call): Likewise.
873         (find_func_aliases): Handle some builtins with pointer arguments
874         and/or return values explicitly.
875
876 2009-06-19  Ian Lance Taylor  <iant@google.com>
877
878         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
879
880 2009-06-19  Ian Lance Taylor  <iant@google.com>
881
882         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
883
884 2009-06-19  Ian Lance Taylor  <iant@google.com>
885
886         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
887         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
888         version.
889
890         * c-decl.c (finish_decl): If -Wc++-compat, warn about
891         uninitialized const.
892
893 2009-06-19  Ian Lance Taylor  <iant@google.com>
894
895         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
896         all uses.
897
898         * c-decl.c (in_struct, struct_types): Remove.
899         (struct c_binding): Add in_struct field.
900         (c_binding_ptr): Define type, along with VEC.
901         (struct c_struct_parse_info): Define.
902         (struct_parse_info): New static variable.
903         (bind): Initialize in_struct field.
904         (start_struct): Remove enclosing_in_struct and
905         enclosing_struct_types parameters.  Add
906         enclosing_struct_parse_info parameter.  Change all callers.  Set
907         struct_parse_info rather than in_struct and struct_types.
908         (grokfield): If -Wc++-compat and there is a symbol binding for the
909         field name, set the in_struct flag and push it on the
910         struct_parse_info->fields vector.
911         (warn_cxx_compat_finish_struct): New static function.
912         (finish_struct): Remove enclosing_in_struct and
913         enclosing_struct_types parameters.  Add
914         enclosing_struct_parse_info parameter.  Change all callers.  Don't
915         set C_TYPE_DEFINED_IN_STRUCT here.  Call
916         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
917         parameter.  Only push on struct_types if warn_cxx_compat.
918         (finish_enum): Only push on struct_types if warn_cxx_compat.
919         (declspecs_add_type): Add loc parameter.  Change all callers.
920         Change all error calls to error_at.  Pass loc, not input_location,
921         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
922         defined in a struct.  If -Wc++-compat and parsing a struct, record
923         that a typedef name was used.
924         * c-parser.c (c_parser_declspecs): Get location to pass to
925         declspecs_add_type.
926         (c_parser_struct_or_union_specifier): Update calls to start_struct
927         and finish_struct.
928         * c-tree.h (struct c_struct_parse_info): Declare.
929         (finish_struct, start_struct): Update declarations.
930         (declspecs_add_type): Update declaration.
931
932 2009-06-19  Ian Lance Taylor  <iant@google.com>
933
934         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
935         variable with an anonymous type.
936
937 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
938
939         * see.c: Remove for real.
940
941 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
942
943         * optabs.h (enum optab_index): Add new OTI_significand.
944         (significand_optab): Define corresponding macro.
945         * optabs.c (init_optabs): Initialize significand_optab.
946         * genopinit.c (optabs): Implement significand_optab using
947         significand?f2 patterns.
948         * builtins.c (expand_builtin_mathfn): Handle
949         BUILT_IN_SIGNIFICAND{,F,L}.
950         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
951         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
952
953         * config/i386/i386.md (significandxf2, significand<mode>2): New
954         expanders to implement significandf, significand and significandl
955         built-ins as inline x87 intrinsics.
956
957 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
958
959         * config/avr/avr.c (avr_override_options): Remove setting value of
960         PARAM_INLINE_CALL_COST.
961
962 2009-06-18  Richard Henderson  <rth@redhat.com>
963
964         PR 40488
965         * tree-pass.h (TDF_ASMNAME): New.
966         * tree-dump.c (dump_options): Add asmname.
967         * doc/invoke.texi: Document it.
968
969         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
970         (dump_decl_name): ...here.
971         (dump_function_name): New flags arg; mind TDF_ASMNAME.
972         (dump_generic_node): Update dump_function_name calls.
973         (print_call_name): New flags arg; update all dump calls.
974         * diagnostic.h (print_call_name): Update.
975         * gimple-pretty-print.c (dump_gimple_call): Update.
976
977 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
978
979         PR target/40470
980         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
981
982 2009-06-18  Diego Novillo  <dnovillo@google.com>
983
984         * doc/plugins.texi: Document plugin_is_GPL_compatible.
985         * plugin.c (str_license): Declare.
986         (try_init_one_plugin): Assert that the symbol
987         'plugin_is_GPL_compatible' exists.
988
989 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
990
991         * see.c: Remove.
992         * Makefile.in (OBJS-common): Remove see.o.
993         (see.o): Remove.
994         * common.opt (fsee): Mark as preserved for backward compatibility.
995         * opts.c (common_handle_option): Add OPT_fsee to the backward 
996         compatibility section.
997         * passes.c (init_optimization_passes, pass_see): Remove pass.
998         * timevar.def (TV_SEE): Remove.
999         * tree-pass.h (pass_see): Remove declaration.
1000         * doc/invoke.texi (-fsee): Remove documentation.
1001         
1002 2009-06-18  Martin Jambor  <mjambor@suse.cz>
1003
1004         * tree-sra.c: Include statistics.h
1005         (sra_stats): New variable.
1006         (sra_initialize): Clear sra_stats.
1007         (create_access_replacement): Increment sra_stats.replacements.
1008         (get_access_replacement): Do not return twice.
1009         (analyze_all_variable_accesses): Increment statistics counter by the
1010         number of scalarized aggregates.
1011         (generate_subtree_copies): Increment sra_stats.subtree_copies.
1012         (sra_modify_expr): Increment sra_stats.exprs.
1013         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
1014         (sra_modify_assign): Increment sra_stats.exprs,
1015         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
1016         (perform_intra_sra): Update statistics counters.
1017         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
1018
1019 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
1020
1021         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
1022         (arm_scalar_mode_supported_p): New function.
1023
1024 2009-06-18  Paul Brook  <paul@codesourcery.com>
1025             Sandra Loosemore  <sandra@codesourcery.com>
1026
1027         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
1028         (__extendhfsf2, __truncsfhf2): Define.
1029         * config/arm/fp16.c: New file.
1030         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
1031         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
1032
1033 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
1034
1035         * doc/extend.texi (Half-Precision): New section.
1036         * doc/invoke.texi (Option Summary): List -mfp16-format.
1037         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
1038         * config/arm/arm.opt (mfp16-format=): New.
1039         * config/arm/arm.c: Include intl.h.
1040         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
1041         (TARGET_INVALID_RETURN_TYPE): Redefine.
1042         (TARGET_PROMOTED_TYPE): Redefine.
1043         (TARGET_CONVERT_TO_TYPE): Redefine.
1044         (arm_fp16_format): Define.
1045         (all_fpus): Add entry for neon-fp16.
1046         (fp_model_for_fpu): Likewise.
1047         (struct fp16_format): Declare.
1048         (all_fp16_formats): Define.
1049         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
1050         functions.
1051         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
1052         and no ldrh.
1053         (arm_legitimate_index_p): Treat HFmode like HImode.
1054         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
1055         (coproc_secondary_reload_class): Special-case HFmode.
1056         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
1057         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
1058         (arm_init_fp16_builtins): New.
1059         (arm_init_builtins): Call it.
1060         (arm_invalid_parameter_type): New.
1061         (arm_invalid_return_type): New.
1062         (arm_promoted_type): New.
1063         (arm_convert_to_type).
1064         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
1065         format.
1066         (arm_emit_fp16_const): New function.
1067         (arm_mangle_type): Mangle __fp16 as "Dh".
1068         * config/arm/arm.h (TARGET_VFPD32): Make it know about
1069         FPUTYPE_NEON_FP16.
1070         (TARGET_NEON_FP16): New.
1071         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
1072         (enum fputype): Add FPUTYPE_NEON_FP16.
1073         (enum arm_fp16_format_type): Declare.
1074         (arm_fp16_format): Declare.
1075         (LARGEST_EXPONENT_IS_NORMAL): Define.
1076         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
1077         * config/arm/arm-modes.def (HFmode): Define.
1078         * config/arm/vfp.md: (*movhf_vfp): New.
1079         (extendhfsf2): New.
1080         (truncsfhf2): New.
1081         * config/arm/arm.md: (fpu): Add neon_fp16.
1082         (floatsihf2, floatdihf2): New.
1083         (fix_trunchfsi2, fix_trunchfdi2): New.
1084         (truncdfhf2): New.
1085         (extendhfdf2): New.
1086         (movhf): New.
1087         (*arm32_movhf): New.
1088         (*thumb1_movhf): New.
1089         (consttable_2): Add check for HFmode constants.
1090         (consttable_4): Handle HFmode constants.
1091
1092 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
1093
1094         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
1095
1096 2009-06-17  Olivier Hainque  <hainque@adacore.com>
1097
1098         * collect2.c (main): Use CONST_CAST2 to perform char ** to
1099         const char ** conversion in AIX specific section.
1100         
1101 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
1102
1103         * config/i386/i386.c (ix86_special_builtin_type): Remove
1104         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
1105         (bdesc_special_args): Updated.
1106         (ix86_init_mmx_sse_builtins): Likewise.
1107         (ix86_expand_special_args_builtin): Likewise.
1108
1109 2009-06-17  Richard Henderson  <rth@redhat.com>
1110
1111         * tree-pretty-print.c (maybe_dump_asm_name): New.
1112         (dump_decl_name): Use it.
1113         (PRINT_FUNCTION_NAME): Merge into...
1114         (dump_function_name): ... here.  Use maybe_dump_asm_name.
1115
1116 2009-06-17  Cary Coutant  <ccoutant@google.com>
1117
1118         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
1119         Change caller.
1120         * debug.c (struct gcc_debug_hooks): Change placeholder for
1121         source_line hook.
1122         (debug_nothing_int_charstar_int): Replaced by...
1123         (debug_nothing_int_charstar_int_bool): ...this.
1124         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
1125         source_line prototype.
1126         (debug_nothing_int_charstar_int): Replaced by...
1127         (debug_nothing_int_charstar_int_bool): ...this.
1128         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
1129         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
1130         Output is_stmt operand when necessary.
1131         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
1132         (notice_source_line): Add is_stmt parameter.
1133         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
1134         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
1135         Change callers.
1136         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
1137         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
1138
1139 2009-06-17  Ian Lance Taylor  <iant@google.com>
1140
1141         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
1142         Change all uses.
1143         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
1144         call uses.
1145
1146 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
1147
1148         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
1149         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
1150         tree_strip_sign_nop_conversions and
1151         tree_ssa_strip_useless_type_conversions rather than stripping
1152         the operations here.
1153         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
1154         Declare them.
1155         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
1156         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
1157         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
1158         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
1159         functions.
1160
1161 2009-06-17  Michael Eager  <eager@eagercon.com>
1162
1163         * config/rs6000/constraints.md (register_constraint "d"): New.
1164         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
1165         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
1166         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
1167         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
1168         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
1169         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
1170         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
1171         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
1172         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
1173         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
1174         __fctiwz): Same.
1175         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
1176         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
1177         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
1178         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
1179         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1180         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
1181         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
1182         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
1183         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
1184         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
1185         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
1186         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
1187         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
1188         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
1189
1190 2009-06-16  Ian Lance Taylor  <iant@google.com>
1191
1192         * profile.c (total_num_never_executed): Don't define.
1193         (compute_branch_probabilities): Don't count or print
1194         num_never_executed.
1195         (init_branch_prob): Don't set total_num_never_executed.
1196         (end_branch_prob): Don't print total_num_never_executed.
1197
1198 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
1199
1200         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
1201
1202 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
1203
1204         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
1205         (nabstd2_fpr): Same.
1206
1207 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
1208
1209         * expr.c (expand_assignment): Change complex type check.
1210
1211 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
1212
1213         * doc/plugins.texi (Building GCC plugins): Added new section. 
1214
1215 2009-06-17  Ian Lance Taylor  <iant@google.com>
1216
1217         * c-pch.c (get_ident): Don't set size of templ array.
1218         (pch_init): Don't set size of partial_pch array.
1219
1220         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
1221         string constant to intialize an array whose size is the length of
1222         the string.
1223
1224 2009-06-17  Richard Guenther  <rguenther@suse.de>
1225
1226         PR tree-optimization/40389
1227         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
1228         to addressable types.
1229         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
1230
1231 2009-06-17  Richard Guenther  <rguenther@suse.de>
1232
1233         PR middle-end/40460
1234         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
1235         if there is no evolution of left in the loop bail out.
1236         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
1237         chrec_fold_multiply.
1238
1239 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
1240             Janis Johnson  <janis187@us.ibm.com>
1241
1242         PR target/39254
1243         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
1244         for the symbol ref of a constant that is the source of a move
1245         - nor for any other not-obvious-label-ref constants.
1246
1247 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
1248
1249         * plugin.c (position_pass): Skip newly inserted pass during list
1250         traversal to avoid repeated insertion.
1251
1252 2009-06-16  Ian Lance Taylor  <iant@google.com>
1253
1254         * vec.h (VEC_stack_alloc): Define different version if
1255         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
1256         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
1257         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
1258         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
1259
1260 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
1261
1262         * config.gcc (extra_headers): Add ia32intrin.h for x86.
1263
1264         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
1265         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
1266         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
1267         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
1268         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
1269         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
1270         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
1271         (bdesc_special_args): Add __builtin_ia32_rdtsc and
1272         __builtin_ia32_rdtscp.
1273         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
1274         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
1275         and __builtin_ia32_rorhi.
1276         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
1277         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
1278         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
1279         (ix86_expand_args_builtin): Likewise.
1280         (ix86_expand_special_args_builtin): Likewise.
1281
1282         * config/i386/i386.md (UNSPECV_RDTSCP): New.
1283         (UNSPECV_RDTSC): Likewise.
1284         (UNSPECV_RDPMC): Likewise.
1285         (*bsr): Renamed to ...
1286         (bsr): This
1287         (*bsr_rex64): Renamed to ...
1288         (bsr_rex64): This.
1289         (rdpmc): New.
1290         (*rdpmc): Likewise.
1291         (*rdpmc_rex64): Likewise.
1292         (rdtsc): Likewise.
1293         (*rdtsc): Likewise.
1294         (*rdtsc_rex64): Likewise.
1295         (rdtscp): Likewise.
1296         (*rdtscp): Likewise.
1297         (*rdtscp_rex64): Likewise.
1298
1299         * config/i386/ia32intrin.h: New.
1300
1301         * config/i386/x86intrin.h: Include <ia32intrin.h>.
1302
1303 2009-06-16  Ian Lance Taylor  <iant@google.com>
1304
1305         * ira-build.c (copy_info_to_removed_store_destinations):
1306         Initialize parent_a.
1307
1308 2009-06-16  Ian Lance Taylor  <iant@google.com>
1309
1310         * c-decl.c (grokdeclarator): Change size_varies to bool.
1311
1312 2009-06-16  Ian Lance Taylor  <iant@google.com>
1313
1314         * sel-sched.c: Make forward declarations of move_op_hooks and
1315         fur_hooks explicitly extern.
1316
1317 2009-06-16  Ian Lance Taylor  <iant@google.com>
1318
1319         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
1320         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
1321
1322 2009-06-16  Ian Lance Taylor  <iant@google.com>
1323
1324         * resource.c (mark_referenced_resources): Change
1325         include_delayed_effects parameter to bool.  Change all callers.
1326         (mark_end_of_function_resources): Likewise.
1327         * reorg.c (insn_references_resource_p): Likewise.
1328         (insn_sets_resource_p): Likewise.
1329         * resource.h (mark_referenced_resources): Update declaration.
1330         (mark_end_of_function_resources): Update declaration.
1331
1332 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
1333
1334         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
1335
1336 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
1337
1338         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
1339         GCC can bootstrap on AIX with GNU Binutils 2.20.
1340
1341 2009-06-16  Ian Lance Taylor  <iant@google.com>
1342
1343         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
1344
1345 2009-06-16  Ian Lance Taylor  <iant@google.com>
1346
1347         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
1348         inline, not extern inline.
1349         (exact_log2): Likewise.
1350         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
1351         test CLZ_HWI.
1352         (exact_log2): Likewise, but don't test CTZ_HWI.
1353
1354 2009-06-16  Ian Lance Taylor  <iant@google.com>
1355
1356         * bitmap.c (bitmap_clear): Don't declare as inline.
1357         * gimple.c (gimplify_assign): Likewise.
1358         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
1359         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
1360         (sched_scan_info): Remove duplicate definition.
1361
1362 2009-06-16  Ian Lance Taylor  <iant@google.com>
1363
1364         * c-common.c (skip_evaluation): Don't define.
1365         (c_inhibit_evaluation_warnings): Define global variable.
1366         (overflow_warning): Check c_inhibit_evaluation_warnings rather
1367         than skip_evaluation.
1368         (convert_and_check, warn_for_div_by_zero): Likewise.
1369         * c-common.h (skip_evaluation): Don't declare.
1370         (c_inhibit_evaluation_warnings): Declare.
1371         * c-parser.c (c_parser_typeof_specifier): Set
1372         c_inhibit_evaluation_warnings rather than skip_evaluation.
1373         (c_parser_conditional_expression): Likewise.
1374         (c_parser_binary_expression): Likewise.
1375         (c_parser_sizeof_expression): Likewise.
1376         (c_parser_alignof_expression): Likewise.
1377         * c-typeck.c (build_indirect_ref): Check
1378         c_inhibit_evaluation_warnings rather than skip_evaluation.
1379         (build_conditional_expr, build_binary_op): Likewise.
1380
1381 2009-06-16  Richard Guenther  <rguenther@suse.de>
1382
1383         * tree-ssa-alias.c (is_escape_site): Remove.
1384         * tree-ssa-alias.h (enum escape_type): Remove.
1385         (is_escape_site): Likewise.
1386         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
1387         via casts and asms without deferring to is_escape_site.
1388
1389 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
1390
1391         PR middle-end/40446
1392         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
1393         use gen_lowpart if op0 has complex mode.
1394
1395 2009-06-16  Richard Guenther  <rguenther@suse.de>
1396
1397         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
1398         variables add them to ESCAPED.
1399         (find_func_aliases): Do not make all indirectly stored values escaped.
1400
1401 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
1402
1403         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
1404         make_decl_one_only.
1405
1406 2009-06-16  Martin Jambor  <mjambor@suse.cz>
1407
1408         PR tree-optimization/40432
1409         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
1410         check whether we need to force gimple register operand.
1411
1412 2009-06-16  Martin Jambor  <mjambor@suse.cz>
1413
1414         PR tree-optimization/40413
1415         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
1416         build_ref_for_offset.
1417         (propagate_subacesses_accross_link): Fix a typo in a comment.
1418
1419 2009-06-16  Ira Rosen  <irar@il.ibm.com>
1420
1421         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
1422         with additional parameter.
1423         * tree-vectorizer.h (enum vect_def_type): Add new value
1424         vect_nested_cycle.
1425         (enum vect_relevant): Add comments.
1426         (vect_is_simple_reduction): Add new argument.
1427         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
1428         Detect nested cycles.
1429         (vect_is_simple_reduction): Update documentation, add an argument to
1430         distinguish inner-loop reduction from nested cycle, detect nested
1431         cycles, fix printings and indentation, don't swap operands in case
1432         of nested cycle.
1433         (get_initial_def_for_reduction): Handle subtraction.
1434         (vect_create_epilog_for_reduction): Add new argument to specify
1435         reduction variable.
1436         (vect_finalize_reduction): Handle subtraction, fix comments.
1437         (vectorizable_reduction): Handle nested cycles. In case of nested
1438         cycle keep track of the reduction variable position. Call 
1439         vect_is_simple_reduction with additional parameter. Use original 
1440         statement code in reduction epilogue for nested cycle. Call
1441         vect_create_epilog_for_reduction with additional parameter.
1442         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
1443         inner-loop vectorization.
1444         (vect_recog_widen_sum_pattern): Likewise.
1445         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
1446         and reductions.
1447         (vect_mark_stmts_to_be_vectorized): Likewise.
1448         (vect_get_vec_def_for_operand): Handle nested cycles.
1449
1450 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1451
1452         * doc/invoke.texi (Debugging Options): Fix option index entries
1453         for -fdump-statistics, -frandom-seed add entries for
1454         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
1455         (FRV Options): Fix entries for -mTLS, -mtls.
1456         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
1457         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
1458         (M68hc1x Options): Fix @itemx for -mnominmax.
1459         (MCore Options): Fix entry for -mno-lsim.
1460         (MMIX Options): Fix entry for -mabi=mmixware.
1461         (PDP-11 Options): Fix entry for -mbcopy-builtin.
1462
1463 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
1464
1465         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
1466         Mention the plugin mode of gengtype.
1467         * doc/gty.texi (Source Files Containing Type Information): Likewise.
1468         * gengtype.c: Updated copyright.
1469         (plugin_files, nb_plugin_files) Added new static variables.
1470         (measure_input_list) Care about plugin_files.
1471         (write_rtx_next): Added early return in plugin mode.
1472         (create_file): Updated copyright year in generated file. Added
1473         asserts.
1474         (oprintf): Added early return if NULL outf.
1475         (get_output_file_with_visibility): Care of plugin_files.
1476         (get_output_file_name): May return null.
1477         (write_local): Added early return.
1478         (put_mangled_filename): Ditto.
1479         (finish_root_table): Added check for base_files.
1480         (write_roots): Care about null when plugins.
1481         (main): Added plugin mode.
1482
1483 2009-06-15  Ian Lance Taylor  <iant@google.com>
1484
1485         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
1486         * gcov.c (read_count_file): Add braces around variables declared
1487         before label.
1488
1489         * c.opt (Wjump-misses-init): New warning.
1490         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
1491         -Wall and -Wc++-compat if not already set.
1492         (c_common_post_options): Clear warn_jump_misses_init if it was not
1493         set.
1494         * c-decl.c (struct c_binding): Change type field to a union with
1495         new label field.  Make it the first field in the struct.  Update
1496         references to type to use u.type instead.
1497         (struct c_spot_bindings): Define.
1498         (struct c_goto_bindings): Define.
1499         (c_goto_bindings_p): Define, along with VECs.
1500         (struct c_label_vars): Define.
1501         (struct c_scope): Add has_label_bindings field.
1502         (bind_label, set_spot_bindings): New static functions.
1503         (decl_jump_unsafe, update_spot_bindings): New static functions.
1504         (update_label_decls): New static function.
1505         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
1506         Update binding u.label field to shadowed field.
1507         (c_binding_start_stmt_expr): New function.
1508         (c_binding_end_stmt_expr): New function.
1509         (pushdecl): Don't call c_begin_vm_scope.
1510         (make_label): Add defining and p_label_vars parameters.  Change
1511         all callers.
1512         (lookup_label): Correct test for whether a label has not yet been
1513         defined.  Call bind_label rather than bind.
1514         (warn_about_goto): New static function.
1515         (lookup_label_for_goto): New function.
1516         (declare_label): Call bind_label rather than bind.
1517         (check_earlier_gotos): New static function.
1518         (define_label): Don't give errors about jumping into statement
1519         expressions or scopes of variably modified types.  Call
1520         set_spot_bindings and check_earlier_gotos.  Call bind_label
1521         instead of bind.  Don't set label_context_stack_se or
1522         label_context_stack_vm.
1523         (c_get_switch_bindings): New function.
1524         (c_release_switch_bindings): New function.
1525         (c_check_switch_jump_warnings): New function.
1526         (start_function): Don't set label_context_stack_se or
1527         label_context_stack_vm.
1528         (finish_function): Likewise.
1529         * c-typeck.c (label_context_stack_se): Don't define.
1530         (label_context_stack_vm): Don't define.
1531         (c_finish_goto_label): Call lookup_label_for_goto rather than
1532         lookup_label.  Don't give errors about jumping into a statement
1533         expression or the scope of a variably modified type.  Don't set
1534         label_context_stack_se or label_context_stack_vm.
1535         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
1536         fields.  Add bindings field.
1537         (c_start_case): Don't set deleted fields.  Set bindings field.
1538         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
1539         or blocked_vm.  Call c_check_switch_jump_warnings.
1540         (c_finish_case): Don't test blocked_stmt_expr field.  Call
1541         c_release_switch_bindings.
1542         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
1543         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
1544         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
1545         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
1546         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
1547         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
1548         (c_begin_vm_scope, c_end_vm_scope): Don't define.
1549         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
1550         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
1551         (C_DECL_UNJUMPABLE_VM): Don't define.
1552         (C_DECL_UNDEFINABLE_VM): Don't define.
1553         (struct c_label_list): Don't define.
1554         (struct c_label_context_se): Don't define.
1555         (struct c_label_context_vm): Don't define.
1556         (struct c_spot_bindings): Declare.
1557         (c_bindings_start_stmt_expr): Declare.
1558         (c_bindings_end_stmt_expr): Declare.
1559         (lookup_label_for_goto): Declare.
1560         (c_get_switch_bindings, c_release_switch_bindings): Declare.
1561         (c_check_switch_jump_warnings): Declare.
1562         (label_context_stack_se, label_context_stack_vm): Don't declare.
1563         (c_finish_goto_label): Update declaration.
1564         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
1565         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
1566         (Warning Options): Document -Wjump-misses-init.
1567
1568 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
1569
1570         * tree-object-size.c (addr_object_size): Fix a pasto in the last
1571         change.
1572
1573 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
1574
1575         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
1576
1577 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
1578
1579         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
1580
1581 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
1582
1583         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
1584
1585 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
1586
1587         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
1588         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
1589         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
1590         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
1591         * dwarf2asm.c (dw2_force_const_mem): Update call to
1592         make_decl_one_only.
1593         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
1594         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
1595         * langhooks.c (lhd_comdat_group): Remove.
1596         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
1597         * tree.h (DECL_COMDAT_GROUP): New.
1598         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
1599         (tree_decl_with_vis): Add comdat_group. Remove one_only.
1600         (make_decl_one_only): Change signature.
1601         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
1602         make_decl_one_only.
1603         (make_decl_one_only): Change signature.
1604         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
1605
1606 2009-06-15  Richard Guenther  <rguenther@suse.de>
1607
1608         PR middle-end/40439
1609         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
1610
1611 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1612
1613         * tree-ssa-math-opts.c: Remove extra divide.
1614
1615 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1616
1617         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
1618
1619 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1620
1621         * passes.c: Add bswap pass.
1622         * tree-pass.h: Add pass_optimize_bswap declaration.
1623         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
1624         Include rtl.h, expr.h and optabs.h for optab_handler check.
1625         (struct symbolic_number, pass_optimize_bswap): New definition.
1626         (do_shift_rotate, verify_symbolic_number_p): New functions.
1627         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
1628         (gate_optimize_bswap): New function.
1629         * tree.c (widest_int_cst_value): New function.
1630         * tree.h (widest_int_cst_value): Prototype added.
1631
1632 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
1633
1634         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
1635         REG_EQUAL/REG_EQUIV notes.
1636
1637 2009-06-14  Richard Guenther  <rguenther@suse.de>
1638
1639         PR middle-end/40389
1640         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
1641         has its address taken if NRV was applied and it is addressable.
1642         * tree-ssa-structalias.c (get_constraint_for_address_of): New
1643         function split out from ...
1644         (get_constraint_for_1): ... here.
1645         (handle_rhs_call): Use it to mark the return slot escaped if
1646         it is addressable and NRV was applied.
1647
1648 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
1649
1650         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
1651         Change first argument type to location_t.
1652         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
1653         Do not set input_location.
1654         Use loc instead of input_location throughout.
1655
1656 2009-06-13  Richard Guenther  <rguenther@suse.de>
1657
1658         PR tree-optimization/40421
1659         * tree-predcom.c (should_unroll_loop_p): Remove.
1660         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
1661
1662 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
1663
1664         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1665         Add location argument.
1666
1667 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
1668
1669         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
1670         build_decl.
1671         * config/s390/s390.c (s390_build_builtin_va_list): Same.
1672         (s390_gimplify_va_arg): Pass location to create_artificial_label.
1673         * config/spu/spu-protos.h: Add location to
1674         spu_resolve_overloaded_builtin.
1675         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
1676         spu_build_builtin_va_list.
1677         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
1678         argument.  Pass location to build_function_call_vec.
1679         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
1680         build_decl.
1681         (emit_fpu_switch): Same.
1682         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
1683         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
1684         to build_decl and create_artificial_label.
1685         (xtensa_gimplify_va_arg_expr): Same.
1686         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
1687         (xstormy16_gimplify_va_arg_expr): Same.
1688         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
1689         * config/arm/arm.c (arm_build_builtin_va_list): Same.
1690         * config/mips/mips.c (mips_build_builtin_va_list): Same.
1691         (mips16_build_function_stub): Same.
1692         (mips16_build_call_stub): Same.
1693
1694 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
1695
1696         PR target/40327
1697         * arm/constraints.md (Pa, Pb): New constraints.
1698         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
1699         split pattern to deal with them.
1700
1701 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
1702
1703         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
1704         fix index entry for -Xpreprocessor.
1705
1706 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
1707
1708         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1709         Add location argument to build_decl call.
1710         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
1711         (rs6000_init_builtins): Same.
1712         (spe_init_builtins): Same.
1713         (rs6000_gimplify_va_arg): Add location argument to
1714         create_artificial_label call.
1715
1716 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
1717
1718         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
1719         * combine-stack-adj.c (pass_stack_adjustments): Use it.
1720         * Makefile.in: Fix GGC dependency for gcse.o.
1721
1722 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
1723
1724         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
1725         * gimple-pretty-print.c (dump_gimple_stmt): Same.
1726         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
1727         created.
1728         * c-parser.c (c_parser_binary_expression): Use current column while
1729         building binary operations.
1730         * common.opt (fshow-column): Enable by default.
1731         * tree-vrp.c (check_array_ref): Use warning_at.
1732         (check_array_bounds): Use location from call back if expr has no
1733         location.
1734         * tree.h: Add location argument to maybe_fold_*.
1735         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
1736         (maybe_fold_offset_to_array_ref): Add location argument and use it.
1737         (maybe_fold_offset_to_component_ref): Same.
1738         (maybe_fold_offset_to_reference): Same.
1739         (maybe_fold_offset_to_address): Same.
1740         (maybe_fold_stmt_indirect): Same.
1741         (maybe_fold_stmt_addition): Same.
1742         (fold_stmt_r): Pass location to maybe_fold_*.
1743         (fold_gimple_assign): Same.
1744         * c-tree.h: Add location argument to finish_decl,
1745         default_function_array_conversion, store_init_value.
1746         * c-decl.c (define_label): Use error_at.
1747         (c_make_fname_decl): Pass location to finish_decl.
1748         (finish_decl): New location argument.
1749         (build_compound_literal): Pass location to store_init_value.
1750         (grokdeclarator): Pass location to finish_decl.
1751         (grokfield): Same.
1752         * c-typeck.c (array_to_pointer_conversion): New location argument.
1753         (function_to_pointer_conversion): Same.
1754         (default_function_array_conversion): Same.
1755         (parser_build_unary_op): Pass location to overflow_warning.
1756         (parser_build_binary_op): Same.  Use warning_at.
1757         (build_unary_op): Pass location to array_to_pointer_conversion.
1758         (build_c_cast): Pass location to digest_init.
1759         (build_modify_expr): New location argument.
1760         (convert_for_assignment): Same.
1761         (store_init_value): Same.
1762         (digest_init): Same.
1763         (output_init_element): Pass location to digest_init and
1764         array_to_pointer_conversion.
1765         (c_finish_return): Pass location to convert_for_assignment.
1766         * gimplify.c (gimplify_conversion): Pass location to
1767         maybe_fold_offset_to_address.
1768         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
1769         to maybe_fold_stmt_addition.
1770         * c-omp.c (c_finish_omp_atomic): Pass new location to
1771         build_modify_expr.
1772         (c_finish_omp_for): Same.
1773         * c-common.c (overflow_warning): New argument.
1774         * c-common.h: New argument to build_modify_expr, overflow_warning.
1775         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
1776         finish_decl.
1777         (c_parser_initializer): Pass location to
1778         default_function_array_conversion.
1779         (c_parser_initelt): Same.
1780         (c_parser_initval): Same.
1781         (c_parser_asm_operands): Same.
1782         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
1783         (c_parser_conditional_expression): Same.
1784         (c_parser_binary_expression): Add location info to stack.  Use it.
1785         (c_parser_unary_expression): Pass location to
1786         default_function_array_conversion, parser_build_unary_op,
1787         build_indirect_ref, c_parser_postfix_expression_after_primary.
1788         (c_parser_postfix_expression_after_primary): New location argument.
1789         Use it.
1790         (c_parser_expression_conv): Pass location to
1791         default_function_array_conversion.
1792         (c_parser_expr_list): Same.
1793         (c_parser_omp_atomic): Same.
1794         (c_parser_omp_for_loop): Same.
1795         * c-tree.h: (struct c_declarator): Add comment to id_loc.
1796         (build_array_declarator): New argument.
1797         * c-decl.c (build_array_declarator): Add location argument.
1798         (grokdeclarator): Set id_loc for cdk_array.
1799         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
1800         build_array_declarator.
1801         * tree.c (build_omp_clause): Add location argument.
1802         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
1803         (OMP_CLAUSE_LOCATION): New macro.
1804         (struct tree_omp_clause): Add location field.
1805         (build_omp_clause): Add argument.
1806         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
1807         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
1808         build_omp_clause.
1809         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
1810         (cp_parser_omp_clause_collapse): Same.
1811         (cp_parser_omp_clause_default): Same.
1812         (cp_parser_omp_clause_if): Same.
1813         (cp_parser_omp_clause_nowait): Same.
1814         (cp_parser_omp_clause_num_threads): Same.
1815         (cp_parser_omp_clause_ordered): Same.
1816         (cp_parser_omp_clause_schedule): Same.
1817         (cp_parser_omp_clause_untied): Same.
1818         (cp_parser_omp_for_loop): Same.
1819         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
1820         * c-tree.h (c_start_case): Add location argument.
1821         (c_process_expr_stmt): Same.
1822         (c_finish_goto_*): Same.
1823         * tree-parloops.c (initialize_reductions): Pass location to
1824         build_omp_clause.
1825         (create_parallel_loop): Same.
1826         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
1827         (gfc_trans_omp_reduction_list): Same.
1828         (gfc_trans_omp_clauses): Same.
1829         (gfc_trans_omp_do): Same.
1830         * c-typeck.c (c_finish_goto_label): Same.
1831         (c_finish_goto_ptr): New location argument.
1832         (c_start_case): Same.
1833         (emit_side_effect_warnings): Same.
1834         (c_process_expr_stmt): Same.
1835         (c_finish_stmt_expr): Same.
1836         (c_finish_omp_clauses): Use error_at instead of error.
1837         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
1838         build_omp_clause.
1839         * c-omp.c (c_split_parallel_clauses): New location argument.
1840         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
1841         to build_omp_clause.
1842         (convert_local_reference_stmt): Same.
1843         (convert_gimple_call): Same.
1844         * c-common.h (c_split_parallel_clauses): New argument.
1845         * c-parser.c (c_parser_statement_after_labels): Pass location to
1846         c_finish_goto_label.
1847         (c_parser_switch_statement): Pass location to c_start_case.
1848         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
1849         and c_process_expr_stmt.
1850         (c_parser_omp_variable_list): Add location argument.
1851         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
1852         (c_parser_omp_clause_default): Same.
1853         (c_parser_omp_clause_if): Same.
1854         (c_parser_omp_clause_num_threads): Same.
1855         (-c_parser_omp_clause_ordered): Same.
1856         (c_parser_omp_clause_reduction): Pass location to
1857         c_parser_omp_variable_list.
1858         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
1859         (c_parser_omp_clause_untied): Same.
1860         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
1861         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
1862
1863         * c-tree.h (check_for_loop_decls, undeclared_variable,
1864         build_component_ref, build_array_ref, build_external_ref,
1865         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
1866         build_conditional_expr, build_compound_expr, c_cast_expr,
1867         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
1868         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
1869         argument.
1870         * c-semantics.c (build_stmt): Same.
1871         (build_case_label): Same.
1872         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
1873         (undeclared_variable): New argument.
1874         (make_label): Same.
1875         (lookup_label): Pass location on down.
1876         (define_label): Same.
1877         (finish_decl): Same.
1878         (build_compound_literal): Same.
1879         (finish_struct): Same.
1880         (finish_function): Do not set location here.
1881         (check_for_loop_decls): New argument.
1882         * tree.c (save_expr): Set location.
1883         (build_empty_stmt): New argument.
1884         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
1885         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
1886         * builtins.c (gimplify_va_arg_expr): Use locations.
1887         (expand_builtin_sync_operation): Same.
1888         * c-typeck.c (build_component_ref): New argument.
1889         (build_array_ref): Same.
1890         (build_external_ref): Same.
1891         (c_expr_sizeof_expr): Same.
1892         (c_expr_sizeof_type): Same.
1893         (parser_build_unary_op): Same.
1894         (build_conditional_expr): Same.
1895         (build_compound_expr): Pass location on down.
1896         (build_compound_expr): New argument.
1897         (build_c_cast): Same.
1898         (c_cast_expr): Same.
1899         (build_asm_expr): Same.
1900         (c_finish_return): Same.
1901         (c_process_expr_stmt): Pass location on down.
1902         (c_finish_stmt_expr): New argument.
1903         (push_clenaup): Same.
1904         (c_finish_omp_parallel): Same.
1905         (c_finish_omp_task): Same.
1906         * gimplify.c (gimplify_call_expr): Pass location on down.
1907         * c-omp.c (c_finish_omp_master): New argument.
1908         (c_finish_omp_critical): Same.
1909         (c_finish_omp_ordered): Same.
1910         (c_finish_omp_barrier): Same.
1911         (-c_finish_omp_taskwait): Same.
1912         (c_finish_omp_atomic): Same.
1913         (c_finish_omp_flush): Same.
1914         * tree-inline.c (copy_tree_body_r): Pass location on down.
1915         (inline_forbidden_p): Remove use of input_location.
1916         * c-gimplify.c (c_build_bind_expr): New argument.
1917         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
1918         (c_sizeof_or_alignof_type): New argument.
1919         (c_alignof_expr): Same.
1920         (build_va_arg): Same.
1921         (c_add_case_label): Same.
1922         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
1923         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
1924         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
1925         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
1926         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
1927         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
1928         New argument.
1929         * stub-objc.c (objc_build_selector_expr): Same.
1930         (objc_build_throw_stmt): Same.
1931         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
1932         (c_parser_initelt): Same.
1933         (c_parser_compound_statement): Same.
1934         (c_parser_compound_statement_nostart): Same.
1935         (c_parser_label): Same.
1936         (c_parser_statement_after_labels): Same.
1937         (c_parser_if_body): Same.
1938         (c_parser_else_body): Same.
1939         (c_parser_if_statement): Same.
1940         (c_parser_switch_statement): Same.
1941         (c_parser_while_statement): Same.
1942         (c_parser_do_statement): Same.
1943         (c_parser_for_statement): Same.
1944         (c_parser_asm_statement): Same.
1945         (c_parser_conditional_expression): Same.
1946         (c_parser_binary_expression): Same.
1947         (c_parser_cast_expression): Same.
1948         (c_parser_unary_expression): Same.
1949         (c_parser_sizeof_expression): Same.
1950         (c_parser_alignof_expression): Same.
1951         (c_parser_postfix_expression): Same.
1952         (c_parser_expression): Same.
1953         (c_parser_objc_receiver): Same.
1954         (c_parser_omp_variable_list): Same.
1955         (c_parser_omp_structured_block): Same.
1956         (c_parser_omp_atomic): New argument.
1957         (c_parser_omp_barrier): Same.
1958         (c_parser_omp_critical): Same.
1959         (c_parser_omp_flush): Pass location on down.
1960         (c_parser_omp_for_loop): New argument.
1961         (c_parser_omp_for): Same.
1962         (c_parser_omp_master): Same.
1963         (c_parser_omp_ordered): Same.
1964         (c_parser_omp_sections_scope): Same.
1965         (c_parser_omp_sections): Same.
1966         (c_parser_omp_parallel): Same.
1967         (c_parser_omp_single): Same.
1968         (c_parser_omp_task): Same.
1969         (c_parser_omp_taskwait): Pass location on down.
1970         (c_parser_omp_construct): Same.
1971         (c_parser_omp_threadprivate): Same.
1972         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
1973         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
1974         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
1975         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
1976         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
1977         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
1978         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
1979         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
1980         config/i386/i386.c, stmt.c:
1981         Add location argument to the following function definitions and/or
1982         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
1983         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
1984         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
1985         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
1986         do_case, c_finish_bc_stmt, build_compound_literal,
1987         build_function_call.
1988         * c-decl.c (build_compound_literal): Add location argument.
1989         Make all diagnostic calls use location.
1990         (start_struct): Same.
1991         (finish_struct): Same.
1992         (start_enum): Same.
1993         (build_enumerator): Same.
1994         (start_function): Same.
1995         (grokdeclarator): Make all diagnostic calls use location.
1996         (store_parm_decls_oldstyle): Same.
1997         * c-typeck.c (build_function_call): Add location argument.
1998         Make all diagnostic calls use location.
1999         (do_case): Same.
2000         (c_finish_bc_stmt): Same.
2001         * tree-nested.c (get_trampoline_type): Add argument.
2002         Pass location to build_decl.
2003         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
2004         * rtl.h (RTL_LOCATION): New.
2005         * c-common.c (c_add_case_label): Add location argument.
2006         Make all diagnostic calls use location.
2007         * c-common.h: Add location argument to make_fname_decl, do_case,
2008         c_add_case_label, build_function_call, resolve_overloaded_builtin.
2009         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
2010         Set it appropriately for every case.  Pass enum_loc to start_enum
2011         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
2012         parser_xref_tag.
2013         (c_parser_struct_or_union_specifier): Save location.  Use it for
2014         start_struct, finish_struct, and parser_xref_tag.
2015
2016 2009-06-12  Ian Lance Taylor  <iant@google.com>
2017
2018         * fold-const.c (fold_unary): Rename local variable and to and_expr.
2019
2020         * c-opts.c (c_common_handle_option): For -Wc++-compat set
2021         cpp_opts->warn_cxx_operator_names.
2022
2023 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2024
2025         PR tree-opt/38865
2026         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
2027         is returns NULL and OP is a VCE, look through the VCE.
2028
2029 2009-06-12  Ian Lance Taylor  <iant@google.com>
2030
2031         PR bootstrap/40430
2032         * collect2.c (main): Use CONST_CAST2 in code inside #if
2033         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
2034
2035 2009-06-12  Joey Ye  <joey.ye@intel.com>
2036
2037         PR middle-end/39146
2038         * cfgexpand.c (get_decl_align_unit): Update
2039         max_used_stack_slot_alignment with align instead of
2040         stack_alignment_needed.
2041
2042         * function.c (assign_stack_local_1): Update
2043         max_used_stack_slot_alignment with alignment_in_bits instead
2044         of stack_alignment_needed.
2045         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
2046         here.
2047
2048 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
2049
2050         * dwarf2out.c (last_var_location_insn): New variable.
2051         (dwarf2out_end_epilogue): Clear last_var_location_insn.
2052         (dwarf2out_var_location): Don't record anything after last real
2053         insn.  Only change labels if there were any real instructions
2054         in between last note and this one, or if changed sections.
2055
2056 2009-06-11  Richard Henderson  <rth@redhat.com>
2057
2058         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
2059         note when storing the frame pointer in a register.
2060         (FRP): Don't redefine to nothing for epilogue.
2061         (alpha_expand_epilogue): Mark register and sp restores.
2062         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
2063
2064         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
2065         when gen_lowpart is needed.
2066
2067 2009-06-11  Richard Henderson  <rth@redhat.com>
2068
2069         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
2070
2071         * dwarf2out.c (need_data_align_sf_opcode): New.
2072         (div_data_align): Move earlier.
2073         (def_cfa_1, reg_save): Use it.
2074
2075 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
2076
2077         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
2078         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
2079         (ix86_handle_option): Handle OPT_mcrc32.
2080         (ix86_target_string): Add -mcrc32.
2081         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
2082
2083         * config/i386/i386.h (TARGET_CRC32): New.
2084
2085         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
2086         (sse4_2_crc32di): Likewise.
2087
2088         * config/i386/i386.opt (mcrc32): New.
2089
2090         * doc/invoke.texi: Document -mcrc32.
2091
2092 2009-06-11  Richard Henderson  <rth@redhat.com>
2093
2094         * common.opt (gdwarf-): Accept a version number.
2095         * doc/invoke.texi (gdwarf-): Update docs.
2096         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
2097         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
2098         version level, and record it.
2099
2100         * dwarf2.h (DW_CIE_VERSION): Remove.
2101         * dwarf2out.c (DWARF_VERSION): Remove.
2102         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
2103         (output_call_frame_info): Use CIE version 3 for dwarf3,
2104         or if the return register column is out of range for version 1.
2105         (dwarf_stack_op_name): Add all dwarf3 values.
2106         (DEBUG_PUBTYPES_SECTION): New.
2107         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
2108         encoding change for dwarf3.
2109         (output_die) [dw_val_class_die_ref]: Likewise.
2110         (output_compilation_unit_header): Emit correct version for dwarf3.
2111         (output_line_info): Likewise.
2112         (output_pubnames): Update for DWARF_VERSION removal.
2113         (output_aranges): Likewise.
2114         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
2115         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
2116         (dwarf2out_finish): Likewise.
2117
2118 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
2119
2120         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
2121         in r148403.
2122
2123 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
2124
2125         PR c/39252
2126         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
2127         * builtins.c (expand_builtin_unreachable): New function.
2128         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
2129         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
2130         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
2131         successors.
2132         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
2133         searching for missing barriers.
2134
2135 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2136
2137         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
2138         when -fprofile-generate* was passed.
2139         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2140
2141 2009-06-11  Anthony Green  <green@moxielogic.com>
2142
2143         * config/moxie/moxie.md: Define length attribute for all instructions.
2144         (rCC): Define.
2145         (*b<cond:code>): Support limited branch ranges for new PC-relative
2146         branch instructions.
2147         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
2148
2149 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
2150
2151         * config/i386/i386.c (min_insn_size): Use get_attr_length
2152         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
2153         For __asm return 0.
2154
2155         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
2156         instead of emit_insn_before.
2157
2158 2009-06-10  Ian Lance Taylor  <iant@google.com>
2159
2160         PR bootstrap/40408
2161         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
2162         GIMPLE_SWITCH.
2163
2164 2009-06-10  Revital Eres  <eres@il.ibm.com>
2165
2166         * passes.c (init_optimization_passes): Reschedule
2167         predictive-commoning pass before complete unroll pass.
2168
2169 2009-06-10  Martin Jambor  <mjambor@suse.cz>
2170
2171         * cgraph.c (cgraph_node_can_be_local_p): New function.
2172         (cgraph_make_node_local): New function.
2173         * cgraph.h (cgraph_node_can_be_local_p): Declare.
2174         (cgraph_make_node_local): Declare.
2175
2176 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
2177
2178         * tree.h (tree_base): Add packed_flag and user_align fields.
2179         Decrease size of spare field.
2180         (TYPE_USER_ALIGN): Use user_align from tree_base.
2181         (DECL_USER_ALIGN): Likewise.
2182         (TYPE_PACKED): Use packed_flag from tree_base.
2183         (DECL_PACKED): Likewise.
2184         (tree_type): Delete packed_flag and user_align fields.  Widen
2185         precision field.  Widen mode field and shuffle fields to align
2186         mode on an 8-bit boundary.
2187         (tree_decl_common): Delete decl_flag_1 and user_align fields.
2188         Renumber decl_flag_* fields.  Fix comments.  Widen
2189         decl_common_unused field.
2190         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
2191         (DECL_EXTERNAL): Likewise.
2192         (DECL_BIT_FIELD): Likewise.
2193         (DECL_NONADDRESSABLE_P): Likewise.
2194         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
2195         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
2196
2197 2009-06-10  Ian Lance Taylor  <iant@google.com>
2198
2199         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
2200         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
2201         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
2202         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
2203         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
2204         DEF_VEC_ALLOC_FUNC_P.
2205         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
2206         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
2207         DEF_VEC_ALLOC_FUNC_O.
2208         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
2209         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
2210         DEF_VEC_ALLOC_FUNC_I.
2211         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
2212         (vec_stack_p_reserve_exact_1): Declare.
2213         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
2214         (vec_stack_free): Declare.
2215         (VEC_stack_alloc): Define.
2216         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
2217         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
2218         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
2219         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
2220         for void_p.
2221         (stack_vecs): New static variable.
2222         (vec_stack_p_reserve_exact_1): New function.
2223         (vec_stack_o_reserve_1): New static function.
2224         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
2225         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
2226         (vec_stack_free): New function.
2227         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
2228         (VEC_df_ref_stack_alloc): Define.
2229         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
2230         DEF_VEC_ALLOC_P_STACK.
2231         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
2232         (struct df_collection_rec): Change _vec fields to VEC.  Remove
2233         _use fields.
2234         (df_free_collection_rec): Adjust for new fields.
2235         (df_insn_rescan): Use new df_collection_rec fields.
2236         (df_notes_rescan, df_canonize_collection_rec): Likewise.
2237         (df_ref_create_structure, df_ref_record): Likewise.
2238         (df_get_conditional_uses, df_get_call_refs): Likewise.
2239         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
2240         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
2241         (df_record_exit_block_uses, df_bb_verify): Likewise.
2242         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
2243         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
2244         Remove count parameter.  Change return type to void.  Change all
2245         callers.
2246         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
2247         Remove count parameter.  Change return type to void.  Change all
2248         callers.
2249         (df_install_refs): Change old_vec parameter to VEC.  Remove count
2250         parameter.  Change all callers.
2251         (df_install_mws): Change old_vec parameter to VEC.  Remove count
2252         parameter.  Change all callers.
2253         (df_refs_verify): Change new_rec parameter to VEC.  Change call
2254         callers.
2255         (df_mws_verify): Likewise.
2256
2257 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
2258
2259         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
2260
2261 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
2262
2263         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
2264
2265 2009-06-10  Anthony Green  <green@moxielogic.com>
2266
2267         * config/moxie/crti.asm: New file.
2268         * config/moxie/crtn.asm: New file.
2269         * config/moxie/moxie.c: New file.
2270         * config/moxie/moxie.h: New file.
2271         * config/moxie/sfp-machine.h: New file.
2272         * config/moxie/moxie-protos.h: New file.
2273         * config/moxie/t-moxie: Created.
2274         * config/moxie/t-moxie-softfp: Created.
2275         * config/moxie/moxie.md: Created.
2276         * config/moxie/constraints.md: Created.
2277         * config.gcc: Add moxie support.
2278         * doc/md.texi (Machine Constraints): Add moxie constraints.
2279         * doc/contrib.texi (Contributors): Mention moxie port.
2280         * doc/install.texi (Specific): Mention the moxie port.
2281
2282 2009-06-09  Ian Lance Taylor  <iant@google.com>
2283
2284         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
2285         compiling with C++.
2286         * optabs.c (optab_table): Only use designated initializers if
2287         HAVE_DESIGNATED_INITIALIZERS is defined.
2288         (convert_optab_table): Likewise.
2289         (init_optabs): Always call init_insn_codes if
2290         HAVE_DESIGNATED_INITIALIZERS is not defined.
2291
2292 2009-06-09  Ian Lance Taylor  <iant@google.com>
2293
2294         * targhooks.c (default_builtin_vectorized_function): Change fn
2295         parameter to unsigned int.
2296         (default_builtin_vectorized_conversion): Change code parameter to
2297         unsigned int.
2298         (default_builtin_reciprocal): Change fn parameter to unsigned int.
2299         * targhooks.h: Update declarations.
2300         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
2301         parameter to unsigned int.
2302
2303         * c-typeck.c (comptypes_check_enum_int): New static function.
2304         (comptypes_internal): Add enum_and_int_p parameter.  Change all
2305         callers.
2306         (comp_target_types): Add location parameter.  Change all callers.
2307         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
2308         Change all callers.
2309         (function_types_compatible_p, type_lists_compatible_p): Likewise.
2310         (build_conditional_expr): Add colon_loc parameter.  Change all
2311         callers.
2312         (convert_for_assignment): Add location parameter.  Change all callers.
2313         * c-parser.c (c_parser_conditional_expression): Pass location of
2314         colon to build_conditional_expr.
2315         * c-tree.h (build_conditional_expr): Update declaration.
2316
2317 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
2318
2319         * graphite.c: Revert previous patch.
2320
2321 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
2322
2323         PR bootstrap/40103
2324         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
2325
2326 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
2327
2328         * tree-ssa-loop-prefetch.c
2329         (loop_prefetch_arrays): Fixed a portability problem in printf format
2330         string.
2331
2332 2009-06-09  Martin Jambor  <mjambor@suse.cz>
2333
2334         PR tree-optimization/40351
2335         * tree-sra.c (propagate_subacesses_accross_link): Check that a
2336         refrence to a potential artifical subaccess can be constructed.
2337
2338 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2339
2340         * config/sh/sh-protos.h (sh_optimization_options): Declare.
2341         (sh_override_options): Likewise.
2342         * config/sh/sh.c: Include params.h.
2343         (sh_optimization_options): New.
2344         (sh_override_options): Likewise.
2345         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
2346         (OVERRIDE_OPTIONS): Use sh_override_options.
2347
2348 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
2349
2350         * dwarf2out.c (emit_cfa_remember): New variable.
2351         (add_fde_cfi): If emit_cfa_remember, recurse to add
2352         DW_CFA_remember_state first.
2353         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
2354         instead just set emit_cfa_remember.
2355
2356 2009-06-08  Jan Hubicka  <jh@suse.cz>
2357
2358         PR debug/40126
2359         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
2360
2361 2009-06-08  Jan Hubicka  <jh@suse.cz>
2362
2363         PR middle-end/39834
2364         * cgraphunit.c (save_inline_function_body): Do not copy transform
2365         hooks for saved inline bodies.
2366         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
2367         for given function.
2368
2369 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
2370
2371         * jump.c (returnjump_p): Handle delayed branches.  Add missing
2372         function comment.
2373
2374 2009-06-08  Jan Hubicka  <jh@suse.cz>
2375
2376         PR middle-end/40102
2377         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
2378         original node might've been modified.
2379         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
2380
2381 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
2382
2383         * tree-object-size.c (addr_object_size): Add OSI argument.
2384         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
2385         (compute_builtin_object_size, expr_object_size): Adjust callers.
2386         (plus_stmt_object_size): Call addr_object_size instead of
2387         compute_builtin_object_size.
2388
2389 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
2390             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2391         
2392         * tree-ssa-loop-prefetch.c 
2393         (gather_memory_references): Introduced a counter for the number of 
2394         memory references.
2395         (anything_to_prefetch_p): Introduced a counter for the number of 
2396         prefetches.
2397         (is_loop_prefetching_profitable): New function with a cost model 
2398         for prefetching.
2399         (loop_prefetch_arrays): Use the new cost model to determine if 
2400         prefetching is profitable.
2401         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
2402         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2403         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
2404         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2405         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
2406         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2407         
2408 2009-06-08  Michael Matz  <matz@suse.de>
2409
2410         PR debug/40012
2411         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
2412         partitions use the same.
2413         (expand_one_var): Deal with DECL_RTL sometimes begin set also
2414         for basevars of SSA_NAMEs.
2415         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
2416         to not expand them twice.
2417         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
2418         multiple places.
2419
2420 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
2421
2422         * common.opt (fcompare-debug=, fcompare-debug-second): New.
2423         (fdump-final-insns=, gtoggle): New.
2424         * doc/invoke.texi: Document them.
2425         * final.c (rest_of_clean_state): Dump final insn stream.
2426         * gcc.c (invoke_as): Hook in -fcompare-debug.
2427         (static_spec_functions): Add compare-debug-dump-opt,
2428         compare-debug-self-opt and compare-debug-auxbase-opt.
2429         (compare_debug, compare_debug_second, compare_debug_opt): New.
2430         (switches_debug_check, n_switches_debug_check): New.
2431         (debug_auxbase_opt, debug_check_temp_file): New.
2432         (process_command): Handle -fno-compare-debug, -fcompare-debug and
2433         -fcompare-debug=*.
2434         (do_self_spec): Handle arguments after switches.
2435         (do_spec_1): Add .gk extension to temp file basenames for compare.
2436         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
2437         (cc1_options): Use it instead of normal auxbase computation for
2438         the second compare-debug compilation.
2439         (compare_files): New.
2440         (main): Set up and implement compare debug mode.
2441         (compare_debug_dump_opt_spec_function): New.
2442         (compare_debug_self_opt_spec_function): New.
2443         (compare_debug_auxbase_opt_spec_function): New.
2444         * toplev.c (process_options): Handle flag_gtoggle,
2445         flag_dump_final_insns.
2446         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
2447         during -fcompare-debug-second compilation.
2448
2449 2009-06-07  Ian Lance Taylor  <iant@google.com>
2450
2451         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
2452         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
2453
2454         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
2455         with no default node.  Change warning with %H to warning_at.
2456         Don't clear warn_switch around case checking.
2457         * doc/invoke.texi (Warning Options): Clarify distinction between
2458         -Wswitch and -Wswitch-enum.
2459
2460 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2461
2462         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
2463
2464 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2465
2466         * gbl-ctors.h: Add header guard.
2467
2468 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2469
2470         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
2471         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
2472         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
2473         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
2474         prototypes for removed functions.
2475         (expressions_equal_p): Move to ...
2476         * tree-ssa-sccvn.h: ... here and ...
2477         * matrix-reorg.c: ... adjust includes.
2478
2479 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2480
2481         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
2482
2483 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2484
2485         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
2486         (finish_function): Remove erroneous whitespace.
2487
2488 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2489
2490         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
2491         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
2492
2493 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2494
2495         * errors.c (internal_error): Commentary typo fix.
2496         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
2497         * tree-ssa-pre.c: Ditto.
2498
2499 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2500
2501         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
2502         them is supposed to hold actual statements.
2503
2504 2009-06-06  Ian Lance Taylor  <iant@google.com>
2505
2506         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
2507         empty statements can now have attributes.
2508
2509 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
2510
2511         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
2512         * config/mips/mips.md: Ditto.
2513
2514 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
2515
2516         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
2517         _RELOCATABLE.
2518         (__eabi_uconvert): Likewise.
2519
2520 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
2521
2522         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
2523         CFI_* definitions with IN_GCC.
2524
2525 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
2526
2527         * xcoffout.h (xcoffout_source_line): Update prototype.
2528
2529 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2530
2531         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
2532         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
2533
2534 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
2535
2536         PR middle-end/40340
2537         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
2538         inlined_function_outer_scope_p blocks for artificial inlines
2539         even at -g0/-g1.
2540         * tree.c (tree_nonartificial_location): Rewrite using
2541         block_nonartificial_location.
2542
2543 2009-06-05  Revital Eres  <eres@il.ibm.com>
2544             Leehod Baruch  <leehod@il.ibm.com>
2545
2546         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
2547         (expand_expr_real_1): Remove comment.
2548         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2549         Vectorize misaligned access when the target supports it.
2550         (vect_supportable_dr_alignment): Check for unaligned access support.
2551         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
2552         and remove asset.
2553
2554 2009-06-05  Julian Brown  <julian@codesourcery.com>
2555
2556         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
2557         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
2558
2559 2009-06-05  Richard Guenther  <rguenther@suse.de>
2560
2561         PR bootstrap/40350
2562         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
2563         as possibly unused.
2564
2565 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
2566
2567         * config/s390/s390.c (global_not_special_regno_p): New static inline.
2568         (save_gprs): Don't tell unwinder when a global register is saved.
2569         (s390_emit_epilogue): Emit needed epilogue unwind info.
2570
2571 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
2572
2573         * dwarf2out.c (deferred_asm_name): New.
2574         (add_name_and_src_coords_attributes): Defer creation of
2575         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
2576         computed yet.
2577         (move_linkage_attr): New.
2578         (dwarf2out_finish): Revisit deferrals and emit attributes at the
2579         right place.
2580
2581 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
2582
2583         * tree-nested.c (finalize_nesting_tree_1): Declare the
2584         frame_decl in the binding tree.
2585
2586 2009-06-04  Cary Coutant  <ccoutant@google.com>
2587
2588         * basic-block.h (struct basic_block_def): Add discriminator field.
2589         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
2590         callers.
2591         * debug.c (do_nothing_debug_hooks): Add additional entry.
2592         (debug_nothing_int_charstar_int): New function.
2593         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
2594         (debug_nothing_int_charstar_int): New declaration.
2595         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
2596         discriminator value in .loc directive.
2597         * final.c (last_discriminator): New variable.
2598         (discriminator): New variable.
2599         (final_start_function): Initialize above variables, pass current
2600         discriminator to debug hook.
2601         (notice_source_line): Check for discriminator change.
2602         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
2603         * sdbout.c (sdbout_source_line): New parameter.
2604         * tree-cfg.c (struct locus_discrim_map): New structure type.
2605         (discriminator_per_locus): New hash table.
2606         (build_gimple_cfg): Allocate and free discriminator hash table.
2607         (make_edges): Call assign_discriminator.
2608         (locus_map_hash): New function.
2609         (locus_map_eq): New function.
2610         (next_discriminator_for_locus): New function.
2611         (same_line_p): New function.
2612         (assign_discriminator): New function.
2613         (make_cond_expr_edges): Call assign_discriminator.
2614         (make_gimple_switch_edges): Likewise.
2615         (first_non_label_stmt): New function.
2616         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
2617         all callers.
2618         * xcoffout.c (xcoffout_source_line): Add new parameter.
2619
2620         * configure.ac (gcc_cv_as_discriminator): New configury check for
2621         gas support for discriminator.
2622         * configure: Regenerate.
2623         * config.in: Regenerate.
2624
2625 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2626
2627         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
2628         val after checking for integers.
2629
2630 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
2631
2632         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
2633         X64_REGPARM_MAX.
2634         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
2635         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
2636         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
2637         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
2638         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
2639         X64_SSE_REGPARM_MAX.
2640         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
2641         X64_SSE_REGPARM_MAX.
2642
2643 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
2644
2645         * gcc.c (report_times_to_file): New.
2646         (execute): Implement it.
2647         (process_command): Support -time=.
2648         * doc/invoke.texi: Document it.
2649
2650 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
2651
2652         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
2653         that have value exprs.
2654
2655 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
2656
2657         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
2658         declarations for constants until...
2659         (dw2_output_indirect_constant_1): ... this point.
2660
2661 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
2662
2663         PR target/10242
2664         * arm.md (arm_addsi3): Don't try to split an add with an
2665         eliminable register until after reload has completed.
2666
2667 2009-06-03  Ian Lance Taylor  <iant@google.com>
2668
2669         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
2670         * genattrtab.c (write_length_unit_log): Likewise.
2671         * genchecksum.c (dosum): Likewise.
2672         * gengtype.c (write_rtx_next): Likewise.
2673         (finish_root_table, write_roots): Likewise.
2674         * gimple.c (gimple_ops_offset_): Likewise.
2675         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
2676         * config/arc/arc.c (arc_attribute_table): Likewise.
2677         * config/arm/arm.c (arm_attribute_table): Likewise.
2678         * config/avr/avr.c (avr_attribute_table): Likewise.
2679         * config/crx/crx.c (crx_attribute_table): Likewise.
2680         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2681         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
2682         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2683         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2684         * config/sh/sh.c (sh_attribute_table): Likewise.
2685         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2686         * config/spu/spu.c (spu_attribute_table): Likewise.
2687         * config/v850/v850.c (v850_attribute_table): Likewise.
2688
2689         * config/alpha/alpha.c (vms_attribute_table): Make static.
2690         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2691         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2692         * config/mips/mips.c (mips_attribute_table): Likewise.
2693
2694         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
2695         $(SYSTEM_H).
2696         (cc1-checksum.o): Likewise.
2697
2698 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
2699
2700         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
2701
2702 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
2703
2704         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
2705         insn if it is changing sp.  Use gen_add3_insn instead of
2706         conditionally gen_addsi3 and gen_adddi3.
2707         (offset_below_red_zone_p): New static inline function.
2708         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
2709         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
2710         * config/rs6000/ppc-asm.h: Include auto-host.h.
2711         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
2712         CFI_RESTORE): Define.
2713         * config/rs6000/crtresxgpr.asm: Add unwind info.
2714         * config/rs6000/crtresxfpr.asm: Likewise.
2715         * config/rs6000/crtresgpr.asm: Likewise.
2716         * config/rs6000/crtresfpr.asm: Likewise.
2717         * config/rs6000/crtsavgpr.asm: Likewise.
2718         * config/rs6000/crtsavfpr.asm: Likewise.
2719
2720         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
2721         argument of DWARF2_FRAME_REG_OUT macros.
2722
2723 2009-06-03  Julian Brown  <julian@codesourcery.com>
2724
2725         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
2726         words or less (including TImode) in core registers.
2727
2728 2009-06-03  Richard Guenther  <rguenther@suse.de>
2729
2730         PR middle-end/40328
2731         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
2732
2733 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
2734
2735         * statistics.c (statistics_counter_event): Do not record event 
2736         in pass dump if its number == -1.
2737         (curr_statistics_hash): Add assert that we never get passes 
2738         with static number == -1.
2739
2740 2009-06-03  Richard Guenther  <rguenther@suse.de>
2741             Andrey Belevantsev  <abel@ispras.ru>
2742
2743         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
2744         non-BLKmode arrays addressable.
2745
2746 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
2747
2748         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
2749         * config/m68k/m68k.h: ... here.
2750         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
2751         m68k and fido.
2752
2753 2009-06-03  Martin Jambor  <mjambor@suse.cz>
2754
2755         PR tree-optimization/40323
2756         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
2757         assignment.
2758
2759 2009-06-03  Richard Guenther  <rguenther@suse.de>
2760
2761         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
2762         consistently.
2763
2764 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
2765
2766         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
2767         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
2768         JUMP_TABLE_DATA_P where applicable.
2769         * config/sh/sh.c: Ditto.
2770         * config/sh/sh.h: Ditto.
2771         * config/sh/sh.md: Ditto.
2772         * config/sh/symbian.c: Ditto.
2773
2774 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
2775
2776         * config/i386/driver-i386.c (describe_cache): Optimize
2777         concatenation of strings.  Use snprintf instead of sprintf.
2778         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
2779         target when not compiling with GCC.
2780
2781 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
2782
2783         * config/sh/sh.c: Revert last change.
2784         (sh_expand_epilogue): Emit a blockage insn before the frame
2785         pointer adjustment unconditionally.
2786
2787 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
2788
2789         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
2790         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
2791         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
2792         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
2793         to COLLECT_GCC_OPTIONS.
2794
2795 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
2796
2797         * collect2.c (target_system_root): New variable.
2798         (main): Handle --sysroot=.
2799         (ignore_library): Strip the sysroot from the library path.
2800
2801 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
2802
2803         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
2804         (collect2.o): Depend on collect2-aix.h.
2805         (collect2-aix.o): New rule.
2806         * collect2-aix.h: New file.
2807         * collect2-aix.c: Likewise.
2808         * collect2.c: Include collect2-aix.h.  Don't undefine
2809         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
2810         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
2811         Use TARGET_AIX_VERSION instead of _AIX51.
2812         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
2813         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
2814         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
2815         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
2816         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
2817
2818 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
2819
2820         * collect2.c (ignore_library): Avoid premature post-increment
2821         and null deference.
2822
2823 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
2824
2825         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
2826         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
2827         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
2828         CROSS_DIRECTORY_STRUCTURE too.
2829         (LINK_LIBG_SPEC): Likewise.
2830         (LIB_SPEC): Add %R to sysroot paths.
2831         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
2832         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
2833         * config/rs6000/aix51.h: As for aix43.h.
2834         * config/rs6000/aix52.h: Likewise.
2835         * config/rs6000/aix53.h: Likewise.
2836         * config/rs6000/aix61.h: Likewise.
2837         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
2838         to the beginning of sysroot paths.
2839
2840 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2841
2842         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
2843         INSN_LISTs that are out of the REG_NOTE range.
2844
2845 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2846
2847         * loop-unroll.c (struct iv_to_split): Add pointer to next.
2848         (struct var_to_expand): Likewise.
2849         (struct opt_info): Add head and tail for linked lists of the above.
2850         (analyze_insn_to_expand_var): Initialize next.
2851         (analyze_iv_to_split_insn): Likewise.
2852         (analyze_insns_in_loop): Create linked lists.
2853         (allocate_basic_variable): Simplify for use without hash table.
2854         (insert_var_expansion_initialization): Likewise, make it type-safer.
2855         (combine_var_copies_in_loop_exit): Likewise.
2856         (apply_opt_in_copies): Walk lists rather than hash tables.
2857         (release_var_copies): Simplified and inlined by hand into...
2858         (free_opt_info): ... this function.
2859
2860 2009-06-02  Richard Guenther  <rguenther@suse.de>
2861
2862         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
2863         for field decls.
2864
2865 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2866
2867         * cfgexpand.c (gimple_expand_cfg): Discard the source location
2868         only for builtins that are not overridden.
2869
2870 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2871
2872         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
2873         label string.
2874
2875 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2876
2877         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
2878
2879 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2880
2881         * combine.c (move_deaths): Compare LUIDs within the same BB only.
2882
2883 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
2884
2885         * common.opt (fdump-unnumbered-links): New.
2886         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
2887         * print-rtl.c (flag_dump_unnumbered_links): New.
2888         (print_rtx): Test it.
2889
2890 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
2891
2892         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
2893         push/pop multiple to 8-byte alignment.
2894
2895 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
2896
2897         * config/i386/i386.c (queued_cfa_restores): New static variable.
2898         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
2899         functions.
2900         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
2901         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
2902         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
2903         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
2904         note unconditionally.
2905         (ix86_emit_restore_regs_using_mov): Likewise.
2906         (ix86_emit_restore_sse_regs_using_mov): Likewise.
2907         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
2908         it through to ix86_emit_restore_reg_using_pop.
2909         (ix86_emit_leave): Add RED_OFFSET argument.  Call
2910         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
2911         instead of adding REG_CFA_OFFSET note unconditionally.
2912         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
2913         the above functions.  Call ix86_add_queued_cfa_restore_notes when
2914         needed.
2915
2916         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
2917         force output of the label even for dwarf2out_do_cfi_asm.
2918         (add_fde_cfi): If -g2 and above and cfi might change CFA,
2919         force creation of CFI label and chain DW_CFA_set_loc jumping to it
2920         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
2921         caller.
2922         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
2923         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
2924         dwarf2out_cfi_label callers.
2925         * tree.h (dwarf2out_cfi_label): Adjust prototype.
2926         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
2927         Adjust dwarf2out_cfi_label callers.
2928         * config/vax/vax.c (vax_output_function_prologue): Likewise.
2929
2930         * config/i386/i386.h (struct machine_cfa_state,
2931         struct machine_function): Guard with ifndef USED_FOR_TARGET
2932         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
2933
2934         PR other/40024
2935         * emutls.c (__emutls_get_address): Change arr->size to mean number
2936         of allocated arr->data entries instead of # of slots + 1.
2937
2938         PR middle-end/40316
2939         * recog.c (peep2_reinit_state): New function.
2940         (peephole2_init_state): Use it at the end of a basic block and also
2941         when seeing a RTX_FRAME_RELATED_P insn.
2942
2943 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
2944
2945         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
2946         fixuns_truncrfdi2): New.
2947         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
2948         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
2949         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
2950         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
2951         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
2952         *recip_approx): Remove.
2953         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
2954         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
2955         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
2956         move to div.md.
2957         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
2958         setf_exp_rf): New.
2959
2960 2009-06-01  Ian Lance Taylor  <iant@google.com>
2961
2962         * attribs.c (register_attribute): Use CONST_CAST.
2963         * collect2.c (main): Use CONST_CAST2.
2964         (scan_prog_file): Likewise.
2965         * gcc.c (process_command, main): Likewise.
2966         * toplev.c (toplev_main): Likewise.
2967
2968         * c-typeck.c (handle_warn_cast_qual): New static function,
2969         partially broken out of build_c_cast.
2970         (build_c_cast): Call handle_warn_cast_qual.
2971         * doc/invoke.texi (Warning Options): Document new effect of
2972         -Wcast-qual.
2973
2974 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
2975
2976         * diagnostic.c (diagnostic_build_prefix): Always print columns.
2977         (diagnostic_report_current_module): Print columns.
2978         * common.opt (flag_show_column): Enable by default.
2979
2980 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
2981
2982         * alias.c (find_base_term): Check for NULL term before returning.
2983
2984 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
2985
2986         Revert due to PR40320:
2987         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
2988         * calls.c (emit_library_call_value_1): Don't force_operand for move
2989         and push insns.
2990
2991 2009-06-01  Olivier Hainque  <hainque@adacore.com>
2992             Eric Botcazou  <ebotcazou@adacore.com>
2993
2994         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
2995         to be processed as a bitfield for constructor output purposes.
2996         * output.h (initializer_constant_valid_for_bitfield_p): Declare
2997         new function.
2998         * varasm.c (oc_local_state): New type, output_constructor
2999         local state to support communication with helpers.
3000         (oc_outer_state): New type, output_constructor outer state of
3001         relevance in recursive calls.
3002         (output_constructor_array_range): New output_constructor helper,
3003         extracted code for an array range element.
3004         (output_constructor_regular_field): New output_constructor helper,
3005         extracted code for an element that is not a bitfield.
3006         (output_constructor_bitfield): New output_constructor helper,
3007         extracted code for a bitfield element.  Accept an OUTER state
3008         argument for recursive processing.  Recurse on record or array
3009         CONSTRUCTOR values, possibly past noop conversions.
3010         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
3011         VALUE is a valid constant-valued expression for use in a static
3012         bit-field initializer.
3013         (output_constructor): Rework to use helpers.  Accept and honor an
3014         OUTER state argument for recursive calls.  Return total size.  Be
3015         prepared for nested constructors initializing bitfields.
3016         (output_constant): Feed OUTER in calls to output_constructor.
3017
3018 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
3019
3020         * calls.c (emit_library_call_value_1): Don't force_operand for move
3021         and push insns.
3022
3023 2009-06-01  Nick Clifton  <nickc@redhat.com>
3024
3025         * doc/invoke.texi (IA-64 Options): Fix typo.
3026
3027 2009-06-01  Ira Rosen  <irar@il.ibm.com>
3028
3029         PR tree-optimization/39129
3030         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
3031         printed message.
3032         (vect_do_peeling_for_loop_bound): Use 
3033         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
3034         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
3035         (vect_loop_versioning): Likewise.
3036         (vect_create_cond_for_alias_checks): Fix indentation.
3037         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
3038         macros.
3039         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
3040         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
3041         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
3042         "control flow in loop".
3043         (vect_estimate_min_profitable_iters): Use 
3044         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
3045         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
3046         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
3047         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
3048         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
3049         statement belongs to a group of strided accesses with the exact code 
3050         check.
3051         (vectorizable_load): Likewise.
3052         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
3053         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
3054
3055 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
3056
3057         * config/freebsd-stdint.h: New file.
3058         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
3059         Add freebsd-stdint.h to tm_file.
3060
3061 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
3062
3063         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
3064         (thumb2_extendhidi2): Likewise.
3065
3066 2009-05-31  Ian Lance Taylor  <iant@google.com>
3067
3068         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
3069
3070 2009-05-31  Ian Lance Taylor  <iant@google.com>
3071
3072         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
3073         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
3074         (ipa-reference.o): Depend upon gt-ipa-reference.h.
3075
3076 2009-05-31  Jason Merrill  <jason@redhat.com>
3077
3078         * tree-pretty-print.c (print_call_name): Take the callee, not the
3079         call itself.  Make non-static.  Use dump_function_name for functions.
3080         (dump_generic_node): Adjust.
3081         * diagnostic.h: Declare print_call_name.
3082         * gimple-pretty-print.c (dump_gimple_call): Use it.
3083
3084 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
3085
3086         * config/sh/sh.md (ashldi3_std): New define_expand.
3087         (ashldi3): Use it.
3088
3089 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
3090
3091         PR target/40313
3092         * config/sh/sh.c: Include debug.h.
3093         (sh_expand_epilogue): Emit a blockage insn before the frame
3094         pointer adjustment also when dwarf2out_do_frame returns true.
3095
3096 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
3097
3098         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
3099         (thumb2_extendqidi2): New pattern.
3100
3101 2009-05-31  Ira Rosen  <irar@il.ibm.com>
3102
3103         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
3104         mark phis for renaming.
3105         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
3106         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
3107         Call mark_sym_for_renaming.
3108         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
3109         * tree-vect-loop.c (vect_transform_loop): Remove
3110         vect_memsyms_to_rename initialization and a call to
3111         mark_set_for_renaming.
3112
3113 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
3114
3115         PR middle-end/40304
3116         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
3117         frame related even if !set_cfa && style < 0.
3118
3119 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
3120
3121         * config/i386/mingw-tls.c: New file.
3122         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
3123         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
3124         defining _WIN32 but not __CYGWIN__.
3125
3126 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3127
3128         * configure.ac: Add MPC support.
3129         
3130         * config.in, configure: Regenerate.     
3131
3132 2009-05-29  Richard Henderson  <rth@redhat.com>
3133
3134         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
3135         NOTE_INSN_BASIC_BLOCK.
3136         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
3137         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
3138         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
3139         to be deleted.
3140         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
3141         add in_use field.
3142         (add_cfi): Disable check redefining cfa away from drap.
3143         (lookup_cfa_1): Add remember argument; handle remember/restore.
3144         (lookup_cfa): Pass remember argument.
3145         (cfa_remember): New.
3146         (compute_barrier_args_size_1): Remove sibcall check.
3147         (dwarf2out_frame_debug_def_cfa): New.
3148         (dwarf2out_frame_debug_adjust_cfa): New.
3149         (dwarf2out_frame_debug_cfa_offset): New.
3150         (dwarf2out_frame_debug_cfa_register): New.
3151         (dwarf2out_frame_debug_cfa_restore): New.
3152         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
3153         (dwarf2out_begin_epilogue): New.
3154         (dwarf2out_frame_debug_restore_state): New.
3155         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
3156         DW_CFA_restore_state.
3157         (output_cfi_directive): Likewise.
3158         (convert_cfa_to_fb_loc_list): Likewise.
3159         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
3160         * dwarf2out.h: Update.
3161         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
3162         (copy_insn_1): Early out for null.
3163         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
3164         and dwarf2out_frame_debug_restore_state.
3165         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
3166         (prologue_insn_hash, epilogue_insn_hash): New.
3167         (free_after_compilation): Adjust freeing accordingly.
3168         (record_insns): Create hash table if needed; push insns into
3169         hash instead of array.
3170         (maybe_copy_epilogue_insn): New.
3171         (contains): Search hash table instead of array.
3172         (sibcall_epilogue_contains): Remove.
3173         (thread_prologue_and_epilogue_insns): Split eh_return insns
3174         and mark them as epilogues.
3175         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
3176         scanning in terms of basic blocks.
3177         * insn-notes.def (CFA_RESTORE_STATE): New.
3178         * jump.c (returnjump_p_1): Accept EH_RETURN.
3179         (eh_returnjump_p_1, eh_returnjump_p): New.
3180         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
3181         CFA_REGISTER, CFA_RESTORE): New.
3182         * rtl.def (EH_RETURN): New.
3183         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
3184
3185         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
3186         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
3187
3188         * config/i386/i386.c (gen_push): Update cfa state.
3189         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
3190         add a CFA_ADJUST_CFA note.
3191         (ix86_dwarf_handle_frame_unspec): Remove.
3192         (ix86_expand_prologue): Update cfa state.
3193         (ix86_emit_restore_reg_using_pop): New.
3194         (ix86_emit_restore_regs_using_pop): New.
3195         (ix86_emit_leave): New.
3196         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
3197         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
3198         * config/i386/i386.h (struct machine_cfa_state): New.
3199         (ix86_cfa_state): New.
3200         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
3201         (eh_return_internal): Merge from eh_return_<mode>,
3202         use eh_return rtx, split w/ epilogue.
3203
3204 2009-05-29  Ian Lance Taylor  <iant@google.com>
3205
3206         * builtins.c (validate_gimple_arglist): Don't use va_arg with
3207         enum type.
3208         * calls.c (emit_library_call_value_1): Likewise.
3209
3210         * c-typeck.c (c_build_va_arg): New function.
3211         * c-tree.h (c_build_va_arg): Declare.
3212         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
3213         instead of build_va_arg.
3214
3215 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
3216
3217         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
3218         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
3219         (ptr_difference_cost): Use affine combinations to compute it.
3220         (difference_cost): Likewise.
3221         (get_computation_cost_at): Compute more accurate cost for addresses
3222         if the ratio is a multiplier allowed in addresses.
3223         For non-addresses, consider that an additional offset or symbol is
3224         added only once.
3225
3226 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
3227
3228         * config/i386/i386.c (ix86_decompose_address): Avoid useless
3229         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
3230
3231         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
3232         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
3233         (prefix_rex): For UNIT_MMX don't imply the prefix by default
3234         if MODE_DI.
3235         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
3236         to 1 for TYPE_SSE{IADD1,CVT1}.
3237         (prefix_vex_imm8): Removed.
3238         (length_vex): Only pass 1 as second argument to
3239         ix86_attr_length_vex_default if prefix_extra is 0.
3240         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
3241         (length): For prefix vex computation use length_immediate
3242         attribute instead of prefix_vex_imm8.
3243         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
3244         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
3245         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
3246         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
3247         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
3248         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
3249         a space in between the operands.
3250         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
3251         if one operand is 0xff and the other one si, di, bp or sp.
3252         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
3253         other one si, di, bp or sp.
3254         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
3255         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
3256         type and mode attributes.
3257         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
3258         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
3259         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
3260         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
3261         prefix_data16 attribute iff MODE_DF.
3262         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
3263         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
3264         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
3265         constm128_operand in length_immediate computation.
3266         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
3267         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
3268         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
3269         length_immediate attribute to 1.
3270         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
3271         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
3272         for certain alternatives.
3273         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
3274         prefix_data16 attribute if MODE_V1DF.
3275         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
3276         length_immediate to 1.
3277         (set_got_rex64, set_rip_rex64): Remove length attribute, set
3278         length_address to 4, set mode attribute to MODE_DI.
3279         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
3280         (fxam<mode>2_i387): Set length attribute to 4.
3281         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
3282         *prefetch_3dnow_rex): Override length_address attribute.
3283         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
3284         attributes.
3285         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
3286         (constm128_operand): Removed.
3287         * config/i386/i386.c (memory_address_length): For
3288         disp && !index && !base in 64-bit mode account for SIB byte if
3289         print_operand_address can't optimize disp32 into disp32(%rip)
3290         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
3291         for fs: or gs: segment.
3292         (ix86_attr_length_immediate_default): When checking if shortform
3293         is possible, truncate immediate to the length of the non-shortened
3294         immediate.
3295         (ix86_attr_length_address_default): Ignore MEM_P operands
3296         with X constraint.
3297         (ix86_attr_length_vex_default): Only check for DImode on
3298         GENERAL_REG_P operands.
3299         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
3300         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
3301         (sse_cvttps2pi): Clear prefix_rep attribute.
3302         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
3303         attribute.
3304         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
3305         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
3306         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
3307         iff operand 2 is const_int_operand.
3308         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
3309         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
3310         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
3311         instead of vex.
3312         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
3313         prefix_data16.
3314         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
3315         prefix_data16 attribute for movlpd and movhpd instructions.
3316         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
3317         length_immediate for shufpd instruction.
3318         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
3319         (avx_cmpp<avxmodesuffixf2c><mode>3,
3320         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
3321         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
3322         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
3323         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
3324         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
3325         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
3326         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
3327         prefix_data16 attribute for the first alternative to 1.
3328         (*avx_loadlps): Override length_immediate for the first alternative.
3329         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
3330         attributes for second alternative.
3331         (*vec_concatv2sf_sse4_1): Override length_immediate and
3332         prefix_data16 attributes for second alternative.
3333         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
3334         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
3335         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
3336         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
3337         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
3338         prefix_data16 and length_immediate to 1.
3339         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
3340         to 1.
3341         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
3342         prefix_extra attribute for variants that don't have 0f prefix alone.
3343         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
3344         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
3345         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
3346         *sse4_1_pextrd): Set length_immediate to 1.
3347         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
3348         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
3349         to 1.
3350         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
3351         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
3352         length_immediate to 1 for second alternative.
3353         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
3354         prefix_extra and length_immediate attributes for the first
3355         alternative.
3356         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
3357         first alternative.
3358         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
3359         to 1 for the first and third alternative.
3360         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
3361         alternative.
3362         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
3363         attribute.
3364         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
3365         attribute to 0.
3366         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
3367         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
3368         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
3369         *avx_psign<mode>3): Set prefix_extra attribute to 1.
3370         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
3371         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
3372         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
3373         ssse3_psign<mode>3): Override prefix_rex attribute.
3374         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
3375         (ssse3_palignrti): Override length_immediate to 1.
3376         (ssse3_palignrdi): Override length_immediate to 1, override
3377         prefix_rex attribute.
3378         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
3379         (sse4a_extrqi): Override length_immediate to 2.
3380         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
3381         (sse4a_insertq): Override prefix_data16 to 0.
3382         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
3383         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
3384         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
3385         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
3386         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
3387         and length_immediate to 1.
3388         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
3389         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
3390         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
3391         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
3392         and length_immediate to 1.
3393         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
3394         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
3395         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
3396         avx_ptest256): Override prefix_extra to 1.
3397         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
3398         Override prefix_data16 and length_immediate to 1.
3399         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
3400         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
3401         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
3402         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
3403         prefix_data16 to 0 and prefix_extra to 2.
3404         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
3405         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
3406         attribute.
3407         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
3408         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
3409         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
3410         and prefix_extra to 2.
3411         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
3412         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
3413         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
3414         avx_vpermilvar<mode>3,
3415         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
3416         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
3417         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
3418         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
3419         Override prefix_extra to 1.
3420         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
3421         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
3422         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
3423         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
3424         prefix_extra and length_immediate to 1.
3425         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
3426         modrm to 0.
3427         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
3428         to 1 for the first alternative.
3429         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
3430         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
3431         cases.
3432         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
3433         *movv2sf_internal_avx, *movv2sf_internal): Override
3434         prefix_rep attribute for certain alternatives.
3435         (*mov<mode>_internal): Override prefix_rep or prefix_data16
3436         attributes for certain alternatives.
3437         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
3438         attributes for certain alternatives.
3439         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
3440         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
3441         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
3442         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
3443         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
3444         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
3445         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
3446         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
3447         length_immediate to 1 if operand 2 is const_int_operand.
3448         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
3449         *vec_extractv2si_1): Set length_immediate attribute to 1.
3450         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
3451         using old 3DNOW insn rather than SSE/3DNOW_A.
3452         (mmx_emms, mmx_femms): Clear modrm attribute.
3453
3454 2009-05-29  Martin Jambor  <mjambor@suse.cz>
3455
3456         * tree-sra.c:  New implementation of SRA.
3457
3458         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
3459         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
3460         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
3461         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
3462         (SRA_MAX_STRUCTURE_COUNT): Removed.
3463         (SRA_FIELD_STRUCTURE_RATIO): Removed.
3464         * doc/invoke.texi (sra-max-structure-size): Removed.
3465         (sra-field-structure-ratio): Removed.
3466
3467 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
3468
3469         PR middle-end/40291
3470         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
3471         before expansion.
3472
3473 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
3474
3475         PR rtl-optimization/40101
3476         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
3477         seqno.  Adjust comment.
3478         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
3479         inserting bookkeeping before a jump, the jump is not scheduled.
3480         When no positive seqno found, provide a value.  Add comment.
3481
3482 2009-05-29  Richard Guenther  <rguenther@suse.de>
3483
3484         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
3485         short-cutting on the first component.
3486
3487 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
3488
3489         PR middle-end/39958
3490         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
3491         for trees other than decls/types.
3492
3493 2009-05-29  Richard Guenther  <rguenther@suse.de>
3494
3495         * tree-ssa-operands.c (get_expr_operands): Do not handle
3496         INDIRECT_REFs in the handled-component case.  Remove
3497         unused get_ref_base_and_extent case.
3498         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
3499         tree_low_cst and host_integerp where possible.
3500         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
3501         codes for equivalence.
3502         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
3503
3504 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
3505
3506         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
3507         to tmake_file for i[34567]86-*-cygwin*. 
3508
3509 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
3510
3511         PR target/40017
3512         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
3513         (altivec_categorize_keyword, init_vector_keywords,
3514         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
3515         similar to bool.
3516
3517 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
3518
3519         * tree.c (handle_dll_attribute): Check if node is
3520         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
3521
3522 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
3523
3524         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
3525         component.
3526         (thumb2_zero_extendqidi2): Likewise.
3527
3528 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3529
3530         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
3531         instead of gen_movrt.
3532         * config/sh/sh.md (movrt): Remove.
3533
3534 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
3535
3536         * doc/invoke.texi (IA-64 Options):
3537         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
3538         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
3539         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
3540         -msched-prefer-non-control-spec-insns,
3541         -msched-stop-bits-after-every-cycle,
3542         -msched-count-spec-in-critical-path,
3543         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
3544         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
3545         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
3546         and -msched-spec-verbose.
3547
3548 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
3549
3550         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
3551         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
3552         error if used.
3553         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
3554
3555 2009-05-28  Richard Guenther  <rguenther@suse.de>
3556
3557         * tree-ssa-alias.c (ao_ref_init): New function.
3558         (ao_ref_base): Likewise.
3559         (ao_ref_base_alias_set): Likewise.
3560         (ao_ref_alias_set): Likewise.
3561         (refs_may_alias_p_1): Change signature.
3562         (refs_may_alias_p): Adjust.
3563         (refs_anti_dependent_p): Likewise.
3564         (refs_output_dependent_p): Likewise.
3565         (call_may_clobber_ref_p_1): Change signature.
3566         (call_may_clobber_ref_p): Adjust.
3567         (stmt_may_clobber_ref_p_1): New function split out from ...
3568         (stmt_may_clobber_ref_p): ... here.
3569         (maybe_skip_until): Adjust signature.
3570         (get_continuation_for_phi): Likewise.
3571         (walk_non_aliased_vuses): Likewise.
3572         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
3573         (ao_ref_init): Declare.
3574         (ao_ref_base): Likewise.
3575         (ao_ref_alias_set): Likewise.
3576         (stmt_may_clobber_ref_p_1): Likewise.
3577         (walk_non_aliased_vuses): Adjust.
3578         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
3579         (get_ref_from_reference_ops): remove.
3580         (vn_reference_lookup_2): Adjust signature.
3581         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
3582         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
3583         (vn_reference_lookup): Adjust.
3584         (vn_reference_insert): Likewise.
3585         (vn_reference_insert_pieces): Adjust signature.
3586         (visit_reference_op_call): Adjust.
3587         * tree-ssa-pre.c (get_expr_type): Simplify.
3588         (phi_translate_1): Adjust.
3589         (compute_avail): Likewise.
3590         (translate_vuse_through_block): Do not re-build trees.
3591         (value_dies_in_block_x): Likewise.
3592         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
3593         fields.
3594         (vn_reference_lookup_pieces): Adjust declaration.
3595         (vn_reference_insert_pieces): Likewise.
3596
3597 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
3598
3599         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
3600         with checking disabled.
3601
3602 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
3603
3604         PR target/37216
3605
3606         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
3607         macro definition for support of three-operand format aligned
3608         .comm directive in assembler on cygwin/pe/mingw target OS.
3609         * configure:  Regenerate.
3610         * config.h:  Regenerate.
3611
3612         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
3613         aligned form of .comm directive if -mpe-aligned-commons is in effect.
3614         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
3615
3616         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
3617         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
3618
3619 2009-05-28  Ira Rosen  <irar@il.ibm.com>
3620
3621         PR tree-optimization/40254
3622         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
3623         in analysis of basic blocks.
3624
3625 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
3626
3627         PR middle-end/33699
3628         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
3629         * target-def.h (TARGET_CONST_ANCHOR): New macro.
3630         (TARGET_INITIALIZER): Use it.
3631         * cse.c (CHEAPER): Move it up to the other macros.
3632         (insert): Rename this ...
3633         (insert_with_costs): ... to this.  Add cost parameters.  Update
3634         function comment.
3635         (insert): New function.  Call insert_with_costs.
3636         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
3637         find_reg_offset_for_const, try_const_anchors): New functions.
3638         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
3639         when using a const-anchor.  Call insert_const_anchors.
3640         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
3641         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
3642
3643 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
3644
3645         * tree-inline.c (remap_decls): Enable nonlocalized variables
3646         when not optimizing.
3647
3648 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
3649
3650         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
3651         Simplify other tests involving optimize.
3652
3653 2009-05-27  Tom Tromey  <tromey@redhat.com>
3654
3655         * unwind-dw2.c (_Unwind_DebugHook): New function.
3656         (uw_install_context): Call _Unwind_DebugHook.
3657
3658 2009-05-27  Tom Tromey  <tromey@redhat.com>
3659
3660         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
3661
3662 2009-05-27  Ian Lance Taylor  <iant@google.com>
3663
3664         * Makefile.in (LINKER, LINKER_FLAGS): Define.
3665         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
3666         (ALL_LINKERFLAGS): Define.
3667         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
3668         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
3669         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
3670         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
3671         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
3672         $(LINKER_FOR_BUILD).
3673         (build/gcov-iov$(build_exeext)): Likewise.
3674
3675 2009-05-27  Julian Brown  <julian@codesourcery.com>
3676
3677         * gcse.c (target.h): Include.
3678         (can_assign_to_reg_without_clobbers_p): Check that the target allows
3679         copy of argument to a pseudo register.
3680
3681 2009-05-27  Diego Novillo  <dnovillo@google.com>
3682
3683         * tree-ssa-live.c (dump_scope_block): Document arguments.
3684         (dump_scope_blocks): Document.
3685         (debug_scope_blocks): New.
3686         * tree-flow.h (debug_scope_blocks): Declare.
3687
3688 2009-05-21  Denis Chertykov  <denisc@overta.ru>
3689
3690         * doc/contrib.texi (Contributors): Add myself to the list.
3691
3692 2009-05-27  Olivier Hainque  <hainque@adacore.com>
3693
3694         * expr.c (target_align): New function.  Alignment the TARGET of an
3695         assignment may be assume to have.
3696         (highest_pow2_factor_for_target): Use it instead of relying on
3697         immediate tree attributes of TARGET, not necessarily honored when
3698         intermediate bitfields are involved.
3699         
3700 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
3701
3702         PR target/40266
3703         * config/i386/driver-i386.c (host_detect_local_cpu): Support
3704         AVX, SSE4, AES, PCLMUL and POPCNT.
3705
3706 2009-05-27  Diego Novillo  <dnovillo@google.com>
3707
3708         * tree-pretty-print.c (dump_location): New.
3709         (dump_generic_node): Call it.
3710         Factor code to handle BLOCK nodes ...
3711         (dump_block_node): ... here.
3712
3713 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
3714
3715         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
3716         with it.
3717         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
3718         included.
3719         * gcc-plugin.h: Include config.h and system.h.
3720         (IN_GCC): Define if not defined.
3721
3722 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
3723
3724         PR middle-end/40249
3725         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
3726         with -fno-inline.
3727
3728 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
3729
3730         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
3731         applicable.
3732         * config/m32r/m32r.h: Ditto.
3733         * config/m32r/m32r.md: Ditto.
3734         * config/m32r/predicates.md: Ditto.
3735
3736 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
3737
3738         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
3739
3740 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
3741
3742         * doc/plugins.texi
3743         (Loading plugins): typo.
3744         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
3745         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
3746         (Interacting with the GCC Garbage Collector): Added new section.
3747         (Giving information about a plugin): Added new section for
3748         PLUGIN_INFO.
3749         * ggc.h (ggc_register_root_tab): Added declaration.
3750         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
3751         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
3752         (register_callback): Improved comment in declaration.
3753         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
3754         (extra_root_vec) Added static variable for dynamic roots registration.
3755         (ggc_register_root_tab) Added new routine.
3756         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
3757         PLUGIN_GGC_MARKING event.
3758         * ggc-zone.c: Include plugin.h.
3759         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
3760         * ggc-page.c: Include plugin.h.
3761         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
3762         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
3763         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
3764         (register_callback): check lack of callbacks for
3765         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
3766         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
3767         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
3768         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
3769         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
3770         dependency on plugin.h.
3771         (plugin.o): Added dependency on ggc.h...
3772
3773 2009-05-26  Richard Guenther  <rguenther@suse.de>
3774
3775         PR middle-end/40248
3776         Revert
3777         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
3778         with mismatched comparison modes.
3779
3780         * expr.c (expand_expr_real_1): Expand the operand of a
3781         VIEW_CONVERT_EXPR in its natural mode.
3782
3783 2009-05-26  Ian Lance Taylor  <iant@google.com>
3784
3785         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
3786         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
3787         (ALL_COMPILERFLAGS): Define.
3788         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
3789         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
3790         (collect2$(exeext), collect2.o): Likewise.
3791         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
3792         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
3793         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
3794         (libbackend.o, intl.o, cppdefault.o): Likewise.
3795         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
3796         (build/%.o): Use $(COMPILER_FOR_BUILD).
3797         (build/gen%$(build_exeext)): Likewise.
3798         (build/gcov-iov$(build_exeext)): LIkewise.
3799         * config/t-darwin (darwin.o): Use $(COMPILER).
3800         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
3801         * config/t-sol2 (sol2-c.o): Likewise.
3802         (sol2.o): Likewise.
3803         * config/t-vxworks (vxworks.o): Likewise.
3804         * config/x-darwin (host-darwin.o): Likewise.
3805         * config/x-hpux (host-hpux.o): Likewise.
3806         * config/x-linux (host-linux.o): Likewise.
3807         * config/x-solaris (host-solaris.o): Likewise.
3808         * config/alpha/x-alpha (driver-alpha.o): Likewise.
3809         * config/arm/t-arm (arm-c.o): Likewise.
3810         * config/arm/t-pe (pe.o): Likewise.
3811         * config/arm/t-wince-pe (pe.o): Likewise.
3812         * config/i386/t-cygming (winnt.o): Likewise.
3813         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
3814         * config/i386/t-cygwin (cygwin1.o): Likewise.
3815         (cygwin2.o): Likewise.
3816         * config/i386/t-i386 (i386-c.o): Likewise.
3817         * config/i386/t-interix (winnt.o): Likewise.
3818         * config/i386/t-netware (netware.o): Likewise.
3819         * config/i386/t-nwld (nwld.o): Likewise.
3820         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
3821         * config/i386/x-i386 (driver-i386.o): Likewise.
3822         * config/i386/x-cygwin (host-cygwin.o): Likewise.
3823         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
3824         * config/ia64/t-ia64 (ia64-c.o): Likewise.
3825         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
3826         * config/mips/x-native (driver-native.o): Likewise.
3827         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
3828         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
3829         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
3830         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
3831         * config/score/t-score-elf (score7.o): Likewise.
3832         (score3.o): Likewise.
3833         * config/sh/t-sh (sh-c.o): Likewise.
3834         * config/sh/t-symbian (sh-c.o): Likewise.
3835         (symbian.o): Likewise.
3836         * config/spu/t-spu-elf (spu-c.o): Likewise.
3837         * config/v850/t-v850 (v850-c.o): Likewise.
3838         * config/v850/t-v850e (v850-c.o): Likewise.
3839
3840 2009-05-26  Richard Guenther  <rguenther@suse.de>
3841
3842         PR tree-optimization/40122
3843         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
3844         VECTOR_CSTs if possible.
3845         (fold_gimple_assign): Likewise.
3846
3847 2009-05-26  Richard Guenther  <rguenther@suse.de>
3848
3849         PR middle-end/40252
3850         * fold-const.c (fold_binary): Use the correct types for building
3851         rotates.
3852
3853 2009-05-26  Richard Guenther  <rguenther@suse.de>
3854
3855         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
3856         redundant calls to merge_alias_info.
3857         (bump_vector_ptr): Likewise.
3858         * tree-ssa-copy.c (merge_alias_info): Remove.
3859         (replace_exp_1): Remove call to merge_alias_info.
3860         (propagate_tree_value): Likewise.
3861         (fini_copy_prop): Propagate points-to info.
3862         * tree-flow.h (merge_alias_info): Remove.
3863
3864 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
3865
3866         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
3867
3868 2009-05-25  Jan Hubicka  <jh@suse.cz>
3869
3870         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
3871         * cgraph.h (struct inline_summary): New filed self_wize,
3872         size_inlining_benefit, self_time and time_inlining_benefit.
3873         (struct cgraph_global_info): Replace insns by time ans size fields.
3874         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
3875         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
3876         (ipcp_update_callgraph): Do not touch function bodies.
3877         * ipa-inline.c: Include except.h
3878         (MAX_TIME): New constant.
3879         (overall_insns): Remove.
3880         (leaf_node_p): New.
3881         (overall_size, max_benefit): New static variables.
3882         (cgraph_estimate_time_after_inlining): New function.
3883         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
3884         (cgraph_clone_inlined_nodes): Update size.
3885         (cgraph_mark_inline_edge): Update size.
3886         (cgraph_estimate_growth): Use size info.
3887         (cgraph_check_inline_limits): Check size.
3888         (cgraph_default_inline_p): Likewise.
3889         (cgraph_edge_badness): Compute badness based on benefit and size cost.
3890         (cgraph_decide_recursive_inlining): Check size.
3891         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
3892         and times.
3893         (cgraph_decide_inlining): Likewise.
3894         (cgraph_decide_inlining_incrementally): Likewise; honor
3895         PARAM_EARLY_INLINING_INSNS.
3896         (likely_eliminated_by_inlining_p): New predicate.
3897         (estimate_function_body_sizes): New function.
3898         (compute_inline_parameters): Use it.
3899         * except.c (must_not_throw_labels): New function.
3900         * except.h (must_not_throw_labels): Declare.
3901         * tree-inline.c (init_inline_once): Kill inlining_weigths
3902         * tree-ssa-structalias.c: Avoid uninitialized warning.
3903         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
3904         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
3905         (PARAM_INLINE_CALL_COST): Remove.
3906         (PARAM_EARLY_INLINING_INSNS): New.
3907
3908 2009-05-25  Richard Guenther  <rguenther@suse.de>
3909
3910         PR tree-optimization/36327
3911         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
3912         callback for reference translation or lookup at the point of may-defs.
3913         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
3914         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
3915         for union COMPONENT_REFs.
3916         (vn_reference_lookup_3): New callback.  Lookup from memset
3917         and CONSTRUCTOR assignment, translate through struct copies.
3918         (vn_reference_lookup_pieces): Make sure to not free the
3919         passed operands array.  Adjust walk_non_aliased_vuses call.
3920         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
3921         make sure we do not leak memory.
3922
3923 2009-05-25  Richard Guenther  <rguenther@suse.de>
3924
3925         * tree-ssa-alias.h (dump_points_to_solution): Declare.
3926         * tree-inline.c (expand_call_inline): Reset the escaped and
3927         callused solutions.
3928         * tree-ssa-structalias.c (pass_build_ealias): New.
3929         * tree-pass.h (pass_build_ealias): Declare.
3930         * passes.c (init_optimization_passes): Add PTA during 
3931         early optimizations.
3932         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
3933         and CALLUSED solutions.
3934         (dump_points_to_solution): New function, split out from ...
3935         (dump_points_to_info_for): ... here.
3936         * tree-parloops.c (parallelize_loops): Reset the escaped and
3937         callused solutions.
3938
3939 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3940
3941         PR bootstrap/40027
3942         * config/i386/i386.c (USE_HIDDEN_LINKONCE):&nb