OSDN Git Service

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